NEWS for Mercury 14.01, 10 February 2014
----------------------------------------

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, foldl2/6, and to_list_only_duplicates/2. The predicates
  old union/3, intersect/3, least_upper_bound/3 and subtract/3 all had
  complexities that depended strongly on the size of their second argument,
  and much more weakly on the size of their first argument. We have renamed
  these to union_small/3, intersect_small/3, least_upper_bound_small/3 and
  subtract_small/3 respectively, and replaced them with new implementations
  of the original four predicates whose complexity is proportional to
  the total size of the two input arguments.

* 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.


NEWS for Mercury 14.01.1, 8 September 2014
------------------------------------------

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.2, not released
--------------------------------------

This is a bug-fix release.

* Fix array.sort, which has been buggy since 2001. You may wish to
  reference array.sort_fix_2014 to ensure that you are using the fixed version.
* Fix the handling of nondet code by the auto-parallelisation analysis in
  mdprof_create_feedback. (Bug #364)
* Fix string.between_codepoints so that the clamping of start/end points
  works as documented.
