1 points par GN⁺ 2026-01-04 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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"})
  • 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))
  • Intégration directe avec la bibliothèque standard C++
    • Exemple : (cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
  • Fournit diverses fonctions cœur pour le traitement fonctionnel des données
    • Exemple : (apply + (distinct [12 8 12 16 8 6])) ; => 42

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.

Aucun commentaire pour le moment.