Еталонні джерела Erlang/OTP
Clause відстежує офіційну гілку maint-29. Перевірена прив'язка (pin)
зберігається в references/otp-pin.cmake:
- Ревізія
9710673e5916164dff9616327df7de39f1aa75a9(OTP 29.1.2, коміт upstream від 2026-10-22), оновлена 2026-10-24. - Встановлений оракул для еталонів і аудитів: OTP 29.1.1 / ERTS 17.1.
references/otp — ігнорований checkout. Звичайні збирання й тести
використовують еталони, що належать проєкту, і не потребують ні checkout, ні
встановленого OTP. Конфігурація й тести ніколи не завантажують і не просувають
еталонну ревізію. Живі аудити вмикаються явно через -DCLAUSE_OTP_AUDITS=ON;
див. повторне генерування фікстур.
Вихідний код OTP, скопійовані допоміжні файли й заголовки, згенеровані OTP, ніколи не потрапляють у Git. Закомічені тестові вхідні дані написані локально; закомічені еталони є спостереженнями за цими вхідними даними. Див. валідацію.
Процедура оновлення
Виконується на початку роботи, що залежить від OTP.
- Перевірте
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і зміни з моменту прив'язки, особливо граматику, сканер, препроцесор і вхідні дані корпусу. - Перемотайте вперед чисту локальну гілку:
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 залишайте без змін. - Згенеруйте заголовок компілятора з тієї самої ревізії (з кореня проєкту):
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. - Оновіть прив'язку й перевірте кожен шлях у
tests/fixtures/parser/phase6/otp.tsv. Оновлюйте хеші лише після перегляду реальних змін upstream. Якщо змінюєтьсяerl_parse.yrl, перегляньтеtests/fixtures/parser/grammar.tsv, його фікстури таphase6/coverage.tsv; кожне звичайне правило виведення потребує виміряного свідка. - Сконфігуруйте з
CLAUSE_OTP_AUDITS=ONіCLAUSE_OTP_SOURCE_ROOT, що вказує на checkout. Запустіть тести аудиту таtests/compiler/patternmatch/regenerate.py --corpus all --check. Запишіть ревізію та результати нижче; повідомляйте про розбіжності, а не генеруйте повторно, щоб їх приховати.
Історія прив'язки
Історичні записи зберігають ревізію, щодо якої їх зроблено.
| Дата | Подія | Ревізія |
|---|---|---|
| 2026-09-19 | Валідація парсера щодо тегу OTP 29.1 | 751f87b703fe5948607d08e82599ce644b772e76 |
| 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 |
Clause