Irenka

フローだけじゃなくて

LOG instanceof org.apache.commons.logging.Log debug = LOG#debug(*) except { debug on { LOG#isDebugEnabled() = true } }LOG.debug(...) を探すけど、LOG.isDebugEnabled() が確実にtrueである(on {...})やつは除外する感じ。つまり、isDebugEnabled() …

メモ

朝の時間がないときに思いついた。ふつーにエスケープ解析して、「エスケープしてないのに〜してる/してない」という考え方をするのが一番か?んー、でもレシーバオブジェクトに値がとられた瞬間にグローバルエスケープ解析しないとだめだから難しいかも。

いまいち

↓だとボキャブラリ増えすぎる…。呼び出しだけじゃなくてメソッドの引数に渡すときとかいろいろあるわね。

もうちょっと単純に考える

裏側の理屈はともかくとして、もうちょっと自分が使いやすいように考えてみる。やりたいこと すべてのjava.io.InputStreamは close()が呼び出されなければならない (呼び出されないものを探して警告) 単純に書いてみたもの // すべてのjava.io.InputStreamは…

フロー解析

java.io.InputStream型の値を作り出したら、それに対して.close()が呼び出されない(可能性が少しでもある)ものを探す。っていう妄想。 stream INSTANCEOF java.io.InputStream stream MAY NOT FLOW method WHERE { method.expression HAS stream method.targ…

φ-function の逆

SSA変換するとbasic blockの合流点でφ-func入れることがあるけど、basic blockの分岐点でφ-funcの逆みたいなものを導入したらどうかな Hoge h = ...; /* φ(h.0:HogeExt, h.1:Hoge) <- h */ if (h instanceof HogeExt) { /* h.0 <- (HogeExt) h; */ ... } /* …

フロー解析について考察メモ

下の二つだけうまく表記できれば、現行の構造検索にフロー記述を含められるかも。 IO Monad φ function 要考察。多分ちゃんと作れば、自動リファクタリング(メソッド抽出)とかの入り口も作れそう。

未踏ソフトウェア成果報告会

行ってきます。 久々に緊張?

セミナー当日

-Irenkaセミナー3回目 - まさたか日記というわけで今日です。 ちゃんと資料も用意しましたよ。

勉強会

-連続Irenkaセミナー - まさたか日記第三回を明日やります。 0.3系のクエリについてとかもちょっと触れます。数少ない議論の場なので是非。

未踏ソフトウェアの分

未踏ソフトウェアとして採択された部分のIrenkaがだいたい完成です。 週明けに動作テストして、問題なければ0.3系統としてリリースします。ちなみに勉強会の資料を今作ってます。アウトラインレベルでは完成。 (偽)インクリメンタルビルドができるようになり…

Robustness

http://www.alles.or.jp/~torutk/oojava/codingStandard/writingrobustjavacode.html可能な限り再現してみようかと。 クエリの表現力に関するレビューによさげ。

data flow constraints雑記

めも。

単体テスト

コンパイラの単体テストってなんかいい方法ないでしょうか。 正直、テストの方が時間かかってます。

セミナー

-連続Irenkaセミナー - まさたか日記 行きます。細部の技術に興味のある方もぜひ。

Control Flow Constraint

下のプログラム、ちょっとしたバグがあります。 public void read(String name, String enc) throws IOException { Reader r = new InputStreamReader(new FileInputStream(name), enc); try { ... } finally { r.close(); } }

Data Flow Constraint

めも。 データフロー制約を表記する言語が見つからないので、人にやさしい言語を少し考えてみる。 expr1 must expr2 expr1の評価は常にexpr2と同値 expr1 !must expr2 expr1の評価はexpr2と同値でない場合がある expr1 may expr2 expr1の評価はexpr2と同値で…

0.2の予定

Irenka 0.2ではちょっとクエリを強化の予定。

自由変数

public class Hoge<T> { void bar() { class Foo { T t; } } } 型変数もlambda-liftingしろってことですか。でも匿名クラスでは使えない不思議。</t>

内部クラスのコンストラクタ

下記は内部クラスというか匿名クラスを使うプログラムで、匿名クラスの中では自由変数(free-variable)を使っています。このようなプログラムはバイトコードに変換される際に少し変わった動きをします。

内部クラスのコンストラクタ

ラムダリフティングされているものをどう解析するか とりあえずいいアイデアが出ない感じなので帰ってからやる。

カンファレンス

怒涛のような2週間も終わりました。その締めが今日?のカンファレンス。ブルーオーシャンなはずなのに血の海ができるところでした。

beta!

http://irenka.ashikunep.org/ betaリリースです。id:masataka_kの人に先を越されたorzIrenka StudioはEclipseの上でIrenkaを動かすためのプラグインで、0.1.0の時点で軽くIrenkaを体験できます。

一段落

ドキュメントも一段落しました。来週からはコーディングに戻ります。

ドキュメントの中の人

ドキュメント書いてます。 テクニカルライターとかって発狂しないのかなと思いました。

DOM Element Proxy

めも。VM越しにプログラム構造を使うときにはどう考えてもProxyが必要。ってのは当然として、実はもっと身近な場面でProxyが必要な感じ。

Irenka File System

めも。Hackのパッケージングにあたって、ファイルシステムを一度整理した方がよさげと判断。これまでIrenkaのFSはIWorkspaceRootを単一のルートとする構成だったけど、外部参照してるクラスパスコンテナとかそもそもjarファイルの中身表せないじゃねーかとい…

JavaCore/Eclipse

internal使いすぎですよ。JavaModelManagerが隠匿しすぎ。

パーティショニング最適化

めも。クエリ内のプレースホルダを制約パーティショニングして、2つ以上のパーティションができたらそれらはそれぞれ独立している。そしたら別々に制約エンジン走らせて後で直積集合作ると最適っぽい。

制約パーティショニング

めも。クエリでプレースホルダ名をtypoされた時のエラー報告について。