Serialization

ジュリアオブジェクトのシリアル化を提供します。

Serialization.serializeFunction
serialize(stream::IO, value)

任意の値をストリームに不透明な形式で書き込み、deserializeによって再度読み取れるようにします。読み取った値は元の値とできるだけ同一になりますが、Ptr値はすべてゼロのビットパターン(NULL)としてシリアライズされることに注意してください。

最初に8バイトの識別ヘッダーがストリームに書き込まれます。ヘッダーを書き込まないようにするには、Serializerを構築し、それをserializeの最初の引数として使用します。Serialization.writeheaderも参照してください。

データ形式はマイナー(1.x)Juliaリリースで変更される可能性がありますが、以前の1.xバージョンで書かれたファイルは引き続き読み取ることができます。主な例外は、外部パッケージ内の型の定義が変更された場合です。その場合、影響を受けるパッケージの明示的な互換バージョンを環境に指定する必要があるかもしれません。パッケージ内の関数、プライベート関数であっても、名前を変更することは既存のファイルを同期させなくなる可能性があります。匿名関数には特別な注意が必要です:その名前は自動的に生成されるため、マイナーなコード変更が名前の変更を引き起こす可能性があります。長期保存を目的としたファイルでは、匿名関数のシリアライズは避けるべきです。

場合によっては、読み取りおよび書き込みを行うマシンのワードサイズ(32ビットまたは64ビット)が一致する必要があります。より稀なケースでは、OSやアーキテクチャも一致する必要があります。たとえば、プラットフォーム依存のコードを含むパッケージを使用する場合です。

source
serialize(filename::AbstractString, value)

ファイルを開き、指定された値をシリアライズします。

Julia 1.1

このメソッドはJulia 1.1以降で利用可能です。

source
Serialization.deserializeFunction
deserialize(stream)

serializeによって書き込まれた値を読み取ります。deserializeは、streamから読み取ったバイナリデータが正しいことを前提としており、serializeの互換性のある実装によってシリアライズされている必要があります。deserializeはシンプルさとパフォーマンスを重視して設計されているため、読み取ったデータの検証は行いません。形式が不正なデータはプロセスの終了を引き起こす可能性があります。呼び出し元は、streamから読み取ったデータの整合性と正確性を確保する必要があります。

source
deserialize(filename::AbstractString)

ファイルを開き、その内容をデシリアライズします。

Julia 1.1

このメソッドはJulia 1.1以降で利用可能です。

source
Serialization.writeheaderFunction
Serialization.writeheader(s::AbstractSerializer)

指定されたシリアライザーに識別ヘッダーを書き込みます。ヘッダーは次のように8バイトで構成されています:

オフセット説明
0タグバイト (0x37)
1-2シグネチャバイト "JL"
3プロトコルバージョン
4ビット 0-1: エンディアン: 0 = リトル, 1 = ビッグ
4ビット 2-3: プラットフォーム: 0 = 32ビット, 1 = 64ビット
5-7予約
source