- OxCaml est un ensemble d’extensions en évolution rapide qui ajoute à OCaml des extensions orientées performance ; il sert de compilateur de production chez Jane Street et d’espace d’expérimentation pour améliorer OCaml
- Il vise à permettre de contrôler les comportements du programme qui déterminent les performances de manière sûre, pratique et prévisible, tout en ne faisant peser la complexité que sur le code qui en a besoin
- Tous les programmes OCaml valides restent valides dans OxCaml, avec pour objectif de donner l’impression d’une évolution d’OCaml plutôt que d’un nouveau langage
- Les extensions se répartissent entre la concurrence avec exclusion statique des data races, la disposition mémoire et l’accès au SIMD, le contrôle des allocations, ainsi que des fonctions de confort comme les polymorphic parameters, include functor, labeled tuples et immutable arrays
- Bien qu’open source, OxCaml ne promet ni stabilité des extensions ni compatibilité ascendante ou rétroactive, et fournit un ensemble d’outils OCaml modifié incluant une gestion de paquets compatible avec dune et opam, un LSP, un formateur de code et des outils de génération de documentation
Objectifs et principes de conception d’OxCaml
- OxCaml est un ensemble d’extensions en évolution rapide pour le langage de programmation OCaml
- Il est utilisé comme compilateur de production chez Jane Street
- Il sert aussi d’espace d’expérimentation pour faire évoluer OCaml vers une programmation orientée performance
- À terme, l’objectif est de contribuer une partie de ces extensions à l’OCaml upstream
- L’objectif central de conception est de contrôler les comportements du programme importants pour les performances de manière sûre, pratique et prévisible
- La sûreté est considérée comme une propriété importante pour la productivité des programmeurs et le déploiement de code correct
- L’aspect pratique vise à offrir du contrôle sans imposer d’annotations excessives
- Même avec un système de types étendu, le but est de conserver l’inférence de types d’OCaml
- La prévisibilité consiste à préserver et améliorer la facilité avec laquelle on peut comprendre les caractéristiques de performance en lisant uniquement le code OCaml
- Les détails essentiels liés aux performances sont rendus explicitement visibles au niveau des types
- L’approche suit un principe de pay-as-you-go : offrir davantage de possibilités d’optimisation sans imposer de complexité supplémentaire au code qui n’en a pas besoin
- Tous les programmes OCaml valides restent valides dans OxCaml
- OxCaml veut être perçu moins comme un nouveau langage que comme une meilleure évolution d’OCaml
- Il cherche à préserver l’esprit de conception d’OCaml, ainsi que sa sûreté, sa simplicité et sa productivité
Domaines d’extension et conditions d’utilisation
- Les extensions d’OxCaml se répartissent en plusieurs domaines centrés sur le contrôle des performances et le confort du langage
- Fearless concurrency : exclusion statique des data races grâce à des ajouts au système de types
- Layouts : permet au programmeur de spécifier la disposition mémoire des données et d’accéder nativement aux extensions processeur SIMD
- Control over allocation : fournit des outils pour contrôler les allocations, réduire la pression sur le GC et rendre les programmes plus efficaces pour le cache et plus déterministes
- Quality of life : inclut aussi des extensions utiles au quotidien
- Polymorphic parameters
- Include functor
- Labeled tuples
- Immutable arrays
- OxCaml est open source et ouvert aux utilisateurs expérimentaux
- Il vise en particulier les chercheurs et les expérimentateurs, invités à essayer le système et à faire des retours
- Les extensions OxCaml ont un caractère fortement expérimental et ne s’accompagnent d’aucune promesse de stabilité ni de compatibilité ascendante ou rétroactive
- En revanche, la compatibilité avec OCaml est maintenue
- Pour faciliter l’usage, OxCaml fournit un ensemble d’outils standards OCaml modifié
- Gestion de paquets compatible avec dune et opam
- Intégration aux éditeurs via un serveur LSP
- Formatage du code source
- Génération de documentation
- Les bibliothèques et outils open source de Jane Street sont publiés sous deux formes
- Une version pour l’OCaml upstream, dont les extensions OxCaml ont été retirées
- Une version pour OxCaml, qui exploite activement ces extensions
- Comme toutes les extensions ne peuvent pas être supprimées, certaines bibliothèques ne sont disponibles que pour OxCaml
- Si les extensions nécessaires sont intégrées en upstream, une version compatible OCaml de ces bibliothèques sera publiée
Aucun commentaire pour le moment.