LLM으로 TypeScript 컴파일러를 Rust로 포팅한 ts-rust
Port of the TypeScript compiler, checker and lsp to Rust, by LLM
TL;DR Highlight
LLM이 tsc를 Rust로 포팅했고 Opus 5.5가 2주 약 $24k로 가장 멀리 갔다
Who Should Read
에이전트에게 대규모 코드 포팅이나 재작성을 맡길지 비용과 품질 때문에 고민하는 백엔드·툴링 개발자
Core Mechanics
- OpenAI 모델은 $400k 쓰고도 84%에서 멈췄다
- GPT-5.6 Sol과 GPT 6 Astra로 API 가격 기준 $400,000 넘게 썼다.
- 여러 달 /goal 루프로 Rust 130만 줄 넘게 썼지만 호환률은 84% 안팎이었다.
- Opus 5.5는 처음부터 다시 짜서 더 멀리 갔다
- 10시간 만에 동작하는 v0가 나왔다.
- 저자는 기존 Codex 코드를 이어 쓸 줄 알았지만 Opus 5.5는 처음부터 새로 시작했다.
- Astra보다 1/10 시간에 더 멀리 갔다고 한다.
- 비용은 2주에 약 $24,047이었다
- API 가격 기준 금액이고 저자는 Claude 계정으로 썼다.
- $200 플랜 주간 한도의 925%~983%에 해당했다.
- 결과물은 Go 버전 tsc 7의 직접 포팅이다
- Microsoft의 Go 네이티브 TypeScript 컴파일러 알고리즘과 동작을 그대로 유지한다.
- 같은 CLI(tsc), 언어 서버, API를 제공하고 Go 테스트 184,773개가 통과한다고 한다.
- 속도는 tsc 7보다 빠르다
- 오픈소스 60개 프로젝트 기준 타입 체크 시간이 Go의 약 절반이다(기하평균).
Community Reactions
- 댓글: 도입 가치에 대한 회의적 의견
- 유지보수와 테스트가 덜 된 구현을 왜 쓰느냐는 의견이 있었다.
- 이 사례에서 무엇을 배우는지가 더 중요한 질문이라는 의견이 있었다.
- 실제 속도 이득은 절대 시간으로 보면 작다는 의견
- 실제 프로젝트 섹션에서 tsc 7 대비 1~3초 차이라는 지적이 있었다.
- 퍼센트가 절대값보다 인상적으로 보인다는 의견이었다.
- Rust가 Go 의미론을 흉내 내느라 성능이 깎인다는 의견
- Go식 문자열과 Go 표준 라이브러리 상당 부분을 다시 구현한다는 지적이 있었다.
- 초기 Go 동작을 보존하느라 우회가 많다는 의견이었다.
- 검증 공백과 유지보수 우려를 낸 경험·의견
- 사람이 쓴 테스트로 검증해도 원저자가 테스트 불필요로 본 영역에 구멍이 있을 수 있다는 우려가 있었다.
- Bun 재작성이 11일 걸렸다고 했지만 출시 전 사람이 3달간 수백 개 이슈를 고쳤다는 언급이 있었다.
- TypeScript 팀원은 비슷한 포팅이 일주일 새 3개 나온 것이 놀랍다며 곧 더 얘기하겠다고 했다.
How to Apply
- 포팅 대상의 테스트 스위트 통과율부터 재 보기
- 포팅할 라이브러리에 기존 테스트가 있으면 에이전트에게 "테스트 통과율을 올리는 루프"를 지시해 돌려 본다.
- 통과율을 수치로 남겨 모델별 진척을 비교한다.
- 모델을 바꿔 같은 작업을 소규모로 비교하기
- 같은 작은 모듈 포팅을 두 모델에 각각 맡기고 시간과 토큰 비용을 기록한다.
- 막힌 모델의 코드를 이어받게 하지 말고 새 모델이 처음부터 시작하는 경우도 시험한다.
- 포팅 결과는 원본과 출력 diff로 검증하기
- 원본과 포팅본에 같은 입력을 넣어 출력이 일치하는지 여러 프로젝트로 비교하는 스크립트를 만든다.
- 한 프로젝트의 불일치를 알려진 문제 목록으로 문서화한다.
- LLM 작성 코드 표기 관례 도입하기
- 사람이 읽지 않은 코드는 README에 "Slop Line"처럼 LLM 작성 구간을 명시한다.
- 사용자가 위험을 판단할 수 있도록 검증 범위도 함께 적는다.
Try It
# Claude Code에 붙여넣기 (원문 방법의 간이 버전: 테스트 통과율 목표 루프)
목표: {{원본 라이브러리 경로}}의 {{모듈명}}을 {{대상 언어}}로 포팅한다.
규칙:
- 원본의 알고리즘과 동작을 그대로 유지한다.
- 원본 테스트 {{테스트 명령}}을 대상 언어로 옮겨 실행한다.
- 매 반복마다 통과/전체 테스트 수를 출력한다.
- 통과율이 100%가 되거나 3회 연속 오르지 않으면 멈추고 막힌 원인을 요약한다.
먼저 포팅 계획과 파일 구조를 보여 주고 내 승인 후 시작해.
이어서 해 볼 것: 끝나면 원본과 포팅본에 같은 입력 20개를 넣어 출력이 다른 경우를 목록으로 만들게 해 보자.Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