Доклад

YsonStruct: дешевая сериализация иерархических JSON-структур

  • На русском языке
Презентация pdf

Для описания настроек сервисов часто используются конфигурационные файлы в форматах наподобие JSON и YAML. В разных высокоуровневых языках есть возможность автоматически преобразовывать JSON в нативные структуры языка: marshalling в Go, модули JSON и YAML в Python.

Яндекс представляет библиотеку, позволяющую реализовать сериализуемые в JSON структуры на C++. Важное отличие от аналогов — это поддержка сложных иерархий классов, в том числе со множественным и виртуальным наследованием: в сложных системах конфиги неизбежно обрастают десятками и сотнями опций, и развесистая иерархия становится неизбежной.

В своем выступлении Иван расскажет про:

  • высокоуровневый дизайн библиотеки;
  • технические трудности в реализации (поведение виртуальных методов, линковка шаблонных классов и т. д.);
  • опыт внедрения библиотеки в большую кодовую базу;
  • попытки сделать хороший интерфейс.

Что будет в докладе: погружение в детали layout-а классов в различных иерархиях наследования, специфика работы с offset-ами полей, подходы к реализации рефлексии.

Чего не будет в докладе: парсинга JSON и сериализации примитивных типов — эта задача хорошо выполняется и сторонними библиотеками.

Доклад будет интересен практикам, которые ищут способы удобной конфигурации сервисов, и language lawyers, желающим познакомиться с подводными камнями в укладке классов, dynamic cast и множественного наследования.

Используемые технологии: C++17 и произвольный сторонний JSON-парсер.

Спикеры

Приглашенные эксперты

Расписание