Jank est un dialecte Clojure natif créé sur C++ qui offre une interopération C++ sans précédent. Contrairement aux autres langages, Jank gère les templates C++, les fonctions virtuelles, les exceptions, la résolution de surcharge et le RAII sans code boilerplate — les développeurs n'ont qu'à inclure les en-têtes et commencer à coder.
Pilote par un compilateur JIT C++ basé sur Clang, Jank offre un développement interactif piloté par REPL. L'exemple démontre l'appel direct de Boost.Filesystem depuis la syntaxe Clojure, avec conversion automatique des types et gestion des exceptions qui se mappe naturellement sur try/catch de Clojure.
Jank utilise une gestion de projet basée sur Leiningen et un système de construction natif inspiré de Cargo. L'ajout de dépendances C/C++ ne nécessite qu'un changement d'une ligne. L'outil prend en charge des profils pour les builds de débogage (niveau d'optimisation 0) et de release (niveau 3).
Pour le développement de jeux, Jank apporte des données fonctionnelles immuables et des flux de travail pilotés par REPL, tout en permettant un accès direct C++ pour les chemins critiques de performance. L'exemple ImGui/GLFW montre une interopération zéro marshalling — aucun pont, enregistrement ni callbacks nécessaires. Jank se compile en C++, utilise le système de types C++, et peut lier n'importe quelle bibliothèque C ou C++.
FAQ Q: Comment Jank obtient-il une interopération C++ fluide sans code boilerplate ?
FAQ A: Jank utilise un compilateur JIT C++ basé sur Clang qui comprend sémantiquement les C++ nativement — templates, fonctions virtuelles, exceptions, résolution de surcharge et RAII fonctionnent directement. Les développeurs incluent des en-têtes C++ et appellent des fonctions sans marshaling, enregistrement ni code de pont.
Source: Hacker News · Résumé par HeadlinesBriefing