1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3147],{5508:(e,i,s)=>{"use strict";s.d(i,{A:()=>a});var n=s(37876),l=s(91668);let t=function({children:e}){return(0,n.jsx)("article",{className:"prose prose-minizinc max-w-none",children:e})};function r(e){let i={a:"a",code:"code",li:"li",ul:"ul",...(0,l.R)(),...e.components};return(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Add an experimental parser using the tree-sitter grammar shared with\n",(0,n.jsx)(i.a,{href:"https://github.com/shackle-rs/shackle",children:"shackle"}),", enabled by setting the\n",(0,n.jsx)(i.code,{children:"MZN_TREE_SITTER_PARSER"})," environment variable. Syntax that is not yet\nsupported, such as ",(0,n.jsx)(i.code,{children:"class"})," declarations and lambdas, is rejected by name\nrather than as a generic syntax error. Data files are read with a separate,\nstricter grammar that accepts data, not all MiniZinc expressions. A warning\nis issued for invalid data, but will not be accepted in the future."]}),"\n",(0,n.jsxs)(i.li,{children:["Harden how external FlatZinc solvers are launched. On POSIX, the solver\nis now started with ",(0,n.jsx)(i.code,{children:"posix_spawn"})," in its own process group, using\nclose-on-exec pipes and full error checking. On Windows, the solver inherits\nonly the three standard I/O handles (instead of every inheritable handle) and\nis placed in a kill-on-close job object, so it is reliably terminated\ntogether with MiniZinc. Several descriptor and handle leaks were fixed in the\nprocess."]}),"\n",(0,n.jsxs)(i.li,{children:["Extend the Xpress solver interface with support for lazy constraints,\nlexicographic multiple objectives (via the ",(0,n.jsx)(i.code,{children:"goal_hierarchy"})," annotation),\nand user cuts, and enable quadratic and bilinear constraints."]}),"\n",(0,n.jsx)(i.li,{children:"Make built-in Gecode solver interface handle restart annotations and statistics\noutput."}),"\n",(0,n.jsxs)(i.li,{children:["Greatly reduce the memory used by two-pass compilation (",(0,n.jsx)(i.code,{children:"--two-pass"}),",\n",(0,n.jsx)(i.code,{children:"-O2"})," and above). The paths that identify variables between passes were\nstored as one string per variable, each spelling out the file name of every\nframe on the flattening call stack, and held several times over. They are now\nan interned tree of shared frames, and the text is only built when\n",(0,n.jsx)(i.code,{children:"--keep-paths"})," or ",(0,n.jsx)(i.code,{children:"--output-paths"})," asks for it. Where an expression has\npicked up more than one path, the deepest one is now kept. Previously the\ntextually longest was kept, which could prefer a shallower path that happened\nto run through longer file or function names (",(0,n.jsx)(i.a,{href:"https://github.com/minizinc/libminizinc/issues/1029",children:"issue 1029"}),")."]}),"\n",(0,n.jsx)(i.li,{children:"Plus 10+ bugfixes!"}),"\n"]})}function a(e={}){return(0,n.jsx)(t,{...e,children:(0,n.jsx)(r,{...e})})}},11238:(e,i,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/downloads",function(){return s(34841)}])},34841:(e,i,s)=>{"use strict";s.r(i),s.d(i,{default:()=>k});var n=s(37876),l=s(77328),t=s.n(l),r=s(99638),a=s(85931),c=s(63141),o=s(21772),d=s(37472),h=s(11041),m=s(49782),x=s(73112);let u=(0,x.Cx)(m.IW.version),p=[{name:"Windows",description:`${m.aS.windows} or later.`,links:[{label:"Download for x64",url:u.windows},{label:"Download for 64-bit ARM",url:u.windowsARM}]},{name:"macOS",description:`${m.aS.macOS} or later.`,links:[{label:"Download for Apple Silicon",url:u.macOS},{label:"Download for Intel-based Macs",url:u.macOSIntel}]},{name:"Linux",description:`64-bit Linux (tested on ${m.aS.linux}).`,links:[{label:"Download AppImage",url:u.appImage},{label:"View on the Snap store",url:u.snap},{label:"Download tarball",url:u.linux}]},{name:"Command line tools",description:"The MiniZinc compiler and command line tools without the IDE.",links:[{label:"Download on GitHub",url:u.commandLineTools}]},{name:"Development builds",description:"Try upcoming bugfixes and features.",links:[{label:"MiniZincIDE packages",url:u.edgeIDE},{label:"Command line tools",url:u.edgeCommandLineTools}]},{name:"Source code",description:"Source code is available from the GitHub repositories.",links:[{label:"View on GitHub",url:"https://github.com/minizinc"}]}];function g(){return(0,n.jsx)("ul",{role:"list",className:"mx-auto grid max-w-2xl grid-cols-1 gap-6 sm:grid-cols-2 md:gap-y-10 lg:max-w-none lg:grid-cols-3",children:p.map((e,i)=>(0,n.jsx)("li",{className:"flex flex-col rounded-2xl border border-gray-200",children:(0,n.jsxs)("div",{className:"p-8",children:[(0,n.jsx)("h3",{className:"font-semibold text-gray-900",children:e.name}),(0,n.jsx)("p",{className:"mt-2 mb-2 text-sm text-gray-700",children:e.description}),e.links.map(({url:e,label:i})=>(0,n.jsx)(d.N,{color:"plain",href:e,className:"grow text-sky-600 hover:text-sky-700 hover:underline",children:(0,n.jsxs)("div",{className:"flex items-center gap-x-2 text-sm",children:[(0,n.jsx)(o.g,{icon:h.cbP,className:"text-black"}),(0,n.jsx)("span",{children:i||e.split("/").pop()})]})},e))]})},e.name))})}function j(){return(0,n.jsx)(c.m,{children:(0,n.jsxs)("section",{id:"downloads","aria-labelledby":"downloads-title",children:[(0,n.jsx)("h2",{id:"downloads-title",className:"text-3xl font-medium tracking-tight text-gray-900",children:"Downloads"}),(0,n.jsx)("hr",{className:"mt-2"}),(0,n.jsxs)("p",{className:"my-6 leading-7",children:["Official binary packages are provided for Windows, macOS and Linux.",(0,n.jsx)("br",{}),"These contain MiniZinc ",m.IW.version,", the MiniZinc IDE"," ",m.IW.version,", as well as several state of the art solvers.",(0,n.jsx)("br",{}),"For detailed installation instructions, see the"," ",(0,n.jsx)(d.N,{href:(0,x.TH)("installation.html"),children:"documentation"}),"."]}),(0,n.jsx)("div",{className:"my-4",children:(0,n.jsx)(g,{})}),(0,n.jsxs)("p",{className:"mb-6 leading-7",children:["Both the compiler tool chain and the IDE are available as free and open source software.",(0,n.jsx)("br",{}
1),"Have a look at our ",(0,n.jsx)(d.N,{href:"/license",children:"License Information"})," ","page for the details."]})]})})}var f=s(5508);function b(){return(0,n.jsx)(c.m,{children:(0,n.jsxs)("section",{id:"releases","aria-labelledby":"releases-title",className:"mb-6",children:[(0,n.jsx)("h2",{id:"releases-title",className:"text-3xl font-medium tracking-tight text-gray-900",children:"Releases"}),(0,n.jsxs)("p",{className:"my-2 leading-7",children:["The latest release of MiniZinc is version ",m.IW.version,", released"," ",m.IW.date,"."]}),(0,n.jsx)(f.A,{}),(0,n.jsxs)("p",{className:"mt-2 leading-7",children:[(0,n.jsx)(d.N,{href:(0,x.rN)(),children:"See the full changelog"}),"."]}),(0,n.jsx)("h3",{className:"mt-6 text-2xl font-medium tracking-tight text-gray-900",children:"Previous releases"}),(0,n.jsx)("ul",{className:"mx-2 mt-2 list-inside list-disc leading-relaxed",children:m.D8.filter((e,i)=>i>0).map(e=>(0,n.jsxs)("li",{children:[(0,n.jsxs)(d.N,{href:(0,x.rm)(e.version),children:["MiniZinc ",e.version]})," ","(released ",e.date,","," ",(0,n.jsx)(d.N,{href:(0,x.rN)(e.version),children:"change log"}),")"]},e.version))}),(0,n.jsxs)("p",{className:"mt-2 leading-7",children:[(0,n.jsx)(d.N,{href:"https://github.com/MiniZinc/MiniZincIDE/releases",children:"View older releases"}),"."]})]})})}function w(){return(0,n.jsx)(c.m,{children:(0,n.jsxs)("section",{id:"issues","aria-labelledby":"issues-title",className:"mb-6",children:[(0,n.jsx)("h2",{id:"issues-title",className:"text-3xl font-medium tracking-tight text-gray-900",children:"Reporting issues"}),(0,n.jsx)("p",{className:"my-2 max-w-prose leading-7",children:"We are grateful for feedback on MiniZinc, including bug reports, feature requests and ideas for improvements."}),(0,n.jsxs)("p",{className:"my-2 max-w-prose leading-7",children:["For general discussions about MiniZinc, please use the"," ",(0,n.jsx)(d.N,{href:"https://groups.google.com/forum/#!forum/minizinc",children:"discussion forum"}),"."]}),(0,n.jsx)("p",{className:"my-2 max-w-prose leading-7",children:"To report an issue, please use the following issue trackers:"}),(0,n.jsxs)("ul",{className:"mx-2 mt-2 list-inside list-disc leading-relaxed",children:[(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/minizinc/libminizinc/issues",children:"MiniZinc compiler and documentation issues"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/minizinc/MiniZincIDE/issues",children:"MiniZinc IDE issues"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/minizinc/minizinc.github.io/issues",children:"MiniZinc web site issues"})})]})]})})}let N={src:"/_next/static/media/ide_code_small.8a4fb522.png",height:442,width:400,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAICAMAAAAC2hU0AAAAGFBMVEX+/f3w7+/r6+z29fX5+PjExMPk5ObR0M+uAu54AAAACXBIWXMAAAsTAAALEwEAmpwYAAAALklEQVR4nC3IwQ3AMAzDQIlSnP03LlzkPgSos+7VOC3IqRbOX78B2M3+pNEMwHwToACRfV7pAAAAAABJRU5ErkJggg==",blurWidth:7,blurHeight:8};var v=s(54587),y=s.n(v);function A(){return(0,n.jsx)(c.m,{children:(0,n.jsx)("section",{id:"minizinc-distribution","aria-labelledby":"minizinc-distribution-title",className:"mb-6",children:(0,n.jsxs)("div",{className:"flex flex-col-reverse justify-between gap-6 lg:flex-row",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h2",{id:"minizinc-distribution-title",className:"text-3xl font-medium tracking-tight text-gray-900",children:"The MiniZinc compiler and IDE"}),(0,n.jsx)("p",{className:"my-2 max-w-prose leading-7",children:"The compiler is the heart of the MiniZinc tool chain. It translates constraint models into FlatZinc, a language that is understood by a wide range of solvers."}),(0,n.jsx)("p",{className:"my-2 max-w-prose leading-7",children:"MiniZinc comes with a simple Integrated Development Environment, the MiniZinc IDE, which makes it easy to develop and run constraint models."}),(0,n.jsx)("h3",{id:"minizinc-solvers",className:"my-3 text-2xl font-medium tracking-tight text-gray-900",children:"Solvers"}),(0,n.jsx)("p",{children:"A number of solvers are included in the official binary packages:"}),(0,n.jsxs)("ul",{className:"mx-2 my-2 list-inside list-disc leading-relaxed",children:[(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://www.gecode.dev/",children:"Gecode"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/chuffed/chuffed",children:"Chuffed"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://developers.google.com/optimization",children:"Google OR-Tools CP-SAT"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://highs.dev",children:"HiGHS"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/coin-or/Cbc",children:"COIN-OR CBC"})})]}),(0,n.jsx)("p",{className:"mt-2 leading-7",children:"MiniZinc can also interface with the following solvers if installed:"}),(0,n.jsxs)("ul",{className:"mx-2 my-2 list-inside list-disc leading-relaxed",children:[(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://www.gurobi.com",children:"Gurobi"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://www.ibm.com/products/ilog-cplex-optimization-studio",children:"IBM ILOG CPLEX"})}
1),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://www.scipopt.org",children:"SCIP"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://www.fico.com/en/products/fico-xpress-optimization",children:"FICO Xpress"})})]}),(0,n.jsx)("p",{className:"mt-2 leading-7",children:"Additionally, many other compatible solvers can be installed, including:"}),(0,n.jsxs)("ul",{className:"mx-2 my-2 list-inside list-disc leading-relaxed",children:[(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://choco-solver.org",children:"Choco 4"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/radsz/jacop",children:"JaCoP"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/ehebrard/Mistral-2.0",children:"Mistral-2.0"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"http://picat-lang.org",children:"Picat CP/SAT"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://sicstus.sics.se",children:"SICStus Prolog"})}),(0,n.jsx)("li",{children:(0,n.jsx)(d.N,{href:"https://github.com/informarte/yuck",children:"Yuck"})})]}),(0,n.jsx)("p",{className:"my-2 leading-7",children:"Note that if you build MiniZinc from source, you will have to install any desired solvers yourself."})]}),(0,n.jsx)("div",{children:(0,n.jsx)(y(),{src:N,alt:"The MiniZinc IDE"})})]})})})}function k(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t(),{children:(0,n.jsx)("title",{children:"MiniZinc - Downloads"})}),(0,n.jsx)(a.Y,{}),(0,n.jsxs)("main",{children:[(0,n.jsx)(j,{}),(0,n.jsx)(A,{}),(0,n.jsx)(w,{}),(0,n.jsx)(b,{})]}),(0,n.jsx)(r.w,{})]})}},91668:(e,i,s)=>{"use strict";s.d(i,{R:()=>t});var n=s(14232);let l=n.createContext({});function t(e){let i=n.useContext(l);return n.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}}},e=>{e.O(0,[7725,8805,6701,4040,6958,636,6593,8792],()=>e(e.s=11238)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.