diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 37 |
1 files changed, 19 insertions, 18 deletions
@@ -70,20 +70,22 @@ The Simple language is styled after a subset of C or Java. * [Chapter 21](docs/chapter21/README.md): Instruction Encodings & ELF * [Chapter 22](docs/chapter22/README.md): A Simple Hello, World! * [Chapter 23](docs/chapter23/README.md): Methods and Types Revisited -* [Chapter 24](docs/chapter24/README.md): Chained conditionals and SCCP -* Chapter 25: Modules, Separate Compilation, and SSA Construction with Incomplete Types - -The [approved split](docs/chapter-split.md) uses descriptive chapter names -while the teaching boundaries settle. The numbered chapters remain comparison -baselines during extraction. The first named snapshots are: - -* [SCCP Within a Function](chapter-sccp/README.md) -* [SCCP Across Functions](chapter-interprocedural-sccp/README.md) +* [Chapter 24a](docs/chapter24a/README.md): SCCP Within a Function +* [Chapter 24b](docs/chapter24b/README.md): SCCP Across Functions +* [Chapter 25](docs/chapter25/README.md): SSA Before Types Are Known +* [Chapter 26](docs/chapter26/README.md): Construction and Private Memory +* [Chapter 27](docs/chapter27/README.md): Escape Analysis and Unknown Callers +* [Chapter 28a](docs/chapter28a/README.md): Modules and Lazy Class Initialization +* [Chapter 28b](docs/chapter28b/README.md): Separate Compilation + +Appendices: [Native libraries](docs/appendices/native-libraries.md), +[optimizer and backend tuning](docs/appendices/optimizer-tuning.md). +Future compiler and language work is collected in the [roadmap](docs/roadmap.md). ## Building across chapters The optional [interactive graph viewer](graph/README.md) is shared in `graph/`. -Chapters 1–25 launch it with `make view` from the chapter directory. +All chapters launch it with `make view` from the chapter directory. The [debug printers](print/README.md) are shared in `print/`; Chapter 2 needs only a one-line expression format. A shared `BaseNode` supplies identity and edge @@ -91,7 +93,7 @@ access to both printers and the viewer; chapter adapters add semantic details as the IR grows. The [instruction encoders](isa/README.md) share x86-64, ARM, and RISC-V byte -emission for Chapters 21-25, along with ARM/RISC-V test evaluators. Machine-node +emission for Chapters 21–28b, along with ARM/RISC-V test evaluators. Machine-node selection, register allocation, and code layout remain in each chapter; the shared layer takes concrete operands and writes bytes. @@ -100,14 +102,12 @@ The top-level Makefile runs each chapter's `tests`, `tags` (also `tag`), `make tests`. CI runs `make lib tests CTAGS=` on Linux with JDK 21. The Make targets also build -Chapter 25's native runtime and `sys` library before running the tests that use +Chapter 28b's native runtime and `sys` library before running the tests that use them; Maven's Java build alone does not produce those prerequisites. -The [chapter backport queue](docs/chapter-backports.md) records proposed small -corrections and the per-chapter test/review workflow. Larger architectural moves -are tracked separately there. Chapters 10-14 now group whole memory, +Chapters 10-14 cover whole memory, lazy alias splitting, references, GCM, and numeric types in that order. -The memory representation is forwarded through Chapter 25. +Later chapters build on this memory representation. To build and test just the memory chapters: @@ -115,6 +115,7 @@ To build and test just the memory chapters: make lib tests release CHAPTERS="chapter10 chapter11 chapter12" ``` -The root Maven reactor includes every chapter. Chapters 10-14 have portable -IDEA module descriptors depending on the shared `graph` and `print` modules. +Every chapter has an IntelliJ module with its own compiler and test classpath. +See [the IntelliJ setup](docs/intellij.md) to open and debug any chapter's tests. +The root Maven reactor also includes every chapter. Make and the linear-history workflow discover the numbered chapter directories. |
