1 puan yazan GN⁺ 2026-01-04 | 1 yorum | WhatsApp'ta paylaş
  • Clojure sözdizimi ile LLVM tabanlı yerel performansı birleştiren bir programlama dili olup, C++ ile sorunsuz birlikte çalışabilirlik sunuyor
  • Clojure'un fonksiyonel ve değer odaklı özelliklerini korurken, JVM yerine LLVM'i ana çalışma ortamı olarak kullanıyor
  • Tüm veri yapıları kalıcı ve değişmez (persistent & immutable) olup, C++ standart kütüphanesiyle doğrudan entegre olabilir
  • Şu anda alfa (Alpha) aşamasında ve resmi belgeler ile örnekler jank book üzerinde sunuluyor
  • Clojure ekosistemi ile C++ yerel performansını birleştirmeyi hedefleyen bir girişim olarak, fonksiyonel diller ile sistem dilleri arasındaki sınırı daraltma anlamı taşıyor

jank genel bakış

  • jank, Clojure'un sözdizimi ve felsefesini temel alan LLVM üzerinde barındırılan bir dil
    • JVM yerine LLVM'i temel alıyor ve C++ ile birlikte çalışabilirliği (interoperability) destekliyor
    • Clojure'un fonksiyonel, etkileşimli ve değer merkezli özelliklerini koruyor
  • Clojure ile yüksek uyumluluk hedefliyor; Clojure'un Java ile etkileşime girmesi gibi, jank de C++ ile bütünleşiyor
  • Şu anda alfa sürümü olarak geliştiriliyor; ayrıntılar resmi belgelerde görülebilir

