ruby-trunk-changes r38475 - r38512

今日は環境変数VM スタックおよびマシンスタックのサイズを指定する機能追加と OpenSSL の暗号化の AEAD 機能のサポート追加、FIPS 対応モードの on/off を動的に変更できるようにする変更などがありました。

zzak:r38475 2012-12-20 01:04:11 +0900

ext/.document に拡張ライブラリのソースの抜けていたファイルを追記しています。

svn:r38476 2012-12-20 01:04:16 +0900

version.h の日付更新。

ko1:r38477 2012-12-20 06:28:44 +0900

test/ruby/test_fiber.rb のテストで子プロセスに渡すスクリプトに余分なシングルクオート記号が入っていたのを修正しています。SyntaxError になるはずなのにこれなんで気がつかなかったんだろう。

ko1:r38478 2012-12-20 07:29:18 +0900

VM スタックおよびマシンスタックのサイズを指定する環境変数を追加しています。

  • RUBY_THREAD_VM_STACK_SIZE: Thread の起動時の VM スタックサイズ
  • RUBY_THREAD_MACHINE_STACK_SIZE: Thread 起動時のマシンスタックサイズ
  • RUBY_FIBER_VM_STACK_SIZE: Fiber 生成時の VM スタックサイズ
  • RUBY_FIBER_MACHINE_STACK_SIZE: Fiber 生成時のマシンスタックサイズ

これらはプロセスの起動時に取得されてそれ以降は変更できないので、Rubyスクリプト内で ENV でこれらの環境変数を変更してもそのプロセスでは影響しません。またページサイズに丸めたりは自動的にしてくれるようです。 [Feature #4614] [Bug #7212]

ko1:r38479 2012-12-20 07:33:43 +0900

r38478 の ChangeLog エントリにチケット番号の参照を追記しています。

emboss:r38480 2012-12-20 09:29:07 +0900

OpenSSL.fips_mode= というメソッドを新設して FIPS モードの on/off ができるようにしています。 [ruby-core:47345] [Feature #6946]

nobu:r38481 2012-12-20 09:31:06 +0900

r38480 の新規追加ファイルの svn property 設定。

emboss:r38482 2012-12-20 09:32:09 +0900

r36884 で test/openssl/test_pkey_dh.rb で OpenSSL::OPENSSL_FIPS で FIPS モードの有無をみて鍵長を変更するようにしていましたが、OpenSSL.fips_mode= でテスト時は FIPS モードを off にするようにしたので一部 revert しています。

nobu:r38483 2012-12-20 10:52:47 +0900

行末の空白の除去。

nobu:r38484 2012-12-20 10:52:50 +0900

vm.c の fprintf() のフォーマット文字列の指示子に %d を直書きしていたのをマクロを利用するようにしています。

nobu:r38485 2012-12-20 11:05:37 +0900

test/ruby/test_syntax.rb で定義していたカスタム assertion を test/ruby/envutil.rb に移動しています。また assert_normal_exit で渡されたスクリプトの文法エラーをチェックするようにしています。

nobu:r38486 2012-12-20 12:43:53 +0900

test/ruby/test_require.rb で $LOAD_PATH を IO::NULL のみ含む配列にセットして余分なファイルの require がされないようにしています。

drbrain:r38487 2012-12-20 12:57:08 +0900

RDoc が生成する html に h1, h2 などへのリンクを強化しているっぽいですが詳細はわかりませんでした。

emboss:r38488 2012-12-20 15:03:03 +0900

拡張ライブラリ openssl の暗号化機能に Authenticated Encryption with Associated Data (AEAD) 機能のサポートを追加しています。 OpenSSL::Cipher:XXX に auth_data, auth_tag メソッドを追加して認証情報? 付きで暗号化して同じ情報を与えないと復号化できないようになるみたいです。 [ruby-core:47426] [Feature #6980]

nobu:r38489 2012-12-20 15:18:26 +0900

行末の空白除去。

drbrain:r38490 2012-12-20 15:23:28 +0900

RDoc が Ruby スクリプトの定数に格納されているオブジェクトの特異メソッドを定義する構文をパースした時にドキュメント対象にしないようにしています。

emboss:r38491 2012-12-20 16:00:11 +0900

OpenSSL.fips_mode メソッドの実装はリンクする OpenSSL が FIPS_mode_set をサポートしている時だけになるようにしています。サポートされていない時に呼ぶと OpenSSL::OpenSSLError が発生するようにしています。 [ruby-core:47345] [Feature #6946]

emboss:r38492 2012-12-20 16:42:56 +0900

拡張ライブラリ openssl の Authenticated Encryption with Associated Data (AEAD) のサポートも OpenSSL がサポートしている時だけ実装して、未対応のライブラリとリンクする時は NotImplementmentedError が発生します。 [ruby-core:47426] [Feature #6980]

usa:r38493 2012-12-20 16:43:54 +0900

gc.c で定義されている nonspecial_obj_id() という関数マクロで LLP64 のプラットフォーム(VALUE と long のサイズが一致してない)の時に期待した挙動になっていなかったのを修正しています。 [ruby-core:50255] [Bug #7454]

emboss:r38494 2012-12-20 16:54:13 +0900

NEWS ファイルに拡張ライブラリ openssl が AEAD 機能をサポートしたことを追記しています。

shugo:r38495 2012-12-20 17:13:53 +0900

クラス定義をする時にスーパークラスとしてクラスしか指定できないようにチェックがあるのですが、nil や false は指定してもエラーにならないのを修正しています。クラス定義でスーパークラスが指定されなかった時というのを明示的に渡さずに Qnil が指定されたかのように使っていたため、ビットフラグで指定があったかどうかを渡すようにしています。ついでに '::' でネストした名前空間のクラス定義をしているかも同じビットフラグで渡すように修正しています。 [ruby-dev:46747] [Bug #7572]

shugo:r38496 2012-12-20 17:29:41 +0900

NEWS ファイルの Refinement についての変更点を修正しています。

nobu:r38497 2012-12-20 18:28:33 +0900

ext/openssl/ossl.c で関数マクロ RTEST() を if の条件にかっこなしで書いていたところを修正(かっこを追加)しています。 RTEST() 自体が展開したらかっこを持ってるのでコンパイルエラーにはなっていませんでした。

nobu:r38498 2012-12-20 18:28:35 +0900

ext/tk/tkutil/tkutil.c に同じように関数マクロ NIL_P() を if の条件部にかっこで括らずに使っていたところがあったので修正しています。

nobu:r38499 2012-12-20 18:29:57 +0900

関数マクロ RTEST() と NIL_P() の条件判定の方法を反転しています。これで展開結果がかっこで括られていなくなるので、 if の条件部にそのまま書くのは構文エラーになります。

tarui:r38509 2012-12-20 21:02:37 +0900

r38464 と同様 rb_suppress_tracing() でも vm->trace_running をカウンタとして使うように変更しています。

kazu:r38510 2012-12-21 00:32:39 +0900

r38478, r38493, r38509 の ChangeLog エントリの typo 修正。

svn:r38511 2012-12-21 00:32:44 +0900

version.h の日付更新。

tarui:r38512 2012-12-21 01:02:43 +0900

irb の拡張 lib/irb/completion.rb でインスタンス変数がタブによる補完対象に含まれていなかったのを追加しています。 [ruby-dev:46710] [Bug #7520]