마이크로소프트, 2030년까지 러스트로 C코드 전면 교체?

마이크로소프트가 C/C++로 작성된 자사 소프트웨어의 코드베이스를 러스트로 교체하는 프로젝트를 시도한다. 윈도우11의 코드를 러스트로 교체하는 게 아니라고 선을 그었지만, 세계 최대 소프트웨어 기업의 러스트 연구 프로젝트에 전세계 관심이 쏠렸다.

갤런 헌트 마이크로소프트 수석 엔지니어(Distinguished Engineer)는 최근 링크드인에 올린 글에서 회사의 수석 소프트웨어 엔지니어 채용 공고를 소개하면서 “2030년까지 마이크로소프트에서 모든 C와 C++ 라인을 없애는 것을 목표로 AI와 알고리즘을 결합해 가장 큰 코드베이스를 다시 쓸 것”이라며 “1명의 엔지니어가 1개월에 100만 라인의 코드를 작성하는 게 목표이며, 이를 위해 강력한 코드 처리 인프라를 구축했다”고 밝혔다.

그는 “수석 소프트웨어 엔지니어의 역할과 목적은 마이크로소프트의 가장 큰 C 및 C++ 시스템을 러스트로 변환할 수 있도록 인프라를 발전시키고 보완하는 데 도움을 주는 것”이라며 “러스트로 생산 품질의 시스템 수준 코드를 작성한 경험과 최소 3년 이상의 러스트 시스템 수준 코드 작성 경험이 필요하다”고 덧붙였다.

갤런 헌트가 소개한 채용 공고는 마이크로소프트 코어AI 조직에 소속되는 엔지니어(Principal Software Engineer)다. 지난 13일 공고가 게시됐다. 구체적인 소속은 코어AI 내에 ‘확장 가능한 소프트웨어 엔지니어링의 미래(FoSSE)’란 이름의 팀으로, 코드베이스를 AI 기반으로 현대화하는 프로젝트를 구축하고 있다. 연봉은 13만9900~27만4800달러다.

갤런 헌트에 의하면, 마이크로소프트는 AI 에이전트와 대형언어모델(LLM)을 기반으로 작동하는 코드 처리 인프라를 구축했다.

그는 “우리의 알고리즘 인프라는 소스코드에 대해 확장 가능한 그래프를 대규모로 생성한다”며 “우리 AI 인프라는 알고리즘에 의해 안내되는 AI 에이전트를 적용해 대규모로 코드를 수정할 수 있게 한다”고 설명했다.

마이크로소프트의 윈도우 운영체제(OS)와 여러 소프트웨어 제품은 C와 C++로 작성돼 있다. 그러나 C/C++ 언어는 메모리 안전성 부족의 한계를 가지며, 여러 주요 보안 문제의 원인으로 지목되고 있다. 러스트는 메모리 안전언어로 통하며, C/C++을 대체하는 언어로 주목받는다. 미국 정부를 비롯해 각국에서 소프트웨어 보안 강화를 위해 러스트 같은 메모리 안전 언어를 C/C++ 대신 사용할 것으로 권고하고 있다.

마이크로소프트도 러스트의 강력한 지지자다. 2022년 마이크로소프트의 마크 루시노비치 애저 CTO는 “보안과 안전성을 위해 C/C++로 새로운 프로젝트를 시작하는 것을 중단하자”며 “업계에서 이런 언어를 더 이상 사용하지 않도록 권장해야 한다”고 주장하기도 했다.

마이크로소프트 소속 개발자들은 일부 C코드를 러스트로 자동 변환하는 도구도 개발했다. 또한 전세계 개발자에게 러스트를 사용해 윈도우 드라이버를 작성할 수 있는 도구도 만들어 배포했다.

마이크로소프트에 존재하는 C와 C++ 코드는 엄청난 규모일 것으로 추정된다. 이를 모두 러스트로 전환하는 작업은 양적으로도 질적으로도 매우 어려운 일이다. 러스트 코드가 지나친 추상화 때문에 작성자 외 타인이 이해하기 어렵다. 전환 작업 중간의 코드 검증과 테스트, 유지보수 등에 큰 어려움이 따른다.

생성형 AI로 코드를 작성하고 검증한다고 해도 4년 안에 모든 코드를 러스트로 대체한다는 게 쉽지 않아 보인다. 이에 커뮤니티도 부정적인 의견을 내고 있다.

