History
The Charm software was developed as a group effort of the Parallel Programming
Laboratory at the University of Illinois at Urbana-Champaign. Researchers at
the Parallel Programming Laboratory keep Charm++ updated for the new machines,
new programming paradigms, and for supporting and simplifying development of
emerging applications for parallel processing. The earliest prototype, Chare
Kernel(1.0), was developed in the late eighties. It consisted only of basic
remote method invocation constructs available as a library. The second
prototype, Chare Kernel(2.0), a complete re-write with major design changes.
This included C language extensions to denote Chares, messages and
asynchronous remote method invocation. Charm(3.0) improved on this syntax, and
contained important features such as information sharing abstractions, and
chare groups (called Branch Office Chares). Charm(4.0) included Charm++ and
was released in fall 1993. Charm++ in its initial version consisted of
syntactic changes to C++ and employed a special translator that parsed the
entire C++ code while translating the syntactic extensions. Charm(4.5) had a
major change that resulted from a significant shift in the research agenda of
the Parallel Programming Laboratory. The message-driven runtime system code of
the Charm++ was separated from the actual language implementation, resulting
in an interoperable parallel runtime system called Converse. The Charm++
runtime system was retargetted on top of Converse, and popular programming
paradigms such as MPI and PVM were also implemented on Converse. This allowed
interoperability between these paradigms and Charm++. This release also
eliminated the full-fledged Charm++ translator by replacing syntactic
extensions to C++ with C++ macros, and instead contained a small language and
a translator for describing the interfaces of Charm++ entities to the runtime
system. This version of Charm++, which, in earlier releases was known as
Interface Translator Charm++, is the default version of Charm++ now, and hence
referred simply as Charm++. In early 1999, the runtime system of Charm++ was
rewritten in C++. Several new features were added. The interface language
underwent significant changes, and the macros that replaced the syntactic
extensions in original Charm++, were replaced by natural C++ constructs. Late
1999, and early 2000 reflected several additions to Charm++, when a load
balancing framework and migratable objects were added to Charm++.