В Mojo 1.2 появились сопоставление с образцом и новые математические функции

В Mojo 1.2 появились сопоставление с образцом и новые математические функции
Содержание статьи

22 октября вышел Mojo 1.2. В язык добавили сопоставление с образцом, расширили математическую библиотеку и изменили несколько интерфейсов. На Mentoring.digital рассматриваем релиз с точки зрения разработчика, который хочет обновить существующий код, а не только попробовать новый синтаксис.

Что дают match и case

Новый механизм позволяет выбирать ветку по структуре и значению данных. Поддерживаются, в частности, литералы, кортежи, структуры, дополнительные условия и объединение вариантов. Выполняется первая подходящая ветка. Образцы также применяются в конструкциях if case, while case и при разборе составных значений.

Это полезно там, где цепочка проверок одновременно выясняет тип ситуации и извлекает из неё данные. Но новая конструкция не делает произвольную последовательность условий автоматически корректной: порядок вариантов и обработку остальных случаев по-прежнему нужно продумать.

Изменения библиотеки и совместимости

Более двадцати функций std.math получили общую реализацию на Mojo для CPU и GPU. Среди них есть atan, cbrt, erfc и log10. Это не основание обещать одинаковую точность или производительность любой операции на разных устройствах: свойства нужно смотреть для конкретной функции и задачи.

StringSpan теперь представляет неизменяемые данные; связанные изменяемые варианты удалены. Кроме того, async и await переименованы в __async__ и __await__, чтобы обозначить нестабильность механизма. Старые написания пока сопровождаются предупреждением об устаревании.

Что проверить перед переходом на 1.2

  1. Найдите места, где код рассчитывает на изменение данных через прежние строковые представления.
  2. Проверьте предупреждения об async и await, а не ограничивайтесь успешной сборкой.
  3. Для вычислений сравните результат на своих входных данных с нужной вам точностью.
  4. Добавляйте match там, где он делает ветвление понятнее, сохраняя проверки граничных случаев.

Если переходите к Mojo из Python, полезно сначала уверенно разобраться с типами данных, функциями и проверкой результатов. Для этой основы можно выбрать наставника по Python; знание Python не означает автоматическую совместимость программ с Mojo. Редакция изучила официальные примечания к версии и не проводила собственных замеров её скорости.

Похожие статьи по данной теме