Show HN: Go로 Clojure와 유사한 언어를 만들었고, 부팅이 7ms
Source: Hacker News
Overview
Let-go는 순수 Go로 작성된 Clojure‑like 언어이며(~90% JVM Clojure와 호환) 약 10 MB 크기의 정적 바이너리로 제공되고 콜드 부팅이 약 7 ms 정도 걸립니다 — JVM보다 약 50배, Babashka보다 3배 빠릅니다. 알고리즘 워크로드에서 괜찮은 처리량을 보이며, 대략 GraalVM‑기반 sci 수준에 근접합니다.
Origin
2021년에 이 프로젝트를 시작했는데, 일종의 정교한 실용적인 장난이었습니다: Go를 쓰는 척하면서 Clojure를 쓸 구실을 만들고 싶었죠.
Features
- 진짜 Clojure와 같은 느낌을 주며 nREPL 서버를 포함합니다(Calva, CIDER 등에서 지원).
- Go 프로그램에 쉽게 임베드할 수 있으며, 함수, 구조체, 채널이 경계를 넘나들 때 별다른 어려움이 없습니다.
- CLI, 웹 서버, 데이터‑처리 스크립트, 심지어 일부 시스템 프로그래밍에도 적합합니다 — 저는 이를 사용해 데몬 없는 컨테이너 런타임을 작성했습니다.
- Plan 9에서도 실행됩니다.
Under the Hood
구현은 비교적 단순한 컴파일러와 스택 VM으로 구성되어 있으며, 둘 다 Clojure‑like 코드를 실행하도록 손수 제작되었습니다. 컴파일러는 AOT 모드로 동작할 수 있어, 휴대용 바이트코드 블롭과 독립 실행형 바이너리(런타임 + 바이트코드)를 생성합니다.
Limitations
이것은 일반적인 Clojure의 대체품이 아닙니다:
- JAR를 로드하지 않습니다.
- 전체 Java API를 제공하지 않습니다.
- 기존 Clojure 프로젝트는 대부분 실행하려면 수정이 필요할 가능성이 높습니다.
Getting Started
한 번 써보고 의견을 알려 주세요. 이슈와 PR을 환영합니다!