Skip to content

docs(specs): перехід на WASI 0.3 тією самою хвилею, що мажор 5.0.0 - #607

Merged
vitaliytv merged 2 commits into
mainfrom
docs/contract-v5-wasi-p3
Aug 31, 2026
Merged

docs(specs): перехід на WASI 0.3 тією самою хвилею, що мажор 5.0.0#607
vitaliytv merged 2 commits into
mainfrom
docs/contract-v5-wasi-p3

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Відповідь на питання «чому P2, якщо вже є WASI 0.3.1» — і рішення переходити тією самою хвилею.

Зміряно

rustc  --print target-list | grep wasip  →  wasip1, wasip1-threads, wasip2, wasip3
rustup target list         | grep wasip  →  wasip1, wasip1-threads, wasip2 (installed)

Ціль wasm32-wasip3 компілятор знає, але precompiled std через rustup не роздається — потрібен -Z build-std або WASI SDK.

wasmtime не обмежує взагалі: обидва проєкти на версії 48, різниця лише у feature-прапорці (p2 у нас, p3 у r-plugin).

Чому тією самою хвилею

Той самий аргумент, яким обґрунтовано склад мажора: перехід ламає всіх шістьох гостей і вимагає перезбірки — а 5.0.0 це вже робить. Окрема хвиля = друга перезбірка всіх шести.

Головний де-ризикувач

nitra/r-plugin збирає під wasm32-wasip3 сьогодні: пінований nightly-2026-08-27 плюс WASI SDK 34.0-rc.2 з перевіркою SHA-256 архіву перед розпакуванням. Робочий взірець лежить у сусідньому репо тієї ж організації.

Побічна знахідка

У 7n-rules немає rust-toolchain.toml узагалі. Ми вже на nightly (1.100.0-nightly), але випадково — збірка йде тим, що стоїть на машині. Той самий клас, що KNOWN_PLUGIN_RANGES (#578): непіноване, доки не розійдеться.

P3 робить пінування обовʼязковим, а не бажаним: -Z build-std без пінованого каналу невідтворюваний за побудовою.

Чого P3 дає

Нативний async. Сьогодні наші гості синхронні й не виграють. Але рішення 1 і 4 це змінюють: docgen як гість кличе LLM, а виклик моделі природно стрімовий — краще мати платформу під це до того, як docgen почнуть портувати.

vitaliytv and others added 2 commits August 31, 2026 14:43
Питання власника: чому P2, якщо є WASI 0.3.1. Зміряно:

- wasmtime не обмежує — обидва проєкти на 48, різниця лише у прапорці
  (p2 у нас, p3 у r-plugin);
- ціль wasm32-wasip3 компілятор знає (rustc --print target-list), але
  precompiled std через rustup не роздається, тож потрібен -Z build-std
  або WASI SDK;
- робочий взірець уже є в сусідньому репо: r-plugin збирає під wasip3 на
  пінованому nightly плюс WASI SDK 34.0-rc.2 із перевіркою SHA-256.

Рішення — переходити тією самою хвилею: мажор і так ламає всіх шістьох
гостей, окрема хвиля означала б другу перезбірку.

Побічна знахідка: у 7n-rules немає rust-toolchain.toml узагалі. Ми вже на
nightly, але випадково, а не за рішенням. P3 робить пінування
обовʼязковим — build-std без пінованого каналу невідтворюваний за
побудовою.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Рішення власника: WASI 0.3.1, WASI SDK мінімум 34 — саме фінальний реліз,
не 34.0-rc.2, на якому стоїть r-plugin.

Розбіжність названа явно, бо вона впливає на перенос: скрипт добування в
r-plugin перевіряє SHA-256 і VERSION саме rc.2-збірки. Копіювання дослівно
дало б гейт, що мовчки пропускає не ту збірку — переносити треба форму,
перераховуючи контрольні суми.

Мінімум, а не точна версія: 34 — нижня межа, новіші приймаються, старіші
відхиляються гучно.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vitaliytv
vitaliytv merged commit a6fcd14 into main Aug 31, 2026
@vitaliytv
vitaliytv deleted the docs/contract-v5-wasi-p3 branch August 31, 2026 11:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant