昨夜問題が発生した後、Pharo 3.0 を再起動してもワーキング セットが「取り消されない」ことに気付きました。Fuel が Pharo に含まれているところを見ましたが、セッションは自動的に維持されますか? アプリケーションで実際に動作させるには、いくつかのトリックを行う必要があるという印象を受けました。
私が間違っている?
Pharo は画像を使用します。イメージは基本的に、Pharo を使用するときのメモリ コンテンツのスナップショットです。
起動時に、このイメージがイメージ ファイルからメモリにロードされ、Pharo が実行を開始します。セッションを保存 (スナップショット) すると、逆のことが起こります。現在の状態/メモリが.image
ファイルに保存されます。これには、現在のセッションで開いているすべてのツール、実行中のすべてのプロセス、およびすべてのライブ オブジェクトが含まれます。
これは、別のオブジェクトのシリアル化ライブラリであるFuelとは関係ありません。
Pharo には 2 つのメカニズムがあります。
画像。イメージは、すべてのオブジェクト (特にオブジェクトとしてコンパイルされたメソッドとクラス) を含むメモリ スナップショットです。イメージを保存すると、システムの完全な状態がディスクに保存されます。画像を開くことができます (メモリが読み込まれ、停止したところから実行が続行されます)。実際には、変更ファイルと呼ばれる別のファイルもあります。このファイルには、編集したクラスとメソッドのテキスト表現が含まれています。ツールはこのファイルを使用して、たとえばメソッド コードを表示します。
イメージ(メモリスナップショット)の概念に加えて。システムはコードの版を永続的に記録します。各コンパイル段階の後、変更は変更ファイルにコミットされます。変更内容は、changeSorter またはバージョン ブラウザーを使用して確認できます (画像を保存しない場合、changesorter は単純なツールであるため、変更を参照することはできません)。画像を保存していなくても、変更は変更ファイルに記録されます。[ツール] メニューの [失われた変更を回復...] メニュー項目を使用して、変更を回復する方法があります。このツールを使用すると、自動的に記録されたすべての変更を参照して再生できます。私たちは将来のための新しいツールに取り組んでいます。
一般に、そのようなツールに依存するべきではありません。Pharo 分散バージョン管理システム (monticello) を使用してパッケージを作成し、SmalltalkHub などのフォージで公開します。
最後に、Fuel は、Pharo スナップショットの保存には使用されないオブジェクト シリアライザーです。Fuel は、シリアル化するもの (通常はオブジェクトのグラフ) を選択するときに使用する高速なシリアライザーです。
このすべての情報は、無料の Pharo ブックでも入手できます: http://pharobyexample.org およびhttp://rmod.lille.inria.fr/pbe2/