У Microsoft одна из крупнейших в мире кодовых баз C / C ++. На нем работают все основные продукты от Windows и Office до облака Azure. Неудивительно, что, поскольку C ++ не является безопасным для памяти языком, в их кодовой базе всплывает много ошибок памяти, и на их исправление нужно потратить много времени. В прошлом году Microsoft начала искать альтернативные языки программирования, которые могли бы помочь решить их проблемы с безопасностью памяти. В результате этих поисков Microsoft начала экспериментировать и в некоторых случаях интегрировать Rust в свою кодовую базу. Rust - относительно новый язык программирования, который обещает такую ​​же низкоуровневую производительность, как C и C ++, с набором функций, ожидаемым от современного языка программирования. Microsoft считает, что у Rust есть потенциал, и вот как они интегрируют его в свои продукты.

Переписывание Windows на Rust

Хорошо, они пока не переписывают всю Windows на Rust; но они заинтересованы в том, чтобы увидеть, как Rust впишется в его экосистему. Microsoft определила, что 70% исправлений безопасности, устанавливаемых на компьютеры, предназначены для исправления ошибок, связанных с памятью, и полагает, что Rust смог бы отловить эти ошибки на этапе разработки. В результате они поручили некоторым инженерам переписать некоторые компоненты Windows на Rust, чтобы понять мнение разработчиков.

К сожалению, Microsoft сохранила название переписываемых компонентов в секрете, однако один инженер описал, что он работал над «низкоуровневой системой Windows». Это показывает веру Microsoft в потенциал Rust. Они не просто хотят переписать некоторые свои небольшие службы или собственные приложения для Windows, но, возможно, хотят переписать основные компоненты операционной системы.

Инженеры описали свою работу с Rust как «в целом положительную», но отметили, что некоторые важные функции, доступные в C, отсутствуют в Rust. Однако инженеры считают, что стоит помочь в разработке таких функций для Rust. Intel уже начала работу по приведению Rust в соответствие с функциями C, и Microsoft могла бы присоединиться к ним в этой работе. Поскольку некоторые функции C отсутствуют в Rust, команда обнаружила, что Rust лучше всего подходит для новых или недавно разработанных компонентов Windows. Не было бы ничего удивительного, если бы Microsoft полностью посвятила себя миграции части своей кодовой базы на Rust. Они уже создают стандартную библиотеку Windows для Rust, которая будет иметь все возможности версии C ++. Linux также рассматривает возможность переноса некоторых из своих ядер на Rust, поэтому я не был бы шокирован, если бы между двумя операционными системами возникла гонка за то, какая из них может первой запустить код Rust в производство.

Включение Rust в службы Azure

DeisLabs, один из инкубаторов Azure, специализируется на создании инструментов для Kubernetes и недавно выбрал Rust для создания своего нового продукта Krustlet, сервиса, который позволяет разработчикам запускать несколько модулей WebAssembly в Kubernetes. Kubernetes был разработан Google и написан на Go. В результате большинство инженеров склонны придерживаться Go при написании своих компонентов Kubernetes, поэтому довольно удивительно, что DeisLabs выбрала Rust.

В конце концов, решение, казалось, окупилось. Хотя сотрудники действительно отметили, что переход на Rust был трудным - отмечая уникальность философии владения Rust, - команде потребовался всего месяц, чтобы вернуться к полной эффективности. Они обнаружили, что пишут меньше тестов для нулевых значений и меньше отлаживают проблемы. Инженеров также впечатлил компилятор Rust, который, как они утверждают, мог бы выявить недостатки безопасности, обнаруженные в другом из их проектов, которые компилятору Go не удалось обнаружить. Они пришли к выводу, что большему количеству команд следует подумать о работе с Rust в будущем и что он может быть лучше подходит для разработки Kubernetes, чем Go.

Новый язык программирования

Некоторое время назад Microsoft исследовала создание своего языка программирования, вдохновленного Rust. Один из руководителей проекта является основным разработчиком C #, поэтому кажется вероятным, что этот язык является версией Rust с синтаксисом, более похожим на C-семейство языков программирования. Этот язык, получивший название Project Verona, предназначен для устранения связанных с памятью ошибок в системном программировании. Некоторые предполагают, что Project Verona со временем может найти свое применение во многих основных продуктах Microsoft, таких как Windows, Xbox и Azure.

В конце концов, у Microsoft по-прежнему нет вариантов использования Project Verona. Они действительно утверждают, что язык уже «полностью безопасен для памяти». Однако Microsoft по-прежнему выступает за использование Rust. У него уже есть сообщество и поддержка таких компаний, как Mozilla и Intel. Объединив усилия с этими компаниями, Rust станет намного мощнее и быстрее.

У Rust очень светлое будущее. Благодаря поддержке крупных компаний и растущему сообществу у него очень многообещающее будущее. Было бы неудивительно услышать в ближайшие пару месяцев о различных способах, которыми Microsoft планирует включить Rust в свою компанию. Rust также хорошо оптимизирован для микроконтроллеров и устройств IoT, и мы можем ожидать услышать примеры использования, которые компании в этих областях нашли для Rust.