From 22df891893d30e9906d0b14fc3ae5d8e67d500b2 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Sat, 3 Oct 2026 14:03:48 -0700 Subject: Chapter renumber, and split ch 17 Renumber chapters 10a, 10b, 11, 12, 13, 14 -> 10, 11, 13, 12, [11,14]. Split ch 17 into a 17a and 17b; shuffle around im/mutable syntax to be consistent, and present it more slowly. THe new immutable syntax is pushed through all later chapters --- README.md | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 0bc961f5..72a188c5 100644 --- a/README.md +++ b/README.md @@ -51,17 +51,17 @@ The Simple language is styled after a subset of C or Java. * [Chapter 7](chapter07/README.md): `while` statement; looping constructs - eager phi approach. * [Chapter 8](chapter08/README.md): Looping constructs continued, lazy phi creation, `break` and `continue` statements. * [Chapter 9](chapter09/README.md): Global Value Numbering. Iterative peepholes to fixpoint. Worklists. -* [Chapter 10a](chapter10a/README.md): User defined structs, pointers and null +* [Chapter 10](chapter10/README.md): User defined structs, pointers and null analysis. One memory value in SSA. Loads, stores, and an executable evaluator. -* [Chapter 10b](chapter10b/README.md): Equivalence class aliasing. Lazy memory +* [Chapter 11](chapter11/README.md): Equivalence class aliasing. Lazy memory partitioning with `MemMerge`, `MemPhi`, and `BulkMemPhi`. -* [Chapter 11](chapter11/README.md): Global Code Motion - Scheduling. -* [Chapter 12](chapter12/README.md): Float type. -* [Chapter 13](chapter13/README.md): Nested references in Structs. -* [Chapter 14](chapter14/README.md): Narrow primitive types (e.g. bytes) +* [Chapter 12](chapter12/README.md): Reference fields, forward references and recursive structs. +* [Chapter 13](chapter13/README.md): Global Code Motion - Scheduling. +* [Chapter 14](chapter14/README.md): Numeric types: floats, narrow integers, ranges and rounding to `f32`. * [Chapter 15](chapter15/README.md): One dimensional static length array type, with array loads and stores. * [Chapter 16](chapter16/README.md): Constructors -* [Chapter 17](chapter17/README.md): Mutability & Syntax Sugar: `var`, `val`, `x+=y`, `for(init; test; next) body` +* [Chapter 17a](chapter17a/README.md): Binding mutability, reference permissions, and deep read-only views. +* [Chapter 17b](chapter17b/README.md): Syntax sugar: `var`, `val`, `x+=y`, `for(init; test; next) body` * [Chapter 18](chapter18/README.md): Functions and calls. * [Chapter 19](chapter19/README.md): Instruction selection and portable compilation * [Chapter 20](chapter20/README.md): Graph Coloring Register Allocation @@ -74,7 +74,7 @@ The Simple language is styled after a subset of C or Java. ## Building across chapters The optional [interactive graph viewer](graph/README.md) is shared in `graph/`. -Chapters 1–25, including 10a and 10b, launch it with `make view` from the chapter directory. +Chapters 1–25 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 @@ -96,20 +96,16 @@ 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. The 10a/10b split is complete; forwarding 10b's -memory representation now runs through Chapter 24, including constructors, -mutability, whole-memory function calls, machine-code execution, cyclic field -types, and SCCP. Chapters 22-25 are ready for review. Chapter 25 includes the -related Load-search, Phi-factoring, and scheduling corrections while retaining -its separate constructor-memory and incomplete-type SSA design. +are tracked separately there. Chapters 10-14 now group whole memory, +lazy alias splitting, references, GCM, and numeric types in that order. +The memory representation is forwarded through Chapter 25. To build and test just the memory chapters: ```sh -make lib tests release CHAPTERS="chapter10a chapter10b" +make lib tests release CHAPTERS="chapter10 chapter11 chapter12" ``` -The root Maven reactor also includes both modules. Each chapter has its own -IDEA module descriptor and depends on the shared `graph` module. Chapter -directories with letter suffixes participate in the normal Make chapter discovery -and in the linear-history workflow. +The root Maven reactor includes every chapter. Chapters 10-14 have portable +IDEA module descriptors depending on the shared `graph` and `print` modules. +Make and the linear-history workflow discover the numbered chapter directories. -- cgit v1.2.3