Ruby 4.0.2 정식 출시 및 YJIT 버그 수정 업데이트 안내
Ruby 4.0.2는 Puma 서버 환경에서 발생하는 YJIT 관련 NoMethodError 버그를 해결하여 웹 애플리케이션의 구동 안정성을 대폭 향상시킨 정기 업데이트 버전입니다.
Ruby 4.0.2 정식 출시 및 YJIT 버그 수정 업데이트 안내
Ruby 4.0.2는 Puma 서버 환경에서 발생하는 YJIT 관련 NoMethodError 버그를 해결하여 웹 애플리케이션의 구동 안정성을 대폭 향상시킨 정기 업데이트 버전입니다.
Ruby 4.0.2 정식 출시 및 YJIT 버그 수정 업데이트 안내
Ruby 4.0.2는 Puma 서버 환경에서 발생하는 YJIT 관련 NoMethodError 버그를 해결하여 웹 애플리케이션의 구동 안정성을 대폭 향상시킨 정기 업데이트 버전입니다.
2026년의 레일즈 스타트업: 두려움을 넘어 혁신으로 나아가는 루비 생태계
루비 온 레일즈는 단순한 유산이 아니라 Bold, Kora, Intercom Finn과 같은 최신 AI 기반 혁신 스타트업들이 선택하는 강력한 생산성 도구로 입증되었습니다.
#yjit
https://ruby-news.kr/articles/rubyconfth-2026-irina-nazarova-keynote-startups-on-rails-in-2026
Ruby Game Boy 에뮬레이터 제작기: AI와 함께한 10년 만의 부활
발표자 Colby Swandale은 10년 전 개발을 중단했던 Ruby 기반 Game Boy 에뮬레이터 Waterfell을 최신 AI 도구인 Claude Code를 활용해 완성했습니다.
Ruby 4.0의 새로운 실험적 컴파일러 ZJIT와 YJIT의 성능 비교 및 2026년 운영 가이드
Ruby 4.0에서 도입된 ZJIT는 메서드 기반의 실험적 JIT 컴파일러로, 기존 인터프리터보다 빠르지만 현재는 YJIT의 성능에 미치지 못하는 단계입니다.
#yjit
https://ruby-news.kr/articles/ruby-4-0s-zjit-vs-yjit-benchmarks-safest-settings-and-what-to-try-in-2026-8dd32bf345f5
Ruby 4.0의 ZJIT: 느리지만 탁월한 장기적 아키텍처 선택
Ruby 4.0에 도입된 ZJIT 컴파일러는 YJIT보다 초기 성능은 느리지만, 장기적인 확장성과 커뮤니티 기여를 위한 "교과서적" 아키텍처를 채택했습니다.
#yjit
https://ruby-news.kr/articles/zjit-explained-why-ruby-4-0s-slower-jit-compiler-is-actually-a-genius-move-c04f3ef7aa0c
Ruby 코어 언어 주요 변경 및 성능 개선 사항 요약
YJIT 활성화 시 객체 할당 성능이 위치 인자 약 2.3배, 키워드 인자 약 6배로 대폭 향상되었습니다.
Solved today's #adventofcode part 2 non-discretely. Took me four hours, maybe more. Memory requirements are minimal and my running time is slightly above two seconds (#Ruby with #YJIT).
The code is here: https://codeberg.org/der-scheme/adventofcode.rb/src/branch/main/2025/09
The repo also contains a visualization in case somebody needs it.
Approach in content warning below:
I went kinda nuts on yesterday's #adventofcode trying to optimize my #Ruby implementation. The resulting code is nothing special, but here it is, for reference: https://codeberg.org/der-scheme/adventofcode.rb/src/branch/main/2025/08
I consistently achieve sub 2.5 seconds with #YJIT for all four (both parts on both input and test input) runs, including I/O and all the process spawning stuff, measured by `time ./test`. No JIT is about 25–30% slower. I have no idea how fast this is, but I'm stating it for transparency.
I consider myself a smooth-brain, but here's what I believe to have learned (some very obvious, others not so much):
- Even if you don't care about your return values (discarding them), YJIT does. So if the return value is irrelevant, return a predictable value; self is a good choice. This is consistent with YJIT's documented behavior.
- There's a tiny overhead in splatting, so it's faster to be explicit.
- There seems to be some overhead in the creation of local variables. Sometimes it's faster calling a reader method multiple times.
- While structs (Struct, not Data, although they share most of the implementation) can be slightly slower than trivial wrapper classes, I found a case where a struct with a single field resulted in a 15% overall runtime boost compared to the equivalent class. It's no longer in the code base, though, because:
- Oftentimes, shoving everything into an array to deal with later is faster than dealing with it early.
- There seems to be no performance gain in freezing. I attempted freezing an object in the constructor hoping YJIT would maybe inline instance variable access, but this resulted in an overall 10% performance drop through this single line change. However, the necessary code changes resulted in speedups in other places, so the work was still worth it.
- Sometimes arrays are faster, sometimes enumerators are faster, for the exact same functionality.
- `def some_size = some&.size || 0` seems faster than the verbose alternative. Maybe YJIT can optimize operators better than branches?
- There's a bunch of stuff I didn't try, like the C-like implementations you can find published all over the internet. If I wanted to write fast but unreadable code, I'd use FFI and C.
- Git commit makes your code run slower. I assume there's some FS weirdness going on which is triggered by committing, like maybe a cache reset.
Ruby 3.3의 새로운 기능과 성능 개선
Ruby 3.3은 YJIT 컴파일러의 성능 향상과 새로운 C 기반 파서 Prism 도입으로 전반적인 애플리케이션 속도와 개발 도구 기반을 강화했습니다.