Nguồn: GitHub - matz/spinel
Tóm tắt
Spinel là một AOT (Ahead-of-Time) compiler cho Ruby, được tạo bởi Matz — người sáng tạo ngôn ngữ Ruby. Compiler này biên dịch Ruby source code thành native executable bằng cách thực hiện whole-program type inference và sinh ra C code được tối ưu hóa, sau đó biên dịch C code đó bằng trình biên dịch C chuẩn (cc -O2).
Pipeline biên dịch gồm hai bước: spinel_parse dùng thư viện Prism (libprism) để parse Ruby source và serialize AST; spinel_codegen thực hiện type inference và sinh C code. Điểm đặc biệt là Spinel là self-hosting — phần codegen backend được viết bằng Ruby và tự biên dịch chính nó thành native binary.
Kết quả là một standalone executable không có runtime dependencies — không cần Ruby runtime, không cần GC overhead của CRuby. Điều này cho phép đạt được “significant speedups over CRuby” theo lời mô tả của tác giả.
Đây là một bước tiến thú vị trong hệ sinh thái Ruby, lâu nay bị coi là ngôn ngữ chậm do JIT compiler (YJIT) dù đã cải thiện nhiều vẫn chưa đạt hiệu năng của ngôn ngữ compiled. Spinel mở ra hướng tiếp cận khác: biên dịch hoàn toàn offline thay vì JIT tại runtime.