Evergreen Common Lisp — User Manual¶
This is an experiment, not a product. It probably does not work.
Evergreen is under active development. Most of it is likely broken at any given moment, and the parts that do work may not behave the way this manual says they should. It may never work.
This manual documents what Evergreen is trying to be. Where it and the implementation disagree, the implementation is what you actually get — and neither is a promise. Do not depend on it for anything that matters.
That is the point rather than an apology for it: Evergreen exists to find out whether a real language implementation — a tiered JIT, a moving generational collector, a standard library — can be built through AI-driven development. The answer is not in yet.
This manual describes EGCL's implementation of Common Lisp and its extensions. It concentrates on behavior specific to EGCL: startup, compilation, debugging, memory, foreign calls, Java integration, concurrency, and application delivery.
The manual follows the development checkout. For differences between targets, consult Platform support. For a particular operator, use the Symbol index; for a topic, use the Concept index.
Contents¶
- Introduction — conformance, compatibility, public packages, implementation characteristics, and reporting problems.
- Starting and stopping — invocation modes, initialization, batch behavior, command-line arguments, and saved worlds.
- Compilation — function and file compilation, native tiers, declarations, diagnostics, and compiler observations.
- Conditions and debugging — condition handling, restarts, debugger commands, frame inspection, and error reproduction.
- Memory and garbage collection — Lisp and foreign memory, explicit collection, finalization, and measurement.
- Foreign function interface — C types, pointers, allocation, shared libraries, calls, callbacks, and lifetime rules.
- Java integration — JVM lifecycle, Java calls and bindings, Lisp callbacks, reference scopes, and the descriptor API.
- Threads and synchronization — native threads, joins, mutexes and condition variables. Fibers and scheduler groups covers the fiber API and its current availability.
- Operating-system interface — environment, current directory, subprocesses, and process arguments.
- Profiling and efficiency — engine reports, exact counts, event recording, sampling, and measurement effects.
- Application delivery — core images, executables, cross-target creation, and Android's application lifecycle.
Recipes and supplementary reference¶
- Build and install EGCL
- Run a first Lisp program
- Load an ASDF system
- Save an executable
- Build for another platform
- Build an Android app
- Command-line options
- Image dictionary
- Android project dictionary