👋
[Feature #17473] Pathname ライブラリを Ruby の組み込みライブラリに変更する提案
[Feature #17473] Make Pathname to embedded class of Ruby
-
Pathnameライブラリを Ruby の組み込みライブラリに変更する提案- 組み込みライブラリにすると何が起きるのかというと
requireしなくても利用できるようになる - あとチケット自体は4年前のもの
- 組み込みライブラリにすると何が起きるのかというと
# これが不要になる
# require "pathname"
p Pathname.new('/usr').join('./var').to_s
# => "/usr/var"
- これのモチベーションなんですが Rubygems を gem に依存せずに独立させたい、というのが背景にあるみたいですね
- Rubygems が Pathname や FileUtils, Tsort に依存しており、Pathname の依存関係を剥がすのが難しいらしい
- 組み込みライブラリに変更すること自体は承認されて
Pathnameはコアクラスとして組み込まれました- ただし
Pathname#findPathname#mkpathPathname#rmtreePathname.mktmpdirを使用する場合は引き続きrequire "pathname"が必要になる - https://bugs.ruby-lang.org/issues/17473#note-19
- ただし
- また
Pathnameを組み込みライブラリに変更する話とは別に『Ruby で実装して組み込みたい』という話も出ている- 現状は C言語で実装されているが Ruby のほうが保守しやすいし、他の処理系での移植もしやすい、みたいなのがモチベーション
- https://bugs.ruby-lang.org/issues/17473#note-8
- このあたりをどう対応していくかの議論は引き続き以下の PR でやり取りされている
- Define most of Pathname in Ruby (redo) by eregon · Pull Request #57 · ruby/pathname
- 上記の PR で既に Ruby レイヤーでの
Pathnameの実装はされているが副作用が怖いのでどう組み込んでいくのかが問題になっているみたい?
Discussion