1 poin oleh GN⁺ 2026-01-04 | 1 komentar | Bagikan ke WhatsApp
  • 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"})
  • Efek samping (side effect) dapat dilakukan secara eksplisit bila diperlukan
    • Contoh: (defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true))
  • Dapat terhubung langsung dengan pustaka standar C++
    • Contoh: (cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
  • Menyediakan berbagai fungsi inti untuk pemrosesan data fungsional
    • Contoh: (apply + (distinct [12 8 12 16 8 6])) ; => 42

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

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

 
GN⁺ 2026-01-04
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 sangat tertarik dengan jank dan sedang membaca buku yang baru saja ditautkan itu
      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 terjaga
    • Terima kasih dan salut untuk semua orang yang terlibat
  • jank 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

    • Dulu saat saya memakai C++, proses kompilasinya sangat menyiksa
      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

    • jank adalah Clojure, dan kami berencana mengikuti perkembangan Clojure upstream
      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)

    • Saya juga salah paham persis seperti itu
  • 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”

    • Server nREPL sudah berjalan, tetapi belum digabungkan ke repositori jank
      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

    • Bisa, seperti proyek C++ pada umumnya
      Dapat dihubungkan melalui C ABI atau mekanisme interoperabilitas C++/Rust
    • Tentu bisa
  • Saya penasaran apakah ada sistem tipe statis yang disertakan

    • Karena ini adalah dialek Clojure, pada dasarnya ini bahasa bertipe dinamis
      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
    • Tidak ada tipe statis di level keseluruhan bahasa
      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
    • Karena ini mengimplementasikan Clojure, saya cukup yakin tidak akan ada tipe statis
  • Awalnya saya kira ini tentang seseorang bernama “Jank Lang” yang menemukan alpha investasi