Пакет Serialise
Этот пакет предоставляет поддержку сериализации и десериализации произвольных структур данных.
API разработан таким образом, чтобы потребовать токены возможностей, так как в противном случае сериализация могла бы раскрыть битовые шаблоны всей приватной информации в типе (поскольку полученный массив Array[U8] можно было бы исследовать).
Десериализация в настоящее время фундаментально небезопасна: пока нет этапа проверки для проверки того, что результирующий объект-граф поддерживает правильно сформированную кучу или что отдельные объекты поддерживают ожидаемые локальные инварианты. Однако, если десериализуются только «доверенные» данные (т. е. данные, произведённые сериализацией Pony из того же бинарника), то они всегда будут поддерживать правильно сформированную кучу и все инварианты объектов.
Обратите внимание, что сериализованные данные нельзя использовать между разными бинарниками Pony. Это связано с использованием идентификаторов типов вместо сложной схемы самоописанной сериализации. Это также означает, что небезопасно десериализовать данные, сериализованные той же программой, скомпилированной для другой платформы.
Метод Serialise.signature предоставляется для сравнения взаимодействующих бинарников Pony, чтобы определить, являются ли они одинаковыми. Подтверждение этого перед десериализацией данных может помочь снизить риск случайной сериализации через разные бинарники Pony, но само по себе не решает проблемы безопасности при приёме данных из недоверенных источников.
Публичные типы
- примитивный Serialise
- примитивный SerialiseAuth
- примитивный DeserialiseAuth
- примитивный OutputSerialisedAuth
- примитивный InputSerialisedAuth
- класс Serialised
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/serialise--index