Files
TerminalBasic/openspec/changes/phase-6-03-pcode-bibliotheken-und-linker/proposal.md

26 lines
2.2 KiB
Markdown

## Why
BASIC wird als P-Code ausgeführt; wiederverwendbare BASIC-Bibliotheken benötigen deshalb ein linkbares TB-Format. Die native Runtime steckt bereits in `tbrt` aus 02. Ein zusätzlicher C-ABI-/Systembibliotheksexport würde unnötige Erzeugungswerkzeuge und eine zweite Aufrufschnittstelle verlangen.
## What Changes
- `.tbl` als versioniertes, plattformunabhängiges Format für übersetzte BASIC-Module mit Symbolen, Signaturen, Imports und benötigten Daten einführen. Die native Runtime bleibt ausschließlich Bestandteil von `tbrt`.
- `tbc build --library` erzeugt `.tbl`; `tbc link` verbindet ein Hauptprojekt und `.tbl`-Bibliotheken zu einem vollständigen `.tbc` beziehungsweise über `--exe` mit der passenden `tbrt`-Vorlage zu einem eigenständigen Executable.
- Den vorhandenen Projektlinker erweitern: Bibliotheken sind ohne ihre BAS-/FRM-/Include-Quellen nutzbar, Auflösung und BASIC-Semantik bleiben gemeinsam.
- `.tbl`-Verweise als geordnete `.MAK`-Einträge sowie explizite CLI-Eingaben unterstützen. Fehlende oder inkompatible Symbole, Typen, Formate und Abhängigkeiten vor Ausgabe diagnostizieren.
- Erzeugung und Linken benötigen weder C-/Rust-Compiler noch nativen Linker beim Anwender. Die IDE bindet denselben Dienst in 04 an.
## Capabilities
### New Capabilities
- `pcode-bibliotheken`: Portables TBL-Format, quellfreie Wiederverwendung, gemeinsamer P-Code-Linkvertrag und CLI-/Projektintegration.
### Modified Capabilities
Keine. TBL ist eine additive Projekt-/Buildfähigkeit; die Anpassung der bisherigen IDE-Exportbeschreibungen erfolgt mit 04. Bestehende reine Quellprojekte und vollständige TBC-Programme behalten ihren Vertrag.
## Impact
`tb-vm/src/project.rs`, `bytecode.rs`, `project_io.rs`, Frontend-Deklarationsimport und `tb-cli/src/main.rs`; Wiederverwendung der sicheren Veröffentlichung und `tbrt`-Verpackung aus [02](../phase-6-02-native-executables/proposal.md). Abhängigkeit: 02. IDE-Dokumentmodell, Ausführung, Debugger und Make-Anbindung folgen in 04; plattformübergreifende Verbraucherprüfungen in 05/06, Dokumentation und Gesamtabnahme in 07. Dieser Entwurf ersetzt den noch nicht implementierten Entwurf `phase-6-03-native-bibliotheken` vollständig.