Фанаты динамического Elixir получили типы — и компилятор сразу нашёл их баги
Десять лет поклонники Elixir убеждали всех, что динамическая типизация — это нормально. Версия v1.20 привезла постепенные типы без единой аннотации — и первое, что она сделала после обновления, — вручила всем пачку бесплатных багов.
Динамический язык тихо обзаводится проверкой типов

Годы напролёт Elixir был языком, поклонники которого клялись: статические типы не нужны — сопоставление с образцом и виртуальная машина BEAM всё компенсируют. Затем релиз v1.20 попал на первую страницу с противоположным тезисом: теперь это постепенно типизированный язык, и тред полон новообращённых, наблюдающих, как компилятор находит баги, о существовании которых они не подозревали.
Типы без аннотаций и dynamic(), который не равен any()
Главное: v1.20 выполняет вывод и проверку типов по всем программам на Elixir без единой аннотации, выявляя мёртвый код и «подтверждённые баги» — нарушения типов, гарантированно падающие в рантайме. Конструкция строится вокруг постепенного типа dynamic() — заглушки для ещё неизвестных типов — с двумя свойствами, на которых акцентируется релиз: совместимостью и сужением. Система помечает неопределённые значения как dynamic(integer() or binary()) и сигналит только тогда, когда предоставляемый и ожидаемый типы полностью не пересекаются. Вывод теперь работает через guard-клозы с объединениями и отрицаниями (is_list(x) and is_integer(y)), сопоставление с образцом с уточнением ({:ok, x} = y), проверки is_map_key/2 и сужение клоз case, обрезающее избыточные ветки. По данным релиза, система проходит 12 из 13 категорий бенчмарка «If T» по сужению типов. Сами сигнатуры типов пока отложены — ждут рекурсивных и параметрических типов.
Лагерь «бесплатных багов» и шпилька в адрес старой ортодоксии
Реакция работающих с Elixir команд касалась не теории, а опыта обновления:
«Мне нравится, что я могу обновить версию Elixir, и компилятор находит кучу бесплатных багов. Последние несколько релизов именно такие — и почти никаких ломающих изменений.» — разработчик, поздравляющий команду
Не все были готовы отпустить сообщество за прежнюю позицию:
«Критики говорили: нужна типизация, а все поклонники Elixir отвечали: типизация не нужна… Теперь они получают типизацию, и та находит за них баги… Но вы же говорили, что она вам не нужна для предотвращения багов?» — разработчик, пробовавший Elixir, но остановленный отсутствием типов
Ветеран с десятилетним стажем охладил эйфорию реальным вопросом — превосходит ли это старый инструментарий:
«Хотел бы понять, как то, что есть в v1.20, соотносится с Dialyzer без спецификаций… Dialyzer я не нашёл особо полезным.» — старший инженер-программист, профессионально работающий с Elixir около 10 лет
Самое интересное утверждение прозвучало от комментатора, смотрящего дальше постепенной типизации — к тому, что появится с аннотациями:
«Elixir, судя по всему, станет первым сколько-нибудь заметным языком с полными теоретико-множественными типами… TypeScript и Scala поддерживают лишь… объединение и пересечение… {объединение, пересечение} функционально неполны, тогда как {объединение, пересечение, дополнение} — полны.» — комментатор, апеллирующий к функциональной полноте
Обновление, которое вас аудирует
Тихий трюк здесь в том, что это не опциональная функция, на которую нужно мигрировать, — она работает на существующем коде и отчитывается. Языковое сообщество, построившее свою идентичность на том, что типы не нужны, только что выпустило проверщик, который при первой же компиляции точно показывает, во сколько это обходилось. Теоретико-множественные амбиции — игра на перспективу: типы-дополнения позволят Elixir выражать ограничения, структурно невозможные в TypeScript, — странная фраза про язык, который ещё недавно был последним оплотом динамической типизации.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
35% студентов курса CS в Беркли получили «неуд» — и дело не только в списывании
Вводный курс, где раньше проваливалось менее 10%, весной 2026-го завалил 35,3% студентов. Собственное объяснение профессора опровергает паническую ИИ-риторику: поймали почти 30 списывальщиков, а деградация математики началась за годы до ChatGPT.