- OxCaml ist eine sich schnell weiterentwickelnde Sammlung performanceorientierter Erweiterungen für OCaml, Jane Streets Produktions-Compiler und zugleich ein Experimentierfeld für Verbesserungen an OCaml.
- Ziel des Designs ist es, performancekritisches Programmverhalten sicher, bequem und vorhersehbar zu steuern, dabei aber zusätzliche Komplexität nur dem Code aufzubürden, der sie tatsächlich benötigt.
- Jedes gültige OCaml-Programm ist auch in OxCaml gültig; OxCaml soll sich daher eher wie eine Weiterentwicklung von OCaml anfühlen als wie eine neue Sprache.
- Die Erweiterungen gliedern sich in Bereiche wie Nebenläufigkeit mit statischem Ausschluss von Data Races, Speicher-Layouts und SIMD-Zugriff, Kontrolle über Allokationen sowie Komfortfunktionen wie polymorphe Parameter, Include Functor, Labeled Tuples und Immutable Arrays.
- OxCaml ist Open Source, verspricht jedoch keine Stabilität der Erweiterungen oder Abwärtskompatibilität; bereitgestellt wird ein angepasstes OCaml-Toolset mit dune-/opam-kompatiblem Paketmanagement sowie LSP, Formatter und Dokumentationsgenerator.
Ziele und Designprinzipien von OxCaml
- OxCaml ist eine sich schnell weiterentwickelnde Sammlung von Erweiterungen für die Programmiersprache OCaml.
- Es wird als Produktions-Compiler bei Jane Street eingesetzt.
- Zugleich ist es ein Experimentierfeld, um OCaml für performanceorientierte Programmierung zu verbessern.
- Langfristig besteht die Hoffnung, einige Erweiterungen upstream zu OCaml beizutragen.
- Das zentrale Designziel ist es, performancekritisches Programmverhalten sicher, bequem und vorhersehbar zu steuern.
- Sicherheit gilt als wichtige Eigenschaft für die Produktivität von Programmierern und für die Auslieferung korrekten Codes.
- Bequemlichkeit konzentriert sich darauf, Kontrolle ohne übermäßige Annotationen zu bieten.
- Auch im erweiterten Typsystem soll die Typinferenz von OCaml erhalten bleiben.
- Vorhersehbarkeit zielt darauf ab, die Eigenschaft zu bewahren und zu verbessern, dass sich Performance-Eigenschaften allein anhand von OCaml-Code gut verstehen lassen.
- Zentrale Performance-Details werden explizit auf Typebene sichtbar gemacht.
- Nach dem Pay-as-you-go-Prinzip werden mehr Optimierungsmöglichkeiten bereitgestellt, ohne Code, der diese Möglichkeiten nicht nutzt, zusätzliche Komplexität aufzuzwingen.
- Jedes gültige OCaml-Programm ist auch in OxCaml gültig.
- OxCaml soll sich weniger wie eine neue Sprache anfühlen, sondern eher wie eine Weiterentwicklung von OCaml zu einer besseren Version.
- Der grundlegende Design-Charakter von OCaml sowie Sicherheit, Einfachheit und Produktivität sollen erhalten bleiben.
Erweiterungsbereiche und Nutzungsbedingungen
- Die OxCaml-Erweiterungen gliedern sich rund um Performance-Kontrolle und Sprachkomfort in mehrere Bereiche.
- Fearless concurrency: Durch Ergänzungen des Typsystems werden Data Races statisch ausgeschlossen.
- Layouts: Programmierer können das Speicher-Layout von Daten festlegen und nativ auf SIMD-Prozessorerweiterungen zugreifen.
- Control over allocation: Werkzeuge zur Kontrolle von Allokationen reduzieren GC-Druck und machen Programme cacheeffizient und deterministisch.
- Quality of life: Enthält außerdem Erweiterungen, die sich im Alltag als nützlich erwiesen haben.
- Polymorphic parameters
- Include functor
- Labeled tuples
- Immutable arrays
- OxCaml ist Open Source und steht experimentierfreudigen Nutzern offen.
- Insbesondere wird erwartet, dass Forschende und Experimentatoren das System ausprobieren und Feedback geben.
- Die OxCaml-Erweiterungen haben einen stark experimentellen Charakter; Stabilität oder Abwärtskompatibilität werden nicht zugesichert.
- Die Abwärtskompatibilität zu OCaml wird jedoch beibehalten.
- Für eine komfortable Nutzung wird ein angepasstes Standard-Toolset von OCaml bereitgestellt.
- Paketmanagement, kompatibel mit dune und opam
- Editor-Integration über einen LSP-Server
- Formatierung von Quellcode
- Dokumentationserstellung
- Die Open-Source-Bibliotheken und -Tools von Jane Street werden in zwei Formen veröffentlicht.
- Die Version für upstream OCaml erscheint in einer Form, aus der OxCaml-Erweiterungen entfernt wurden.
- Die Version für OxCaml nutzt die Erweiterungen aktiv.
- Da nicht alle Erweiterungen entfernbar sind, werden einige Bibliotheken nur für OxCaml bereitgestellt.
- Sobald die benötigten Erweiterungen upstream integriert sind, soll eine OCaml-kompatible Version der jeweiligen Bibliothek veröffentlicht werden.
Noch keine Kommentare.