XS 탐구: '범용' 프로그래밍 언어의 야망과 논란
프로그래밍 언어의 풍경은 종종 성능, 이식성, 설정 용이성 사이의 절충점이다. XS라는 새로운 언어가 등장한다. 이 언어는 "어디서든, 언제든, 누구든" 사용할 수 있는 범용 도구를 목표로 한다. 단일 정적 링크 바이너리 하나에 완전한 개발 생태계를 제공한다는 대담한 주장으로, XS는 툴체인 설치와 크로스 플랫폼 호환성의 마찰을 없애고자 한다.
기술적인 관점에서 XS는 야심찬 프로젝트다. 컴파일러, 언어 서버, 디버거, 포매터, 린터, 테스트 러너, 프로파일러, 패키지 매니저를 모두 2.9 MB 크기의 작은 바이너리 하나에 묶어 제공한다. 이 "올인원" 접근 방식은 동일한 소스 코드를 Linux, macOS, Windows, WASI, iOS, Android, ESP32, Raspberry Pi 등 방대한 환경에서 그대로 실행할 수 있도록 설계되었다.
기술 아키텍처 및 성능
XS는 유연성과 속도를 균형 있게 맞추기 위해 다계층 실행 전략을 사용한다. 사용 사례에 따라 개발자는 여러 백엔드 중에서 선택할 수 있다:
- Tree-walk Interpreter (
--interp): 주로 REPL 및 AST 수준 플러그인 디버깅에 사용됩니다. - Bytecode VM (Default): 대부분의 프로그램에 대한 표준 실행 경로.
- Register-allocating JIT (
--jit): x86-64와 aarch64에 최적화되었으며, 지원되지 않는 opcode는 VM으로 폴백합니다. - C Transpiler (
--emit c): 기존 컴파일러와의 최대 호환성을 위해 독립적인 C 소스 코드를 생성합니다. - JavaScript Transpiler (
--emit js): Node.js 또는 브라우저를 대상으로 합니다. - WASM Runtime (
xs.wasm): 가상 파일 시스템을 포함한 브라우저 기반 컴파일러 버전으로, XS 프로그램을 브라우저 내에서 완전히 평가할 수 있게 합니다.
원시 성능 측면에서 XS는 경쟁력 있는 결과를 주장한다. fib(30) 벤치마크에서 JIT 버전은 31 ms를 기록했으며, Node 20(62 ms)과 CPython 3.13(71 ms)보다 빠르게 수행되었다. VM 버전은 138 ms가 소요되었다.
커뮤니티 회의감 및 "AI Slop" 논쟁
인상적인 기능 목록에도 불구하고 Hacker News에서의 반응은 매우 비판적이었다. 주요 논쟁점은 언어의 능력이 아니라 그 기원에 대한 인식이다. 여러 경험 많은 개발자는 이 프로젝트가 "AI slop"—인간 감독이 최소화된 LLM이 생성한 코드와 문서—일 가능성을 제기했다.
비판자들은 여러 레드 플래그를 지적한다:
- Documentation Style: 사용자는 문서가 고수준 언어 설계 용어(예: "algebraic effects", "semantic analyzer")를 사용하지만, 언어의 고유한 동기나 설계 철학에 대한 실질적인 내용을 제공하지 않는다고 지적했다.
- Code Provenance: 일부 사용자는 VM 설계가 Crafting Interpreters 프로젝트의
clox인터프리터와 매우 유사하다고 관찰했으며, 이는 AI 에이전트를 통해 적응된 것일 가능성을 시사한다. - Inconsistent Implementation: 기술 리뷰어들은 타입 시스템에서 문제를 강조했으며, 소스 코드에 "recursive type: bind anyways"와 같은 주석이 존재한다는 점을 들어 인간 엔지니어링의 엄격함이 부족하다고 주장한다.
- Commit History: git 히스토리와 특정 커밋 메시지—특히 헬퍼 함수에서 삭제된 정확한 코드 라인 수를 상세히 기록한 메시지—가 "obvious LLM context spew"라고 묘사되었다.
디자인 비판
AI 생성에 대한 우려를 넘어, 언어 설계 선택 자체도 논쟁을 불러일으켰다. 일부 사용자는 "tasteful"한 구문 선택과 actor/nursery 디자인 도입을 칭찬했지만, 다른 이들은 그다지 감명받지 못했다.
한 개발자는 가변성 처리에 대해 비판했다:
"let은 불변이며 (재할당은 런타임 오류), var는 가변이고, const는 런타임에서 let과 동일하지만 의도를 나타냅니다. 내가 알아야 할 모든 것을 알려줍니다."
다른 사람들은 "universal" 주장에 실용성을 의문시했다. 한 비평가는 Linux에서 전문 개발자가 필요로 하는 것이 학생이나 ESP32를 목표로 하는 사람과 크게 다르며, 하나에 최적화된 언어가 모두에게 최적일 수 없다고 지적했다.
결론
XS는 툴체인 통합이라는 흥미로운 실험을 제시한다. 거의 모든 최신 OS에서 린팅부터 JIT 컴파일까지 모든 작업을 처리하는 3 MB 바이너리라는 아이디어는 개발자 경험(DX) 관점에서 매력적인 비전이다. 그러나 이 프로젝트는 AI 시대 소프트웨어 릴리스 현황에 대한 경고 이야기가 된다. "promised features"와 "design transparency" 사이의 격차가 너무 커지면, 커뮤니티는 호기심에서 회의감으로 전환하게 된다.
SUMMARY: XS라는 새로운 프로그래밍 언어가 2.9 MB 단일 바이너리 안에 포괄적인 툴체인을 제공한다는 약속과, 그 설계와 기원에 대한 커뮤니티의 회의적인 반응을 살펴봅니다.
TITLE: XS 탐구: '범용' 프로그래밍 언어의 야망과 논란