Hacker News

EDG C++ front-end goes public

EDG C++ 프런트엔드 공개

EDG가 2026년 9월 30일 C++ 프런트엔드 소스 코드를 공개하고, C++ Alliance를 비영리 운영 거점으로 삼았습니다. 사용자 기여, 유지보수, 공동 자금 조달 기능을 하나의 공개 저장소에서 관리하며, 여러 상용 컴파일러와 개발 도구에 쓰인 오랜 C++ 구현을 누구나 이용하고 개선할 수 있게 됐습니다.

AI 요약

EDG는 30년 동안 여러 상용 C·C++ 컴파일러와 정적 분석기, IDE 도구의 기반이 된 C++ 프런트엔드를 개발해 왔습니다. 2026년 9월 30일 소스 코드를 공개했으며, C++ Alliance가 비영리 운영 거점이 됩니다. EDG 측은 엔진과 표준 구현, 사용자 연락 창구는 그대로 유지하고 코드의 관리 위치와 개발 자금 조달 방식을 바꾼다고 설명합니다. 공개 저장소는 GitHub의 edgcpp/compiler이며 라이선스는 Apache-2.0 WITH LLVM-exception입니다.

기여와 유지보수 방식

개발은 세 경로로 진행합니다. 첫째, EDG 사용자가 버그 수정과 기능을 풀 리퀘스트로 제출하면 초기에는 경험 많은 EDG 개발자가 검토합니다. 둘째, C++ Alliance 소속 EDG 개발자가 진행하는 버그 수정과 유지보수는 완료 즉시 공개합니다. 셋째, 규모가 큰 기능은 공동체가 자금을 모아 개발을 지원합니다. 기업은 자체 개발자를 투입하는 대신 필요한 기능의 개발비를 지원할 수 있으며, 기능이 완성되면 모두에게 동시에 공개합니다.

세 경로 모두 같은 공개 저장소에 반영하며, 특정 후원자에게 먼저 제공하지 않는다고 밝혔습니다. 재정 후원 위원회(Fiscal Sponsorship Committee)가 세 경로를 감독하고, John Spicer가 위원장을 맡습니다. EDG 사용자 공동체 자원봉사자도 위원회에 참여할 예정이며, 구성과 개발 우선순위에 관한 의견을 받습니다. C++ Alliance는 비영리 단체로, 재정 후원 체계와 C++ 컴파일러 엔지니어를 갖추고 있으며 C++ 표준 및 Boost 공동체와도 관계를 맺고 있습니다.

프런트엔드의 역할과 배경

Hacker News 댓글에서는 EDG를 GCC, Clang, MSVC와 함께 주요 C++ 프런트엔드 가운데 하나로 설명합니다. 프런트엔드는 어휘 분석과 구문 분석, 템플릿 인스턴스화, constexpr 평가 등 언어를 이해하는 부분입니다. EDG는 중간 표현을 만들고, 이를 여러 컴파일러의 백엔드가 기계어로 바꾸거나 코드 분석에 활용합니다. C++를 C 코드로 변환하는 기능도 있습니다. Visual Studio의 C++ IntelliSense가 EDG 프런트엔드를 사용한다는 설명도 나왔습니다.

전 EDG 엔지니어는 EDG가 MSVC, GCC, Clang의 여러 버전과 동작을 에뮬레이션할 수 있고, 실행 파일 크기가 작으며 빌드가 빠르다고 소개했습니다. 다른 댓글은 EDG 코드가 여전히 C 중심이며, 현대 C++ 표준 라이브러리나 상속 대신 C 스타일 자료 구조를 사용한다고 지적했습니다. 한 사용자는 자신의 컴퓨터에서 EDG 프런트엔드 빌드는 10초 미만이었고 Clang 빌드는 10분 넘게 걸렸다고 했지만, Clang은 프런트엔드 외의 코드까지 포함한 비교라 공정하지 않다고 덧붙였습니다.

공개의 의미를 둘러싼 반응

