スナップショットビルド、始めました

http://happyabc.org/deploy/index.html
誰かかがコミットするたびに、自動でビルドしてサーバにアップロードしてくれる仕組みを作りました。
EURO 2016 NewsSinatraを組合せています。詳しくは、capistrano/を参照してください。
Windowsバイナリはまだ不完全ですが、そのうち直す予定です。

ドライバを書こうとして、やめた

habc-scmに追加した機能を使えるようにドライバであるhabcを改造としたら、いろいろやりたいことがでてきてしまった。
それを全部アッドホックに実装してたら大変なことになりそうだったので、一度整理してたほうがよさそう。
とりあえず適当に書いたコードは泣く泣くgit reset。

ライブラリのスタブを書いた

id:happyabc:20090117で書いたモジュールのインポート機能がそこそこ形になってきました。というわけで、インポートされる側のライブラリのスタブを書いてます。

(module text ()
	(define-class CSMSettings (Object) ())
	(define-method fontSize ((self CSMSettings)))
	(define-method insideCutoff ((self CSMSettings)))
	(define-method outsideCutoff ((self CSMSettings)))
	(define-class Font (Object) ())
	(define-method fontStyle ((self Font)))
	(define-method hasGlyphs ((self Font)))
	(define-method fontType ((self Font)))
	(define-method fontName ((self Font)))
...

とはいてもこれを全部手で書くのはつらいので、当然プログラムで自動生成してます。
FlashPlayer組込みのクラス一覧をダンプしてみた - みずぴー日記にあるように、playerglobal.abcをダンプしたあと、Gaucheで適当に整形して出力しました。

モジュールの自動インポート

早いもので、年が明けてからもう2週間以上たっています。
今のHappyABCは、flashがどういう関数を持っているか知らないので、毎回コンパイラに指示しなければなりません。

(external-class flash.display.Sprite (...))
....

これは面倒なので、どう解決するかを考えてみました。
ActionScriptだとimportを使うシチュエーションですが、ファイルの先頭にimportがずらずら並ぶのはあまり好きではありません。OCamlでは、別のモジュールにある関数をいきなり呼べるのでこれをマネしたいところです。

続きを読む

HappyABC 0.4.0リリース

http://happyabc.org

あけましておめでとうございます。今年もよろしくお願いいたします。
というわけで、新年早々、新バージョンをリリースです。

今回は、ActionScriptのpackageに対応するモジュールという仕組みを追加しました。

(module foo ()
   (define x 42)) ;; foo.xの定義

モジュールの先頭で、外部に公開する(=publicにする)シンボルをまとめて指定する形式をとっています。

(module foo (x) ;; xだけをpublicにする
   (define x 42)
   (define y 42))

(module bar () ;; 全部publicにする
   (define x 42)
   (define y 42))

あと、Windowsバイナリは例によって、もうちょっと待ってください。

新機能

  • モジュールの追加

さて次は?

  • いいかげんマニュアルを
  • バグを一掃したい