Комментарии 6
Это не статья, а выборочный пересказ документации. Дали бы тогда просто ссылку на https://serde.rs/ и все.
К сожалению, с развитием serde все очень плохо. Ошибки в дизайне не правятся и не собираются. Вместо следования semver (что вообще-то является обязательным для проектов cargo, т.к. именно так cargo обрабатывает поле version
), автор наперекор всем делает ломающие изменения в патчах со словами "ну, замел под ковер, значит не ломающее". На справедливую критику "в чем сложность поменять циферку, кому надо -- те обновятся" начинается бубнеж "я не буду поддерживать 2 версии". А его кто-то просит? Поддерживай последнюю, как сейчас и делаешь.
PR уже давно даже не рассматриваются. Не удивлюсь, если автор вообще отписался от писем из репозитория и в черный список внес. Передать права на сопровождение, или хотя бы попросить помочь с сопровождением, если времени не хватает, что-то, видимо, мешает, на "Ч" начинается, на "В" заканчивается.
Явные указания на баги закрываются с причиной "не баг, я так сказал". Плевать, что это приводит к проблемам. Признать свою ошибку совершенно невозможно.
Более-менее сносно работает только serde_json. serde_yaml так вообще недавно объявлен неподдерживаемым (скорее всего как раз из-за первой проблемы). Причем автор даже не попросил сообщество взять на себя сопровождение. Молча заархивировал и все... Конечно можно форкнуть, но что это за поведение?
Диалога с сообществом никакого. Автор сказал свое слово, автор закрыл возможность комментирования. Творит дичь (для проекта, на который завязано половина экосистемы раста). И то, похоже его кто-то в кулуарах образумил, а иначе бы была закрыта эта задача без возможности комментирования (впрочем, она и сейчас закрыта).
Может Девид и семи пядей во лбу и что-то там двигает в компиляторе, но отношение к сообществу просто отвратительное.
И какая альтернатива?
К сожалению, реальной пока не видно. Если что-то очень мешает, то можно форкнуть, поправить баги и пользоваться секцией [patch]
в своих проектах (чтобы в ваши зависимости исправления тоже втянулись). Если появится подобный форк и удастся его популяризовать, глядишь, может дело и сдвинется с мертвой точки. С node.js / io.js подобное прокатило
Вместо следования semver (что вообще-то является обязательным для проектов cargo, т.к. именно так cargo обрабатывает поле version), автор наперекор всем делает ломающие изменения в патчах
А разве это именно ломающее изменение? Вроде, же просто расширение апи? Ну то есть формально да, это нарушение семвер, но не кажется прям большой проблемой. Ну и если бы у серде стали мажорную версию инкрементировать, то больно стало бы всем.
Ну а так-то чувак тащит на себе кучу крейтов. Ожидаемо на всё времени не хватает, но да, меня тоже расстраивает, что "делиться ответственностью" он не спешит.
Serde — это высокопроизводительная библиотека для сериализации и десериализации данных в Rust.
По моему в статье дана неверная mental model того, что такое serde. Как автор serde описывает serde - это фрэймворк для сериализации/десериализации, который предоставляет определённую data model, которая является API для сериализации/десериализации. API само по себе не может быть высокопроизводительным, но может позволять написать высокопроизводительную реализацию, т.е. сериализаторы/десериализаторы конкретных форматов (JSON, MessagePack, YAML, etc).
Она поддерживает различные форматы данных, включая JSON, YAML, TOML, BSON и многие другие.
Мне не нравится эта формулировка, т.к. читатель может прийти к мысли, что, якобы, serde сам реализует сериализацию/десериализацию в эти форматы, когда задача serde только создать достаточно гибкое API, чтобы используя его можно было написать сериализаторы/десериализаторы этих форматов.
Помимо API serde, конечно же, предоставляет различные макросы для определения пользовательских Rust типов через serde data model и реализации этих определений для типов стандартной библиотеки, поэтому serde - это больше, чем просто API.
Кратко про Serde в Rust