Magicator generates GraalVM configuration files using an analysis method we invented.
GraalVM has the world’s best infrastructure for Java static analysis. But generating a native GraalVM image can be tricky since developers need to describe some of their application’s runtime behavior. For example, the program below won’t compile (using both the GraalVM compiler and Tracing Agent).
Magicator has determined that running this simplified program will yield all the values of the dynamic instruction set. This simplification then allows it to generate the GraalVM configuration file.
Another exciting Magicator feature is that it runs several simplified programs to extract all of the initial program’s general properties. It’s not dynamic or static analysis, and it’s not symbolic or concolic execution. Instead, it’s a generalization of supercompilation and partial evaluation.
Sometimes, it’s impossible to gather all the possible values for a program. This is because some of them are undecidable. In that case, Magicator marks the element as “to be resolved manually”.
We’re excited by the possibilities unlocked by Magicator, and we’re just getting started. One apparent improvement for GraalVM will be to remove the initial code and replace it with its results.