ruby-trunk-changes r53537 - r53547

今日は主にインデント除去つきヒアドキュメントと通常の文字列リテラルの暗黙の連結時の不具合修正などがありました。

hsbt: r53537 2016-01-15 09:25:46 +0900

sample/test.rb という位置にあったテスト? を basictest/test.rb と改名して make のターゲット名も test-basic に改名しています。これまでも make test で実行はされてたみたいですね。 [ruby-core:72823] [Feature #11982]

svn: r53538 2016-01-15 09:25:47 +0900

version.h の日付更新。

nobu: r53539 2016-01-15 13:33:43 +0900

r53537 で移動した basictest の出力するメッセージに sample/test.rb というファイル名が残っていたのでこれも test/basictest.rb に変更しています。 [ruby-core:72823] [Feature #11982]

nobu: r53540 2016-01-15 13:39:35 +0900

defs/gmake.mk でも r53537 の basictest の make ターゲット名の変更に追随しています。 [ruby-core:72823] [Feature #11982]

nobu: r53541 2016-01-15 16:12:46 +0900

以下のようにインデント除去ヒアドキュメントとその他の文字列リテラルの暗黙の連結を使った場合に、連結した文字列リテラルにもインデントの除去がきいてしまう不具合を修正しています。

str = <<~END "  y"
  x
END

こんなふうにヒアドキュメントと普通の文字列リテラルでも連結がきくとは知りませんでした…。 [ruby-core:72857] [Bug #11990]

naruse: r53542 2016-01-15 20:05:51 +0900

r53537 の sample/test.rb の basictest/ への移動を revert しています。 RubyCI で使っている chkbuild の対応も必要だったみたいです。

ngoto: r53543 2016-01-15 20:25:29 +0900

regint.h の PLATFORM_UNALIGNED_WORD_ACCESS というマクロ定義に UNALIGNED_WORD_ACCESS というマクロを参照するようにしています。プラットフォームによらず -DUNALIGNED_WORD_ACCESS=0 をつけてビルドすることでアライメントに厳格なプラットフォームと同じソースコードを利用できるようにしています。 PLATFORM_UNALIGNED_WORD_ACCESS が定義されていない場合のコードにビルドエラーになるようなミスあるのに気がつけるようにというようなチェック目的かな、と思ったのですが、gcc 6 でのビルドエラーへの対策のために入れたみたいですね。 [ruby-core:72211] [Bug #11831]

nobu: r53544 2016-01-15 22:08:45 +0900

r53542 での r53537 の revert に伴ない r53539 と r53540 も revert しています。

nobu: r53545 2016-01-15 22:12:17 +0900

r53543 で入れた PLATFORM_UNALIGNED_WORD_ACCESS の定義の制御を使って gcc の 6以降では UNALIGNED_WORD_ACCESS=0 に定義してメモリアライメントを厳密にするようにしています。チケットの報告をみるとどうも gcc 6 での不具合(修正はまだリリースされてない)みたいですね。ということはここの条件も将来的にはもう少し狭められるのかも。 [ruby-core:72211] [Bug #11831]

nobu: r53546 2016-01-15 22:15:39 +0900

r53545 と同様に include/ruby/defines.h と st.c でも gcc 6 以降で UNALIGNED_WORD_ACCESS を 0 に定義するようにしています。 似たような定義があちこちにあるんですね。 [ruby-core:72211] [Bug #11831]

nobu: r53547 2016-01-15 22:16:53 +0900

.gdbinit に dump_node というコマンドを追加して NODE を rb_parser_dump_tree() で文字列化した結果を表示できるようにしています。