2 Punkte von dopeflamingo 3 시간 전 | Noch keine Kommentare. | Auf WhatsApp teilen

Das bisherige TypeScript-Entwicklungsparadigma beruhte selbstverständlich darauf, TS-Code als hochabstrakte Sprache zunächst nach JavaScript zu transpilierten und ihn anschließend auf schweren JIT-Runtime-Engines wie V8 oder JavaScriptCore (Node.js, Bun, Deno usw.) auszuführen.

Perry, das kürzlich in der Open-Source-Szene aufgetaucht ist, räumt mit diesem traditionellen Runtime-Modell vollständig auf und ist ein in Rust geschriebener Native-First-Compiler, der darauf abzielt, TypeScript-Code direkt in standalone native Binärdateien zu kompilieren.


💡 Kernarchitektur und Merkmale

  • No Runtime (keine Runtime): Ohne schwere Zwischenschichten wie die V8-Engine, Electron oder die JVM wird TS-Code mit SWC geparst und über die LLVM-Infrastruktur direkt in Maschinencode für die Zielplattform gebaut.

  • Plattformübergreifende Builds aus einer Codebasis: Aus einer einzigen TypeScript-Codebasis werden Binärdateien erzeugt, die macOS, iOS, Android, Linux und Windows unterstützen.

    Anzeige
  • True TypeScript Support: Anders als AssemblyScript, also keine „separate TS-ähnliche Sprache“, sondern mit dem Ziel, das vollständige TypeScript-Ökosystem auf Basis des Strict Mode zu unterstützen.

  • Kompatibilität mit ultraleichten UI-Frameworks: Binärgrößen von nur wenigen MB und ein Cold Start im Subsekundenbereich nahe 0 ms. Neben der Anbindung an plattformnative GUIs wie SwiftUI, GTK4 und WinUI ist auch JSX über einen eigenen React-Renderer möglich.


🛠️ Entwicklungsstand und Einschränkungen (unter Berücksichtigung des Hacker-News-Feedbacks)
Da das Projekt zuletzt unter anderem auf HN heiß diskutiert wurde, werden auch die Aufgaben auf dem Weg zur Production-Reife klar benannt.

  • Einschränkungen bei dynamischen JS-Eigenschaften: Dynamische JavaScript-Stile wie das Einspeisen beliebiger Felder/Methoden in Objekte zur Laufzeit oder das Verändern von Prototypen werden aufgrund der statischen Kompilierung nicht unterstützt; stattdessen basiert das System auf einer strikten und deterministischen TypeScript-Teilmenge.

    Anzeige
  • Emulation eingebauter Node.js-Module: Derzeit wird die HTTP-Standardbibliothek von Node.js auf Basis des Rust-Ökosystems mit hyper, rustls, tokio usw. emuliert. Einige Module wie Fastify lassen sich bereits kompilieren, und die Entwicklung schreitet schnell voran. Die 100%ige Kompatibilität mit komplexeren Bibliotheken aus dem Ökosystem, etwa Express mit seinen verschachtelten dynamischen Imports, ist jedoch noch eine Aufgabe der Alpha-Phase.


# Die Verwendung ist extrem einfach  
$ perry compile src/main.ts -o myapp  
$ ./myapp  # Ausführen einer reinen nativen Binärdatei ohne Abhängigkeiten  

Als Versuch, TypeScript aus seiner Bindung an das Web-Ökosystem zu lösen und auf Systemprogrammierung sowie ultraleichte native Apps auszuweiten, ist dies ein Projekt, das für alle spannend zu beobachten sein dürfte, die sich für performante Systemarchitekturen oder LLVM-Compiler-Pipelines interessieren.

GitHub: https://github.com/PerryTS/perry

Noch keine Kommentare.

Noch keine Kommentare.