Release notes for OpenCilk 3.0
New features and improvements
OpenCilk 3.0 includes the following new features and high-level improvements.
-
[Beta feature] Add support for range
cilk_for
loops, a parallel version of C++ range-for loops, over containers that support random-access iteration. For example, one can now write the following parallel loop over astd::vector<T> v
:cilk_for (auto x : v) do_stuff(x);
-
Add support to VS Code and other LSP-based IDE's for
cilk_spawn
,cilk_scope
,cilk_for
, andcilk_sync
keywords by extending a custom version ofclangd
.- See here for a draft VS Code extension for OpenCilk and guidance on setting up VS Code to use OpenCilk's
clangd
.
- See here for a draft VS Code extension for OpenCilk and guidance on setting up VS Code to use OpenCilk's
-
[Beta feature] Add support for Android, to allow Android apps to use Cilk for task-parallel C/C++.
-
Add support for C++ struct and class members to be Cilk reducer hyperobjects.
-
Remove the need for user programs to include the
cilk/cilk.h
header file to use Cilk keywords. -
Upgrade the OpenCilk compiler to be based on LLVM 19.1.7.
-
Fix many bugs and improve performance.
Infrastructure improvements
Alongside this release are several improvements to the OpenCilk software ecosystem.
- GitHub actions are now available for building OpenCilk as part of a GitHub workflow: https://github.com/OpenCilk/actions.
- A repository of Cilk-5 benchmarks and Intel Cilk Plus benchmarks have been ported to OpenCilk and are publicly available: https://github.com/OpenCilk/smallapps.
Binaries and packages
We will upload precompiled OpenCilk binaries for some select systems to this release page once they are built and tested. Due to our own resource limitations, however, we will not be able to provide precompiled OpenCilk binaries for all supported systems.
If you need OpenCilk on a specific platform or configuration, please use the binaries for your distribution or build your own. Please reach out if you need any help building OpenCilk for your system.
If you would like to volunteer to provide OpenCilk binaries or other OpenCilk packaging for your system, please let us know by leaving a comment in this discussion.
Acknowledgments
Thanks to @eliecuevas, @sualehasif, and @arvid220u, for contributing range-cilk_for
loops to OpenCilk. (#55, #303)
Thanks to everyone who helped us test this new OpenCilk release, including @wheatman, @DanielDeLayo, @MangoShip, and @Akatsukis.