Skip to content

Шаблон релиза

Команда /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