Programmiersprache: Julia 0.6 bringt zahlreiche neue Sprachkonstrukte

Das Typsystem hat eine umfangreiche Überarbeitung erfahren und es gibt einige Anpassungen, die zu Inkompatibilitäten führen können. Der Weg zum großen 1.0-Release verzögert sich derweil wohl noch.

In Pocket speichern vorlesen Druckansicht 77 Kommentare lesen
Programmiersprachen: Julia 0.6 bringt zahlreiche neue Sprachkonstrukte
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Die Macher der Programmiersprache Julia hatten bereits zur JuliaCon 2017, die vom 20. bis 24. Juni in Berkeley, Kalifornien stattgefunden hat, Julia 0.6 veröffentlicht. Nun folgte die offizielle Ankündigung im Julia-Blog. Seit dem letzten Release vom September 2016 gab es zahlreiche Änderungen im Typsystem und bei einigen Funktionen. Der Blogbeitrag spricht von dem Release mit der größten Umgestaltung bisher.

So haben sich einige Schlüsselwörter geändert: immutable wird zu struct, type zu mutable struct, abstract zu abstract type ... end und bitstype 32 Char zu primitive type Char 32 end. Außerdem bereitet sich Julia darauf vor, wie in anderen Sprachen den Unterstrich als Auslassungszeichen zu verwenden. Daher lassen sich dem Identifier _ zwar weiterhin Werte zuweisen, aber der Zugriff darauf gilt als deprecated (überholt).

Zahlreiche Änderungen führen zu Inkompatibilitäten und haben keine "deprecated"-Warnung. So entfällt beispielsweise das .data-Feld von Strings, was wohl zu deutlichen Performanceverbesserungen führt. Stattdessen lässt sich Vector{UInt8}(str) verwenden, um auf einen String als byte array zuzugreifen. Die Abfrage der Größe hat mit sizeof(str) statt bisher length(str.data) ebenfalls eine einfachere Syntax wie der Zugriff pointer(str) statt pointer(str.data). Die lesenden Funktionen readline, readlines und eachline geben nun Zeilen ohne EOL-Character (End of Line) zurück, lassen sich aber über die Option chomp=false auf das bisherige Format wandeln.

Darüber hinaus gibt es einige hilfreiche Ergänzungen. So dürfen Parameter Constraints auf vorherige Parameter verweisen, und es gibt implizite Typenparameter, sodass Vector{<:Real} dasselbe bedeutet wie Vector{T} where T<:Real.

Julia ist eine dynamische, funktionale Programmiersprache, die vor allem auf wissenschaftliche Projekte zielt, gleichzeitig aber auch als General Purpose Language geeignet sein soll. Sie ist besonders gut für verteilte Berechnungen geeignet und kommt seit geraumer Zeit auch beim High-Performance Computing zum Einsatz. Die Programmiersprache ist seit 2012 Open Source.

Das Unternehmen Julia Computing, das aus den Entwicklern der Programmiersprache gegründet wurde, bietet kommerzielle Angebote wie Support, Training und Beratung rund um Julia an. Passend zur JuliaCon 2017 konnte das Unternehmen eine Förderung mit 4,6 Millionen US-Dollar Risikokaptial vermelden. Kurz darauf folgte eine weitere Unterstützung in Höhe von 910.000 US-Dollar durch die Afred P. Sloan Foundation.

Laut der Release Timeline vom Dezember 2016 sollte Julia 0.6 eigentlich die letzte Version vor dem Sprung auf 1.0 sein, aber nun wird wohl noch mindestens ein 0.7-Release folgen. Laut dem aktuellen Blogbeitrag arbeitet das Team an neuen Features im entsprechenden Master Branch.

Die umfangreiche, vollständige Liste der Neuerungen in Julia 0.6 lässt sich den Release Notes entnehmen. Die Programmiersprache steht zusammen mit Installationshinweisen auf GitHub. Binaries existieren für Windows, macOS sowie Linux auf diversen Plattformen. (rme)