C3 프로그래밍 언어

1 month ago 11

  • 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” 대신 구체적 오류 위치 확인 가능

Read Entire Article