Шаблон релиза
Команда
/releaseгенерирует changelog по этому шаблону.
changelog — это описание изменений для людей, а не список коммитов.
Формат
:bookmark: V<версия>: <заголовок>📦 Информация о версии
| Поле | Значение |
|---|---|
| Дата выпуска | YYYY-MM-DD |
| Изменение версии | <старая версия> → <новая версия> |
| Количество коммитов | N коммитов |
📋 Краткое описание обновления
Кратко изложите в 2-3 предложениях основное содержание и значение данного релиза.
✨ Новые функции
<Заголовок функциональной области>
<Один абзац с описанием того, что делает функция, какую проблему решает и что это означает для пользователя>
- Конкретное изменение 1
- Конкретное изменение 2
- Конкретное изменение 3
<Другая функциональная область>
<Описание>
- Конкретное изменение
🐛 Исправления ошибок
<Область исправления>
<Описание того, какая проблема была исправлена и область её влияния>
- Конкретное исправление 1
- Конкретное исправление 2
♻️ Рефакторинг и оптимизация
<Направление рефакторинга>
<Описание причин рефакторинга и его преимуществ>
- Конкретное изменение
Правила для заголовка
Кратко опишите основное изменение в одном предложении, не более 50 символов:
:bookmark: V0.7.2: Перезапись REPL и улучшения системы типов
:bookmark: V0.7.3: Исправления системы типов и улучшения модели владения
:bookmark: V0.8.0: Модель конкурентности и система обобщенийПравила категоризации
Группируйте по префиксу 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: |
Получение списка коммитов
bash
git log <последний тег>..HEAD --oneline --no-mergesПолный пример
:bookmark: V0.7.3: Исправления системы типов и улучшения модели владения
markdown
## 📦 Информация о версии
| Поле | Значение |
| ------------------- | ----------------- |
| Дата выпуска | 2026-06-07 |
| Изменение версии | `0.7.2` → `0.7.3` |
| Количество коммитов | 22 коммита |
## 📋 Краткое описание обновления
Данный релиз сосредоточен на исправлениях стабильности системы типов и модели владения.
Инстанцирование обобщённых типов (например, `List(Int) = List(1, 2, 3)`) теперь работает корректно,
исправлены несколько граничных случаев доступа к полям `&T` и деструктурирующего присваивания
кортежей. Одновременно завершён унифицированный рефакторинг проверок владения, что закладывает
основу для дальнейшего усовершенствования семантики move.
## ✨ Новые функции
### Инстанцирование обобщённых типов
Поддержка синтаксиса `List(Int) = List(1, 2, 3)`, конструктор типа корректно регистрируется как
Struct. При множественных вызовах обобщённых функций вывод типов больше не конфликтует — каждый
вызов получает независимый экземпляр переменной типа.
- Конструктор типа регистрируется как Struct, устранена первопричина инстанцирования
- Независимый вывод типов при множественных вызовах обобщённых функций
- Исправлена привязка методов интерфейса
### Перепривязка после move
После move переменной можно перепривязать новое значение, поиск при присваивании теперь корректно
обрабатывает состояние moved, избегая ложных ошибок «переменная уже перемещена».
- В VarInfo добавлен флаг состояния moved
- В поиск при присваивании добавлена ветка moved
### Marker trait Resource
Добавлен marker trait `Resource`, помечающий типы с побочными эффектами ввода-вывода. Это
обеспечивает основу для последующего отслеживания побочных эффектов и анализа безопасности
конкурентности.
### PLDI SRC demo
Завершены все задачи MVP для PLDI SRC demo, включая сквозную демонстрацию проверки типов и генерации
кода.
## 🐛 Исправления ошибок
### Доступ к полям `&T`
Исправлены несколько проблем проверки типов при доступе к полям неизменяемых ссылочных типов,
включая присваивание полям и вывод типов при вызове конструктора через ссылку.
- Исправлена проверка типов при доступе к полям `&T`
- Вывод целевого типа при присваивании полям
- Вывод типа при вызове конструктора через ссылку
### Семантическая подсветка LSP
Исправлена отсутствующая семантическая подсветка переменных внутри блоков `spawn {}` и
деструктурирующего присваивания кортежей `(a, b) = ...`. В AST `DestructureAssign.names` теперь
содержит информацию о позиции каждого имени переменной.
- Корректная подсветка переменных внутри блоков spawn
- Корректная подсветка имён переменных при деструктурирующем присваивании кортежей
- Основа для дальнейшей поддержки move в LSP
### Удаление freeze
Удалена устаревшая функция `freeze`, выполнена очистка связанных тестовых случаев.
## ♻️ Рефакторинг и оптимизация
### Унифицированная система диагностики
Оставшиеся 5 перечислений ошибок перенесены в единую систему диагностики `ErrorCodeDefinition`,
покрытие кодами ошибок увеличено с 60% до 80%. Все ошибки компиляции теперь следуют единому формату
и спецификации кодов ошибок.
### Унификация проверок владения
Логика проверки владения, разбросанная по нескольким местам, объединена в `OwnershipPass` — единая
точка входа для обработки borrow, move и проверки времени жизни. Снижаются затраты на поддержку,
повышается согласованность ошибок.
### Упрощение модели конкурентности
Удалена система ограничений Send/Sync, `spawn {}` переработан в модель группового выполнения. Удалён
код, связанный с декораторами `@block`/`@eager`/`@auto` (RFC-024, фаза 1). Модель конкурентности
упрощена, прокладывается путь для последующего проектирования расширяемых примитивов конкурентности.Обзор процесса
Сбор коммитов → Генерация changelog → Создание PR → Ожидание зелёного CI → bump версии → СлияниеПодробности см. в .claude/commands/release.md
