Project CRaC Guidelines (draft)

Anton Kozlov akozlov at azul.com
Tue Mar 21 14:25:07 UTC 2023


Please find a draft of Project CRaC Guidelines below. They aim to provide a
programmer-centric scope of the project, as well as to set a foundation for
programming model discussions, like [1].

[1] https://github.com/openjdk/crac/pull/30

Thanks,
Anton

CRaC Project Guidelines
=======================

0. CRaC Project suggests a way to solve real Java problems with start-up and
warm-up with checkpoint-restore mechanism, which implies a new programming
model, and a new Java API to support the model.  The new programming model is
not very different to the conventional one.  The difference is that the Java
Machine can be voluntarily paused from execution, with upfront notification
before the pause ("checkpoint") and after the pause is complete ("restore").
While in the pause, the environment where the VM executes can change in
arbitrary way, the VM can also be replicated.  The new API should provide a way
for programs to prepare for the checkpoint and to be able to react to
environmental changes after the restore.

1. CRaC Project is to develop a new Coordination API that provides all
components of Java VM, the standard library, and an application with
notifications.  The API is intended to be simple and conservative.  It should
be abstract enough to allow different CRaC implementations in different
environments.

2. The project also is to develop a reference implementation (RI).

2.1. The RI should approach solving real problems with start-up and warm-up.
Although being the first user of the API, the implementation does not need to
be conservative.  Having that no existing computing environment is similar to
checkpoint-restore, CRaC implementation to develop a set of assumptions and
constraints for programming, and to communicate these assumptions and
constraints to users.

2.2. The implementation should demonstrate the best practices of using the new
API and demonstrace approaches for common problems.


More information about the crac-dev mailing list