Jolt, Chez Scheme으로 구현한 자기 호스팅 Clojure 컴파일러 공개, 독립 실행 바이너리까지 지원
- Jolt는 Clojure 코드를 읽어 host-neutral IR로 분석한 뒤 Scheme 코드를 생성하는 자기 호스팅 컴파일러로, Chez Scheme에서 네이티브로 돌거나 Gambit으로 컴파일해 JavaScript로도 실행됨
jolt build명령으로 런타임과 표준 라이브러리, 앱, 의존성을 하나의 독립 실행 파일로 AOT 컴파일해 Chez나 JVM, 소스코드 없이 실행 가능함- future/promise/agent/pmap이 OS 스레드와 공유 힙에서 JVM과 동일한 동시성 시맨틱으로 동작하고 core.async 채널과 go 블록도 지원함
- 개발자는 Clojure 커뮤니티에서 오래 활동한 Dmitri Sotnikov(yogthos)로 확인됨, 저장소 커밋 기록상 2~3개월 만에 라이브러리 지원과 문서, nREPL까지 갖춘 상태로 공개돼 개발 속도에 대한 의구심도 제기됨
- jank, Janet, let-go 등 JVM 없이 Clojure를 구동하는 다른 프로젝트들과 비교되며, Jolt는 기존 Java 표준 라이브러리 API를 매핑한 shim으로 기존 라이브러리 호환성을 목표로 한다는 점에서 차별화됨
Hacker News opinions
실제 써봤는데 맥이랑 리눅스에서 독립 실행 앱 빌드가 진짜 잘 됨. 체스 게임 예제는 바로 됐는데 datomic 데모는 소스코드가 더 필요해서 손봐야 함
이거 Jolt Physics 엔진이랑 이름만 같은거 아니냐, Clojure랑 무슨 관계임?
저자 등장, 질문 있으면 받겠다고 함
Racket의 Chez 포크 써볼 생각 있냐, 몇 년 전 기준으로는 추가 확장이랑 아키텍처 지원이 더 좋았던 걸로 기억함
JVM에서 Java 호출하듯 Scheme으로 바로 내려갈 수 있는거임, 아니면 완전히 막혀있는거임?
Babashka랑 비교하면 이 생태계에서 어떤 위치임? JVM/CLR/JS 크로스플랫폼 프로젝트 돌려봤는데 System/in 로드하다 실패함, reader conditional은 :clj 브랜치만 따라가는거임?
Gambit으로 JS 컴파일하는게 ClojureScript 대비 뭐가 좋은거임 싶었는데, 저자가 그냥 포터블 레이어 보여주는 예시였고 프론트엔드는 ClojureScript나 Squint 추천한다고 답함
C FFI 생기면 JVM 위에서는 못했던 재밌는거 많이 만들 수 있을 듯
요즘 JVM도 Panama 덕분에 FFI 옵션 많아짐, 다만 좀 verbose하고 jextract 쓰는게 나음
jank랑 겹치는 부분 얼마나 되냐, production ready냐 물었더니 저자가 답변함: 목표가 다르고 기존 Java stdlib API 매핑해서 shim 만드는 방식이고, JDBC/crypto는 직접 FFI로 라이브러리 만들었고 jank의 clojure-test-suite도 통과한다고 함
jank 만든 사람이 직접 답함: jank의 핵심 차별점은 C++ interop이고, Jolt 같은 신생 dialect들은 AI 코딩 덕에 빠르게 만들어진 느낌이라 jank는 그런 식으로 분류되고 싶지 않다고 함
Janet이나 let-go 같은 Lisp to standalone binary 프로젝트도 있음, let-go는 plan9에서도 돈다고 함
저장소 커밋 보면 2~3개월밖에 안 됐는데 이미 완성도 있는 것처럼 마케팅되는게 좀 의심스러움, hammock driven development 철학이랑 안 맞는 느낌임
이거 그냥 슬롭임
슬롭은 아님, 만든 사람이 yogthos(Dmitri Sotnikov)라 Clojure 커뮤니티에서 오래 활동한 사람이고 뭘 하는지 아는 사람임, 근데 개발 속도 빠른건 맞음