Rust 개발자가 Zig로 JSONPath를 다시 구현하며 느낀 차이

22 hours ago 2

7년간 Rust를 사용한 개발자가 RFC 9535 기반 JSONPath를 Zig로 다시 구현해 보니, Zig는 단순하고 빠른 C 후계자 후보라는 인상을 줬지만 언어와 생태계는 아직 미성숙했음 제한적인 IDE 지원은 개발 방식을 CLI 중심으로 바꾸는 계기가 됐고, build.zig 로 전체·개별·디버그·준수 테스트를 간결하게 실행할 수 있었음 Zig는 Rust보다 평평한 파일 구조와 명령형 코드를 유도하며, 할당자를 직접 다뤄야 해 함수형 조합 대신 제자리 변경과 반복문을 쓰는 경우가 많아짐 명시적 메모리 관리는 init·deinit·defer·errdefer 규율을 요구함. TestAllocator와 FailingAllocator 로 누수와 이중 해제를 검출할 수 있지만, Rust의 소유권과 Drop이 막아주는 오류를 직접 방지해야 함 라이브러리 부족과 버전별 표준 라이브러리 API 변화가 실사용을 제약함. 특히 mvzr의 Unicode 속성 이스케이프 미지원은 RFC 9535 필터 함수 구현에 직접적인 공백을 남김 비교 프로젝트와 전제 7년간 주로 오픈소스 Rust 프로젝트를 개발했고, 깨끗한 함수와 표현력 있는 타입 등 함수형 스타일을 선호해 왔음 Zig 경험은 이번 프로젝트가 처음이어서 일부 판단과 구현은 Zig 관용구보다 Rust에서 가져온 습관의 영향을 받았으며, 최적의 선택이 아닐 수 있음 장난감보다 크면서 지나치게 방대하지 않고 실제로 활용할 수 있는 비교 대상으로 RFC 9535의 JSON 질의 언어인 JSONPath를 선택함 기존 Rust 구현체는 jsonpath-rust임 같은 기능을 Zig로 옮긴 결과물은 zig-jsonpath임 IDE 대신 CLI로 개발하기 RustRover와 여러 JetBrains IDE를 사용하던 환경과 달리, Zig 지원은 구문 강조와 기본 자동완성 정도에 머물렀음 제한적인 IDE 지원 때문에 명령줄 중심으로 언어를 익혔으며, 기본 CLI 도구만 사용하는 방식이 예상보다 단순하고 쾌적했음 build.zig 로 주요 개발 작업을 구성함 zig build test: 전체 테스트 실행 zig build test -Dfilter="filter match function basic": 특정 테스트 실행 zig build test -Ddebug-query=true: 디버그를 활성화한 전체 테스트 실행 zig build compliance: 준수 테스트 스위트 실행 zig bu...

Read Entire Article