Perl, eine der langlebigsten und mächtigsten Skriptsprachen der IT-Welt, hat sich seit seiner Einführung in den frühen 1990er Jahren stetig weiterentwickelt. Doch trotz seiner Flexibilität und Funktionsvielfalt war die plattformübergreifende Nutzung von Perl über verschiedene Betriebssysteme hinweg häufig mit Herausforderungen verbunden. Der Grund lag vor allem in der Notwendigkeit, Perl für jedes System speziell zu kompilieren und die Abhängigkeiten und Modulerweiterungen für verschiedene Umgebungen zu pflegen. Doch 2022 brachte eine bemerkenswerte Entwicklung einen frischen Wind: Perl wurde tatsächlich portabel – dank einer Kombination aus der Cosmopolitan libc und einem innovativen Projekt namens APPerl. Die Cosmopolitan libc ist eine außergewöhnliche C-Bibliothek, die den Bau sogenannter Actually Portable Executables (APEs) ermöglicht.
Diese statisch gelinkten Binärdateien sind in der Lage, auf mehreren Betriebssystemen zu laufen, ohne dass plattformspezifische Anpassungen notwendig sind. Konkret bedeutet das, dass ein einziges Perl-Binary auf Windows, Linux, macOS, BSD, Solaris und sogar auf BIOS-Ebene lauffähig ist. Diese Vielseitigkeit eröffnet völlig neue Horizonte für Systemadministratoren, Entwickler und Anwender. Die Idee dahinter ist so einfach wie genial: Anstatt für jede Zielplattform eine individuelle Perl-Version zu kompilieren und zu pflegen, kann man mit APPerl dieselbe Binärdatei verteilen und einsetzen. Ein Systemadministrator, der sowohl Windows- als auch Linuxmaschinen betreut, muss sich dadurch nicht mehr um unterschiedliche Perl-Builds kümmern.
Entwickler können ihren Anwendern eine native, vorkompilierte Perl-Version anbieten, wodurch die Installation und Nutzung deutlich erleichtert wird. Auch im Bereich DevOps und containerbasierter Umgebungen ergeben sich durch statische, plattformübergreifende Binaries viele Vorteile. Die technische Umsetzung verlangt jedoch einiges an Know-how und Fingerspitzengefühl. Perl ist in C geschrieben und wird traditionell mit speziellen Build-Konfigurationen für jede Plattform erstellt. Die Cosmopolitan libc löst dieses Problem indem sie ihre eigenen Regeln und Mechanismen anwendet.
Beispielsweise ist sie nicht an einen bestimmten Compiler gebunden und ermöglicht so eine flexible Integration der verschiedenen Toolchains. Für die Portierung von Perl wurde zunächst ein sogenanntes miniperl gebaut, eine reduzierte Perl-Variante ohne Erweiterungen, die den Aufbau des vollständigen Perl ermöglicht. Dabei mussten zahlreiche systemnahe Details angepasst werden, darunter der Umgang mit Headerdateien, die Implementierung von POSIX-Funktionen und die Behandlung von Symbolen, die bisher zur Compile-Zeit festgelegt wurden. Ein großer Knackpunkt war die Kompatibilität der getesteten Funktionen und Module auf den verschiedenen Plattformen. Cosmopolitan libc verwendet beispielsweise ein internes ZIP-Dateisystem (zipos), das in APE-Binärdateien funktioniert, aber besondere Anforderungen stellt.
Ein cleverer Trick war die Nutzung von Tools wie objcopy, um aus ELF-Binärdateien die portablen APEs zu erzeugen, was schließlich die Stabilität deutlich steigerte. Auch die Sicherheitsmechanismen des Compilers, wie der Stack Protector von gcc, wurden deaktiviert, da sie mit Cosmopolitan inkompatibel sind. Das Herzstück vieler Perl-Standardmodule sind Konstanten, die unter klassischen Betriebssystemen zur Compile-Zeit bekannt sind. Mit Cosmopolitan mussten diese Laufzeit-konstanten neu via C-Extensions dynamisch geladen werden, was eine tiefgreifende Anpassung erforderte. Viele der Modultests, darunter wichtige Bestandteile wie Errno, Socket und POSIX, konnten so erfolgreich ausgeführt werden.
Das gesamte Perl-Test-Framework half dabei, verbliebene Fehler aufzudecken und die Cosmopolitan libc kontinuierlich um fehlende Funktionen zu erweitern. Doch APPerl geht noch einen Schritt weiter: Die einzelnen Perl-Module und Skripte werden direkt in die binäre Datei als ZIP-Archiv eingebettet. Das bedeutet, dass alle benötigten Dateien im Binary selbst enthalten sind und beim Ausführen wie im normalen Dateisystem zugänglich gemacht werden. Solch eine Integration enthüllt enorme Möglichkeiten für die Distribution von Perl-Anwendungen. Beispielsweise kann man zu APPerl eine Verknüpfung namens perldoc anlegen, die per argv[0]-Wertprüfung automatisch das passende Skript aus dem integrierten ZIP startet.
Besonders spannend ist die praktische Nutzbarkeit unter Windows, einem Einsatzgebiet, in dem Perl trotz seiner Beliebtheit oft Schwierigkeiten hat. Die Integration des Windows-eigenen cmd.exe sowie der Umgang mit Tools wie dem Pager für die Dokumentation zeigten, dass APPerl sich wunderbar der Windows-Welt anpasst. Langwierige Umwege wie das Nachinstallieren von Unix-ähnlichen Umgebungen entfallen. Außerdem wird in Zukunft geplant, den System-Aufruf durch den eigenen Kommandointerpreter (cocmd, eingebettet in Cosmopolitan libc) zu ersetzen, was die Portabilität und Konsistenz weiter erhöhen wird.
Einen weiteren Vorteil bietet die Möglichkeit, Perl als selbstenthaltende Distribution zu präsentieren. APPerl wurde entwickelt als Projekt, das nicht nur ein Binary sondern auch ein Paketierungssystem umfasst, das sogenannte Perl::Dist::APPerl. Dieses erlaubt das Erstellen angepasster Perl-Builds, zugeschnitten für unterschiedliche Einsatzzwecke – von einer schlanken Minimalversion unter 5 Megabyte bis zur vollständigen Standardinstallation mit allen Modulen unter 24 Megabyte. Damit entsteht eine echte Alternative zu etablierten Windows-Versionen wie Strawberry Perl oder ActiveState Perl. Im Alltag zeigte sich APPerl bereits bewährt.
Projekte wie psx_mc_cli, ein PlayStation Memory-Card-Werkzeug, und MHFS, ein persönlicher HTTP-Medienserver, konnten problemlos damit portiert und als kompakte Binärdateien veröffentlicht werden. Zwar gibt es punktuelle Einschränkungen, zum Beispiel bei der Unterstützung älterer Windows-Versionen oder bestimmten Systemaufrufen, doch die Cosmopolitan libc und APPerl befinden sich noch in aktivem Wachstum und versprechen weiterhin Verbesserungen. Die Vorteile von APPerl sind vielfältig. Durch die Nutzung eines einzigen, plattformübergreifenden Binaries wird die Softwareverteilung stark vereinfacht. Entwickler müssen sich nicht mehr um komplexe Build-Prozesse und plattformspezifische Fehler kümmern.
Anwender können einfach eine Datei herunterladen, ausführen und sofort loslegen – ganz ohne aufwändige Installation oder Konfiguration. Dieses neue Perl-Distributionskonzept reduziert zudem den Supportaufwand, da alle Nutzer mit der identischen Version arbeiten. Für Unternehmen und Organisationen, die heterogene Umgebungen verwalten, schafft APPerl so einen großen Mehrwert. Auch die Möglichkeit, Perl-Anwendungen als einzelne, portable ausführbare Dateien zu veröffentlichen, steigert die Attraktivität von Perl in modernen Softwareprojekten, in denen Einfachheit und Portabilität gefragt sind. Zusammenfassend lässt sich sagen, dass die Portierung von Perl auf die Cosmopolitan libc und die Entwicklung von APPerl einen Meilenstein darstellt.
Es modernisiert eine bewährte Sprache und passt sie an die Anforderungen einer zunehmend vielfältigen und plattformübergreifenden IT-Welt an. Während die technologische Basis beständig erweitert wird, wächst auch die Community um das Projekt, was eine vielversprechende Zukunft verspricht. Perl erfindet sich so nicht neu, sondern bekommt mit APPerl ein neues, modernes Kleid, das es jedem erlaubt, diese leistungsstarke Sprache überall und unkompliziert einzusetzen – ein großer Schritt hin zu echter Portabilität.».