Мы рассмотрим новые возможности рефлекС++ии для проектирования сверхбыстрого JSON. Вашему вниманию представляется библиотека yolo-json, позволяющая интегрировать знания о прибывающих JSON (порядок полей, размеры и т.д.) в удобной манере для достижения высокой скорости парсинга. Как полусырой код может обойти simdjson? Давайте разберемся. Читать далее
Иногда, при реализации очередной "шаблонной магии" очень хочется на этапе компиляции иметь сакральное знание о том, а если у типа нужный метод, чтобы его вызвать или нет?Хорошо, если есть поддержка концептов или рефлексии. А что делать, если их ещё нет, или они не в полной мере поддерживаются?В этой статье хотелось бы кратко рассмотреть особенности применения известного механизма обнаружения наличия функциональности у используемых типов данных на этапе компиляции. Читать далее
А что, если бы операции List[A].head и List[A].tail в Scala были бы безопасными на этапе компиляции?В один ноябрьский вечер я задался этим вопросом, и, обладая нулевыми знаниями по метапрограммированию, принялся реализовывать список SList[A, N] с известным на этапе компиляции размером. Даже for-comprehension в итоге получилось реализовать!Как это получилось сделать и какими средствами языка? Если рассказывать подробно - долгая история. Хочу обрести мета-силу!
В прошлой статье я представил свою библиотеку для парсинга JSON. Краткое содержание - мы используем новые инструменты стандарта С++26 (в основном, рефлексию) для автоматической генерации оптимизированных парсеров для конкретных JSON, что позволило нам обогнать simdjson в несколько раз. Здесь мы рассмотрим, как можно генерировать целевые структуры для объектов JSON напрямую из JSON схем при помощи других трюков из стандарта 26. Читать далее