


22 октября вышел Mojo 1.2. В язык добавили сопоставление с образцом, расширили математическую библиотеку и изменили несколько интерфейсов. На Mentoring.digital рассматриваем релиз с точки зрения разработчика, который хочет обновить существующий код, а не только попробовать новый синтаксис.
Новый механизм позволяет выбирать ветку по структуре и значению данных. Поддерживаются, в частности, литералы, кортежи, структуры, дополнительные условия и объединение вариантов. Выполняется первая подходящая ветка. Образцы также применяются в конструкциях if case, while case и при разборе составных значений.
Это полезно там, где цепочка проверок одновременно выясняет тип ситуации и извлекает из неё данные. Но новая конструкция не делает произвольную последовательность условий автоматически корректной: порядок вариантов и обработку остальных случаев по-прежнему нужно продумать.
Более двадцати функций std.math получили общую реализацию на Mojo для CPU и GPU. Среди них есть atan, cbrt, erfc и log10. Это не основание обещать одинаковую точность или производительность любой операции на разных устройствах: свойства нужно смотреть для конкретной функции и задачи.
StringSpan теперь представляет неизменяемые данные; связанные изменяемые варианты удалены. Кроме того, async и await переименованы в __async__ и __await__, чтобы обозначить нестабильность механизма. Старые написания пока сопровождаются предупреждением об устаревании.
Если переходите к Mojo из Python, полезно сначала уверенно разобраться с типами данных, функциями и проверкой результатов. Для этой основы можно выбрать наставника по Python; знание Python не означает автоматическую совместимость программ с Mojo. Редакция изучила официальные примечания к версии и не проводила собственных замеров её скорости.