피드로 돌아가기
Dev.toInfrastructure
원문 읽기
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)
AI 요약
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 직후 툴체인 유효성 검증 로직 추가 - 인터프리터 최적화 시 네이티브 코드 생성 경로에 영향을 주지 않는지 회귀 테스트 수행