Skip to content

Commit b146291

Browse files
committed
news: add release notes for v0.0.40, v0.0.41, v0.0.42
- v0.0.40: Access modifier support, heredoc detection, legacy code removal - v0.0.41: Keyword arguments syntax, bug fix for parentheses-less methods - v0.0.42: Ruby 4.0 support (Christmas release) All release notes available in English, Korean, and Japanese.
1 parent f5f479d commit b146291

File tree

9 files changed

+645
-0
lines changed

9 files changed

+645
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
slug: v0-0-40-release
3+
title: T-Ruby v0.0.40 リリース
4+
authors: [yhk1038]
5+
tags: [release, parser]
6+
---
7+
8+
T-Ruby v0.0.40 では、アクセス修飾子のサポートや heredoc 検出など、パーサーが大幅に改善されました。([PR#22](https://github.com/type-ruby/t-ruby/pull/22))
9+
10+
<!-- truncate -->
11+
12+
## アクセス修飾子のサポート
13+
14+
> 📖 参照: [クラスアノテーション](/docs/learn/classes/class-annotations)
15+
16+
Ruby のアクセス修飾子をメソッド定義と一緒に直接使用できるようになりました:
17+
18+
```ruby
19+
private def secret_method(key: String): String
20+
# ...
21+
end
22+
23+
protected def internal_method(data: Hash): Boolean
24+
# ...
25+
end
26+
```
27+
28+
T-Ruby はこれらのパターンを正しくパースし、型削除時にアクセス修飾子キーワードを保持します。
29+
30+
## Heredoc 検出
31+
32+
新しい `HeredocDetector` が heredoc 文字列内でのメソッドの誤検出を防止します:
33+
34+
```ruby
35+
message = <<~SQL
36+
def fake_method # メソッドとしてパースされない
37+
SELECT * FROM users
38+
end
39+
SQL
40+
```
41+
42+
すべての heredoc バリアントをサポート:`<<DELIM``<<-DELIM`、`<<~DELIM`、`<<'DELIM'`、`<<"DELIM"`。
43+
44+
## ブロックコメントのサポート
45+
46+
パーサーが `=begin`/`=end` ブロックコメントを正しくスキップするようになりました。
47+
48+
## RBS アクセス修飾子サポート
49+
50+
生成された `.rbs` ファイルにアクセス修飾子が含まれるようになりました:
51+
52+
```rbs
53+
private def secret_method: (key: String) -> String
54+
```
55+
56+
## レガシーコードの削除
57+
58+
このリリースでは、非推奨のレガシーコンパイラコードが削除されました:
59+
- `LegacyParser` クラスの削除
60+
- `LegacyCompiler` クラスの削除
61+
- `TRuby::RBSGenerator` の削除(`IR::RBSGenerator` を使用)
62+
- `use_ir` および `use_combinator` パラメータの削除(常に IR を使用)
63+
64+
## アップグレード
65+
66+
```bash
67+
gem update t-ruby
68+
```
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
slug: v0-0-41-release
3+
title: T-Ruby v0.0.41 リリース
4+
authors: [yhk1038]
5+
tags: [release, feature]
6+
date: 2025-12-29T01:00:00
7+
---
8+
9+
T-Ruby v0.0.41 では、キーワード引数構文が導入され、より表現力のある型アノテーションが可能になりました。([PR#27](https://github.com/type-ruby/t-ruby/pull/27))
10+
11+
<!-- truncate -->
12+
13+
## キーワード引数構文
14+
15+
> 📖 参照: [オプション・Rest パラメータ](/docs/learn/functions/optional-rest-parameters)
16+
17+
このリリースでは、位置引数と区別するキーワード引数のための新しい構文が追加されました:
18+
19+
### 分割代入を使用したキーワード引数
20+
21+
```ruby
22+
def create_user({ name: String, email: String }): User
23+
User.new(name: name, email: email)
24+
end
25+
26+
# キーワード引数で呼び出し
27+
create_user(name: "Alice", email: "alice@example.com")
28+
```
29+
30+
### Hash リテラルパラメータ
31+
32+
```ruby
33+
def configure(config: { host: String, port: Integer }): void
34+
# config は分割代入されたキーワードではなく、Hash パラメータです
35+
end
36+
```
37+
38+
### ダブルスプラットによるフォワーディング
39+
40+
```ruby
41+
def forward_options(**opts: Symbol): void
42+
other_method(**opts)
43+
end
44+
```
45+
46+
## 構文まとめ
47+
48+
| 構文 | 意味 |
49+
|------|------|
50+
| `{ name: String }` | キーワード引数(分割代入) |
51+
| `config: { host: String }` | Hash リテラルパラメータ |
52+
| `**opts: Type` | フォワーディング用ダブルスプラット |
53+
54+
## バグ修正
55+
56+
### 括弧なしメソッドの戻り値型削除を修正 ([PR#24](https://github.com/type-ruby/t-ruby/pull/24), [Issue#23](https://github.com/type-ruby/t-ruby/issues/23))
57+
58+
以前は、括弧なしで定義されたメソッドがコンパイル後も型アノテーションが残り、無効な Ruby コードが生成されていました:
59+
60+
```ruby
61+
# 修正前(T-Ruby ソース)
62+
def greet: String
63+
"Hello!"
64+
end
65+
66+
# ❌ バグ:型アノテーションが削除されない
67+
def greet: String
68+
"Hello!"
69+
end
70+
71+
# ✅ 修正済み:正しい Ruby コードにコンパイル
72+
def greet
73+
"Hello!"
74+
end
75+
```
76+
77+
この修正により、括弧の有無に関係なく、すべてのメソッドシグネチャが正しい Ruby コードに変換されます。
78+
79+
## 内部改善
80+
81+
- 共通の文字列ユーティリティを `StringUtils` モジュールに抽出
82+
83+
## アップグレード
84+
85+
```bash
86+
gem update t-ruby
87+
```
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
slug: v0-0-42-release
3+
title: T-Ruby v0.0.42 リリース
4+
authors: [yhk1038]
5+
tags: [release, feature]
6+
date: 2025-12-29T02:00:00
7+
---
8+
9+
T-Ruby v0.0.42 は、クリスマスにリリースされた Ruby 4.0 を完全サポートします。([PR#28](https://github.com/type-ruby/t-ruby/pull/28))
10+
11+
<!-- truncate -->
12+
13+
## Ruby 4.0 サポート
14+
15+
> 📖 参照: [CLI リファレンス](/docs/cli/commands)
16+
17+
2025年クリスマスにリリースされた Ruby 4.0 を完全サポートします:
18+
19+
### RubyVersion 値オブジェクト
20+
21+
新しい `RubyVersion` クラスがバージョンの解析、比較、機能検出を処理します:
22+
23+
```ruby
24+
version = TRuby::RubyVersion.new("3.2.0")
25+
version.major # => 3
26+
version.minor # => 2
27+
version >= TRuby::RubyVersion.new("3.0") # => true
28+
```
29+
30+
### バージョン固有のコード生成
31+
32+
新しい `CodeEmitter` ストラテジーパターンが、異なる Ruby バージョンに適したコードを生成します:
33+
34+
- 環境からターゲット Ruby バージョンを自動検出
35+
- Ruby 3.0 から 4.0 までのバージョン固有の変換
36+
- 3.0-4.x 範囲外のバージョンに対する `UnsupportedRubyVersionError`
37+
38+
### ブロックパラメータの型削除
39+
40+
ブロックパラメータから型アノテーションが削除されます。
41+
42+
## CI の改善
43+
44+
- 将来の互換性テストのため CI マトリックスに `ruby-head` を追加
45+
- ruby-head ビルドで `continue-on-error` を有効化
46+
47+
## 依存関係の更新
48+
49+
- `benchmark` gem を明示的な依存関係として追加(deprecation 警告を解決)
50+
- Ruby 4.0 の ffi 互換性のため `listen` gem をオプショナルに変更
51+
52+
## アップグレード
53+
54+
```bash
55+
gem update t-ruby
56+
```
57+
58+
## 今後の展望
59+
60+
Ruby 4.0 が正式にリリースされた今、T-Ruby は Ruby 3.0+ との下位互換性を維持しながら、最新の Ruby バージョンのサポートに引き続き尽力しています。
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
slug: v0-0-40-release
3+
title: T-Ruby v0.0.40 릴리스
4+
authors: [yhk1038]
5+
tags: [release, parser]
6+
---
7+
8+
T-Ruby v0.0.40에서는 접근제한자 지원과 heredoc 감지 등 파서가 크게 개선되었습니다. ([PR#22](https://github.com/type-ruby/t-ruby/pull/22))
9+
10+
<!-- truncate -->
11+
12+
## 접근제한자 지원
13+
14+
> 📖 참고: [클래스 어노테이션](/docs/learn/classes/class-annotations)
15+
16+
이제 Ruby의 접근제한자를 메서드 정의와 함께 직접 사용할 수 있습니다:
17+
18+
```ruby
19+
private def secret_method(key: String): String
20+
# ...
21+
end
22+
23+
protected def internal_method(data: Hash): Boolean
24+
# ...
25+
end
26+
```
27+
28+
T-Ruby는 이러한 패턴을 올바르게 파싱하고 타입 제거 시 접근제한자 키워드를 유지합니다.
29+
30+
## Heredoc 감지
31+
32+
새로운 `HeredocDetector`가 heredoc 문자열 내부에서 메서드를 잘못 감지하는 것을 방지합니다:
33+
34+
```ruby
35+
message = <<~SQL
36+
def fake_method # 메서드로 파싱되지 않음
37+
SELECT * FROM users
38+
end
39+
SQL
40+
```
41+
42+
모든 heredoc 변형을 지원합니다: `<<DELIM`, `<<-DELIM`, `<<~DELIM`, `<<'DELIM'`, `<<"DELIM"`.
43+
44+
## 블록 주석 지원
45+
46+
파서가 이제 `=begin`/`=end` 블록 주석을 올바르게 건너뜁니다.
47+
48+
## RBS 접근제한자 지원
49+
50+
생성된 `.rbs` 파일에 접근제한자가 포함됩니다:
51+
52+
```rbs
53+
private def secret_method: (key: String) -> String
54+
```
55+
56+
## 레거시 코드 제거
57+
58+
이번 릴리스에서는 더 이상 사용되지 않는 레거시 컴파일러 코드가 제거되었습니다:
59+
- `LegacyParser` 클래스 제거
60+
- `LegacyCompiler` 클래스 제거
61+
- `TRuby::RBSGenerator` 제거 (`IR::RBSGenerator` 사용)
62+
- `use_ir` 및 `use_combinator` 매개변수 제거 (항상 IR 사용)
63+
64+
## 업그레이드
65+
66+
```bash
67+
gem update t-ruby
68+
```
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
slug: v0-0-41-release
3+
title: T-Ruby v0.0.41 릴리스
4+
authors: [yhk1038]
5+
tags: [release, feature]
6+
date: 2025-12-29T01:00:00
7+
---
8+
9+
T-Ruby v0.0.41에서는 키워드 인자 문법이 도입되어 더 표현력 있는 타입 어노테이션이 가능해졌습니다. ([PR#27](https://github.com/type-ruby/t-ruby/pull/27))
10+
11+
<!-- truncate -->
12+
13+
## 키워드 인자 문법
14+
15+
> 📖 참고: [선택적 파라미터 & Rest 파라미터](/docs/learn/functions/optional-rest-parameters)
16+
17+
이번 릴리스에서는 위치 인자와 구분되는 키워드 인자를 위한 새로운 문법이 추가되었습니다:
18+
19+
### 구조 분해를 사용한 키워드 인자
20+
21+
```ruby
22+
def create_user({ name: String, email: String }): User
23+
User.new(name: name, email: email)
24+
end
25+
26+
# 키워드 인자로 호출
27+
create_user(name: "Alice", email: "alice@example.com")
28+
```
29+
30+
### Hash 리터럴 파라미터
31+
32+
```ruby
33+
def configure(config: { host: String, port: Integer }): void
34+
# config는 구조 분해된 키워드가 아닌 Hash 파라미터입니다
35+
end
36+
```
37+
38+
### 더블 스플랫 포워딩
39+
40+
```ruby
41+
def forward_options(**opts: Symbol): void
42+
other_method(**opts)
43+
end
44+
```
45+
46+
## 문법 요약
47+
48+
| 문법 | 의미 |
49+
|------|------|
50+
| `{ name: String }` | 키워드 인자 (구조 분해) |
51+
| `config: { host: String }` | Hash 리터럴 파라미터 |
52+
| `**opts: Type` | 포워딩을 위한 더블 스플랫 |
53+
54+
## 버그 수정
55+
56+
### 괄호 없는 메서드의 리턴 타입 제거 수정 ([PR#24](https://github.com/type-ruby/t-ruby/pull/24), [Issue#23](https://github.com/type-ruby/t-ruby/issues/23))
57+
58+
이전에는 괄호 없이 정의된 메서드가 컴파일 후에도 타입 어노테이션이 그대로 남아 유효하지 않은 Ruby 코드가 생성되었습니다:
59+
60+
```ruby
61+
# 수정 전 (T-Ruby 소스)
62+
def greet: String
63+
"Hello!"
64+
end
65+
66+
# ❌ 버그: 타입 어노테이션이 제거되지 않음
67+
def greet: String
68+
"Hello!"
69+
end
70+
71+
# ✅ 수정됨: 이제 올바른 Ruby 코드로 컴파일
72+
def greet
73+
"Hello!"
74+
end
75+
```
76+
77+
이 수정으로 괄호 유무와 관계없이 모든 메서드 시그니처가 올바른 Ruby 코드로 변환됩니다.
78+
79+
## 내부 개선
80+
81+
- 공통 문자열 유틸리티를 `StringUtils` 모듈로 추출
82+
83+
## 업그레이드
84+
85+
```bash
86+
gem update t-ruby
87+
```

0 commit comments

Comments
 (0)