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

Поделиться
HTML-код
  • Опубликовано: 15 май 2024
  • Подробнее о конференции C++ Russia: jrg.su/W8skjE
    - Для описания настроек сервисов часто используются конфигурационные файлы в форматах наподобие JSON и YAML. В разных высокоуровневых языках есть возможность автоматически преобразовывать JSON в нативные структуры языка: marshalling в Go, модули JSON и YAML в Python.
    Яндекс представляет библиотеку, позволяющую реализовать сериализуемые в JSON структуры на C++. Важное отличие от аналогов - это поддержка сложных иерархий классов, в том числе со множественным и виртуальным наследованием: в сложных системах конфиги неизбежно обрастают десятками и сотнями опций, и развесистая иерархия становится неизбежной.
    В своем выступлении Иван рассказал про:
    - высокоуровневый дизайн библиотеки;
    - технические трудности в реализации (поведение виртуальных методов, линковка шаблонных классов и т. д.);
    - опыт внедрения библиотеки в большую кодовую базу;
    - попытки сделать хороший интерфейс.
    Что есть в докладе: погружение в детали layout-а классов в различных иерархиях наследования, специфика работы с offset-ами полей, подходы к реализации рефлексии.
    Чего нет в докладе: парсинга JSON и сериализации примитивных типов - эта задача хорошо выполняется и сторонними библиотеками.
    Доклад будет интересен практикам, которые ищут способы удобной конфигурации сервисов, и language lawyers, желающим познакомиться с подводными камнями в укладке классов, dynamic cast и множественного наследования.
    Используемые технологии: C++17 и произвольный сторонний JSON-парсер.
    Скачать презентацию с сайта С++ Russia - jrg.su/pxidlK

Комментарии • 1

  • @SmoukingMouse

    Спасибо за доклад, есть интересные моменты, ребята прям запотели. В этом докладе конечно же "весь С++", то что в других языках не вызывает проблем или вопросов, в С++ решается костылём на костыле с UB, которые потом не понятно как поддерживать, прям классика ).