Giraffe+ 0.5.34.506

Downloadページへ

前リリースからの変化

  • 履歴に日本語を含むとおかしくなってたのを修正
  • さらにメモリを開放されやすくした
  • SetEvent, get-func等の旧関数をメソッドを扱う仕様にした

履歴に日本語を含むとおかしくなってたのを修正

原因は、lenが日本語を1byteとして返す仕様に変更になりながら、file:readがそのままC言語のASCIIファイル関数を使っていたためです。
lenの仕様を過去のそれと一致させようとも考えましたが、そうすると他の部分で不具合が出るので、file:readとfile:writeをString.file_loadとString.file_saveを呼ぶだけのものに書き換えました。

さらにメモリを開放されやすくした

デストラクタを持たない要素を持つvectorのデストラクタを呼ばないことにしました。allocatorに開放させるだけのデストラクタなら、gc_allocatorを使えば必要無いと判断しました。
具体的には、exprの子供とarrayが開放されやすくなりました。exprはスクリプトがパースされるたびに生成されるので、最も開放されやすさが要求されるような気がします。
arrayとcall_argumentのallocatorが不一致となり、call_argument::itaratorをObject*の汎用型とすることが出来なくなったので、Object::call等の引数にはObject*を使うようにしました。これにより、新しいVC++でもビルドできるようになったかもしれません。

SetEvent, get-func等の旧関数をメソッドを扱う仕様にした

今まで、旧来の仕様を重視し、ブロックを受け、ブロックを返す、としてました。しかしながら、内部的にはメソッドですので、常に変換が発生していました。そこで問題になったのが、複雑なメソッドが一時的にブロック化することで情報が破壊されるというものです。このため、mode:set-eventなどで複雑なメソッドが破壊されることになり、複雑なメソッドをイベント等に利用できないという状況でした。