1
1
---
2
2
layout : news_post
3
- title : " Ruby 3.4.0 rc1 Released "
3
+ title : " Ruby 3.4.0 rc1 릴리스 "
4
4
author : " naruse"
5
- translator :
5
+ translator : " shia "
6
6
date : 2024-12-12 00:00:00 +0000
7
- lang : en
7
+ lang : ko
8
8
---
9
9
10
10
{% 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 }} 릴리스를 알리게 되어 기쁩니다 .
12
12
13
13
## Prism
14
14
15
- Switch the default parser from parse.y to Prism . [[ Feature #20564 ]]
15
+ parse.y에서 Prism으로 기본 파서를 변경했습니다 . [[ Feature #20564 ]]
16
16
17
- ## Modular GC
17
+ ## 모듈러 GC
18
18
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 ` 를 사용하여 런타임에 로드할 수 있습니다.
23
22
[[ Feature #20351 ]]
24
23
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 ]]
30
29
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 ]]
35
34
36
35
37
- ## Language changes
36
+ ## 언어 변경
38
37
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 ]]
44
43
45
- * ` it ` is added to reference a block parameter . [[ Feature #18980 ]]
44
+ * 블록 인자를 가리키는 ` it ` 이 추가됩니다 . [[ Feature #18980 ]]
46
45
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 ]]
50
49
51
- * Block passing is no longer allowed in index. [[ Bug #19918 ]]
50
+ * 블록을 인덱스로 사용할 수 없게 됩니다. [[ Bug #19918 ]]
52
51
53
- * Keyword arguments are no longer allowed in index. [[ Bug #20218 ]]
52
+ * 키워드 인수를 인덱스로 사용할 수 없게 됩니다. [[ Bug #20218 ]]
54
53
55
54
## YJIT
56
55
57
56
TL;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
+ 주의: 눈에 띄는 클래스 변경만을 포함합니다 .
90
89
91
90
* Exception
92
91
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 ]]
95
94
96
95
* Range
97
96
98
- * ` Range#size ` now raises ` TypeError ` if the range is not iterable . [[ Misc #18984 ]]
97
+ * ` Range#size ` 는 이제 범위가 순회 가능하지 않다면 ` TypeError ` 를 던집니다 . [[ Misc #18984 ]]
99
98
100
99
101
100
102
- ## Compatibility issues
101
+ ## 호환성 문제
103
102
104
- Note: Excluding feature bug fixes .
103
+ 주의: 기능 버그 수정은 포함되어 있지 않습니다 .
105
104
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 ` 의 메서드 등도 마찬가지로 변경됩니다 .
110
109
111
110
```
112
111
Old:
@@ -118,34 +117,34 @@ Note: Excluding feature bug fixes.
118
117
from test.rb:2:in '<main>'
119
118
```
120
119
121
- ## C API updates
120
+ ## C API 변경
122
121
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 ]]
125
124
126
- ## Miscellaneous changes
125
+ ## 그 이외의 변경
127
126
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
+ 경고를 출력합니다 .
130
129
[[ Feature #15554 ]]
131
130
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 ` )를 출력합니다 .
135
134
[[ Feature #20429 ]]
136
135
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 릴리스 또는 변경 로그에서 확인하세요 .
139
138
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
+ 확인해 주세요 .
143
142
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
+ 이루어졌습니다 !
146
145
147
146
148
- ## Download
147
+ ## 다운로드
149
148
150
149
* <{{ release.url.gz }}>
151
150
@@ -168,11 +167,11 @@ since Ruby 3.3.0!
168
167
SHA256: {{ release.sha256.zip }}
169
168
SHA512: {{ release.sha512.zip }}
170
169
171
- ## What is Ruby
170
+ ## Ruby는
172
171
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
+ 특히 웹 개발에서 전 세계적으로 이용되고 있습니다 .
176
175
177
176
[ Feature #13557 ] : https://bugs.ruby-lang.org/issues/13557
178
177
[ Feature #15554 ] : https://bugs.ruby-lang.org/issues/15554
0 commit comments