ruby-trunk-changes r51946 - r51958

今日は # frozen_string_literal: true のような magic comment および --enable-frozen-string-literal という引数で文字列リテラルが最初から freeze された状態になるように指定できるようにする変更がありました。

nobu: r51946 2015-09-27 02:52:46 +0900

common.mk で GEM_HOME, GEM_PATH, GEM_VENDOR などの変数を空に設定しておくようにしています。 Travis-CI でのテストの失敗を回避するためとのことなので、Travis-CI ではこれらの環境変数が設定されているために gem の探索に影響があるみたいですね。

nobu: r51947 2015-09-27 08:16:37 +0900

r51944 の ostruct の修正。 writer メソッドの定義が遅延されたので、OpenStruct#delete_field で属性削除時に remove_method でメソッド定義を消す時に NameError を許容するようにしています。 https://github.com/ruby/ruby/pull/1033

nobu: r51948 2015-09-27 09:10:47 +0900

id_table.c の未使用関数の警告を抑制するために gcc拡張機能を利用するようにしています。

nobu: r51949 2015-09-27 09:17:53 +0900

r51948 の再修正。関数の prototype 宣言で IMPL() マクロに渡す名前にアンダースコアが抜けていたのを修正しています。

nobu: r51950 2015-09-27 09:23:18 +0900

r51949 の追加修正。 IMPL() の引数のアンダースコアをもう1箇所追加。

nobu: r51951 2015-09-27 14:47:24 +0900

rubyコマンドライン引数の --enable-xxx, --disable-xxx のオプションのチェックで "-" や "_" で区切られた単語毎に前方一致で省略された記法でも受け付けるようにしています。

nobu: r51952 2015-09-27 15:35:10 +0900

テスト用のライブラリ test/lib/test/unit で複数の assertion の結果をまとめて報告する all_assertions というメソッドを追加して、これまで個別に似たようなことをしていた部分をこの all_assertions の利用におきかえています。

nobu: r51953 2015-09-27 15:44:02 +0900

magic comment として ISeq の compile option を指定できるようにして、その第1弾として frozen_string_literal: true で r51659 で導入された frozen_string_literal オプションをセットして、ファイル単位で文字列リテラルの freeze 化が指定できるようになりました。 [ruby-core:57574] [Feature #8976]
akr さんの日記にも解説があります。 http://www.a-k-r.org/d/2015-09.html#a2015_09_27_1

nobu: r51954 2015-09-27 15:47:00 +0900

r51953 に続きコマンドライン引数 --enable-frozen-string-literal でも string literal の frozen 化を指定できるようになりました。 [ruby-core:57574] [Feature #8976]

nobu: r51955 2015-09-27 18:27:57 +0900

r51954 で追加したテストに magic comment (pragma) とコマンドラインオプションの両方が指定された時のテストを追加しています。 magic comment のほうが優先されるようです。

hsbt: r51956 2015-09-27 18:44:50 +0900

r51947 の ChangeLog エントリが2重になっていたので片方削っています。

nobu: r51957 2015-09-27 18:57:58 +0900

拡張ライブラリ tk の cbsubst_table_setup() で配列の要素を RARRAY_PTR() を使って繰り返しアクセスしていたのを、ローカル変数に格納して参照するように修正しています。

nobu: r51958 2015-09-27 23:32:50 +0900

Module#define_class や Module#define_module で既に定数が定義済みだった時の例外メッセージに、既存の定数の内容のクラスや、super の不一致の場合は両方の super class の名前などを埋め込むようにしてより詳細なメッセージを作るようにしています。