Serialization
ジュリアオブジェクトのシリアル化を提供します。
Serialization.serialize
— Functionserialize(stream::IO, value)
任意の値をストリームに不透明な形式で書き込み、deserialize
によって再度読み取れるようにします。読み取った値は元の値とできるだけ同一になりますが、Ptr
値はすべてゼロのビットパターン(NULL
)としてシリアライズされることに注意してください。
最初に8バイトの識別ヘッダーがストリームに書き込まれます。ヘッダーを書き込まないようにするには、Serializer
を構築し、それをserialize
の最初の引数として使用します。Serialization.writeheader
も参照してください。
データ形式はマイナー(1.x)Juliaリリースで変更される可能性がありますが、以前の1.xバージョンで書かれたファイルは引き続き読み取ることができます。主な例外は、外部パッケージ内の型の定義が変更された場合です。その場合、影響を受けるパッケージの明示的な互換バージョンを環境に指定する必要があるかもしれません。パッケージ内の関数、プライベート関数であっても、名前を変更することは既存のファイルを同期させなくなる可能性があります。匿名関数には特別な注意が必要です:その名前は自動的に生成されるため、マイナーなコード変更が名前の変更を引き起こす可能性があります。長期保存を目的としたファイルでは、匿名関数のシリアライズは避けるべきです。
場合によっては、読み取りおよび書き込みを行うマシンのワードサイズ(32ビットまたは64ビット)が一致する必要があります。より稀なケースでは、OSやアーキテクチャも一致する必要があります。たとえば、プラットフォーム依存のコードを含むパッケージを使用する場合です。
serialize(filename::AbstractString, value)
ファイルを開き、指定された値をシリアライズします。
このメソッドはJulia 1.1以降で利用可能です。
Serialization.deserialize
— Functiondeserialize(stream)
serialize
によって書き込まれた値を読み取ります。deserialize
は、stream
から読み取ったバイナリデータが正しいことを前提としており、serialize
の互換性のある実装によってシリアライズされている必要があります。deserialize
はシンプルさとパフォーマンスを重視して設計されているため、読み取ったデータの検証は行いません。形式が不正なデータはプロセスの終了を引き起こす可能性があります。呼び出し元は、stream
から読み取ったデータの整合性と正確性を確保する必要があります。
deserialize(filename::AbstractString)
ファイルを開き、その内容をデシリアライズします。
このメソッドはJulia 1.1以降で利用可能です。
Serialization.writeheader
— FunctionSerialization.writeheader(s::AbstractSerializer)
指定されたシリアライザーに識別ヘッダーを書き込みます。ヘッダーは次のように8バイトで構成されています:
オフセット | 説明 |
---|---|
0 | タグバイト (0x37) |
1-2 | シグネチャバイト "JL" |
3 | プロトコルバージョン |
4 | ビット 0-1: エンディアン: 0 = リトル, 1 = ビッグ |
4 | ビット 2-3: プラットフォーム: 0 = 32ビット, 1 = 64ビット |
5-7 | 予約 |