일례로 리눅스 커널은 기존 C와 C++ 코드를 대체하는 대신, 러스트로 작성된 신규 코드를 커널 코드베이스에 병합하고 있다. 이 작업조차 여러 프로젝트 유지보수자의 반발로 수년째 갈등을 일으키고 있다. 미겔 오하다, 그렉 크로아 하트만 등 커널 유지관리자들은 러스트 코드 수용 의지를 확고히 밝히면서도, 기존 코드를 모두 러스트로 대체하진 않을 것이라고 강조해왔다.

갤런 헌트는 자신의 게시글에 폭발적인 반응을 보고, 글의 내용을 업데이트하고 업계의 과대해석이라고 해명했다.

그는 “내 글이 의도보다 훨씬 더 많은 관심을 불러 일으킨 것 같다”며 “명확히 말하면, 윈도우를 AI로 재작성하는 게 아니다”라고 밝혔다.

그는 “우리 팀의 프로젝트는 연구 프로젝트이며, 언어 간 이주를 가능하게 하는 기술을 개발하는 것”이라며 “내 글의 의도는 다년 간의 사업 다음 단계에 함께 할 뜻 맞는 엔지니어를 찾는 것이지 윈도우11을 위한 새로운 전략을 세우거나 러스트를 엔드포인트로 암시하려는 게 아니다”라고 덧붙였다.

마이크로소프트 윈도우의 코드베이스를 러스트로 완전히 교체하는 게 회사의 목표는 아니란 것이다. 이렇게 상황은 일단락됐지만, 갤런 헌트의 게시글은 여전히 몇가지 시사점을 담고 있다.

먼저, 그의 작업 목표량이다. 그는 한명의 엔지니어가 한달에 100만줄의 코드를 작성하는 걸 목표라고 밝혔는데, 이는 엄청난 작업 양이다. 생성형 AI를 인간 개발자 대신 투입해 엄청난 생산성을 확보하려는 요즘 IT업계의 인식을 보여주는 부분이다. 과거라면 터무니없는 작업목표라는 비아냥을 들었을 수치지만, 바이브코딩이 퍼진 현재는 그럴 수도 있다는 식으로 받아들여지고 있다.

또한, 러스트란 언어에 대해 주요 OS 진영이 강한 지지 의사를 보인다는 점이다. 러스트에 마이크로소프트 외에도 아마존웹서비스(AWS), 구글, 메타 등이 강력한 채택 의지를 보여왔다.

리누스 토발즈는 리눅스 커널에 러스트 코드 병합을 작년 승인하면서, 러스트 채택에 지지 의사를 밝히고 있다. 그리고 최근 일본 도쿄에서 진행된 리눅스커널 메인테이너서밋에서 러스트 실험에 대한 진행 상황 평가가 이뤄졌고, 성공적이란 합의가 나왔다.

미겔 오하다 러스트포리눅스 책임자는 “커널 개발 언어로 러스트를 지원하는데 따른 기술적, 절차적, 사회적 장단점을 실험해 본 결과, 실험이 완료됐으며 러스트는 앞으로도 계속 사용될 것”이라고 밝혔다.

그는 “안드로이드16이 리눅스6.12와 함께 러스트로 작성된 ashmem 모듈을 탑재하고 출시된다”며 “수백만대의 실제 기기에서 러스트 코드를 포함한 커널이 실행되고 있다는 것”이라고 강조했다.

LWN은 데비안 프로젝트가 커널 빌드에서 러스트 사용을 지원하며, 곧 출시될 포크 버전에서 확인할 수 있다고 보도했다. 데비안 프로젝트는 내년 5월부터 고급패키지도구(APT) 패키지 관리자에 러스트에 대한 ‘강력한 러스트 요구사항’을 적용한다. LWN은 리눅스 서브시스템 DRM(Direct Rendering Manager)의 유지관리자 데이브 에어리가 DRM 프로젝트에서 약 1년 후 새로운 드라이버에 러스트를 필수로 요구하고, C 사용을 금지할 것이라고 메인테이너서밋에서 말했다고 전했다.

보도에 의하면, 이 메인테이너서밋에서 커널 커뮤니티 내 러스트 지지자가 승리했다는 반응이 나왔고, 러스트 도입으로 커널에 새로운 개발자와 유지보수 담당자를 끌어오는데 성공했다는 평가도 나왔다.

러스트는 그동안 낮은 업계 수용도와 얕은 개발자 저변의 약점을 지적받아왔다. 여전히 언어 스펙이 완벽하지 않고 개발중이란 점도 불안 요소로 지적된다. 하지만, 마이크로소프트와 리눅스 진영의 러스트 지지 의사는 갈수록 확고해지는 모습이다.

글. 바이라인네트워크
<김우용 기자>yong2@byline.network

일간 바이라인 구독하기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


The reCAPTCHA verification period has expired. Please reload the page.