Publication de la version alpha de Jank Lang
(github.com/jank-lang)- Un langage de programmation qui combine la syntaxe de Clojure et les performances natives basées sur LLVM, avec une interopérabilité fluide avec C++
- Il conserve les caractéristiques fonctionnelles et orientées valeur de Clojure, tout en utilisant LLVM comme environnement hôte à la place de la JVM
- Toutes les structures de données sont persistantes et immuables (persistent & immutable), avec une intégration directe possible avec la bibliothèque standard C++
- Actuellement au stade alpha (Alpha), avec une documentation officielle et des exemples disponibles dans le jank book
- Une tentative de combiner l’écosystème Clojure et les performances natives de C++, avec pour objectif de réduire la frontière entre langages fonctionnels et langages système
Présentation de jank
- jank est un langage hébergé sur LLVM fondé sur la syntaxe et la philosophie de Clojure
- Il s’appuie sur LLVM plutôt que sur la JVM et prend en charge l’interopérabilité avec C++ (interoperability)
- Il conserve les caractéristiques fonctionnelles, interactives et centrées sur les valeurs de Clojure
- Il vise une forte compatibilité avec Clojure et, de la même manière que Clojure interagit avec Java, jank s’intègre à C++
- Le développement se poursuit actuellement en version alpha, avec plus de détails dans la documentation officielle
Caractéristiques du langage
- Toutes les structures de données intégrées sont persistantes et immuables (persistent & immutable)
- Exemple :
(def george {:name "George Clooney"})
- Exemple :
- Les effets de bord (side effects) peuvent être effectués explicitement si nécessaire
- Exemple :
(defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true))
- Exemple :
- Intégration directe avec la bibliothèque standard C++
- Exemple :
(cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
- Exemple :
- Fournit diverses fonctions cœur pour le traitement fonctionnel des données
- Exemple :
(apply + (distinct [12 8 12 16 8 6])) ; => 42
- Exemple :
Développement et documentation
- Documentation officielle : jank book
- Le projet est basé sur LLVM 22 et compatible avec les standards C++ récents
- Prend en charge la compilation AOT, le profiling du GC et les options de build CMake
- Inclut une configuration pour un environnement Nix et des builds CI automatisés
Communauté et soutien
- Le projet peut être soutenu via GitHub Sponsors
- Entreprises et particuliers soutenant le projet : Clojure Together, nubank, multiply.co, modulr-software, etc.
- Canaux communautaires : Slack (Clojurians), Twitter
Présentations et introductions associées
- Vidéo de présentation de Clojure Conj 2023
- Présentation du langage dans The REPL Interview et Compiler Spotlight
- Vidéo YouTube: Language Introduction disponible
Résumé :
jank est un langage qui transpose la philosophie fonctionnelle de Clojure vers un environnement natif LLVM et C++, dans le but de combiner la productivité de Clojure et les performances de C++. Encore au stade alpha, il propose déjà une nouvelle expérience de développement unifiée pour les développeurs Clojure comme pour les programmeurs système.
Aucun commentaire pour le moment.