# 루비 3.4.0 출시

> Clean Markdown view of GeekNews topic #18439. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18439](https://news.hada.io/topic?id=18439)
- GeekNews Markdown: [https://news.hada.io/topic/18439.md](https://news.hada.io/topic/18439.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-12-26T09:51:58+09:00
- Updated: 2024-12-26T09:51:58+09:00
- Original source: [ruby-lang.org](https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/)
- Points: 4
- Comments: 2

## Summary

루비 3.4.0이 12월 25일에 출시되었으며, 주요 업데이트로는 `it` 블록 매개변수 참조 추가, Prism을 기본 파서로 변경, 소켓 라이브러리에 Happy Eyeballs Version 2 지원 추가, YJIT 성능 개선, 모듈식 GC 도입 등이 있습니다. 언어 변경 사항으로는 `frozen_string_literal` 주석 없는 파일의 문자열 리터럴 변경 시 경고 발생과 `**nil` 키워드 스플래팅 지원 등이 포함되었으며, 여러 코어 클래스 및 표준 라이브러리의 성능 개선과 기능 추가가 이루어졌습니다. 호환성 문제로는 오류 메시지 및 백트레이스 표시 방식 변경, `Hash#inspect` 렌더링 방식 변경 등이 있으며, C API와 기타 다양한 변경 사항도 포함되어 있습니다.

## Topic Body

- 예년과 마찬가지로 12/25에 Ruby 3.4.0이 출시됨  
- 주요 업데이트로는 `it` 블록 매개변수 참조 추가, Prism을 기본 파서로 변경, 소켓 라이브러리에 Happy Eyeballs Version 2 지원 추가, YJIT 개선, 모듈식 GC 추가 등이 있음.  
  
- ## `it` 블록 매개변수 참조  
  
  - 변수 이름 없이 블록 매개변수를 참조할 수 있는 `it` 도입됨. 이는 `_1`과 유사하게 작동하며, 간단한 블록에서 사용하기 편리함.  
  
- ## Prism 기본 파서로 변경  
  
  - 기본 파서가 `parse.y`에서 Prism으로 변경됨. 사용자에게는 큰 변화가 없을 것이며, 호환성 문제가 발생하면 보고 요청.  
  
- ## 소켓 라이브러리의 Happy Eyeballs Version 2  
  
  - 소켓 라이브러리에 Happy Eyeballs Version 2 (RFC 8305) 지원 추가됨. 이는 현대 인터넷 환경에 적합한 효율적이고 신뢰할 수 있는 네트워크 연결을 제공함.  
  
- ## YJIT 개선  
  
  - 대부분의 벤치마크에서 성능 향상, 메모리 사용량 감소, 다양한 버그 수정 및 새로운 기능 추가됨.  
  
- ## 모듈식 GC  
  
  - 대체 가비지 컬렉터(GC) 구현을 동적으로 로드할 수 있는 모듈식 GC 기능 추가됨. Rust 툴체인이 필요함.  
  
- ## 언어 변경 사항  
  
  - `frozen_string_literal` 주석 없는 파일의 문자열 리터럴이 변경될 때 경고 발생. `**nil` 키워드 스플래팅 지원 등 다양한 변경 사항 포함.  
  
- ## 코어 클래스 업데이트  
  
  - `Exception#set_backtrace`가 `Thread::Backtrace::Location` 배열을 허용하는 등 여러 코어 클래스 업데이트 포함.  
  
- ## 표준 라이브러리 업데이트  
  
  - RubyGems, Bundler, JSON, Tempfile 등 여러 표준 라이브러리의 성능 개선 및 기능 추가.  
  
- ## 호환성 문제  
  
  - 오류 메시지 및 백트레이스 표시 방식 변경, `Hash#inspect` 렌더링 방식 변경 등 호환성 관련 변경 사항 포함.  
  
- ## C API 업데이트  
  
  - `rb_newobj` 및 `rb_newobj_of` 함수 제거 등 C API 관련 업데이트 포함.  
  
- ## 기타 변경 사항  
  
  - 사용되지 않는 블록을 메서드에 전달할 때 경고 발생 등 다양한 변경 사항 포함.

## Comments



### Comment 32694

- Author: neo
- Created: 2024-12-26T09:51:58+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42507312) 
- Ruby 파서 변경에 대한 기대감이 큼. 이전에 yacc를 사용하라고 배웠지만, Ruby는 수작업으로 작성된 파서를 사용하는 언어 목록에 합류함.
  - 16k 라인의 parse.y를 22k 라인의 prism.c로 대체하는 것은 대담한 움직임임.

- Ruby 3.4.1 버전이 이미 구식임.

- 최근 몇 년간 Ruby의 성능이 특히 향상되었음. 3.3 버전 이후로 --yjit 옵션을 사용하여 모든 앱을 실행하고 있으며, 큰 차이를 보임.

- Shopify의 전략은 YJIT의 이야기와 같음. 서비스 리팩토링이 불가능하다면 Ruby를 리팩토링하겠다는 의지임.

- JIT와 GC 수준에서의 성능 개선이 반가운 추가 사항임.

- 매년 크리스마스 전통처럼 Ruby 릴리스를 기대함.

- 매년 말 Rails 앱을 업데이트하며, 최근에는 안정적이고 성능이 개선되어 업데이트가 쉬워졌음.

- Ruby 팀에게 축하와 감사의 인사를 전함.

- Rails 8 소식 이후 Ruby를 시도하고 싶었으나, 설치 과정이 너무 어려워 포기함.
  - Mac과 Windows에서 Ruby 3.3 버전을 설치하는 것이 큰 도전이었음.
  - Docker에서도 버전 조정이 필요했고, devContainers에서도 문제가 있었음.
  - 설치 후 VSCode와 다른 에디터에서 Rails의 html.erb 파일의 구문 강조가 완전히 깨져 있었음.
  - 온라인에서 해결책을 찾으려 했으나 실패하여 결국 포기함.
  - Mac, Windows, Linux 모두 시도했으나 실패했으며, 누군가 이 문제를 해결할 수 있다면 크리스마스 선물이 될 것임.

### Comment 32702

- Author: eajrezz
- Created: 2024-12-26T11:15:29+09:00
- Points: 1
- Parent comment: 32694
- Depth: 1

> Rails 8 소식 이후 Ruby를 시도하고 싶었으나, 설치 과정이 너무 어려워 포기함.  
  
macOS에서 레일스 설치를 쉽게 해주는 스크립트가 있습니다.  
=>  
https://rails.new/
