Hatena::ブログ(Diary)

PB memo このページをアンテナに追加 RSSフィード

2016-08-26 ruby-trunk-changes r56009 - r56017

[][]ruby-trunk-changes r56009 - r56017

今日は主に parse.y のリファクタリングがありました。

nobu: r56009 2016-08-26 17:29:17 +0900

parse.y の regex のルールの処理を new_regexp_gen() という関数に切り出すリファクタリング。ルール部で ripper 用と parser 用の分岐を不要にしています(同名で別の関数が定義されるように preprocessor で分岐している)。

svn: r56010 2016-08-26 17:29:18 +0900

version.h の日付更新。

nobu: r56011 2016-08-26 17:29:18 +0900

parse.y の xstring のルールの処理も new_xstring_gen() という関数に切り出すリファクタリング

nobu: r56012 2016-08-26 17:29:22 +0900

parse.y の string1 の処理の内容を new_string1() というマクロにしてルール部で ripper 用とそれ以外の分岐をしなくてすむようにしています。

nobu: r56013 2016-08-26 17:29:23 +0900

parse.y の parser_heredoc_dedent() で戻り値に渡した引数をそのまま返すようにして heredoc_indent の 0 へのリセットも関数内で行うようにしています。

nobu: r56014 2016-08-27 00:07:51 +0900

parser_parse_string() からクオートの終端を検出した時に tSTRING_END を返すか tREGEXP_END を返すかの反転部分を parser_string_term() という関数に切り出すリファクタリング

svn: r56015 2016-08-27 00:07:52 +0900

version.h の日付更新。

nobu: r56016 2016-08-27 00:11:32 +0900

r56014 で切り出した parser_parse_string() で struct NODE の nd_func メンバ(マクロで u1.id に展開されてた)を参照していたクオートの種類を u2.id に格納するように変更しています。

nobu: r56017 2016-08-27 01:08:40 +0900

test/ruby/enc/test_regex_casefold.rb で setup 時の例外発生時にエラーではなく skip 扱いにするようにしています。

2016-08-25 ruby-trunk-changes r56000 - r56008

[][]ruby-trunk-changes r56000 - r56008

今日は win32/file.c のリファクタリングなどがありました。

nobu: r56000 2016-08-24 22:04:36 +0900

win32/file.c の home_dir() で home_env という変数マジックナンバーになっていたのを enum 型を宣言するようにして可読性を良くしています。

kou: r56001 2016-08-24 22:42:08 +0900

gc.c の gc_reset_malloc_info() に文末のセミコロンが2重になっているところがあったので1つ削っています。

nobu: r56004 2016-08-25 00:39:52 +0900

win32/file.c の append_wstr() で引数 len が -1 の時には lstrlenW() で終端文字までの文字数を数えてセットするようにしています。

svn: r56005 2016-08-25 00:39:53 +0900

version.h の日付更新。

nobu: r56006 2016-08-25 00:42:33 +0900

win32/file.c の append_wstr() の引数 path_cp で codepage を渡しているのを削っています。呼び元で cp が INVALID_CODE_PAGE だったかどうかを渡すためだけにあったみたいなので、呼び元で処理せずに append_wstr() 内に判断を取り込んでいるようです。

nobu: r56007 2016-08-25 11:11:19 +0900

win32/file.c の rb_w32_filecp() のプロトタイプ宣言win32/file.h に追加して win32/win32.c で宣言していたのは削っています。

nobu: r56008 2016-08-25 11:57:41 +0900

win32/file.c で wchar_t の配列のメモリを確保するのに xmalloc() を使っていたところを ALLOC_N() マクロを利用するようにリファクタリングしています。

2016-08-24 ruby-trunk-changes r55994 - r55999

[][]ruby-trunk-changes r55994 - r55999

今日は .gdbinit の修正(本体の変更への追随)や Solaris 10 の fcc でのコンパイルエラー修正などがありました。

nobu: r55994 2016-08-24 12:57:58 +0900