일부 댓글은 EDG가 C++ 표준 발전에도 영향을 줬다고 평가했습니다. EDG는 C++98의 템플릿 export 기능을 구현한 유일한 프런트엔드였다는 회고가 있었고, C++26 정적 리플렉션을 초기 검증하는 데도 EDG 코드가 쓰였다는 언급이 나왔습니다. 반면, EDG가 사업을 정리하는 과정에서 소스 공개가 이뤄졌다는 댓글도 있었습니다. 이들은 고객이 Clang으로 옮겨가는 동안 이어지는 임시 조치일 수 있다며, 공개 자체를 프런트엔드의 새로운 출발로 보기는 어렵다고 우려했습니다. 다른 참여자는 공개 후에도 개발을 이어갈 수 있기를 기대했습니다.

Hacker News 반응

  • @dgrunwald — 남아 있는 주요 C++ 프런트엔드는 GCC, Clang, MSVC, EDG 네 가지입니다. 대부분의 다른 C++ 컴파일러는 이 가운데 하나를 기반으로 합니다. 프런트엔드는 입력 언어를 이해하며, EDG는 여러 컴파일러가 기계어 생성이나 코드 분석에 활용하는 중간 표현을 만듭니다.
  • @jcranmer — EDG 회사 자체가 문을 닫기 때문에 소스 공개가 이뤄진 것입니다. EDG 고객들이 Clang으로 옮겨가는 동안 이어지는 임시 방편에 가깝습니다. 한 프런트엔드가 사실상 수명 종료에 이르는 것이므로 좋은 소식이라고만 보기는 어렵습니다.
  • @daveedvdv — 저는 EDG에서 일했던 엔지니어입니다. EDG 하나로 MSVC, GCC, Clang의 여러 버전을 상당 부분 흉내 낼 수 있습니다. 예를 들어 --gnu_version=80300을 지정하면 GCC 8.3.0의 동작과 여러 버그, 특이점까지 모방합니다. 최적화된 실행 파일은 작고, 최신 워크스테이션에서 처음부터 빌드해도 몇 초면 끝납니다.
  • @kccqzy — 제가 기억하기로 EDG는 예전 C++의 템플릿 export 키워드를 실제 구현하려고 시도한 유일한 구현체였습니다. 그 경험이 export 폐기에 영향을 줬습니다. EDG는 C++ 발전에 큰 영향을 줬습니다.
    • @pjmlp — C++26 정적 리플렉션도 사례입니다. EDG 개발자 한 명이 아이디어를 시제품으로 구현한 뒤, C++17을 목표로 한 기존 리플렉션 논의가 진척되지 않자 WG21에 제안했습니다.
  • @etyp — 저는 정적 분석에 EDG를 썼지만, 프런트엔드를 Clang으로 바꾸던 시기에 합류했습니다. 오픈소스를 사용해 비용을 줄이려는 이유도 분명히 있었습니다. EDG 위에 쌓인 코드에는 기술 부채가 많았습니다. 두 프런트엔드를 모두 사용해 본 입장에서는 Clang을 다루는 편이 훨씬 좋았습니다. 두 쪽 모두 필요한 기능을 지원하려면 추가 작업이 필요했습니다.
  • @layer8 — 제가 아는 한 C++98의 export template 기능을 지원한 구현체는 EDG뿐이었습니다. 공개된 버전에도 그 기능이 남아 있는지 궁금합니다.
    • @daveedvdv — 함수 템플릿의 정의를 헤더 파일이 아니라 .cpp 파일에 둘 수 있게 하는 기능이었습니다.
  • @compiler-guy — EDG 프런트엔드의 흥미로운 점 하나는 다른 컴파일러와 여러 버전의 동작, 지원 기능을 에뮬레이션한다는 것입니다. 완벽하지는 않지만 상당히 잘합니다.
    • @daveedvdv — EDG는 언어를 파싱하고 완전한 의미 분석을 수행하며, 표현을 대략 C 언어 의미에 맞게 낮출 수도 있습니다. 낮춘 중간 표현에서 C 코드를 생성하거나, 낮추기 전 표현에서 C++ 코드를 생성하는 백엔드가 있습니다.

원문: EDG / 번역·요약: Trawling