Topazdocs
Интеграция и миграция

Миграция с версий до v5

Boundary-first migration с private pre-v5 и legacy site forms на current canonical Topaz.

Pre-v5 material — provenance, не compatibility promise. v5.0/v5.1 были private design generations; synchronized public line выбрана в v5.2. Сохраняйте intended behavior, переписывайте source в current grammar и позволяйте checker громко выявить boundaries.

1. Инвентаризация до переписывания

Запишите entry files, module roots, inputs, outputs, faults, host effects и golden transcripts. Отделите настоящий Topaz от Rust/JavaScript/framework examples. Не выводите semantics из старой страницы; используйте current SPEC/examples.

2. Нормализация повторяющихся форм

  • mut letlet mut, [T]Array<T>, старый function type → (T) -> U.
  • List rest — ..rest, variadic — ...args: T, anonymous function — lambda, receiver — только admitted self.
  • String indexing/.length заменяются scalar APIs; templates используют registry tags и {expr}.
  • Recoverable failure — Result, absence — Option/nullable, runtime faults loud, cleanup — defer/admitted using.
  • Модули переписываются в текущие формы import и export; синтаксис других языков остаётся на явно отмеченной границе сборки или конвертации.

3. Исторический код остаётся историческим

Legacy spelling находится в text, не canonical Topaz fence:

mut let names: [string] = ["Ada"]
let first = names[0]

Current form явно показывает mutation, collection type и bounds:

TOPAZ
let mut names: Array<string> = ["Ada"]
let first: Option<string> = names.get(0)
print("{first}")

4. Восстановление proof, не только parse

Запустите topaz check --language-version 5.6, затем reference fixtures через run. Build только нужные targets и сравните declared observables. Перепроверьте module initialization, order, scalar positions, faults, cleanup и profiles. Parse не доказывает migrated behavior.

5. Граница автоматизации

Команда миграции охватывает только известные переходы между прежними формами исходного кода и пакетов, а не произвольное преобразование семантики до-v5. Подробные руководства могут содержать API фреймворков и синтаксис других языков, которые нельзя проверить автоматической заменой. Сравните пример в Классике, затем адаптируйте его к текущему языку.

Выходной gate

Migration закрыта, когда current checker проходит, outputs recaptured, admitted backends согласны на declared tests, canonical fences не содержат Hard Stops, current links заменили legacy authority, а unsupported behavior имеет loud disposition.

Далее