GCC로 Rust 부트스트래핑: 디버깅 오디세이

2025-07-07

이 글에서는 LLVM 대신 GCC를 사용하여 Rust 컴파일러를 부트스트래핑하는 저자의 여정을 자세히 설명합니다. 이 과정은 매우 어려웠으며 세 가지 주요 버그에 직면했습니다. 재귀 함수에 대한 `#[inline(always)]` 속성, 128비트 SwitchInt 종결자의 잘못된 구현, 그리고 정렬되지 않은 메모리 액세스입니다. 저자는 '뇌 수술'과 같은 디버깅 기법을 사용하여 이러한 문제를 단계적으로 파악하고 수정하여 2단계 빌드에 성공하고 3단계를 향해 나아갔습니다. 이 글에서는 코어 덤프를 사용하여 세그멘테이션 폴트를 분석하는 등의 디버깅 기법을 소개하고 컴파일러 최적화의 복잡성을 탐구합니다.

더 보기
개발

Rust-C 컴파일러 업데이트: 핵심 테스트 적용률 96% 달성!

2025-04-12

Rust-C 컴파일러 프로젝트에서 상당한 진전을 이루었습니다. 핵심 테스트 통과율이 95.9%에 달했으며, Rust Week에서 발표되었습니다. 이 글에서는 128비트 정수 인트린식, 검사된 산술 연산, 서브 슬라이싱 버그 수정에 대한 자세한 내용을 설명합니다. C 컴파일러 호환성 개선과 메모리 효율이 높은 새로운 내부 IR로의 전환에 대한 논의도 포함되어 있습니다. 특정 플랫폼에서 컴파일러를 확보하는 데 어려움이 있는 등의 과제도 인정하지만, 작성자는 C99 준수 향상 및 더 광범위한 플랫폼 지원에 전념하고 있습니다. 향후 계획에는 Rust 패닉에 대한 심층적인 조사와 메모리 프로파일러 개발이 포함됩니다.

더 보기
개발

Rust에서의 리플렉션: 안전성과 접근 규칙 사이의 줄다리기

2025-01-03

Rust는 많은 개발자가 원하는 기능인 리플렉션 기능이 부족합니다. 이 글에서는 Rust에 리플렉션을 구현할 때 발생하는 보안 문제에 대해 자세히 다룹니다. Rust의 메모리 안전성 보장으로 인해 리플렉션 API는 메모리 안전성 취약성을 방지하기 위해 엄격한 접근 규칙을 따라야 하며, 개인 필드에 대한 임의 접근을 막아야 합니다. 저자는 리플렉션 실패 처리, 복잡한 리플렉션 경계 표현 등 이러한 제약이 리플렉션 API 디자인에 어떻게 영향을 미치는지 탐구합니다. 안전한 리플렉션 API와 안전하지 않은 리플렉션 API 간의 절충, 기능과 안전성의 균형도 논의됩니다. 결론적으로 Rust에서 안전한 리플렉션 메커니즘을 만드는 것은 다양한 요소를 신중하게 고려해야 하는 복잡하고 어려운 문제입니다.

더 보기
개발 리플렉션