jank - C++과 매끄럽게 상호운용하는 네이티브 Clojure 방언

1 week ago 21

jank는 Java 대신 C++과 상호운용하는 Clojure 방언으로, C++ 헤더를 포함하면 별도 상용구 코드 없이 네이티브 기능을 사용할 수 있음 템플릿, 가상 함수, 예외, 오버로드 결정, RAII를 지원하며, C++ 타입 시스템을 사용하고 C++ 코드로도 컴파일됨 Clang 기반 C++ JIT 컴파일러와 LLVM 기반 런타임으로 대화형 REPL 개발을 지원하며, 기존 nREPL 에디터 플러그인을 사용할 수 있음 Leiningen 기반 프로젝트 관리와 Cargo에서 영감을 얻은 네이티브 빌드 시스템을 통해 설치된 C/C++ 의존성을 찾거나 소스에서 빌드함 게임 개발에서 함수형 불변 데이터와 REPL 개발을 C++ 코드와 함께 활용할 수 있으며, AOT 컴파일로 작은 바이너리를 생성할 수 있음 Clojure와 C++의 결합 jank는 C++ 위에서 동작하는 Clojure 방언으로, 기존 코드를 유지하면서 네이티브 기능을 활용하도록 설계됨 Java 상호운용 대신 C++ 상호운용을 제공하며, 필요한 경우 :jank 리더 조건부를 사용할 수 있음 임의의 C++ 소스를 포함하고 C 또는 C++ 라이브러리에 링크할 수 있으며, C++ 타입 시스템을 사용함 템플릿, 가상 함수, 예외, 오버로드 결정, RAII를 별도 상용구 코드 없이 활용할 수 있음 Boost.Filesystem 예제는 boost/filesystem.hpp를 포함하고 boost.filesystem.file_size를 file-size로 이름을 바꿔 호출함 파일 경로를 cpp/cast로 std.string 타입으로 변환해 파일 크기를 구함 boost.filesystem.filesystem_error를 Clojure의 try/catch로 처리하고, .what으로 오류 메시지를 가져옴 Clang 기반 C++ JIT 컴파일러가 대화형 REPL 개발을 지원하며, LLVM 기반 JIT 런타임이 C++ 코드를 실행 중 컴파일함 선호하는 nREPL 에디터 플러그인을 사용할 수 있음 네이티브 빌드와 게임 개발 Cargo에서 영감을 얻은 개발 경험을 C++과 Clojure에 제공하며, Leiningen으로 프로젝트를 관리함 네이티브 빌드 시스템이 설치된 의존성을 찾거나 소스에서 빌드함 새 의존성을 추가하는 데 한 줄 변경이면 됨 프로젝트 예제는 ImGui, GLFW, OpenGL 관련 의존성과 lein-jank 플러그인을 사용하며, 디버그와 릴리스 빌드 설정을 분리함 ...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