このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
それぞれのエントリーは参照情報があるため短いです。十分な情報と共に書かれた全ての変更のリストは ChangeLog ファイルか bugs.ruby-lang.org の issue を参照してください。
2.1.0 以降の変更
言語仕様の変更
- nil/true/false
- nil/true/false はフリーズされました [feature#8923]
- Hash リテラル
- 後ろにコロンのあるシンボルをキーにしたときそれをクオートできるようになりました [feature#4276]
- デフォルト引数
- オプショナル引数にデフォルト値のセマンティクスでアクセスできないという長年のバグを修正しました。 [bug#9593]
組み込みクラスの更新
- Dir
- 追加: Dir#fileno
- Enumerable
- 追加: Enumerable#slice_after
- 追加: Enumerable#slice_when
- 拡張: Enumerable#min, Enumerable#min_by, Enumerable#max, Enumerable#max_by は複数の値を返すためのオプションをサポートしました
- Float
- 追加: Float#next_float
- 追加: Float#prev_float
- File
- 追加: File.birthtime
- 追加: File#birthtime
- GC
- GC.latest_gc_info は現在のGCのステータスを再現するために :state を返すようになりました。
- 改善: メジャーGCにインクリメンタルマーキングを導入しました。 [feature#10137]
- IO
- 改善: Windows上でパイプのための IO#read_nonblock, IO#write_nonblock をサポートしました。
- Kernel
- 追加: Kernel.#itself(Object#itself)
- 改善: Kernel.#throw は、対応する catch ブロックがないとき ArgumentError ではなく ArgumentError のサブクラスである UncaughtThrowError を発生させるようになりました
- Process
- 拡張: Process.spawn のような外部プロセスを起動するメソッドは [:out, :err] からリダイレクト されたファイルを書き込みモードで開くようになりました
- Symbol
- 改善: String#to_sym, String#intern によって返される多くのシンボルがGC可能になりました
- Method
- 追加: Method#curry([arity]) はカリー化された Proc オブジェクトを返します
- 追加: Method#super_method はスーパクラスの同名のメソッドの Method オブジェクトを返します。
組み込みクラスの互換性 (機能追加とバグ修正を除く)
- Enumerable
- Enumerable#slice_before の状態管理は非推奨になりました
- Enumerable#chunk の状態管理は非推奨になりました
- Hash
- 非互換: 重複するキーの上書きに関するポリシーを変更しました [bug#10315] { **hash1, **hash2 } は重複するキーについては hash2 の値を持ちます
- Math
- 非互換: Math.#log は 基底が 0 より小さいとき NaN を返すかわりに Math::DomainError を発生させます。 2つの引数に両方とも 0 が指定された場合、負の無限大ではなく NaN を返します。
- 非互換: Math.#atan2 は2の引数の両方に無限大が指定されたとき C99 で期待されるような値を返します。
- Proc
- 非互換: ArgumentError は発生しなくなりました。
- ArgumentError is no longer raised when lambda Proc is passed as a block, and the number of yielded arguments does not match the formal arguments of the lambda, if just an array is yielded and its length matches.
- Process
- Process.spawn のようなプロセスを起動するようなメソッドは [:out, :err] からリダイレクトされるファイルを書き込みモードで開きます。Ruby 2.2以前は読み込みモードで開いていました。
標準添付ライブラリの更新 (優れたもののみ)
- continuation
- callcc は廃止されました。Fiberを使ってください。
- digest
- Kernel.#Digest はスレッドセーフになりました。 マルチスレッド環境でオンデマンドローディングに関して問題がある場合は、 "digest/*" を事前にロードしておくか、Digest::* なクラスを参照するかわりにこのメソッドを呼び出します。
- 以前通知した通り Digest::HMAC を削除しました。
- DL
- DL は標準添付ライブラリから削除されました。fiddle を使ってください。
- etc
- 追加: Etc.#uname
- 追加: Etc.#sysconf
- 追加: Etc.#confstr
- 追加: IO#pathconf
- 追加: Etc.#nprocessors
- find, pathname
- 拡張: Find.#find は "ignore_error" というキーワード引数を受け付けるようになりました
- Matrix
- 追加: Matrix#first_minor
- 追加: Matrix#cofactor
- 追加: Matrix#adjugate
- 追加: Matrix#hstack, Matrix#vstack
- 追加: Matrix#laplace_expansion
- 追加: Vector.basis
- 追加: Vector#-@, Vector#+@, Matrix#-@, Matrix#+@
- 追加: Vector#cross_product
- 追加: Vector#dot
- 追加: Vector#angle_with
- 追加: Vector.independent?, Vector#independent?
- pathname
- Pathname#/ は Pathname#+ のエイリアスです
- 追加: Pathname#birthtime
- rake
- Rake 10.4.0 になりました。 http://docs.seattlerb.org/rake/History_rdoc.html#label-10.4.0
- rubygems
- RubyGems 2.4.2 になりました。リリースノートの全てはリンク先を参照してください。 http://docs.seattlerb.org/rubygems/History_txt.html#label-2.4.2+%2F+2014-10-01
- tsort
- TSort.tsort_each, TSort.each_strongly_connected_component, TSort.each_strongly_connected_component_from はブロックを省略すると Enumerator を返すようになりました。
- xmlrpc
- LibXMLStreamParser という新しいパーサーを追加しました
標準添付ライブラリの互換性 (機能追加とバグ修正を除く)
- mathn
- 非推奨の警告を表示するようになりました [feature#10169]
- ext/date/lib/date/format.rb
- 空だったので削除されました
- digest
- Digest::HMAC は削除されました。OpenSSL::HMAC や外部のgemを使ってください。
- time
- Time.parse, Time.strptime, Time.rfc2822, Time.xmlschema may produce fixed-offset Time objects. It is happen when usual localtime doesn't preserve the offset from UTC.
- Time.httpdate は常にUTCのTimeオブジェクトを生成します。
- Time.strptime は引数が日付や時刻の情報を含まない場合、ArgumentErrorを発生させます。
- lib/rational.rb
- 2009年から非推奨だったので削除しました。
- lib/complex.rb
- 2009年から非推奨だったので削除しました。
- prettyprint
- PrettyPrint#first? は削除しました。
- lib/minitest/*.rb
- mintest 5 と衝突するので削除しました。[feature#9711]
- lib/test/**/*.rb
- minitest 5 と衝突するので削除しました。minitest 4 の単なるラッパーだった。[feature#9711]
- uri
- [RFC3986] をサポートしました。 [feature#2542]
- GServer
- gserver という gem に切り出しました。メンテナンスしていないコードでした。
- Logger
- Logger::Application は logger-application という gem に切り出しました。メンテナンスしていないコードでした。
- ObjectSpace (after requiring "objspace")
- ObjectSpace.#memsize_of(obj) は sizeof(RVALUE) を含むようになりました。 [bug#8984]
- prime
- 非互換:
- Prime.prime? は負の数に対して false を返します。 このメソッドは数が合成数かどうか知るために使うべきではありません。 [bug#7395]
- 非互換:
- psych
- Psych::EngineManager を削除しました [bug#8344]
組込みのグローバル変数の互換性に影響のある変更
なし
C API の更新
- 非推奨のAPIを削除しました [feature#9502]
- Check_SafeStr -> SafeStringValue
- rb_check_safe_str -> SafeStringValue
- rb_quad_pack -> rb_integer_pack
- rb_quad_unpack -> rb_integer_unpack
- rb_read_check : access struct FILE internal. no replacement.
- rb_struct_iv_get : internal function. no replacement.
- struct rb_blocking_region_buffer : internal type. no replacement.
- rb_thread_blocking_region_begin -> rb_thread_call_without_gvl family
- rb_thread_blocking_region_end -> rb_thread_call_without_gvl family
- TRAP_BEG -> rb_thread_call_without_gvl family
- TRAP_END -> rb_thread_call_without_gvl family
- rb_thread_select -> rb_thread_fd_select
- struct rb_exec_arg : internal type. no replacement.
- rb_exec : internal function. no replacement.
- rb_exec_arg_addopt : internal function. no replacement.
- rb_exec_arg_fixup : internal function. no replacement.
- rb_exec_arg_init : internal function. no replacement.
- rb_exec_err : internal function. no replacement.
- rb_fork : internal function. no replacement.
- rb_fork_err : internal function. no replacement.
- rb_proc_exec_n : internal function. no replacement.
- rb_run_exec_options : internal function. no replacement.
- rb_run_exec_options_err : internal function. no replacement.
- rb_thread_blocking_region -> rb_thread_call_without_gvl family
- rb_thread_polling -> rb_thread_wait_for
- rb_big2str0 : internal function. no replacement.
- rb_big2ulong_pack -> rb_integer_pack
- rb_gc_set_params : internal function. no replacement.
- rb_io_mode_flags -> rb_io_modestr_fmode
- rb_io_modenum_flags -> rb_io_oflags_fmode
- struct RBignum は隠されました [feature#6083] かわりに rb_integer_pack と rb_integer_unpack を使います
- struct RRational は隠されました [feature#9513] かわりに rb_rational_num と rb_rational_den を使います
- rb_big_new と rb_big_resize は long のかわりに size_t を受け取ります
- rb_num2long は SIGNED_VALUE のかわりに long を返します
- rb_num2ulong は VALUE のかわりに unsigned long を返します
- st hash table は速度のために2のべき乗のサイズを使います。[feature#9425]. 適切はハッシュ関数を使うと探索は10-25%速くなります。 しかしながら、ハッシュ分散の弱点はもはや素数サイズのテーブルにマスクされていない可能性があります。 なので、拡張ライブラリは良い分散を確保するためにハッシュ関数を微調整する必要があるかもしれません。
- rb_sym2str() を追加しました。`rb_id2str(SYM2ID(sym))` と大体同じですが、動的なシンボルを作成しません。
- rb_str_cat_cstr() を追加しました。`rb_str_cat2()` と同じです。
- 将来的に `rb_str_substr()` と `rb_str_subseq()` は文字列の真ん中を共有しますが、 文字列の末尾だけは共有しません。結局、処理された文字列はNULL終端されない可能性があるので、 NULL終端されたCの文字列を入手したいときは`StringValueCStr()`を呼ぶ必要があります。
- rb_tracepoint_new() はCからアクセス可能な新しい内部的なイベントをサポートしました。r47528
- RUBY_INTERNAL_EVENT_GC_ENTER
- RUBY_INTERNAL_EVENT_GC_EXIT
- rb_hash_delete() は与えられたブロックを評価しなくなりました。
- rb_extract_keywords() と rb_get_kwargs() はエクスポートされました。詳細は README.EXT を参照してください。
ビルドシステムの更新
- ./configure のオプション --with-jemalloc を追加しました。 jemalloc はシステムの malloc が遅かったり、フラグメンテーションする傾向にある場合に適切かもしれません。[feature#9113]
実装の変更
- GC
- String#to_sym や String#intern によって返されるほとんどのシンボルはGC可能になりました。[feature#9634]
- メジャーGCにインクリメンタルマーキングを導入しました。[feature#10137]
- malloc によって起きた GC で lazy sweep を有効にしました。
- VM
- Hash#[] と Hash#[]= で変更不可能な文字列リテラルを使用するようにしました。
- キーワード引数が速くなりました [feature#10440]
- 巨大なスプラットされた配列を rest 引数として受け取れるようになりました[feature#10440]