Випуск Mojo 1.2: Нові можливості програмування
Випуск Mojo 1.2: Нові можливості програмування
Після Mojo 1.1, яка відкрила компілятор для зовнішніх внесків, мова програмування Mojo, що поєднує в собі синтаксис, подібний до Python, з продуктивністю та контролем системних мов програмування, випустила версію 1.2.
Основні новації Mojo 1.2
Найзначнішою новацією є патерн-матчинг за допомогою нових операторів match та case. Тепер розробники можуть порівнювати значення з різними шаблонами, включаючи літерали, кортежі, структури та умовні охоронці, виконуючи код на основі першого успішного збігу.
Ця функція також підтримує comptime match для оцінки під час компіляції, що дозволяє розробникам вибирати реалізації на основі значень або типів, відомих під час компіляції. Mojo 1.2 також вводить конструкції if case та while case, плюс деструктуризацію списків для витягування елементів з колекцій.
Покращення обчислень на GPU
Ще одним вдосконаленням є обчислення на GPU. Більш ніж 20 функцій у стандартній бібліотеці математики Mojo тепер використовують рідні реалізації Mojo замість покладання на системну математичну бібліотеку. Як результат, функції такі як atan(), tan(), log10(), hypot() та кілька функцій Бесселя можуть виконуватись як на GPU, так і на CPU.
Використання спільних реалізацій на обох архітектурах покращує числову узгодженість, хоча деякі результати все ще можуть дещо відрізнятись залежно від апаратного забезпечення.
Покращення швидкості компіляції
Щодо продуктивності, компілятор тепер обробляє великі пакети набагато швидше. За словами розробників, компіляція пакету nn займає приблизно 61 секунду, що зменшилося з 98 секунд — зниження майже на 38%.
Користувачі Linux також отримали вигоду від переходу компілятора на аллокатор пам’яті jemalloc, що покращує швидкість компіляції великих файлів GPU-кернелів на 10-13%.
Оптимізації стандартної бібліотеки
Стандартна бібліотека також отримала оптимізації продуктивності. Операції паддингу рядків можуть бути до 86 разів швидшими в деяких випадках, тоді як повторення рядків вдвічі швидше для великих рядків.
Інші зміни включають нові можливості нарізки масивів, покращене оброблення кортежів та додаткові методи для роботи з діапазонами пам’яті. Генерик-програмування також отримує більш чітку діагностику обмежень завдяки оновленим where клаузам, в той час як структури тепер можуть явно відмовитись від реалізації певних якостей.
Нарешті, випуск розширює документацію мови, включаючи оновлені пояснення патерн-матчінгу, управління потоком та синтаксису мови, а також переглянутий посібник для розробників Python, які переходять на Mojo.
Для отримання додаткової інформації, перегляньте примітки до випуску.




