Release notes for OpenCilk 2.1
OpenCilk 2.1 features the following enhancements.
Major changes
- The compiler has been upgraded and is now based on LLVM 16.0.6.
- [New, beta feature] The compiler includes the LambdaABI Tapir back end. Using LambdaABI, one can extend OpenCilk with a new parallel runtime system simply by providing an appropriate bitcode-ABI file for that runtime system, as described in the OpenCilk conference paper at ACM PPoPP 2023.
- Reducers have been improved in several ways:
- In C++, reducers are now implicitly converted to views when binding references.
- The previous restriction that Cilk programs can use at most 1024 reducers has been lifted.
- Reducer performance has been improved.
- Support has been improved for using ASan to check Cilk programs for memory errors.
- Support for building the runtime system and Cilk tools as standalone projects has been improved.
- Many bug fixes and performance improvements have been incorporated.
Minor changes
- [Beta feature] The OpenMPABI Tapir back end has been replaced with a new OMPTaskABI back end that uses a bitcode-ABI file, as described in the OpenCilk conference paper.
- Cilksan has been extended with instrumentation for more library functions and compiler intrinsics.
- Cilksan's support for reducers is now independent of the runtime system. Cilksan's reducer support no longer requires specialized functionality from cheetah to simulate steals.
- The runtime system's implementation of C++-exception support has been simplified.
- The runtime system's logic for stealing work has been simplified.
Acknowledgments
Thanks to everyone who helped test this new version of OpenCilk, especially:
- Brian Wheatman
- Samir Droubi
- Ryan Deng
- @bababuck
- MIT course 6.106, Fall 2023