1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724
|
MiniZinc Change Log
-------------------
For detailed bug reports consult the issue tracker at
https://github.com/MiniZinc/libminizinc/issues.
.. _v2.9.3:
`Version 2.9.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.9.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 23 May 2025)
Changes:
^^^^^^^^
- Add ``mzn_max_version_required`` to enable models to speficy the maximum
version of MiniZinc required to run the model (:bugref:`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 (:bugref:`897`).
- Output location of some errors where the problematic expression previously
did not have a location (:bugref:`899`).
- Fix domain computation to avoid variables being moved to the output model
when they are constrained (:bugref:`911`).
- Fix output processing to also respect the ``-o`` flag when flattening already
detects unsatisfiability (:bugref:`908`).
- Report an error when solving a FlatZinc file that does not contain a solve
item (:bugref:`907`).
- Pass command line options to the compiler phases earlier to avoid problems
with e.g. the ``--disable-warnings`` flag (:bugref:`893`).
- Fix incorrect generation of par versions of functions referencing top-level
tuples/records containing var fields (:bugref:`919`).
- Fix problem where using an iterator of variable tuple or record types could
result in a segfault (:bugref:`901`).
- Fix a problem where an operator such as ``<=`` on an optional type would
sometimes lead to an internal compiler error (:bugref:`898`).
- Print enum values in stack traces (:bugref:`912`).
- Fix a bug where incompatible overloads could be used when dispatching to more
specific versions of functions (:bugref:`905`).
- Fix internal error when constraining the domain of ``var opt bool``
variables.
- Fix record merge operator when evaluated via a field access (:bugref:`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`` (:bugref:`914`).
- Fix handling of basic standard flags when running ``.fzn`` files
(:bugref:`920`).
- Fix return type computation for generic functions called with tuple or record
types (:bugref:`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 (:bugref:`900`).
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Suppress warnings generated when running compiled solution checkers.
.. _v2.9.2:
`Version 2.9.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.9.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 6 March 2025)
Bug fixes:
^^^^^^^^^^
- Prevent output of and emit warning for invalid statistics in JSON streaming
mode.
- Fix crash in string interpolation (:bugref:`891`).
- Fix ``row`` and ``col`` functions to use enumerated types instead of
``int`` (:bugref:`888`).
.. _v2.9.1:
`Version 2.9.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.9.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 3 March 2025)
Changes:
^^^^^^^^
- Don't include empty stack traces in JSON stream errors or warnings
(:bugref:`880`, :idebugref:`212`).
- Wait 1 second between sending ``SIGTERM`` and ``SIGKILL`` signals to solvers
to allow more time for cleanup (:bugref:`882`).
Bug fixes:
^^^^^^^^^^
- Fix a bug where calls to ``enum2int`` weren't correctly removed in
comprehensions, leading to an internal error (:bugref:`879`).
- Fix false-positive implicit enum coercion warnings when calling ``card`` and
some inequality operators.
- Fix false-positive implicit enum coercion warnings for calls with
comprehension arguments (:bugref:`887`).
- Recursively type check type-insts of variable declarations and function
items.
- This enables enum constructors and other functions to be used on the
left hand side of declarations, and allows overloading of functions
with identifiers in type-insts to be correctly resolved.
- Fix type error in flexible job shop documentation example caused by change
of signature of ``cumulative`` to enum-safe version in 2.9.0.
- Accept enum types for the two argument ``regular`` constraint to avoid
false-positive warnings about implicit enum to int coercion.
- Disallow multiple comma-separated arguments in string interpolations,
which previously caused unexpected behaviour.
- Fix incorrect output of non-improving solutions when using HiGHS.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Use scroll buttons when the tab bar overflows to ensure the side panels can
be resized (:idebugref:`213`).
.. _v2.9.0:
`Version 2.9.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.9.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 11 February 2025)
Changes:
^^^^^^^^
- Add support for ``elseif`` in ``if then elseif endif`` expressions without an
`else` branch.
- Make ``sort`` functions return array of enum when input is array of
enum (:bugref:`853`).
- Make the ``mzn_in_root_context`` function (which is used only internally and
should not be used in user models) more flexible in where it can be called.
- Update packaged version of the HiGHS solver to version 1.8.1.
- Update Gurobi interface to be compatible with Gurobi 12.0.0.
- Address compiler warnings concerning unsafe signed/unsigned comparisons and
implicit casts between different integer types.
- **BREAKING**: The usage of ``--compile`` (or ``-c``) flag now requires the
user to explicitly specify the solver for which the MiniZinc instance is being
compiled, using ``--solver``. To select the default solver (and keep the
previous behaviour) you can use ``--solver default``.
- Add the ``--fzn-format`` flag to influence whether the generated FlatZinc from
``--compile`` or ``--fzn`` is given in the traditional FlatZinc format or the
new JSON-based format. (:bugref:`868`)
- Comments regarding the compilation invocation are now included in user-facing
FlatZinc (``.fzn``) files, created by the ``--compile`` or ``--fzn`` flags.
- Add ``par`` version of the ``among`` function.
- Add support for arrays containing arrays (which only support access using
``par`` indices).
- Add ``diversity.mzn`` library to be used with the diverse solutions toolchain
included in MiniZinc Python.
- Ensure the MiniZinc directory is added to the DLL search path when running
child processes on Windows (:idebugref:`206`).
- Add ``par`` implementations for the ``arg_val`` and ``arg_val_weak`` functions.
- Add support for calling enum constructors without arguments to return the set
of all constructed values.
- Deprecate and emit warning for implicit coercion of enums to integers. The
``enum2int`` function should be used to perform the coercion where required.
Bug fixes:
^^^^^^^^^^
- Fix boolean context when flattening tuple or record literals containing
booleans.
- Fix memory leak in overflow handler.
- Fix crash when calling ``outputJSON`` (:bugref:`856`).
- Fix incorrect typing of arrays in assignment generators (:bugref:`858`).
- Fix bug in flattening of implication with optional right hand side.
- Fix flattening of ``exists`` and ``forall`` with optional arguments.
- Fix handling of absent values when removing unused code (:bugref:`864`).
- Fix compilation of empty arrays with empty domains (:bugref:`860`).
- Fix evaluation of ``dom_array`` on par arrays (:bugref:`851`).
- Fix flattening of array slices inside tuples and records (:bugref:`859`).
- Fix defines_var annotation for cyclic and missing definitions (:bugref:`863`).
- Fix assertion failures when using arrays as argument to bin packing constraints
(:bugref:`865`).
- Fix operator precedences for ``intersect`` and unary plus/minus.
- Fix crash when type instance concatenation is performed on invalid types
(:bugref:`867`).
- Fix a segfault caused by an internal `float_times` variant not correctly being
handled during output processing (:bugref:`870`).
- Fix incorrect non-uniform if-then-else type error when one branch is an empty
array and another branch is an array of tuples or records.
- Fix type checking for `any`` in `let` expressions with tuple types.
- Fix pretty printing of variable declarations with `any` type.
- Fix bug where the JSON parser would not add absent literals for known optional
types that are missing from the JSON objects.
.. _v2.8.7:
`Version 2.8.7 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.7>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 2 October 2024)
Bug fixes:
^^^^^^^^^^
- Fix bug that caused where clauses to be removed from comprehensions.
- Fix optimisation of Boolean constraints that could sometimes trigger an
assertion failure in debug builds (:bugref:`843`).
.. _v2.8.6:
`Version 2.8.6 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.6>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 25 September 2024)
Changes:
^^^^^^^^
- Variable ``in`` operators on arrays of (nested) records and tuples containing
only enumerable (enum, int, or bool) will now be rewritten into ``table``
global constraints.
- Values that are ``par`` in the left hand side will be checked and filtered
from the resulting table constraint.
- Variable ``<``, ``<=``, ``>`` and ``>=`` operators on (nested) records and
tuples containing only enumerable (enum, int, or bool) will now be rewritten
into ``lex_less`` or ``lex_lesseq`` global constraints.
- Automatically detect SCIP 9.0.1 and potential future versions on Windows.
- The interface to the HiGHS solver now requires version 1.7.2 or later.
- Enforce strict enum type correctness for set operations (:bugref:`828`).
- Add ``par opt`` overloads of ``min`` / ``max`` and return enum values instead
of coercing to integers.
- Use half-reification only when there isn't a reification that is a more
specific match.
- Add multidimensional overloads for the ``++`` array concatenation operator.
Bug fixes:
^^^^^^^^^^
- Fix incorrect type error for array literals where the first element is ``<>``
and subsequent elements are sets (:bugref:`818`).
- Fix missing code block in visualisation feature documentation.
- Emit type error when using variable if-then-else/array access containing
tuples or records containing non-varifiable types.
- Emit type error when using a variable comprehension with a tuple/record type.
- Emit type error when using optional array access for arrays of
tuples/records.
- Emit type error for array literals with ``<>`` and var set elements.
- Fix missing cross-references for IDE preference dialog documentation figures.
- Fix crash when using nested tuples/record types inside ``var`` if-then-else
expressions.
- Fix evaluation error for comprehensions with an initial assignment generator
and a where clause which doesn't involve any of the generator identifiers.
- Fix type checking of if then else expressions with ``_`` in the else branch
(:bugref:`821`).
- Fix parsing of the most negative integer literal (:bugref:`822`).
- Fix typo in warning messages for undefined results in function calls.
- Fix bug in flattening identifier causing debug assertion to fail
(:bugref:`826`).
- Fix missing type when flattening indexed var comprehension leading to error
or incorrect value type.
- Fix crash when generating error message for mismatched index set where an
enum index set is empty.
- Fix crash due to incorrect handling of negated constraints matching entry in
CSE map (:bugref:`832`).
- Fix type error due to missing overload of ``max`` (:bugref:`848`).
- Fix handling of contexts and ``maybe_partial`` annotations when flattening
par expressions.
- Fix par evaluation of boolean operators where an operand is an array access
into an empty array literal.
- Fix crash when concatenating arrays of annotations (:bugref:`842`).
- Ensure DZN output of enum index sets of multidimensional arrays is properly
quoted.
- Fix parsing of enumerated values in JSON for integer parameters.
- Fix crash during flattening of clauses with opt bool arguments
(:bugref:`845`).
- Fix the coercions of index set for empty array literals to allow any of the
index sets to be empty (:bugref:`844`).
- Fix behaviour of overloading for the ``++`` operator (:bugref:`840`).
- Avoid outputting ``objective`` statistic when value is invalid for MIP
solvers (:bugref:`841`).
- Fix bug in unification of aliased output variables when using ``-O2`` and
above.
.. _v2.8.5:
`Version 2.8.5 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.5>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 3 June 2024)
Bug fixes:
^^^^^^^^^^
- Fix specification for constraint items and annotations in FlatZinc JSON.
- Fix flattening of negated let expressions with constraints.
- Fix crash when equating identifiers to tuples/records in if-then-else
expressions.
- Fix ``string_length`` function to return the number of Unicode code points
rather than the number of bytes (i.e., to interpret the string as UTF-8).
- Emit type error for opt tuples and records created through type aliases.
- Fix evaluation of par partial functions returning arrays.
- Fix type inference for if-then-else expressions with different tuple or
record types in the branches.
- Fix evaluation error caused by removal of fixed FlatZinc variables without
fixing them in the output model.
- Fix computed type when flattening cv comprehensions containing tuple or
record types.
- Fix unsatisfiability caused by reification in negated boolean context
(:bugref:`813`).
- Fix bug in computation of common type of incompatible record types.
- Fix crash when type checking nested arrays of tuples or records.
- Fix incorrect unification of flattened tuple/record fields with paths
enabled.
Changes:
^^^^^^^^
- Add ``string_split`` function that splits a string into an array of strings
based on a separator.
- Add ``json_section`` annotation to mark an output item as a JSON section
(:bugref:`816`).
.. _v2.8.4:
`Version 2.8.4 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.4>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 10 May 2024)
Changes:
^^^^^^^^
- Add ``-w`` and ``--disable-warnings`` flags that will suppress all warnings
emitted by the flattening process.
- Add option for solver libraries to set ``mzn_opt_annotate_computed_domains``
such that the compiler will signal domains that are enforced by separate
constraints using a ``computed_domain`` annotation.
- Always output multidimensional arrays as nested arrays when using
``showJSON`` for consistency.
- Add missing implementation for ``default`` for sets expressions.
- Add missing optional versions of unary mathematical functions/operators.
- Improve special-case handling of boolean ``<->`` and ``xor`` operators.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix bundled OpenSSL libraries on Windows.
- Allow MOOC submission window to be scrolled.
- Increase hard process termination timeout to 1s.
Bug fixes:
^^^^^^^^^^
- Fix crash when using records inside solution checker modules.
- Fix pretty printing of record literals and types with unicode field names.
- Fix creation of par versions functions containing ``var`` binary/unary
operators (:bugref:`792`).
- Fix potential crash when printing of output model involving records.
- Fix computation of supertype of tuples/records involving ``<>`` fields.
- Fix a bug where the compiler would incorrectly set variable domains as
computed when processing linear constraints.
- Fix invalid JSON produced by MIP interfaces due to infinite values for
statistics.
- Fix possible crash during type specialisation involving ``array [_] of $$T``
types.
- Fix output of structured types containing arrays of enums (:bugref:`793`).
- Fix justified formatting to work with arrays of enums.
- Fix incorrect unification of arrays of reverse mapped variables with paths
enabled.
- Fix problem where incorrect type errors would occur when merging records or
tuples types in an array declaration.
- Fix bug where unused reverse-mapped variables were removed from the output
model while still being marked as output in the FlatZinc.
- Fix decomposition of set variables with empty domains when using
``nosets.mzn``.
- Fix a problem where the reduced range syntax in combination with enums would
produce an error when the resulting range was empty.
- Fix incorrect unification of tuple/record fields in array accesses with paths
enabled (:bugref:`802`).
- Fix crash when using tuples/records in par arrays or calls containing var
expressions.
- Fix bug where variables could be removed from the FlatZinc but not the output
model when optimising ``bool2int`` (:bugref:`803`).
- Add missing coercions for comprehension where clauses and assignment
generators (:bugref:`807`).
- Fix bug in handling of domains for structured types during type
specialisation.
- Fix handling of search annotations when reading FlatZinc files.
- Fix bug during optimisation which could cause the compiler to hang due to
not updating hashes of identifiers (:bugref:`805`).
- Fix incorrect definition of ``all_different`` in the ``gecode_presolver``
library where it was not enforced that fixed values be all different
(:bugref:`798`).
- Fix crash when resolving type aliases for function parameters with ``$T``
array dimensions (:bugref:`806`).
- Fix ``default`` operator for ``par opt set`` parameters (:bugref:`809`).
- Fix output of ``par opt set`` enumerated types.
- Fix pretty printing of records when using the document printer.
- Fix internal error when binding numeric literals to declarations with
existing right-hand sides.
- Fix contexts of arguments of double-negated integer comparisons
(:bugref:`810`).
- Fix context of indices in array access expressions (:bugref:`719`).
.. _v2.8.3:
`Version 2.8.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 1 February 2024)
Bug fixes:
^^^^^^^^^^
- Fix problem where specialised flattening for some forms of binary operators
would not correctly forward the partiality of its arguments (:bugref:`766`).
- Remove internal duplicate functionality that could sometimes cause problems
when assigning variables in constraints (:bugref:`769`).
- Do not try to check right hand side of parameter variable declarations that
are ``par`` because of singular domains (:bugref:`771`).
- Fix a problem in the parser where anonymous enumerated types could not be
used in DZN files (:bugref:`776`).
- Fix identifier lookup bug in internal Chuffed interface (:bugref:`782`).
- Fix some minor inconsistencies in the FlatZinc JSON schema and generation.
- Fix crash involving ``var`` comprehensions with set types by rejecting
unsupported type (:bugref:`779`).
- Fix internal error during evaluation of ``par opt set`` expressions.
- Fix invalid FlatZinc produced when search annotations are passed non-1-based
arrays (:bugref:`768`).
- Fix bug in evaluation of annotations causing invalid FlatZinc to be produced
(:bugref:`768`, :bugref:`788`).
- Fix substitution of fixed objective variable value into solve item
(:bugref:`773`).
- Fix check for presence of ``set2iter`` redefinition (:bugref:`778`).
- Fix incorrect removal of constraint due to use of redefinition of
``bool_clause_reif`` when constraint is not reified (:bugref:`785`).
Changes:
^^^^^^^^
- Remove documentation of ``strictly_increasing`` (and decreasing) for ``bool``
types, and change definition from a solver redefined global, to a simple
library definition with user warning (:bugref:`784`).
- Add version of ``strictly_increasing`` (and decreasing) for ``float``, ``opt
float``, and ``set of int`` types.
- Automatically detect SCIP 8.1.0 and potential future versions on Windows.
- Fix crash when using type aliases with ``-O2`` (:bugref:`783`).
- Automatically detect Gurobi 11.0 and potential future versions.
- Allow array literals with all ``<>`` members (:bugref:`747`).
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Increase maximum number of threads from default Qt limit (:idebugref:`196`).
.. _v2.8.2:
`Version 2.8.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 15 December 2023)
Bug fixes:
^^^^^^^^^^
- Fix incorrect FlatZinc definition in the ``gecode_presolver`` solver library (:bugref:`755`).
- Fix type specialisation for function with an polymorphic array argument and a
non-array return type with the same type-inst identifier (related to :bugref:`671`).
- Fix crash during typechecking of overloaded functions differing only by inst
returning structured types.
- Fix incorrect type checking of polymorphic functions with type-inst IDs
inside structured types.
- Fix evaluation error when boolean variables are fixed during flattening
(:bugref:`758`).
- Fix incorrect call names output when generating ``.ozn`` files
(:bugref:`759`).
- Fix incorrect output of record access as tuple access in ``.ozn`` files
(:bugref:`759`).
- Fix definition of ``array_intersect`` so that it can be used in non-positive
contexts.
- Fix standards definitions of ``increasing`` variants to correct be ignored
when the argument array is empty (:bugref:`762`).
- Fix a problem where exceptions thrown for undefined expressions were not
caught during the aggregation of linear expressions, breaking relational
semantics (:bugref:`760`).
- Fix crash when calculating computed domain of a declaration (:bugref:`765`).
- Fix x-y line/scatter visualisations.
- Fix `show_array2d_bool` for index set containing negative or zero (:bugref:`780`).
Changes:
^^^^^^^^
- Support ``var set``s of enums for ``array_union`` and ``array_intersect``.
- Support ``var`` enums for the ``..`` range operator.
- Always perform substitution of fixed values before outputting FlatZinc for
consistency.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Make process handling more robust to failures.
.. _v2.8.1:
`Version 2.8.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 27 November 2023)
Bug fixes:
^^^^^^^^^^
- Fix incorrect message for par array out of bounds indicating that array is empty
- Fix incorrect propagation of Boolean variables potentially causing output not
accepted by Gecode and Chuffed (:bugref:`748`).
- Fix a problem where the usage of ``lb`` on a Boolean expression would return
``-infinity``. (:bugref:`749`).
- Fix omission of error location when there is no stack trace available.
- Fix type specialisation to always make par versions of functions available
for output (:bugref:`751`).
- Fix internal error when checking return value of functions involving arrays
of optional values (:bugref:`752`).
- Fix incorrect ``false`` values for ``has_output_item`` when running with
``--model-interface-only``
- Fix translation of search annotations with multi-dimensional arrays as arguments
(:bugref:`750`).
- Fix bug in output generation for some visualisation functions.
- Fix problem where tuple or record assignments would sometimes trigger
segmentation faults.
- Fix context when binding the result of flattening a concatenation operation,
resolving a possible segmentation fault (:bugref:`754`).
- Fix incorrect possible evaluation error for ``in`` operator involving an
array RHS.
Changes:
^^^^^^^^
- Add ``--solution-checker`` option to allow specifying the solution checker
(allowing use from a parameter configuration ``..mpc`` file).
- Produce tighter bounds in ``compute_mod_bounds`` for the ``mod`` operator.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix command used to run findMUS and Globalizer.
- Add ability to set the ports used for the visualisation server.
- Add option for printing the visualisation server URL for debugging purposes.
- Add more information to subprocess error messages.
.. _v2.8.0:
`Version 2.8.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.8.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 16 November 2023)
Changes in interfaces to solvers:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `OR-Tools <https://developers.google.com/optimization>`_ is now bundled with
the MiniZinc IDE on all platforms.
- HiGHS is now loaded as a dynamic plugin instead of statically linked, and
now supports outputting intermediate solutions for optimisation problems.
- Add support for producing a JSON-based version of FlatZinc as the output
format of the MiniZinc compiler.
- Replace ``supportsMzn``, ``supportsFzn`` and ``supportsNL`` solver
configuration flags with new option ``inputType``. The old flags are
still supported for backwards compatibility.
- Add *experimental* support for restart based meta-search specification for
the Gecode and Chuffed solvers, as first explored in `Solver-Independent
Large Neighbourhood Search <https://doi.org/10.1007/978-3-319-98334-9_6>`_
and `A Modern Architecture for Constraint Modelling Languages
<https://doi.org/10.26180/16968229.v1>`_.
- Automatically detect current versions of CPLEX (:bugref:`745`).
Changes in the MiniZinc Library:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Add ``cumulatives`` scheduling global constraint.
- Add the ``opt`` variants of the ``global_cardinality`` functions, and add
enumerated type typesafety between the values of the decision variables and
the cover parameters.
- Add optional versions of ``count_*`` global constraints (:bugref:`728`).
- ``(strictly_)decreasing`` will now always be rewritten into
``(strictly_)increasing`` and has support for option types.
- Allow libraries to define how to iterate over ``var set of int`` using the
function ``set2iter``, useful for different set representations.
- Stabilise the IDE visualisation library, allowing all visualisation functions
to be used from ``output`` statements, and removing the need for manual calls
to ``showJSON`` in custom visualisations. This is a breaking change for users
of the previous experimental API.
- Add ``mzn_half_reify_clause`` compiler option to allow solvers to disable the
half reification of ``bool_clause`` constraints.
- Update the reflection functions ``ub``, ``lb``, and ``dom`` to return enum
values.
- Use tuples to implement the decomposition of optional variables, avoiding
possible CSE aliasing problems.
Changes in the compiler
^^^^^^^^^^^^^^^^^^^^^^^
- CSE has been adjusted to handle commutative functions when annotated using
the ``promise_commutative`` annotation.
- ``mzn_reverse_map_var`` is now only called on output variables that do not
yet have reverse mappers after initial flattening, but are required by the
output model.
- Improve error messaging for invalid parameter configuration (``.mpc``) files.
- Add a list of messages generated by solution checkers to the ``checker``
message when using ``--json-stream``.
- Support output of command line argument parsing errors in ``--json-stream``
mode.
Bug fixes:
^^^^^^^^^^
- Fix restoration of tuple/record domains when flattening ``let`` expressions.
- Fix type checking error due to creation of incorrect par versions of
functions involving tuples/records.
- Ensure that when ``--solver <FILE.msc>`` is used, the given solver
configuration file is always selected even when it collides with a solver
in the search paths (:bugref:`715`).
- Fix error when running satisfaction problems using the Gecode presolver
where an output variable is also an introduced variable.
- Resolve a problem where unification in the optimization phase might remove
variables part of the output (:bugref:`716`).
- Fix possible crash when printing the final solution using the built-in
Chuffed interface.
- Don't print the final status line from solution checkers.
- Fix typechecking of par type-inst identifiers when instantiated using
structured types involving ``var`` types.
- Implement ``fix`` and ``is_fixed`` for structured types.
- Ensure reverse mappers are created when flattening tuple/record literals.
This resolves certain errors during output processing in models using these
types.
- Fix problem where certain strings in exceptions might be garbage collected
before they are output (:bugref:`725`).
- Fix problem where argument names of generated functions could conflict with
model declared names (:bugref:`726`).
- Fix problem where the common type of complex records or tuples was not
correctly determined in the array literals.
- Fix a problem in the parser where a nullptr would be used before a syntax
error was thrown (:bugref:`730`).
- Fix error management when reading preference files (:bugref:`729`).
- Fix segmentation fault caused by the creation of invalid domain constraints
generated for functions with arrays of tuples or records parameters
(:bugref:`732`).
- Fix crash when instantiating a type-inst identifier using only ``<>``.
- Fix evaluation of comprehensions containing ``opt string``.
- Fix crash when instantiating polymorphic functions using tuples/records with
many ``var`` or ``opt`` fields.
- Do not generate default DZN output when there are only sectioned ``output``
items present (:bugref:`733`).
- Fix the edge indexing of the edges for the final node in the ``neural_net``
global constraint (:bugref:`738` :bugref:`573`).
- Add better error messaging when an index set mismatch is encountered in the
standard library (:bugref:`740`).
- Fix evaluation error when indexing into an array using ``<>``.
- Fix incorrect unsatisfiability when equating optional variables with
non-intersecting domains.
- Fix array access using optional indices for multidimensional arrays.
- Fix output of zero length arrays of optional variables.
- Fix output processing performance degradation when printing arrays in DZN
output mode.
- Fix card function on set of floats and bools.
- Make set literals containing strings or annotations a type error.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix unreadable cheat sheet font colour in dark mode (:idebugref:`191`).
- Add option to output objective value and enable by default.
- Show manually input parameters in output window.
- Fix missing checker messages (:idebugref:`192`).
- Fix incorrect OpenSSL version in Linux packages (:idebugref:`189`).
.. _v2.7.6:
`Version 2.7.6 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.7.6>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 20 June 2023)
Changes:
^^^^^^^^
- Change the library and solver configuration path of builtin version of
Chuffed to prevent file conflicts (:bugref:`708`).
- Use the verbose compilation flag to control the verbosity of the MIP domains
stage (:bugref:`705`).
Bug fixes:
^^^^^^^^^^
- Resolve issue where right hand assignment of set types could potentially be
replaced by literal value (:bugref:`700`).
- Fix incorrect undefinedness of element access of arrays of empty sets.
- Fix possible incorrect type error when calling an overloaded function with
an argument whose true type after flattening causes ambiguity when finding a
better match.
- Accept ``--num-solutions`` rather than only ``-n`` in the Gecode presolver.
- Fix crash when using a record type with a field that is itself a record or
tuple.
- Fix type error when calling ``show`` on var enum (:bugref:`711`).
.. _v2.7.5:
`Version 2.7.5 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.7.5>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 7 June 2023)
Changes:
^^^^^^^^
- Introduces the ``arg_val`` and ``arg_val_weak`` globals that return the index
of the first occurrence of a value in a given array. (:bugref:`544`).
- Introduces the ``var_perm_sym`` and ``var_sqr_sym`` symmetry breaking
globals.
- Enable parallel search for the built-in Gecode presolver.
Bug fixes:
^^^^^^^^^^
- Resolve problem in the optimization of set variable constraints
(:bugref:`693`).
- Fix regression in the context determination of negated binary operators
(:bugref:`695`).
- Ensure statistics are output when MiniZinc is interrupted with JSON stream
output enabled (:bugref:`692`).
- Add ``par`` version of ``set_in_imp`` to the ``nosets.mzn`` library to
warnings about out-of-bound indices in non-user models (:bugref:`696`).
- Add missing bounds calculation for ``symdiff`` (:bugref:`700`).
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Use native Qt dark mode on Windows where supported.
- Improve behaviour of the custom solver parameter dialog.
.. _v2.7.4:
`Version 2.7.4 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.7.4>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 11 May 2023)
Changes:
^^^^^^^^
- ``ASTString`` constructor that uses ``std::string`` is now explicit to avoid
unexpected or unnecessary GC allocation.
- Circular definitions through the use of annotations will now be reported as
type errors, rather incurring infinite recursion (:bugref:`680`).
- Optimize the compilation of identical calls in different contexts by
recursively changing the contexts of the (uncompiled) dependent calls,
instead of flattening multiple times.
- Change domains of set variables when encountering (par) equalities, or
negated ``in`` constraints at the root level.
Bug fixes:
^^^^^^^^^^
- Remove redundant function return simplification that could create invalid
tuple/record types (:bugref:`681`).
- Fix regression in the creation of separate domain constraints where domains
contained infinity (:bugref:`684`).
- Fix a flattening the decompositions of lex_less(eq) reifications in the
standard library, caused by a missing ``promise_total`` annotation
(:bugref:`685`).
- Fix incorrect context being used when flattening some binary operators
(:bugref:`683`).
- Fix with problem with domain copies when varifying a type-inst synonyms
(:bugref:`687`).
- Add missing support for floating point literals containing exponents in the
JSON parser (:bugref:`690`).
- Fix a problem where the compiler would incorrectly set the computed domain
flag (:bugref:`691`).
- Resolve garbage collection issue in the typechecker (:bugref:`688`).
- Add missing error message for sets of records and sets of tuples.
.. _v2.7.3:
`Version 2.7.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.7.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 20 April 2023)
Changes:
^^^^^^^^
- Calls to ``min`` and ``max`` with ``par set of int`` type argument will now
be undefined (becoming ``false`` in the closest Boolean context). This makes
them consistent with the calls with an argument of type ``var set of int``.
Note that previous behaviour would have returned ``infinity`` or
``-infinity`` respectively (:bugref:`661`).
Bug fixes:
^^^^^^^^^^
- Fix incorrect handling of enum types during return type specialisation of
functions (:bugref:`670`).
- Fix incorrect restriction of domains for arrays containing tuples/records
(:bugref:`669`).
- Fix crashes/invalid FlatZinc generated due to incorrect aggregation of
boolean operators involving optional arguments (:bugref:`668`).
- Fix handling of absent values when checking the return value of par functions
against the type-inst (:bugref:`673`).
- Fix small redundancy in the flat_cv_exp that triggers errors (and assertions)
in some cases (:bugref:`674`).
- Fix a mistake in the context when binding the result of builtins returning
an expression (:bugref:`667`).
- Fix problem with function domain constraints containing infinity.
- Fix crash when flattening field access in negative context (:bugref:`675`).
- Fix crash when flattening variable declaration annotations for tuple
variables with paths enabled (:bugref:`675`).
- Fix incorrect ordering of enum parts when using separate assignment items.
- Simplify fixed arrays by pushing them on the queue, rather than using
simplify_bool_constraint. Handle boolean variables with fixed domain
correctly in fixed literal counting (:bugref:`671`).
- Propagate more Boolean constraints during the compiler optimisation phase
(:bugref:`676`).
- Fix the translation of domains of floating point variables that contain
multiple ranges and include an infinity value.
- Fix an issue where JSON arrays of sets where parsed incorrectly
(:bugref:`679`).
- Fix common subexpression elimination for expressions used in incompatible
contexts (:bugref:`666`).
- Add missing ``::promise_total`` to functional version of ``nvalue``.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Only show MOOC error code when response is actually an error
(:idebugref:`176`).
.. _v2.7.2:
`Version 2.7.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.7.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 5 April 2023)
Bug fixes:
^^^^^^^^^^
- Fix crash when specialising a function to return an array with enum index
sets but integer element type.
- Fix decompositions for ``ceil`` and ``floor`` functions (:bugref:`657`).
- Fix incorrect resultant domain when binding identifiers with domains to
variable declarations (:bugref:`660`).
- Fix incorrect unknown status given by Chuffed builtin solver interface on
timeout.
- Fix segmentation fault that occurred when using some models with checkers
(:bugref:`662`).
- Fix incorrect type error when an empty array literal would be used in a
if-then-else expression with type ``array[_] of set of int`` (:bugref:`664`).
- Add support for unicode escapes in JSON input strings.
- Fix possible crash when outputting JSON parsing errors.
- Fix possible crash during flattening of ``++`` operator.
Changes:
^^^^^^^^
- Add documentation for ``--input-is-flatzinc`` flag (:bugref:`655`).
.. _v2.7.1:
`Version 2.7.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.7.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 31 March 2023)
Changes:
^^^^^^^^
- Add ``ceil``, ``floor`` and ``round`` functions for ``var float``, and
corresponding FlatZinc builtins ``float_ceil``, ``float_floor`` and
``float_round`` that can be overridden by solvers in the new
``redefinitions-2.7.1.mzn`` library file (:bugref:`636`).
- Make deopt on par absent values return undefined instead of error.
Bug fixes:
^^^^^^^^^^
- Fix incorrect chain compression when Boolean variables had constrained
domains (:bugref:`638`).
- Fix incorrect compilation of let expressions in recursive functions
(:bugref:`637`).
- Fix the evaluation of ``par`` optional types with a singular value in their
domain (:bugref:`639`).
- Fix common subexpression elimination for Boolean expressions that contain an
undefined result that needs to become false in the Boolean context
(:bugref:`639`).
- Fix linear aggregation to only aggregate non-optional values (:bugref:`644`).
- Fix rewriting to counting constraints to only occur when result is not
optional (:bugref:`644`).
- Add missing internal builtin for xor on optional bool variables
(:bugref:`644`).
- Fix evaluation of par array access with absent value (:bugref:`644`).
- Fix potential crash when evaluating bounds of par let expressions that
contain a variable (:bugref:`646`).
- Add missing ``par opt int`` versions of ``~+``, ``~-`` and ``~*``
(:bugref:`644`).
- Add missing ``count`` function on ``array[_] of var opt bool``
(:bugref:`640`).
- Fix potential crash in typechecking of array of record access
(:bugref:`647`).
- Fix output of tuples and records that contain enumerated types.
- Add missing newline to solver comment output when using ``--json-stream``
(:bugref:`649`).
- Fix problem where field names of record types could be removed during garbage
collections.
- Fix the detection of Gurobi 10 (:bugref:`653`).
- Fix performance degradation for models with variables that appear in a large
number of constraints (:bugref:`645`).
- Fix the definition of ``pow`` involving negative exponents.
- Ensure errors/warnings do not output mangled function names (:bugref:`648`).
- Fix the decomposition of optional ``inverse``.
- Fix various issues with the instantiation of generic functions involving
tuples or records.
- Fix the parsing multidimensional arrays containing values of enumerated types
in JSON.
- Fix performance degradation for models with variables that appear in a large
number of constraints (:bugref:`645`).
- Fix bug in enumerated types with non-contiguous constructor sets.
- Fix possible crash when simplifying static function bodies.
- Fix handling of set literals and search annotation calls in built-in Chuffed
interface.
- Fix bug where an already defined variable was made the argument of a
``defines_var`` annotation for a constraint.
- Fix handling of domains for tuple and record types.
- Fix index set checking for tuples and records which contain arrays.
- Fix the handling of domain and index set expressions in aliases.
- Fix incorrect coercion of sets into multidimensional arrays (:bugref:`656`).
- Fix incorrect simplification of Boolean constraints that contain a fixed Boolean
variable in an annotation.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix highlighting of multiline comments starting with ``/*/`` (:idebugref:`172`).
- Fix bundling of incompatible OpenSSL version in linux packages.
- Remove support for glibc 2.27 and earlier from AppImage and tarball linux
packages. The Snap package may be used instead on such systems.
.. _v2.7.0:
`Version 2.7.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.7.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 23 February 2023)
Major changes:
^^^^^^^^^^^^^^
- Support for tuple and record types as well as type-inst synonyms has been added.
- Extended enumerated types can now be constructed from non-contiguous sets.
- WebAssembly is now fully supported as a target platform.
Changes:
^^^^^^^^
- The compiler will no longer introduce ``array_bool_or``, only ``bool_clause``.
- Improve translation of some simple constraints, which avoids introducing
unnecessary ``int_eq`` (and similar) constraints.
- Remove more subsumed clauses and foralls in the optimisation phase of the compiler.
- Report approximate error locations for type errors in function arguments that
are literals without location information.
- Many internal structures, such as the CSE table, and the representation of
variable declarations and calls have been optimised to require less memory.
- The compiler now accepts absolute and relative paths as arguments of the
`-G` flag.
- Functions in the standard library that return arrays of variables are now
also annotated with ``is_defined_var`` and ``defines_var(x)`` annotations.
- Revert changes in the ``fzn_count_*`` variants that tried to introduce
more positive contexts, but inadvertently came at the cost of count aggregation.
- The Gecode-based pre-solver can now accept ``--backend-flags`` to allow
processing of options whose names conflict with other flags.
- The Gecode-based pre-solver is now made available using the ``gecode`` solver
tag when using the WebAssembly version of MiniZinc.
- Remove unnecessary file packager patch from WebAssembly build.
- There is now a version of the ``regular`` constraint that uses enumerated types
to represent the states of the automaton.
- Revert change in the standard decomposition of ``lex_less(eq)`` so it no
longer uses implications which were intended promote half-reification,
because this introduced free variables.
- Calls to par functions with constrained arguments now result in an undefined
value (just like calls to var functions) rather than an abort.
Changes in interfaces to solvers:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- MiniZinc now includes a solver interface for the `HiGHS <https://www.highs.dev>`_
linear optimisation suite. HiGHS is included by default in the MiniZincIDE
package, and available using ``--solver highs``.
- The SCIP interface has been updated and is now compatible with version
7 and 8 only.
- A solver's globals library specified in a configuration file will now
always be passed to the compiler using the ``-G`` flag. This allows users to
easily override this library from command line when required.
- Automatically detect Gurobi 10.0 and potential future versions.
- Avoid loading all solver plugin DLLs on startup, instead loading when required.
- A built-in solver interface for `Chuffed <https://github.com/chuffed/chuffed>`_
has been added primarily for use with the WebAssembly version of MiniZinc.
- The non-FlatZinc interfaces now also accept the ``--free-search`` flag in
addition to the ``-f`` flag.
- The SCIP interface will now also try to find the SCIP library files in the
Homebrew locations.
Bug fixes:
^^^^^^^^^^
- Fix the parsing of JSON enum constructor functions with integer arguments.
- Fix the ``..`` operator on variable integers to create sets with tighter bounds.
- Fix incorrect memory allocation in Gecode interface (:bugref:`618`).
- Fix an error thrown when the declaration of a polymorphic function is split from
its definition.
- Fix assignment items of enumerated types using the ``++`` operator.
- Fix behaviour of overloading involving polymorphic functions which overlap
with more specific functions.
- Fix extended enum constructors with empty enums.
- Fix a bug that prevented the use of polymorphic optional arrays as function arguments.
- Generated FlatZinc files are now closed before a solver is called.
- Disable inlining for one function when creating webassembly output, to prevent the clang compiler
from exploiting undefined behaviour that our code relies on.
- Fix Gecode-based presolver to not crash when solving problems with a constant objective, or
optimisation problems where some variables are not part of the search or output.
- Fix default search for Gecode-based presolver to be the same as standalone Gecode solver.
- Fix possible extraneous newline when printing warnings in ``--json-stream`` mode.
- Allow option types to be declared with empty domains.
- Fix an error in checking floating point array domains for functions with defined domains.
- Fix a bug in the evaluation of array comprehensions with option types.
- Fix type inference for variables declared ``any`` in let expressions.
- Fix possible crashes during garbage collection of identifiers and variable declarations.
- Boolean par functions (as declared using ``test``) now behave correctly when they
contain partial operations that result in undefined values.
- Fix optimisation of values used in float arrays (:bugref:`635`).
- Ensure that combining ``--solver-statistics`` and ``--compiler-statistics`` behaves the same as
using the ``--statistics`` flag (:bugref:`607`).
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix a bug where model selection dialog could run the wrong model.
- Fix a bug where the same data file could be added to the MiniZinc command twice.
- Ensure user config directory is created when modifying solver search paths (:idebugref:`167`).
- Ensure that IDE windows cannot spawn off-screen.
- Add tooltips to the CP-Profiler status bar legend.
- Add support for mooc submissions which include file editing history.
.. _v2.6.4:
`Version 2.6.4 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.6.4>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 23 June 2022)
Changes:
^^^^^^^^
- All considered function items are now checked to ensure that they can be
correctly evaluated or flattened. This means that, to avoid a type error,
all functions must have a function body or, in case of a ``var`` function,
be valid FlatZinc builtins (i.e., they are predicates/return ``var bool``,
and their arguments are valid FlatZinc types) or, in case of a ``par``
function, must have an internal definition in the MiniZinc compiler.
Functions that are defined with ``var`` types for convenient use in output
can be annotated ``output_only``. The compiler will check that a valid
``par`` version of this function is available.
Bug fixes:
^^^^^^^^^^
- Fix a bug in the type checker where unsupported coercions could cause crashes.
(:bugref:`581`).
- Fix a bug in the flattening of binary operators when types of flattened
arguments match a different version function than matched by the type
checker. (:bugref:`588`)
- Fix a bug where statistics without a ``%%%mzn-stat-end`` were not always
printed in ``--json-stream`` mode.
- Fix a bug in the task decomposition of the cumulative global constraint where
resource requirement would not always be correctly be ignored when the task
duration is zero. (:bugref:`589`)
- Fix handling of float values in ``.mpc`` parameter configuration files.
- Fix crash in SCIP plugin due to incorrect loading of ``SCIPinfinity`` symbol.
- Fix crash in CBC when there is a heuristic solution but no best solution
(:bugref:`592`).
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Ensure the extra parameter filter is cleared when the textbox is cleared.
.. _v2.6.3:
`Version 2.6.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.6.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 6 May 2022)
Changes:
^^^^^^^^
- Avoid the creation of intermediate ``bool_clause_imp`` calls.
- Add the ``no_cse`` annotation to allow CSE storage optimization.
- Improve documentation for ``all_different`` with optional variables.
- Make breaking of ``defines_var`` cycles deterministic (:bugref:`563`).
- Improve documentation for warm start search annotations.
- Automatically detect up to SCIP version 8.0.0 for Windows.
- Add ``global_cardinality`` and ``global_cardinality_closed`` for arrays of sets.
- Categorise all global constraints into documentation groups.
Bug fixes:
^^^^^^^^^^
- Fix a bug where variables required by a solution checker were not always correctly passed to the
checker, triggering a type error in the checker output.
- Fix garbage collection bug during typechecking (:bugref:`564`).
- Fix optimisation of reified ``bool_eq`` constraint where the result must be ``false``
(:bugref:`565`).
- Restore missing documentation for functions in the top-level ``globals`` group.
- Restore ``warm_start`` search annotations for optional values (:bugref:`567`).
- Fix broken references to top-level library documentation pages.
- Fix highlighting of JSON-like code blocks in the documentation.
- Fix a bug where variables used in type-insts of output variables were not correctly copied to the
output model (:bugref:`570`).
- Fix a possible crash when flattening ``forall`` calls.
- Ensure ``pow`` functions are total (:bugref:`572`).
- Fix an internal error when using an ``if-then-else`` with a branch equating ``<>`` to an
expression.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Improve UI and dark mode for CP Profiler.
- Fix CP Profiler tree-builder signal/slot connection (:idebugref:`160`).
- Fix deadlock in CP Profiler tree building (:idebugref:`162`).
- Make project loading more resilient to errors (:idebugref:`165`).
.. _v2.6.2:
`Version 2.6.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.6.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 22 March 2022)
Changes:
^^^^^^^^
- Better transformation of clauses to avoid negations when possible.
Bug fixes:
^^^^^^^^^^
- Prevent possible non-deterministic function dispatch.
- Fix a bug in bounds computation for sums over arrays that could result in a crash.
- Fix a bug in the logical context of negated implication operators.
- Fix definition of ``indomain_min`` and ``indomain_max`` for ``set_search`` in ``nosets.mzn``.
- Fix type checker to consider all functions/predicates with var arguments as var type.
- Ensure that the last solution is always printed for Gurobi (:bugref:`561`).
- Fix the dispatch from non-overloaded operators to builtin calls for opt types.
- Fix creation of ``par`` versions of ``var`` functions used in output.
- Fix bounds calculation for comprehension ``in`` expressions which are ``var``.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Don't print expected error messages for MOOC submissions.
- Fix custom parameter widget dark mode CSS.
.. _v2.6.1:
`Version 2.6.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.6.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 3 March 2022)
Changes:
^^^^^^^^
- Throw an error when the time limit is reached in ``mzn2fzn`` mode.
- Relax a MIPD infeasibility check (:bugref:`550`).
- Add half-reification possibilities for boolean builtin redefinitions.
Bug fixes:
^^^^^^^^^^
- Fix bounds calculation for singleton linear expression over 0/1 variable.
- Correctly set whether an array literal is flat during copying (:bugref:`536`, :bugref:`549`).
- Fix compilation of SCIP and Xpress solver plugins.
- Don't print the ``=====UNKNOWN=====`` status on timeout in ``mzn2fzn`` mode.
- Ensure variables are always copied to the output model when required by a solution checker.
- Rename clashing definition of internal version of ``arrayXd`` to ``arrayNd`` (:bugref:`552`,
:bugref:`553`).
- Output the correct variables when using ``--output-mode checker``.
- Fix possible crash when handling errors due to incorrect garbage collection.
- Fix WebAssembly build of MiniZinc.
- Allow comprehensions to iterate over the ``{}`` literal.
- Fix printing of multidimensional arrays of enums in output.
- Fix the output format when using ``--json-stream`` on FlatZinc files.
- Rename ``member_int_reif`` to ``fzn_member_int_reif`` in the Gecode presolver library
(:bugref:`556`).
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix crash when the solver for an unsaved configuration is removed.
- Fix bug where the selected solver could incorrectly change when a
configuration option is altered.
.. _v2.6.0:
`Version 2.6.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.6.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 18 February 2022)
Language and library changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Add support for annotating :mzn:`output` items to define output sections
which can be switched on/off using ``--only-sections`` and
``--not-sections``.
- Add support for the :mzn:`empty_annotation`, which is removed during
flattening.
- Allow annotations on function parameter declarations.
- Add support for reified annotations. If one of the arguments of an annotation
declaration is itself annotated with :mzn:`::annotated_expression`, the
annotation function will be called with the annotated variable at that
argument position.
- Support annotations :mzn:`::promise_monotone` and
:mzn:`::promise_ctx_antitone` for function parameters and let bound
variables.
- Add support for capturing annotations in predicates/functions.
- Add non-optional variants of the :mzn:`in` operator on arrays.
- Update redefinitions of lex_less(eq) to promote half-reifications.
- Add definition for bool_clause_imp in standard library.
- Don't consider quotes as part of identifiers (so :mzn:`'foo'` and :mzn`foo`
are the same identifier).
- Add :mzn:`default` operator which takes the value of the right hand side
if the left hand side is undefined or absent.
- Remove :mzn:`bool2int` in sum constructs (:bugref:`472`).
- Rewrite :mzn:`bool_clause_imp` to clause instead of :mzn:`bool_clause`.
- Remove old, unused solver libraries.
- Add debugging builtins that are only evaluated with ``--debug``.
- Add :mzn:`enumOf` function and allow :mzn:`enum_next` and :mzn:`enum_prev`
with a single parameter.
- Add support for :mzn:`..<`, :mzn:`<..` and :mzn:`<..<` operators.
- Add support for open intervals (:mzn:`a..`, :mzn:`..b`, :mzn:`a<..`, etc).
- Add support for indexed array literals and comprehensions.
- Allow generators to range over multi-dimensional arrays.
- Add support for the :mzn:`any` type specifier.
- Add support for anonymous generators like :mzn:`[ 0 | _ in 1..n ]`.
- Add support for anonymous enum constructors using :mzn:`_(x)`.
- Add support for enum construction from a contiguous subset of an enum.
- Add :mzn:`::output` and :mzn:`::no_output` annotations for top-level and
local variable declarations.
- Add support for empty let expressions and trailing comma in enum
declarations.
- Add missing variants of :mzn:`=` and :mzn:`!=` operators on arrays by making
them polymorphic.
- Change propagation strength annotations from :mzn:`domain` and :mzn:`bounds`
to :mzn:`domain_propagation` and :mzn:`bounds_propagation` and add
:mzn:`value_propagation` as an option.
- Add :mzn:`trace_exp` builtin function for easy tracing of expressions when
debugging.
- Add :mzn:`trace_to_section` builtin function.
- Add :mzn:`relax_and_reconstruct` annotation to standard library.
- Add ``_decomp`` versions of disjunctive and cumulative optional constraints.
- Improve :mzn:`sqrt` function.
- Add IDE visualisation library ``ide/vis.mzn`` along with helpers
:mzn:`json_object` and :mzn:`json_array` for generating JSON output.
- Add support for comparing infinities with variables (:bugref:`515`).
- Weaken bounds to cover more cases in decomposition of
:mzn:`global_cardinality_low_up`.
- Allow identifiers starting with underscores in normal MiniZinc models.
- Make the naming for variants of all_different consistent (:bugref:`500`).
- Add if-then without else for :mzn:`string`, :mzn:`annotation`, and arrays.
- Add initial textual structured output functions.
- Add index poly types for several global constraints and remove top level
``_reif`` versions.
- Add support for hex and octal characters in string literals.
Compiler tool changes:
^^^^^^^^^^^^^^^^^^^^^^
- Add support for JSON input of enum constructors and anonymous enums.
- Add ``--cmdline-json-data`` option for passing JSON data on the command line.
- Add support for JSON stream machine-readable output format enabled with
``--json-stream``.
- Improve generation of default random seed.
- Use the random seed option for the random builtin functions.
- Add timeout tracking to the flattening compiler phase.
- Allow configuring solvers to always pass certain flags or arguments.
- Honour the ``TMPDIR`` environment variable for placing temporary files
(:bugref:`468`).
- Remove temporary files/directories when interrupted (:bugref:`468`).
- Add ``globals`` section to the output of ``--model-interface-only``.
- Enable monomorphisation of polymorphic functions.
- Output one and two-dimensional arrays using index literal syntax when
possible.
- Write solution checker warnings directly to the error stream instead of
showing them as part of the checker output.
- Make error and warning message output more uniform, improve error messages
for various errors.
- Improve reporting of internal errors, asking user to file a bug report.
- Recognise stack overflows on supported platforms.
- Add additional message for deprecated functions marked for removal.
- Don't repeat warnings that are also errors (in particular ResultUndefined
errors).
- Add the found and expected array sizes to the error when mismatch occurs
(:bugref:`510`).
- Add deprecation warning for type specific usage of overloaded globals.
- Add warning when included files directly override global constraints.
- Add delayed rewriting of half-reified bool_clause.
- Never output :mzn:`_objective` for satisfaction problems.
- Never include:mzn:`_objective` in model interface output variables.
- Allow optimisation checkers to take model objective as input.
- Rewrite :mzn:`array_intersect`, :mzn:`array_union` and :mzn:`array2set`
functions into predicate calls that can be overridden by solver libraries.
- Improve error location reporting for type errors involving the objective.
- Print location and better message when a constraint evaluates to false during
flattening.
Changes dealing with option types:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Enable automatic symmetry breaking for absent integer option types by setting
the internal integer representation to zero (can be disabled with
``-Dmzn_absent_zero=false``).
- Make use of new symmetry breaking in optional :mzn:`min`, :mzn:`max`,
:mzn:`element` and :mzn:`value_precede`.
- Add optional versions of :mzn:`circuit`, :mzn:`all_different`,
:mzn:`inverse`, :mzn:`global_cardinality`, :mzn:`global_cardinality_closed`,
:mzn:`value_precede_chain`, :mzn:`arg_min`, and :mzn:`arg_max`.
- Add weak versions of :mzn:`!=`, :mzn:`/` and :mzn:`div` operators.
- Add weak versions of :mzn:`min` and :mzn:`max` and use these in the
decomposition of :mzn:`span`.
- Add :mzn:`::defines_var` for :mzn:`var opt` variables.
- Add missing :mzn:`opt bool` operators.
- Add missing :mzn:`in` operators for optional variables.
Changes in MIP solver backends:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Add half-reified alternative for :mzn:`int_ne` in linear library.
- Add linear definition for :mzn:`bool_clause_imp`.
- Add support for :mzn:`float_div` in Gurobi and SCIP.
- Automatically detect Gurobi 9.5.0 and potential future versions.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Add support for specifying submission terms for MOOC.
- Ensure newly loaded configs override synced options (:idebugref:`144`).
- Fix check for empty project to avoid incorrect warnings when closing.
- Maintain modified solver configurations when using preferences dialog.
- Support using arm64 version of MiniZinc with x86_64 IDE build on macOS.
- Fix crash when no solver configurations are available.
- Remove WebEngine-based visualisation feature and implement HTTP/WebSocket
server based visualisations.
- Add support for dark mode detection on Windows.
- Implement foldable output widget supporting output sections.
- Support both Qt 5 and Qt 6.
- Allow tab to shift multiple lines right.
- Re-implement support for detached solver processes.
- Allow the project/solver configuration panes to take the full height of the
main window.
- Implement new multi-tabbed preferences dialog.
- Ignore errors in non-current files during background code checking.
- Fix undefined behaviour in main window event filter (:idebugref:`154`).
- Fix crash when terminating solvers due to closing the main window.
- Confirm before removing files from project (:idebugref:`149`).
Other changes:
^^^^^^^^^^^^^^
- Improve table of contents for globals documentation.
- Restructure the standard library documentation.
- Add more details on solver installation paths to documentation.
- Remove useless restart example from documentation.
Bug fixes:
^^^^^^^^^^
- Fix reference counts for added annotations.
- Fix cyclic include detection involving multiple model files with the same
file name (in different directories).
- Ensure executables have correct extension on Windows (:bugref:`463`).
- Fix detection of multiple goal hierarchies (:bugref:`465`).
- Fix :mzn:`trace_stdout` to correctly output to standard output.
- Fix assertions in graph globals (:bugref:`467`).
- Fix the decomposition of cumulative (:bugref:`388`).
- Fix comparison of infinite domains.
- Pass on fixed partiality status when flattening in root context.
- Ignore solver exit code when terminating it due to timeout on Windows.
- Fix the context for constraints in implied_constraint calls (:bugref:`471`).
- Fix the placement of the bool_clause_imp standard redefinition.
- Add slicing coercion for let body (:bugref:`483`).
- Flatten calls on right hand side of variable declarations in root context
unless they return bool or var bool (:bugref:`485`).
- Support flattening of top-level variable declarations triggered from non-root
contexts (:bugref:`485`).
- Report type error when overloading on return type (:bugref:`484`).
- Delay deletion of variable, to avoid deleting variable that is required for
output (:bugref:`476`).
- Only mark non-toplevel Ids as evaluated if they are not pointing to another
Id (:bugref:`469`).
- Report type errors when trying to declare :mzn:`var ann`, :mzn:`var string`,
:mzn:`var set of bool` or :mzn:`var set of float` (:bugref:`487`).
- Add missing comparison operators on array (:bugref:`428`).
- Fix par comparison of sets.
- Make fix builtin on arrays return array with the same index sets as its
argument.
- Don't try to compute bounds for par array literals if they contain var types.
- Only fail on empty domain if the variable is not a set variable
(:bugref:`493`).
- Don't evaluate type-inst variable when creating new flat variable
(:bugref:`494`).
- Add missing conditional decomposition for var opt float type (:bugref:`495`).
- Only extract equalities from if-then-else expressions if they are not on
arrays.
- Fix bug that prevented type-checking of type-inst expressions in :mzn:`let`
variables.
- Fix cumulative decomposition for fixed resource requirements.
- Avoid problems with internal annotations in the ``VarOccurrence`` count.
- Do not pass value from model for :mzn:`var` variable in solution checkers.
- Correctly handle empty 2D array in :mzn:`show2d` function and empty 3D array
in :mzn:`show3d` (:bugref:`501`).
- Fix lost output for functional ``_eq`` constraints (:bugref:`503`).
- Never insert empty arrays into weak ref tables. (:bugref:`509`).
- Make sure the new objective variable declaration item is not garbage
collected before being added to the main model (:bugref:`513`).
- Fix unification of float variable bounds (:bugref:`514`).
- Fix :mzn:`deopt` scoping issue in optional :mzn:`min` and :mzn:`max`
(:bugref:`518`).
- Create dummy value for option types (:bugref:`521`).
- Don't rewrite count to :mzn:`count_...` if the counted variables are optional
(:bugref:`527`).
- Treat :mzn:`<>` in conditionals as arbitrary type, not int (:bugref:`529`).
- Fix :mzn:`value_precede_chain` for non 1-based array indexes (:bugref:`530`,
:bugref:`531`).
- Ensure the ``Location`` objects in ``Warning`` and ``LocationException`` are
marked alive (:bugref:`538`).
- Fix non-reified decomposition of seq_precede_chain for sets.
- Fixes optional commas and pipes in 2d literals.
- Ignore :mzn:`<>` in :mzn:`lb_array`, :mzn:`ub_array` and :mzn:`dom_array`.
- Fix incorrect generation of :mzn:`int_lt` when an optional operand is
flattened to become non optional.
- Ensure chain compression considers functional :mzn:`exists` calls in positive
context.
- Consider clauses that are not direct implications during chain compression
- Fix definition of :mzn:`array_intersect`.
- Fix output of :mzn:`arrayXd` with enum index sets.
- Fix handling of internal annotations during flattening.
- Fix JSON output of annotations.
- Correctly quote DZN IDs in output and correctly escape output variable names
in model interface.
- Fix the generation of assertions for enumerated types.
- Fix computation of function return type with type-inst variable index set and
enum argument.
- Move includes from stdlib into solver_redefinitions to ensure any
corresponding solver-specific predicates get declared in the produced
latZinc.
- Fix element functions for arrays of var opt type to work in negative
contexts.
- Avoid duplicating expressions in the desugaring of slicing operations.
- Fix coercion of [] to arbitrary dimensions when used as variable initialiser.
- Fix calculation of argument type to include actual array argument dimensions.
- Fix computation of float bounds involving absent value.
- Fix bind to allow the usage of absent literals in opt float arrays.
- Always add coercions to variable declarations to make sure array slicing is
resolved correctly.
- Make sure the TypeInst of a variable is also scanned for dependencies that
need to go into the output model.
- Produce type error for non-Boolean constraint items.
- Flatten par comprehension generators that contain variables.
- Flatten boolean array literals and comprehensions in mixed context.
- Fix :mzn:`var_dom` to correctly handle :mzn:`<>`.
- Fix segmentation fault in output generation.
- Ensure that the argument to ``--backend-flags`` does not get consumed early.
- Fix slice functions to return arrays with enum index set where appropriate.
- Correctly flatten indexed comprehension with variable :mzn:`where` clause or
generator.
- Don't copy comprehensions with variable where clause or generator into output
model.
- Restore bindings for lets and calls when an exception is thrown during
evaluation.
- Do not output invalid MIP objective statistics for satisfaction problems.
- Fix flattening of limited partial if-then-else expressions.
- Fix the rewriting of bool_not reifications when argument is defined.
- Don't assume all array literals can be evaluated during bounds calculation.
- Use correct infinite set for floats.
- Check for undefined results in flat_cv_exp.
- Don't fail on empty arrays with empty domain (:bugref:`534`).
.. _v2.5.5:
`Version 2.5.5 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.5.5>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 19 March 2021)
Changes:
^^^^^^^^
- Make min/max on an array of optional variables return a non-optional var,
behaving as if absent values are not in the array.
Bug fixes:
^^^^^^^^^^
- Insert par array literals in the common subexpression elimination map, fixing
a FlatZinc code bloat issue (:bugref:`458`).
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix editing of custom string parameters so they don't get converted to
floats.
- Fix crash on Windows caused when the ``PATH`` environment contains unicode
characters.
.. _v2.5.4:
`Version 2.5.4 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.5.4>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 16 March 2021)
Changes:
^^^^^^^^
- Allow empty arrays in global cardinality constraints (:bugref:`440`).
- Add piecewise_linear for non-continuous intervals.
- Fail on empty variable domains in agenda.
- Allow coercion of JSON lists to enum definitions (:bugref:`441`).
- Update strictly_decreasing with documentation and opt version (:bugref:`454`).
- Remove MIP-specific ``fzn_less(eq)_bool(_reif).mzn``.
- Add ``mzn_in_symmetry_breaking_constraint()`` for internal use.
- Add MIP decompositions for ``lex_less[eq]_*``.
- Add ``lex_chain_*`` globals, and use them in ``lex2[_strict]``.
- Improve detection of variable declarations which are actually par to allow
more use of overloaded par versions of predicates.
- Update documentation on installation of OR-Tools.
- Report CPU time in ``solveTime`` statistic for MIP solvers.
Bug fixes:
^^^^^^^^^^
- Fix handling of bad Xpress licenses when collecting extra flags.
- Don't propagate annotations into annotation calls to infinite recursion.
- Add missing par opt versions of coercion functions.
- Revert incorrect renaming of ``has_output_item`` to ``has_outputItem`` in
model interface output.
- Fix incorrect grammar specification in documentation (:bugref:`453`).
- Fix crash when defining enums with no members (:bugref:`443`, :bugref:`444`).
- Support undefined enums in the type checker.
- Fix CPLEX solver ID in documentation.
- Never insert par expressions in the common subexpression elimination map.
- Fix cv flag propagation when the body of a let or function is cv.
- Fix equality test for annotations involving indirection.
- Don't modify the infinite domain of optional variables (:bugref:`456`).
- Don't immediately evaluate output_only arrays when generating dzn output.
- Coerce boolean objectives to integers.
- Don't create copies of global declarations when creating par versions of
functions.
- Compile infinite domains with holes into constraints (:bugref:`457`).
- Use generic flattening inside generators, disallowing free boolean variables
inside ``in`` expressions (:bugref:`451`).
- Strip library paths from includes in multi-pass compilation (:bugref:`455`).
- Canonicalise file names of includes to ensure the same file is not included
multiple times.
- Escape paths in printed ``include`` items, fixing backslash problems on
Windows.
- Follow ids to declarations when flattening par arrays (:bugref:`448`).
- Ignore par constants during chain compression.
- Fix flattening of all-par set literals.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix possible crash due to incorrect use of WriteFile on Windows.
- Ensure Gecode Gist dependencies are present in the Linux bundle and AppImage
(:idebugref:`132`).
- Fix crash when stopping solver during exit.
- Don't show irrelevant context menu entries in the project explorer.
- Add support for HTTP/S links in the output pane.
- Fix crash when saving CP Profiler executions where there is no info
associated with a node.
- Show a warning when there are open files which are not part of a MOOC
submission.
- Fix double spinbox precision issues (:idebugref:`134`).
- Include Gecode Gist and CP Profiler dependencies in Snap package.
- Allow opening of multiple files through the open file menu option.
- Ensure file dialogs save last path when opening files.
- Make the escape key close the find/replace dialog when focussed on any child
widget.
- Allow setting MOOC submission items as mandatory.
.. _v2.5.3:
`Version 2.5.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.5.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 24 November 2020)
Changes:
^^^^^^^^
- Fully reify -> (x != y) in the linear library.
- Allow printing of comprehensions using introduced variables.
- Allow increasing/decreasing over multidimensional arrays.
- Add mzn_ignore_symmetry_breaking_constraints and mzn_ignore_redundant_constraints
options, allowing the symmetry_breaking_constraint and redundant_constraint
predicates to be overridden, so that those constraints can be disabled independent
of the solver library that's being used (:bugref:`429`).
- Add automatic coercion of strings in JSON input data to enum constants where needed.
- Add automatic coercion of lists in JSON input data to sets where needed.
Bug fixes:
^^^^^^^^^^
- Fix int_lin_eq_imp in the linear library.
- Use variable declaration location for invalid type-inst error messages without
locations.
- Rewrite par versions of fzn_count_* into var versions, allowing solvers that
only redefine the bar version to use their built-in propagators even if the
value to count is fixed at compile time (:bugref:`427`).
- Add multi-level array construction for enumerated types when outputting in
JSON format.
- Ensure that functions can only be used as par if their return type is par
(:bugref:`431`).
- Fix parser default location macro, preventing loss of location filenames
in some cases.
- Fix parser rule for non-opt sets to give the correct starting location.
- Fix fzn_bin_packing_capa_reif.mzn and fzn_bin_packing_load_reif.mzn
(:bugref:`435`).
- Update decl for binary and unary operators when creating par versions of
functions (:bugref:`437`).
- Only throw type errors for enum type identifier mismatch in strict enums mode.
- Only post cumulative constraints if there is at least one task, preventing an
assertion about the lower bound from failing.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Only reset config window item focus if it is still focused, preventing spurious
changes in focus during code checking.
- Fix handling of final statuses, including UNSAT (:idebugref:`123`).
- Remove -s flag support from Gecode Gist solver configuration (:idebugref:`125`).
- Fix crash when saving a project with no solver selected (:idebugref:`127`).
- Correctly remove temporary parameter configuration files after use
(:idebugref:`128`, :idebugref:`129`).
- Fix the time limit readout in the status bar when solving.
.. _v2.5.2:
`Version 2.5.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.5.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 6 November 2020)
Changes:
^^^^^^^^
- Use full reification in int_ne_imp.
- Add support for redefining 2d element constraints in the solver library.
- Produce warning when shadowing a variable in a let or comprehension in the
same function (or toplevel) scope (:bugref:`419`).
- Rewrite symmetric_all_different to inverse (:bugref:`426`).
- Add link icons to globals etc in the reference documentation (:bugref:`425`).
- Make the nodes statistic show the total number of nodes across all restarts
for SCIP.
- Add support for multidimensional arrays in counting constraints (:bugref:`413`).
- Allow .json files to be specified using the --data option (in addition to
.dzn files).
- When specifying relative paths inside parameter configuration files,
resolve them relative to the config file.
Bug fixes:
^^^^^^^^^^
- Correctly add file extension to plugin libraries when omitted.
- Fix JSON array index coercion when the first index is undefined.
- Catch ResultUndefined exception when evaluating cv par expressions,
and turn into undefined result.
- Fix trailing for lets and comprehensions, resolving some issues with
recursive functions containing lets and/or comprehensions.
- Only create par version of functions that do not refer to any toplevel
variables (:bugref:`418`).
- Keep correct location information for identifiers.
- Print warnings from solns2out.
- Fix the removal of reverse mapped arrays when they contain aliases.
- Disallow macro replacement when call has reification implementation.
- Fix the behaviour of passing an invalid version hint to --solver.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Properly resize extra flags table after adding parameters (:idebugref:`119`).
- Use the minimal configuration to check the model interface
(:idebugref:`118`).
- Allow omitting builtin solver version in project JSON.
- Don't mark as modified when loading non-synced solver configurations.
- Ensure the last open configuration in a project is selected when loaded.
- Fix the default values of solution truncation and output window clearing.
- Process unrecognised extra flags from old project configurations.
- Fix watching for modification of the additional data box.
- Fix the alignment of line numbers.
- Make behaviour controls more narrow to accommodate smaller window sizes.
- Defocus config window widgets when updating solver config so values of
currently edited fields are updated.
- Pass user input data correctly during compilation.
- Remove solns2out options from MiniZinc call when compiling.
.. _v2.5.1:
`Version 2.5.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.5.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 22 October 2020)
Changes:
^^^^^^^^
- Rewrite alldifferent_except_0 to fzn_alldifferent_except_0, to enable
solvers to implement that constraint if it is available (:bugref:`414`).
- Propagate domains for variables even when reverse-mapped. This
ensures that variables with multiple encodings can be created with
the tightest possible bounds.
- Fail instead of producing empty domains when simplifying int_le
constraints.
- Allow parsing of nested objects in parameter configuration files.
- Add --backend-flags option to provide a uniform way of passing flags
to an underlying solver.
- Add extra flags support to the MIP solver interfaces, allowing
parameters to be set in the IDE.
- Improve automatic detection of the Xpress solver and license file.
- Allow the use of spaces in the --solver flag argument.
- Automatically add the last part of the solver ID as a tag.
- Improve handling of var functions in output, automatically creating
par versions of var functions if possible.
Bug fixes:
^^^^^^^^^^
- Fix parsing of empty multidimensional JSON arrays.
- Allow use of --parallel long form option in MIP solvers.
- Fix item lookup when increasing annotation usage in annotate builtin.
- Fix JSON array coercion to handle arrays with 1 unknown index.
- Don't try to access array dimensions for output of empty
multi-dimensional arrays.
- Print verbose version information to stderr instead of stdout.
- Fix context handling when flattening par expressions that contain
variables (:bugref:`415`).
- Flatten string expressions if they contain variable parts in
assert/abort/trace calls.
- Fix breakage on older versions of Windows due to UTF-8 conversion
failing.
- Remove defines_var/is_defined_var annotations when simplifying
boolean constraints.
- Fix transfer of cv status from where parts to newly generated
conjunctions during typechecking.
- Fix multiple issues with the defined_var / is_defined_var
annotations.
- Move all included files from stdlib into solver_redefinitions.mzn, so
that solver redefinitions are not marked as belonging to the standard
library (:bugref:`416`).
- Fix documentation group for standard annotations (:bugref:`417`).
- Show correct version of solver plugins which have their DLLs
specified using a command-line parameter (:bugref:`411`).
- Fix arbitrary flag support for NL solvers.
- Kill child processes if exception occurs during solns2out on
Unix-like platforms.
Changes in the IDE:
^^^^^^^^^^^^^^^^^^^
- Fix typo when passing solver statistics option to minizinc (:idebugref:`112`).
- Fix missing statistics output (:idebugref:`112`).
- Add support for colour themes (:idebugref:`110`).
- Don't prompt for saving after adding/removing files from the Untitled
project.
- Fix running of compiled FlatZinc files.
- Show error message when trying to load an invalid configuration file.
- Ensure all output is sent to the output console, and that fragments
in standard error output appear when a newline is written to standard
output (:idebugref:`114`).
- Fix running of solver configurations from the project explorer.
- Improve performance of adding a large number of extra flags at once.
- Add support for 64-bit integer extra flags.
- Add support for setting both solver backend flags and MiniZinc
command flags (:idebugref:`113`).
- Improve interface for adding extra parameters, allowing search/filter
and multiselection of known parameters.
.. _v2.5.0:
`Version 2.5.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.5.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 6 October 2020)
Language, tool and library changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Allow `reading command line arguments from JSON config
file </doc-2.5.0/en/command_line.html#ch-param-files>`__.
- Add support for `enum
constructors </doc-2.5.0/en/modelling2.html#enumerated-types>`__.
- Put subprocesses in their own process group so that they don't
receive signals from both the console and MiniZinc.
- Implement soft and hard process timeouts on Windows, allow triggering
of shutdown from named pipe on Windows for the IDE.
- Make MiniZinc unicode-aware on Windows.
- Better error messages for index set mismatches.
- Report similar identifiers when matching fails.
- Better error messages when a call cannot be matched to an existing
function or predicate.
- Print error stack if top of stack is a single identifier (i.e., error
occurred while flattening a variable declaration).
- Add new separate flags for intermediate and all solutions. -i enables
intermediate solutions for optimisation problems and
--all-satisfaction enables all solutions for satisfaction problems.
Changes in interfaces to solvers:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Solvers which only support intermediate solutions now can now support
the standard flag -i rather than -a.
- Restructure the `MiniZinc standard
library </doc-2.5.0/en/lib-stdlib.html#standard-library>`__.
Changes in MIP solver backends:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Remove non-conforming -n flags for MIP solver configs standard flags.
- Improve autodetection of Gurobi DLL.
- Find Gurobi 9.0.2 when building.
- Don't create gurobi log.
- Interface to concurrent solves in Gurobi (--readConcurrentParam).
- Add -DMinMaxGeneral option for min/max as fzn_array_float_minimum for
Gurobi
- Find SCIP 7.0 on Windows
- Use -Glinear library, built-in cumulative by default for SCIP.
- Use quadratics in Gurobi and SCIP by default.
- Add options --xpress-root and --xpress-password for finding Xpress
installation directory and licence file.
- Add MIQCP quadratic constraints for Gurobi and SCIP.
Changes dealing with option types:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Add opt versions of several globals.
- Define weak equality for var opt bool.
- Add set_in definitions for var opt int.
- Add opt versions of enumerated type functions (to_enum, enum_next,
enum_prev etc).
- Enable set literals with optional values (which will be ignored),
including var set literals with var opt int elements.
- Add opt version of float_dom to stdlib.
- Change unary not for opt bool to use absorption lifting.
- Add array2set functions on var opt int arrays.
- Add opt versions of dom, dom_array and dom_bounds_array.
- Add missing logical operators to var opt bool.
Changes in the MiniZinc IDE:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Remove support for the old binary storage format of projects. These
must be opened and re-saved with version 2.4.3 to remain compatible.
- Include experimental CP-profiler through the \*MiniZinc\* > \*Profile
search\* option for supported solvers.
- Redesign the solver configuration window.
- Use parameter configuration files rather than passing command-line
options directly.
- Show solver configurations and checkers in their own sections in the
project explorer.
- Allow multiselection in the project explorer for running particular
sets of files.
- Allow MiniZinc to manage subprocesses by itself.
- Allow non-privileged installs of the IDE on Windows.
- Correctly remove files from old installations of the IDE on Windows.
- Enable scroll bars in the preferences dialog to allow for low
resolution displays.
- Prompt to save modified files before performing MOOC submissions or
running models.
- Fix infinite recursion when a model file for a MOOC submission
doesn't exist.
- Use --output-mode checker for MOOC solution submission where
supported.
- Fully support unicode on Windows.
Minor changes:
^^^^^^^^^^^^^^
- Clean up code base and format using clang-format and clang-tidy.
- Update WebAssembly build for new versions of emscripten.
- Support --cp-profiler option to activate search profiler for IDE.
- Add --solver-json to output single solver config as JSON.
- Coerce JSON arrays to match the MiniZinc TypeInst.
- Add more informative README file.
- Split shared MIP cpp code into seperate CMake object target.
- Compile with POSITION_INDEPENDENT_CODE targets by default.
- Change ASTString to use String Interning.
- Add included_files output to model interface.
- Update Bison parsers to be compatible with Bison 3.7.
- Allow annotating enum declarations.
- Add support for --c_d and --a_d options to set recomputation
commit/adaption distance for Gecode presolver.
- Place float_set_in in a version redefinition documentation group.
- Place int_pow_fixed into a version redefinitions group.
- Move set_in(var int, set of int) to the Integer FlatZinc Builtins.
- Make "show" display contents of arrays rather than array identifiers
if the array is var
- Add support for checking statistics after solving has finished.
- Include preferences set by IDE repository.
- Add has_ann(var, ann) annotation introspection builtin.
- Use reverse mapped version for output if FlatZinc contains an aliased
variable.
- Remove NDEBUG flag from the compile flags added by CPLEX and Gurobi.
- Use integer variables in decomposition for array_int_element,
array_var_int_element, array_int_minimum, and array_int_maximum.
- More preprocessing for pow(int, int).
- Add is_same builtin.
- Add multiobjective annotation for Gurobi and Yuck (in
std/experimental.mzn).
- Add --output-mode checker, which outputs exactly the variables that
are required for a given solution checker.
- Improve propagation of annotations, especially for redefined forall,
exists, clause, xor
- Make omitting RHS from output_only variable a type error.
- Add support for var set comprehensions
- Make sets inside set literals a type error (rather than evaluation
error).
- Aggregate bool_not into exists/clause, use bool_not(e) for
clause([],[e]) expressions
- Cleanup the common-subexpression elimination table.
- Generate bool_not calls (instead of bool_eq_reif) and add both "x=not
y" and "y=not x" into the CSE map, to avoid double negations.
- Add arg_max and arg_min builtins for boolean arrays.
- Remove -O flag from ozn file naming.
- Allow var items in checkers to be omitted from the model.
- Add builtins for binary operators that have a var redefinition.
- When an integer or bool variable has a singleton domain, use the
value. This enables more overloading to par functions.
- Check if domain becomes empty when binding variable to value,
avoiding empty domains (such as 1..0) in FlatZinc.
- Ignore unknown JSON data items instead of throwing an error.
- Add trace_logstream and logstream_to_string builtins. These can be
used for writing model checkers/graders, but also for general
logging.
- Clean up CMake configuration
- Allow any installed solver to be used with the test suite, add
ability to test for expected ozn output.
.. _bug-fixes-1:
Bug fixes:
^^^^^^^^^^
- Fix error message for type errors in domains that are integer
literals (:bugref:`408`).
- Fix comprehensions over option types, which could cause crashes and
incorrect flattening (:bugref:`407`).
- Fix the usage count of annotations added using the annotate function
- Flatten "in" expressions in comprehensions when required.
- Check if operator is built-in after evaluating arguments, to make
sure it is rewritten into the correct predicate.
- Use dom(x) instead of lb(x)..ub(x) for opt int.
- Use eval_par to compute bounds for par expressions since they might
be opt.
- Use library defined operators where available.
- Fix -O flag parsing for optimisation level.
- Fix par set inequality calculation.
- Flatten domain expressions that contain variables.
- Catch ResultUndefined when flattening an array with an undefined
expression in a generator
- Fix source paths in MD5 generation scripts.
- Fix crash when reporting undefined result in assignment generator.
- Only add coercion for normal generators, not for assignment
generators.
- Check output var status on actual item being removed.
- Include absolute path instead of filename in multipass processing.
- Coerce comprehension generators if necessary, so that slicing
notation can be used there.
- Fix copying of comprehensions with followIds.
- Fix the method signature of printStatistics for Geas.
- Ensure the definition of reverse mappers are copied into the output
model.
- Print solns2out statistics to stdout to comply with MiniZinc spec.
- Minor doc-fix for global_cardinality_closed.
- Make statistics output comply with MiniZinc spec.
- Fix reverse function to work with empty arrays
- Fix the coercion of boolean sum in aggregation.
- Remove eval_par on var expressions in show builtin.
- Fix the table construction for the Geas solver interface
- Fixed wrong sign in Boolean linear constraints in Geas solver
interface.
- Fix istrue and isfalse by using flat_cv_exp if necessary.
- Fix the excess flattening of items marked for removal.
- Do not add newline to output when killing FlatZinc solver process,
since this may be in the middle of a line
- Fix typo in loop for Geas solver instance.
- Don't call doAddVars when there are no variables, fixing a crash in
MIP solvers for empty models.
- Do not copy type of lhs onto rhs when parsing solutions. This tagged
some literals as cv(), which broke the evaluation.
- Fix flattening of all par set literals.
- Fix error macro to be compatible with newer versions of Bison (:bugref:`389`).
- Fix printing of if-then-else expressions without an else branch.
- Fix allowed solvers option in test suite.
- Make bind only create an int_eq constraint if a variable has a
reverse mapper.
- Fix automatic coercions to keep cv type attribute of their argument
(:bugref:`387`).
- Fix copying of output_only variables to the output model.
- Only print checker output for unique solutions.
- Fix rewriting of lin_exp into int/float_lin_eq.
- Fix flattening of calls and let expressions that have par type but
contain var expressions.
- Use eval_bool instead of eval_par for boolean evaluation.
- Remove the direct assignment to a domain if it has a reverse mapper.
- Fix arg_max and arg_min for array index sets not starting at 1.
- Add missing set_superset_reif FlatZinc predicate.
- Fix counting of non-fixed variables in Boolean constraints. Could
previously lead to incorrect simplifications.
- Enable eval_floatset for SetLits that contain an IntSetVal. This is
used during chain compression and could previously result in
incorrect domains.
- Fix bugs in chain compressor caused by modifying multimaps while
iterating over them.
- Fix crash when cleaning up after running builtin Gecode.
- MIPdomains: don't assume equations have no literals.
- Only fix domain after flattening bool_eq.
- Only return singleton domain as value for non-optional variables.
- When evaluating identifier that is bound to a fixed value, check that
the value is inside the domain to correctly detect model
inconsistency.
- Add missing assert and trace builtin overloads.
- Flatten expressions that may contain variables in par where clauses.
- Fix segmentation fault when the declaration of an array is passed to
setComputedDomains with the -g parameter.
- Consider single-valued domain variables to be fixed
- Add missing definition of to_enum for arrays of sets.
- Evaluate partiality of arguments even if call was already in CSE
table (:bugref:`374`).
.. _v2.4.3:
`Version 2.4.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.4.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 4 March 2020)
.. _changes-1:
Changes:
^^^^^^^^
- Enable CPLEX 12.10.
- Add checker output to generated output items.
- Short-circuit evaluation for mixed par/var conjunctions,
disjunctions, and clauses.
- Add inverse_in_range global.
- Pretty printing set ranges now uses union instead of ++ to be
compatible with DZN.
- Add array2set for par bool and float arrays
- The \_objective variable is no longer added to FlatZinc input files.
- JSON representation of sets with ranges can now be parsed (previously
they could only be output).
- Check index sets to arguments of global_cardinality_low_up.
- Xpress and SCIP are not compiled as plugins and no longer require
recompilation to enable.
- If-then-else for opt are no longer written in terms of the non-opt
version, allowing them to return absent.
.. _bug-fixes-2:
Bug fixes:
^^^^^^^^^^
- Fix checking of domains and index sets in par arrays inside lets.
- Remove duplicate call stack items to improve error messages.
- Ignore absent values when computing domains.
- Generate call for actual binary operator (after optimising double
negation). Fixes :bugref:`364`.
- Fix non-associative operators on optional values.
- Only output optional parameters in model interface if they were
undefined (rather than assigned to <>).
- Fix some issues with evaluating par opt expressions.
- Make solution checkers work for multi-dimensional arrays and arrays
with enum index sets
- Fix Boolean aggregation for expressions that are defined recursively.
- Use correct index set for nosets set_lt and similar (partial fix for
:bugref:`369`)
- Fix coercion of sets to arrays (previously, coercing a set of X to an
array of X to an array of Y did not work correctly).
- Fix infinite loop when printing infinite set range
- Add assertion so that array2set can only be used for arrays with
bounds (:bugref:`370`, :bugref:`371`).
- Fix typing and pretty printing of par bool sets.
- Use output_array dims for output vars in FlatZinc files (previously,
a type-checker error would occur when running a solver through
MiniZinc on a FlatZinc file with multidimensional arrays).
- The Xpress backend was made functional again.
- Fix segmentation fault in output_only type-checking.
- Compute correct array enum type for array slices (:bugref:`372`).
- Fix behaviour of using undefined expressions in var comprehensions
guarded against by where clauses (previously, these undefined
expressions would bubble up regardless of the where clause,
constraining the model).
- IDE: Disable menu items that don't make sense when all tabs are
closed, fix behaviour of stop button when all tabs closed (fixes
several crashes).
- IDE: Add x86_64 suffix to linux package name (:idebugref:`96`).
- IDE: Make boolean extra solver options with a default of true
functional.
- IDE: Only read linter results if it exited normally (:idebugref:`97`).
- IDE: Resolve paths in \_mooc to paths (allowing submission of models
in subdirectories).
.. _v2.4.2:
`Version 2.4.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.4.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 10 January 2020)
.. _changes-2:
Changes:
^^^^^^^^
- The test suite is now integrated into the continuous integration
system.
.. _bug-fixes-3:
Bug fixes:
^^^^^^^^^^
- Fix flattening of negated disjunctions (:bugref:`359`).
- Fix simplification of Boolean constraints (repeated simplification
could sometimes crash).
- Fix memory management during flattening of conditionals (:bugref:`358`).
- Fix type inference for rewriting of sums into count constraints, and
only apply the rewriting for var type-insts.
- Fix handling of solution checkers (these used to produce spurious
error messages).
- IDE: Fix syntax highlighting of keywords, and add syntax highlighting
for interpolated strings.
- IDE: Redraw when switching to/from dark mode, and fix dark mode
header colours.
- IDE: Fix "Select all" menu item.
.. _v2.4.1:
`Version 2.4.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.4.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 20 December 2019)
.. _changes-3:
Changes:
^^^^^^^^
- Improve compiler optimisation for some linear, multiplication and
Boolean constraints.
- Improved translation of lex and all_equal constraints when the arrays
have no or only one variable.
- IDE: Display error message when submission to MOOC provider fails.
- IDE: Make "previous tab" and "next tab" actions cycle rather than
stop at first/last tab.
.. _bug-fixes-4:
Bug fixes:
^^^^^^^^^^
- Fixed regular expression constraint for expressions containing
negated character classes (^ operator).
- Fix element constraint in nosets.mzn library when set domains are not
contiguous.
- Correctly identify Windows paths starting with // or \\\\ as absolute
(this enables the parser to open files stored on network drives).
- Use set_in constraints (rather than int_in) for internal Gecode-based
presolver. This fixes some issues when compiling with -O3.
- The optimisation phase of the compiler now fully substitutes par bool
variables (these can be introduced into the FlatZinc during multipass
compilation). (:bugref:`357`)
- Fixed the reference counting for variables that are re-used in
multipass compilation. (:bugref:`357`)
- Remove incorrect error handling when parsing from strings rather than
files. Partially fixes (:bugref:`357`)
- Made the is_fixed builtin work for more types. (:bugref:`356`)
- Enable rewriting of sum(i in x)(i=c) op d and count(x,y) op z into
global counting constraints.
- Split up count global constraints into separate files for reified
versions.
- Use contiguous range for array index set in set_lt for nosets.mzn.
- Negate results of conditionals if required. (:bugref:`355`)
- Partiality of conditional needs to be translated in root context
(even if conditional itself is negated). (:bugref:`355`)
- Don't copy function into output again if it was already copied (and
made par) before. (:bugref:`323`)
- Define card function on var sets in terms of set_card FlatZinc
builtin.
- Don't set bounds for set variables in internal Gecode presolver.
- IDE: Fix shift left and shift right indentation behaviour when
selecting text backwards.
- IDE: Fix OpenSSL library in binary distribution to enable update
checks and submission to MOOCs again.
.. _v2.4.0:
`Version 2.4.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.4.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 13 December 2019)
.. _changes-4:
Changes:
^^^^^^^^
- The compiler now detects counting constraints in expressions such as
count(i in x)(i=3) <= 4 and rewrites them into global counting
constraints. This is now the preferred way to specify counting. The
atmost/atleast/exactly constraints on integer variables have been
deprecated, and versions of count predicates with par variables have
been added. FlatZinc solvers that supported atmost/atleast/exactly
should now support the corresponding fzn_count\_?_par predicates.
- The compiler now supports the command line option
--output-detailed-timing, which provides timing information for each
toplevel constraint item, or for each line of code when used in
conjunction with the --keep-paths option.
- The library now contains annotations for deprecated library
functions.
- A par version of the inverse function has been added (include
inverse_fn.mzn to use it).
- The common case of sums of optional variables is now handled more
efficiently. This case often arises from generator expressions with
variable where clauses.
- Added set_to_ranges built-ins to enable efficient iteration over
sets. These are used to implement set_in for float variables, which
was missing before.
- The Gurobi and CPLEX backends now support the --random-seed command
line option.
- The Gurobi and CPLEX backends now use nodefile for search trees
exceeding 500 MB (--nodefilestart can change this value and
--nodefiledir the folder.)
- The MIPDomains optimisations have been switched back on by default.
The optimisations have also been strengthened for some special cases.
- Without the MIPdomains postprocessing, linearisation of variable
domains with holes now uses set_in instead of individual not-equal
constraints, which may result in more compact FlatZinc.
- Linearisation of multiplication can now consider the exact domain of
a factor.
- The product functions have been made non-recursive in order to
support longer arrays.
- Bounds inference for results of if-then-else expressions has been
improved.
- Support for optional float variables has been added.
- The interfaces to CBC, CPLEX and Gurobi now report correctly that
they support verbose output during solving (so that the "verbose
solving" option is available from the MiniZinc IDE).
- IDE: Parse timing and statistics output produced by compiler, and
display as profiling information next to each line in the model.
- IDE: Enable run/compile action on data files. This automatically
selects the model file if there is only one, or presents a dialog for
selecting the model if there are multiple.
- IDE: Select first data file in parameter dialog if there was no
previous selection, and always focus parameter dialog.
- IDE: Highlight current line.
- IDE: Support .json as file extension for data files.
- IDE: Remember whether wrap around, case sensitivity and regular
expression was selected in find/replace dialog, pre-select the
find/replace text when find/replace widget is openend, and close
find/replace widget when ESC is pressed while editor has focus.
.. _bug-fixes-5:
Bug fixes:
^^^^^^^^^^
- Fixed output handling on Windows (output is now processed on the main
thread, so that exceptions thrown during output are printed
correctly, and memory management is thread safe).
- Fixed decomposition of reified mdd constraint, and strengthened
decompositions of mdd and cost_mdd.
- Fix handling of variable re-definitions (e.g. converting sets to
arrays of bools), which would previously sometimes result in
variables being removed although they were required for output, or
the reverse mapping function not being available in the output model.
- Include regular.mzn from regular_regexp.mzn. (:bugref:`351`)
- Inlining of function calls has been moved from the flattener into the
type checker, and it now is more strict about which functions can be
inlined in order to avoid overloading issues.
- Updated fzn_count_{neq,leq,lt,geq,gt},
fzn_global_cardinality_low_up{,_reif} to use use the count_eq
predicate. (:bugref:`334`, :bugref:`335`)
- Fixed the documentation for several constraints, which did not
display as bullet point lists as intended.
- Copy function/predicate declarations into FlatZinc without
annotations, since most FlatZinc parsers would not expect annotations
and fail to parse.
- Process right hand side of par VarDecls to make sure any identifiers
it uses are copied into the output model. Fixes :bugref:`336`.
- Fix type checking for conditionals where the else branch has enum
type but the then branch has int type.
- Make the deopt function return correct enum instead of int type.
- Fix for path handling when 'needRangeDomains' is active. Avoids
infinite recursion in the compiler.
- Fix race condition in temporary file generator for Windows. (:bugref:`349`)
- Register fzn\_ names for Gecode presolver. Fixes command line flags
-O3 and above.
- Fix par evaluation of float and bool set comprehensions.
- Fix documentation of array_bool_xor. Fixes :docbugref:`13`.
- Fix the round() built-in to correctly round negative numbers
- Fix computation of intersection of domains when assigning an array to
an array variable. Fixes :bugref:`310`.
- Add defines_var annotations for functional global constraints. Fixes
:bugref:`345`.
- Add set_lt_reif/set_le_reif to flatzinc builtins library. Fixes :bugref:`338`.
- Clarify set order based on spec. Fixes :bugref:`339`.
- Don't return already removed VarDecl objects from CSE. Fixes :bugref:`346`.
- Do not post y!=0 constraint if 0 is not in the domain (workaround for
a limitation in the handling of basic float constraints). Fixes :bugref:`344`.
- Help type checker by making deopt/occurs argument types explicit.
Fixes :bugref:`331`.
- Fix transfer of domains when aliasing one variable to another
- MIP: fix for aux_float_ne_if_1
- MIP: int_(eq/ne)_imp: don't force eq_encode without MIPdomains
- Fix a typo in the definition of fzn_at_least_int{,_reif}
- Fix dependency problem in the gecode_presolver table specification
- Add seq_precede_chain.mzn to globals.mzn. Fixes :bugref:`332`.
- Don't assign right hand side of set variables if domain is singleton.
Fixes :bugref:`330`.
- Don't invalidate float bound just because an expression contains an
integer.
- Fix copying of let expressions.
- Put lexer and parser helper functions into MiniZinc namespace to
avoid linker issues. Fixes :bugref:`325`.
- Reset array index sets defined in lets inside recursive function
calls.
- Arrays copied into output model need to have par type-inst. Fixes :bugref:`322`.
- Don't complain when same function is registered twice. Fixes :bugref:`323`.
- Fix partiality handling of if-then-else expressions.
- Track whether variable is used in an output array before making
decision to compress implication chains. Fixes :bugref:`318`.
- IDE: Fix dark mode detection on macOS 10.15, improve dark mode colors
a bit and fixed some dark mode bugs.
- IDE: Make background compilation of a model (used to display syntax
and type errors) a bit more stable.
- IDE: Avoid infinite loop in wrap around replace all.
- IDE: Fix memory management for HTML visualisation windows, and resize
docked HTML visualisation widgets to take up equal space.
.. _v2.3.2:
`Version 2.3.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.3.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 12 September 2019)
.. _changes-5:
Changes:
^^^^^^^^
- Add warm starts and subtour cuts to CBC interface.
- Add documentation and assertion requiring that mdds are
deterministic, and add nondeterministic variant of mdd constraint.
- Add -s to the standard flags supported by MIP interfaces.
- Add flag --output-output-item to include user specified output item
in the formatted JSON and DZN output.
.. _bug-fixes-6:
Bug fixes:
^^^^^^^^^^
- Fix a bug that could leave unused variables in the resulting
FlatZinc.
- bounded_dpath should rewrite to fzn_bounded_dpath. Fixes :bugref:`300`.
- Fix definition of sum_set.
- Check if overloaded function required for output. Fixes :bugref:`303`.
- Move regular constraint with set argument to its own file.
- Flatten assignment generators if necessary.
- Simplify fzn_value_precede_chain_int and avoid use of element
predicate. Fixes :bugref:`307`.
- Only initialise par opt variables as absent if they are not arrays.
- Fix the description of the neural_net predicate.
- Fix regular constraint with regular expressions (stopped working in
2.3.0).
- Fix the model interface output to include the same variables as the
generated output statement.
- Fix CSE for removed variable declarations. Could lead to reified
constraints not being compiled correctly when the control variable
got fixed to true.
.. _v2.3.1:
`Version 2.3.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.3.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 10 July 2019)
.. _bug-fixes-7:
Bug fixes:
^^^^^^^^^^
- Report error when trying to assign an array literal to an array
variable with incompatible index set.
- Fix partial evaluation of expressions, so that only par expressions
are fully evaluated. Fixes :bugref:`298`.
- Remove carriage returns when reading piped solver output on Windows.
- Canonicalize paths of executables to avoid spurious warnings about
multiple executables for the same solver.
- Add implementations for != on arrays.
- Compute quotient bounds before decomposition of int_div in
linearisation library.
- Propagate domain constraints on variables that are aliased
(previously domain constraints could get lost).
- Propagate domain constraints from left-hand-side to right-hand-side
in variable assignments.
- piecewise-linear: reuse decomposition for X when only Y-values
change.
- nosets: add set_in_imp(var set) and simplify set_in_reif, set_eq(var
set, var set).
- linearisation: improved compilation of set_in constraints.
- MiniZinc IDE: Remove incorrect symbolic link and fix qt.conf for some
bundled distributions.
- MiniZinc IDE: Fix check for availability of dark mode on older
versions of macOS.
- MiniZinc IDE: Fix a typo in the cheat sheet.
- MiniZinc IDE: Provide more robust solution for checking the model
parameters, which will get rid of some "internal error" messages.
- MiniZinc IDE: Always show directory selection dialog in the Windows
installer. Addresses :idebugref:`89`.
- MiniZinc IDE: Improved the configuration files for some bundled
solvers, provides nicer configuration interface.
.. _v2.3.0:
`Version 2.3.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.3.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 26 June 2019)
Major changes:
^^^^^^^^^^^^^^
- The compiler can now generate FlatZinc with half reified constraints.
See
https://www.minizinc.org/doc-2.3.0/en/fzn-spec.html#reified-and-half-reified-predicates
for more details.
- The standard library of global constraints has been reorganised,
making it easier for solvers to override just the bits that they
support. See
https://www.minizinc.org/doc-2.3.0/en/fzn-spec.html#solver-specific-libraries
for more details.
- There is experimental support for solvers that can read AMPL NL
files. See
https://www.minizinc.org/doc-2.3.0/en/solvers.html#non-linear-solvers
for details.
.. _minor-changes-1:
Minor changes:
^^^^^^^^^^^^^^
- The JSON input and output has been improved, with full support for
enums and optional types.
- A new compiler option -g has been added, which turns variable domain
changes into constraints (useful for debugging models).
- The SCIP interface has been updated, with support for indicator
constraints, bounds disjunctions and a native cumulative constraint.
- Error reporting has been improved, with location information
available for errors in par float expressions as well as include
items.
- The timeout command line parameter now also applies to compilation
itself (:bugref:`281`).
- Operations on par float values are now checked for overflows.
- The arg_min/arg_max constraints have been improved, with new special
versions for Boolean variables, and a better standard decomposition.
- if-then-else-endif expressions with variable conditions are now
compiled to a predicate call (rather than handled by the compiler),
which enables solver libraries to implement these as native
constraints or special decompositions.
- Dividing a variable by a constant is now translated as a
multiplication (to keep the constraints linear).
- A new piecewise_linear predicate has been added to the library to
make it easier to specify piecewise linear constraints.
- Print number of solutions as mzn-stat after solving (:bugref:`244`).
- Make search annotations work for arbitrary array index sets.
- MiniZinc IDE: The IDE will now check MiniZinc code for syntax and
type errors, and the editor performs simple code completion for
MiniZinc keywords
- MiniZinc IDE: The find/replace dialog is now an inline widget and
supports incremental search.
- MiniZinc IDE: Now supports dark mode on macOS.
- MiniZinc IDE: Add support for extra solver flags (parsed from solver
configuration).
.. _bug-fixes-8:
Bug fixes:
^^^^^^^^^^
- Translate let expressions that contain constraints or variables as
var type-inst. Fixes :bugref:`263`.
- Fix JSON array parsing by counting elements instead of commas.
- Fix parsing of the -p flag (:bugref:`271`).
- Fix type checking for array declarations with single enum type inst
identifier. E.g. array[$$T] of $U previously matched any
multi-dimensional array, and now only matches one-dimensional arrays
with any enum index set.
- Fix computation of function return type when using type inst
variables (:bugref:`272`).
- Evaluate each variable declaration only once in a par let expression.
- Check domain constraints on variable declarations in par let
expressions.
- Try .exe/.bat on windows when using (constructed) absolute paths.
- Fix array slicing to support empty slices (:bugref:`275`).
- Fix a bug in the parser that could cause crashes on certain syntax
errors.
- Fix the type of bool2int for arrays.
- Initialise counter for introduced variable ids based on names in
original model. This avoids reusing variable names if the user model
contains names such as X_INTRODUCED_0\_.
- Fix compilation of nested clause/exist constraints, and improve
handling of negation. Tries to use primitive negation instead of
creating negated constraints. Should help with half-reification by
creating more positive contexts.
- Reorder fields in basic data structures to reduce padding on 64 bit
platforms (improved memory footprint).
- Perform type coercion after desugaring array slicing.
- Translate arguments to bool2int, exists, forall in positive context
even if those functions are redefined.
- Don't evaluate par array literals twice (inefficient, and can lead to
incorrect results when using random number generators).
- Terminate child processes when minizinc process is terminated by
signal.
- Fix function return value array index check for empty arrays (:bugref:`286`).
- Fix translation of constant false where clause in array
comprehension.
- Report error when json multi-dimensional array is not rectangular.
- Check index sets of function arguments (:bugref:`273`).
- Ignore partiality variables from CSE table when compiling \_reif and
\_imp predicates (:bugref:`269`).
- Flatten comprehensions with variable generators or where conditions
before evaluating any par functions on them (:bugref:`259`).
- Add missing redefinitions of basic operators and search annotations
for optional integers.
- Resolve filenames given on the command line relative to working
directory, and warn if file in working directory has same name as
included file from the library. Fixes :bugref:`276`.
- Update nosets library with a valid redefinition of set_less over
booleans.
- Fix translation of showJSON (:bugref:`294`).
- Only apply set2array coercion for supported types, otherwise report
error (:bugref:`295`).
- Improve special case reasoning for abs on strictly negative
variables.
- Add bounds for floating point min/max result in the standard library.
- MiniZinc IDE: Ensure cursor is visible (editor scrolls to cursor
position) when pressing tab or enter. Fixes :idebugref:`71` :idebugref:`71`.
- MiniZinc IDE: Re-dock configuration editor when closing un-docked
window.
- MiniZinc IDE: Handle quotes when parsing additional solver command
line arguments. Fixes :idebugref:`77`.
- MiniZinc IDE: Add workaround for the missing libnss requirements.
Fixes :idebugref:`79`.
- MiniZinc IDE: Allow spaces in $DIR in MiniZincIDE.sh Fixes :idebugref:`81`.
.. _v2.2.3:
`Version 2.2.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.2.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 31 October 2018)
.. _bug-fixes-9:
Bug fixes:
^^^^^^^^^^
- Fix some typos in the library documentation.
- Fix solution checking.
- Fix line numbers in parsed locations on 64 bit platforms.
- Fix bounds computation for calls.
- Fix translation of var where clauses with more than 3 par components.
- IDE: Only run solution checker if it is enabled in the solver
configuration dialog.
.. _v2.2.2:
`Version 2.2.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.2.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 26 October 2018)
.. _changes-6:
Changes:
^^^^^^^^
- Some changes to the optimisation phase of the compiler, to take into
account more variables and constraints.
- Preliminary support for MIP cuts based on graph algorithms (only
available when compiled with boost C++ libraries; not part of the
binary distribution).
- Set Release as default build type when nothing is specified (for
CMake platforms that do not support multiple build types, like
Makefiles).
- Add builtins outputJSON() and outputJSONParameters() for creating an
array of strings that capture the output and parameters of the model
as JSON.
- On Linux and macOS, add /usr/share/minizinc/solvers and
/usr/local/share/minizinc/solvers to list of paths where solver
configuration files can be placed.
- Add OSICBC_INCLUDEDIR and OSICBC_LIBDIR cmake flags.
- Output search paths for solver configurations using --solvers command
line option.
- Add support for Gurobi 8.1
- Support parsing from stdin and files at the same time.
- IDE: Add line/column display in status bar.
- IDE: Optional parameters don't have to be defined in input dialog.
- IDE: Provide mzn-json-init / mzn-json-init-end handlers to initialise
HTML window before first solution is produced.
- IDE: Add version information and minimum system version into
Info.plist on macOS.
- IDE: Manage multiple open visualisation windows, and implement
re-solve function that can be initiated from a visualisation.
- Binary bundle: Gecode updated to version 6.1.0, Chuffed updated to
version 0.10.3
.. _bug-fixes-10:
Bug fixes:
^^^^^^^^^^
- Fix crash when flattening top-level array comprehensions with var
where clauses.
- Support input files with more than 1M lines.
- Special case handling for array literals in top-level foralls:
flatten in root context.
- Fix translation of if-then-else for branches with undefined right
hand sides.
- Only propagate defines_var annotation to the variable that's actually
being defined (not others that arise from the same decomposition).
- Don't flatten arguments of predicates like
symmetry_breaking_constraint.
- Remove output_var and output_array annotations from user models
(these could cause crashes).
- Fix precedences for weak operators (~+, ~-, ~=, ~*).
- Fix min and max for opt var arrays to work when the bounds of the
arrays are unknown.
- Fix a bug in bounds computations for function calls.
- Add missing superset FlatZinc builtin.
- Fix includes in file values.hh for some platforms.
- Fix a garbage collection issue when printing solutions.
- Deal with the case that a variable that's required for output is
assigned to a par variable.
- Throw type error when an array has only absent values.
- Flatten all arrays in FlatZinc, also those coming from functional
definitions.
- Use list of strings as mzn_solver_path entry in the preferences json
file.
- Fix crash when output variable is defined using recursive function
- IDE: Fix race condition in constructor of HTMLWindow.
.. _v2.2.1:
`Version 2.2.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.2.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 6 September 2018)
.. _changes-7:
Changes:
^^^^^^^^
- all_different, all_equal, {int,set,float,bool}_search now accept
multi-dimensional arrays.
- Add exponentiation operator (^).
- Improve layout of generated library documentation for some
constraints.
- Relax typechecking to allow assignment of empty array ([]) to
multi-dimensional array variables. This is required to make empty
arrays work in JSON data files.
- Enumerated types can now be initialised using lists of strings. This
enables enumerated type support in JSON.
.. _bug-fixes-11:
Bug fixes:
^^^^^^^^^^
- Cumulative constraint for linear solvers now accepts empty arrays.
- show2d/show3d functions now do not add quotes around array elements
and work for empty arrays.
- Add support for slicing of arrays with enumerated types.
- Fix slicing of 1d arrays.
- Fix bounds computation for float variable declarations.
- When FlatZinc solver is terminated due to a timeout, do not report
this as an error.
- Fix pretty-printing of multi-dimensional arrays where dimensions
other than the first one are empty.
- Add support for where clauses on generator assignment expressions.
- MiniZinc IDE: Improve dark mode by changing line numbers to dark
background.
- MiniZinc IDE: Make parameter input dialog scrollable.
- MiniZinc IDE: Fix solution compression limit, and output one solution
per block of compressed solutions.
.. _v2.2.0:
`Version 2.2.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.2.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 24 August 2018)
This is a major release of MiniZinc, introducing many new features and
improvements.
Major new features:
^^^^^^^^^^^^^^^^^^^
- **New minizinc command line tool**
Previous releases contained a ``minizinc`` command line tool that was
not much more than a simple script that could execute the compiler,
solver and output processor. The ``minizinc`` executable in version
2.2.0 is now the main frontend to compilation and solving and
integrates all of the functionality. It has access to all installed
MiniZinc solvers (both internal solvers and those interfaced through
FlatZinc files), and can automatically select the required options
(e.g., to include the solver-specific MiniZinc globals library).
You can get a list of available solvers using the ``--solvers``
command line option, and select a solver using ``--solver``. The
``minizinc`` executable can now also be used as a replacement for
``mzn2fzn`` (using ``-c``) and ``solns2out`` (using ``--ozn-file``).
- **Multi-pass compilation**
The compiler can now perform multiple passes in order to improve the
target FlatZinc code. This can be controlled using the ``-O`` command
line flags (``-O0`` to ``-O4``). Multi-pass compilation is
particularly useful when the target solver requires sophisticated
decomposition of global constraints (such as for MIP solvers).
- **Solution checking**
You can now supply an additional model that will be used to check
each solution produced by your main model. This can be useful for
teaching MiniZinc (to give students automatic feedback) and if your
main model is very complex but checking that a solution is correct is
easy.
- **MIP solvers:** support for FICO Xpress, and loading IBM ILOG CPLEX
as a plugin
We have added support for FICO Xpress (this requires compiling
MiniZinc from sources). CPLEX can now be loaded as a plugin, which
means that the binary distribution of MiniZinc has built-in CPLEX
support (just bring your own CPLEX dll).
- **Language extensions**
The MiniZinc language has been extended with two new features.
- Array slicing introduces syntax to conveniently select rows,
columns or entire slices of arrays. For example, ``x[3,..]``
selects the third row of array ``x``, while ``x[..,4]`` selects
the fourth column, and ``x[3..5,2..7]`` selects a slice of rows 3
to 5 and columns 2 to 7.
- Generator expressions can now contain multiple where clauses, e.g.
``forall (i in S where foo(i), j in T where i < j) (bar(i,j))``
This enables more efficient compilation compared to evaluating all
where clauses in the inner-most generator. In addition to
iteration (``i in S``), generators can now contain assignment
expressions (``j=foo(i)``). This enables intermediate definitions
that can then be used in further generators.
Changes and minor features:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- The value of the objective can now be added automatically to the
output using the ``--output-objective`` command line option. Using
``--output-mode dzn``, this allows automatic output of all the free
variables of the model.
- Models that do not contain a solve item are now accepted and treated
as ``solve satisfy``
- Support for naming constraints and expressions (using ``::"name"``
syntax)
- Error messages have been improved, they now contain more accurate
location information.
- The compiler can be instructed to accept multiple assignments to the
same parameter (as long as they are all identical), using the
``--allow-multiple-assignments`` command line option.
- Annotations for supplying warm start values have been added to the
standard library (currently supported by the MIP solvers Gurobi and
IBM ILOG CPLEX).
- The compiler now accepts multiple .mzn files as input.
- Memory consumption and garbage collection performance has been
improved.
- The conditional expression has been extended to support
``if <cond> then <exp> endif`` (where ``<exp>`` is bool)
- Decomposition of one variable type to another (e.g. set into array of
bool) has been improved.
- MIP solvers Gurobi and IBM ILOG CPLEX use node files when over 3GB
working memory
- Gurobi and CPLEX support the MIPfocus parameter
- Gurobi supports MiniZinc search annotations by setting fixed
branching priorities
.. _bug-fixes-12:
Bug fixes:
^^^^^^^^^^
Consult the bug tracker at
https://github.com/MiniZinc/libminizinc/issues
.. _v2.1.7:
`Version 2.1.7 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.7>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 10 January 2018)
.. _changes-8:
Changes:
^^^^^^^^
- Improved linearisation for some element constraints.
- Improve performance of optimisation phase by using a queue instead of
a stack.
- Add --dll option for Gurobi backend to specify the Gurobi DLL to
load.
- Add more defines_var annotations.
.. _bug-fixes-13:
Bug fixes:
^^^^^^^^^^
- Fix generation of variable names in output model (sometimes could
contain duplicates).
- Fix enum type inference for array literals with empty sets as their
first arguments. Fixes :bugref:`180`.
- Fix incorrect simplification of float domain constraints. Fixes :bugref:`159`.
- Fix ceil builtin for float values.
- Add superset decomposition for solvers that do not support set
variables.
- Fix three bugs in the garbage collector.
- Fix a bug in flattening that would create duplicate variables when a
variable declaration referred to another one in its type-inst.
- Fix a crash in flattening of partial functions. Fixes :bugref:`187`.
- Add missing deopt builtins for all par types.
- Fix output for arrays of sets of enums.
- Define more functions on par opt types. Fixes :bugref:`188`.
- Fix type checker to accept arrays of opt set values.
- Support printing of opt enum types. Fixes :bugref:`189`.
- Fix evaluation of comprehensions in recursive functions.
- Fix output of Gurobi backend when used in conjunction with solns2out.
- Fix pthread linking for mzn-cbc.
- Catch type error when set literal is declared that contains another
set.
IDE changes and bug fixes:
^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fix problem where files with a . in the filename could not be run.
- Fix font settings (were not saved reliably on some platforms).
- Enable generic interface for submitting assignments (not just to
Coursera).
- Fix output handling for solvers that do not run mzn2fzn.
- Fix hidden solution display when there are exactly as many solutions
as the configured threshold for hiding solutions.
- Add configuration option to print timing information for each
solution.
.. _v2.1.6:
`Version 2.1.6 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.6>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 22 September 2017)
.. _bug-fixes-14:
Bug fixes:
^^^^^^^^^^
- Fully evaluate parameters before binding formal arguments when
evaluating call expressions. Fixes :bugref:`177`.
- Fix incorrect simplification of Boolean constraints assigned to
variables that are assigned to false.
- Fix bug in flattening of linear equations that contain the same
variable on both sides.
- Fix un-trailing for let expressions, which could sometimes cause
incorrect code to be emitted when lets are evaluated in nested loops.
Fixes :bugref:`166`.
- Fix bug in JSON output of one-dimensional array literals.
- Fix unification of enum type-inst variables.
.. _v2.1.5:
`Version 2.1.5 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.5>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 17 May 2017)
.. _changes-9:
Changes:
^^^^^^^^
- Some improvements to the linearisation library.
- Make parser read multiple .mzn files correctly.
- Enable better bounds computation for array access expressions on
fixed arrays.
- Perform better constant folding during optimisation phase. Fixes :bugref:`155`.
- Don't rewrite pow function into multiplication in the case of power
of 2.
- Save some memory by making certain internal data structures more
compact.
- Improve source code location of identifiers in generator calls
(should give more precise error messages).
- Produce an error message when a comprehension attempts to iterate
over an infinite set.
- Produce better error messages for operations on infinite values
(previously some errors did not contain a source code location).
- Speed up garbage collection by pre-allocating some memory.
.. _bug-fixes-15:
Bug fixes:
^^^^^^^^^^
- Fix range check for float literals in arrays.
- Fix a bug where a constraint could be removed incorrectly. Fixes :bugref:`150`.
- Include variables for dzn and json output from all included models,
not just the main model. Fixes :bugref:`153`.
- Produce multi-dimensional arrays in json output. Fixes :bugref:`156` and :bugref:`157`.
- Remove incorrect closing bracket from json output. Fixes :bugref:`154`.
- Fix bounds computation of par int and float arrays.
- Don't allow var access to arrays of strings or annotations (since
that would require an element constraint and var string / var ann
types).
- Introduce int2float constraints where necessary for some
linearisations.
.. _v2.1.4:
`Version 2.1.4 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.4>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 13 March 2017)
.. _changes-10:
Changes:
^^^^^^^^
- Add warning for MIP solvers that do not support -a option for
satisfaction problems.
- Print introduced variable names with additional underscore to make
debugging FlatZinc easier. Fixes :bugref:`147`.
- Add support for pow function in linearisation library.
- Add support for parallel solving with CBC.
- Flatten top-level conjunctions in the order defined in the model.
.. _bug-fixes-16:
Bug fixes:
^^^^^^^^^^
- Fix major race condition that would crash the IDE when it didn't
detect that a solver process had finished.
- Improve HTML output in the IDE by making sure every line is
terminated by a newline.
- Fix a garbage collection bug that could cause dangling pointers when
expressions were copied.
- Fix type checker to allow empty arrays to be assigned to variables
declared as arrays of enums.
- Fix infeasibility check in MIP translation for some inequality
constraints.
- Improved defines_var annotations for reified xor constraints. Fixes
:bugref:`146`.
- Fix output of empty integer sets and deal with empty arrays in output
models.
- Fix MIP translation when boolean variables were removed due to
aliasing.
- Improve corner cases for linearisation of cumulative constraint.
- Properly report undefinedness in par bool expressions.
- Enable some additional constant folding during flattening. Fixes :bugref:`149`.
.. _v2.1.3:
`Version 2.1.3 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.3>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 6 February 2017)
.. _changes-11:
Changes:
^^^^^^^^
- Remove more internal annotations from the generated FlatZinc.
- Detect failure earlier if optimisation pass leads to fixing of
variables outside their domains.
.. _bug-fixes-17:
Bug fixes:
^^^^^^^^^^
- Fix CBC backend to correctly print UNSAT message for models where the
compiler already detected unsatisfiability, and print solution
separators even where there is no other output.
- Add missing var_dom function for arrays of optional integer
variables. Fixes :bugref:`133`.
- Fix aliasing for optional integer variables. Fixes :bugref:`132`.
- Remove all annotations from output model.
- Fix computation of return type for functions that return arrays of
enums.
- Don't output newline if user-defined solution separator or status
message is empty
- Fix return type computation for functions where return type contains
enums.
- Check finiteness of float literals and bounds. Fixes :bugref:`138`.
- More checks for function return values. Fixes :bugref:`136`.
- Fix var int comprehensions (now triggers error message instead of
crash for var set of int comprehensions). Fixes :bugref:`135`.
- Fix output of variables with quoted identifiers.
- Fix flattening of let expressions that contain variables with
undefined (i.e., partial) right hand side.
- Make printing of error messages to stdout or stderr more consistent
across executables.
- Fix type checking of initialisation of enum types.
- Improve error messages for array access and index set errors. Fixes
:bugref:`131`.
- Fix definition of multi-dimensional element constraints to impose
correct bounds on index variables.
- Fix binding analysis during type checking, which did not handle the
shadowing of top-level declarations by comprehension generators
correctly. Fixes :bugref:`129`.
.. _v2.1.2:
`Version 2.1.2 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.2>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 20 December 2016)
.. _bug-fixes-18:
Bug fixes:
^^^^^^^^^^
- Fix a bug in the type checking for generators that iterate over
arrays of enums.
- Fix a bug in the output handling of arrays of enums.
- Fix handling of multiple output items (only the last item was
compiled, now the concatenation is used for output as defined in the
specification).
.. _v2.1.1:
`Version 2.1.1 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.1>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 14 December 2016)
.. _changes-12:
Changes:
^^^^^^^^
- Add missing min/max functions for set variables. Can be redefined to
solver builtins using the new redefinitions-2.1.1.mzn library file.
- Add support for option type expressions as objective functions.
- Automatically coerce arrays constructed using ++ to any enum index
set (in addition to array literals and comprehensions).
.. _bug-fixes-19:
Bug fixes:
^^^^^^^^^^
- Include cmath header to fix compilation issues with some compilers.
Fixes :bugref:`125`.
- Fix a garbage collection bug in the type checking for enumerated
types that would sometimes lead to crashes or incorrect error
messages.
- Fix type checking of comprehensions that involve enumerated types.
- Fix bounds computation for var sets of enumerated types.
- Support anon_enum function as documented.
.. _v2.1.0:
`Version 2.1.0 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.1.0>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 17 November 2016)
.. _changes-13:
Changes:
^^^^^^^^
- MiniZinc now supports enumerated types.
- Solvers can be interfaced directly to the MiniZinc library, and
MiniZinc comes with direct support for the CBC, Gurobi and CPLEX MIP
solvers.
- The linearisation library has been updated, resulting in much better
FlatZinc being generated for MIP solvers.
- Data files can be in JSON format, and MiniZinc can produce JSON
output (using the --output-mode command line option).
- Variables can be annotated as ::add_to_output instead of writing an
output item.
- The compiler can output information about the parameters and output
variables of a model (using the --model-interface-only option).
- Floats are handled better (detecting infinities and handling sets of
floats).
- Bounds can be computed for more expressions (instead of failing with
an error message).
.. _bug-fixes-20:
Bug fixes:
^^^^^^^^^^
- Fix a bug in optimization that could remove variables even if they
are used. Fixes :bugref:`123`.
- Fix float variable declarations with sets of floats as domains. Fixes
:bugref:`117` and :bugref:`98`.
- Fix type checking and evaluation of asserts with array arguments.
Fixes :bugref:`109`.
- Fix abs(var float) declaration to work on floats without declared
bounds. Fixes :bugref:`106`.
- Fix a bug in the computation of int and float bounds that could
result in incorrect bounds in some cases. Fixes :bugref:`94`.
- Fix garbage collection when creating output models. Fixes :bugref:`77`.
- Fix binary operators on optional variables (in some cases comparison
operators were reversed).
- Fix optimization of unconstrained variables (could sometimes lead to
constraints being removed although they were not subsumed).
.. _v2.0.14:
`Version 2.0.14 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.14>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 31 July 2016)
.. _changes-14:
Changes:
^^^^^^^^
- Less aggressive aggregation of linear expressions in cases where it
leads to much less efficient FlatZinc.
- Don't create temporary variable for an array literal if it is
discarded immediately anyway.
- Only create new partiality variable for if-then-else expression if
there's at least one var condition.
- Replace recursive definitions of array_intersect and array_union with
iterative ones.
.. _bug-fixes-21:
Bug fixes:
^^^^^^^^^^
- Don't report warnings about partiality when using extended generator
expressions.
- Include cmath to enable building with some versions of gcc.
- Constrain result of function call based on function return type if
necessary.
- Make sure linear expressions generated during binding of variables
are properly flattened (including simplification of the linear
expression)
.. _v2.0.13:
`Version 2.0.13 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.13>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 26 March 2016)
.. _bug-fixes-22:
Bug fixes:
^^^^^^^^^^
- Fix a bug in the Common Subexpression Elimination table of the
compiler, which could lead to some constraints being dropped
(especially when using linear redefinitions).
- The output model sometimes did not include all required definitions,
in particular when array declarations used identifiers to specify the
dimensions.
- The generated FlatZinc sometimes still contained bool variables that
were not connected to the rest of the model, which could produce
incorrect solutions being printed.
- Fix a bug where warnings (e.g. about partial functions) could lead to
crashes.
- Fix the bounds computation for integer and float variables, which
could produce incorrect bounds for linear expressions. Fixes :bugref:`94`.
- Fix a bug in the IDE that caused solver output to be shown
incompletely in some cases.
.. _v2.0.12:
`Version 2.0.12 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.12>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 25 February 2016)
.. _changes-15:
Changes:
^^^^^^^^
- Partial functions are now always evaluated in their Boolean context,
independent of whether they are par or var. If the result of a
partial function is statically known to be undefined (such as
division by zero or array access out of bounds), and it is used in a
constraint expression, this now results in a warning instead of an
error. Warnings can be turned off using the ::maybe_partial
annotation. Fixes :bugref:`43` and :bugref:`74`.
.. _bug-fixes-23:
Bug fixes:
^^^^^^^^^^
- Fix a bug in the optimisation phase related to unification of aliased
variables.
- Fix short-circuit evaluation of Boolean expressions.
- Fix a bug in the optimisation phase related to repeated
simplification of some Boolean expressions.
- Handle errors in output produced by solver without solns2out
crashing. Fixes :bugref:`80`.
- Fix a bug in the integer bounds computation that caused bool2int with
an embedded conditional to crash.
- Fix a problem with short-circuit compilation of == expressions when
one side was a var opt bool.
- Stop compilation when model is failed. Fixes a bug where mzn2fzn
would sometimes not clean up the FlatZinc enough for the solver.
.. _v2.0.11:
`Version 2.0.11 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.11>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 15 January 2016)
.. _bug-fixes-24:
Bug fixes:
^^^^^^^^^^
- Fix parsing of hex and octal literals. Fixes :bugref:`71`.
- Fix compilation of extended comprehensions. Fixes :bugref:`72`.
- Fix computation of float array access bounds.
- Fix aggregation of clauses (could sometimes ignore the negative
literals).
.. _v2.0.10:
`Version 2.0.10 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.10>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 9 December 2015)
.. _bug-fixes-25:
Bug fixes:
^^^^^^^^^^
- Fix a bug in the optimiser that could lead to undefined variables in
the generated FlatZinc. Fixes :bugref:`70`.
.. _v2.0.9:
`Version 2.0.9 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.9>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 6 December 2015)
.. _bug-fixes-26:
Bug fixes:
^^^^^^^^^^
- Need to take return type into account when copying functions to
output model. Fixes :bugref:`55`.
- Evaluate calls that result in arrays using eval_arraylit. Fixes :bugref:`57`.
- Move inverse function to its own library file, so that it remains
available when a solver provides an alternative for the inverse
predicate.
- Optimisation phase now recursively checks constraints when elements
in an array become fixed.
- Fix CMakeLists file to work for paths that contain spaces.
- Distinguish between infix operators and regular functions in the
generated html documentation. Fixes :bugref:`61`.
- Made parser more robust against incorrect code.
- Fix increment/decrement operators for IntVals and make all operations
throw correct overflow exceptions.
- Fix automatic type coercion for variables declared in let
expressions.
- Fix a crash when printing some error messages.
- Fix compute_div_bounds builtin to return correct result for a
division by zero.
- Fix optimisation of Boolean constraints to use pointer equality
instead of structural equality (same expression can occur multiple
times in the FlatZinc).
- Only optimise constraints that have not been removed yet.
- Fix declaration of functional version of bin_packing_load. Fixes :bugref:`64`.
- Set type of arrays returned from polymorphic functions. Fixes :bugref:`65`.
- Fix parsing of quoted unary operator calls.
- Only compute set functions when bounds are valid. Fixes :bugref:`66`.
- Compute proper bounds for if-then-else expressions.
- Report error when no reified version of a constraint is available.
Fixes :bugref:`67`.
- Fix type checking of annotations on binary operators.
- Keep annotations when rewriting linear constraints and remove
is_defined_var annotations from fixed variables. Fixes :bugref:`69`.
.. _changes-16:
Changes:
^^^^^^^^
Integer, Boolean and float literals are now cached to achieve better
memory performance for some models.
Improve performance of parsing integer literals.
Improve handling of clause constraints.
Add source files of MiniZinc specification to the repository.
Limit maximum array size to enable better error messages.
Add implied_constraint predicate as a synonym for redundant_constraint.
.. _v2.0.8:
`Version 2.0.8 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.8>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 19 October 2015)
.. _bug-fixes-27:
Bug fixes:
^^^^^^^^^^
- Fix incorrect negation of some reified comparisons.
- Make lb/ub functions work in more cases.
- Fix several bugs in the optimisation phase (could lead to incorrect
FlatZinc and crashes).
- Fix a problem with reverse mapper functions when the result of the
reverse mapper can be fixed to a constant.
.. _v2.0.7:
`Version 2.0.7 <https://github.com/MiniZinc/MiniZincIDE/releases/tag/2.0.7>`__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(released 5 October 2015)
.. _changes-17:
Changes:
^^^^^^^^
- Improved propagation of Boolean constants in the optimisation phase.
This should result in far fewer aliases and improves simplification
of conjunctions, disjunctions and clauses.
- Add special case handling for integer division by 1.
.. _bug-fixes-28:
Bug fixes:
^^^^^^^^^^
- Fix FlatZinc generator phase, need to turn all array literal
arguments into 1-based single dimensional arrays.
- Fix compilation of if-then-else expressions with var conditions
(which didn't implement proper partiality/totality semantics). Fixes
:bugref:`42`.
- Provide correct bounds for weak opt var arithmetic. Fixes :bugref:`51`.
- Need to be able to handle unflattened annotations. Fixes :bugref:`53`.
- Fix generation of output model (needs to ignore items that have been
removed previously).
- Add missing lb(var set of int) builtin. Fixes :bugref:`47`.
- Check that var set declarations have a finite element type. Fixes :bugref:`46`.
- Fix translation context for binary operators on arrays.
- Need to access IntVal::infinity as a function, otherwise depending on
linker etc it may become 0 in some cases. Fixes :bugref:`40`.
- Change pretty printer to use one less digit when printing float
literals. This fixes :bugref:`41` (or at least
provides a workaround), but some double constants may still be
rounded incorrectly when pretty printing and reading them back in.
The real fix will be to output hex float literals (coming soon).
- Distinguish between generalised comprehensions (iterating over sets)
and iterating over arrays. Fixes compilation of comprehensions where
iteration over an array is combined with var where clauses. Fixes :bugref:`45`.
- Fix bug in creation of output model where sometimes chains of
variable definitions could lead to crashes.
- Avoi creating mutually recursive definitions in some corner cases,
which could cause the compiler to run into infinite loops.
- Don't copy vardecl items to output model that are already there.
Fixes :bugref:`44`.
- Remove domain from array declarations in FlatZinc (avoids problems
with domains where holes need to be removed and when there are
infinities in the domains)
- Fix flattening of equality operator between non-opt and opt vars.
- Check that model contains a single solve and output item during type
checking (previously, multiple output items were not detected and
resulted in incorrect .ozn files).
- Fix flattening of xor (arguments need to be in mixed context).
- Use is_fixed in cumulative definition.
- Fix bug where a par right hand side of a variable mentioned in the
output would cause a crash.
- Fix variable dependency tracking during rewriting in the optimisation
phase. Could previously lead to variables being removed that are
still required. Fixes :bugref:`54`.
.. _v2.0.6:
Version 2.0.6
~~~~~~~~~~~~~
(released 2 August 2015)
.. _changes-18:
Changes:
^^^^^^^^
- Add parser support for hexadecimal floating point constants.
.. _bug-fixes-29:
Bug fixes:
^^^^^^^^^^
- Fix bounds computation for some calls (abs, int_times).
- Fix flattening of some array declarations (when right hand side is an
identifier).
- Add four missing GC locks (could lead to incorrect garbage
collection).
- Compact output model only after optimisation phase (could lead to
incorrect items being removed from output model).
.. _v2.0.5:
Version 2.0.5
~~~~~~~~~~~~~
(released 31 July 2015)
.. _changes-19:
Changes:
^^^^^^^^
- Improve the standard decomposition for the cumulative constraint.
- Better handling of binary operators during type checking and
flattening, can sometimes avoid stack overflows (e.g. for large
conjunctions).
- Make ++ operator left associative (avoid stack overflows in the
parser).
- Add ::domain annotations to linear constraints generated from
multi-dimensional element constraints.
- Greatly improved linearisation library.
.. _bug-fixes-30:
Bug fixes:
^^^^^^^^^^
- Fix recursive function calls that contain let expressions.
- Fix compilation of comprehensions inside parametric functions.
- Fix a memory leak in solns2out.
- Fix a problem in the evaluation of binary operators.
- Fix a bug in the flattening of array literals.
- Fix a bug that would crash the parser on certain syntax errors in let
expressions.
.. _v2.0.4:
Version 2.0.4
~~~~~~~~~~~~~
(released 1 July 2015)
.. _changes-20:
Changes:
^^^^^^^^
- Models can now be read from standard input (using the "-" or
"--input-from-stdin" command line options). Thanks to Sebastian
Kosch.
- Improved handling of bool2int during FlatZinc generation.
.. _bug-fixes-31:
Bug fixes:
^^^^^^^^^^
- Fix unification of aliased variables which could sometimes result in
variables being removed although had a constraining right hand side.
- Fix evaluation of set comprehensions.
- Fix command line flag --no-output-ozn
- Fix performance problem when evaluating array expressions inside
lets.
- Fix flattening of bool_xor redefinitions.
- Fix partial evaluation of some array access expressions with var
indexes.
- Fix definition of geost constraint.
- User-defined functions are now copied correctly into the output model
if they are referenced in the output item.
- Set comprehensions are fully evaluated.
.. _v2.0.3:
Version 2.0.3
~~~~~~~~~~~~~
(Internal release that did not contain some essential fixes)
.. _v2.0.2:
Version 2.0.2
~~~~~~~~~~~~~
(released 26 May 2015)
.. _changes-21:
Changes:
^^^^^^^^
- The optimiser now removes simple domain constraints from the FlatZinc
- The compiler now checks for integer overflows in all built-in
operations
- Report an error when the FlatZinc or ozn file cannot be opened for
writing
- Add support for 3d array literals (e.g. [\| \|1,2|3,4|,|5,6|7,8\| \|]
)
- Add show2d and show3d functions for formatting array output
- Add row/col functions for variable arrays (fixes :bugref:`2`)
- Introduce builtins for creating random distributions
- Add reverse library function
- Postpone flattening of some reified constraints
- Slightly improved compilation of partial function calls when it can
be inferred at compile time that their result is undefined
- Allow functions with empty argument lists to be declared as function
int: foo(); instead of just function int: foo;
- Improve error reporting, in particular for errors in comprehensions
- Enable expressions a..b where a and b are integer variables
- Add redundant_constraint and symmetry_breaking_constraint builtins,
these can be rewritten by solver libraries to allow e.g. local search
solvers to ignore redundant constraints.
- Improve flattening of predicates that simply return their arguments
(makes the redundant_constraint and symmetry_breaking_constraint
predicates work in more situations).
- Replace command line option --only-range-domains by optional boolean
value so that solver libraries can set the flag directly in their
redefinitions file.
- Stop flattening immediately when a model has been found to contain an
inconsistency.
- Improve flattening of array access expressions, in particular for
nested array accesses that can be combined into a single element
constraint
- Add command line option -s or --statistics to print statistics about
the generated FlatZinc
- Improve bounds computation for if-then-else expressions
- Clause arguments are compiled in positive and negative contexts
instead of mixed. That means that predicates that introduce free
variables can now be used in the positive part of a clause.
.. _bug-fixes-32:
Bug fixes:
^^^^^^^^^^
- Fix simplification of linear expressions, negative coefficients could
sometimes result in incorrect bounds
- Fix bounds computation for unary minus operator
- Add missing par set comparison builtins
- Fix bounds computation for extended comprehension syntax
- Fix a bug in the garbage collector that could sometimes lead to
premature deletion of expressions
- Fix bounds computation for set difference
- Fix duplication of some arrays in the FlatZinc (fixes :bugref:`3`)
- Fix bounds inference for variables bound to empty sets (fixes :bugref:`3`)
- Fix bug in error reporting function, which would sometimes not report
the entire call stack
- Fix the generation of fresh variable names for generator expressions
- Fix subtype check to allow empty arrays as subtype of arrays of sets
- Fix crash when using assert/2
- Fix bug when function used in output referred to par variable
- Fix bug in type checker, the detection of cyclic definitions was not
correct and could lead to stack overflows
- Fix parser to accept expressions with two consecutive array accesses
(like x[3][4], which are valid MiniZinc if x is an array of sets)
- Fix error reporting when an evaluation error occurs within a
comprehension generator
- Report type error on some ambiguous function calls
- Report type error on var sets with element type other than int
- Report type error when trying to coerce a var set into an array
- Report error when calling function with a value that is outside the
declared parameter bounds
- Fix arg_sort builtin to implement the correct semantics
- Fix sort_by builtin to sort in non-decreasing order, and work with
floats
- Fix bug in type checker, now automatic coercions in functions defined
with type variables (like the comparison operators) work correctly
- Check that index sets match for arrays assigned in let expressions
- Fix bug in bounds inference for integer expressions with annotations
- Fix propagation of defines_var annotation to be pushed through calls
- Fix parser to accept empty 2d and 3d array literals
- Fix flattening to remove defines_var annotations with par argument,
e.g. defines_var(2), which could be introduced by the optimisation
pass
- Fix output model creation for variables that have been redefined, and
remove more unused variables from the FlatZinc.
- Fix bug in the garbage collector that could result in function items
not being kept alive in rare cases.
.. _v2.0.1:
Version 2.0.1
~~~~~~~~~~~~~
(released 15 December 2014)
Major bugs and changes:
^^^^^^^^^^^^^^^^^^^^^^^
- Fix optimisation phase, which was previously incorrectly removing
variables
- Add support for trigonometric functions (built-ins were missing in
2.0.0) and pow (var versions were missing)
- Fix equality operator on par arrays
- All expressions in output model are now made par
- Improve bounds computation for float variables
- Fix translation of functions that need automatic coercion of their
return value
- Fix the array_lb and array_ub builtins, which would return incorrect
bounds in some cases
Minor bugs and changes:
^^^^^^^^^^^^^^^^^^^^^^^
- Add space between "array" and "[" in the pretty printer, to be
compatible with 1.6 output
- Output all par declarations before the var declarations in FlatZinc
- Fix parser, which could sometimes crash on invalid input
- Improve efficiency of bounds computation on some float expressions
- Add special case handling for division by 1
- Add missing float_times definition to the flatzinc builtins
- Use correct version of var_dom for float variables
- Output information about which files are included in verbose mode
- Only compute bounds for "then" expressions if the "if" is not fixed
to false
.. _v2.0.0:
Version 2.0.0
~~~~~~~~~~~~~
(released 9 December 2014)
MiniZinc 2.0 contains many new features and is based on a complete
rewrite of the MiniZinc-to-FlatZinc compiler. If you are currently using
the previous version 1.6, the new tools can be used as drop-in
replacements. The generated FlatZinc is compatible with version 1.6, so
all FlatZinc solvers should work without changes.
MiniZinc language changes
^^^^^^^^^^^^^^^^^^^^^^^^^
- MiniZinc now supports user-defined functions. Details have been
published in the paper "MiniZinc with Functions". Both functions and
predicates can be recursive.
- MiniZinc now supports option types. Details have been published in
the paper "Modelling with Option Types in MiniZinc".
- Let expressions have been generalised. They can now contain
constraint items in addition to variable declarations.
- Array index sets can be declared using arbitrary set expressions as
long as they evaluate to contiguous ranges.
- The if-then-else expression has been generalised to allow the
condition to be a var bool expression (instead of only par bool).
- Array and set comprehensions as well as generator calls can now
iterate over variables and use var bool where conditions.
- Any bool expression can now automatically coerce to an int
expression, likewise for int and float. This means that you don't
have to write bool2int or int2float in you models any more.
- Equality constraints can now be posted between array expressions.
- Arbitrary expressions can now be included ("interpolated") into
strings, using the syntax "some text \\(e) some more text", where e
is any expression. It is the same as writing "some text "++show(e)++"
some more text".
New built-in functions
^^^^^^^^^^^^^^^^^^^^^^
- Array functions: array1d, arrayXd, row, col, has_index, has_element,
sort_by, sort, arg_sort, arg_min, arg_max
New global constraints
^^^^^^^^^^^^^^^^^^^^^^
- arg_max, arg_min
- arg_sort
- k-dimensional diffn
- disjunctive
- geost
- knapsack
- network_flow
- regular with NFAs
- symmetric all different
- optional scheduling constraints: alternative, span, disjunctive,
cumulative
- functional versions of many global constraints
New tool chain
^^^^^^^^^^^^^^
- There are a few new builtins that solvers can reimplement, these are
listed in the redefinitions-2.0 file.
- Include items use a different method for finding included files.
Paths are now interpreted as relative to the file that has the
include item. That way, the mzn2fzn compiler can be called from a
different working directory.
- A new tool, mzn2doc, can produce html output from the documentation
comments. The MiniZinc distribution contains the documentation for
global constraints and builtins generated directly from the library
source code.
|