|
|
@@ -2,8 +2,8 @@
|
|
|
|
|
|
**Date:** 2026-10-24 · **V3 state:** open arrays, dialect library
|
|
|
folders and separate compilation with `M2 -I`/incremental objects
|
|
|
-(suite 306/306, self-hosting fixpoint OK 3,808,348 bytes, corpus
|
|
|
-519/612, 0 crashes).
|
|
|
+(suite 307/307, self-hosting fixpoint OK 3,809,843 bytes, corpus
|
|
|
+521/612, 0 crashes).
|
|
|
|
|
|
**Scope and sources.**
|
|
|
|
|
|
@@ -72,7 +72,7 @@ change individual cells.
|
|
|
| Basic integer/real/bool/char types | ✅ | ✅ | ✅ (+ `OCTET`, `LONGCARD`) | ✅ PIM types | ✅ |
|
|
|
| Subranges | ✅ | ✅ | ✅ (`[lo..hi] OF Base`) | ✅ | ✅ (typed CHAR/enum subranges) |
|
|
|
| Enumerations | ✅ | ✅ | ✅ extensible | ✅ | ✅ |
|
|
|
-| Sets (`SET OF`) | ✅ any finite ordinal (impl. limit) | ✅ | 🔄 `SET OF <enumType>` only | ✅ range/base/enum bases | 🔄 bool/char/byte/16-bit/enum/small-int; span ≤ 65536; no `SET OF CARDINAL` |
|
|
|
+| Sets (`SET OF`) | ✅ any finite ordinal (impl. limit) | ✅ | 🔄 `SET OF <enumType>` only | ✅ range/base/enum bases | 🔄 bool/char/byte/16-bit/enum/small-int; wide spans ≤ 1,000,000 bits; bounded `SET OF CARDINAL` |
|
|
|
| `PACKEDSET` | ❌ (ISO) | ✅ | ❌ | ❌ | ✅ (1/2/4 bytes, span ≤ 32) |
|
|
|
| Fixed / multi-dimensional arrays | ✅ `[a], [b] OF` | ✅ | ✅ `ARRAY count, count OF` (zero-based) | ✅ | ✅ both `[a], [b]` and `[a, b]` |
|
|
|
| Open arrays (1-D) | ✅ | ✅ | ✅ (`BARE ARRAY OF`) | ✅ | ✅ |
|
|
|
@@ -162,8 +162,8 @@ change individual cells.
|
|
|
payload with per-level views; payload `SIZE`/`ADR` and row/subarray
|
|
|
conversion are implemented. Its hard gaps are **complex arithmetic,
|
|
|
finalization/protection, ISO OO** and parts of the **word model**
|
|
|
- (`SHORTREAL`, `REAL` width), plus a **65536-bit `SET` span limit**
|
|
|
- and a **32-bit `PACKEDSET` limit**. Self-referential pointer records
|
|
|
+ (`SHORTREAL`, `REAL` width), plus a **1,000,000-bit wide `SET`
|
|
|
+ limit** and a **32-bit `PACKEDSET` limit**. Self-referential pointer records
|
|
|
and chained pointer-field designators (`p^.next^.value`) are
|
|
|
supported. **Separate compilation** is now available for normal
|
|
|
modules: `M2 -c` emits one object per unit, library objects have no
|
|
|
@@ -181,7 +181,8 @@ change individual cells.
|
|
|
are 32-bit; `LONGINT`/`LONGCARD` are 64-bit; every `REAL`/`SHORTREAL`
|
|
|
is 8 bytes; `COMPLEX*` is a placeholder.
|
|
|
- **Sets:** bases limited to bool/char/byte/16-bit/enum/small subranges;
|
|
|
- `SET` total span ≤ 65536; no `SET OF CARDINAL`. `PACKEDSET` uses
|
|
|
+ wide `SET` spans up to 1,000,000 bits; `SET OF CARDINAL` is bounded
|
|
|
+ to that span; `SET OF INTEGER` remains rejected. `PACKEDSET` uses
|
|
|
1/2/4-byte storage with a 32-bit span limit (wider spans are a loud
|
|
|
`230`).
|
|
|
- **Runtime range checks** are emitted for subrange assignment, value
|