|
@@ -1,4 +1,4 @@
|
|
|
-# Session 2026-10-22 — corpus triage, libc, SYSTEM, proc types, sized storage
|
|
|
|
|
|
|
+# Session 2026-10-22 — corpus triage, libc, SYSTEM, proc types, sized storage, SysClock
|
|
|
|
|
|
|
|
Branch **`master`**. Continues `summary_session-2026-10-19.md`; the
|
|
Branch **`master`**. Continues `summary_session-2026-10-19.md`; the
|
|
|
only plan source was its "Remaining" list (corpus `LANG` triage).
|
|
only plan source was its "Remaining" list (corpus `LANG` triage).
|
|
@@ -7,16 +7,16 @@ only plan source was its "Remaining" list (corpus `LANG` triage).
|
|
|
|
|
|
|
|
| gate | session start | end |
|
|
| gate | session start | end |
|
|
|
| --- | --- | --- |
|
|
| --- | --- | --- |
|
|
|
-| suite (`compiler/run_tests.sh`) | 249/249 | **257/257** |
|
|
|
|
|
|
|
+| suite (`compiler/run_tests.sh`) | 249/249 | **258/258** |
|
|
|
| fixpoint (`bootstrap/fixpoint.sh`) | OK (3,882,337 B) | **OK (4,007,769 B)** |
|
|
| fixpoint (`bootstrap/fixpoint.sh`) | OK (3,882,337 B) | **OK (4,007,769 B)** |
|
|
|
-| corpus (`tools/v3-corpus/corpus.sh`) | 467/612 | **503/612, 0 crashes** |
|
|
|
|
|
|
|
+| corpus (`tools/v3-corpus/corpus.sh`) | 467/612 | **505/612, 0 crashes** |
|
|
|
|
|
|
|
|
Reproduce:
|
|
Reproduce:
|
|
|
|
|
|
|
|
```sh
|
|
```sh
|
|
|
-cd compiler && ./build.sh && ./run_tests.sh # 257/257
|
|
|
|
|
|
|
+cd compiler && ./build.sh && ./run_tests.sh # 258/258
|
|
|
cd .. && TMP="$PWD/.scratch/fixpoint" ./bootstrap/fixpoint.sh
|
|
cd .. && TMP="$PWD/.scratch/fixpoint" ./bootstrap/fixpoint.sh
|
|
|
-tools/v3-corpus/corpus.sh # 503 OK, 0 crash
|
|
|
|
|
|
|
+tools/v3-corpus/corpus.sh # 505 OK, 0 crash
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
## Triage method
|
|
## Triage method
|
|
@@ -31,7 +31,7 @@ source line. They fall into these buckets:
|
|
|
| declaration order (type/const/var used before its declaration) | ~25 | correctly rejected (`docs/gaps/`); not a target |
|
|
| declaration order (type/const/var used before its declaration) | ~25 | correctly rejected (`docs/gaps/`); not a target |
|
|
|
| gm2 extensions (`ASM`, `''` NUL char, `666B`, absolute `VAR [addr]`) | ~7 | not a target unless chosen |
|
|
| gm2 extensions (`ASM`, `''` NUL char, `666B`, absolute `VAR [addr]`) | ~7 | not a target unless chosen |
|
|
|
| ISO features actually missing | ~20 | `PACKEDSET`, exceptions/`UNIQUE`, `__FUNCTION__`, `PROC` as a result type; sized SYSTEM types **fixed below** |
|
|
| ISO features actually missing | ~20 | `PACKEDSET`, exceptions/`UNIQUE`, `__FUNCTION__`, `PROC` as a result type; sized SYSTEM types **fixed below** |
|
|
|
-| **conforming** clusters: arrays, subranges, ordinal `FOR`, empty string, libc prototypes, SYSTEM sized types, procedure types | 36 | **fixed this session** |
|
|
|
|
|
|
|
+| **conforming** clusters: arrays, subranges, ordinal `FOR`, empty string, libc prototypes, SYSTEM sized types, procedure types, SysClock | 38 | **fixed this session** |
|
|
|
|
|
|
|
|
## What landed
|
|
## What landed
|
|
|
|
|
|
|
@@ -146,6 +146,17 @@ bits). `SET OF WORD16`/`SET OF INTEGER16` work (65536-element span,
|
|
|
the documented set limit). `WORD`/`WORD32` remain the 32-bit word.
|
|
the documented set limit). `WORD`/`WORD32` remain the 32-bit word.
|
|
|
Regression `t_word16`.
|
|
Regression `t_word16`.
|
|
|
|
|
|
|
|
|
|
+### ISO `SysClock` — `stdlib/sysclock.def` / `.mod`
|
|
|
|
|
+The stdlib stub only had PIM-style `Time`/`Clock`, so `testclock` and
|
|
|
|
|
+`testclock2` failed on `CanGetClock`/`DateTime`/`GetClock`. `SysClock`
|
|
|
|
|
+now implements the ISO 10514-1 interface: `maxSecondParts`, `Month`/
|
|
|
|
|
+`Day`/`Hour`/`Min`/`Sec`/`Fraction`/`UTCDiff`, `DateTime`,
|
|
|
|
|
+`CanGetClock`, `CanSetClock`, `IsValidDateTime`, `GetClock`,
|
|
|
|
|
+`SetClock`. `GetClock` converts the shim's epoch seconds to a UTC
|
|
|
|
|
+civil date (Hinnant's algorithm; `zone = 0`, no DST); `SetClock` is a
|
|
|
|
|
+no-op with `CanSetClock = FALSE`. `Time`/`Clock` remain as extras.
|
|
|
|
|
+Corpus **+2**: `testclock`, `testclock2`. Regression `TSysClock`.
|
|
|
|
|
+
|
|
|
## Commits
|
|
## Commits
|
|
|
|
|
|
|
|
Three tagged states, each green on all gates:
|
|
Three tagged states, each green on all gates:
|
|
@@ -159,6 +170,7 @@ Three tagged states, each green on all gates:
|
|
|
| `f236600` | `v3-proc-types` | ISO procedure-type syntax (+4) |
|
|
| `f236600` | `v3-proc-types` | ISO procedure-type syntax (+4) |
|
|
|
| `7621f16` | `v3-byte` | true 8-bit `BYTE`/`SBYTE` storage |
|
|
| `7621f16` | `v3-byte` | true 8-bit `BYTE`/`SBYTE` storage |
|
|
|
| `a5d0f16` | `v3-word16` | true 16-bit `WORD16`/`CARDINAL16`/`INTEGER16` |
|
|
| `a5d0f16` | `v3-word16` | true 16-bit `WORD16`/`CARDINAL16`/`INTEGER16` |
|
|
|
|
|
+| `pending` | `v3-sysclock` | ISO `SysClock` API |
|
|
|
|
|
|
|
|
## Lessons
|
|
## Lessons
|
|
|
|
|
|
|
@@ -195,25 +207,23 @@ word model, so the narrow integer/word names share `INTEGER`/
|
|
|
1. **A real `libc.def`** — the built-in prototype table covers the
|
|
1. **A real `libc.def`** — the built-in prototype table covers the
|
|
|
common functions; a definition module (or `DEFINITION MODULE FOR
|
|
common functions; a definition module (or `DEFINITION MODULE FOR
|
|
|
"C"`) would let users extend it. Not needed for the corpus now.
|
|
"C"`) would let users extend it. Not needed for the corpus now.
|
|
|
-2. **ISO `SysClock`** — the stdlib stub lacks `DateTime`,
|
|
|
|
|
- `CanGetClock`, `GetClock`, `SetClock` (`testclock`, `testclock2`).
|
|
|
|
|
-3. **`PACKEDSET`**, ISO exceptions/`UNIQUE`, `__FUNCTION__` — each
|
|
|
|
|
|
|
+2. **`PACKEDSET`**, ISO exceptions/`UNIQUE`, `__FUNCTION__` — each
|
|
|
one or two files; larger or gm2-flavoured.
|
|
one or two files; larger or gm2-flavoured.
|
|
|
-4. **Runtime subrange range checks** — the remaining conformance
|
|
|
|
|
|
|
+3. **Runtime subrange range checks** — the remaining conformance
|
|
|
difference from this session's subrange work.
|
|
difference from this session's subrange work.
|
|
|
-5. `STATUS.md` "what remains" is the live list.
|
|
|
|
|
|
|
+4. `STATUS.md` "what remains" is the live list.
|
|
|
|
|
|
|
|
## Publication
|
|
## Publication
|
|
|
|
|
|
|
|
- Branch `master`; feature tags `v3-corpus-triage`, `v3-empty-string`,
|
|
- Branch `master`; feature tags `v3-corpus-triage`, `v3-empty-string`,
|
|
|
`v3-libc-prototypes`, `v3-system-types`, `v3-proc-types`, `v3-byte`,
|
|
`v3-libc-prototypes`, `v3-system-types`, `v3-proc-types`, `v3-byte`,
|
|
|
- `v3-word16`.
|
|
|
|
|
|
|
+ `v3-word16`, `v3-sysclock`.
|
|
|
- `v3-session-2026-10-22` is a **moving** session tag: it was advanced
|
|
- `v3-session-2026-10-22` is a **moving** session tag: it was advanced
|
|
|
after publication, so the remote rejects updating it without
|
|
after publication, so the remote rejects updating it without
|
|
|
`--force`. The feature tags are immutable checkpoints.
|
|
`--force`. The feature tags are immutable checkpoints.
|
|
|
|
|
|
|
|
```sh
|
|
```sh
|
|
|
-git push origin master v3-word16
|
|
|
|
|
|
|
+git push origin master v3-sysclock
|
|
|
# only if you want the moving tag advanced on the remote too:
|
|
# only if you want the moving tag advanced on the remote too:
|
|
|
git push --force origin refs/tags/v3-session-2026-10-22
|
|
git push --force origin refs/tags/v3-session-2026-10-22
|
|
|
```
|
|
```
|