Официальный логотип Rust | |
Парадигмы | Мультипарадигма : параллельная , функциональная , общая , императивная , структурированная |
---|---|
Разработано | Грейдон Хоар |
Впервые появился | 7 июля 2010 г . |
Стабильный выпуск | 1.50.0 [1] / 11 февраля 2021 г . |
Печатная дисциплина | Аффинный , предполагаемый , номинальный , статический , сильный |
Язык реализации | Ржавчина |
Платформа | ARM , IA-32 , x86-64 , MIPS , PowerPC , SPARC , RISC-V , WebAssembly [2] [3] |
Операционные системы | Linux , macOS , Windows , FreeBSD , OpenBSD , [4] Redox , Android , iOS [5] |
Лицензия | MIT или Apache 2.0 [6] |
Расширения имени файла | .rs, .rlib (файл метаданных) |
Интернет сайт | www |
Под влиянием | |
Alef , [7] C # , [7] C ++ , [7] Cyclone , [7] [8] Erlang , [7] Haskell , [7] Limbo , [7] Newsqueak , [7] OCaml , [7] Ruby , [7] Схема , [7] Стандартный ML , [7] Swift [7] [9] | |
Под влиянием | |
Кристалл , Вяз , [10] Идрис , [11] Спарк , [12] Свифт , [13] Проект Верона , [14] Зиг |
Rust - это многопарадигмальный язык программирования, разработанный для обеспечения производительности и безопасности , особенно безопасного параллелизма . [15] [16] Rust синтаксически похож на C ++ , [17], но может гарантировать безопасность памяти , используя средство проверки заимствований для проверки ссылок . [18] Rust обеспечивает безопасность памяти без сборки мусора , а подсчет ссылок не является обязательным. [19] [20]
Первоначально Rust был разработан Грейдоном Хоаром из Mozilla Research при участии Дэйва Хермана, Брендана Эйха и других. [21] [22] Разработчики усовершенствовали язык при написании макета сервопривода или движка браузера , [23] и компилятора Rust . Он получил все большее распространение в промышленности, и Microsoft экспериментирует с языком для безопасных и критически важных для безопасности программных компонентов. [24] [25]
Rust был признан «самым любимым языком программирования» в опросе разработчиков Stack Overflow ежегодно с 2016 года. [26]
История [ править ]
Этот язык вырос из личного проекта, начатого в 2006 году сотрудником Mozilla Грейдоном Хоаром [16], который заявил, что проект, возможно, был назван в честь семейства грибов ржавчины . [28] Mozilla начал спонсировать проект в 2009 году [16] и объявил его в 2010 году [29] [30] В том же году, работа перешла от первоначального компилятора (написано в OCaml ) в LLVM - самостоятельной хостинг компилятора написан в Rust. [31] Названный rustc , он успешно скомпилировался в 2011 году. [32]
Первый пронумерованный пре-альфа-выпуск компилятора Rust состоялся в январе 2012 года. [33] Rust 1.0, первый стабильный выпуск, был выпущен 15 мая 2015 года. [34] [35] После 1.0 стабильные промежуточные выпуски поставляются каждые шесть недель, в то время как функции разрабатываются в ночном Rust, а затем тестируются с бета-версиями, которые длятся шесть недель. [36]
Помимо стандартной статической типизации , до версии 0.4 Rust также поддерживал состояния типов . Система typestate смоделировала утверждения до и после программных операторов с помощью специального check
оператора. Несоответствия можно было обнаружить во время компиляции, а не во время работы программы, как это может быть в случае утверждений в коде C или C ++. Концепция состояния типов не была уникальной для Rust, поскольку она впервые была представлена на языке NIL . [37] Типовые состояния были удалены, потому что на практике они мало использовались, [38] хотя та же функция может быть достигнута за счет использования семантики перемещения Rust. [39]
Стиль объектной системы значительно изменился в версиях 0.2, 0.3 и 0.4 Rust. Версия 0.2 впервые представила классы, а версия 0.3 добавила несколько функций, включая деструкторы и полиморфизм за счет использования интерфейсов. В Rust 0.4 черты были добавлены как средство обеспечения наследования; интерфейсы были объединены с трейтами и удалены как отдельная функция. Классы также были удалены, заменены комбинацией реализаций и структурированных типов. [ необходима цитата ]
Начиная с Rust 0.9 и заканчивая Rust 0.11, Rust имел два встроенных типа указателей: ~
и @
, упрощая модель основной памяти. Он повторно реализовал эти типы указателей в стандартной библиотеке как Box
и (теперь они удалены) Gc
.
В январе 2014 года, перед первым стабильным выпуском Rust 1.0, главный редактор Dr Dobb's Эндрю Бинсток прокомментировал шансы Rust стать конкурентом C ++ и других перспективных языков D , Go , и Ним (затем Нимрод). По словам Бинстока, хотя Rust «широко рассматривался как удивительно элегантный язык», его внедрение замедлилось, поскольку он постоянно менялся между версиями. [40]
Rust имеет интерфейс внешних функций (FFI), который может быть вызван, например, из языка C, и может вызывать C, в то время как вызов C ++ исторически был проблематичным (из любого языка). В Rust есть библиотека CXX, позволяющая вызывать C ++ или из него, и «CXX имеет нулевые или незначительные накладные расходы». [41]
В августе 2020 года Mozilla уволила 250 из 1000 своих сотрудников по всему миру в рамках корпоративной реструктуризации, вызванной долгосрочным воздействием пандемии COVID-19 . [42] [43] Среди уволенных была большая часть команды Rust, [44] а команда Servo была полностью расформирована. [45] Это событие вызвало опасения по поводу будущего Rust. [46]
На следующей неделе команда ядра Rust признала серьезные последствия увольнений и объявила, что планы по созданию фонда Rust находятся в стадии реализации. Первой целью фонда было бы стать владельцем всех товарных знаков и доменных имен, а также взять на себя финансовую ответственность за их расходы. [47]
8 февраля 2021 года пять компаний-учредителей ( AWS , Huawei , Google , Microsoft и Mozilla) официально объявили о создании Rust Foundation . [48] [49]
Синтаксис [ править ]
Вот простое "Hello, World!" программа написана на Rust. println!
Макрос выводит сообщение на стандартный вывод .
fn main () { println ! ( «Привет, мир!» );}
Конкретный синтаксис ржавчины похож на C и C ++ , с блоками кода , ограниченным фигурными скобками , и управление потоком ключевыми слов , таким как if
, else
, while
, и for
, хотя конкретный синтаксис для определения функций больше похож на Pascal . Однако не все ключевые слова C или C ++ реализованы, и некоторые функции Rust (например, использование ключевого слова match
для сопоставления с образцом ) будут менее знакомы тем, кто разбирается в этих языках. Несмотря на внешнее сходство с C и C ++, синтаксис Rust в более глубоком смысле ближе к синтаксису семейства языков ML иЯзык Haskell . Почти каждая часть тела функции является выражением , [50] операторы потока даже управления. Например, обычное if
выражение также заменяет тернарное условное выражение языка Си , идиому, используемую АЛГОЛ-60 . Как и в Лиспе , функция не обязательно должна заканчиваться return
выражением: в этом случае, если точка с запятой опущена, последнее выражение в функции создает возвращаемое значение , как показано в следующей рекурсивной реализации факториальной функции:
fn факториал ( i : u64 ) -> u64 { match i { 0 => 1 , n => n * факториал ( n - 1 ) }}
Следующая итеративная реализация использует ..=
оператор для создания включающего диапазона:
fn факториал ( i : u64 ) -> u64 { ( 2 .. = я ). продукт ()}
Особенности [ править ]
Ржавчина предназначена быть языком для очень одновременно и очень безопасных систем , [51] и программирование в целом , то есть создание и поддержание границ , которые сохраняют целостность большой системы. [52] Это привело к набору функций с упором на безопасность, контроль структуры памяти и параллелизм .
Безопасность памяти [ править ]
Rust разработан для обеспечения безопасности памяти и не допускает нулевых указателей , висячих указателей или гонок данных в безопасном коде. [53] [54] [55] Значения данных могут быть инициализированы только с помощью фиксированного набора форм, каждая из которых требует, чтобы их входные данные были уже инициализированы. [56] Чтобы воспроизвести функцию на других языках указателей, которые либо действительны, либо NULL
, например, в связанных списках или структурах данных двоичного дерева , основная библиотека Rust предоставляет тип параметра , который можно использовать для проверки того, имеет ли указатель значение или . [54]Some
None
Rust также вводит дополнительный синтаксис для управления временем жизни , и компилятор решает это с помощью своей программы проверки заимствований . Небезопасный код, который может нарушить некоторые из этих ограничений, может быть написан с использованием unsafe
ключевого слова языка . [18]
Управление памятью [ править ]
Rust не использует автоматизированную систему сбора мусора . Вместо этого память и другие ресурсы управляются посредством соглашения об инициализации ресурсов (RAII) [57] с дополнительным подсчетом ссылок . Rust обеспечивает детерминированное управление ресурсами с очень низкими накладными расходами . [ необходима цитата ] Rust также поддерживает распределение значений в стеке и не выполняет неявную упаковку .
Существует концепция ссылок (с использованием &
символа), которая не включает подсчет ссылок во время выполнения. Безопасность использования таких указателей проверяется во время компиляции средством проверки заимствований, предотвращая висячие указатели и другие формы неопределенного поведения . Кроме того, система типов Rust отделяет общие неизменяемые указатели формы &T
от уникальных изменяемых указателей формы &mut T
. Однако изменяемый указатель может быть приведен к неизменному указателю, но не наоборот.
Право собственности [ править ]
В Rust есть система владения, в которой у всех значений есть уникальный владелец, а объем значения такой же, как и у владельца. [58] [59] Значения могут передаваться по неизменяемой ссылке, с использованием &T
, по изменяемой ссылке, с использованием &mut T
или по значению с использованием T
. В любой момент может быть несколько неизменяемых ссылок или одна изменяемая ссылка (неявная блокировка чтения-записи ). Компилятор Rust применяет эти правила во время компиляции, а также проверяет правильность всех ссылок.
Типы и полиморфизм [ править ]
Система типов поддерживает механизм, аналогичный классам типов , называемый « чертами », вдохновленный непосредственно языком Haskell . Это средство для специального полиморфизма , достигаемого путем добавления ограничений к объявлениям переменных типа. Другие возможности Haskell, такие как высший полиморфизм , пока не поддерживаются.
В Rust есть функция вывода типа для переменных, объявленных с ключевым словом let
. Такие переменные не требуют первоначального присвоения значения для определения их типа. Ошибка времени компиляции возникает, если какая-либо ветвь кода оставляет переменную без присваивания. [60] Переменные, назначенные несколько раз, должны быть помечены ключевым словом mut
.
Функции могут иметь общие параметры , которые обычно требуют, чтобы универсальный тип реализовывал определенную черту или свойства. В такой функции общее значение можно использовать только через эти черты. Это означает, что типовая функция может быть проверена, как только она будет определена. Это контрастирует с шаблонами C ++ , которые по сути своей являются типизированными и не могут быть проверены, пока не будут созданы конкретные типы. Концепции C ++ решают ту же проблему и являются частью C ++ 20 , хотя они по-прежнему не позволяют компилятору C ++ проверять тип шаблона без конкретной реализации.
Однако реализация дженериков Rust аналогична типичной реализации шаблонов C ++: для каждого экземпляра создается отдельная копия кода. Это называется мономорфизацией и контрастирует со схемой стирания типов , обычно используемой в Java и Haskell. Стирание типов также доступно в Rust с помощью ключевого слова dyn
. Преимущество мономорфизации - это оптимизация кода для каждого конкретного случая использования; недостатком является увеличенное время компиляции и размер результирующих двоичных файлов.
Система объектов в Rust основана на реализациях, чертах и структурированных типах . Реализации выполняют роль, аналогичную роли классов в других языках, и определяются с помощью ключевого слова impl
. Наследование и полиморфизм обеспечиваются признаками; они позволяют определять методы и смешивать их с реализациями. Структурированные типы используются для определения полей. Реализации и признаки не могут определять сами поля, и только признаки могут обеспечивать наследование. Среди других преимуществ, это предотвращает проблемы с бриллиантом из множественного наследования, как в C ++. Другими словами, Rust поддерживает наследование интерфейсов, но заменяет наследование реализации композицией ; см. композицию над наследованием .
Производительность [ править ]
Производительность идиоматического Rust сравнима с производительностью идиоматического C ++. [61] [62]
Принятие [ править ]
Этот раздел имеет формат списка , но может читаться лучше как проза . Ноябрь 2020 г. ) ( |
Rust был третьим по популярности языком программирования в ежегодном опросе Stack Overflow 2015 года [63] и занял первое место в 2016–2020 годах. [64]
Веб-браузер [ править ]
Веб - браузер и несколько связанных с ним компонентов записываются в Русте. Firefox , [65] , например, состоят из двух проектов , написанных на Русте, включая Servo , с параллельным web - браузер двигателя [66] , разработанный Mozilla в сотрудничестве с Samsung [67] и Quantum , который состоит из нескольких субов проектов, для улучшения в Gecko web - браузер , двигатель , который также разработан Mozilla. [68]
Операционные системы [ править ]
Операционные системы и компоненты уровня ОС, написанные на Rust, включают:
- Редокс : микроядро [69]
- Stratis : менеджер файловой системы для Fedora [70] и RHEL 8 [71]
- Google Fuchsia : операционная система
Другое [ править ]
- exa : "современная замена ls "
- Microsoft Azure IoT Edge: платформа, используемая для запуска служб Azure и искусственного интеллекта на устройствах IoT, имеет компоненты, реализованные в Rust [72]
- OpenDNS : используется в двух своих компонентах [73] [74] [75]
- Tor : анонимная сеть , изначально написанная на C, экспериментирует с переносом на Rust для своих функций безопасности [76] [77]
- Deno : безопасная среда выполнения для JavaScript и TypeScript, созданная с помощью V8 , Rust и Tokio [78]
- Discord : сервис чата, ориентированный на геймеров, который использует Rust для части своей серверной части, а также для кодирования видео на стороне клиента [79]
- TerminusDB : база данных графов с открытым исходным кодом, предназначенная для совместного построения и управления графами знаний [80]
Развитие [ править ]
Конференции по Rust включают:
- RustConf: ежегодная конференция в Портленде, штат Орегон . Проводится ежегодно с 2016 г. (кроме 2020 г. из-за пандемии COVID-19 ). [81]
- Rust Belt Rust: конференция #rustlang в Rust Belt [82]
- RustFest: конференция @rustlang в Европе [83]
- РастКон Азия
- Rust LATAM
- Oxidise Global [84]
См. Также [ править ]
- Сравнение языков программирования
Ссылки [ править ]
- ^ "Объявление о Rust 1.50.0" . 11 февраля 2021 г.
- ^ «Поддержка платформы Rust» . Ржавая кузница . Проверено 19 мая 2019 .
- ^ «Часто задаваемые вопросы» . Ржавчина . Проверено 14 мая 2019 .
- ^ "Порты OpenBSD" . Проверено 3 апреля 2018 .
- ^ «Создание и развертывание библиотеки Rust на iOS» . 6 сентября 2017 . Проверено 11 января 2019 .
- ^ "Правовая политика Rust" . Rust-lang.org . Проверено 3 апреля 2018 .
- ^ a b c d e f g h i j k l m "Ссылка на Rust: Приложение: Влияния" . Проверено 11 ноября 2018 года .
- ^ «Примечание исследования: система типов» . 2015-02-01 . Проверено 25 марта 2015 .
- ^ "RFC для выражения 'if let'" . Проверено 4 декабря 2014 года .
- ^ "Оптимизация команд?" . 2014-06-26 . Проверено 10 декабря 2014 .
- ^ «Идрис - Типы уникальности» . Проверено 20 ноября 2018 .
- ^ Jaloyan, Georges-Axel (19 октября 2017). «Безопасные указатели в СПАРК 2014». arXiv : 1710.07047 . Bibcode : 2017arXiv171007047J . Цитировать журнал требует
|journal=
( помощь ) - ^ Латтнер, Крис. "Домашняя страница Криса Латтнера" . Nondot.org . Проверено 14 мая 2019 .
- ^ «Microsoft открывает вдохновленный Rust язык программирования Project Verona на GitHub» . Проверено 17 января 2020 .
- ^ Хора, Грейдон (2016-12-28). «Ржавчина - это в первую очередь безопасность» . Грейдон2 . Dreamwidth Studios . Проверено 13 мая 2019 .
- ^ a b c "FAQ - Проект Rust" . Rust-lang.org . Архивировано из оригинала на 2016-06-09 . Проверено 27 июня 2019 .
- ^ «Сравнение Rust и C ++» . Проверено 20 ноября 2018 года .
- ^ a b «Небезопасная ржавчина» . Проверено 17 октября 2020 .
- ^ «Бесстрашная безопасность: безопасность памяти» . Проверено 4 ноября 2020 года .
- ^ "Rc <T>, умный указатель с подсчетом ссылок" . Проверено 4 ноября 2020 года .
- ^ Ноэль (2010-07-08). «Ржавый язык» . Лямбда Окончательный . Проверено 30 октября 2010 .
- ^ "Авторы ржавчины / ржавчины" . GitHub . Проверено 12 октября 2018 .
- ^ Брайт, Питер (2013-04-03). «Samsung объединяется с Mozilla для создания движка браузера для многоядерных машин» . Ars Technica . Проверено 4 апреля 2013 .
- ^ "Почему Rust для безопасного системного программирования" . Проверено 22 июля 2019 .
- ^ «Как Microsoft принимает Rust» . Проверено 7 августа 2020 .
- ^ https://insights.stackoverflow.com/survey/2020#most-loved-dreaded-and-wanted
- ^ "Начало работы" . rust-lang.org . Дата обращения 11 октября 2020 .
- ^ Хора, Грейдон (2014-06-07). «Интернет-археология: окончательный источник того, почему Rust назван« Rust » » . Reddit.com . Проверено 3 ноября 2016 .
- ^ «Будущее время» . 2011-04-29 . Проверено 6 февраля 2012 .
- ^ Хор, Грейдон (7 июля 2010). Сервопривод проекта (PDF) . Ежегодный саммит Mozilla 2010. Уистлер, Канада . Проверено 22 февраля 2017 года .
- ^ Хоар, Грейдон (2010-10-02). «Ржавчина Прогресс» . Архивировано из оригинала на 2014-08-15 . Проверено 30 октября 2010 .
- ^ Хора, Грейдон (2011-04-20). "[rust-dev] stage1 / rustc builds" . Проверено 20 апреля 2011 .
- ^ катаморфизм (2012-01-20). «Mozilla и сообщество Rust выпускают Rust 0.1 (строго типизированный язык системного программирования с упором на безопасность памяти и параллелизм)» . Проверено 6 февраля 2012 .
- ^ "История версий" . Проверено 1 января 2017 .
- ↑ The Rust Core Team (15 мая 2015 г.). «Анонсируем Rust 1.0» . Проверено 11 декабря 2015 .
- ^ «Планирование поездов» . Проверено 1 января 2017 .
- ^ Стром, Роберт Э .; Йемини, Шаула (1986). «Typestate: концепция языка программирования для повышения надежности программного обеспечения» (PDF) . IEEE Transactions по разработке программного обеспечения : 157–171. DOI : 10.1109 / TSE.1986.6312929 . ISSN 0098-5589 . S2CID 15575346 . Проверено 14 ноября 2010 .
- ↑ Уолтон, Патрик (26 декабря 2012). "Typestate мертв, да здравствует Typestate!" . GitHub . Проверено 3 ноября 2016 .
- ^ Biffle, Клифф (2019-06-05). "Типичный образец состояния в ржавчине" . Проверено 1 февраля 2021 .
- ^ Бинсток, Эндрю. «Взлет и падение языков в 2013 году» . Доктора Добба .
- ^ «Безопасное взаимодействие между Rust и C ++ с CXX» . InfoQ . 2020-12-06 . Проверено 2021 января .
- ^ Cimpanu, Каталин (2020-08-11). «Mozilla увольняет 250 сотрудников, в то время как она переориентируется на коммерческие продукты» . ZDNet . Проверено 2 декабря 2020 .
- ^ Купер, Дэниел (2020-08-11). «Mozilla уволила 250 сотрудников из-за пандемии» . Engadget . Проверено 2 декабря 2020 .
- ^ @tschneidereit (12.08.2020). «Большая часть команды, которой я управлял, была частью увольнения Mozilla во вторник. Эта команда была командой Mozilla Rust и командой Mozilla Wasmtime. Я думал, что знаю, как говорить об этом сейчас, но не знаю. Это душераздирающе, непонятно и ошеломляюще по своему воздействию » (твит) . Проверено 2 декабря 2020 г. - через Twitter .
- ^ @asajeffrey (11.08.2020). «Mozilla закрывает команду, в которой я работаю, поэтому я один из многих людей, которые сейчас задаются вопросом, каким будет следующий концерт. Это была дикая поездка!» (Твитнуть) . Проверено 2 декабря 2020 г. - через Twitter .
- ^ Колаковски, Ник (2020-08-27). "Проблемы с Rust после массовых увольнений Mozilla?" . Кости . Проверено 2 декабря 2020 .
- ^ "Закладывая фундамент для будущего Rust" . Блог Rust . 2020-08-18 . Проверено 2 декабря 2020 .
- ^ "Фонд Ржавчины" . Foundation.rust-lang.org . 2021-02-08 . Проверено 9 февраля 2021 .
- ^ «Mozilla приветствует Rust Foundation» . Блог Mozilla . 2021-02-09 . Проверено 9 февраля 2021 .
- ^ "rust / src / grammar / parser-lalr.y" . 2017-05-23 . Проверено 23 мая 2017 .
- ^ Аврам, Авель (2012-08-03). «Интервью о Rust, языке системного программирования, разработанном Mozilla» . InfoQ . Проверено 17 августа 2013 .
- ^ "Описание пакета Debian: rustc" .
- ^ Розенблат, Сет (2013-04-03). «Samsung присоединяется к поискам Rust Mozilla» . Проверено 5 апреля 2013 .
- ^ a b Браун, Нил (2013-04-17). «Вкус ржавчины» . Проверено 25 апреля 2013 .
- ^ «Гонки за данные и условия гонки» .
- ^ "Часто задаваемые вопросы о языке Rust" . static.rust-lang.org . 2015. Архивировано из оригинала на 2015-04-20 . Проверено 24 апреля 2017 .
- ^ "RAII - Rust By Example" . doc.rust-lang.org . Проверено 22 ноября 2020 .
- ^ Клабник, Стив; Николс, Кэрол (июнь 2018). «Глава 4: Понимание собственности». Язык программирования Rust . Сан-Франциско, Калифорния: Пресса без крахмала. п. 44. ISBN 978-1-593-27828-1. Проверено 14 мая 2019 .
- ^ «Язык программирования Rust: что такое право собственности» . Rust-lang.org . Проверено 14 мая 2019 .
- ^ Уолтон, Патрик (01.10.2010). «Особенности Rust I: Вывод типов» . Проверено 21 января 2011 .
- ^ Уолтон, Патрик (05.12.2010). «Цели проектирования C ++ в контексте Rust» . Проверено 21 января 2011 .
- ^ "Насколько быстро ржавчина?" . Часто задаваемые вопросы по языку программирования Rust . Проверено 11 апреля 2019 года .
- ^ «Опрос разработчиков Stack Overflow 2015» . Stackoverflow.com . Проверено 3 ноября 2016 .
- ^ https://insights.stackoverflow.com/survey/2019
- ^ Герман, Дэйв (2016-07-12). «Доставка Rust в Firefox * Mozilla Hacks: блог веб-разработчиков» . Hacks.mozilla.org . Проверено 3 ноября 2016 .
- ^ Yegulalp, Сердар (2015-04-03). «Сервер Mozilla на базе Rust движется вперед» . InfoWorld . Проверено 15 марта 2016 .
- ^ Lardinois, Фредерик (2015-04-03). «Mozilla и Samsung объединились для разработки Servo, браузера нового поколения Mozilla для многоядерных процессоров» . TechCrunch .
- Рианна Брайант, Дэвид (27 октября 2016 г.). «Квантовый скачок в Интернете» . Средний . Проверено 27 октября 2016 года .
- ^ Yegulalp, Сердар. «Redox OS Rust может показать Linux несколько новых трюков» . информационный мир . Проверено 21 марта 2016 .
- ↑ Сей, Марк (10 октября 2018 г.). «Новые возможности Fedora 29: Startis теперь официально в Fedora» . Marksei, Еженедельные таблетки сисадмина . Проверено 13 мая 2019 .
- ^ «RHEL 8: Глава 8. Управление многоуровневым локальным хранилищем с помощью Stratis» . 10 октября 2018.
- ↑ Николс, Шон (27 июня 2018 г.). «Следующая уловка Microsoft - выбросить все из облака в Azure IoT Edge» . Реестр . Проверено 27 сентября 2019 .
- ^ Balbaert, Иво (27 мая 2015). Основы Rust . Packt Publishing. п. 6. ISBN 978-1785285769. Проверено 21 марта 2016 .
- ↑ Франк, Денис (5 декабря 2013 г.). «Использование HyperLogLog для обнаружения вредоносных программ быстрее, чем когда-либо» . Лаборатории безопасности OpenDNS . Проверено 19 марта 2016 .
- ↑ Денис, Франк (4 октября 2013 г.). «ZeroMQ: Помогает нам блокировать вредоносные домены в реальном времени» . Лаборатории безопасности OpenDNS . Проверено 19 марта 2016 .
- ↑ Хан, Себастьян (31 марта 2017). «[tor-dev] Tor на более безопасном языке: обновление сетевой команды из Амстердама» . Проверено 1 апреля 2017 .
- ^ asn (2017-07-05). "Уилмингтонские часы: хакфест команды Tor Network" . Блог Tor . Проверено 3 января 2018 .
- ^ Garbutt, Джеймс (27 января 2019). «Первые мысли о Deno, среде выполнения JavaScript / TypeScript» . 43081j.com . Проверено 27 сентября 2019 .
- ^ Ховарт, Джесси (2020-02-04). «Почему Discord переходит с Go на Rust» . Проверено 14 апреля 2020 .
- ^ terminusdb / terminusdb-store , TerminusDB, 2020-12-14 , получено 14.12.2020
- ^ "RustConf" .
- ^ Ржавчина Пояс Ржавчина . Дейтон, Огайо. 2019-10-18 . Проверено 14 мая 2019 .
- ^ RustFest . Барселона, Испания: asquera Event UG. 2019 . Проверено 14 мая 2019 .
- ^ "Oxidize Global" . Oxidize Берлинская конференция . Проверено 1 февраля 2021 .
Внешние ссылки [ править ]
- Официальный веб-сайт
- Rust-lang на GitHub