# 3 Mozart 1.2.4

Mozart 1.2.4 is a bug-fix and maintenance release, with some enhancements.

## 3.1 Base

changes and fixes that concern the base language:

- bytestrings: space now prints as space instead of being encoded as octal

- fixed insertion sort in `dictionary.cc` (so what?)

- improved static analysis for `Port.new`: `{Port.new s _}` now diagnoses the error due to the typo (atom instead of variable)

- added `Value.isFailed`: true iff the arg is a failed future

- `Int.'div'`, `Int.'mod'`: work consistently and according to the specification for small and big integers (concerns negative numbers only)

- `Value.waitQuiet` no longer blocks on failed futures

- robustly handle the case of a messed up `OZLOAD`

- bug fix for `VirtualString.toAtom`

- Sort and Merge are now stable

- new environment variable `OZ_DOTOZ` to override default `~/.oz`. corresponding property `oz.dotoz`

- `List.take`, `List.drop` and `List.takeDrop` no longer unnecessarily block on nondet list tail that is not looked at

## 3.2 Windows

changes and fixes that concern the Windows platform:

- fixes to compile again with MSVC

- debug emulator can be built

- Control-C should now work

- configuration: Updated to link correctly under the newest mingw (check for either `-ldirent` or `-lmingwex`)

- fixed other problems due to changes in mingw library

- `OS.getEnv`: now correctly distinguishes between an unset environment variable and an environment variable set to the empty string

- fixed `Application.getCgiArgs` on Windows for newer Apache (same as previous item)

- fixed `Open.pipe` pbs

- `OS.pipe`: When the process at the other end of a pipe terminates, end-of-file is reported instead of an exception

- `OS.read`: When an end-of-file arrives on standard input, it is now correctly reported instead of blocking indefinitely

- fixed weird compilation/linking pbs, actually caused by clashing GIDs (see DP)

- oztool more flexible: supports `-I`, `-l`, `-L` and `-s` for GNU and MSVC

- OPI: fixed encoding (on Windows) for sending data with accented chars to oz process

## 3.3 Documentation

changes and fixes to the Mozart documentation:

- `install`: fixed obsolete hrefs, added windows/cygwin info

- `notation`: fixed def of "in expression"

- `tutorial`: typos

- `xsl/ozdoc-fontify.el`: replaced obsolescent dot-marker by point-marker

- `xsl/ozdoc.cls`: works again with newer version of float.sty

## 3.4 Constraint Programming

changes and fixes concerning the constraint programming support:

- documented limitations:

  - free var cannot be constrained in subspace: must first be constrained in home space

  - number of alternatives of a choice point must be less than 2^27-2

- `doc/system/fd`: fixed typos

- fixed `dis`

- fixed `FDBitVector::findMinElemen` to correctly return -1 for empty vector

- fixed corner case that was causing the infamous "change of representation" bug at 64 elements in rare occasions (`FSetValue::operator <=`)

- domain consistent propagators are now properly woken up

- `\=:` now correctly takes variable aliasing and entailment into account

- reified constraints: fixed occasional misbehaviour due to out of bound array access

- `FD.distribute`: bug fixes + improvements. (used to not correctly synchronize on stability on 1st invocation)

- `FS.distribute`: fixed to use stable order, improved, round robin bug fixed (used to drop variables)

## 3.5 Oz Language

changes and fixes concerning the Oz language

- `for` loop now supports new experimental features `while:E` and `until:E`

- `doc/loop` slightly improved

- `for _ in 1..5 do ... end` now works (it used to block)

- eliminated unnecessary memory allocation for experimental `collect` feature

## 3.6 System Modules

changes and fixes concerning the System modules:

- Application:

  - added `Application.processCgiString`

  - fixed `Application.getCgiArgs` on Windows for newer Apache

  - bug fix for `Application.getCmdArgs`

- Finalize:

  - `doc/system/finalize`: improved doc about stateless values etc...;

- Open:

  - documented `text` and `binary` flags

  - `Open.text`: raises a `closed` exception instead of a `type` exception when operating on a closed stream

- System:

  - documented `System.onTopLevel`

- Property:

  - synchronize on undet property values instead of raising an error

- DP:

  - 40% speed up for small distributed messages

  - speedup for pickling and 10% decrease in size

  - fixed memory leaks in libdp

  - global IDs are now robustly/provably unique

- Tk:

  - iso8859-1 chars properly handled

  - image resolver initialized using methods of pickle resolver

## 3.7 Tools

changes and fixes concerning Mozart related tools:

- Browser:

  - it is now ok to browse a port in a deep guard

- Inspector:

  - can now inspect array in deep guard

- Gump:

  - use relative import for generated native functor

- Compiler:

  - `\insert` with very long filenames now works

  - misc fixes

  - fixed `dynamicvarnames` pb

- ozdoc:

  - cross-referenced exercises now use sensible text

  - beginning of support for XML

- OPI / Emacs Mode:

  - fixed encoding (on Windows) for sending data with accented chars to oz process

## 3.8 Miscellaneous

- Configure/Build:

  - version checking improved

  - fixed pbs with new version of Bison

  - fixed pbs with new version of GMP

  - added switch `--enable-compile-elisp` (default=yes) as requested by Debian

  - added `--with-emacs-options=`OPTIONS (default=`-q --no-init-file` for GNU `-q -no-init-file` for XEmacs)

  - more robust creation of native functor interface in `contrib/ri`

  - support OpenBSD

  - configures and compiles again on recent Linux distros using new versions of libraries

- Examples:

  - `share/examples/grammar` updated

- Test Suite:

  - fixes + new tests