История Ивана Капкова: эмиграция, внутренний кризис и трагический финал «Ставка на любовь»: кто участвовал в первом выпуске третьего сезона и какая пара ушла Филипп Киркоров станцевал на столе для диджея на презентации клипа «Луиза» Александр Цыпкин представил «Файл Надежды» — историю любви в эпоху нейросетей Том Уэллинг стал героем вирусного обсуждения после публикации фото из отеля Дженнифер Лопес и Кит Урбан сблизились после разводов, утверждают инсайдеры Британский актер погиб после падения в вольер с тиграми Цена нефти Brent впервые с сентября превысила $107 за баррель Модель OnlyFans рассказала о трех поклонниках с татуировками в ее честь ZCode раздаёт 500 млн токенов для моделей GLM-5.3 Перчатки как главный аксессуар сезона: тренды осени и зимы 2026/2027 В Кемерово продолжается расследование смерти Татула Петросяна Кабардино-Балкарский высокогорный заповедник: ледники, экотропы и Дыхтау Кая Гербер впервые появилась на публике после смерти брата SHAMAN выпустил юмористическое видео в поддержку песни «Я русский мужик» В аэропорту Шереметьево у турагента украли рюкзак в бизнес-зале На фестивале «Маяк» показали фильмы Тимы Анисимова, Никиты Троценко и Павла Лунгина Конор Кеннеди и Джулия Бе сыграли свадьбу в Рио-де-Жанейро Россияне поддержали право фотографировать товары в магазинах, но снимают их в основном ситуативно TorrentClaw проверяет торренты с помощью ИИ и VirusTotal
Лента новостей
Технологии

В Mojo 1.2 добавили сопоставление с образцом и ускорили компиляцию

Вышли Mojo 1.2 и MAX Framework 26.7. В новой версии языка появились match/case, математические функции для CPU и GPU и ускорение сборки.

В Mojo 1.2 добавили сопоставление с образцом и ускорили компиляцию
Фото: Хабр

Во второй половине октября 2026 года состоялся релиз языка программирования Mojo 1.2 и платформы MAX Framework 26.7 для разработки приложений машинного обучения. MAX Framework дополняет инструменты Mojo средствами разработки и отладки программ, работающих с моделями в форматах TensorFlow, PyTorch и ONNX.

Mojo развивается под руководством Криса Латнера — основателя и главного архитектора LLVM, а также создателя Swift. В августе 2026 года проект достиг первой стабильной мажорной версии, а выпуск Mojo 1.1 в сентябре открыл возможность принимать изменения от сторонних участников. Стабильная ветка 1.x рассчитана на создание крупных проектов без риска несовместимых изменений в языке.

Mojo объединяет Python и системное программирование

Синтаксис Mojo основан на Python, тогда как система типов близка к C и C++. Язык позиционируется как инструмент общего назначения: он должен сохранять удобство Python для исследований и прототипирования, но при этом позволять создавать высокопроизводительные конечные приложения.

Исходный код Mojo можно выполнять через JIT-интерпретацию либо заранее компилировать в исполняемые файлы. Компилятор преобразует программы в промежуточное представление MLIR, развиваемое в рамках LLVM, и поддерживает автоматические оптимизации, кэширование и распределённую компиляцию. Для ускорения вычислений можно задействовать CPU, GPU, специализированные ускорители машинного обучения и SIMD-инструкции. В отдельных сценариях такое распараллеливание, по заявлению разработчиков, позволяет превзойти производительность приложений на C и C++.

В языке есть статическая типизация и механизмы безопасной работы с памятью, включая контроль времени жизни ссылок и заимствований, напоминающий подход Rust. Одновременно сохраняются низкоуровневые возможности: режим unsafe, тип Pointer, прямой вызов SIMD-инструкций и доступ к аппаратным расширениям вроде TensorCores и AMX.

Главные изменения в Mojo 1.2

Ключевым нововведением стала поддержка сопоставления с образцом через конструкции match и case. В качестве образцов можно использовать литералы, несколько значений, кортежи, структуры, условия с ограничениями и шаблон case _. Для проверок на этапе компиляции добавлено выражение comptime match.

В релизе также появилась деструктуризация списков — как самостоятельная возможность и как часть проверок в match. В условные конструкции if, elif и while добавили варианты if case и while case, позволяющие одновременно проверять и извлекать данные.

Стандартная библиотека std.math получила более 20 математических функций, включая atan(), tan(), cbrt(), erfc(), lgamma(), log10(), remainder() и hypot(). Реализации рассчитаны на работу как с CPU, так и с GPU и не используют системную библиотеку libm. Для описания аппаратных ускорителей появился тип TargetAccelerator, объединяющий возможности GPUInfo и CompilationTarget.

Синтаксис типажей расширили конструкцией not <Trait>, предназначенной для отключения реализации отдельных типажей. Для проверочных выражений where добавили пользовательские сообщения об ошибках через конструкцию where <condition> else <message>. В Linux компилятор Mojo перевели на распределитель памяти jemalloc.

Ускорение компиляции и изменения совместимости

Сборка крупных пакетов и больших ядер для GPU ускорилась на 10–13%. В качестве примера разработчики приводят пакет nn: его компиляция занимает 61 секунду вместо 98.

Оптимизации затронули и работу со строками. Операции выравнивания ускорились до 86 раз, повторение больших строк оператором * — примерно вдвое. Методы String.startswith() и String.endswith() также стали быстрее, а разбор чисел с плавающей запятой через atof() в среднем ускорился на 20%.

При этом разработчики изменили ряд API. StringSpan теперь предоставляет доступ к байтам строки только для чтения. Поддержка MutStringSpan, MutStringSlice и параметра mut, позволявших напрямую менять строковый буфер, прекращена. Пустой кортеж () теперь всегда обозначает значение, а для указания его типа нужно использовать Tuple[].

Ключевые слова async и await переименовали в __async и __await, чтобы обозначить их экспериментальный статус. Старые варианты пока сохраняются, но компилятор выдаёт предупреждение.

В состав платформы Mojo входят компилятор, runtime, интерактивная REPL-оболочка, отладчик, расширение для VS Code с автодополнением, форматированием и подсветкой синтаксиса, а также интеграция с Jupyter. Исходный код стандартной библиотеки опубликован под лицензией Apache 2.0 с исключениями LLVM, допускающими смешивание с кодом под GPLv2. Исходный код компилятора планируют открыть после завершения стабилизации его внутренней архитектуры.

Источник