
깃허브는 16일(현지시간) 공식 블로그를 통해 코파일럿 에이전트 런타임을 80만 줄 이상의 러스트 코드로 재작성했다고 밝혔다. 코파일럿 앱과 CLI를 활용한 작업으로, 메인 브랜치에 반영한 풀 리퀘스트(PR)는 128개다. 회사에 따르면 주로 개발자 한 명이 수개월에 걸쳐 이 작업을 수행했다.
전환 대상은 AI 모델 자체가 아니라 도구 호출과 세션 관리 등을 담당하는 에이전트 실행 기반이다. 코파일럿 CLI와 앱, SDK가 공유하는 런타임은 원래 타입스크립트와 Node.js, V8 자바스크립트 엔진 위에서 동작했다.
깃허브가 언어를 바꾼 배경은 여러 제품에 같은 런타임을 넣을 때 생기는 실행 비용이었다. 기존 SDK는 CLI를 별도 프로세스로 띄운 뒤 JSON-RPC로 통신했다. 다른 언어로 만든 애플리케이션에서도 Node.js와 V8을 함께 실행해야 했고, 시작 시간과 메모리 사용량, 프로세스 관리 부담이 뒤따랐다.
새 런타임은 C ABI를 노출하는 네이티브 코드로 구성해 애플리케이션 내부에 직접 넣을 수 있도록 했다. 별도 프로세스가 필요한 경우에는 표준 입출력이나 소켓을 통한 서버 방식도 지원한다. 터미널 사용자 인터페이스와 실행 기반을 분리하는 작업도 병행했으나, CLI를 SDK의 공개 인터페이스 위로 완전히 옮기는 작업은 아직 진행 중이라고 설명했다.
개발팀은 새 구현을 한꺼번에 교체하지 않았다. 구성 요소별로 타입스크립트 구현을 러스트 호출용 연결 코드로 바꾸고 기존 코드를 제거했다. 각 단계에서 CLI와 SDK의 종단 간 테스트를 실행했으며, 필수 테스트에 실패한 변경은 반영하지 않았다고 밝혔다. 약 14주 반의 이식 기간에는 사전 배포 100개와 안정 버전 35개를 내며 실제 사용 환경에서 문제를 확인했다.
공식 글에 따르면 8월 21일 기준 운영용 런타임은 러스트 코드 83만2378줄로 전환됐다. 별도로 러스트 단위 테스트 46만8689줄과 타입스크립트 종단 간 테스트 17만4675줄을 유지했다. 이는 깃허브가 공개한 해당 프로젝트의 규모로, AI 코딩 도구의 일반적인 생산성을 측정한 독립 평가 결과는 아니다.
깃허브는 이번 선택을 모든 대규모 타입스크립트 프로그램에 적용할 수 있는 해법으로 제시하지 않았다. 프로세스 내부 탑재, 낮은 시작 비용, 예측 가능한 자원 사용이 중요했던 프로젝트의 요구에 따른 결정이라는 설명이다. 러스트에서는 객체 수명과 공유 상태를 명시적으로 다뤄야 하는 복잡성이 생겼고, 전환 과정에서 발생한 회귀 문제도 수정했다고 덧붙였다.
출처: GitHub 공식 블로그, Migrating the GitHub Copilot runtime to Rust, using Copilot — https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot/