home.social

#wire_format — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #wire_format, aggregated by home.social.

fetched live
  1. «dap-18» это не dap-18: номер версии протокола не фиксирует формат на проводе

    Эта статья про один баг совместимости, который меня озадачил. Обе стороны честно объявляют версию протокола «dap-18», а байты на проводе не сходятся. Это не туториал по крипте и не показ репозитория - история про то, что строка версии - это не контракт совместимости, и про то, как это чинить, когда наткнулся.

    habr.com/ru/articles/1058928/

    #DAP #Prio3 #VDAF #приватная_агрегация #интероп #версионирование_протоколов #wire_format #Janus #Go #HPKE

  2. «dap-18» это не dap-18: номер версии протокола не фиксирует формат на проводе

    Эта статья про один баг совместимости, который меня озадачил. Обе стороны честно объявляют версию протокола «dap-18», а байты на проводе не сходятся. Это не туториал по крипте и не показ репозитория - история про то, что строка версии - это не контракт совместимости, и про то, как это чинить, когда наткнулся.

    habr.com/ru/articles/1058928/

    #DAP #Prio3 #VDAF #приватная_агрегация #интероп #версионирование_протоколов #wire_format #Janus #Go #HPKE

  3. «dap-18» это не dap-18: номер версии протокола не фиксирует формат на проводе

    Эта статья про один баг совместимости, который меня озадачил. Обе стороны честно объявляют версию протокола «dap-18», а байты на проводе не сходятся. Это не туториал по крипте и не показ репозитория - история про то, что строка версии - это не контракт совместимости, и про то, как это чинить, когда наткнулся.

    habr.com/ru/articles/1058928/

    #DAP #Prio3 #VDAF #приватная_агрегация #интероп #версионирование_протоколов #wire_format #Janus #Go #HPKE

  4. Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

    У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.

    habr.com/ru/articles/1049858/

    #CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация

  5. Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

    У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.

    habr.com/ru/articles/1049858/

    #CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация

  6. Все тесты зелёные, а байты разные: как я проверяю порты бинарных форматов

    У меня было полторы сотни кросс-языковых фикстур, все тесты зелёные, и я был уверен, что мой Go-порт Yjs байт-в-байт совместим с оригиналом. Потом сравнил байты напрямую с канонической реализацией, и они разъехались: семантика сходится идеально, а на проводе документ толще. Юнит-тесты, roundtrip и даже конвергенц-тесты систематически пропускают баги совместимости, когда портируешь чужой бинарный формат на другой язык. Рабочий метод один: генерировать фикстуры из канона и требовать в CI побайтового совпадения в обе стороны. Разбираю конвейер и три реальных бага из трёх своих портов (Yjs, Loro, Willow): документ в 12 раз толще канона, big-endian остров, который молча портил бы все float’ы при обмене, и дыра, через которую 9-байтный апдейт заказывал make() на 67 ТБ. Метод обобщается на любой «порт формата X на язык Y», CRDT тут просто материал.

    habr.com/ru/articles/1049858/

    #CRDT #Yjs #Loro #Go #тестовые_векторы #фикстуры #wire_format #conformance_testing #байтсовместимость #сериализация