C++26 DIS 투표 부결, C++ 표준 역사상 첫 승인 실패
- 2026년 10월 23일 ISO 국가표준기구 투표에서 C++26 DIS가 부결됨. 12주 투표 끝에 2/3 다수결을 못 넘겼고, C++ 표준 역사상 DIS 부결은 처음이며 ISO에서 DIS가 승인되지 않은 선례는 2006년 C++/CLI(ISO/IEC DIS 26926)뿐인데 그 프로젝트는 중단됨
- 부결 사유는 Contracts임. 다수 국가표준기구가 이 기능이 아직 출시 준비가 안 됐다고 판단함. 저자는 새 정보가 나온 게 아니라 옛 논거를 담은 새 논문일 뿐이라고 봄
- Contracts는 2019년 쾰른 회의에서 C++20에 들어갔다가 같은 회의에서 다시 빠졌고, 2020년부터 2024년까지 스터디그룹 검토와 EWG 논의를 거쳐 2026년 3월 WG21 투표에서 다수결로 C++26 초안에 포함됨
- ISO 절차상 선택지는 수정 초안 재투표, CD 단계 회부, Technical Specification 발행, 프로젝트 취소 네 가지이며 모두 표준 지연을 뜻함. C++26이라는 이름이 유지될지도 불확실함
- WG21은 Contracts를 포함한 채 다음 단계로 가는 안을 요구치인 2/3 이상으로 찬성한 상태라 네 가지 선택지 모두 WG21 다수결이 필요함. 프로젝트를 취소하면 C++23으로 되돌아가 C++29로 가야 하고, 이미 C++26에 들어간 기능을 C++29에 다시 넣는 작업이 생김
Hacker News 의견들
이번 기회에 메모리 안전성을 훨씬 진지하게 다뤄야 하는 거 아님? 왜 이 얘기 하면 다들 화내는지 모르겠음.
메모리 안전성은 1959년 리스프 나오면서 이미 해결됐음.
이번에 부결시킨 그 기능이 바로 메모리 안전성 해법으로 보이는 건데, 이번 릴리스 나머지에도 메모리 안전성 작업이 들어있음. 정치적 이유로 밀렸다는 시각도 있고. 그래서 니 말은 위선적으로 읽힘.
내 독해력이 죽은 건지 모르겠는데 기사에 Contracts가 뭔지 설명이 없음. 못 찾겠음.
함수에 사전/사후 조건 붙이는 거임. 약간 개선된 assert 정도. cppreference에 c++ contracts 항목 있음.
완전 내부자용 글임. C의 assert를 C++답게 만든 프로그래머블 단언이고, 이론상 안전성과 성능을 둘 다 올려줌.
unsigned를 C++ 전체에서 없애면 기존 앱 수백만 개 호환성은 어떻게 됨? 밑으로 오버플로우가 쉬우니 unsigned 쓰지 말라는 말은 계속 나오는데 없애자는 논의는 있었나?
왜 다운보트만 하고 이유를 안 씀? 무리한 행동임.
이건 사회 전반의 바로미터 같은 사건 같음. 합의 도달이 갈수록 어려워지고 신뢰가 줄어드는.
여기선 돈 대 나머지 구도임. Contracts는 마이크로소프트랑 위원회 자금줄 쪽 애착 사업이고, 반대 의견을 눌러버려서 원래 형식적이던 투표 절차가 이례적으로 뒤집힌 거.
Contracts를 원하는 사람은 이해하는데 C++은 복잡도가 너무 커지고 있음. C++26에 들어간 erroneous behavior 같은 제안이 낫다고 봄.
동의함. Contracts가 템플릿 메타프로그래밍보다 읽기 쉽다는 논리인데, 코루틴도 쉬운 동시성이라고 팔았다가 복잡해져서 실패했다고 봄. 모듈도 똑같음.
개인적으로 C++이 새 기능 좀 멈추고 char8_t랑 std::filesystem 문제나 정리했으면. std::regex는 이유도 없이 엄청 느림.
이제 프로젝트 취소할 때임. C++은 PL/I처럼 됐음.
고신뢰성 C++ 쓰는 입장인데 Contracts가 실무에서 푸는 문제가 불분명함. constexpr이랑 C++20 concepts로 이미 되는 걸 좁은 경우에 표준화한 정도임. 바이너리 라이브러리랑 ABI 충돌은 고려가 안 됐고, Eiffel이나 Ada/SPARK, Frama-C에 비하면 기능도 적음.
concepts는 타입의 타입이고 contracts는 런타임 단언임. 완전히 다름.
기사에서 완곡하게 언급한 반대 논문이 비야네 스트루스트루프 것이라는 얘기가 있던데.
맞음. 레딧 보면 반대하는 사람들이 자는 시간에 급하게 투표 일정을 잡는 식으로 밀어붙였다는 얘기도 있음.
비야네가 누명 쓰는 중임. 2017년부터 contracts 제안이 C++ 원칙에 어긋나고 깨져 있다는 논문이 나왔고, 여러 표준에서 계속 빠졌음. 고칠 생각 없이 왜 밀어붙였는지가 문제임.