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 и улучшения 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