Rust 1.39 Получает Асинхронное Ожидание


Последняя версия Rust добавляет async-await для простого асинхронного программирования, и Microsoft считает, что этот язык может стать альтернативой C++.

Rust 1.39

В то время как многие люди хотят поговорить о Go, именно Rust действительно предлагает что-то новое, и он заслуживает того, чтобы быть самым горячим языком, который существует на данный момент. То, что Ржавчина не претендует на внимание, возможно, потому, что мы склонны видеть новое как трудное, и это правда, что кривая обучения для ржавчины более крутая.

Часто утверждается, что строгая типизация является ключом к программированию без ошибок-по крайней мере, гораздо меньше ошибок, – но использование Rust права собственности действительно сокращает количество ошибок.

Новое в версии 1.39-поддержка асинхронного ожидания, и хотя это не может уменьшить количество ошибок в асинхронном коде, это значительно облегчает его написание, и это должно иметь эффект. Async-await-это высокоуровневый подход к ожиданию завершения операций. Он устраняет обратные вызовы и другие обходные методы возобновления выполнения, позволяя явно возобновить выполнение. Rust делает это несколько иначе, чем JavaScript и C# – два самых известных языка с асинхронным ожиданием.

То, что вы делаете,-это объявляете функцию в состоянии ожидания с помощью асинхронности:

async fn myFunction()

Когда вы вызываете асинхронную функцию, она не выполняет вычисления. Вместо этого он возвращает будущее, которое является вычислением, но в приостановленном состоянии. Чтобы начать вычисление, все, что вам нужно сделать, это использовать оператор .await:

let myFuture = myFunction();
myFuture.await();

В этом смысле фьючерсы Ржавчины ленивы – они не исполняются, пока вы их не дождетесь. Утверждается, что async-await хорошо интегрируется в систему “заимствования”, и именно так Rust разделяет объекты между владельцами.

С принятием асинхронного подхода к асинхронному программированию Rust снова подчеркивает тот факт, что он пытается стать современным языком. Это может быть язык, который имеет много общего с Mozilla, но Microsoft, похоже, стремится дать ему справедливое испытание, обнаружив, что большинство ошибок, с которыми им приходится иметь дело, связаны с ошибками выделения памяти. Вы должны очень постараться в Rust, чтобы создать такую ошибку, и, следовательно, это хорошая замена для C++.

Адам Берч, инженер-программист, команда Hyper-V пишет:

Этот блог описывает часть истории принятия Rust в Microsoft. Недавно мне было поручено экспериментально переписать низкоуровневый системный компонент кодовой базы Windows (извините, мы пока не можем сказать, какой именно). Вместо того, чтобы переписывать код на C++, меня попросили использовать Rust, безопасную для памяти альтернативу. Хотя проект еще не завершен, я могу сказать, что мой опыт работы с Rust был в целом положительным. Это хороший выбор для тех, кто хочет избежать распространенных ошибок, которые часто приводят к уязвимостям безопасности в кодовых базах C++.

Единственными реальными негативными моментами являются упущения:

Учитывая относительную молодость Руста, все еще есть некоторые недостающие языковые особенности, которые были бы очень желательны для нашего развития. Прежде всего, это безопасная трансмутация (безопасное приведение типов “простых старых данных” к необработанным байтам и из них), безопасная поддержка объединений в стиле C и ошибочное распределение (изящно отказать из-за сбоя распределения, а не паники).

Есть также некоторые недостатки в способностях модульного тестирования груза Rust.

Будет интересно посмотреть, как Rust будет развиваться в долгосрочной перспективе в качестве альтернативы C++, который глубоко укоренился в Microsoft, поскольку именно на нем написана большая часть Windows.


Добавить комментарий