Ruby

local rebinding

まつもとさんのコメント、FooということはSelector namespaceの仕様に近いということですか。私はその点についてはlocal rebindingの仕様のほうが使いやすい気がします。尤も実際に使用したことがないので、空想レベルの感覚ですが。どちらにも長所と短所が…

コメント

まつもとさんのコメント、FooということはSelector namespaceの仕様に近いということですか。私はその点についてはlocal rebindingの仕様のほうが使いやすい気がします。尤も実際に使用したことがないので、空想レベルの感覚ですが。どちらにも長所と短所が…

Extension Responsibility

昨日紹介した論文「Analyzing Module Diversity」は、少しだがRubyについても言及している。各言語のmodule systemの分類項目の一つとして、Extension Responsibilityという項目があって、これは、クラス拡張をクラス作成側が行うか、クラス利用側が行うかを…

追加オプション保留

ruby-devの意見に従って、/g, /GオプションはRubyに実装せず、保留ということにしておこう。誰かが必要性を示せば入れるということで。昔の議論で、誰がこのオプションを追加しようと言い出したのだったか忘れてしまった。僕かもしれない。オプションを追加…

追加オプション

そろそろ、正規表現のオプションに/g, /Gを追加する作業をしようと思うが、鬼車には他にも利用できるオプションがあった。マッチングの動作を最長マッチにするONIG_OPTION_FIND_LONGESTというのがあるので、これを/Lに割り当てることをruby-devに提案しよう…

volatileって何だっけ?

