ruby-trunk-changes r55299 - r55317

今日は Unicodeエンコーディング以外での casemap の対応や OpenSSL 1.1.0 対応の変更などがありました。

duerst: r55299 2016-06-07 09:26:41 +0900

casemap に対応していないエンコーディングのコールバック onigenc_not_support_case_map() で ASCII Compatible なエンコーディングでは ASCII 文字の範囲(a-z と A-Z)は正常に動作するようにしています。

svn: r55300 2016-06-07 09:26:42 +0900

version.h の日付更新。

nobu: r55301 2016-06-07 09:31:40 +0900

r55298 の appveyor.yml の libressl-2.3.5 対応でアーカイブ内のファイル名も変化しているので修正しています。

duerst: r55302 2016-06-07 12:55:37 +0900

regenc.c の onigenc_not_support_case_map() の定義をファイル末尾に移動して、さらに onigenc_single_byte_ascii_only_case_map() という関数を追加しています。 single byte 文字のみ含まれていることがわかっている場合に文字サイズを考慮せずに 1 byte ずつループを回すバージョンみたいです。

nobu: r55303 2016-06-07 13:53:47 +0900

make update-mspec, update-rubyspec, update-doclie (ってなんだっけ…), update-simplecov などでサブディレクトリに移動する前に test コマンドでディレクトリ存在チェックしていたのをまず cd してそのエラーで判定するようにしています。

rhe: r55304 2016-06-07 14:57:25 +0900

拡張ライブラリ openssl の OpenSSL 1.1.0 対応の続き。 1.1.0 で導入される SSL_CTX_set_min_proto_version() というマクロの存在チェックをして、可能ならこれを使って TLS の古いバージョンの対応を拒否するようにしています。 [ruby-core:75225] [Feature #12324]

duerst: r55305 2016-06-07 15:05:18 +0900

regenc.c の onigenc_not_support_case_map() を onigenc_ascii_only_case_map() に改名しています。 また iso_08859_X、windows_125X, ascii, us-ascii, koi8_x などのエンコーディングでは r55302 で導入された onigenc_single_byte_ascii_only_case_map() を使うようにしています。

duerst: r55306 2016-06-07 15:28:47 +0900

test/ruby/enc/test_case_comprehensive.rb でテストメソッドを動的に生成するメソッドの名前を generate_casefold_tests → generate_case_mapping_tests に改名しています。

duerst: r55307 2016-06-07 16:13:39 +0900

test/ruby/enc/test_case_comprehensive.rb に ASCII only の encoding 用のテストを生成するメソッドと、それを使ってエンコーディング毎のテストを追加しています。

duerst: r55308 2016-06-07 16:44:19 +0900

String#downcase! の実装で分岐の順番を変えて ASCII 文字のみ含まれる場合を除いて rb_str_casemap() を呼び出すように共通化しています。ここでも onigenc_ascii_only_case_map() と同様の処理を独立して実装していたみたいですね。

rhe: r55309 2016-06-07 16:52:24 +0900

拡張ライブラリ openssl の OpenSSL 1.1.0 対応つづき。 1.1.0 から導入される SSL_CTX_get_security_level() および SSL_CTX_set_security_level() の wrapper である OpenSSL::SSL::SSLContext#security_level, #security_level= メソッドを新設しています。 [ruby-core:75225] [Feature #12324]

duerst: r55310 2016-06-07 17:18:42 +0900

r55308 の String#downcase! の変更と同様に String#upcase!, String#capitalize! と String#swapcase! の実装でも分岐をまとめて 8bit clean な文字列でない場合は常に rb_str_casemap() を使うようにしています。

duerst: r55311 2016-06-07 17:49:55 +0900

casemap のテストで ISO-8859-11、ISO-8859-8、ISO-8859-6、Windows-1255 などのエンコーディングは ASCII 文字のみのテストではなくてフルセットのテストを実施するようにしています。

nobu: r55312 2016-06-07 17:57:36 +0900

メソッドの仮引数やキーワード引数のキーワードに定数やインスタンス変数の記法を使った時に SyntaxError になるのをチェックするテストを追加しています。

nobu: r55313 2016-06-07 17:57:37 +0900

misc/ruby-additional.el の r55197 で追加された 関数 ruby-insert-heredoc-code-block で assert_separately 用のヒアドキュメントブロックを追加する時に begin と end の 2つのヒアドキュメントのトークンの間で改行を入れるようにしています。

rhe: r55314 2016-06-07 21:20:46 +0900

拡張ライブラリ openssl の OpenSSL 1.1.0 対応の続き。テストで 1.1.0 の変更で主にチェックの強化などで動かなくなっているところを修正しているようです。 [ruby-core:75225] [Feature #12324]

rhe: r55315 2016-06-07 21:29:36 +0900

OpenSSL 1.1.0 対応の続き。今度は open-uri のテストでテスト用の証明書を作り直しています。どうやらこれまで使っていたものが間違った作られかたをしたもので、1.0.2 までは許容されてたけど 1.1.0 からエラーになるようになっていたそうです。 [ruby-core:75225] [Feature #12324]

svn: r55316 2016-06-07 21:29:37 +0900

r55315 の行末の空白除去。

rhe: r55317 2016-06-07 21:29:37 +0900

OpenSSL 1.1.0 対応の続き。 r55315 と同様に rubygems のテストでもテスト用の証明書を作りなおしています。 https://github.com/rubygems/rubygems/commit/9be5c53939440a61c4bba73cfffbeb5cfadf72be [ruby-core:75225] [Feature #12324]