TECH 으로 돌아가기
TECH HACKER NEWS 7분 읽기 33 READS

C++26, 투표에서 거부되다 — 표준을 지탱하던 신뢰가 흔들린 날

C++26, 투표에서 거부되다 — 표준을 지탱하던 신뢰가 흔들린 날
SOURCE IMAGE · HACKER NEWS

2026년 10월 23일, C++ 표준화 역사에서 좀처럼 상상하기 어려웠던 일이 벌어졌다. ISO 각국 표준화 기구(National Bodies, 이하 NB)가 참여하는 C++26 표준안 투표는 통상 형식적인 절차로 여겨져 왔다. 1998년 이후 이 과정은 조용하고 매끄럽게 진행돼 왔지만, 12주간의 투표 끝에 나온 결과는 '거부(Disapproved)'였다. C++ 표준화 위원회 위원이자 독일 투표를 대표하는 안드레아스 페르티히는 이 결과를 두고 C++ 역사상 처음으로 DIS 표결이 부결된 사례라고 설명한다.

맥락을 이해하려면 ISO 절차의 구조를 알아야 한다. DIS(Draft International Standard)는 표준이 확정되기 직전의 단계로, 통과하려면 3분의 2 이상의 찬성이 필요하다. 이번에는 그 정족수를 채우지 못했다. 저자가 ISO 시스템을 검색한 결과, 프로그래밍 언어 분야에서 비슷하게 부결된 선례는 2006년 8월의 ISO/IEC DIS 26926 'C++/CLI 언어 명세' 하나뿐이었고, 그 프로젝트는 결국 중단됐다. 이 전례가 이번 투표의 무게를 짐작하게 한다.

왜 거부되었나: 쟁점은 Contracts

NB들이 제출한 코멘트에서 거부 사유는 분명하게 드러난다. 바로 'Contracts(계약)' 기능이다. 여러 NB가 이 기능이 아직 출시할 만큼 성숙하지 않았다고 판단한 것이다. Contracts는 함수의 사전·사후 조건 등을 코드 차원에서 명시하는 기능으로, 오랫동안 C++의 숙원 과제 목록에 올라 있었다. 저자에 따르면 이 기능은 2019년 쾰른 회의에서 C++20에 다른 형태로 포함되었다가 같은 회의에서 다시 제거된 이력이 있다. 이후 2020년부터 약 2024년까지 전담 연구 그룹이 주제를 다듬었고, 그 결과물이 언어 확장을 담당하는 진화 워킹 그룹(EWG)을 거쳐 여러 차례 논의된 끝에 다수결로 C++26에 들어갔다.

여기서 핵심은 절차의 정당성이다. 2026년 3월 WG21(C++ 표준화 위원회)은 Contracts가 포함된 C++26 초안을 표결에 부쳐 3분의 2를 넘는 다수의 찬성으로 통과시켰다. 즉 Contracts는 갑자기 끼어든 기능이 아니라 수년에 걸쳐 여러 사람의 노력과 반복된 다수결 승인을 거쳐 올라온 결과물이었다. 그런데 마지막 관문인 DIS에서 반대표가 충분히 쌓여 뒤집힌 것이다.

흔들린 것은 기능이 아니라 '관행'

저자가 재앙이라고까지 표현하는 이유는 단순한 일정 지연 때문이 아니다. 그동안 WG21과 NB 사이에는 암묵적 관행이 있었다. 새로운 정보가 나오거나 절차상 오류가 발견됐을 때만 NB가 표준안에 반대표를 던진다는 것이다. 어떤 의견이 청취되었음에도 기능이 바뀌지 않았다면, 당사자는 그 결과를 존중하고 다수의 다른 판단을 받아들이는 문화가 자리잡고 있었다. 이번에 Contracts 없는 C++26을 원하는 쪽은 '새로운 정보'가 있다고 주장하지만, 저자는 오래된 논거를 담은 새 문서가 새로운 정보일 수는 없다며 그 주장에 동의하기 어렵다는 입장을 분명히 한다.

문제는 이다음이다. ISO에는 부결 이후를 위한 여러 경로가 마련돼 있지만, 어떤 선택지든 다음 C++ 표준의 지연을 뜻하며 모두 WG21 내부의 과반 동의를 필요로 한다. 그런데 바로 그 WG21이 Contracts를 포함한 채로 C++26을 통과시킨 당사자다. 수년간 공을 들인 집단이 자기 성과를 스스로 접을 가능성은 낮고, 반대로 대안 구현까지 내놓으며 반대한 쪽 역시 물러서기 어렵다. 가장 극단적인 선택지인 'C++26 폐기'는 C++23으로 되돌아가 변경 없이 C++29로 향하는 것을 의미하는데, 이 경우 이미 C++26에 성공적으로 들어간 기능들을 다시 C++29에 넣는 작업이 필요하다. 그 작업은 각 기능을 옹호하는 최소 한 명의 문서 작성자가 있어야만 진행되므로, 추진할 사람의 동기나 시간이 부족하면 일부 기능은 그대로 누락될 수 있다.

한국 실무자에게 주는 함의

이 사건은 당장의 코드 호환성보다 표준 자체의 예측 가능성에 관한 이야기다. C++을 기반으로 장기 로드맵을 세우는 팀이라면, Contracts 도입 시점은 물론 'C++26'이라는 명칭과 출시 일정 전체가 유동적이 되었다는 점을 염두에 둘 필요가 있다. 새 표준에 맞춘 컴파일러 지원과 기능 채택 계획은 당분간 보수적으로 잡는 편이 안전하다. 다만 이 글은 위원회 소속 개인의 견해이며 ISO 규정상 표결의 세부 집계는 공개되지 않는다는 한계가 있어, 투표의 정확한 구도나 각 NB의 입장을 외부에서 단정하기는 어렵다.

그나마 다행인 점은 다음 회의가 11월 16일로 예정돼 있어 교착 해소가 최우선 과제로 다뤄진다는 것이다. 다만 이 결정은 C++29의 방향에도 영향을 미칠 수밖에 없고, 현재로서는 그 작업을 이어갈 근거조차 불분명한 상태다. 결국 표준이란 모두가 때로는 지고 때로는 이기는 타협의 집합이며, 그 합의는 신뢰 위에서만 성립한다. 이번 부결로 흔들린 것은 하나의 기능이 아니라 그 신뢰 구조이고, 앞으로의 향방은 공동체가 그 신뢰를 다시 쌓을 수 있는가에 달려 있다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://andreasfertig.com/blog/2026/11/cpp26-dis-failed-how-...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...