C++26, 표준화 사상 첫 부결…연내 확정 불투명
C++ 프로그래밍 언어의 차기 표준인 'C++26'이 국제표준화기구(ISO) 승인 단계에서 사상 처음으로 부결됐다. 프로그램 실행 중 오류를 감지하는 '계약(Contracts)' 기능을 둘러싸고 언어 창시자와 표준화위원회 의견이 충돌하면서다. 이번 부결로 연내 표준 확정이 불투명해졌으며, 정적 리플렉션 등 다른 신기능 도입도 지연될 가능성이 커졌다. 15일 더레지스터 등 외신에 따르면 C++26 국제표준초안(DIS)은 지난 10월 ISO 회원국 표준기구 투표에서 찬성 13표, 반대 9표, 기권 12표를 기록하며 승인 요건을 충족하지 못했다. DIS는 각국 표준기구가 표준의 기술적 내용을 공식 승인하는 절차로, 최종 확정 직전 단계에 해당한다. C++ 표준화위원회(WG21) 소속 안드레아스 페르티히 위원은 C++ 표준안이 이 단계에서 부결된 것은 처음이라고 밝혔다. 이번 부결은 계약 기능에 대한 이견으로 발생했다. 계약은 개발자가 함수 실행 전후에 충족해야 할 조건을 코드에 명시하고 프로그램 실행 중 이를 검사하도록 지원하는 기능이다. 잘못된 입력값이나 예상과 다른 실행 결과를 감지해 오류와 보안 취약점으로 이어질 수 있는 문제를 줄이는 것이 목적이다. 이 기능은 C++20에 포함될 예정이었으나 설계 문제로 제외됐다. 이후 수년간 보완 작업을 거쳐 C++26 표준안에 다시 포함됐다. 지난 3월 WG21 전체회의에서도 계약 기능이 포함된 표준안이 찬성 114표, 반대 12표, 기권 3표로 통과됐다. 하지만 C++ 창시자인 비야네 스트롭스트룹 콜롬비아대학 교수는 설계가 지나치게 복잡하고 충분히 검증되지 않았다며 반대했다. 그는 지난 8월 공동 작성한 기술 문서에서 현재 계약 기능 제안(P2900)이 C++의 복잡성과 코드 규모를 늘리고 언어의 본질을 바꿀 수 있다고 비판했다. 계약 기능 자체보다는 현행 설계에 문제가 있으며 더 단순한 형태로 구현해야 한다는 주장이다. 도입 찬성 측은 수년간 논의하고 여러 차례 표결을 거친 기능을 최종 승인 단계에서 뒤집는 것이 표준화 절차 신뢰를 훼손한다고 반발했다. 허브 서터 전 WG21 의장도 지난달 31일 발표한 기술 문서에서 이번 부결의 핵심 배경으로 언어 창시자와 위원회 다수의 의견 충돌을 지목했다. 위원회가 계약 기능 도입에 폭넓게 합의했지만 스트롭스트룹이 설계상 결함을 이유로 반대했고, 일부 국가 표준기구도 이에 동조했다는 분석이다. WG21은 오는 16일부터 21일까지 브라질 부지우스에서 회의를 열고 대응 방안을 논의할 예정이다. 계약 기능을 표준안에서 제외하거나 별도 기술명세서로 분리하는 방안, 현행 설계를 일부 수정해 재투표하는 방안 등이 거론된다. 어떤 방안을 선택하더라도 추가적인 합의와 승인 절차가 필요해 표준화 일정이 지연될 가능성이 있다. 표준 확정이 내년으로 넘어갈 경우 현재 통용되는 C++26 대신 'C++27'이라는 명칭이 사용될 수도 있다. 안드레아스 페르티히 위원은 블로그에서 "모든 ISO 표준은 타협의 결과물이며 누구나 이길 때도 질 때도 있다"며 "이번에는 진 쪽이 패배를 받아들이지 않았다"고 지적했다. 이어 "앞으로 어떻게 나아갈지를 결정하는 핵심 질문은 위원회가 신뢰를 다시 구축할 수 있느냐"라고 밝혔다.