外部swfのリンクに成功した(id:mzp:20091108)ので、swf生成に関する課題がおおむね片付きました。残る課題は、最適化やライブラリの充実などの作り込みに関する部分なので、そろそろHappyABC 1.0の完成が見えてきました。
というわけで、ぼちぼちとHappyABC 2.0の準備を始めています。
HappyABC 1.0の目的はswf生成に関する、いわゆるバックエンド部分の構築でした。対して、HappyABC 2.0の目的はずばり型システムの導入です。
そもそもHappyABCを作り始めた動機の1つがActionScriptの貧弱な型に嫌になった、というのがあるので、型システムの導入は絶対に必要です。
ただ、HappyABCの設計方針は無茶をしないなので、HappyABCオリジナルの型システムを構築するつもりはなくて、一般的に使われているlet多相を借りて来るつもりです。
とはいうものの、Flashにしかない概念もあるので、let多相をある程度の拡張するのは避けられません。ただ、そうなると拡張したlet多相が正しいことの証明がどうしても必要になってしまいます。
ただ、紙と鉛筆だけでちゃんした証明ができる自信もありません。たぶん、どこかで間違えると思います。
というわけで、定理証明機であるCoqを使って、ラムダ計算に関する諸定理を証明する練習をしています。その成果はmzp/lambda - GitHubで見れます。
一ヶ月ほどswfの仕様書と格闘した結果、外部のswfファイルの関数を呼び出すことに成功しました!
つまり、ActionScriptで書いたクラスをHappyABCのコードから呼び出せるようになりました。
ということは、ActionScriptで書かれた膨大なライブラリが利用できるわけです。やった!
ShowFrameとかEndとかのタグの読み込みができるようになったはずです。
地味な作業が続いてます。
| 7dedef35c933380a0ad31fa558cfcccf9e502425 | add fixed floating number reader for swflib |
| 37b2ebf874dc0f742d44e90a7e9dd6ad8559aa1d | Add float32/float64 reader for swflib |
| 9c0e0d6b3a89308813c1eb3ea5c37faba92c6103 | add rect |
| 8f4331eeeae4019ff7e22e02a07057b8a48552bc | add string/color/rect reader |
| 17d33e7ad25892df51d04d426b482954a98a74ec | move Tag type definition to TagType module |
| 2d7ecfbd5879d225996bb4c90325b99ea39141fd | add tag input module |
今日は、ごにょごにょといろいろやってました。
| 0d5cc7888007cdfed8800513c79334238cc9cc44 | fix: byte compile |
| a7f0213a2e1e6d47c8279d90573ee2f226c75bc1 | add FB |
| b05c6ea4437ea1d67f782bf4a5230d8b7d7e92f1 | Add PlaceObject, but not test it. |
| ab13164aef2b29c3eda085e3a80bd2a2249bf43f | Move common type definition(e.g. rect,mtarix) move to SwfBaseType module. |
| 400cd2d3fae83f43e991269edc367e0359fb4faa | unify SwfBaseType and SwfType |
| 9953849dbeb471035fa9dc405d29b06ffe7c0221 | fix testcase |
| dad7565a031f19c6e9bb75e88bfcdda91cf69df1 | Add SwfBaseIn module. |
| 8d180bda41099747dd7e05332c7cc95c601d662e | add EUi reader |
| 68350b1cd130cc1b1ab2d60c79e0c137588226aa | add bits input stream |
| e3e377e42d6ef493b2543e24e18f488902588d6f | add bits input |
地道に書いていたswfファイル操作ライブラリ(swflib/)が、swfを生成できるぐらいまで育ってきました。なので、今までswfmillに頼っていたswf生成部を自前で行なうように変更しました。
そのために、*.abcから*.swfを生成するコマンド、habc-linkを作りました。
| d76390014e6a675a7a5248f184e3e1dcee5d2d04 | Subdir for habc linker is created. |
| a7ec8e53de86e4c7758c29a473f916f05c072dd6 | Add Command line option parser for habc-linker |
| b8c7bbe481042168f45db6a983d2095d9846d6fe | Change CmdOpt module's return type |
| 72b286a9e4f4a0f66168907c37aaa20030b0c881 | typo fix |
| 4db65a7bc6b0bc33a47695676da9d70fa8a8c89a | Add swf-template generator for habc-link |
| 8d6c347fe901136ccae4b4faffc2bf209d423406 | add --output to habc-link |
| 3a6ad3194979f782f8c204839f52b3eacd62731c | Create habc-link command |
| 6bc085ee55e118d50300b66bd2e13d77e5797415 | Fix: CmdOpt default value & Template |
| 26abcad1320da3297e43bc1f077effa7b53db4a9 | update OMakefile/gitignore for habc-link |
| f17142b7d15b4bb6cd2897d924c58fdd150bedcc | Replace habc-xml with habc-link |