서울에 기반을 둔 AI 연구소 IOV LABS는 자사 오픈소스 프로그래밍 언어 0x-lang의 벤치마크와 연구 결과를 29일 공개했다고 밝혔다. 이번 연구는 AI 보조 프로그래밍의 핵심에 놓인 두 가지 질문을 다룬다. 모델이 실제로 소비하는 방식으로 측정했을 때 언어가 얼마나 압축적일 수 있는가, 그리고 모델이 그 언어를 안정적으로 작성하도록 만들 수 있는가다. 연구소는 0x 소스가 컴파일 결과인 React보다 약 2.4배 적은 토큰을 사용했으며, 모델의 출력을 제약하고 컴파일러를 세 군데 수정한 결과 첫 시도 컴파일 성공률이 5분의 1에서 5분의 5로 올랐다고 설명했다.

배경
0x-lang은 하나의 소스 파일을 React, Vue 3, Svelte 5, React Native, Express, Terraform의 여섯 가지 타깃으로 한꺼번에 컴파일한다. 에디터 지원을 위한 언어 서버(LSP)와, AI 에이전트가 컴파일러를 직접 호출할 수 있도록 MCP(Model Context Protocol) 서버를 함께 제공한다. 연구소는 이 프로젝트를 하나의 전제 위에 세웠다고 설명한다. 소프트웨어가 사람이 아니라 언어 모델에 의해 점점 더 많이 작성된다면, 모델이 읽고 쓰는 표현 방식은 학습 데이터에서 우연히 물려받을 것이 아니라 의도적으로 설계되어야 한다는 것이다. 이번 연구는 그 전제를 주장이 아닌 수치로 검증하려는 시도다.
토큰 벤치마크
벤치마크는 줄 수가 아니라 토큰 수를 측정한다. 언어 모델은 줄을 읽지도, 줄에 비용을 내지도 않는다. 모델이 읽고 비용을 지불하는 단위는 토큰이며, 토큰은 비용과 컨텍스트 윈도우 점유율을 동시에 결정한다. 연구소는 GPT 계열 모델이 사용하는 것과 같은 BPE(바이트 페어 인코딩) 토크나이저로 저장소의 예제 10개 전부에서 토큰을 셌고, 각 0x 소스를 컴파일러가 생성한 정확한 프레임워크 코드와 비교했다. 손으로 다듬거나 유리한 것만 고르지 않았다. 그 결과 0x 소스는 생성된 React보다 약 2.4배, Vue보다 1.9배, Svelte보다 1.8배 적은 토큰을 사용한 것으로 나타났다. 연구소는 이 수치가 보수적인 하한선이며, 전체 측정이 npm run benchmark 명령 하나로 재현된다고 밝혔다.
모델이 작성할 수 있는가
압축적인 표현은 모델이 그것을 올바르게 만들어낼 수 있을 때에만 쓸모가 있다. 그래서 연구는 gpt-4o로 첫 시도 생성을 시험했다. 과제 설명을 주고 컴파일되는 0x를 반환하게 한 결과, 단순 프롬프트에서는 5개 과제 중 1개에서만 성공했고 실패는 모두 논리 오류가 아닌 문법 오류였다. 보고서는 그 원인을 단순한 사실에서 찾는다. 모델이 학습 데이터에서 0x를 한 번도 본 적이 없다는 것이다. 학습 분포 밖에 있는 언어에서는 정확도가 언어의 압축성보다 생성 과정을 얼마나 단단히 제약하느냐에 훨씬 크게 좌우된다고 연구는 분석했다. 다시 말해, 모델을 궤도 위에 붙들 방법이 없다면 압축성은 아무 가치가 없다.
프롬프트에서 구조로
이런 경우의 본능은 예제를 더 넣어 프롬프트를 길게 쓰는 것이지만, 연구소는 그 방식이 효과가 미미하고 자주 깨진다는 점을 확인했다. 연구소의 대안은 구조적이다. 모델에게 0x 텍스트를 직접 내놓게 하는 대신, 스키마로 형태가 보장되는 JSON 추상 구문 트리(AST)를 출력하도록 구조화 출력 디코딩으로 제약하고, 그 트리로부터 컴파일러가 정규 0x를 렌더링한다. 모델은 낯선 언어의 표면 문법을 외울 필요가 전혀 없으며, 망가뜨릴 수 없는 구조 안에서 의도만 표현하면 된다. 문법은 암기 시험이기를 멈추고 가드레일이 된다.
세 가지 컴파일러 수정
출력을 제약하자 모델은 대부분의 길을 갔지만, 동시에 어떤 프롬프트로도 드러나지 않았을 컴파일러 표현식 문법의 실제 빈틈이 노출됐다. 이를 메우는 데 구체적인 수정 세 가지가 필요했다. 모델이 자연스럽게 만들어내는 관용구가 컴파일되도록 파서에서 네이티브 스프레드 문법을 디슈가링했다. 동등성을 쓰는 두 방식이 하나로 수렴하도록 토크나이저에서 strict 동등 연산자를 정규화했다. 그리고 특정 토큰 경계를 잘못 처리하던 렉싱 버그 두 건을 바로잡았다. 셋 중 어느 것도 화려하지 않지만, 합쳐지면 '거의 컴파일된다'와 '컴파일된다'를 가르는 차이가 된다. 제약 디코딩과 이 수정들이 적용되자 첫 시도 컴파일 성공률은 5분의 5로 올랐고, 별도의 미공개 과제 세트에서도 8분의 7을 유지했다. 프로젝트의 기존 테스트 303개는 모두 통과한다.
빠른 컴파일러는 모델을 견줄 수 있는 검증기다. 코드는 컴파일되거나 되지 않거나 둘 중 하나다.
한계와 향후 과제
연구소는 이번 연구가 아직 증명하지 못한 것을 분명히 했다. 평가 세트는 8개에서 10개 과제로 작고, 그 규모가 더 커지기 전까지 단일 대표 수치를 과하게 해석해서는 안 된다고 밝혔다. 표현식 문법에는 스키마가 완전히 덮지 못하는 구석이 남아 있어, 일부 유효한 프로그램은 필요 이상으로 생성하기 어렵다. 또한 연구소는 그 문법을 GBNF로 컴파일해, 특정 제공사의 구조화 출력 기능에 의존하지 않고도 로컬 오픈웨이트 모델을 같은 보장 아래 구동하고자 한다. 이들 각각은 해결된 문제가 아니라 남은 과제로 보고서에 명시됐다.
연구소의 평가
IOV LABS 설립자 김재환 대표는 이번 결과가 압축적인 언어의 존재 이유를 다시 정의한다고 말했다. 그는 "흥미로운 발견은 0x가 작다는 점이 아니었다"며 "작고 잘 정의된 언어는 컴파일러가 검사할 수 있는 언어이고, 그 점이 컴파일러를 모델을 견줄 수 있는 검증기로 바꿔놓는다는 것"이라고 설명했다. 그는 또 5분의 1이라는 출발점과 폐기한 줄 수 기반 주장을 포함해 실패를 성공과 나란히 공개한 이유를 두고 "재현할 수 없는 벤치마크는 마케팅이며, 보고할 가치가 있는 유일한 숫자는 다른 사람이 다시 돌려볼 수 있는 숫자"라고 덧붙였다.
벤치마크와 전체 연구는 평가 과제와 측정 스크립트까지 프로젝트 저장소에 공개돼 있다. 연구소는 자신들의 말을 믿기보다 독자가 직접 수치를 다시 돌려보길 권한다고 밝혔다.