Cx 개발 로그 — 2026-04-25

발행: (2026년 4월 26일 AM 09:38 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

서브메인에서 6일간의 정체를 돌파

우리는 마침내 네 개의 커밋을 통해 Cx 0.1을 릴리즈‑candidate 단계로 끌어올리는 큰 이정표를 달성했습니다. 중요한 메모리 경계 감사를 통해 치명적인 StrRef 건전성 버그가 발견되어 해결되었으며, 아홉 개의 하드 블로커가 모두 해제되었습니다. 이제 병합 격차만 남아 릴리즈 선언 전 마지막 주요 단계가 됩니다.

Commit a576f20

  • 수정 파일: parser.rs, semantic.rs, main.rs, runtime.rs
  • 추가: 여섯 개의 새로운 매트릭스 테스트 (t109 ~ t114)
  • 리팩터: 평면 대안을 사용하던 타입 파서를 recursive() 방식으로 전환하여 ResultHandle 같은 중첩 타입을 파싱할 수 있게 함. 이는 복잡한 제네릭 처리에 있었던 장애물을 해소했습니다.

Semantic pass 개선

  • DotAccess LValue에 대한 구조체 정의에서 필드‑타입 해석을 강화.
  • 타입 불일치를 거부.
  • runtimeapply_numeric_cast가 이제 AssignCompoundAssign 모두에 대해 LValue의 선언된 타입을 사용하도록 조정.

Runtime 스택 업그레이드

  • 인터프리터용 64 MB 스택 스레드를 별도로 도입해 재귀적인 Cx 프로그램에서 스택 오버플로우를 방지.

통계: 17개 파일 변경, 순증가 119줄.

Commit 41099fb – 메모리 감사 예제

examples/audit_memory/에 12개의 타깃 테스트 프로그램을 추가하여 다음을 검증:

  • 핸들 라이프사이클
  • 복사 의미론
  • 문자열 아레나 연산

결과

  • 9개 테스트 정상 통과
  • 아레나 성장에 대한 알려진 제한 1개 (v0.1에서 허용)
  • 의도적인 의미론 거부 1개
  • 치명적인 건전성 버그 1개 발견 (다음 커밋에서 수정)

중요한 StrRef 문제 해결 (b057340)

이 버그는 StrRef 값이 구조체 필드에 들어가 현재의 이스케이프 검사(변수 할당 및 함수 반환에서 차단)를 우회하도록 허용했습니다.

  • semantic.rs에 새로운 안전 레이어를 추가해 구조체 필드 할당 및 인스턴스화 시 이러한 잠재적 이스케이프를 차단합니다.
  • 매트릭스 테스트 t115를 추가해 의도된 실패를 통해 수정을 검증하고, 아레나‑백 문자열 참조에 대한 스코프 준수를 강화합니다.
  • 추가적인 이스케이프 경로는 발견되지 않았지만, 지속적인 감시가 필요합니다.

미래를 형성하는 세 가지 핵심 결정

StrRef와 구조체 필드

구조체 필드를 통한 모든 StrRef 이스케이프 경로를 차단하여 기존 정책과 일치시키고 마지막 허점을 봉인했습니다.

핸들 double‑drop을 무음(no‑op) 처리

감사를 통해 핸들의 세대 인덱싱이 double‑drop을 안전하게 처리함을 확인했습니다. 향후 릴리즈에서는 경고를 추가할 수 있지만, 현재는 조용히 보호하는 방식으로 유지됩니다.

64 MB 인터프리터 스택 접근법

전용 스레드에 64 MB 스택을 할당하는 간단한 해결책으로 재귀적인 Cx 프로그램에서 스택 오버플로우 문제를 복잡한 프레임‑별 조정 없이 해결했습니다. v0.1에 효율적이며, 추후 스택 크기 축소가 계획되어 있습니다.

v5.0 및 그 이후 로드맵 구상

Commit 587bd20은 서브메인 로드맵을 v5.0으로 끌어올리며 아홉 개의 장벽 벤치마크를 모두 제거했습니다. 알려진 제한 사항은 이제 투명하게 공개됩니다.

  • Submain: 새로운 커밋 19개
  • Main: 통합 대기 중인 커밋 약 15개

다가오는 병합으로 메인 매트릭스가 78개에서 117개 테스트로 확대되며, 모든 하드‑블로커 해결이 포함됩니다.

병합 후 집중 사항

  • 운영 정리(예: daily‑log 브랜치)
  • := 타입 추론 및 패턴 매칭 향상을 통한 품질 게이트 강화
  • 새로운 구문을 위한 IR 낮추기

이들은 v0.1의 즉각적인 블로커는 아니지만, 향후 버전에서 개발자 경험을 크게 개선할 것입니다.

모든 건전성 문제는 패치되었고, 모든 블로커가 해제되었습니다. RC에서 안정 릴리즈로 가는 길은 명확합니다. 다음 단계는 통합 및 정제 작업을 통해 Cx 0.1을 안정 릴리즈로 만드는 것입니다.

Cx 언어 프로젝트 팔로우

0 조회
Back to Blog

관련 글

더 보기 »