First pre-release of the 9.0 line. Alpha tags are cut from the
'recharm' branch as work lands; the gaps listed at the end of this
section close in later alphas and the beta.
Charm++ 9.0 runs on reconverse, a new implementation of Converse,
included as the contrib/reconverse submodule (#3944, #3969). The
classic Converse line ends with 8.1.0 and continues as the branch
'classic', for bug fixes only; this line is the branch 'recharm'.
The classic machine layers are still in this tree as a fallback and
are removed before the 9.0 release.
Runtime:
-
Reconverse uses LCI2 as its network layer (LCW over MPI as a
fallback). Build with the reconverse-- targets, for
example reconverse-linux-x86_64. -
Programs start without charmrun: './app +pe N' runs N PEs in one
process; multi-process runs use lcrun (or srun / mpirun), with +pe
giving the total PE count. There is no communication thread, so
every core can run a worker PE. The manual's Running chapter
describes the reconverse launch options (#4043). -
CCS: the server, handler registry and request forwarding live in
reconverse (reconverse #280); charm keeps the CCS builtins, liveViz
and PythonCCS on top of them (#4037, #4042). -
+glibc_tuned_malloc: opt-in glibc malloc tuning for processes with
many PEs, Linux only (reconverse #275). -
Scheduler order: a PE takes node-level work before its own queued
work, the order classic used (reconverse #268, #274). -
GPU support on reconverse: portable HAPI core (#3951),
device-to-device communication (#3955), device zerocopy with
register-once buffers (#3960, #3961), GPU-aware load balancer (#3968).
New on this line since the split from classic:
-
64-bit object ids, groundwork: the location manager aborts on
per-PE element id overflow instead of reusing ids (#4016); design
documents in doc/ (#4015). -
Broadcasts and [nokeep] entry methods: fixes for message reuse and
copies (#4000-#4012). Checkpoint restart no longer hangs with more
than one process and more than one PE per process (#4019). The
location manager initializes its destruction flag, so deleting an
array element no longer leaves a stale entry at its home (#4044). -
CkTreeCacheManager, a process-shared tree store with CkCache's
protocol (#4013, #4014). -
Summary tracing records message bytes per entry method per interval
(#3937, #4020). -
Randomized message queue at run time: +randomized_msgq (and
+randomized_seed to repeat a run) (reconverse #269). The classic
build option --enable-randomized-msgq is rejected at configure time
on reconverse builds (#4029). -
Per-PE queue counter and opt-in jemalloc allocator, CMake option
RECONVERSE_USE_JEMALLOC (reconverse #272). -
charmxi no longer crashes on serial blocks when run without
-orig-file (#4027).
Known gaps in the alpha:
-
AMPI is not yet ported to reconverse; Windows multicore is not yet
available. -
CharmDebug is not available.
-
MPI interoperation (user-driven interop) is not supported.
-
Checkpoint files written by 9.0 alpha may not be readable by later
9.0 pre-releases, because the object id layout may change before
the beta. Trace logs and load balancer dumps are not affected. -
CkMulticast delegation can hang under +randomized_msgq (#4032).
Getting the source:
The GitHub source archive for the tag does not contain the
contrib/reconverse submodule. Clone instead:
git clone --branch v9.0.0-alpha1 --recurse-submodules https://github.com/charmplusplus/charm
cd charm && ./build charm++ reconverse-linux-x86_64 --with-production -j8
Tested at this tag (2026-10-16):
- macOS arm64 (reconverse-darwin-arm8, production): every directory
under tests/, examples/ and benchmarks/ with a test target, single
process, 182 directories; the pre-existing failures outside CI are
tracked in #4035. - NCSA Delta, 2 CPU nodes, Slingshot-11 (libfabric cxi): the CI test
set in one process and in two processes on two nodes, pingpong
across nodes, megatest with 2 x 16 PEs. - Purdue Anvil, 2 nodes, InfiniBand (libfabric verbs): the same set
as on Delta, on the candidate one reconverse commit before the tag
(66e4af3; the tag adds the scheduler-order change, reconverse #274).