▲GN⁺ 2025-03-26 | parent | ★ favorite | on: Crabtime - Zig의 Comptime을 Rust에서 사용합시다(crates.io)해커뉴스 댓글들** weinzierl Crabtime의 로고를 칭찬함, Rust 매크로를 쉽게 만드는 시도 proc_macro가 별도 크레이트가 필요한 점이 불편했는데, Crabtime이 이를 해결하는 것처럼 보임 다만 Crabtime은 Zig의 comptime과는 다르게, 단순한 컴파일 타임 평가 기능의 확장판처럼 보임 Zig와 Rust의 큰 차이는 타입 정보 접근 가능 여부로, Zig는 가능하지만 Rust는 불가능함 Rust에서는 타입 정보를 얻기 위해 RustDoc 파싱 같은 우회 방법을 사용하고 있음 Crabtime이 타입 리플렉션 기능을 제공하지 않는 것으로 보이며, 이 기능 없이는 진정한 comptime 구현이라 보기 어려움 pron Zig의 comptime은 문법 매크로가 아니기 때문에 더 쉽게 이해하고 디버깅할 수 있음 마치 런타임에 실행되는 함수처럼 동작하며, 강력한 리플렉션과 함께 부분적으로 타입을 가진 언어처럼 작동함 comptime 기능 하나만으로 다른 많은 언어 기능을 대체할 수 있어서, 언어 자체가 단순해짐 Zig는 C 수준의 단순성을 유지하면서도 C++ 수준의 표현력을 제공함 복잡한 언어에 comptime을 추가하는 것은 Zig처럼 단순함의 이점을 얻기 어려움 pjmlp C++의 메타프로그래밍 발전을 긍정적으로 평가함 C++98의 템플릿 해킹에서 시작해 C++23에서는 실용적인 수준으로 발전함 향후 컴파일 타임 리플렉션이 도입되면 더 나아질 전망임 Rust는 매크로마다 문법이 다르거나, syn 같은 외부 크레이트에 의존해야 해서 배워야 할 게 많음 nindalf 선언적 매크로로 작성했던 벤치마크 생성 코드를 Crabtime으로 재작성하여 만족스러운 경험을 함 Crabtime을 사용하면서 대부분의 코드를 Rust처럼 작성할 수 있어서 가독성과 커스터마이징이 향상됨 예전에는 모듈명을 매번 전달해야 했지만, 이제는 디스크에서 파일을 읽어 처리할 수 있음 paste!{}와 crabtime::output!{}의 사용 비교에서 후자가 훨씬 직관적이라고 평가함 반복문 문법도 복잡한 매크로 패턴 대신 Rust의 for 문법을 그대로 사용 가능함 Crabtime 덕분에 Rust 메타프로그래밍에 대해 더 자신감을 갖게 됨 이전 버전은 몇 주 전에, 새로운 버전은 이틀 전에 발표되어 사용자 수는 많지 않음 이전에 작성한 매크로를 자신도 잘 이해 못했으나, Crabtime으로는 명확하게 작성하고 유지할 수 있었음 orman784 복잡한 매크로 작성이 필요한 상황에서 macro_rules만으로는 한계를 느껴 전체 코드를 직접 작성했다고 언급 proc_macro 사용은 피하고 싶지만, 대개 syn, quote, proc_macro2 같은 의존성을 추가해야 해서 불만족 Crabtime이 이를 해결해줄 수 있을지 테스트해보고 싶음 의존성 추가가 얼마나 될지는 아직 확인하지 않았지만, 가능하면 줄이고 싶음
해커뉴스 댓글들**
proc_macro가 별도 크레이트가 필요한 점이 불편했는데, Crabtime이 이를 해결하는 것처럼 보임comptime과는 다르게, 단순한 컴파일 타임 평가 기능의 확장판처럼 보임RustDoc파싱 같은 우회 방법을 사용하고 있음comptime구현이라 보기 어려움comptime은 문법 매크로가 아니기 때문에 더 쉽게 이해하고 디버깅할 수 있음comptime기능 하나만으로 다른 많은 언어 기능을 대체할 수 있어서, 언어 자체가 단순해짐comptime을 추가하는 것은 Zig처럼 단순함의 이점을 얻기 어려움syn같은 외부 크레이트에 의존해야 해서 배워야 할 게 많음paste!{}와crabtime::output!{}의 사용 비교에서 후자가 훨씬 직관적이라고 평가함for문법을 그대로 사용 가능함macro_rules만으로는 한계를 느껴 전체 코드를 직접 작성했다고 언급proc_macro사용은 피하고 싶지만, 대개syn,quote,proc_macro2같은 의존성을 추가해야 해서 불만족