From: Makarius <makarius@sketis.net>
* ML *
* System *
This refers to Isabelle/baf75b1bf14a.
It is a clarification of ancient terminology and concepts. Many decades ago,
an "Isabelle process" was indeed the Poly/ML runtime system with our modest
Pure/ROOT.ML or HOL/ROOT.ML pre-loaded. In the past 10 years, the "Isabelle
system process" has become a Java Virtual Machine running the bulky
isabelle.jar (11 MiB of JVM byte code). That Isabelle system process can start
any number of Isabelle/ML processes, using operations from the Scala modules
isabelle.ML_Process and isabelle.Bash. Isabelle/ML programs can now directly
invoke that as well, e.g. to run a generated SML program via Isabelle/HOL codegen.
So ML-to-ML_process now goes via the already running Scala process, and not
ML-to-Bash.Server-to-java_process-to-ML_process.
To see the wiring, it might help to use the Prover IDE:
isabelle jedit -l Pure ~/Scratch.thy src/Pure/ROOT.ML
and then explore this source snippet via C-hover-click:
theory Scratch
imports Pure
begin
ML ‹
Isabelle_System.ML_process;
\<^scala_function>‹ML_process›;
›
end
We don't have a proper Isabelle/Scala IDE yet: One happy day it will be part
of the regular Isabelle/PIDE setup -- not the somewhat lacking IntelliJ IDEA
Scala plugin.
Makarius
Last updated: Dec 10 2025 at 12:50 UTC