re.cを-Wallオプション付きでコンパイルすると、以下のsave_strが未使用という警告が出た。最初の行を削ると、何か問題が起きるのだろうか? 頭が悪くて、volatileの意味も忘れてしまった。 VALUE rb_reg_regcomp(VALUE str) { volatile VALUE save_str = st…

オプション追加作業

そろそろ、/g, /Gオプションを追加したいのだが、現在のRubyの実装では、正規表現オプションの追加が面倒というか、危険になっている。そこで、オプションの追加よりも前に、re.cとparse.yにリファクタリングを行った。

キャプチャ結果の名前による参照

作業終了。あと残っているのは、/g, /G オプションの実装だけ。 作業のついでに、rb_reg_regsub()にマイナーなバグがあるのを発見。明日直そう。

Version 4.0.2

鬼車4.0.2をリリース。Rubyにもマージした。 正規表現パターンで番号での後方参照が無効になっているとき、String#sub, String#gsubの置換文字列の中で\1, \2, ...\9を使用した場合に値が空になるように変更した。空にするのでは嵌る人がいるのではないかと…

キャプチャ結果の名前による参照

MatchData#[]の引数にString/Symbolを指定できるように変更すれば良いだけだと思って、気楽に作業してしまった。番号参照の不許可のことは全く考えていなかった。置換文字列の中の参照方法のことも考えていなかった。今日中に置換文字列の中で\kで参照できる…

look-behindの例

Hal Fultonからメールが来て(the 2nd edition of _The Ruby Way_)、その中にlook-behindの使用例を教えてくれというのがあった。困ったな。僕は正規表現が苦手で、鬼車のデバッグ以外ではあまり正規表現を使わない。 正規表現雑技を参考にして、とりあえず以…

Classbox/R

「Classboxes: Controlling Visibility of Class Extensions」 これが最初に理解できなかった原因は、classbox自体に継承関係があって、さらに、再定義するクラス個々についてimport宣言するのだと思い込んでいたためだった。それで上位のclassboxで定義され…

parse.y

parse.yの中には、Ruby本体の処理とRipperでの処理の両方が書かれている。例えば以下のように、/*%%%*/から/*%の間がRubyの処理で、/*%から%*/までがRipperの処理である。 | kMODULE cpath { /*%%%*/ if (in_def || in_single) yyerror("module definition i…

Classbox/R

再度Classboxの論文を少し読み直してみて、どういう仕様なのかかなりわかったと思う。前回の書き込みの推測とは全く違う、普通の仕様だった。今度改めて書こう。前回の推測のほうももったいないので続けて考察しよう。 あと、MixJuiceはフィールド追加が可能…

Classbox/R

久しぶりにClassboxについて少しだけ考えた。 かなり前の書き込みで、最終的に実行される時点でのClassboxがどのように決定されるのかについて以下のように推測した。 インスタンスオブジェクトについては、そのインスタンスの生成が記述されたコード上の位…

nil

nilを得る十一種類の方法 x1 = (begin end) x2 = (BEGIN{10}) x3 = (END{20}) x4 = (def foo; end; foo()) x5 = $12345 x6 = eval('') x7 = Class <=> self x8 = [][1] x9 = Object.superclass x10 = initialize() x11 = ObjectSpace._id2ref(4) p(x1,x2,x3,…

Ruby on Rails

まさたか日記で、Mayaaの栗原さんがRuby on Railsという名前に対して疑問をもたれている。僕も推測はできるが、RoRを使用したことがないので誰か知っている人がいればコメントしてあげて。

sizeof(RVALUE)

ruby-core MLで、Symbolオブジェクトと通常のオブジェクトでid値が衝突する可能性があることが話題になり、ruby-core:7447で、akrさんが解決案を示している。 この中でRVALUEのサイズが20byteであるとしているが、実際にはRVALUEのサイズは20byteとは限らな…

昨日のコメントの続き

正規表現パターンの先頭が*で始まることはないので、やっぱり/*はコメント開始に使えますね。字句解析で一文字先読みすればよいだけでしょう。Rubyで正規表現の文法を可変にするとは考えられないので、問題ないと思います。 この点を含めて、何年か前のruby-…

2010年のRuby

僕が予想してみよう。 =begin, =end以外のブロックコメント機能追加 (多分 /* ... */) M17N Classboxみたいなやつ 最適化による速度向上 標準ライブラリで、ファイルがやたら沢山あるものは標準から外して別配布 ただの個人的希望になってしまった。 YARVは…

->演算子 (続き)

parse.yを読んで、"->"とlambdaで、何が違うかは分かった。 "->"はメソッドの引数で指定できるもの全部と、ブロックローカル変数が指定できるようだ。 x = ->(a,b=3,*c,&d; e) { p(a, b, c, d, e) } x.call(1,2,3,4) { } y = lambda { |a,b,*c,&d; e| p(a, b…

->演算子

雑誌の立ち読みで、Perl6ではメソッドコールの演算子が"->"から"."に変わることを知った。 Rubyでは、"->"は演算子として使用されていない筈と思ったが、見てみると1.9では使われていた。 a = lambda { |x,y;z| } b = ->(x,y;z) { }lambdaの代わりに使うのか…

Rubyist Magazine 0013号 「世界の Rubyist」

韓国にもRubyistがいるのか。将来、韓国政府が禁止しなければ良いが。

大変化

昨日の夕方、Ruby 1.9で定数の参照順序の仕様が変わったようだ。 * variable.c (rb_const_get_0): adopt to new behavior. constants are looked up in the order of: current class, super classes (but Object), lexically external classes/modules, and …

ネストメソッドの利用法

ネストメソッドはローカルメソッドの意味でなければ必要性が無いというのが結論みたいだが、無理やり利用方法を考えてみた。メソッドが自分自身を書き換えることによって、if分岐を書かないで済ませるというものだが、やはり意味なしのようだ。 class Single…

4.0.1をマージ

Ruby M17Nの作業がいつごろ行われるのか全く判らないが、とにかく最新版をRubyにマージしておいた。

復活

十一ヶ月ぶりにRuby CVSにコミット可能になった。 前田さん、ありがとうございます。 Ruby M17N Ruby温泉ミーティング2006の報告ログの中に、M17Nがそろそろ入るという話があったと思うが、そのとき鬼車はどうなるのだろう? 消滅してても泣かないよ、僕は。

Classbox/R実装方法

zt日記を読んで、RubyでのClassboxの実装方法の断片について知る。 まつもとさんの案はクラスの方を内部的に特異クラスのように"namespace$String"というような感じのStringを継承したクラスにして、そのネームスペースを使っているスコープではStringの代わ…

定数参照

yarv-dev:797で、定数参照のルールとして、ネストしたmoduleの一番外側(つまりObjectクラス)での参照をスキップして、クラス継承のほうに移っていくことに疑問が出ていた。 これはどうしてスキップしているのかというと、Objectクラスでの参照を先にしてしま…

暫く放置

一月は、鬼車についての問い合わせが多かった。 その中でバグ報告は一件だけで、これはRubyには影響のないものだった。 最新版(4.0.0)で共有ライブラリをサポートしたが、これに関する問題がないか様子を見たいので、最低一ヶ月位は放置しようと思う。もちろ…