Шаблон релиза
Команда
/releaseгенерирует changelog по этому шаблону.
changelog — это описание изменений для людей, а не список коммитов.
Формат
:bookmark: V<номер версии>: <заголовок>📦 Информация о версии
| Поле | Значение |
|---|---|
| Дата выпуска | YYYY-MM-DD |
| Изменение версии | <старая версия> → <новая версия> |
| Число коммитов | N коммитов |
📋 Краткое описание обновления
В 2-3 предложениях опишите основное содержание и значение этого релиза.
✨ Новое
<заголовок функциональной области>
<абзац с описанием того, что делает эта функция, какую проблему она решает и что это значит для пользователя>
- Конкретное изменение 1
- Конкретное изменение 2
- Конкретное изменение 3
<другая функциональная область>
<описание>
- Конкретное изменение
🐛 Исправления ошибок
<область исправления>
<описание исправленной проблемы и области её влияния>
- Конкретное исправление 1
- Конкретное исправление 2
♻️ Рефакторинг и оптимизация
<направление рефакторинга>
<описание причины рефакторинга и преимуществ после него>
- Конкретное изменение
Правила для заголовка
Одной строкой опишите основное изменение, не более 50 символов:
:bookmark: V0.7.2: Переписывание REPL и улучшения type system
:bookmark: V0.7.3: Исправления в type system и улучшения ownership
:bookmark: V0.8.0: Concurrency model и genericsПравила категоризации
Группируйте по префиксу type, пустые категории опускайте:
| type | Категория | Префикс |
|---|---|---|
feat | ✨ Новое | :sparkles: |
fix | 🐛 Исправления | :bug: |
refactor | ♻️ Рефакторинг | :recycle: |
perf | ⚡ Производительность | :zap: |
docs | 📝 Документация | :memo: |
style | 🎨 Форматирование | :art: |
test | ✅ Тесты | :white_check_mark: |
chore | 🔧 Сборка/инструменты | :wrench: |
ci | 💚 CI/CD | :green_heart: |
Полный пример
:bookmark: V0.7.3: Исправления в type system и улучшения ownership
markdown
## 📦 Информация о версии
| Поле | Значение |
| ---------------- | ----------------- |
| Дата выпуска | 2026-06-07 |
| Изменение версии | `0.7.2` → `0.7.3` |
| Число коммитов | 22 коммита |
## 📋 Краткое описание обновления
Этот релиз сфокусирован на исправлениях стабильности type system и ownership model. Инстанцирование
generics (например, `List(Int) = List(1, 2, 3)`) теперь работает корректно, исправлено несколько
граничных случаев доступа к полям `&T` и tuple destructuring assignment. Одновременно завершён
унифицированный рефакторинг проверок ownership, закладывающий основу для дальнейшего
совершенствования move-семантики.
## ✨ Новое
### Инстанцирование generics
Поддерживается синтаксис `List(Int) = List(1, 2, 3)`, конструктор типа корректно регистрируется как
Struct. При множественных вызовах generics-функций вывод типов больше не конфликтует — каждый вызов
получает независимый экземпляр переменной типа.
- Конструктор типа регистрируется как Struct, исправлен корень проблемы инстанцирования
- Независимый вывод типов при множественных вызовах generics-функций
- Исправлено связывание методов интерфейса
### Повторное связывание после move
После move переменной можно связать её с новым значением; приоритетный поиск при присваивании теперь
корректно обрабатывает состояние moved, избегая ложных ошибок «переменная перемещена».
- В VarInfo добавлен флаг состояния moved
- В приоритетный поиск присваивания добавлена ветка moved
### Marker trait Resource
Добавлен marker trait `Resource`, помечающий типы с побочными эффектами IO. Закладывает основу для
последующего отслеживания побочных эффектов и анализа concurrency-безопасности.
### PLDI SRC demo
Завершены все задачи MVP PLDI SRC demo, включая сквозную демонстрацию проверки типов и
кодогенерации.
## 🐛 Исправления ошибок
### Доступ к полям `&T`
Исправлен ряд проблем проверки типов при доступе к полям через immutable reference, включая
присваивание полям и вывод типов для конструкторов, вызываемых по ссылке.
- Исправлена проверка типов при доступе к полям `&T`
- Вывод типа цели при присваивании полю
- Вывод типа для конструкторов, вызываемых по ссылке
### Семантическая подсветка LSP
Исправлена отсутствующая семантическая подсветка переменных внутри блоков `spawn {}` и tuple
destructuring assignment `(a, b) = ...`. В AST поле `DestructureAssign.names` теперь содержит
информацию о позиции каждого имени переменной.
- Корректная подсветка переменных внутри spawn-блоков
- Корректная подсветка имён переменных в tuple destructuring assignment
- Основа для дальнейшей поддержки LSP move-семантики
### Удаление freeze
Удалена устаревшая функция `freeze`, очищены связанные тестовые случаи.
## ♻️ Рефакторинг и оптимизация
### Унифицированная система диагностики
Оставшиеся 5 перечислений ошибок перенесены в единую систему диагностики `ErrorCodeDefinition`,
покрытие кодами ошибок увеличено с 60% до 80%. Все ошибки компиляции теперь следуют единому формату
и спецификации кодов ошибок.
### Унификация проверок ownership
Разбросанная по разным местам логика проверок ownership объединена в `OwnershipPass` с единой точкой
входа для проверок borrow, move и времени жизни. Снижает стоимость сопровождения и повышает
согласованность сообщений об ошибках.
### Упрощение concurrency model
Удалена система ограничений Send/Sync, `spawn {}` переработан в модель группового выполнения. Удалён
код декораторов `@block`/`@eager`/`@auto` (RFC-024 phase 1). Упрощение concurrency model
прокладывает путь к проектированию расширяемых concurrency-примитивов.Обзор процесса
Сбор коммитов → Генерация changelog → Создание PR → Ожидание зелёного CI → bump версии → MergeПодробнее см. .claude/commands/release.md
