Strategiewechsel

Bisher habe ich im GATE Projekt versucht, die herauskommenden Programme als größere “Universalwerkzeuge” anzulegen.
Doch das war falsch … oder sagen wir mal: Es ist nicht der beste Weg.

Denn jenseits der Windows und Linux Welt gelten teilweise andere Regeln und die möchte ich auch gerne einhalten.


gatecli ist ein solches Werkzeug, in dem schon viele Funktionen eingefügt wurden. Wann immer ich neue Features implementiere, erhält das Programm ein neues Modul, mit dem man das neue Feature per Konsole ausführen kann.

Doch … nun zeigt sich, dass dieser Ansatz ein Bremsklotz ist. Und dieser manifestiert sich am deutlichsten unter DOS.

Auf die Größe kommt es an

Wenn man Kompression, Grafikformate, Streams und Sockets in eine EXE statisch zusammenkompiliert, so wird diese verständlicherweise immer größer.

Zusammen mit SQLite und libreSSL kommt man da schnell auf 4 MB, was eigentlich klein ist, wenn man es mit DLLs aller Teilkomponenten vergleicht.
Unter DOS ließe sich eine solch große EXE aber gar nicht mehr laden, doch da auf dieser Platform SSL und Datenbanken fehlen, sinkt die Größe drastisch.

Trotzdem bricht der Übersetzungsvorgang seit einiger Zeit ab, da manche Datenstrukturen das 64-KByte Limit brechen.
Da hilft auch das größte Speichermodell nicht mehr weiter.

Mit über 700 KByte sprengt man nämlich deutlich die 640 KByte des konventionellen Speichers und damit ist an der Stelle Schluss.

Erkenntnis:

Wenn man alles in ein Programm packt, wird das für manche Plattformen einfach zu groß.

Aufspaltung in Kleinprogramme

Die Lösung ist der alte Unix-Ansatz, nämlich je ein kleines Programm für genau je ein Feature (oder maximal eine Feature-Familie).
In Summe vergrößert das zwar den Gesamtspeicherverbrauch, weil nun einige Dinge redundant implementiert werden müssen, doch die kleineren Programme können dann auf jeder Plattform geladen werden.

In der Theorie sollte auch die Optimierung von unnötigen Codes besser funktionieren, da der Compiler nun weniger Ausführungspfade nachverfolgen muss.

Es gibt nun aber eine andere Plattform, wo ich bisher mit “einem großen Programm” besser gefahren bin, und das ist UEFI.
Denn mit gatecli hatte ich ein Werkzeug, das wie eine eigene Shell alles verfügbar machte. Ich musste daher nur eine Binärdatei auf einen virtuellen Datenträger packen um Tests unter QEMU zu starten.

Umstellungsplan

gatecli wird nicht aufgelöst, doch ich plane mehrere Funktionen auszulagern. Es soll also eigene Binaries für Kompression und Dateioperationen geben und die bestehenden Features werden dann teilweise aus gatecli verschwinden.

Am Ende wird vermutlich etwas wie eine Mikro Shell zurückbleiben, die andere Prozesse starten können soll.

Ein offene Frage ist für mich der Umgang mit WASM, denn dort gibt es keine Prozesse so wie auf anderen Systemen.

Fazit

Umstellungen sind der letzte Dreck. Aber es ist das beste, was mir passieren konnte.

Wie bei jeder Umstellungen werde ich neue Details darüber lernen, ob Schnittstellen gut oder schlecht (also flexibel oder zu starr) ausdefiniert wurden, und das ist positiv.
Allerdings wird das auch wieder einiges an Zeit auffressen … aber so ist das Leben nun mal.

Die DOS Plattform ist außerdem eine herrliche Vorbereitung für den Einsatz von GATE Code auf Mikrocontrollern oder RTOS Plattformen.

📧 📋 🐘 | 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!