2009-04-01から1ヶ月間の記事一覧

水道屋がRubyを活用する(その2)

その1での手順で求めた固有ベクトルは、対応する部品と共に値が大きい順に並べると、関連のある(同じ見積書の中に出てくる可能性の高い)部品が集まります。うちのデータで行ったものはこんな感じになりました。固有ベクトルは行列の次元数だけありますが、…

水道屋がRubyを活用する(その1)

私の本職は水道屋で穴を掘ったり墓穴を掘ったりして生活しています。水道屋といっても当然書類仕事もあるので、PCを活用しています。多くの場合はWordとかExcelやCADなどのアプリケーションを使って書類を作っています。こういったアプリケーションは使うこ…

yarv2llvmにはマクロがあります

追記 具体例を追加しました テストが通るようになりました。マクロではなく従来の処理部分のバグがテストに漏れて残っていました。 yarv2llvmにとても不完全ですがマクロが入りました。でも、エンバグして他のテストが通らなくなりました(最近こんなのばっか…

面白そうなソフトウエアのメモ

deliciousに面白そうなソフトウエアがブックマークされていたのでメモ Cをllvmのbitcodeに落として、それをアプリケーションに特化したプロセッサのVHDLに落とすそうです! とりあえず究極と思っていたコンパイラの形態が既にあるとは驚きです。http://tce.c…

yarv2llvm近況

先週のyarv2llvmの開発はそんなに時間は取っていないのですが、ずっとデバッグでした。Unsafeのサポートの為シビアに定数の畳み込みを行う必要があり、畳み込みが甘いところを直すと、既存のプログラムの型推論が失敗するということの繰り返しでした。何とか…

Cの関数を呼べるようにしました

ランタイムをRubyで書くための準備で、Cの関数を呼べるようにしました。これで後は、動的ロードと外部変数をアクセスできるようにしたらランタイムが書けるんじゃないかなと思います。実装がバグバグなんでバグ取りが山のように残っていますが。サンプルプロ…

Unsafeの続き

Unsafeの開発は結構順調です。定数伝播処理が上手に効いて、一見配列やオブジェクトを作るような効率の悪そうなコードが、構造体へのアクセス命令だけで済んでいます。 def unsafe type = LLVM::struct([RubyHelpers::VALUE, RubyHelpers::VALUE]) a = [:a] …

yarv2llvm開発を再開しました

LLVM勉強会でスレッドが並列に動いてないと指摘を受けて、ジャイアントロックをはずした独自ランタイムを作ろうとしています。 http://d.hatena.ne.jp/miura1729/20090323/1237799188 ところが、スレッドを実現するランタイムはかなり大きく、これをLLVMで手…

「天才になれる秘密」について

http://d.hatena.ne.jp/teruyastar/20090406/1238950447 考えさせられる記事ですね。個人的には、この記事中の「要領の悪い人」に分類される天才の方が多いような気がする。本当の天才だと相当運が良くないと認められないですよね。他にそんなこと考えている…

on-stack replacement メモ

今、LLVMのソースを読んでいます。そしたら、recompileAndRelinkFunctionなるメソッドを見つけました。後は、実行中のフレームを書き換える目処が付いたらLLVMでon-stack replacementできそうです。フレームを書き換えるところは、GC APIが有望そうなのです…

 有料版yarv2llvmのお知らせ

ひそかに開発していた有料版yarv2llvmが今日完成しましたのでお知らせします。値段は5000円(または$49)で、Free版に比べて次のようなメリットがあります。 しっかりしたテストによる信頼性の向上 例外、bignum、callcc、メソッドの再定義などのサポート より…