피드로 돌아가기
Run vs build-exe: Honest Parity in CrabPascal (v2.17.0) | Run vs build-exe: paridade honesta no CrabPascal (v2.17.0)
Dev.toDev.to
Infrastructure

CrabPascal v2.17.0, Run-Build-exe 간의 Semantic Parity 확보

Run vs build-exe: Honest Parity in CrabPascal (v2.17.0) | Run vs build-exe: paridade honesta no CrabPascal (v2.17.0)

CrabPascal2026년 6월 4일5intermediate

Context

내부 Rust Runtime 기반의 'run' 모드와 C 코드를 생성하는 'build-exe' 모드 간의 동작 불일치 발생. 특히 런타임 오류의 불명확한 발생 지점과 C 툴체인 부재 시의 잘못된 성공 보고가 시스템 신뢰도를 저하시킨 상태.

Technical Solution

  • tests/run_build_parity.rs 도입을 통한 두 실행 경로 간의 stdout 일치 여부 강제 검증
  • Semantic Analysis 단계 강화로 Undeclared Variable 할당 시 런타임이 아닌 컴파일 타임에 명확한 에러 반환
  • C Codegen 단계에서 gcc/clang/msvc 존재 여부를 사전에 확인하여 툴체인 부재 시 즉각적인 Fail-fast 구현
  • SysUtils 문자열 함수들을 stubs.c와 공유하는 C 전용 함수(pascal_Length 등)로 매핑하여 인터프리터와 네이티브 출력 간의 Drift 제거
  • TDictionary 등 Generics 런타임의 Write-back 메커니즘을 두 모드 모두에 적용하여 일관된 데이터 처리 보장

- Dual-mode 실행 환경 구축 시 각 경로의 결과값을 비교하는 Parity Test 자동화 구성 - 외부 툴체인 의존성이 있는 빌드 프로세스 설계 시 Codegen 직후 툴체인 유효성 검증 로직 추가 - 인터프리터 최적화 시 네이티브 코드 생성 경로에 영향을 주지 않는지 회귀 테스트 수행

원문 읽기