Mozilla намітила план для випуску Rust 1.0

Організація Mozilla вийшла на фінішну пряму в підготовці мови програмування Rust 1.0. Розробники кажуть, що ця урочиста подія відбудеться приблизно в кінці року. Після бета-тестування вийде фінальний реліз. З цього моменту перспективний мову програмування можна використовувати в бойових умовах: код гарантовано буде компілюватися в наступних версіях.

Справа не тільки в компіляції. Mozilla вважає, що дизайн Rust нарешті набуває бажану мінімалістичну форму. Наприклад, раніше було кілька типів покажчиків, зараз залишилися тільки
&T
та
&mut T
. Спрощення торкнулося і інші аспекти, в тому числі замикання, які викликали багато суперечок.

Rust поєднує в собі ефективність і С++ з безпекою Java.

Весь дизайн побудований на концепції «володіння і запозичення» (ownership and borrowing). Спочатку передбачалося використовувати механізм володіння для швидкого і безпечного перенесення даних між процесами. Але потім прийшло розуміння, що цей же механізм можна використовувати для передачі значної частини функцій бібліотеки. У підсумку, Rust вийшов навіть більш низькорівневим, ніж розробники припускали, і без шкоди для безпеки. На мінімальній конфігурації Rust можна навіть написати ядро операційної системи (приклади: 1, 2, 3!

Розробники також опублікували список функцій, які треба реалізувати до офіційного релізу. Ось над чим зараз йде робота:

  • Динамічно типи змінюваного розміру (dynamically sized types). Розширення системи типізації дозволяє використовувати типи даних, розмір яких не відомий на момент компіляції, наприклад, масиви. Замість цього проставляється хитромудрий покажчик, містить масиви або об'єкти.
  • Розпаковані замикання (unboxed closures). У новому дизайні замикань вони поєднані з типами об'єктів.
  • Асоціативні типи (associated types) у системі ознак значно полегшують написання анотацій для бібліотек, перша реалізація вже готова.
  • Де-клозы (where clauses). Планується впровадити гнучку нову форму елементарної диз'юнкції. Робота над цією функцією вже закінчена, скоро її додадуть в основну гілку коду.
  • Типаж з множинною відсиланням (multidispatch traits). Функції типажів розширені, так що вони можуть вказувати більш ніж один тип одночасно, це відкриває можливості для більш ергономічних API і для використання асоціативних типів, згаданих вище.
  • Деструктори. Семантика деструкторів покращено, так що йому тепер не потрібно обов'язково обнуляти пам'ять, що має підвищити швидкість компіляції і виконання програм. Зараз закінчується аналіз умов для обнулення пам'яті, після чого цю частину теж додадуть в основну гілку.
  • Зелені потоки (green threading) прибирають з основної бібліотеки додаткові, щоб оптимізувати їх ефективність на конкретній операційній системі. Це теж призведе до прискорення виконання програм.
Паралельно створюється пакетний менеджер Cargo, буде організовано центральний репозиторій ПЗ.

лекції Степана Кольцова, яку нещодавно публікували на Хабре:

«Rust вирішує проблеми Java і C++: програми, написані на Rust, одночасно швидкі та безпечні. Rust є таким же низькорівневим (в сенсі close-to-metal) мовою програмування, як C++, проте мова вбудовані конструкції, що дозволяють на етапі компіляції доводити, що в програмі не трапляться помилки роботи з пам'яттю, як то звернення після використання, подвійне видалення, використання неинициализированной пам'яті тощо

Крім того, Rust виправляє багато помилок, допущені при проектуванні C++ і Java. Наприклад, шаблони у Rust, на відміну від C++, статично типизированы, а замість дженериків Java використовується механізм, схожий на тайпклассы Haskell».
Приклади коду на Rust див. на офіційному сайті.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.