Aquí hi ha 8 versions de MiniZinc IDE, des de 4 de maig del 2025 fins a l’actual, 2.10.1. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
8 versions en 1 any · unes 6 per any
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 2.10.1Darrera versió | 31 d’agost del 2026 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióChanges:
- Add an experimental parser using the tree-sitter grammar shared with shackle, enabled by setting the MZN_TREE_SITTER_PARSER environment variable. Syntax that is not yet supported, such as class declarations and lambdas, is rejected by name rather than as a generic syntax error. Data files are read with a separate, stricter grammar that accepts data, not all MiniZinc expressions. A warning is issued for invalid data, but will not be accepted in the future.
- Harden how external FlatZinc solvers are launched. On POSIX, the solver is now started with posix_spawn in its own process group, using close-on-exec pipes and full error checking. On Windows, the solver inherits only the three standard I/O handles (instead of every inheritable handle) and is placed in a kill-on-close job object, so it is reliably terminated together with MiniZinc. Several descriptor and handle leaks were fixed in the process.
- Extend the Xpress solver interface with support for lazy constraints, lexicographic multiple objectives (via the goal_hierarchy annotation), and user cuts, and enable quadratic and bilinear constraints.
- Make built-in Gecode solver interface handle restart annotations and statistics output.
- Greatly reduce the memory used by two-pass compilation (--two-pass, -O2 and above). The paths that identify variables between passes were stored as one string per variable, each spelling out the file name of every frame on the flattening call stack, and held several times over. They are now an interned tree of shared frames, and the text is only built when --keep-paths or --output-paths asks for it. Where an expression has picked up more than one path, the deepest one is now kept. Previously the textually longest was kept, which could prefer a shallower path that happened to run through longer file or function names (issue 1029).
Bug fixes:
- Fix a crash when projecting a field that is itself a tuple or record out of an array of tuples or records (as in x.1 and x.1.1 for any: x = [((1, 2), 3)]). The projection gave the resulting array type the type id of the field instead of an array type id, which was then misinterpreted when the element type was looked up again.
- Fix a crash when indexing or slicing the result of a projection (as in x.1[1] and x.2[1..2] for any: x = [((1, 2), 3)]). Array access was the only context that did not coerce its object, so the projection was never rewritten into a comprehension and reached evaluation as a field access on an array. This affected fields of any type, not just structs.
- Fix projecting an array-valued field out of an array of tuples or records (as in x.1 for any: x = [([1, 2], 3)]). The result is an array of arrays, but the projection did not build the tuple wrapper that represents one, dropping the field’s own dimensions and producing an array of the element type instead. The model was then accepted with a wrong type and failed in evaluation with not an integer expression, or, for a var field, handed malformed FlatZinc to the solver.
- Fix possible process hanging after receiving IDE interrupts on Windows.
- Fix incorrect return type of select_from_index_X and concat_index_X functions.
- Fix incorrect index restriction for concat_index_6 function.
- Fix output reverse mapping for tuples/record function parameters which shadow top-level declarations of the same name.
- Fix element type of concatenated multi-dimensional par arrays
- Fix a crash in the Gecode presolver (-O3 and higher) when the flattened model contains a set_in constraint on an integer variable. The argument was tested for being a variable rather than for being a Boolean variable, so the integer variable was looked up in the space’s Boolean variable array (issue 1027).
- Fix in on records/tuples whose members are all fixed (issue 1027).
- Fix possible crashes while handling stack overflows on Windows which previously would have prevented the stack trace from being printed.
- Fix clearing of internal annotations from array dec |
| 2.10.0 | 23 de juliol del 2026 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióChanges:
- Add reified regular constraint decompositions. Rewrite to direct decomposition if non-reified regular is also a decomposition, or to an augmented automaton if a native regular constraint is available.
- Add an experimental assumption interface. The new assume predicate (in experimental/assume.mzn) records a set of Boolean assumptions and lowers them to a solver-overridable fzn_assume. Solvers that support solving under assumptions can report an unsatisfiable core, which is translated back into the original MiniZinc expressions and printed as a %%%mzn-core comment (or a core message in the --json-stream output). Solvers without native support post the assumptions as hard constraints and issue a warning.
- The SCIP interface is now only compatible with SCIP 10 and later.
- Some performance improvements through better inlining and reducing allocation in hot paths of the compiler.
- Compile root forall constraints with variable generators or where clauses in root context instead of reified context.
- Improve compilation of comprehensions with complex variable generators by moving the generator expression into a generator alias.
- Add an experimental black-box propagator interface. A bodyless predicate or function annotated with ::minizinc_value_propagator or ::minizinc_bounds_propagator (in experimental/blackbox.mzn) together with a source annotation (::blackbox_exec for an external executable or ::blackbox_dll for a dynamically loaded library) has its body generated by the compiler as a call to a solver-overridable blackbox / blackbox_bounds constraint. Supporting solvers invoke the external code during search to propagate values or bounds; solvers without support abort with a clear message.
- Add support for interactive FlatZinc solvers. These can read commands from standard input while running, and output both solutions and messages.
- Add support for warm starts to HiGHS and SCIP interfaces.
- It is now a type error to declare two overloads of a function or predicate that a call supplying all of its arguments by name could not tell apart, i.e. two overloads that give the same name and type to every parameter that has to be supplied. Previously such a call silently resolved to whichever overload was declared first. Parameter order is irrelevant here, and parameters with a default value are exempt, since a call need not supply them.
- The parameter names of the global constraints in the standard library have been revised so that they read well as named arguments (now that named arguments make them part of the public interface). As part of this, all_different gains an optional except set parameter (defaulting to the empty set), unifying it with all_different_except and all_different_except_0, which are now deprecated.
Language changes:
- Add support for named arguments. Function calls can now refer to arguments by name, in addition to the usual positional arguments. The parameter names of the global constraints in the standard library have been revised so that they read well as named arguments (now that named arguments make them part of the public interface). It is now a type error to declare two overloads of a function or predicate that a call supplying all of its arguments by name could not tell apart, i.e. two overloads that give the same name and type to every parameter that has to be supplied. Named arguments are available for user-defined and library operations. The low-level operations a solver supports natively (those declared without a body) remain positional-only for now, until solver libraries have converged on a common set of parameter names; calling one by name is an error. The new --warn-non-authoritative-names option helps solver implementers audit their libraries against the standard-library names ahead of that change.
- Add support for default values for function and parameter arguments.
- Add support for set cardinality declarations using the syntax set(e) of T: s;. When e has type int or var int, thi |
| 2.9.7 | 30 d’abril del 2026 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióBug fixes:
- Fix invalid FlatZinc output caused by inlining non-literal variable right-hand sides that were incorrectly marked as par (issue 1015).
- Fix generation of par versions of functions referencing top-level model variables for use in the output model (issue 1016).
- Fix crash during type checking of enum constructors (issue 1017).
- Fix incorrect typing of record literals containing both decision variables and parameter values, affecting the automatic generation of table constraints. (issue 1014).
- Fix output aliasing during multipass compilation when multiple output variables map to the same FlatZinc variable, which could produce invalid .ozn output under optimisation (issue 1018). |
| 2.9.6 | 24 d’abril del 2026 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióChanges:
- Xpress solver migration from BCL to C API with support for Xpress 9.8 parameters. Add support for indicator constraints, warm start, and convex quadratic inequalities.
- The compiler now removes all non-array right-hand sides from variable declarations in FlatZinc. This minimizes the effort required when parsing .fzn or FlatZinc JSON files.
- Add support for SCIP 10, and remove support for SCIP 7 and earlier (issue 999).
- Add versions of count_* constraints for booleans, floats and sets of integers to allow solvers to support them natively (issue 1005).
- Add the --cleanup-time-limit option for configuring the grace period for solver cleanup before forced termination (issue 994).
Bug fixes:
- Fix a bug where expressions generated by regular(var int, string) might be incorrectly unified when paths are enabled.
- Fix type checking of functions with enum type identifiers (like $$E) when called with bool arguments (issue 991).
- Fix a potential crash during type specialisation of calls where a matching specialisation already existed.
- Fix missed type mismatches of enum types in record and tuple types during type specialisation. (issue 998)
- Fix syntax for predicate-item in the FlatZinc grammar specification.
- Add missing type checking that ensure concatenation of tuples and records is only allowed for basic tuple and record types.
- Fix a crash when using --input-from-stdin together with optimisation passes such as -O2, caused by in-memory model fragments being treated as file-backed includes during library rewriting.
- Fix the definitions of maximum_arg and minimum_arg to allow them to be used in reified contexts when only the non-reified version is natively supported by the solver (issue 997).
- Fix array literal compression bug causing incorrect implicit enum coercion warnings (issue 1008).
- Fix bug in output processing which caused shadowed nested identifiers to be mapped to top-level declarations.
- Add filtering of mzn_path annotations for the arguments of constraints in the FlatZinc output (issue 1011).
- Fix internal error when equating tuples of optional values to absent using multipass compilation (issue 1012).
- Fix various documentation typos and formatting issues (issue 995 and issue 1000).
- Fix solver executable resolution to match the behaviour described in the specification (issue 979).
Changes in the IDE:
- Fix highlighting of the list keyword (issue 227). |
| 2.9.5 | 23 de gener del 2026 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióChanges:
- Automatically detect Gurobi 13.0 and potential future versions.
- Enable projection of arrays of tuples and records using field access notation (issue 970).
- Enable anonymous assignment generators in comprehensions.
- Rewrite regular to fzn_regular instead of fzn_regular_set when possible, in order to improve performance for solvers that do not support fzn_regular_set natively (issue 981).
- Add zip and unzip functions to the standard library (issue 967).
- Add enum constructors lifted to arrays (issue 965).
- Add sliding_among constraint to the standard globals library (issue 960).
- Improve support for input of enum definitions using using JSON data files.
Bug fixes:
- Fix type checking for tuple and record literals to correctly reflect whether they contain any variable types (issue 955).
- Fix bug in decomposition for the reified nvalue global (issue 964).
- Fix issue where output items were evaluated twice when using JSON streaming output mode
- Fix bug in type inference for arrays of tuples or records containing a mix of optional and non-optional arrays (issue 963).
- Fix typing of indexed comprehensions that create arrays of arrays.
- Fix output of arrays with optional elements in cases where the array definition cannot be moved to the output model.
- Fix domain bounds when hoisting if-then-else expressions.
- Fix bugs in the parser where a syntax error could lead to a crash because of incorrectly initialised memory.
- Fix a bug in type checking of arrays of arrays that could result in crashes (issue 980).
- Fix type checking of varified type aliases (issue 983).
- Fix a flattening bug that introduced integer constants into float expressions, potentially leading to crashes (issue 984).
- Fix crash when emitting solutions with empty sets for the gecode_presolver solver interface (issue 988).
- Fix a bug in the flattening of output expressions that could result in the output model being invalid (issue 975).
- Fix type checking of return types of generic functions that return tuples or records.
- Fix type checking of functions that return arrays with generic index sets and enum element types.
- Fix false-positive enum compatibility type errors when using enum2int in arguments to generic functions.
- Improve performance of function matching by avoiding to copy functions unnecessarily between models.
- Fix incorrect printing of anonymous enum values.
- Fix typing of generic functions with integer array indices when called with enum indexed arrays (issue 966). |
| 2.9.4 | 29 de setembre del 2025 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióChanges:
- Add new builtin functions for array manipulation: select_from_index_X can slice an array with a non-contiguous set of indices, and concat_index_X can concatenate two arrays along a specified index.
- Add option type versions of bin packing and cumulatives constraints.
- Remove bool_xor with two arguments from the FlatZinc builtins. It is never output into FlatZinc by the compiler and violated the rule that FlatZinc builtins are not overloaded (issue 913). Also remove some other duplicates and incorrect overloads from flatzinc_builtins.mzn.
- Add includes for header files where symbols are required, in order to avoid issues with some compilers.
- Fix AST string allocation to avoid warnings about writing into unallocated memory.
- Fix float literal parsing, making it consistent across all platforms (issue 941).
Bug fixes:
- Fix compilation of arrays of arrays when inferred type-inst is var, and pretty-printing of arrays of arrays (issue 942).
- Fix CSE for empty arrays, which could cause incorrect function overloads to be called (issue 946).
- Fix a bug in the Constants class that caused the GC to access uninitialised memory (issue 933).
- Fix a bug in the chain compression algorithm that resulted in incorrectly removing constraints that were not redundant (issue 943).
- Fix a bug in the nvalue decomposition to also make it work for empty arrays.
- Fix a bug in the parser that could sometimes cause a crash when parsing invalid syntax (issue 950).
- Fix a bug in type specialisation that could sometimes lead to a crash (issue 950).
- Fix a bug where trace_dbg would always get evaluated regardless of the presence of the --debug flag (issue 926).
- Fix a bug where the argument to --fzn-flags would not be correctly parsed if it also matched a MiniZinc flag (issue 940).
- Fix bounds computation for division and modulo operations to not abort if the bounds cannot be computed (issue 917).
- Fix two incorrect comparison functions that could trigger assertions in debug builds (and likely incorrect behaviour in optimised builds).
- Fix incorrect overloading resolution for polymorphic functions when called with empty set literals as arguments (issue 875).
- Fix handling of duplicate polymorphic function definitions with empty bodies (issue 875).
- Fix internal error when accessing out of bounds indices for arrays containing arrays (issue 954).
- Fix performance of evaluating array comprehensions, which previously could lead to quadratic behaviour in some cases. |
| 2.9.3 | 23 de maig del 2025 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióChanges:
- Add mzn_max_version_required to enable models to speficy the maximum version of MiniZinc required to run the model (issue 872).
- Replace use of ptrdiff_t with appropriate unsigned integer type.
- Clarify documentation example use of boolean extra flags in solver configuration files.
- Warnings produced in solution checkers are now output as part of the checker message when running in --json-stream mode.
Bug fixes:
- Fix the rewriting of the multidimensional search annotations to ensure correct coercion of arguments (issue 897).
- Output location of some errors where the problematic expression previously did not have a location (issue 899).
- Fix domain computation to avoid variables being moved to the output model when they are constrained (issue 911).
- Fix output processing to also respect the -o flag when flattening already detects unsatisfiability (issue 908).
- Report an error when solving a FlatZinc file that does not contain a solve item (issue 907).
- Pass command line options to the compiler phases earlier to avoid problems with e.g. the --disable-warnings flag (issue 893).
- Fix incorrect generation of par versions of functions referencing top-level tuples/records containing var fields (issue 919).
- Fix problem where using an iterator of variable tuple or record types could result in a segfault (issue 901).
- Fix a problem where an operator such as <= on an optional type would sometimes lead to an internal compiler error (issue 898).
- Print enum values in stack traces (issue 912).
- Fix a bug where incompatible overloads could be used when dispatching to more specific versions of functions (issue 905).
- Fix internal error when constraining the domain of var opt bool variables.
- Fix record merge operator when evaluated via a field access (issue 892).
- Update documentation to indicate that the float_ceil, float_floor, and float_round FlatZinc builtins need to be placed in redefinitions-2.7.1.mzn (issue 914).
- Fix handling of basic standard flags when running .fzn files (issue 920).
- Fix return type computation for generic functions called with tuple or record types (issue 902).
- Fix type computation for arrays of tuples/records containing $T members.
- Fix flattening of anonymous variables of enum type to be correctly bounded.
- Emit type errors for unsupported usage of anonymous variables in tuples and records.
- Fix incorrect flattening of in for tuples/records containing optional values (issue 900).
Changes in the IDE:
- Suppress warnings generated when running compiled solution checkers. |
| 2.9.2 | 4 de maig del 2025 | — | 64 bits EXE (Inno Setup)64 bits EXE (Inno Setup) Notes de la versióBug fixes:
- Prevent output of and emit warning for invalid statistics in JSON streaming mode.
- Fix crash in string interpolation (issue 891).
- Fix row and col functions to use enumerated types instead of int (issue 888). |