EDG C++ 프런트엔드 소스 공개, The C++ Alliance가 비영리 관리 주체로
- EDG의 C++ 프런트엔드 소스가 2026년 9월 30일 공개됐고 The C++ Alliance가 비영리 관리 주체를 맡음. 라이선스는 Apache-2.0 WITH LLVM-exception이고 코드는 github.com/edgcpp/compiler에 올라감
- 30년간 EDG 프런트엔드는 상용 C/C++ 컴파일러, 정적 분석기, 린터, IDE 자동완성에 쓰였고 gcc, clang, MSVC와 함께 남은 4대 C++ 프런트엔드 중 하나임. MSVC 인텔리센스도 EDG를 씀
- 개발은 커뮤니티 기여, 상시 유지보수, 공동 자금 지원 기능 세 트랙으로 나뉘지만 모든 변경이 같은 공개 저장소에 동시에 반영됨. 사전 접근 권한은 없음
- Fiscal Sponsorship Committee가 세 트랙 전체를 감독하고 John Spicer가 의장을 맡으며 EDG 사용자 커뮤니티 자원봉사자가 위원으로 참여함. 라이선스 모델과 달라지는 건 자금 조달 방식과 코드 위치뿐
- 코드는 대부분 C로 작성돼 C++ 표준 라이브러리를 쓰지 않고 상속 대신 C 스타일 union variant를 씀. 가장 오래된 커밋이 1990년까지 거슬러 올라가고, EDG 프런트엔드 자체 컴파일은 10초 미만에 끝남
Hacker News 의견들
이게 뭔지 모르는 사람 많은데, EDG C++은 80년대부터 만들어진 컴파일러 프런트엔드임. 상용 C/C++ 컴파일러, 정적 분석기, 린터, IDE 자동완성 도구들이 밑에 깔고 쓰는 경우가 많음.
남은 4대 C++ 프런트엔드가 gcc, clang, MSVC, EDG임. 나머지 C++ 컴파일러는 대부분 EDG나 clang을 리스킨한 거고, 인텔 C++ 컴파일러도 예전엔 EDG 기반이었다가 요즘은 clang으로 갈아탐.
라이선스는 Apache-2.0 WITH LLVM-exception이고 소스는 github.com/edgcpp/compiler에 풀렸음. LLVM 예외 조항은 처음 봤는데, 컴파일 결과물에 임베드된 부분은 재배포 조건을 안 따라도 된다는 내용임.
그 예외 조항 두 번째 문단은 이해가 안 감. GPLv2랑 링크했을 때 특허 조항이나 배상 조항이 충돌하면 그 조항만 면제해준다는 건가?
90년대 초 SGI MIPS C/C++ 컴파일러가 EDG 프런트엔드에 커스텀 백엔드를 붙인 구조였는데 그때 기억이 남. 당시 EDG는 직원이 3명이었고 위키피디아에는 아직 6명이라고 나옴.
C++ 안 쓰는 나도 이건 큰 뉴스라고 바로 느꼈음.
VC++ 인텔리센스가 자체 MSVC 프런트엔드가 아니라 EDG를 쓴다는 게 유명했고 정확성 평판이 엄청 좋았음. 오픈소스화는 C++ 커뮤니티에 확실히 이득임.
근데 슬픈 소식이기도 함. EDG가 문을 닫는다고 발표했음.
맞음. 오픈소스화는 고객들이 clang으로 옮겨가는 동안의 임시 조치고, 프런트엔드 하나가 사실상 수명 끝으로 가는 거라 좋은 뉴스가 아님.
코드 스타일이 재밌음. 주석이 함수 정의 뒤, 여는 중괄호 앞에 옴. 이름을 반복하지 않아도 되고 읽는 흐름이 자연스러움.
계약(contracts) 있는 언어에서 사전조건, 사후조건이 들어가는 자리라 나도 이 방식 좋아함.
타입 이름은 대부분 a_ 접두사인데 모음으로 시작하면 an_이 붙음. a_statement_ptr, an_object_lifetime_ptr 이런 식임.
'Three tracks, one codebase' 같은 문장은 LLM이 쓴 티가 남. 내용은 중요한데 글이 너무 많음.
C++ 컴파일러인데 소스는 여전히 대부분 C고 .c 파일 이름을 그대로 씀. C++ 표준 라이브러리도 안 쓰고 상속 대신 C 스타일 union variant를 씀. 대신 컴파일이 엄청 빨라서 내 머신에서 10초 미만, clang은 10분 넘게 걸림.
컴파일러를 C로 쓰는 건 부트스트랩 때문에 흔한 선택임. 이식성도 훨씬 좋고.
가장 오래된 커밋이 1990년임. 오픈소스 전환에 이 정도 역사가 따라오는 건 진짜 드문 일임.
EDG는 예전 C++에서 export 키워드를 실제로 구현한 유일한 구현체였고, 그 경험이 export 폐기 근거가 됐음. C++26 static reflection도 EDG에서 프로토타이핑됐음.