Browse Source

docs: record v3-function-exception

Eric Streit 2 days ago
parent
commit
4017d8f7b4
4 changed files with 21 additions and 16 deletions
  1. 3 2
      README.md
  2. 1 1
      docs/STATUS.md
  3. 14 11
      docs/git-branches-tags.md
  4. 3 2
      docs/summary_session-2026-10-23-exceptions.md

+ 3 - 2
README.md

@@ -55,7 +55,8 @@ docs/              STATUS.md, plan.md, plan-*.md, analysis_*.md, summary_*.md
   V3's declaration-order policy.
 - Active branch **`master`**, feature state **`v3-ptrchain`**.
   Recent milestones: `PACKEDSET`, ISO exceptions (`EXCEPT`/`RETRY`,
-  `EXCEPTIONS`, `M2EXCEPTION`, catchable language traps), and
+  `EXCEPTIONS`, `M2EXCEPTION`, catchable language traps including
+  `functionException`), and
   self-referential pointer records/chained fields.
 
 Lowers today: program modules; `CONST`/`VAR`/`TYPE` (scalars,
@@ -67,7 +68,7 @@ connectives; `IF/CASE/WHILE/REPEAT/LOOP/FOR`, `GOTO`/labels;
 procedures with value/`VAR` params, functions, recursion, `FORWARD`,
 nested procedures (static-link display), procedure values;
 ISO exceptions (`EXCEPT`/`RETRY`, `SYSTEM.THROW`, `EXCEPTIONS`,
-`M2EXCEPTION`, catchable index/range/CASE traps);
+`M2EXCEPTION`, catchable index/range/CASE/function traps);
 Clarion-form `CLASS` with methods, inheritance and virtual dispatch;
 PIM coroutines (`PROCESS`/`NEWPROCESS`/`TRANSFER`/`IOTRANSFER`);
 Unicode (`UCHAR` codepoints, `UString`, UTF-8 at the edges); ISO type

+ 1 - 1
docs/STATUS.md

@@ -15,7 +15,7 @@ This answers "where are we now?".
   (`rc=0`); the corpus stays 512 because it was already compile-OK.
   The pointer-chain (`p^.next^.value`) layout/codegen gap is fixed
   (`t_ptrchain`).
-- Branch **`master`**, feature state **`v3-exceptions` + `v3-ptrchain`**; tree clean.
+- Branch **`master`**, feature state **`v3-exceptions` + `v3-ptrchain` + `v3-function-exception`**; tree clean.
 
 ## Architecture (current)
 

+ 14 - 11
docs/git-branches-tags.md

@@ -1,9 +1,10 @@
 # Git branches and tags — how this repository is organised
 
-**Snapshot:** 2026-10-23, after `v3-ptrchain`. `master` =
-`e804e57` (the pointer-chain fix) plus this map update;
-`origin/master` = `a02e24c`.  The pointer-chain fix and its docs are local and **not pushed yet**;
-M1–M5 are on the remote.  305 tags (303 `v3-*` checkpoints).
+**Snapshot:** 2026-10-23, after `v3-function-exception`. `master` =
+`4238f67` (the functionException fix) plus a docs follow-up;
+`origin/master` = `5c92728`.  The functionException fix and README/docs
+are local and **not pushed yet**; M1–M5 and `v3-ptrchain` are on the
+remote.  306 tags (304 `v3-*` checkpoints).
 
 Mental model:
 
@@ -14,7 +15,7 @@ Mental model:
 
 | Branch | State | What it is |
 | --- | --- | --- |
-| **`master`** | `e804e57` + docs, 2 commits ahead of origin | The only active branch; all current work is here. |
+| **`master`** | `4238f67` + docs, 2 commits ahead of origin | The only active branch; all current work is here. |
 | `ast-stage-c` | `0f611c0` (2026-10-08), local only | Old stage branch, fully merged into master. Stale. |
 | `generics-inc1` | `6639c19`, 6 commits behind `origin/generics-inc1` | Old generics work, fully merged into master. Stale. |
 | `resolve-check` | `95ca4d6`, in sync with origin | Old branch merged into master. Stale. |
@@ -46,6 +47,7 @@ Each points at the commit that landed a feature, all with green gates:
 | `v3-packedset` | `6b2df4c` | ISO `PACKEDSET`, 1/2/4-byte storage |
 | `v3-exceptions` | `02b3763` | ISO exceptions M1–M4: parser, runtime, libraries, traps |
 | `v3-ptrchain` | `e804e57` | self-referential record layout and `p^.next^.value` |
+| `v3-function-exception` | `4238f67` | result function falling off its end |
 
 These are immutable checkpoints.  Useful commands:
 
@@ -87,19 +89,20 @@ git tag -d v3-session-2026-10-22-final
 git push origin :refs/tags/v3-session-2026-10-22-final
 ```
 
-## Why 305 tags?
+## Why 306 tags?
 
 The project convention is one `v3-*` tag per green step across all
 sessions (two-phase parse slices, generics increments, Unicode, stdlib,
 …).  They are a searchable history of passing states, not branches.
-`git tag --list | wc -l` = 305 (303 `v3-*`) is expected; only the
+`git tag --list | wc -l` = 306 (304 `v3-*`) is expected; only the
 recent ones above matter for the current session.
 
 ## Current state
 
-- `master` = `e804e57` + docs, **2 commits ahead** of
-  `origin/master` (`a02e24c`).
-- `v3-ptrchain` is local; push it with `master` when ready.  Earlier
-  exceptions/PACKEDSET/history tags are already on the remote.
+- `master` = `4238f67` + docs, **2 commits ahead** of
+  `origin/master` (`5c92728`).
+- `v3-function-exception` is local; push it with `master` when ready.
+  `v3-ptrchain` and the exceptions/PACKEDSET/history tags are already
+  on the remote.
 - Next session: start from `master` and read
   `docs/handoff-2026-10-23-next.md`.

+ 3 - 2
docs/summary_session-2026-10-23-exceptions.md

@@ -101,7 +101,7 @@ because `ip` is declared after the procedures, like `onebyte*`.
 | `02b3763` | `v3-exceptions` | M4 catchable index/range/CASE traps |
 | `96a3080` | `v3-session-2026-10-23-exceptions-end` | M5 summary/docs |
 | `e804e57` | `v3-ptrchain` | self-referential record layout / pointer chains |
-| functionException fix | `v3-function-exception` | result-function fall-through trap |
+| `4238f67` | `v3-function-exception` | result-function fall-through trap |
 
 The design commit is `2a30d8c`.
 
@@ -119,7 +119,8 @@ tagged `v3-ptrchain` (`e804e57`).
 `QbeGen.EndFunc` now traps with language code 4 when a result function
 reaches its end without `RETURN`, instead of silently returning 0.
 `t_except_funcret` catches the exception and `t_trap_funcret` verifies
-the unhandled rc=134 path.  Tagged `v3-function-exception`.
+the unhandled rc=134 path.  Tagged `v3-function-exception`
+(`4238f67`).
 
 ---