ruby-trunk-changes r56957 - r56965

今日は Array#pack のキーワード引数 buffer の追加や String#unpack1 という unpack の1要素版のメソッドの追加など新機能の追加がありました。

usa: r56957 2016-12-01 22:08:20 +0900

Array#pack にキーワード引数 buffer と offset を追加して、pack で値をエンコードする文字列を buffer で渡した文字列オブジェクトの offset の位置から書き込むように指示することができるようにしています。おーなるほど、バイナリのエンコーディングが効率的になりそう。 [ruby-dev:49798] [Feature #12754]

usa: r56958 2016-12-01 22:20:47 +0900

r56957 で追加した Array#pack のキーワード引数の offset ですが、pack のフォーマット文字列の指示子に "@" というのがあって書き込む位置を指定できる(知らなかった…)ので offset は削ってます。

naruse: r56959 2016-12-01 23:18:32 +0900

String#unpack1 というメソッドを追加しています。 これは unpack.first と同じで、要するに unpack は配列を返すけど1つの要素だけデコードする時には配列を作るの無駄だよね、ということですね。これも非常に便利ですね。 [ruby-core:77249] [Feature #12752]

naruse: r56960 2016-12-02 02:43:41 +0900

r56959 で未使用になった pack.c のローカル変数を除去。

svn: r56961 2016-12-02 02:43:42 +0900

version.h の日付更新。

rhe: r56962 2016-12-02 11:24:45 +0900

MatchData#hash の実装で利用された Regexp の hash 値利用されていなかった不具合を修正しています。

nobu: r56963 2016-12-02 11:47:11 +0900

\u{XXXX} の表記で内部の空白を許容するように制限を緩めています。

nobu: r56964 2016-12-02 12:33:54 +0900

\u{XXXX} の記法の parse の処理で不正な codepoint のチェックを parser_tokadd_utf8() から parser_tokadd_codepoint() へ移動して1箇所にまとまるようにしています。

nobu: r56965 2016-12-02 15:12:56 +0900

String#chop や chomp のテストで特殊変数 $/ を変更しているテストメソッドで、例外発生などで抜ける時も $/ を元に戻すように ensure 節を追加しています。