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…
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系統としてリリースします。ちなみに勉強会の資料を今作ってます。アウトラインレベルでは完成。 (偽)インクリメンタルビルドができるようになり…
http://www.alles.or.jp/~torutk/oojava/codingStandard/writingrobustjavacode.html可能な限り再現してみようかと。 クエリの表現力に関するレビューによさげ。
めも。
コンパイラの単体テストってなんかいい方法ないでしょうか。 正直、テストの方が時間かかってます。
-連続Irenkaセミナー - まさたか日記 行きます。細部の技術に興味のある方もぜひ。
下のプログラム、ちょっとしたバグがあります。 public void read(String name, String enc) throws IOException { Reader r = new InputStreamReader(new FileInputStream(name), enc); try { ... } finally { r.close(); } }
めも。 データフロー制約を表記する言語が見つからないので、人にやさしい言語を少し考えてみる。 expr1 must expr2 expr1の評価は常にexpr2と同値 expr1 !must expr2 expr1の評価はexpr2と同値でない場合がある expr1 may expr2 expr1の評価はexpr2と同値で…
Irenka 0.2ではちょっとクエリを強化の予定。
public class Hoge<T> { void bar() { class Foo { T t; } } } 型変数もlambda-liftingしろってことですか。でも匿名クラスでは使えない不思議。</t>
下記は内部クラスというか匿名クラスを使うプログラムで、匿名クラスの中では自由変数(free-variable)を使っています。このようなプログラムはバイトコードに変換される際に少し変わった動きをします。
ラムダリフティングされているものをどう解析するか とりあえずいいアイデアが出ない感じなので帰ってからやる。
怒涛のような2週間も終わりました。その締めが今日?のカンファレンス。ブルーオーシャンなはずなのに血の海ができるところでした。
http://irenka.ashikunep.org/ betaリリースです。id:masataka_kの人に先を越されたorzIrenka StudioはEclipseの上でIrenkaを動かすためのプラグインで、0.1.0の時点で軽くIrenkaを体験できます。
ドキュメントも一段落しました。来週からはコーディングに戻ります。
ドキュメント書いてます。 テクニカルライターとかって発狂しないのかなと思いました。
めも。VM越しにプログラム構造を使うときにはどう考えてもProxyが必要。ってのは当然として、実はもっと身近な場面でProxyが必要な感じ。
めも。Hackのパッケージングにあたって、ファイルシステムを一度整理した方がよさげと判断。これまでIrenkaのFSはIWorkspaceRootを単一のルートとする構成だったけど、外部参照してるクラスパスコンテナとかそもそもjarファイルの中身表せないじゃねーかとい…
internal使いすぎですよ。JavaModelManagerが隠匿しすぎ。
めも。クエリ内のプレースホルダを制約パーティショニングして、2つ以上のパーティションができたらそれらはそれぞれ独立している。そしたら別々に制約エンジン走らせて後で直積集合作ると最適っぽい。
めも。クエリでプレースホルダ名をtypoされた時のエラー報告について。