Ruby là language specification và ecosystem; CRuby chỉ là implementation phổ biến nhất. “Ruby interpreter” là cách gọi tiện, nhưng runtime hiện đại còn có bytecode VM, JIT và garbage collector—không chỉ đọc từng dòng rồi suy nghĩ.
CRuby (MRI)
Implementation reference, dùng YARV bytecode VM. Tương thích gem tốt nhất và là lựa chọn mặc định của phần lớn Rails app.
CRuby có Global VM Lock nên Ruby code không chạy song song trên nhiều native thread trong cùng process theo cách CPU-bound thường mong muốn. I/O-bound concurrency vẫn hữu ích vì lock có thể được release khi chờ I/O; nhiều process/Ractor/JIT là các hướng khác tùy workload.
JRuby
Chạy trên JVM:
- interop với Java;
- native threads có thể chạy Ruby song song;
- JVM GC/JIT và tooling;
- startup/memory profile khác CRuby;
- gem có native extension C có thể không tương thích trực tiếp.
Phù hợp khi cần Java ecosystem hoặc thread parallelism và chấp nhận kiểm tra compatibility.
TruffleRuby
Xây trên GraalVM, tập trung performance và interoperability. Có thể tối ưu mạnh cho workload dài hạn, nhưng compatibility và operational footprint cần benchmark với application thật.
mruby
Implementation nhẹ, hướng embedding vào application/device. Nó không nhằm chạy nguyên một Rails stack; so như vậy giống chê xe đạp không kéo được container.
Chọn runtime
- Bắt đầu với CRuby nếu không có constraint đặc biệt.
- Chọn JRuby khi JVM integration/threading là lợi thế thật.
- Benchmark TruffleRuby với workload và gem cụ thể.
- Dùng mruby cho embedding/footprint nhỏ.
Đừng chọn bằng benchmark “Hello World”. Đo startup, throughput, tail latency, memory, native gem compatibility, debugging và kỹ năng vận hành của team.