Versi alpha Jank Lang dirilis
(github.com/jank-lang)- Bahasa pemrograman yang menggabungkan sintaks Clojure dan performa native berbasis LLVM, serta menawarkan interoperabilitas yang mulus dengan C++
- Tetap mempertahankan karakteristik fungsional dan berorientasi nilai dari Clojure, tetapi menggunakan LLVM sebagai lingkungan host alih-alih JVM
- Semua struktur data bersifat persisten dan immutable (persistent & immutable), serta bisa terhubung langsung dengan pustaka standar C++
- Saat ini masih dalam tahap alpha, dan dokumentasi resmi serta contoh tersedia di jank book
- Sebagai upaya menggabungkan ekosistem Clojure dengan performa native C++, proyek ini memiliki makna dalam mempersempit batas antara bahasa fungsional dan bahasa sistem
Ikhtisar jank
- jank adalah bahasa yang di-host di LLVM berdasarkan sintaks dan filosofi Clojure
- Dibangun di atas LLVM alih-alih JVM, dan mendukung interoperabilitas dengan C++
- Mempertahankan karakteristik Clojure yang fungsional, interaktif, dan berpusat pada nilai
- Menargetkan kompatibilitas tinggi dengan Clojure, dan seperti Clojure berinteraksi dengan Java, jank terintegrasi dengan C++
- Saat ini sedang dikembangkan sebagai versi alpha, dan detailnya dapat dilihat di dokumentasi resmi
Fitur bahasa
- Semua struktur data bawaan bersifat persisten dan immutable (persistent & immutable)
- Contoh:
(def george {:name "George Clooney"})
- Contoh:
- Efek samping (side effect) dapat dilakukan secara eksplisit bila diperlukan
- Contoh:
(defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true))
- Contoh:
- Dapat terhubung langsung dengan pustaka standar C++
- Contoh:
(cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
- Contoh:
- Menyediakan berbagai fungsi inti untuk pemrosesan data fungsional
- Contoh:
(apply + (distinct [12 8 12 16 8 6])) ; => 42
- Contoh:
Pengembangan dan dokumentasi
- Dokumentasi resmi: jank book
- Proyek ini berbasis LLVM 22 dan kompatibel dengan standar C++ terbaru
- Mendukung kompilasi AOT, profiling GC, dan opsi build CMake
- Termasuk konfigurasi lingkungan Nix dan build otomatis CI
Komunitas dan sponsor
- Proyek ini dapat didukung melalui GitHub Sponsors
- Sponsor perusahaan dan individu: Clojure Together, nubank, multiply.co, modulr-software, dan lainnya
- Kanal komunitas: Slack (Clojurians), Twitter
Presentasi dan pengenalan terkait
- Video presentasi Clojure Conj 2023
- Pengenalan bahasa di The REPL Interview dan Compiler Spotlight
- Tersedia video YouTube: Language Introduction
Ringkasan:
jank adalah bahasa yang memindahkan filosofi fungsional Clojure ke lingkungan native LLVM dan C++, sebagai upaya untuk menggabungkan produktivitas Clojure dengan performa C++. Meski masih dalam tahap alpha, proyek ini menawarkan pengalaman pengembangan terpadu yang baru bagi developer Clojure maupun programmer sistem.
1 komentar
Komentar Hacker News
Untuk hal-hal terkait alpha jank, silakan merujuk ke buku resmi
Memang belum sepenuhnya siap diumumkan, tetapi saya senang melihat orang-orang menunjukkan ketertarikan
Jika beberapa fitur compiler lagi sudah digabungkan, jank akan cukup siap untuk dicoba langsung sambil mengikuti buku tersebut
Saya melihat beberapa kesalahan tata bahasa, dan penasaran apakah boleh mengirim PR ke bagian
book, atau apakah lebih baik memberi umpan balik dengan cara lain agar gaya penulis tetap terjagajank adalah dialek Clojure, dan Clojure sendiri juga merupakan dialek Lisp
Bahasa ini berfokus pada paradigma fungsional, tetapi juga mendukung state yang dapat berubah dan efek samping
Semua struktur datanya pada dasarnya immutable, dan seperti Clojure, ia menyediakan mekanisme perubahan yang aman sehingga konkurensi lebih mudah ditangani
Selain itu, integrasinya dengan C++ sangat mendalam, sehingga Anda dapat mendefinisikan tipe, fungsi, dan template C++ baru saat runtime
Dengan kompilasi JIT menggunakan Clang dan LLVM, pustaka C/C++ dapat diakses dengan mudah
Untuk detail lebih lanjut, lihat buku resmi
Saya suka Clojure, tetapi adanya target native terasa menarik
Saya penasaran seberapa cepat kompilasi/kompilasi ulang di jank
Saya penasaran seberapa dekat pengembangan jank akan mengikuti Clojure
Apakah rencananya tetap semirip mungkin seperti cljs, atau suatu saat akan bercabang juga
Saya pernah membuat bahasa yang sekitar 90% mirip Clojure, tetapi tidak menamainya demikian karena sulit menjamin kompatibilitas penuh
jank terlihat seperti drop-in replacement, dan itu tampak keren
Kami bekerja sama dengan tim Clojure dan para pengembang dialek lain, dan untuk itu kami memimpin cross-dialect clojure-test-suite
Suite itu sudah mendukung atau sedang dikerjakan untuk Clojure JVM, ClojureScript, Clojure CLR, babashka, Basilisp, dan jank
Namun, mode opsional yang terinspirasi dari Carp juga akan ditambahkan, sambil tetap mempertahankan kompatibilitas default
Sekilas saya sempat mengira ini bukan jank, melainkan tentang Jack Lang (politikus Prancis)
Buku yang bisa dilihat bersama: https://book.jank-lang.org/
Saya sudah mengikuti blog jank selama setahun, jadi selamat atas rilis alpha
Sebagai pengguna Emacs, saya penasaran seperti apa status dukungan alat pengembangan seperti CIDER
Saya juga menemukan typo pada tautan di bagian Welcome — seharusnya “foreword”, bukan “foreward”
Bisa dilihat di try-jank
Progresnya tertunda karena bug di Clang, tetapi ini adalah pekerjaan berprioritas tinggi
Typo tautannya juga sudah diperbaiki
Saya penasaran apakah jank bisa berintegrasi dengan codebase Rust
Dapat dihubungkan melalui C ABI atau mekanisme interoperabilitas C++/Rust
Saya penasaran apakah ada sistem tipe statis yang disertakan
Namun, pengembangnya pernah menyebut rencana untuk menambahkan sistem tipe gradual¹
Visinya adalah agar sebagian bisa tetap sepenuhnya dinamis dan berbasis GC, sementara sebagian lain bisa berjalan dalam bentuk yang lebih terkendali dan teroptimasi
¹ Tulisan blog terkait
Interop dengan C++ memang ditipekan secara statis, tetapi saat kembali ke ranah Clojure, semuanya sepenuhnya dinamis dan polimorfik
Mode tipe statis opsional seperti Carp akan dieksplorasi, tetapi bukan tahun ini
Awalnya saya kira ini tentang seseorang bernama “Jank Lang” yang menemukan alpha investasi