Hatena::Grouphappyabc

mzpの日記

2009-11-22

HappyABC 2.0へ向けて

f:id:mzp:20091122200215j:image

現状

外部swfのリンクに成功した(id:mzp:20091108)ので、swf生成に関する課題がおおむね片付きました。残る課題は、最適化やライブラリの充実などの作り込みに関する部分なので、そろそろHappyABC 1.0の完成が見えてきました。

というわけで、ぼちぼちとHappyABC 2.0の準備を始めています。

HappyABC 2.0の目的

HappyABC 1.0の目的はswf生成に関する、いわゆるバックエンド部分の構築でした。対して、HappyABC 2.0の目的はずばり型システムの導入です。

そもそもHappyABCを作り始めた動機の1つがActionScriptの貧弱な型に嫌になった、というのがあるので、型システムの導入は絶対に必要です。

ただ、HappyABCの設計方針は無茶をしないなので、HappyABCオリジナルの型システムを構築するつもりはなくて、一般的に使われているlet多相を借りて来るつもりです。

今、やってること

とはいうものの、Flashにしかない概念もあるので、let多相をある程度の拡張するのは避けられません。ただ、そうなると拡張したlet多相が正しいことの証明がどうしても必要になってしまいます。

ただ、紙と鉛筆だけでちゃんした証明ができる自信もありません。たぶん、どこかで間違えると思います。

というわけで、定理証明機であるCoqを使って、ラムダ計算に関する諸定理を証明する練習をしています。その成果はmzp/lambda - GitHubで見れます。

使っている本

2009-11-08

外部swfのリンク成功!

一ヶ月ほどswfの仕様書と格闘した結果、外部のswfファイルの関数を呼び出すことに成功しました!

つまり、ActionScriptで書いたクラスをHappyABCのコードから呼び出せるようになりました。

ということは、ActionScriptで書かれた膨大なライブラリが利用できるわけです。やった!

f:id:mzp:20091108211111p:image

2009-10-13

本日の作業履歴: タグの入力を追加

要約

ShowFrameとかEndとかのタグの読み込みができるようになったはずです。

地味な作業が続いてます。

本日のコミット

7dedef35c933380a0ad31fa558cfcccf9e502425add fixed floating number reader for swflib
37b2ebf874dc0f742d44e90a7e9dd6ad8559aa1dAdd float32/float64 reader for swflib
9c0e0d6b3a89308813c1eb3ea5c37faba92c6103add rect
8f4331eeeae4019ff7e22e02a07057b8a48552bcadd string/color/rect reader
17d33e7ad25892df51d04d426b482954a98a74ecmove Tag type definition to TagType module
2d7ecfbd5879d225996bb4c90325b99ea39141fdadd tag input module

2009-10-12

本日の作業履歴

要約

今日は、ごにょごにょといろいろやってました。

  • ocamlcでコンパイルできなくなっていたので、直しました
  • PlaceObjectを作ってみたけど、swfmillが対応してなかったので、あきらめた
  • タグの追加はあきらめて、swfの読み込みを目指すことにしました
    • 整数の読み込みとビットの読み込みに対応

本日のコミット

0d5cc7888007cdfed8800513c79334238cc9cc44fix: byte compile
a7f0213a2e1e6d47c8279d90573ee2f226c75bc1add FB
b05c6ea4437ea1d67f782bf4a5230d8b7d7e92f1Add PlaceObject, but not test it.
ab13164aef2b29c3eda085e3a80bd2a2249bf43fMove common type definition(e.g. rect,mtarix) move to SwfBaseType module.
400cd2d3fae83f43e991269edc367e0359fb4faaunify SwfBaseType and SwfType
9953849dbeb471035fa9dc405d29b06ffe7c0221fix testcase
dad7565a031f19c6e9bb75e88bfcdda91cf69df1Add SwfBaseIn module.
8d180bda41099747dd7e05332c7cc95c601d662eadd EUi reader
68350b1cd130cc1b1ab2d60c79e0c137588226aaadd bits input stream
e3e377e42d6ef493b2543e24e18f488902588d6fadd bits input

関連ページ

2009-10-11

本日の作業履歴: habc-linkコマンド追加

要約

地道に書いていたswfファイル操作ライブラリ(swflib/)が、swfを生成できるぐらいまで育ってきました。なので、今までswfmillに頼っていたswf生成部を自前で行なうように変更しました。

そのために、*.abcから*.swfを生成するコマンド、habc-linkを作りました。

本日のコミット

d76390014e6a675a7a5248f184e3e1dcee5d2d04Subdir for habc linker is created.
a7ec8e53de86e4c7758c29a473f916f05c072dd6Add Command line option parser for habc-linker
b8c7bbe481042168f45db6a983d2095d9846d6feChange CmdOpt module's return type
72b286a9e4f4a0f66168907c37aaa20030b0c881typo fix
4db65a7bc6b0bc33a47695676da9d70fa8a8c89aAdd swf-template generator for habc-link
8d6c347fe901136ccae4b4faffc2bf209d423406add --output to habc-link
3a6ad3194979f782f8c204839f52b3eacd62731cCreate habc-link command
6bc085ee55e118d50300b66bd2e13d77e5797415Fix: CmdOpt default value & Template
26abcad1320da3297e43bc1f077effa7b53db4a9update OMakefile/gitignore for habc-link
f17142b7d15b4bb6cd2897d924c58fdd150bedccReplace habc-xml with habc-link

関連ページ