В ядре появляется статическое отражение типов: по идентификатору типа можно узнать его структуру

10.01.2026

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

Зачем это нужно

Идентификатор типа позволял проверить, совпадают ли типы, — и больше ничего. Программа, которая принимает произвольную структуру, не могла узнать, какие в ней поля, какие у них типы и как их обходить. Это делает невозможным универсальный код: сериализация, проверка схемы, отладочные инструменты, фреймворки с внедрением зависимостей.

Каждая такая библиотека решала задачу для себя: копировала внутренний код компилятора или разбирала исходный текст. Обе дороги ломались при каждом обновлении языка.

Как устроено

Информация собирается во время компиляции и хранится рядом с типом. Запрос возвращает описание: разновидность типа, а для составных — перечень полей с их типами и именами.

Поддержка конкретных разновидностей добиралась следующими изменениями: составные типы, указатели на функции, типы без размера, сведения о трейтах. То есть первое появление — это каркас, а наполнение шло ещё несколько месяцев.

Оговорка, о которой стоит знать

Разработчики прямо предупреждают, что совместимость на уровне изменений пока не гарантируется. То есть обещать, что завтра форма описания не поменяется, пока нельзя.

Оригинал

the Type struct has fields that contain information about the type. The most notable field is kind, which is a non-exhaustive enum over all possible t...

Упоминаний: 1 · Просмотров: 3