Programmiersprache Julia 1.9 beschleunigt Start- und Ladezeiten

Das Release baut die Präkompilierung für schnellere Startzeiten weiter aus, bringt das neue Feature Package Extensions und aktualisiert LLVM auf Version 14.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen

(Bild: alphaspirit.it/Shutterstock.com)

Lesezeit: 3 Min.

Das Entwicklungsteam hinter der Programmiersprache Julia hat Version 1.9 veröffentlicht. Rund neun Monate nach Version 1.8 erschienen, arbeitet das Release unter anderem an einer erhöhten Performance und führt dazu neue Features wie das Caching nativen Codes ein. Die hinter Julia stehende Compiler-Infrastruktur LLVM erhöht sich auf Version 14.0.6.

Da zudem die Tests für macOS ARM erfolgreich abgelaufen sind und Continuous Integration (CI) dafür etabliert wurde, ist der Status der Plattform von Tier 2 zu Tier 1 gewechselt. Tier 1 ist die höchste Support-Ebene und schließt neben diesen Voraussetzungen auch das Bestehen offizieller Binaries ein.

Julia verwendet das Prinzip der Präkompilierung zur Reduktion der Kompilierzeit. Bislang war diese Funktion unter anderem auf Typen, Variablen und Methoden beschränkt. Nativer Code ließ sich jedoch nicht präkompilieren. An dieser Stelle setzt Julia 1.9 an und ermöglicht erstmals das Caching nativen Codes. Das soll eine deutliche Verringerung der Latenz in Bezug auf die Time to First Execution (TTFX) bewirken und den Grundstein für weitere Optimierungen legen.

Durch diese Neuerung erhöht sich als unerwünschter Nebeneffekt die Präkompilierungszeit um 10 bis 50 Prozent. Da es sich dabei jedoch um einmalige Kosten handelt, findet das Julia-Team diese Auswirkung vertretbar. Auch durch das Speichern höherer Datenmengen und das Verwenden eines anderen Serialisierungsformates seien die Cache-Dateien nun größer.

Das Entwicklungsteam veranschaulicht die Änderungen bezüglich der Time to Load (TTL), der Time to First Execution (TTFX) und der Cache-Dateigröße von Julia 1.7 bis 1.9. Demnach sei die TTFX vom ausschlaggebenden Faktor zu einem vernachlässigbaren geworden.

Julia 1.7, 1.8 und 1.9 im Vergleich: Time to Load (TTL), Time to First Execution (TTFX) und Cache-Dateigröße in MB.

(Bild: JuliaLang.org)

In Julia lässt sich Multiple Dispatch nutzen. So kann etwa ein Plotting Package Funktionen bieten, die in verschiedenen Packages des Julia-Ökosystems enthalten sind. Das Hinzufügen von Package Dependencies kann allerdings Kosten wie verlängerte Ladezeiten und das erforderliche Installieren großer Artefakte wie CUDA.jl nach sich ziehen, wie das Julia-Team-ausführt. Julia 1.9 führt daher das konditionale Laden von Code in Packages ein.

Diese neue Funktion mit der Bezeichnung Package Extensions hat zum Ziel, nur die benötigten Features zu laden. Dabei ähnelt sie laut dem Entwicklungsteam dem externen Paket Requires.jl, soll jedoch zusätzliche Möglichkeiten wie die Präkompilierung konditionalen Codes und das Anwenden von Kompatibilitätseinschränkungen auf schwache Dependencies bieten.

Die auf wissenschaftliches Rechnen und hohe Performance ausgelegte, dynamisch typisierte Programmiersprache Julia steht quelloffen zum Download bereit. Weitere Informationen zu Version 1.9 bieten der offizielle Blog sowie das GitHub-Repository der Sprache.

(mai)