Xpress Mosel is the premier algebraic modeling and programming language. Its best-in-class functionality enables operations researchers, and modeling experts to rapidly develop and deploy optimization solutions that solve complex, real-world business problems. It provides an easy-to-learn, robust way to interact with solver engines, and tightly integrates with Xpress Insight to deploy models into powerful, business user-friendly applications.
Mosel 6 is a major milestone re-enforcing the programming features of the Mosel language. It allows for a more flexible design and implementation of Mosel packages. Syntax enhancements for union types provide an incredible amount of flexibility to call functions and entities by name, keep references (or aliases) to functions, or using untyped lists of arbitrary size as subroutine arguments. Module mmreflect becomes a replacement to xreflect, also allowing to traverse arrays without knowing its index set, just its type.
Thereby, it addresses the needs of large-scale application development which we and our clients demand also for non-optimization based applications. It supports testing systems, debugging functionality, or tolerances for real number formats.
Visit the Xpress release notes to learn more.
Mosel 6 is a major milestone re-enforcing the programming features of the Mosel language. It allows for a more flexible design and implementation of Mosel packages. Syntax enhancements for union types provide an incredible amount of flexibility to call functions and entities by name, keep references (or aliases) to functions, or using untyped lists of arbitrary size as subroutine arguments. Module mmreflect becomes a replacement to xreflect, also allowing to traverse arrays without knowing its index set, just its type.
Thereby, it addresses the needs of large-scale application development which we and our clients demand also for non-optimization based applications. It supports testing systems, debugging functionality, or tolerances for real number formats.
- This release adds syntax support for handling structured types in unions, and a rich amount of new programming language features:
- Subroutine types and aliasing using the ‘reference to’ operator ‘->’
- Untyped lists, subroutines with variable number of arguments
- Array types with anonymous index sets
- It generalizes structures usable with ‘with’
- Module mmreflect has become a replacement for the deprecated xreflect package:
- It provides access routines for arrays and set structures and new versions of callfunc/callproc with subroutine references
- Iterators allow traversing arrays without any knowledge of index sets
- Connecting to other services via REST APIs has been widely adopted also for applications build in a modeling language. Efficient reading of JSON formats of known and unknown format has become key for several developers. Two main enhancements are provided with this release:
- A new routine of mmhttp for reading into specific Mosel structures, and
- A package ‘json’ for reading JSON files of unknown format into free-format union-based structures.
- Several minor usability enhancements of which a few deserve being called out:
- Tolerances and real number format: Equality comparison tolerance using 'zerotol' now applies to constants and warning messages for unsuitable values have been added
- New real number printing formats %j and %y for efficient generation of an exact and reversible textual representation of real (floating point) numbers
- Doc annotations are now supported in ‘requirements ‘
- Module mmsystem provides a new form of system call with a variable number of arguments system, e.g., (“mosel”, “exam”, “-h” )
Visit the Xpress release notes to learn more.
Updated 4 years ago
Version 3.0FICO
Community Manager
Joined July 21, 2025
FICO® Xpress Optimization Blog
Follow this blog board to get notified when there's new activity