Zum Inhalt

10 — Source Audit: betroffene Online-Spec-Bereiche

Status: Arbeitsnotiz


1. Online-Specs geprüft

Verwendete Online-Bereiche:

https://specs.iowling.at/
https://specs.iowling.at/00-refinements/
https://specs.iowling.at/02-typsystem/
https://specs.iowling.at/04-qualifier-effekte-konversionen-wire/
https://specs.iowling.at/04-axiomatik-profiles-executables/
https://specs.iowling.at/04a-label-inferenz-regeln/
https://specs.iowling.at/07-cast-effekte-refinements/
https://specs.iowling.at/10-runtime-handles-und-memory-safety/
https://specs.iowling.at/11-jadevalue-und-register-layout/
https://specs.iowling.at/Notizen/jdl-types-tags-phantoms/

Die lokalen Dateien im Projektverzeichnis wurden absichtlich nicht als Quelle verwendet.


2. Festgestellte Altlasten

type für Meta-Begriffe

Problem:

type TaskLocal = <{ own: Unique, share: Local }>

Semantisch kein Werttyp.

Ziel:

tag TaskLocal
    :> Own(Unique)
    :> Share(Local)

type ... : enum für compile-time Policies

Problem:

type SharePolicy : enum = | Local | Send | Sync

Wenn diese Varianten nie Runtime-Werte sein sollen, ist type enum falsch.

Ziel:

tag SharePolicy : enum =
    | Local
    | Send
    | Sync

Phantom-Beispiele mit Wert-Enum

Problem:

type UserPhase : enum = ...
type ManagedUser[phantom P: UserPhase] : struct { ... }

Ziel:

tag UserState : enum = ...
type ManagedUser[phantom State: UserState] : struct { ... }

Qualifier-Kombinationen

Problem:

Qualifier*

Ziel:

TypeParamQualifier?

Narrow/Try als Suffix-Modus

Problem:

provide CastTo[UserSummary]: Narrow for User { ... }
provide CastTo[UserId]: Try[ConvError] for User { ... }

Ziel muss noch final entschieden werden. Konsolidierte Semantik:

Cast-Modus ist Eigenschaft der Cast-Relation.
Try ist fallibler Modus, aber `=?` ist Propagation zur Boundary.

deps-Syntax

Problem: alte Beispiele in Runtime-/informativem Material.

Ziel: imperativer Service-Parameter oder Effect[R, E, D].


Ref vs. Rc

Problem: unterschiedliche Schreibweisen.

Ziel: Rc als Memory-Policy für Refcounted Heap-Objekte.


3. Implementierungsrelevante Konsequenzen

- TagId darf nicht TypeId sein.
- TagEngine gehört in die Type Engine.
- Tags bekommen CompilerDb Queries.
- Tags bekommen keinen RuntimeBus.
- Tag-FQNs/Fingerprints sind für Plugins und Caches nötig.
- TypeFn-Auswertung muss Type-Level-Werte inklusive TagId verarbeiten.
- Meta-Normalisierung muss Tag-Meta expandieren.
- Closure muss Provenienz `tag` und `typefn` führen.

4. Empfohlene Reihenfolge für echte Spec-Integration

1. Neues Ontologie-Kapitel einfügen.
2. 00-refinements auf Tags statt Profile-Type-Aliases ändern.
3. 02-typsystem auf tag enum + Phantom-Tags ändern.
4. TypeFn-Kapitel schärfen.
5. Axiomatik-Provenienz aktualisieren.
6. Label-Inferenz source_kind `tag` ergänzen.
7. JME-Kapitel auf tag-basierte Memory-/Region-Policies ändern.
8. CompilerDb/TypeEngine D-Implementierungsabschnitt ergänzen.
9. Cast/try/=? getrennt konsolidieren.
10. Alte `deps`, `Ref`, `UserPhase`, `Profile`-Altlasten entfernen.