Сериализация

Обеспечивает сериализацию объектов Julia.

# Serialization.serializeFunction

serialize(stream::IO, value)

Записывает в поток произвольное значение в непрозрачном формате, так что оно может быть прочитано функцией deserialize. Считанное значение будет в максимально возможной степени похоже на исходное, но имейте в виду, что значения Ptr сериализуются как битовые шаблоны из одних нулей (NULL).

Сначала в поток записывается идентифицирующий заголовок длиной 8 байтов. Чтобы заголовок не записывался, создайте вместо этого объект Serializer и используйте его в качестве первого аргумента функции serialize. См. также описание Serialization.writeheader.

Формат данных может измениться во вспомогательных версиях Julia (1.x), но файлы, записанные в версиях до 1.x, останутся доступны для чтения. Основным исключением является изменение определения типа во внешнем пакете. В таком случае может потребоваться явным образом указать совместимую версию соответствующего пакета в вашей среде. Переименование функций, даже частных, внутри пакетов также может привести к несовместимости существующих файлов. Анонимные функции требуют особого внимания: так как их имена генерируются автоматически, даже небольшие изменения кода могут привести к их переименованию. В файлах, предназначенных для длительного хранения, следует избегать сериализации анонимных функций.

В некоторых случаях на компьютерах, где осуществляется запись и считывание, должен совпадать размер слова (32 или 64 бита). В еще более редких случаях также должны совпадать ОС или архитектура, например при использовании пакетов, которые содержат зависящий от платформы код.

serialize(filename::AbstractString, value)

Открывает файл и сериализирует в него указанное значение.

Совместимость: Julia 1.1

Этот метод впервые реализован в Julia 1.1.

# Serialization.deserializeFunction

deserialize(stream)

Считывает значение, записанное функцией serialize. Функция deserialize предполагает, что двоичные данные, считанные из stream, верны и были сериализированы совместимой реализацией функции serialize. Функция deserialize сделана максимально простой и производительной и поэтому не проверяет считываемые данные. Неправильно сформированные данные могут привести к завершению процесса. Вызывающая сторона должна проверять целостность и корректность данных, считываемых из stream.

deserialize(filename::AbstractString)

Открывает файл и десериализирует его содержимое.

Совместимость: Julia 1.1

Этот метод впервые реализован в Julia 1.1.

# 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

зарезервированы