Clause
← Уся документація

Англійський оригінал змінився після перекладу, тож частина тексту може бути застарілою. Читати англійською

Перекладено з англійського оригіналу · 1e3a39c8-dirty · 2026-10-26

Еталонні джерела Erlang/OTP

Clause відстежує офіційну гілку maint-29. Перевірена прив'язка (pin) зберігається в references/otp-pin.cmake:

references/otp — ігнорований checkout. Звичайні збирання й тести використовують еталони, що належать проєкту, і не потребують ні checkout, ні встановленого OTP. Конфігурація й тести ніколи не завантажують і не просувають еталонну ревізію. Живі аудити вмикаються явно через -DCLAUSE_OTP_AUDITS=ON; див. повторне генерування фікстур.

Вихідний код OTP, скопійовані допоміжні файли й заголовки, згенеровані OTP, ніколи не потрапляють у Git. Закомічені тестові вхідні дані написані локально; закомічені еталони є спостереженнями за цими вхідними даними. Див. валідацію.

Процедура оновлення

Виконується на початку роботи, що залежить від OTP.

  1. Перевірте git -C references/otp status --short і збережіть локальну роботу. Завантажте: git -C references/otp fetch https://github.com/erlang/otp.git refs/heads/maint-29:refs/remotes/origin/maint-29. Перегляньте git -C references/otp log -1 origin/maint-29 і зміни з моменту прив'язки, особливо граматику, сканер, препроцесор і вхідні дані корпусу.
  2. Перемотайте вперед чисту локальну гілку: git merge --ff-only origin/maint-29 (перше налаштування: git switch --create maint-29 --track origin/maint-29). Використовуйте байти checkout з LF (core.autocrlf=false), щоб контрольні суми збігалися на кожному хості; в наявному checkout у Windows нормалізуйте лише текстові файли з маніфесту та erl_parse.yrl, а бінарні фікстури upstream залишайте без змін.
  3. Згенеруйте заголовок компілятора з тієї самої ревізії (з кореня проєкту): perl references/otp/erts/emulator/utils/beam_makeops -compiler -outdir references/otp/lib/compiler/src references/otp/lib/compiler/src/genop.tab. У Windows нормалізуйте до LF лише згенерований beam_opcodes.hrl.
  4. Оновіть прив'язку й перевірте кожен шлях у tests/fixtures/parser/phase6/otp.tsv. Оновлюйте хеші лише після перегляду реальних змін upstream. Якщо змінюється erl_parse.yrl, перегляньте tests/fixtures/parser/grammar.tsv, його фікстури та phase6/coverage.tsv; кожне звичайне правило виведення потребує виміряного свідка.
  5. Сконфігуруйте з CLAUSE_OTP_AUDITS=ON і CLAUSE_OTP_SOURCE_ROOT, що вказує на checkout. Запустіть тести аудиту та tests/compiler/patternmatch/regenerate.py --corpus all --check. Запишіть ревізію та результати нижче; повідомляйте про розбіжності, а не генеруйте повторно, щоб їх приховати.

Історія прив'язки

Історичні записи зберігають ревізію, щодо якої їх зроблено.

ДатаПодіяРевізія
2026-09-19Валідація парсера щодо тегу OTP 29.1751f87b703fe5948607d08e82599ce644b772e76
2026-09-28Перехід на maint-29; граматика й десять файлів корпусу ідентичні21776803ecd11f5fa948732c0ec66b8f325dedfc
2026-10-01 – 10-03Повторне завантаження перед кожним кроком щодо зразків/guards; без змінта сама
2026-10-03План 11, step 1: 14 тестів аудиту проходять, 19 корпусів відтворюютьсята сама
2026-10-14Оновлено до OTP 29.1.2: хеші граматики, сканера, препроцесора й phase6/otp.tsv без змін (у genop.tab змінено лише коментар); 17 тестів аудиту проходять і 19 корпусів відтворюються з оракулом 29.1.1; ревізію, записану в еталонах виконуваних файлів, lint, програм і друку, оновлено (виводи без змін, external_terms зберігає свій вивід map, що залежить від порядку атомів)d199a49a01a2079afb6f2c5c9ae047cd4555e68d
2026-10-24Оновлено; upstream змінив лише робочі процеси .github/ (32 файли), тому вхідні дані граматики, сканера, препроцесора, корпусу й phase6/otp.tsv побайтово ідентичні, а аудити повторно не запускалися; ревізію, записану в еталонах, оновлено9710673e5916164dff9616327df7de39f1aa75a9