#:g1: trivial-dump-coreの紹介

Posted 2014-06-12 14:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の163日目です。

trivial-dump-coreとはなにか

 trivial-dump-coreは、Rolando Pereira氏作のCommon Lispのイメージをダンプしたり実行可能ファイルを作成するユーティリティです。

パッケージ情報

パッケージ名trivial-dump-core
Quicklisp
CLiKihttp://cliki.net/trivial-dump-core
Quickdocshttp://quickdocs.org/trivial-dump-core
CL Test Grid: ビルド状況trivial-dump-core | CL Test Grid

インストール方法

(ql:quickload :trivial-dump-core)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 Common Lispの処理系ではコンパイル済みのファイルを読む以外にもメモリの内容をダンプし、それを利用して起動することも可能です。
仕様には定められていないので処理系依存の機能ですが、昔から大体の処理系はこの機能をサポートしていました。
trivial-dump-coreはこの処理系依存のインターフェイスを統一してくれるポータブルレイヤーというところで、SBCL、Clozure CL、CLISPに対応しているようです。ちなみにイメージのダンプは、CMUCL、Allegro CL、LispWorksでも可能です。

 使い方は、シンプルで、

(trivial-dump-core:dump-image "filename")

でイメージをダンプ

(trivial-dump-core:save-executable "filename" "起動時に実行する関数")

で、実行可能ファイルを作成です。
実行可能ファイルの場合は、起動関数でSWANKのようにスレッドを起動してトップレベルで実行し続けるように指定した場合でもメインスレッドが終了してしまえば処理系は終了してしまうようです。
そういう用途では処理系ごとに別個に書く必要があるようですが、起動関数で何かをして処理系を抜けるようなスクリプト的な利用ではtrivial-dump-coreの動作の方が便利かもしれません。

まとめ

 今回は、trivial-dump-coreを紹介してみました。
実際のところダンプしたイメージを利用しているという話はあまり耳にしませんが、大量のfaslを毎度読み込むのも時間が掛かってしょうがないという場合には割合にお勧めです。

comments powered by Disqus