Jank Lang 알파 버전 공개

1 month ago 10

  • Clojure 문법과 LLVM 기반 네이티브 성능을 결합한 프로그래밍 언어로, C++과의 매끄러운 상호운용성을 제공
  • Clojure의 함수형·값 지향 특성을 유지하면서, JVM 대신 LLVM을 호스트 환경으로 사용
  • 모든 데이터 구조가 불변(persistent & immutable) 이며, C++ 표준 라이브러리와 직접 연동 가능
  • 현재 알파(Alpha) 단계로, 공식 문서와 예제는 jank book에서 제공
  • Clojure 생태계와 C++ 네이티브 성능을 결합하려는 시도로, 함수형 언어와 시스템 언어 간의 경계를 좁히는 의미를 가짐

jank 개요

  • jankClojure의 문법과 철학을 기반으로 한 LLVM 호스티드 언어
    • JVM 대신 LLVM을 기반으로 하며, C++과의 상호운용성(interoperability) 을 지원
    • Clojure의 함수형, 상호작용적, 값 중심적 특성을 유지
  • Clojure와 높은 호환성을 목표로 하며, Clojure가 Java와 상호작용하듯 jank는 C++과 통합
  • 현재 알파 버전으로 개발 중이며, 세부 내용은 공식 문서에서 확인 가능

언어 특징

  • 모든 내장 데이터 구조는 불변(persistent & immutable) 형태
    • 예시: (def george {:name "George Clooney"})
  • 부작용(side effect) 은 필요 시 명시적으로 수행 가능
    • 예시: (defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true))
  • C++ 표준 라이브러리와 직접 연동 가능
    • 예시: (cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
  • 함수형 데이터 처리를 위한 다양한 코어 함수 제공
    • 예시: (apply + (distinct [12 8 12 16 8 6])) ; => 42

개발 및 문서

  • 공식 문서: jank book
  • 프로젝트는 LLVM 22 기반으로 최신 C++ 표준과 호환
  • AOT 컴파일, GC 프로파일링, CMake 빌드 옵션 등을 지원
  • Nix 환경CI 자동화 빌드 구성 포함

커뮤니티 및 후원

관련 발표 및 소개

  • Clojure Conj 2023 발표 영상
  • The REPL InterviewCompiler Spotlight에서 언어 소개
  • YouTube: Language Introduction 영상 제공

요약:
jank는 Clojure의 함수형 철학을 LLVM과 C++ 네이티브 환경에 이식한 언어로, Clojure의 생산성과 C++의 성능을 결합하려는 시도임. 현재 알파 단계이지만, Clojure 개발자와 시스템 프로그래머 모두에게 새로운 통합 개발 경험을 제시함.

Read Entire Article