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