Release notes

Release 1.112.0

New features

  1. New supported platform lii6ll (Linux, x86-64, Clang/LLVM).
  2. 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 MPS_KEY_VMW3_TOP_DOWN when creating an arena of class mps_arena_class_vm().
  3. On OS X, multi-threaded programs are now supported. See Threads.
  4. On OS X, you can now debug the MPS using lldb.

Interface changes

  1. In the 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 Assertion handling.

  2. The behaviour when an assertion is triggered is now configurable in the standard ANSI plinth by installing an assertion handler. See mps_lib_assert_fail_install().

  3. Functions that take a variable number of arguments (mps_arena_create(), mps_pool_create(), mps_ap_create(), mps_fmt_create_A()) and their va_list alternatives (mps_arena_create_v() etc.) are now deprecated in favour of functions that use a keyword argument interface (mps_arena_create_k(), mps_pool_create_k(), mps_ap_create_k(), mps_fmt_create_k()). The new interface provides better reporting of errors, provides default values for arguments, and provides forward compatibility. See Keyword arguments.

    The old interface continues to be supported, but new features will become available through the keyword interface only.

  4. MFS (Manual Fixed Small) pools no longer refuse to manage blocks that are smaller than the platform alignment. They now round up smaller sizes internally if necessary.

  5. MVT (Manual Variable Temporal) pools now allow the client to specify the alignment of blocks. Use the keyword argument MPS_KEY_ALIGN when creating a pool of class mps_class_mvt().

  6. 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 Signal and exception handling issues.

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

  1. On Windows, an execute exception no longer triggers an assertion. See job003301.
  2. Rehashing of large address-based hash tables no longer provokes a nursery collection that immediately renders the hash table stale again. See job003435.
  3. MVT (Manual Variable Temporal) no longer triggers an assertion failure when it runs out of space on its reserved block queue. See job003486.
  4. The -i and -o options no longer cause mpseventsql to crash. See job003507.
  5. On Windows, telemetry files now have correct clock values. Previously the top 32 bits were incorrectly output as zero. See job003519.
  6. 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.