Hacker News

Jank – The native Clojure dialect with seamless C++ interop

Jank, C++와 직접 연동하는 네이티브 Clojure 방언

Jank는 Clojure 방언에 C++ 상호운용 기능을 결합한 언어입니다. Clang 기반 JIT로 REPL에서 C++ 코드를 실행하며, C++ 헤더와 라이브러리를 직접 사용하고 네이티브 의존성을 빌드하도록 설계했습니다.

에디터 노트

REPL과 네이티브 C++ 코드의 직접 연결은 Jank가 내세우는 가장 구체적인 설계 선택입니다. 헤더 포함과 C++ 호출 예시가 실제 사용 형태를 보여주지만, 페이지에는 컴파일 속도나 성능 비교, 지원 범위의 제약이 제시되지 않아 여러 C++ 기능이 얼마나 안정적으로 동작하는지는 확인할 근거가 없습니다. 댓글에서는 Clojure REPL을 에이전트 개발에 활용하는 경험담과 실행 상태가 꼬일 수 있다는 우려가 맞섭니다. 불변 자료구조가 상태 혼란을 줄인다는 답변도 있지만, 댓글만으로 Jank에서 같은 효과가 검증됐다고 볼 수는 없습니다. 특히 에이전트가 REPL을 잘 쓴다는 경험은 Clojure 환경에 관한 이야기이며 Jank의 JIT와 C++ 연동을 평가한 결과는 아닙니다.

AI 요약

Jank는 Clojure의 데이터와 REPL 중심 개발 방식을 C++ 생태계와 결합한 언어입니다. 프로젝트는 템플릿, 가상 함수, 예외, 오버로드 해석, RAII를 별도 등록이나 변환 코드 없이 사용할 수 있다고 설명합니다. C++ 헤더를 포함하고 전역 함수 이름을 바꿔 불러오는 예시에서는 Boost Filesystem의 파일 크기 함수를 호출하고, 권한 오류를 C++ 예외 처리 구문으로 잡습니다.

C++ 연동과 실행

Jank는 C와 C++ 라이브러리를 연결하고 C++ 타입 시스템을 사용합니다. 필요하면 C++ 코드를 컴파일 대상으로 삼을 수도 있습니다. LLVM 기반 JIT 런타임은 C++ 코드를 실행 중 컴파일해 REPL 중심 개발을 지원합니다. Clojure 코드와 네이티브 코드 사이에 브리지, 타입 등록, 마샬링, 콜백을 두지 않는다는 것이 프로젝트의 설명입니다.

프로젝트 구성과 활용

Leiningen 기반 프로젝트 관리와 네이티브 빌드 시스템을 제공하며, 설치된 네이티브 의존성을 찾거나 소스에서 빌드할 수 있다고 안내합니다. 예시 프로젝트는 GLFW와 Dear ImGui 라이브러리를 의존성으로 선언하고, Clojure 함수 안에서 창 생성과 렌더링 호출을 수행합니다. 게임 개발에서는 불변 데이터와 REPL 개발을 유지하면서 성능이 필요한 부분에서 C++를 호출하는 사용 방식을 제안합니다.

Hacker News 반응

  • @goldenshale — 네이티브 코드에 접근하는 REPL 개발은 에이전트 엔지니어링에 잘 맞을 수 있다고 봅니다. 재시작이나 재컴파일이 없고, 지속적인 불변 자료구조를 쓰면 여러 스레드에서 동시에 반복 작업을 해도 관리하기 쉽다고 말합니다.
    • @s_Hogg — 재시작이 없으면 프로토타입을 만들며 어떤 셀을 실행했는지 잊었을 때 Jupyter에서 생기는 변수 상태 혼란이 떠오릅니다. 에이전트도 같은 문제를 겪을 수 있으니 컴파일을 빠르게 하는 편을 택하겠다고 합니다.
    • @kianN — 불변성과 상태 없는 구조가 nREPL과 Jupyter를 구분한다고 답합니다. Clojure가 엄격한 함수형 언어는 아니지만 많은 작업을 간결하게 처리한다고 덧붙입니다.
    • @chr15m — Clojure REPL을 LLM으로 조작하는 사용자들이 잘 작동한다고 말한다며, 설명된 환경에서 실행 상태를 잊는 문제는 크지 않다고 봅니다.
    • @jwr — 에이전트가 자신의 Clojure 코드베이스에서 빠르게 작업하고 시도하는 모습을 봤으며 REPL을 잘 활용한다고 합니다.
    • @tikotus — 괄호를 안정적으로 닫는지 질문하며 예전에는 실망했다고 말합니다.
    • @jwr — 1년 넘게 전 초기 모델에서 문제였지만 clojure-mcp 편집 도구로 해결됐고, 지금은 그 도구 없이도 모델이 괄호를 잘 맞춘다고 답합니다.
    • @tikotus — 자신이 시도한 때는 1년 이상 전이었을 것 같다며 답변에 고맙다고 합니다.
    • @delegate — 그런 질문은 놀랍다며 GPT-3.5 시절과 달리 모델이 발전했고 이제는 괄호를 잘 맞춘다고 말합니다.
    • @pjmlp — Lisp와 Prolog를 활용했던 이전 AI 열풍을 떠올리며, 이번 열풍은 네이티브 라이브러리 바인딩을 둔 인터프리터 언어를 택했다고 말합니다.

원문: Jank 웹사이트 / 번역·요약: Trawling