v0.4
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,...}
: makegdtoa
thread-safe - (#175) bugfixes for
Int.{fmt,toString}
,Word.{fmt,toString}
,Real.{split,toManExp}
, etc.: updateOne
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.