Giraffe+ 0.5.28.451

Downloadページへ

前リリースからの変化

  • オートコンプリートの結果の配列を返すGiraffe.Autocompleteを定義
  • Giraffe.ShortcutDirのディレクトリの名前が'*'で始まる場合に、登録アイテムとしては有効ながらオートコンプリートの対象とはならないようにした
  • 起動時に登録アイテムをキャッシュするsettings/setup/~CacheRegisteredItems.giraffeを追加
  • Giraffe+がフォーカスを失うときにグローバルガベージコレクトを実行するsettings/setup/GCollectInactive.giraffeを追加
  • UNICODEファイル名対応と多少の効率化のため、複数あったstd::wifstreamをboost::filesystem::wifstreamに置き換えた
  • settings.xmlとsettings.xslを少し改善

オートコンプリートの結果の配列を返すGiraffe.Autocompleteを定義

第一引数は文字列で、パスや登録アイテムの前部を置きます。第二引数は数値で、0の場合は前方一致するものだけ、1の場合は全て、2の場合は登録アイテム内ディレクトリのアイテムも、となります。
第二引数の前方一致はWindowsのファイル列挙への指示ですので、Giraffe.ShortcutDirのテキストファイル内やGiraffe.RegisteredItemsのアイテムは無関係です。

Giraffe.ShortcutDirのディレクトリの名前が'*'で始まる場合に、登録アイテムとしては有効ながらオートコンプリートの対象とはならないようにした

オートコンプリートに使われる名前だけをキャッシュして、登録アイテムのデータは使うときに読み取る、というのを可能にしてみました。

起動時に登録アイテムをキャッシュするsettings/setup/~CacheRegisteredItems.giraffeを追加

登録アイテムの追加、削除、名前変更後等に設定の再読み込み(デフォルトでF2キー)が必要になりますが、オートコンプリートが高速化します。
ファイル名の先頭に~があるのは、スタートメニューを登録アイテム化する等のsetupスクリプトの後に実行されるようにです。

Giraffe+がフォーカスを失うときにグローバルガベージコレクトを実行するsettings/setup/GCollectInactive.giraffeを追加

メモリ使用量が減る(増えにくくなる)かもしれません。
正直、GCの動作がいまいち解かってません。ファイナライザがちゃんと呼ばれているか等、それなりに実験したことがあるんですが、全く問題なく動作してました。とりあえず、現状、

  • メモリリークはしてない
  • 明示的なGC_gcollectは要らない
  • ゆっくりと段階的に開放される

と考えています。GCがどの程度メモリを使っていて、開放予定ながら開放されてないメモリがどれくらいあるかは、

"\
Heap Size: #{Gc.GC_get_heap_size}
Free Size: #{Gc.GC_get_free_bytes}
Free Size After GCollect: #{Gc.GC_gcollect Gc.GC_get_free_bytes}\
".flush

を変化がなくなるまで連続で実行してみると解かります。

UNICODEファイル名対応と多少の効率化のため、複数あったstd::wifstreamをboost::filesystem::wifstreamに置き換えた

どうせ使わないのでUNICODEファイル名対応はどうでもよかったんですが、文字列変換が減ることで効率化されるはずなのでやっておきました。

settings.xmlとsettings.xslを少し改善

タグ名にできないスクリプト名が発生したので、それへの対応と、実行順が重要になってきたので、それを保持するようにしました。