-
C 언어의 문법과 의미를 계승하면서 안전성과 사용성을 강화한 진화형 언어로, 기존 C 개발자에게 익숙한 환경을 유지
-
완전한 C ABI 호환성을 제공해 C/C++ 프로젝트에 바로 통합 가능하며, vkQuake 일부 코드가 C3로 변환되어 c3c 컴파일러로 빌드된 사례 존재
-
모듈 시스템, 연산자 오버로딩, 컴파일 타임 매크로 등으로 코드 구조와 표현력을 향상
-
계약 기반 프로그래밍(Gradual Contracts) , 제로 오버헤드 오류 처리, 런타임 및 컴파일 타임 리플렉션 등 현대적 기능을 포함
- 디버그 모드에서 안전 검사와 상세 스택트레이스를 자동 제공해 버그 탐지와 안정성 확보에 유리
C3 개요
-
C3는 C 언어의 문법(syntax) 과 의미(semantics) 를 기반으로 발전시킨 프로그래밍 언어
- 목표는 기존 C 프로그래머에게 익숙한 형태를 유지하면서 언어를 진화시키는 것
-
vkQuake 프로젝트 일부가 C3로 변환되어 c3c 컴파일러로 빌드된 예시 존재
- C와 C3 코드를 동일 프로젝트 내에서 혼합 사용 가능
C와의 완전한 ABI 호환성
- C3는 C ABI와 완전 호환되어 별도의 “C 호환 타입”이나 함수 선언이 필요 없음
- C 코드에서 C3 기능을 제약 없이 호출 가능
모듈 시스템
- 단순하고 직관적인 모듈 시스템을 제공
- 기본 설정이 합리적으로 구성되어 개발 흐름을 방해하지 않음
연산자 오버로딩
-
정확하고 목적 지향적인 연산자 오버로딩을 지원
- C++의 복잡한 오버로딩 구조 없이 벡터, 행렬, 고정소수점 연산을 자연스럽게 표현 가능
컴파일 타임 및 의미적 매크로
-
컴파일 타임 매크로를 함수처럼 읽히는 형태로 작성 가능
- C의 전처리기보다 명확하고 강력한 코드 생성 지원
Gradual Contracts
-
계약 기반 프로그래밍을 지원해 런타임과 컴파일 타임 제약을 명시 가능
제로 오버헤드 오류 처리
-
Result 기반 오류 처리와 예외(exception) 의 장점을 결합
- C 코드와 자연스럽게 통합되는 오류 관리 구조 제공
제네릭 모듈
-
제네릭 타입 생성을 단순하고 명확하게 구현할 수 있는 generic modules 기능 제공
런타임 및 컴파일 타임 리플렉션
-
타입 정보 조회(type introspection) 를 컴파일 타임과 런타임 모두에서 지원
인라인 어셈블리
- 문자열이나 복잡한 제약 없이 일반 코드처럼 어셈블리 작성 가능
디버그 및 안전 검사
-
디버그 모드에서 런타임 경계 검사(bound checks) 와 값 검사(value checks) 를 자동 삽입
상세 스택트레이스
- C3 표준 라이브러리는 디버그 빌드에서 상세 스택트레이스를 기본 제공
- 단순한 “segmentation fault” 대신 구체적 오류 위치 확인 가능