次の GNU Smalltalk スクリプトを実行します。
stdout << 'Before'; nl.
ObjectMemory snapshot: 'image.im'.
stdout << 'After'; nl.
予想どおり、次の出力が生成され、新しいイメージが書き出されます。
Before
After
次に、画像をリロードします。
$ gst -I image.im
私が期待しているのは、単語After
が印刷されることです。つまり、元のスクリプトで画像が保存された場所から実行が再開されます。実際に何が起こるかというと、REPL を取得するだけです。
明らかに、イメージはスクリプトを実行しているスレッドの状態を保存していないか、イメージがロードされたときにスレッドが再作成されていません。Smalltalk イメージには、システム全体の状態のスナップショットが含まれているはずだと思っていました。なぜこれが起こっているのですか?(そして、これを機能させる方法はありますか?この動作を使用したいです。)