Module.new, Class.new の rdoc 用コメントでブロックを渡した時に module_eval を使っているという記述になっていたので、同様の評価のされかたをするというふうに記述を修正しています。 [ruby-core:77023] [Bug #12696]

svn: r55995 2016-08-24 12:57:59 +0900

version.h の日付更新。

nobu: r55996 2016-08-24 13:43:25 +0900

prelude.c の生成時の依存関係に lib/rubygems/defaults.rb や lib/rubygems/core_ext/kernel_gem.rb などが含まれていたのを削っています。

naruse: r55997 2016-08-24 16:56:51 +0900

.gdbinit で r55766 での Ruby VM の control stack frame や env の構造の変更で動かなくなっていたコマンドを修正しています。

ngoto: r55998 2016-08-24 20:08:30 +0900

r55102 あたりで ALWAYS_INLINE() マクロを使うようになったのですが Solaris 10 の fcc では force inline の attribute に対応していないそうで、なぜか r55884 移行コンパイルエラーになった(それまではなにかこみいった理由でたまたまエラーを回避していたみたいです。チケット参照)何もしないダミーのマクロを定義するようにしています。 [ruby-dev:49773] [Bug #12701]

ngoto: r55999 2016-08-24 20:11:03 +0900

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

2016-08-23 ruby-trunk-changes r55986 - r55993

[][]ruby-trunk-changes r55986 - r55993

今日は特殊変数 $; へ nil文字列正規表現以外のオブジェクトを代入するとエラーにする変更や goruby の修正などがありました。

nobu: r55986 2016-08-23 02:10:00 +0900

String#split で特殊変数 $; に文字列でも正規表現でも nil でもないオブジェクトが入っていた時に例外を発生させるようにしています。

svn: r55987 2016-08-23 02:10:01 +0900

version.h の日付更新。

nobu: r55990 2016-08-23 10:15:04 +0900

r55986 の続きというか同様の修正で特殊変数 $; への代入時に nil, String オブジェクト, Regexp オブジェクトのいずれでもないものを代入しようとしたら例外を発生させるようにしています。 r55986 で追加したテストも代入時の例外をチェックするように変更しています。

nobu: r55991 2016-08-23 10:34:42 +0900

拡張ライブラリ psych のテストで Tempfile.create をブロックつきで使って消し忘れのないようにしています。 https://github.com/tenderlove/psych/pull/288

nobu: r55992 2016-08-23 11:05:24 +0900

webrick のテストで socket の閉じ忘れがあったのを修正しています。

nobu: r55993 2016-08-23 17:00:09 +0900

r43514 で拡張ライブラリを static link した時に mathn/rational などが明示的に require されてなくてもロードされてしまう対策として ruby_init_ext() では Init 関数は登録するだけで呼び出さなくなっていたので、その余波で goruby で Init_golf() が呼ばれなくなっていたので、ruby_init_ext() を使わず明示的に Init_golf() を呼んで rb_provide() で golf.so がロードされた状態にするようにしています。

2016-08-22 ruby-trunk-changes r55981 - r55985

[][]ruby-trunk-changes r55981 - r55985

今日は標準添付ライブラリ csv のパフォーマンス改善のための修正などがありました。

nobu: r55981 2016-08-22 09:02:59 +0900

RubyVM::InstructionSequence.allocate を undef しておいて未初期化オブジェクトが作られないようにしています。

svn: r55982 2016-08-22 09:03:00 +0900

version.h の日付更新。

nobu: r55983 2016-08-22 13:21:54 +0900

rb_ary_splice() で配列内にその配列オブジェクトの途中からの要素を挿入しようとした場合に対応するようにしています。

nobu: r55984 2016-08-22 14:35:59 +0900

man/irb.1 の man 用ファイルで不要な width オプションを削っています。 [ruby-dev:49767] [Bug #12692]

nobu: r55985 2016-08-22 16:29:54 +0900

標準添付ライブラリ csv で quote されたカラムがとても長い時のパフォーマンスの改善のため配列で格納しておいて最後に join するようにしています。なんでこっちのほうがいいのかいまいちわからないですが… [ruby-core:76987] [Bug #12691]