Dil özellikleri

  • Tüm yerleşik veri yapıları kalıcı ve değişmez (persistent & immutable) yapıdadır
    • Örnek: (def george {:name "George Clooney"})
  • Yan etkiler (side effect) gerektiğinde açıkça gerçekleştirilebilir
    • Örnek: (defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true))
  • C++ standart kütüphanesiyle doğrudan entegrasyon mümkündür
    • Örnek: (cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
  • Fonksiyonel veri işleme için çeşitli çekirdek fonksiyonlar sunar
    • Örnek: (apply + (distinct [12 8 12 16 8 6])) ; => 42

Geliştirme ve belgeler

  • Resmi belgeler: jank book
  • Proje LLVM 22 tabanlıdır ve güncel C++ standartlarıyla uyumludur
  • AOT derleme, GC profilleme, CMake derleme seçenekleri gibi özellikleri destekler
  • Nix ortamı ve CI otomatik derleme yapılandırması içerir

Topluluk ve sponsorluk

İlgili sunumlar ve tanıtımlar

  • Clojure Conj 2023 sunum videosu
  • The REPL Interview ve Compiler Spotlight programlarında dil tanıtımı
  • YouTube: Language Introduction videosu mevcut

Özet:
jank, Clojure'un fonksiyonel felsefesini LLVM ve C++ yerel ortamına taşıyan bir dil olup, Clojure'un üretkenliği ile C++'ın performansını birleştirmeyi amaçlıyor. Şu an alfa aşamasında olsa da, hem Clojure geliştiricileri hem de sistem programcıları için yeni bir birleşik geliştirme deneyimi sunuyor.

1 yorum

 
GN⁺ 2026-01-04
Hacker News yorumları
  • jank alpha ile ilgili içerikler için resmi kitap sitesine bakılmasını rica ediyorum
    Henüz tamamen duyurmaya hazır değiliz ama insanların ilgi göstermesi sevindirici
    Derleyicide birkaç özelliğin daha birleştirilmesiyle birlikte, kitabı takip ederek jank’i bizzat kullanabilecek kadar hazır olacak

    • jank’e büyük ilgi duyuyorum ve az önce bağlantısını verdiğiniz kitabı okuyorum
      Birkaç yazım/dilbilgisi hatası fark ettim; book bölümüne PR göndermemin uygun olup olmadığını, yoksa yazarın üslubunu korumak için geri bildirimi başka bir şekilde vermemin daha iyi olup olmayacağını merak ediyorum
    • Emeği geçen herkese teşekkürler ve tebrikler
  • jank, Clojure’un bir lehçesi; Clojure da Lisp’in bir lehçesi
    Esas olarak işlevsel ama değiştirilebilir durum ve yan etkileri de destekliyor
    Tüm veri yapıları varsayılan olarak değiştirilemez ve Clojure gibi güvenli değişim mekanizmaları sunarak eşzamanlılığı kolaylaştırıyor
    Ayrıca C++ ile derin entegrasyon sağlıyor; çalışma zamanında yeni C++ tipleri, fonksiyonlar ve şablonlar tanımlayabiliyorsunuz
    Clang ve LLVM kullanan JIT derleme sayesinde C/C++ kütüphanelerine kolayca erişilebiliyor
    Ayrıntılar için resmi kitaba bakabilirsiniz

    • Geçmişte C++ kullanırken derleme süreci çok acı vericiydi
      Clojure’u seviyorum ama yerel hedefe sahip olması özellikle cazip
      jank’te derleme/yeniden derleme hızının nasıl olduğunu merak ediyorum
  • jank geliştirmesinin Clojure’u ne kadar yakından takip edeceğini merak ediyorum
    cljs gibi mümkün olduğunca aynı kalmasının mı planlandığını, yoksa bir noktada ayrışıp ayrışmayacağını merak ediyorum
    Daha önce Clojure’a yaklaşık %90 benzeyen bir dil yapmıştım ama tam uyumluluğu garanti edemediğim için ona bu adı vermedim
    jank bir drop-in replacement gibi görünüyor; bu da çok hoş duruyor

    • jank, Clojure’dur ve upstream Clojure geliştirmesini takip edecek
      Clojure ekibi ve diğer lehçe geliştiricileriyle birlikte çalışıyoruz; bunun için cross-dialect clojure-test-suite çalışmasına öncülük ediyoruz
      Clojure JVM, ClojureScript, Clojure CLR, babashka, Basilisp ve jank için destek var ya da üzerinde çalışılıyor
      Bununla birlikte, Carp’tan ilham alan isteğe bağlı modlar da eklenecek, ancak varsayılan uyumluluk korunacak
  • Bir an jank değil de Jack Lang’den (Fransız siyasetçi) bahsedildiğini sandım

    • Ben de aynısını sandım
  • Birlikte bakılabilecek kitap: https://book.jank-lang.org/

  • 1 yıldır jank blogunu takip ediyorum; alpha sürümünü tebrik ederim
    Bir Emacs kullanıcısı olarak CIDER gibi geliştirme araçları desteğinin durumunu merak ediyorum
    Ayrıca Welcome bölümündeki bağlantıda bir yazım hatası fark ettim — “foreward” değil, “foreword” olmalı

    • nREPL sunucusu çalışıyor ama henüz jank deposuna birleştirilmedi
      try-jank içinde görebilirsiniz
      Clang kaynaklı bir hata yüzünden ilerleme yavaşladı ama bu yüksek öncelikli bir iş
      Bağlantıdaki yazım hatasını da zaten düzelttim
  • jank’in Rust kod tabanıyla entegre olup olamayacağını merak ediyorum

    • Sıradan bir C++ projesi gibi mümkün
      C ABI ya da C++/Rust birlikte çalışabilirlik mekanizmaları üzerinden bağlanabilirsiniz
    • Elbette mümkün
  • İçinde statik tip sistemi olup olmadığını merak ediyorum

    • Clojure’un bir lehçesi olduğu için, özünde dinamik tipli bir dil
      Ancak geliştirici, kademeli tip sistemi¹ ekleme planından söz etmişti
      Vizyon, bir kısmının tamamen dinamik ve GC tabanlı, bir kısmının ise daha kontrollü ve optimize bir biçimde çalışabilmesi
      ¹ ilgili blog yazısı
    • Dilin tamamı düzeyinde bir statik tip sistemi yok
      C++ ile interop kısmı statik olarak tiplenmiş, ancak Clojure tarafına döndüğünüzde her şey tamamen dinamik ve polimorfik
      Carp benzeri isteğe bağlı statik tipli bir mod araştırılacak ama bu yıl değil
    • Clojure’u uyguladığı için statik tip olmayacağını kuvvetle tahmin ediyorum
  • İlk başta bunun, “Jank Lang” adlı birinin yatırım alfası bulduğu haberi olduğunu sandım