HeadlinesBriefing favicon HeadlinesBriefing.com

Abfragbare Ausführbare Dateien: SQLite-Programme

Hacker News •
×

Ich war angenehm überrascht, dass mein Artikel 'Ihr Ausführbares ist eine SQLite-Datenbank' breit Anklang fand. SELF ist ein Format, bei dem Programme SQLite-Datenbanken sind. Durch binfmt_misc wird ein benutzerdefinierter Interpreter ausgelöst, der Zeilen in der segments-Tabelle auf den Einstiegspunkt abbildet, wodurch Binary-Tooling in SQL kollabiert.

Die überraschende Erkenntnis: Wenn die ausführbare Datei eine zur Laufzeit beschreibbare Datenbank ist, kann das laufende Programm seinen Zustand transaktional in derselben Datei speichern. self-httpd demonstriert dies — ein Single-File-Webserver, der Programm, Website, Routen und Besucher-Logs enthält. Alle Zustandsaktualisierungen erfolgen in derselben SQLite-Datei wie das Programm selbst.

Während redbean selbstextrahierende ZIP-Archive mit Lua-Hooks verwendet, nutzt SELF Datenbankzeilen als Handler. Statt Lua-Skripts sind Handler SQL-INSERT-Statements in eine handlers-Tabelle. Der Schlüsselunterschied: redbean bietet Skript-Hooks, SELF bietet abfragbare Ausführbare, wo man SELECT vom laufenden Programm machen kann.

Der Prozess greift über argv[0] mit dem Pfad der Ausführbaren auf sich selbst zu. Der Interpreter gibt seine SQLite-Verbindung vor dem Sprung zum Einstiegspunkt frei, sodass das Programm seinen eigenen Dateihandle öffnen kann.

Wichtige Entitäten: Personen: Justine Tunney