NEWS for Mercury 14.01.1 ------------------------ This is a bug-fix release. * The function string.string/1 and related functions now handle version arrays properly. * Fix resource leaks in dir fold predicates. * The mfilterjavac program is now generated with the correct file extension on Windows. * A problem that caused compilation of the Boehm GC to fail on 64-bit openSUSE 13.1 systems has been fixed. (Github issue #14) * The documentation now builds correctly on Cygwin systems. * The script configure_mingw_cross now supports 64-bit Windows targets. * We have added workarounds for problems with (arguably broken) system headers on MinGW and MinGW64 systems. * The MinGW port now builds in the absence of POSIX threads library. * Low-level C parallel grades now work on Windows instead of crashing at startup. (Bug #338) * We now use thread-safe alternatives to strerror(). (Bug #340) * We have added the configure option --enable-gc-mmap. * We configure Boehm GC to use mmap in threaded grades on Linux to avoid conflicts with glibc malloc leading to memory corruption. * A problem that caused string.format/[23] to sometimes return incorrect results when formatting floats with the 'g' conversion specifier has been fixed. This bug only affected the non-C backends. (Bug #342) * string.format now handles special float values (i.e. nan, inf, and -inf) correctly with the non-C backends. * A bug that caused io.write_float/[34] to append ".0" to float special values has been fixed. This bug affected the C and C# backends. * In the C# and Java grades, the predicate string.from_char_list now implements the documented behaviour for input lists containing null characters (i.e. it throws an exception). Likewise, for string.from_reverse_char_list in the C# grade. * We have fixed a problem that caused `mmc --make' to attempt to install libraries in non-existent grades. Changes to the Mercury compiler: * The compiler now supports stripping of executables in a separate post-link step. The new options, --strip-executable-command, --strip-executable-shared-flags and --strip-executable-static-flags are used to control this. (This is now the default on Mac OS X systems.) NEWS for Mercury 14.01 ---------------------- Changes to the Mercury language: * Repeated type variables may now occur in the heads of type class instances. For example, instance declarations like the following are now allowed: :- instance foo(list(T), map(T, T)). Changes to the Mercury standard library: * We have added the function cord.condense/1. * The following functions in the standard library's cord module now use constant stack space: foldl/3, foldl_pred/4. * We have added the following predicates to the array and version_array modules: is_empty/1, all_true/2 and all_false/2. * We have added the following predicates and functions to the map module: det_min_key/1, det_max_key/1, foldl2_values/6 and foldl3_values/8. * We have added the following predicates to the list module: foldr2/6, foldr3/8, det_take/3 and map_foldr/5. * We have added the following predicates to the bag module: foldl/4 and foldl2/6. * We have added the following predicates to the assoc_list module: foldl2_values/6 and foldl3_values/8. * We have added the following predicates and functions to the pqueue module: is_empty/1, peek/3, peek_key/2, peek_value/2, det_peek/3, merge/3, det_peek_key/1 and det_peek_value/1. * We have added the predicate bimap.equal/2. * We have added the following predicates to the int module: fold_up3/9 and fold_down3/9. Changes to the Mercury compiler: * On Mac OS X systems the compiler is now configured use the version of the host system as the default value for the deployment target. A new configuration option, `--with-macosx-deployment-target', allows an alternative value to be selected at configuration time. Portability improvements: * We have made the implementation compatible with GCC 4.8 and Visual Studio 2013. * We have made the implementation compatible with OS X 10.9. Changes to the extras distribution: * We've added a library that provides support for accessing the function trail from Mercury code. For news about earlier versions, see the HISTORY file.