.. _release-notes:
Release notes
=============
.. _release-notes-1.112:
Release 1.112.0
---------------
New features
............
#. New supported platform ``lii6ll`` (Linux, x86-64, Clang/LLVM).
#. On Windows, you can now request that the MPS allocate address space
from the top down, allowing a 32-bit executable linked with
``/LARGEADDRESSAWARE`` to use the top half of the address space.
Use the keyword argument :c:macro:`MPS_KEY_VMW3_TOP_DOWN` when
creating an arena of class :c:func:`mps_arena_class_vm`.
#. On OS X, multi-threaded programs are now supported. See
:ref:`topic-thread`.
#. On OS X, you can now debug the MPS using ``lldb``.
Interface changes
.................
#. In the :term:`hot` (production) variety, the default assertion handler
now prints messages to standard error but does *not* terminate the
program. Even though assertions indicate serious problems in the
program, an end-user does not always want an application to terminate when
there is a chance to shut down safely and save work, or even to limp
along indefinitely. See :ref:`topic-error-assertion-handling`.
#. The behaviour when an assertion is triggered is now configurable in
the standard ANSI :term:`plinth` by installing an assertion
handler. See :c:func:`mps_lib_assert_fail_install`.
#. Functions that take a variable number of arguments
(:c:func:`mps_arena_create`, :c:func:`mps_pool_create`,
:c:func:`mps_ap_create`, :c:func:`mps_fmt_create_A`) and their
``va_list`` alternatives (:c:func:`mps_arena_create_v` etc.) are
now deprecated in favour of functions that use a :term:`keyword
argument` interface (:c:func:`mps_arena_create_k`,
:c:func:`mps_pool_create_k`, :c:func:`mps_ap_create_k`,
:c:func:`mps_fmt_create_k`). The new interface provides better
reporting of errors, provides default values for arguments, and
provides forward compatibility. See :ref:`topic-keyword`.
The old interface continues to be supported, but new features will
become available through the keyword interface only.
#. :ref:`pool-mfs` pools no longer refuse to manage blocks that are
smaller than the platform alignment. They now round up smaller
sizes internally if necessary.
#. :ref:`pool-mvt` pools now allow the client to specify the alignment
of blocks. Use the keyword argument :c:macro:`MPS_KEY_ALIGN` when
creating a pool of class :c:func:`mps_class_mvt`.
#. On OS X, signals are no longer used for handling memory protection
exceptions. This means that programs are free to handle ``SIGBUS``,
but must not install a thread-local Mach exception handler for
``EXC_BAD_ACCESS`` exceptions. See :ref:`topic-thread-signal`.
#. On OS X, when debugging with ``gdb``, you no longer need to turn on
``dont-handle-bad-access`` or to request special handling of
``SIGBUS``.
Other changes
.............
#. On Windows, an execute exception no longer triggers an assertion.
See job003301_.
.. _job003301: https://www.ravenbrook.com/project/mps/issue/job003301/
#. Rehashing of large address-based hash tables no longer provokes a
nursery collection that immediately renders the hash table stale
again. See job003435_.
.. _job003435: https://www.ravenbrook.com/project/mps/issue/job003435/
#. :ref:`pool-mvt` no longer triggers an assertion failure when it
runs out of space on its reserved block queue. See job003486_.
.. _job003486: https://www.ravenbrook.com/project/mps/issue/job003486/
#. The ``-i`` and ``-o`` options no longer cause
:program:`mpseventsql` to crash. See job003507_.
.. _job003507: https://www.ravenbrook.com/project/mps/issue/job003507/
#. On Windows, telemetry files now have correct clock values.
Previously the top 32 bits were incorrectly output as zero. See
job003519_.
.. _job003519: https://www.ravenbrook.com/project/mps/issue/job003519/
#. On 64-bit Windows, it's no longer possible to get a stack overflow
exception while the MPS is holding the arena lock. See job003640_.
.. _job003640: https://www.ravenbrook.com/project/mps/issue/job003640/