Skip to content

v0.4

Compare
Choose a tag to compare
@shwestrick shwestrick released this 22 Aug 18:41
f10dab4

MPL-v0.4 Release Notes (August 22, 2023)

Another year, another major release. In addition to multiple bugfixes and improvements (see below), this release features a milestone:

MPL now has full support for in-place updates.

Previously, MPL was only capable of running disentangled programs, and included a dynamic detector (similar to a data-race detector) that would exit the program with an error when entanglement occurred. With this update, MPL now automatically manages entanglement on-the-fly, allowing the program to continue safely and efficiently. This work was presented recently at PLDI 2023 in our paper Efficient Parallel Functional Programming with Effects [1].

Summary of PRs and contributions

  • (#173) the main update, especially the implementation of entanglement management (approximately the commit range c6a61f7..83b4b68 as well as #168)
  • (#163) additional controls for CGC collection
  • (#166) a low-overhead logging/profiling mechanism for investigating memory usage of MPL's block allocator
  • (#172) bugfixes for Real.{toString,fmt,...}: make gdtoa thread-safe
  • (#175) bugfixes for Int.{fmt,toString}, Word.{fmt,toString}, Real.{split,toManExp}, etc.: update One structure in basis library to be thread-safe
  • (4d343e4) bugfix for CGC and exception handling
  • (5a98337) add support for Real32 type for primitive CAS
  • (ba59f03) disable splitTypes{1,2} passes for now (these will need to be updated to support primitive CAS)

The changes in this release are implemented primarily by Jatin Arora (@typerSniper) and Sam Westrick (@shwestrick). The design of the entanglement manager [1] is by Jatin Arora, Sam Westrick, and Umut Acar (@umutacar). As always, thank you to @MatthewFluet for his constant support of the project!

References

[1] Efficient Parallel Functional Programming with Effects. Jatin Arora, Sam Westrick, and Umut A. Acar. PLDI 2023.