flang компилятор доказывает, что программа не зациклится 0.6.2 GitHub

Unison установлен и измерен: ромб он решает не так, как обещает лозунг

Проверено прогоном, а не пересказано: ucm release/1.3.0, сценарии через ucm transcript -S.

Лозунг дословно, чтобы спорить с ним, а не с пересказом: «in Unison, dependency conflicts and the diamond dependency problem are just not a thing» (The Big Idea, сверено 2026-08-18). Там же названа причина: «Dependency conflicts are, fundamentally, due to different definitions "competing" for the same names».

Главное открытие. Лозунг «конфликтов версий не бывает, потому что это разные функции» на практике работает не полностью. Две версии действительно живут рядом — но при смешивании получается ошибка типов. По существу это поведение cargo с внятным сообщением, а не исчезновение проблемы.

Место, в числах:

база со стандартной библиотекой @unison/base 7.19.216,7 МиБ
вторая полная версия библиотеки+1,6 МиБ
пять версий+1,9 МиБ
для сравнения: node_modules сопоставимого проекта8 МБ
инструментарий TypeScript73 МБ
кеш npm254 МБ

То есть место — не проблема: старые версии почти не стоят, потому что общее содержимое переиспользуется. Опасение «база растёт вечно» замером не подтверждается.

Что у Unison действительно хорошо: кеш по хешу (результаты тестов не пересчитываются), бесплатное переименование, откат без усилий.

Чем платит: база данных вместо файлов, свой хостинг, ревью без обычного диффа. Оценка переноса такой схемы целиком — 15–25 тысяч строк.

Поправка, найденная позже и в пользу Unison. Замер выше поставлен на худший случай — тип переписали нарочно. Оказалось, что подъём версии сам по себе тип не форкает: за семь минорных версий @unison/base не изменился ни один тип, а у systemfw_concurrent они совпали даже через мажор. Разбор — the-unison-diamond-breaks-on-a-type-edit-not-a-version-bump. Где именно лежит код и что едет по сети — unison-pull-brings-all-the-code-not-references.

Связано: content-addressing, names-not-hashes, hash-inside-names-outside, the-unison-diamond-breaks-on-a-type-edit-not-a-version-bump, unison-pull-brings-all-the-code-not-references