K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please set comment :).

_27(Fri)

http://d.hatena.ne.jp/hzkr/20061027 感動してしまった。

YARV architecture のページは古くて現実に即していないのでなんとかしたい。


そうだよな。人のソース読まないとダメだよな。俺もなんか読んで書こう。


そういえば codeblog というのもあったな。全然チェックしてないんだけれど、どうなんだろう。以前見たときはただの日記な気がしたのであまり見る気がしなかったのだけれど。

見たら、結構コードがあるな。各論過ぎて、今から読むにはちょっとつらいかも。


それはともかく、GC バグが取れないんですよ。具体的には、parse 中に GC が発生すると mark 漏れがある。しかし、そのマーク漏れがいったい何所に起因するかわからないという。


やっと問題の場所を発見。解決法もわかったが、なんでこうなっているのかがわからない。


とりあえず、Lua を読むことにする。言語仕様も知らなかったので、まずは言語仕様を調べるところからだな。ぐぐったら http://uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html 日本語があった。HTMLHelp が欲しいが、まぁ諦めよう。


うがーーー。なんだよこれ。GC バグの原因である parse.y のバグ、1.9 の最新では直ってるじゃないか!

やられた!

Thu Oct 13 14:26:00 2005 UTC

うう、ちょうど先日じゃないか!

とりあえず、YARV のバグじゃなかったってことだな。うん。


lua. print 1 は許されないが、print "1" は許される。


iTunes を操作するというのは、前日の発表で使われたネタ(Macだけど)で、大変受けたらしい(見て無いけど)。だから、うまくやれれば多分受けたんだと思うんだな。きちんと説明できていれば。


Ruby 1.9.0 (というか YARV)でRails を動かすための変更。

# gems の変更

diff -ru rubygems-0.9.0/lib/rubygems/package.rb rubygems-0.9.0-patched/lib/rubygems/package.rb
--- rubygems-0.9.0/lib/rubygems/package.rb      2006-06-14 12:39:45.000000000 +0900
+++ rubygems-0.9.0-patched/lib/rubygems/package.rb      2006-10-18 15:29:25.000000000 +0900
@@ -350,6 +350,12 @@
             ret
         end

+        def readpartial(len)
+          s = @io.readpartial(len)
+          @read += s.size
+          s
+        end
+
         def getc
             return nil if @read >= @size
             ret = @io.getc
@@ -503,7 +509,7 @@
                     @metadata = load_gemspec(gzis)
                     has_meta = true
                 ensure
-                    gzis.close
+                    gzis.close if gzis
                 end
             when 'metadata.gz.sig'
               meta_sig = entry.read


# Rails を動かすために Ruby レベルで必要な変更。俺は rubygems.rb に書いていた。

module Kernel
  alias send funcall
end

class Exception
  alias to_str to_s
end

class Object
  def to_a
    [self]
  end
end

module Enumerable
  alias map_orig map

  def map(&b)
    if block_given?
      map_orig(&b)
    else
      to_a
    end
  end
end


# rails-1.1.6/lib/rails_generator/commands.rb の dependency メソッドを以下のように変更

        def dependency(generator_name, args, runtime_options = {})
          logger.dependency(generator_name) do
            klass = ::Rails::Generator::Commands::Create
            klass.new(instance(generator_name, args, full_options(runtime_option
s))).invoke!
          end
        end

もしかしたら他にもあったかもしれず。

_向井(Fri Oct 27 15:15:22 JST 2006)

 lua は引数が1つでその引数が文字列、テーブルのリテラルのときはカッコを省略してよいという規約があるためで、ふつうはカッコは省略できません。f{x=1}のようにしてパラメータ引数っぽく見せいから、というのがその理由のようです。

_ささだ(Fri Oct 27 16:55:25 JST 2006)

 うい。マニュアル見て面白いなぁと思った例でした。

_斎藤ただし(Sat Oct 28 01:35:25 JST 2006)

やられた!

どんまいです。とりあえず未来じゃなくて良かったということで。これでshowstopperが一つ消えましたね。

# ていうネガティブな使い方が慣習でいいんでしたっけ>上記英単語…勘違いならごめんなさい

shim for 1.8…とか書いてたら方向が逆でしたね。ごめんなさいorz

_ささだ(Sat Oct 28 03:07:38 JST 2006)

《名》(ショーが一時中断されるほどの)拍手喝采の名演技[せりふ],猛烈な喝采の名演技[せりふ],人目を引くもの[人],コンピュータの動作を停止させるバグ

えいじろうより。うーん、ポジティブなんだかネガティブなんだか。


好きにコメントを編集してください。ただし、あまり他の人のコメントを書き換えることは感心しません。



back

tton 記述が使えます。YukiWikiな記述してりゃ問題ありません。

「行頭に#code」 と、「行頭に#end」 で挟むと、その間の行は pre で囲まれます。プログラムのソースを書くときに使ってください。

例:

#code

(なんかプログラム書く)

#end

リンクは

[[なまえ|http://www.example.org]]

とか

[[http://www.example.org]]

で貼れます。

$Date: 2003/04/28 10:27:51 $