Иван Смирнов
Компания: Яндекс
Для описания настроек сервисов часто используются конфигурационные файлы в форматах наподобие JSON и YAML. В разных высокоуровневых языках есть возможность автоматически преобразовывать JSON в нативные структуры языка: marshalling в Go, модули JSON и YAML в Python.
Яндекс представляет библиотеку, позволяющую реализовать сериализуемые в JSON структуры на C++. Важное отличие от аналогов — это поддержка сложных иерархий классов, в том числе со множественным и виртуальным наследованием: в сложных системах конфиги неизбежно обрастают десятками и сотнями опций, и развесистая иерархия становится неизбежной.
В своем выступлении Иван расскажет про:
Что будет в докладе: погружение в детали layout-а классов в различных иерархиях наследования, специфика работы с offset-ами полей, подходы к реализации рефлексии.
Чего не будет в докладе: парсинга JSON и сериализации примитивных типов — эта задача хорошо выполняется и сторонними библиотеками.
Доклад будет интересен практикам, которые ищут способы удобной конфигурации сервисов, и language lawyers, желающим познакомиться с подводными камнями в укладке классов, dynamic cast и множественного наследования.
Используемые технологии: C++17 и произвольный сторонний JSON-парсер.
Компания: Яндекс
Компания: Яндекс