Go перешёл на единую внутреннюю форму представления кода - Unified IR. Это тихое, но очень важное изменение, которое делает компилятор проще, чище и мощнее.
Go больше не держит несколько разных форм внутреннего представления для разных этапов компиляции.
Теперь весь типизированный AST сначала сериализуется в бинарный формат, а потом тут же десериализуется в IR, который используется на всех стадиях.
- чтобы избавиться от дублирования логики в разных частях компилятора
- чтобы упрощать такие сложные вещи как generics, инлайнинг и импорт пакетов
- чтобы компилятор стабильно обрабатывал огромные проекты и зависимости
1. При компиляции пакета
Go берёт AST → сериализует его → восстанавливает уже как Unified IR → оптимизирует и генерирует код.
2. При импорте зависимостей
Компилятор читает `.pkg`-файлы:
- типы
- функции
- константы
- тела функций, доступные для инлайнинга
И всё это в едином бинарном формате.
Формат разбит на логические секции:
- строки (имена, пути)
- типы
- объекты (функции, переменные)
- тела функций
- метаданные, позиции, generics
Это компактно, быстро и даёт компилятору полную картину.
Unified IR стал фундаментом под generics, кросс-пакетный инлайнинг и дальнейшие оптимизации.
Go-компилятор теперь проще развивать, а экосистема — быстрее и производительнее.
https://internals-for-interns.com/posts/go-compiler-unified-ir/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4
В статье объясняется, что такое
struct в Go и почему этот простой механизм лежит в основе большинства пользовательских типов.Главное:
-
struct позволяет объединять связанные данные в один объект. Пример:
type Person struct { Name string; Age int }- Если создать структуру без инициализации, её поля получают нулевые значения: пустые строки, 0, false и т.п.
- Можно сразу задать значения:
p := Person{Name: "Alice", Age: 30}
Структуры — удобный способ описывать сущности: книги, пользователей, заказы, конфиги и любые другие объекты.
struct + методы в Go - аналог классов, но проще и без наследования. Логика добавляется через методы внешне.
Композиция важнее наследования: структуры можно вкладывать друг в друга или встраивать, собирая сложные типы из простых.
https://dev.to/aaron_rose_0787cc8b4775a0/the-secret-life-of-go-structs-3aj9
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍3🥰2🤯2🔥1