11--- 
22layout : news_post 
3- title : " Ruby 3.4.0 rc1 Released " 
3+ title : " Ruby 3.4.0 rc1 릴리스 " 
44author : " naruse" 
5- translator :
5+ translator :  " shia " 
66date : 2024-12-12 00:00:00 +0000 
7- lang : en 
7+ lang : ko 
88--- 
99
1010{% assign release = site.data.releases | where: "version", "3.4.0-rc1" | first %}
11- We are pleased to announce the release of  Ruby {{ release.version }}.
11+ Ruby {{ release.version }} 릴리스를 알리게 되어 기쁩니다 .
1212
1313## Prism  
1414
15- Switch the default parser from  parse.y to Prism . [[ Feature #20564  ]] 
15+ parse.y에서 Prism으로 기본 파서를 변경했습니다 . [[ Feature #20564  ]] 
1616
17- ## Modular  GC 
17+ ## 모듈러  GC 
1818
19- *  Alternative garbage collector (GC) implementations can be loaded dynamically
20-   through the modular garbage collector feature. To enable this feature,
21-   configure Ruby with ` --with-modular-gc `  at build time. GC libraries can be
22-   loaded at runtime using the environment variable ` RUBY_GC_LIBRARY ` .
19+ *  다른 가비지 컬렉터(GC) 구현을 모듈러 가비지 컬렉터 기능을 통해 동적으로 로드할 수 있습니다.
20+   이 기능을 활성화하려면 Ruby 빌드 시에 ` --with-modular-gc ` 를 설정하세요. GC 라이브러리는
21+   환경 변수 ` RUBY_GC_LIBRARY ` 를 사용하여 런타임에 로드할 수 있습니다.
2322  [[ Feature #20351  ]] 
2423
25- *  Ruby's built-in garbage collector has been split into a separate file at 
26-   ` gc/default/default.c  `  and interacts with Ruby using an API defined in 
27-   ` gc/gc_impl.h ` . The built-in garbage collector can now also be built as a 
28-   library using  ` make modular-gc MODULAR_GC =default`  and enabled using the 
29-   environment variable  ` RUBY_GC_LIBRARY=default ` . [[ Feature #20470  ]] 
24+ *  Ruby의 내장 가비지 컬렉터는  ` gc/default/default.c ` 에 분리되어 있으며, 
25+   ` gc/gc_impl.h  ` 에 정의된 API를 사용하여 Ruby와 상호 작용합니다. 
26+   내장 가비지 컬렉터는  ` make modular-gc MODULAR_GC=default ` 를 사용하여 
27+   라이브러리로서 빌드하고 환경 변수  ` RUBY_GC_LIBRARY =default` 를 
28+   사용하여 활성화할 수 있습니다 . [[ Feature #20470  ]] 
3029
31- *  An experimental GC library is provided based on  [ MMTk] ( https://www.mmtk.io/ ) .
32-   This  GC library can be built using  ` make modular-gc MODULAR_GC=mmtk `  and 
33-   enabled using the environment variable  ` RUBY_GC_LIBRARY=mmtk ` . This requires 
34-   the Rust toolchain on the build machine . [[ Feature #20860  ]] 
30+ *  [ MMTk] ( https://www.mmtk.io/ ) 를 기반으로 한 실험적인 GC 라이브러리가 제공됩니다 .
31+   이  GC 라이브러리는  ` make modular-gc MODULAR_GC=mmtk ` 를 사용하여 빌드하고 
32+   환경 변수  ` RUBY_GC_LIBRARY=mmtk ` 를 사용하여 활성화할 수 있습니다. 
33+   이는 빌드 머신에 Rust 도구 체인이 필요합니다 . [[ Feature #20860  ]] 
3534
3635
37- ## Language changes  
36+ ## 언어 변경  
3837
39- *  String literals in files without a  ` frozen_string_literal `  comment now emit a deprecation warning 
40-   when they are mutated .
41-   These warnings can be enabled with  ` -W:deprecated `  or by setting  ` Warning[:deprecated] = true ` .
42-   To disable this change, you can run Ruby with the  ` --disable-frozen-string-literal ` 
43-   command line argument . [[ Feature #20205  ]] 
38+ *  파일에  ` frozen_string_literal `  주석이 없을 때, 문자열 리터럴이 변경되면 
39+   폐기 예정 경고를 출력합니다 .
40+   이 경고는  ` -W:deprecated ` 나  ` Warning[:deprecated] = true `  설정을 통해 활성화할 수 있습니다 .
41+   이 변경을 무효화하고 싶다면 Ruby를 실행할 때  ` --disable-frozen-string-literal `  커맨드라인 인수를 
42+   사용하세요 . [[ Feature #20205  ]] 
4443
45- *  ` it `  is added to reference a block parameter . [[ Feature #18980  ]] 
44+ *  블록 인자를 가리키는  ` it ` 이 추가됩니다 . [[ Feature #18980  ]] 
4645
47- *  Keyword splatting  ` nil `  when calling methods is now supported .
48-   ` **nil `  is treated similarly to  ` **{} ` , passing no keywords ,
49-   and not calling any conversion methods.   [[ Bug #20064  ]] 
46+ *  메서드 호출 시에  ` nil ` 에 키워드 스플랫을 지원합니다 .
47+   ` **nil ` 은  ` **{} ` 와 비슷하게 동작하며, 키워드를 넘기지 않으며 ,
48+   어떤 변환 메서드도 호출하지 않습니다.  [[ Bug #20064  ]] 
5049
51- *  Block passing is no longer allowed in index.   [[ Bug #19918  ]] 
50+ *  블록을 인덱스로 사용할 수 없게 됩니다.  [[ Bug #19918  ]] 
5251
53- *  Keyword arguments are no longer allowed in index.   [[ Bug #20218  ]] 
52+ *  키워드 인수를 인덱스로 사용할 수 없게 됩니다.  [[ Bug #20218  ]] 
5453
5554## YJIT  
5655
5756TL;DR:
58- *  Better performance on most benchmarks on both x86-64 and arm64 platforms .
59- *  Reduced memory usage of compilation metadata 
60- *  Multiple bug fixes. YJIT is now even more robust and better tested .
61- 
62- New features :
63- *  Add unified memory limit via  ` --yjit-mem-size `  command-line option (default 128MiB) 
64-   which tracks total YJIT memory usage and is more intuitive than the 
65-   old  ` --yjit-exec-mem-size ` .
66- *  More statistics now always available via  ` RubyVM::YJIT.runtime_stats ` 
67- *  Add compilation  log to track what gets compiled via  ` --yjit-log ` 
68-   *  Tail of the log also available at run-time via  ` RubyVM::YJIT.log ` 
69- *  Add support for shareable consts in multi-ractor mode 
70- *  Can now trace counted exits with  ` --yjit-trace -exits=COUNTER ` 
71- 
72- New optimizations :
73- *  Compressed context reduces memory needed to store YJIT metadata 
74- *  Improved allocator with ability to allocate registers for local variables 
75- *  When YJIT is enabled, use more Core primitives written in Ruby: 
76-   *  ` Array#each ` , ` Array#select ` , ` Array#map `  rewritten in Ruby for better performance  [[ Feature #20182  ]] .
77- *  Ability to inline small/trivial methods such as: 
78-   *  Empty methods 
79-   *  Methods returning a constant 
80-   *  Methods returning  ` self ` 
81-   *  Methods directly returning an argument 
82- *  Specialized codegen for many more runtime methods 
83- *  Optimize  ` String#getbyte ` , ` String#setbyte `  and other string methods 
84- *  Optimize bitwise operations to speed up low-level bit/byte manipulation 
85- *  Various other incremental optimizations 
86- 
87- ## Core classes updates  
88- 
89- Note: We're only listing outstanding class updates .
57+ *  x86-64와 arm64 플랫폼에서 대부분의 벤치마크에서 성능이 향상되었습니다 .
58+ *  YJIT 메타 데이터 컴파일의 메모리 사용량이 줄었습니다. 
59+ *  여러 버그가 수정되었습니다. YJIT는 이제 더 견고하고 잘 테스트되었습니다 .
60+ 
61+ 새 기능 :
62+ *  YJIT의 메모리 사용량을 추적하는 통합 메모리 제한을  ` --yjit-mem-size ` 
63+   커맨드 라인 옵션(기본값 128MiB)으로 추가했습니다. 
64+   이는 이전  ` --yjit-exec-mem-size ` 보다 직관적이며, YJIT의 전체 메모리 사용량을 추적합니다 .
65+ *  이제  ` RubyVM::YJIT.runtime_stats ` 를 통해 항상 더 많은 통계가 사용 가능합니다. 
66+ *  ` --yjit- log` 를 통해 무엇이 컴파일되었는지 추적하는 컴파일 로그를 추가했습니다. 
67+   *  실행중에도 로그의 마지막 부분을  ` RubyVM::YJIT.log ` 로 확인할 수 있습니다. 
68+ *  멀티 Ractor 모드에서 공유 가능한 상수를 지원합니다. 
69+ *  ` --yjit-track -exits=COUNTER ` 로 종료한 횟수를 추적할 수 있습니다. 
70+ 
71+ 새 최적화 :
72+ *  YJIT 메타 데이터를 저장하는 데 필요한 메모리를 줄이는 컨텍스트 압축. 
73+ *  로컬 변수를 위한 레지스터를 할당할 수 있는 개선된 할당기. 
74+ *  YJIT을 사용할 때 Ruby로 작성된 더 많은 코어 프리미티브를 사용합니다. 
75+   *  성능을 높이기 위해 Ruby로 다시 작성된  ` Array#each ` , ` Array#select ` , ` Array#map `  [[ Feature #20182  ]] .
76+ *  작고 사소한 메서드를 인라인할 수 있는 능력. 
77+   *  빈 메서드 
78+   *  상수를 반환하는 메서드 
79+   *  ` self ` 를 반환하는 메서드 
80+   *  인수를 직접 반환하는 메서드 
81+ *  더 많은 실행시간 메서드에 대한 특별한 코드 생성 
82+ *  ` String#getbyte ` , ` String#setbyte `  및 다른 문자열 메서드를 최적화 
83+ *  저레벨 비트/바이트 조작을 빠르게 하기 위한 비트 연산 최적화 
84+ *  다양한 다른 점진적 최적화 
85+ 
86+ ## 코어 클래스 변경  
87+ 
88+ 주의: 눈에 띄는 클래스 변경만을 포함합니다 .
9089
9190*  Exception
9291
93-   *  ` Exception#set_backtrace `  now accepts an array of  ` Thread::Backtrace::Location ` .
94-     ` Kernel#raise ` , ` Thread#raise `  and  ` Fiber#raise `  also accept this new format . [[ Feature #13557  ]] 
92+   *  ` Exception#set_backtrace ` 는 이제  ` Thread::Backtrace::Location ` 의 배열을 입력으로 받을 수 있습니다 .
93+     ` Kernel#raise ` , ` Thread#raise ` 와  ` Fiber#raise ` 도 같은 형식의 입력을 받습니다 . [[ Feature #13557  ]] 
9594
9695*  Range
9796
98-   *  ` Range#size `  now raises  ` TypeError `  if the range is not iterable . [[ Misc #18984  ]] 
97+   *  ` Range#size ` 는 이제 범위가 순회 가능하지 않다면  ` TypeError ` 를 던집니다 . [[ Misc #18984  ]] 
9998
10099
101100
102- ## Compatibility issues  
101+ ## 호환성 문제  
103102
104- Note: Excluding feature bug fixes .
103+ 주의: 기능 버그 수정은 포함되어 있지 않습니다 .
105104
106- *  Error messages and backtrace displays have been changed .
107-   *  Use a single quote instead of a backtick as a opening quote . [[ Feature #16495  ]] 
108-   *  Display a class name before a method name (only when the class has a permanent name ). [[ Feature #19117  ]] 
109-   *  ` Kernel#caller ` , ` Thread::Backtrace::Location ` 's methods, etc. are also changed accordingly .
105+ *  에러 메시지와 백트레이스의 출력 결과가 변경됩니다 .
106+   *  여는 따옴표로 백틱 대신 작은 따옴표를 사용합니다 . [[ Feature #16495  ]] 
107+   *  메서드 이름 앞에 클래스 이름을 출력합니다(클래스가 불변하는 이름을 가지고 있는 경우만 ). [[ Feature #19117  ]] 
108+   *  ` Kernel#caller ` , ` Thread::Backtrace::Location ` 의 메서드 등도 마찬가지로 변경됩니다 .
110109
111110  ``` 
112111  Old: 
@@ -118,34 +117,34 @@ Note: Excluding feature bug fixes.
118117          from test.rb:2:in '<main>' 
119118``` 
120119
121- ## C API updates   
120+ ## C API 변경   
122121
123- *  ` rb_newobj `  and  ` rb_newobj_of `  (and corresponding macros  ` RB_NEWOBJ ` , ` RB_NEWOBJ_OF ` , ` NEWOBJ ` , ` NEWOBJ_OF ` ) have been removed . [[ Feature #20265  ]] 
124- *  Removed deprecated function  ` rb_gc_force_recycle ` . [[ Feature #18290  ]] 
122+ *  ` rb_newobj ` 와  ` rb_newobj_of ` (그리고 대응하는 매크로인  ` RB_NEWOBJ ` , ` RB_NEWOBJ_OF ` , ` NEWOBJ ` , ` NEWOBJ_OF ` )가 삭제됩니다 . [[ Feature #20265  ]] 
123+ *  폐기 예정인  ` rb_gc_force_recycle `  함수가 삭제됩니다 . [[ Feature #18290  ]] 
125124
126- ## Miscellaneous changes  
125+ ## 그 이외의 변경  
127126
128- *  Passing a block to a method which doesn't use the passed block will show 
129-   a warning on verbose mode ( ` -w ` ) .
127+ *  상세 모드( ` -w ` )에서 메서드에 넘긴 블록이 사용되지 않았을 때 
128+   경고를 출력합니다 .
130129  [[ Feature #15554  ]] 
131130
132- *  Redefining some core methods that are specially optimized by the interpeter 
133-   and JIT like  ` String.freeze `  or  ` Integer#+ `  now emits a performance class 
134-   warning  (` -W:performance `  or  ` Warning[:performance] = true ` ).
131+ *  ` String.freeze ` 나  ` Integer#+ ` 처럼 인터프리터와 JIT이 특별히 최적화하는 
132+   몇몇 코어 메서드를 재정의하면 성능 클래스 
133+   경고 (` -W:performance ` 나  ` Warning[:performance] = true ` )를 출력합니다 .
135134  [[ Feature #20429  ]] 
136135
137- See GitHub releases like  [ Logger] ( https://github.com/ruby/logger/releases )  or 
138- changelog for details of the default gems or bundled gems .
136+ 기본 gem 또는 내장 gem에 대한 자세한 내용은  [ Logger] ( https://github.com/ruby/logger/releases ) 와 같은 
137+ GitHub 릴리스 또는 변경 로그에서 확인하세요 .
139138
140- See  [ NEWS] (https://github.com/ruby/ruby/blob/{{  release.tag }}/NEWS.md)
141- or  [ commit logs ] (https://github.com/ruby/ruby/compare/v3_3_0...{{  release.tag }})
142- for more details .
139+ 더 자세한 내용은  [ NEWS] (https://github.com/ruby/ruby/blob/{{  release.tag }}/NEWS.md)나 
140+ [ 커밋 로그 ] (https://github.com/ruby/ruby/compare/v3_3_0...{{  release.tag }})를 
141+ 확인해 주세요 .
143142
144- With those changes,  [ {{ release.stats.files_changed }} files changed , {{ release.stats.insertions }} insertions (+), {{ release.stats.deletions }} deletions (-)] (https://github.com/ruby/ruby/compare/v3_3_0...{{  release.tag }}#file_bucket)
145- since Ruby 3.3.0 !
143+ 이러한 변경사항에 따라, Ruby 3.3.0 이후로  [ 파일  {{ release.stats.files_changed }}개 수정 , {{ release.stats.insertions }}줄 추가 (+), {{ release.stats.deletions }}줄 삭제 (-)] (https://github.com/ruby/ruby/compare/v3_3_0...{{  release.tag }}#file_bucket)가 
144+ 이루어졌습니다 !
146145
147146
148- ## Download  
147+ ## 다운로드  
149148
150149*  <{{ release.url.gz }}>
151150
@@ -168,11 +167,11 @@ since Ruby 3.3.0!
168167      SHA256: {{ release.sha256.zip }} 
169168      SHA512: {{ release.sha512.zip }} 
170169
171- ## What is Ruby  
170+ ## Ruby는  
172171
173- Ruby was first developed by  Matz (Yukihiro Matsumoto) in 1993 ,
174- and is now developed as Open Source. It runs on multiple platforms 
175- and is used all over the world especially for web development .
172+ Ruby는 1993년에  Matz(마츠모토 유키히로) 씨가 처음 개발했고 ,
173+ 현재는 오픈 소스로서 개발되고 있습니다. 여러 플랫폼에서 동작하며, 
174+ 특히 웹 개발에서 전 세계적으로 이용되고 있습니다 .
176175
177176[ Feature #13557 ] : https://bugs.ruby-lang.org/issues/13557 
178177[ Feature #15554 ] : https://bugs.ruby-lang.org/issues/15554 
0 commit comments