Alpha-Version von Jank veröffentlicht
(github.com/jank-lang)- Eine Programmiersprache, die Clojure-Syntax und LLVM-basierte native Performance kombiniert und nahtlose Interoperabilität mit C++ bietet
- Behält die funktionalen und wertorientierten Eigenschaften von Clojure bei, nutzt aber LLVM als Host-Umgebung statt der JVM
- Alle Datenstrukturen sind unveränderlich (persistent & immutable) und können direkt mit der C++-Standardbibliothek zusammenarbeiten
- Derzeit in der Alpha-Phase; offizielle Dokumentation und Beispiele sind im jank book verfügbar
- Ein Versuch, das Clojure-Ökosystem mit nativer C++-Performance zu verbinden, mit der Bedeutung, die Grenze zwischen funktionalen und Systemsprachen zu verkleinern
Überblick über jank
- jank ist eine LLVM-gehostete Sprache, die auf Syntax und Philosophie von Clojure basiert
- Sie basiert auf LLVM statt auf der JVM und unterstützt Interoperabilität mit C++
- Sie bewahrt die funktionalen, interaktiven und wertzentrierten Eigenschaften von Clojure
- Ziel ist eine hohe Kompatibilität mit Clojure; so wie Clojure mit Java interagiert, integriert sich jank in C++
- Derzeit wird es als Alpha-Version entwickelt; Details finden sich in der offiziellen Dokumentation
Sprachmerkmale
- Alle eingebauten Datenstrukturen sind unveränderlich (persistent & immutable)
- Beispiel:
(def george {:name "George Clooney"})
- Beispiel:
- Side Effects können bei Bedarf explizit ausgeführt werden
- Beispiel:
(defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true))
- Beispiel:
- Direkte Anbindung an die C++-Standardbibliothek möglich
- Beispiel:
(cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
- Beispiel:
- Bietet verschiedene Core-Funktionen für funktionale Datenverarbeitung
- Beispiel:
(apply + (distinct [12 8 12 16 8 6])) ; => 42
- Beispiel:
Entwicklung und Dokumentation
- Offizielle Dokumentation: jank book
- Das Projekt basiert auf LLVM 22 und ist mit aktuellen C++-Standards kompatibel
- Unterstützt AOT-Kompilierung, GC-Profiling und CMake-Build-Optionen
- Einschließlich Einrichtung für Nix-Umgebungen und automatisierte CI-Builds
Community und Sponsoring
- Das Projekt kann über GitHub Sponsors unterstützt werden
- Unterstützende Unternehmen und Einzelpersonen: Clojure Together, nubank, multiply.co, modulr-software u. a.
- Community-Kanäle: Slack (Clojurians), Twitter
Verwandte Vorträge und Einführungen
- Vortragsvideo von der Clojure Conj 2023
- Sprachvorstellung in The REPL Interview und Compiler Spotlight
- YouTube: Language Introduction-Video verfügbar
Zusammenfassung:
jank ist eine Sprache, die die funktionale Philosophie von Clojure in eine LLVM- und C++-native Umgebung überträgt und damit versucht, die Produktivität von Clojure mit der Performance von C++ zu verbinden. Sie befindet sich derzeit in der Alpha-Phase, bietet aber bereits eine neue integrierte Entwicklungserfahrung für Clojure-Entwickler und Systemprogrammierer.
Noch keine Kommentare.