피드로 돌아가기
Dev.toInfrastructure
원문 읽기
CrabPascal v2.18.0, C Codegen 기반 Native Binary 생성 구현
Codegen to C: Native Binaries from Pascal (v2.18.0) | Codegen para C: binários nativos a partir de Pascal (v2.18.0)
AI 요약
Context
Rust 기반 인터프리터 환경을 넘어 독립 실행 가능한 Native Executable 생성이 필요한 요구사항 발생. 기존의 run 모드는 런타임 의존성으로 인해 배포 효율성이 낮고 실행 환경의 제약이 큰 한계점 보유.
Technical Solution
- Pascal 소스 코드를 AST로 변환 후 C 소스로 전이하는 Pascal → AST → C source 파이프라인 설계
- Rust로 구현된 String builtins를
stubs.c로 미러링하여 인터프리터와 Native Binary 간의 동작 일관성 확보 SysUtils내 Trim, Copy, Length 등 핵심 함수를 Type 이름과 구분하여 인식하도록 Parser 로직 개선- C 코드 생성 시 Forward Declaration을 적용하여
pascal_*헬퍼 함수의 참조 무결성 유지 gcc/clang툴체인을 활용한 최종 바이너리 빌드 프로세스 및run모드와의 결과 비교 검증 자동화 체계 구축
실천 포인트
- 서로 다른 런타임 환경 간 동작 일관성 확보를 위해 핵심 로직을 Shared Runtime Surface(`stubs.c`)로 추상화하여 관리할 것 - 컴파일러 개발 시 인터프리터 실행 결과와 최종 바이너리 출력물을 대조하는 Parity Test 인프라를 구축하여 회귀 버그 방지 - 복잡한 객체 그래프나 Generic과 같은 고수준 기능 도입 전, Linear Control Flow 기반의 최소 기능 단위(MVP)부터 Native 전환 검증