на каком языке написана игра rust

История RUST //История разработки // как все начиналось?

Сегодня мне хотелось бы рассказать вам историю одной замечательной многопользовательской игры в жанре Survival/Sandbox. Которая была придумана из-за спора двух друзей — геймеров, а в будущем коллег и основателей компании FacePunch. История игры, которую все в одно время хейтили, а в другое любили. Историю разработчиков, которые не опускали руки и шли к своей цели. Интересно? Ну тогда погнали)

на каком языке написана игра rust. Смотреть фото на каком языке написана игра rust. Смотреть картинку на каком языке написана игра rust. Картинка про на каком языке написана игра rust. Фото на каком языке написана игра rust

Rust — это многопользовательская игра в жанре Survival/Sandbox. Разработка была запущена британской независимой студией FacepunchStudios в 2013 году.

Непосредственными авторами и создателями игры являются: Гарри Ньюман — основатель и владелец студии FacePunch, более известен по своему проекту Garry’sMod. И Маурино Берри — близкий друг Гарри.

Релиз состоялся в Steam: 11 декабря 2013 года.

Началось все с того, что в 2013 году разработчики проводили много времени играя в DayZ. Именно во время игры в неё Маурино сказал Гарри, что сможет сделать более лучшую «версию» этой игры. Гарри не стал возражать, после чего буквально за 6 месяцев они получили первый рабочий прототип игры. В большинстве своём игра была сделана кустарно, код писался на коленке, многие модели элементов (оружие, животные) были куплены в магазине Unityassetstore, а те модели что небыли куплены — сделаны на скорую руку. В то время игра буквально состояла из недочётов, багов и «дыр» как в геймплее, так и в коде, однако уже тогда игра имела свою любящую немногочисленную аудиторию.
Изначально игра открыто позиционировалась как клон DayZ, но постепенно она отдалялась от своего «корня» и в конечном итоге стала уникальным и самодостаточным проектом.

Первый прототип игры был браузерным, люди играли в него используя UnityWebPlayer. Продавали игру ключами через старый официальный сайт old.playrust.com (ныне отключен). С ростом числа аудитории, разработчики выпустили клиент игры, что так или иначе говорило о проектном росте.
Со временем игра очень сильно преобразилась. 1 ноября 2013 года разработчики подняли новый сайт — playrust.com, после чего все логи обновлений и новости публиковались уже там.

Пара слов о ранних порах игры:

Мало кто знает, но раньше металл плавили в кострах, отображение одежды на персонажах отсутствовало — даже без одежды персонаж выглядел как солдат в военной форме.

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

Стоит упомянуть, twitch.tv и youtube.com поспособствовали огромному приливу аудитории, стриммеров и летсплееров по игре становилось всё больше и больше, и как следствие число купивших игру росло.
Однако так называемый «стартовый пак» аудитории пришёл от Гарри Ньюмана, который уже тогда имел популярность за счёт своего проекта Garry’smod.
Небольшое примечание: тогда игр в подобном жанре было очень мало, исключая DayZ и DayZmod на базе Армы, единственное что приходило на ум — майнкрафт. Именно успех Rust воодушевил множество геймдевов разрабатывать игры в жанре «Песочница-выживание».

Релиз Rust в Steam состоялся 11 декабря 2013 года, до этого момента игра распространялась только через официальный сайт. Когда разработчики добавили игру в магазин Steam, они не рассчитывали на огромный прирост аудитории, ведь основной костяк уже давно играл и ничего сверхъестественного в игру добавлено не было. Но внезапно, на старте продаж в Steam, Rust буквально за 2 недели купили 150 000 человек, позже число покупателей увеличилось до 500 000.

А по прошествии 2-х месяцев было продано 1 миллион копий игры.
21 февраля 2014 года (через 2 месяца после релиза) Rust заработал своим создателям 40% от общей прибыли Garry’sMod за 9 лет продаж (примерно 20+ миллионов долларов), а продажи только продолжали расти. Без комментариев.
Это стало прецедентом, игра в состоянии EarlyAccess (ранний доступ), сделанная мягко говоря как попало, полностью обеспечивает себя и студию, гарантируя финансовую независимость себе и будущим проектам студии.
Кстати говоря, именно в феврале 2014 года Rust был на пике своей популярности, рекорд онлайна — 58 973 человека одновременно. Представляете масштаб происходящих тогда событий?
В январе 2014 года Rust стал самой продаваемой игрой на платформе Steam и держался на этой позиции довольно долго.
Все были в состоянии недоумения, «КАК ТАК?» Логично, люди пишут бизнес-планы, подключают спонсоров, набирают команды разработчиков по 20 человек, работают годами. А тут 2 парня за 7-8 месяцев сделав «это» получают результат, к которому многие идут десятилетиями (например сам Гарри Ньюман со своим Garry’smod).

Всё было грустно и весело одновременно, разработчики открыто заявляли — они не готовы к такому результату. Как говорил сам Гарри, план был таков: запускаем продажи, набираем 20-30 тыс. игроков и тихим сапом разрабатываем игру в течении нескольких лет, постепенно наращивая аудиторию (как и было с Garry’smod). Но тут случилось непредвиденное экономическое «чудо».
Каково это? Хорошо ли получить золотую медаль на старте марафона? На самом деле разработчики не сильно радовались, помимо прибыли они получили огромный груз ответственности и о планах «Медленно, но верно» можно было забыть, надо было срочно что-то думать и делать.

Чем же игра являлась тогда?

После релиза разработчики активно начали переделывать косметическую составляющую игры: новое небо, трава, также были потуги добавить на карту реки и озёра.
Кроме того они пытались вносить изменения и в геймплей: револьвер, кровати, решётки на окна, «прочность предметов» и возможность их починки.
В конечном счёте разработчики начали строить планы по отходу от жанра «Зомби-выживание», первым шагом стало удаление из игры этих самых зомби и добавление вместо них «красных» волков и медведей, которые по факту были такими же зомби. Сделали это для того, что бы игру перестали сравнивать с другими играми с «зомби и пушками», ведь раст был не таким. Зомби в Rust, как таковые не играли никакой роли в геймплее, в отличии от других «подобных» игр. Сам Гарри писал, что «красные животные» лишь временная мера, «В будущем всё будет ребят» говорил он вкратце.

Даже запустил эпичный опрос с вариантами того, что игроки хотели бы видеть в качестве NPC. Чего там только не было, и роботы, и динозавры, и магические существа.

Казалось, что осталось совсем чуть-чуть и игра начнёт преображаться быстро и стремительно и ведь тогда всё только об этом и говорило…

Но там где есть бочка мёда, обязательно найдётся пару ложек дёгтя, которые испортят всю бочку без остатка.

1. Читы, создатели которых получили хороший стимул для работы. Фактически Rust для них стал золотой жилой, игра была не качественная, код был кривой, движок был уязвимый, защиты от читов окромя VAC не было совсем. Ну и тут понеслось. Видов читов было столько, что их даже все и не перечислишь, «за ваши деньги любой каприз» как говорится. Разработчики приняли бой и начали войну с читерами, которая почти сразу закончилась безоговорочной капитуляцией разработчиков.
Цитата Гарри Ньюмана:

Мы хотим создавать игру, а не античит для игры.

Несмотря на постоянные баны — все сервера так или иначе были с читерами (в том числе официальные), несмотря на множество способов их обнаружения — умелые чито-делы придумывали новые способы обхода защиты.
Тогда найти сервер без читеров было невозможно и, даже если вы таковой найдёте, не было гарантии, что сейчас не зайдёт читер с ноклипом и не заруинит десяток другой домов, включая ваш. Однако, главной проблемой разработки игры были не читеры.

2. Игра, точнее её код, который был очень плох. Попытавшись продолжить разработку на старом коде, разработчики поняли, что он ни на что не годен, по словам разработчиков, с таким кодом двигаться дальше было невозможно. Гарри не стеснялся в выражениях называя его говно-кодом. Исправляя баг — получали два, устраняя 1 эксплойт, всплывало ещё три, процесс разработки напоминал «сизифов труд», мало того что проблемы не уходили, так ещё и времени на работу уходило несоизмеримо больше, чем требовалось + никакого удовольствия от процесса, всё это так или иначе привело к «перезапуску», который нам с вами известен как текущая — стабильная версия игры.

После долгих мучений разработчиками было принято решение полностью перезапустить игру, и начать делать её с нуля. Основой для новой версии стала экспериментальная ветвь (Experimentalbranch), которая изначально предназначалась для «экспериментов» с игровой механикой.
Началось всё естественно с написания нового кода. Выглядело это примерно так:

И это ещё не самая первая версия, в самой первой вообще ничего не было кроме стартового кита с топором и квадратного острова.

В то время Legacy версия продолжала функционировать и многие даже понятия не имели, что разработку их любимого старого Rust’а остановили и приступили к созданию нового.
Будущее выглядело мутным, команда разработчиков не росла в числе, для наблюдателей всё двигалось медленно и казалось, что в ближайшие 3 года игру можно не ждать, с чего собственно и поднимались восстания в разделе отзывов Steam «верните деньги!».
Конечно подобные отзывы писали люди не просвещённые, перед тем как покупать игру с пометкой «Ранний доступ», надо знать, что игра может выходить в бету и релиз ещё очень долго (а в некоторых случаях не выйти вообще).
Во всём случившемся был один и единственный плюс — свобода действий разработчиков и огромное пространство для творчества, чем разработчики и воспользовались начав экспериментировать с геймплеем игры.
Для начала решили добавить вид от 3-го лица, как выяснилось «просто посмотреть» (позже его убрали), также решили сделать процедурно-сгенерированную карту — карта, которая будет генерироваться с помощью скриптов и алгоритмов, создавая на каждом сервере свою уникальную карту. Многие писали «Но ведь „машинная“ карта никогда не сможет стать лучше „ручной“, машина не сможет сделать действительно атмосферные пейзажи и создать поистине красивую карту» в чём-то они были правы, однако Андре показал, что правильно настроенная «машина» тоже немножко умеет в дизайн ландшафта. В конечном итоге разработчики всё-таки решили сделать образец карты вручную, но от процедурных карт не отказались. В финале разработчики обещали дать возможность любому серверу сделать свою собственную карту. Да и в принципе наладить работу Workshop’а со всеми вытекающими последствиями. Помимо этих нововведений, было добавлено ещё очень много всего, чем в Legacy и не пахло.

Во время работы над новой версией игры, разработчики изо дня в день подвергались травле со стороны сообщества, все твердили одно и тоже «Старый раст доделывайте! Нам там всё нравится, вот только пару багов исправьте и читеров уберите», объяснить им, что их просьбы были мягко говоря идиотскими было сложно, поэтому разработчики просто начали вести «Еженедельный блог разработки», в котором еженедельно отчитывались о проделанной работе. Самый первый был написан 28 марта 2014 года, в котором Гарри подробно описал, почему же ничего не обновляется в старой версии.

Из недели в неделю игра развивалась и результат работы есть, кто бы что не говорил.
Изучив Dev-блоги в хронологическом порядке — только глупец не заметит проектного роста и относительное ускорение разработки игры. Что уже говорить содержании блогов «тогда» и сейчас.

И вот, после не короткого рассказа мы можем сравнить две версии игры.
То какой раст мы видим сейчас, это долгий и насыщенный путь разработчиков, показывающий, что несмотря на хейт со стороны, своим желанием и упорством можно достичь небывалых высот. Но расслабляться разработчикам еще рано. К великому сожалению раст, как и любая другая популярная игра, имеет изъяны в виде читеров и макроссников.

Я надеюсь, что этот формат видео вам понравился и прошу вас оценить это видео лайком или дизлайком и конечно же перейти по ссылочки в описании на мой канал. Там много чего вкусненького и интересного.
Всем удачи и пока!)

Источник

Разработка игр на Rust. Обзор экосистемы

Здравствуйте! Я занимаюсь разработкой игры на Rust и хочу рассказать об этом.

Моя первая статья будет полезна тем, кто хочет начать делать игру на Rust, но не уверен, какие из пакетов (крейтов) стоит использовать и что вообще происходит в экосистеме Rust для игрового разработчика.

Небольшое отступление — зачем всё это? Есть же готовый X?

Под впечатлением вот этого выступления, я начал писать свой игровой движок на Haskell. Далеко дело не зашло, но я написал рендер моделек, простое освещение, немного сети.

Haskell дал возможность вынести контракты из проверок в рантайме на уровень системы типов. Ну и остальные вещи, о которых рассказывает Кармак — быть уверенным, что функция делает именно то, о чём декларирует в своём типе. Быть чуть ближе к настоящей формальной верификации нашего игрового кода — то есть, в теории, иметь гарантию корректной работы вообще без тестов.

Но, с Haskell было несколько проблем — для вывода 3д в реальном времени он достаточно медлителен. Не было сообщества занимающегося на нём играми. Не хватало нужных для игр библиотек.

С Rust же всё пошло куда веселее.

На мой взгляд, Rust сочетает все свойства, нужные игровым разработчикам, в очень правильном соотношении:

мощная, но при этом простая система типов;

абстракции бесплатны по перфомансу — не надо платить за те абстракции, которые не используешь в явном виде;

И при этом на нём очень просто писать код, язык маленький и простой.

Вернусь к экосистеме:

Работа с окнами:

Glutin — раст-альтернатива GLFW, используется в Servo, активно развивается. Создаёт окна на win/osx/linux/android. На ios еще не работает, кто-то хотел сделать, но с 2015 об этом желающем не слышно.

И есть биндинги к не-растовым библиотекам: glfw-rs rust-sdl2 rust-sfml (сайт). Все три живы и поддерживаются.

Графические API:

Есть возможность использовать напрямую OpenGL/DirectX/Vulkan, к тому же уже созданы растоспецифичные графические библиотеки.

Glium — безопасная обёртка над OpenGL, по факту — в основном над OpenGL 3, хорошо поддерживаются OpenGL

Источник

Rust или Си: кто Усэйн Болт в мире программирования?

на каком языке написана игра rust. Смотреть фото на каком языке написана игра rust. Смотреть картинку на каком языке написана игра rust. Картинка про на каком языке написана игра rust. Фото на каком языке написана игра rust

Си — это сэнсэй черепашек-ниндзя

Си — это императивный язык программирования общего назначения и один из старейших (создаваться он начал в 1969 году). Его отцом-основателем является Деннис Ритчи. В 1989 году Американский национальный институт стандартов и Международная организация по стандартизации разработали новые консенсусные стандарты для Си. Будучи простым, низкоуровневым языком программирования, который работает на различных платформах, он и сейчас остаётся универсальным и по-прежнему широко используется.

Бытовые приборы, такие как микроволновые печи, стиральные машины и цифровые фотокамеры, с каждым днём становятся всё более совершенными. Об этом свидетельствует наличие в них микропроцессора, операционной системы и программного обеспечения. Эти программы должны работать эффективно, задействуя при этом небольшой объём памяти. Неудивительно, что они пишутся на Си.

Основные части популярных операционных систем, таких как Windows, UNIX и Linux, написаны на Си. Ведь даже сегодня по производительности языку Си нет равных, хотя это не означает, что так будет всегда. Кроме того, если требуется расширить операционную систему для работы с новыми устройствами, нужны программы-драйверы устройств. И эти программы тоже пишутся исключительно на Си.

Язык Си оказывает огромное влияние на сферу информационных технологий и по-прежнему играет здесь жизненно важную роль.

Rust — потенциальный конкурент во всех областях

Rust — это мультипарадигмальный язык программирования с упором на производительность и безопасность, и особенно на безопасный параллелизм. С точки зрения синтаксиса Rust аналогичен языку C++. А что касается безопасности при работе с памятью, Rust обходится без сборки мусора: вместо неё здесь система проверки заимствования.

Разработка Rust была начата Грейдоном Хором в сообществе Mozilla Research.

В Rust основной акцент сделан на:

Безопасность при работе с памятью

Основное преимущество Rust: он гарантирует, что во время компиляции приложение будет избавлено от разыменования нулевых или висячих указателей. К тому же, Rust затрудняет возникновение утечки памяти.

Производительность

В языке Rust сборщик мусора не предусмотрен. Rust узнаёт о том, когда переменная выходит из области видимости или когда её время жизни заканчивается, во время компиляции. После чего вводит соответствующие команды ассемблера/LLVM для освобождения памяти. Это повышает производительность во время выполнения.

Многопоточность

Потоки в Rust автоматически «изолируются» друг от друга благодаря такому понятию, как владение. Запись происходит, только когда поток имеет изменяемый доступ — либо владея данными, либо имея изменяемое заимствование. В обоих случаях поток гарантированно будет единственным, имеющим доступ в любой момент времени.

Поддержка Web Assembly

Web Assembly помогает выполнять алгоритмы с большим объёмом вычислений в браузере, на встроенных устройствах или где-либо ещё. Он запускается со скоростью машинного кода. Rust компилируется в Web Assembly с целью быстрого и надежного выполнения.

Сравнение скорости Си и Rust

Методология

Для сравнения скорости этих двух языков применятся такой подход: пишутся самые популярные алгоритмы сортировки, которые запускаются для различных диапазонов элементов. При этом оценивается, у какого языка сортировка элементов заняла больше времени.

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

Колонки со сложностью в худшем случае (Worst Case) позволяют примерно определить, какой метод сортировки будет выполняться хуже всех.

Для сортировки пузырьком сложность в худшем случае составит O(N²). Это будет худшее выполнение по сравнению с другими методами сортировки. Будет сгенерирована итоговая матрица, которая поможет определить временную сложность в худшем случае. Для этого надо сравнить время, необходимое для сортировки элементов.

Таким образом пишутся все пять алгоритмов на Си и на Rust. Для цели ввода используется массив целых чисел, заполняемый случайными числами с помощью функции-генератора случайных чисел rand() на Си и rand::Rng на Rust. Этот массив задаётся в качестве входных данных для алгоритмов сортировки, а выходные данные записываются в матрицу. Дальше тестируется производительность алгоритмов для трёх диапазонов: 1000, 10 000 и 100 000 элементов.

Такой набор значений запускается в течение 100 итераций, а для генерации матрицы выходных данных выполняется усреднение.

Конфигурация для сравнения производительности

Конфигурация системы, в которой был запущен и выполнен подсчёт значений:

Машина: MacBook Pro (16 дюймов, 2019 года).

Процессор: 2,3 ГГц 8-ядерный Intel Core i9.

Память: 16 Гб 2667 МГц DDR4.

rustc 1.45.2 (флаг оптимизации — release).

Статистика производительности

Ниже приводятся сгенерированные матрицы выходных данных:

Матрица выходных данных показывает примерно равные результаты. Для каждого метода сортировки и каждого диапазона входных массивов в каких-то случаях Rust работает лучше, а в каких-то случаях лучше работает Си. В нижних диапазонах (1000 элементов), за исключением сортировки вставками, Rust работает лучше. В диапазоне 10 000 элементов Cи работает лучше во всех методах сортировки.

Гистограммы тоже показывают, что результаты почти одинаковы во всех случаях.

Можете попробовать, что получится на вашем компьютере.

Вот ссылка на Github проекта.

Заключение

Сложно сказать, какой язык быстрее, потому что это зависит от конкретного случая. Но Rust может составить конкуренцию в скорости языку Cи: он быстрее, чем многие другие популярные языки, такие как Java и Python. Помимо скорости, в Rust акцент сделан на таких функциональных возможностях, как безопасная работа с памятью и параллелизм. А кроме того, у него открытый исходный код, так что Rust используют для создания самых разнообразных программных продуктов, например игровых движков, операционных систем, файловых систем, браузерных компонентов, а также машин для моделирования виртуальной реальности. Так что в ближайшее время Rust наверняка будет уже везде.

Источник

Краткая история Rust: от хобби до самого популярного ЯП по данным StackOverflow

Rust — это язык системного программирования, создатели которого уделили внимание трем вещам: параллелизму, скорости и безопасности. И хотя Rust считается молодым языком программирования — его первая стабильная версия вышла в 2015 году — он разрабатывается уже более десяти лет.

Сегодня мы бы хотели заглянуть в прошлое и рассказать историю языка Rust, показать, как изменились его функции и возможности за время разработки и привести конкретные примеры внедрения этого ЯП на практике.

Личный проект (2006–2010)

Технология из прошлого, которая призвана спасти будущее от самого себя

— Грэйдон Хор (Graydon Hoare), разработчик Rust

Это одна из цитат Грэйдона Хора, которую озвучил Стив Клабник (Steve Klabnik) из команды разработчиков проекта Rust во время своей презентации на конференции ACM в 2016 году (слайды к презентации вы можете найти по ссылке, а для того, чтобы перемещаться между слайдами, используйте стрелки на клавиатуре). Эти слова хорошо отражают тот факт, что Rust — не революционный язык, имеющий передовые функции. Он просто включает в себя множество рабочих методов из «старых» языков (в том числе C++), повышая их безопасность.

Занимаясь языком, Грэйдон установил определенные правила. Он отмечал, что в первую очередь необходимо уделять внимание семантике языка, а работа над синтаксисом — это последнее дело. Поэтому в ранней реализации Rust ключевые слова были не длиннее пяти символов — язык был «кратким» и использовал такие операторы, как log, ret и fn.

Например, первый код на Rust, который увидел свет, выглядел так:

Как отмечает Стив Клабник, со временем это ограничение было снято: часть ключевых слов «удлинили», например, ret превратился в return, а часть заменили совсем. Для сравнения, в современной реализации языка вывод строки «Привет, мир!» выглядит так:

Также за время эволюции часть концепций и ключевых слов языка была убрана. Когда над языком работал Грэйдон, Rust был объектно-ориентированным и использовал оператор obj для описания объектов. Сейчас как таковое ООП языком не поддерживается, но Rust дает возможность реализовать многие его понятия с помощью абстракций.

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

Самостоятельно над Rust Грэйдон работал на протяжении четырех лет. За это время ему удалось воплотить в жизнь примерно 90% задуманных функций (часть из которых имела довольно грубую реализацию). Среда для выполнения кода была завершена на 70%. Всего за это время Хор написал 38 тыс. строк кода для компилятора на OCaml.

Переход к Mozilla (2010–2012)

Я не считаю, что у языка должны быть какие-то главные особенности.

Он должен состоять из набора понятных и надежных модулей, которые хорошо «работают» в комбинации друг с другом

— Грэйдон Хор (Graydon Hoare), разработчик Rust

По прошествии четырех лет, Грэйдон решил показать свой прототип менеджеру в Mozilla. В компании проявили интерес к проекту, поскольку искали инструмент для перестройки стека браузера на более простых технологиях, чем C++. Поэтому в компании создали команду (во главе с Грэйдоном) для работы над Rust, который стал основой браузерного движка Servo.

Тогда движок Mozilla не мог полноценно работать с мультиядерными системами, поскольку имел однопоточные схемы обработки контента. Например, однопоточными были функции формирования содержимого окна и запуска JavaScript. Rust позволил разделить код рендеринга на мини-задачи, выполняемые параллельно и экономящие ресурсы центрального процессора.

Кроме ускорения работы за счет распараллеливания операций, Rust позволил повысить защищенность браузера. На тот момент Firefox был реализован на C++ и содержал 4,5 млн строк кода. C++ — это «точный» язык программирования, требующий повышенного внимания к деталям, поэтому ошибки программистов могли приводить к возникновению серьезных уязвимостей. Задачей Rust стало снижение влияния человеческого фактора с помощью компилятора.

В 2010 году разработчики языка сменили используемый до этого компилятор OCaml на компилятор, написанный на Rust. В 2011 году Грэйдон опубликовал сообщение о том, что компилятор сумел успешно «собрать» сам себя, а в 2012 команда Rust объявила о релизе альфа-версии компилятора — его документация была не полной, а скорость создания билда оказалась далека от идеальной, однако он уже поддерживал большинство функций языка и кросс-компиляцию.

Годы typesystem (2012–2014)

Наша целевая аудитория — «разочарованные разработчики C++»

В этот момент Грэйдон отошел от работы над Rust и переключился на другие проекты. Как рассказывает Стив Клабник, после этого система управления стала более «распределенной». Была сформирована федеративная структура, в которой за изменения, вносимые в разные части проекта, отвечала отдельная группа разработчиков.

Команда продолжила расти, и в ней стали появляться люди, разбирающиеся в сложных системах типов. Поэтому началось активное развитие typesystem, и все больше аспектов языка выносились в библиотеки.

Например, на ранних этапах Rust был реализован «сборщик мусора» (GC — Garbage Collector), который Грэйдон внедрил для повышения защищенности памяти. Однако потом разработчики пришли к выводу, что они могут обеспечить тот же уровень надежности с помощью системы типов, и от GC отказались.

Это решение также сказалось на системе указателей, используемой в Rust. До удаления «сборщика мусора» в языке было три основных указателя:

Период с 2012 по 2014 год — это время, когда сообщество Rust начало обретать форму. В нем образовалось три больших «лагеря»: пользователи C++, пользователи скриптовых языков и функциональные программисты. Их экспертиза повлияла на язык — постепенно он стал сочетать в себе парадигмы функционального и процедурного программирования.

В марте 2014 года также был сформирован RFC-процесс, который использовался для представления значимых изменений в языке. Решение строилось по образу и подобию Python PEP, и сейчас в нем сделано 3 тыс. коммитов. Причем в RFC попадает любое изменение, даже вносимое разработчиками. По правилам команды Rust, никто не может вносить крупные изменения, не обсудив решение с сообществом.

Релиз (2015)

Мы не знаем наверняка, что из этого получится

В начале 2015 года была выпущена версия Rust 1.0 Alpha. В ней стабилизировали ядро языка, развили систему макросов, и, наконец, закрепили за целочисленными типами int и uint названия isize и usize. В начале второго квартала того же года Rust 1.0 перешел в бету — к этому моменту репозиторий crates.io имел 1700 крэйтов (структурная единица компиляции), а количество скачиваний из репозитория превысило один миллион.

В мае 2015 года состоялся официальный релиз — Rust 1.0. Это ознаменовало начало стабильности. С этого момента все вносимые изменения должны были иметь обратную совместимость, что позволило использовать Rust в реальных проектах. Он начал находить применение в таких сферах, как game dev, веб-разработка и разработка операционных систем.

Переход в продакшн (май 2016)

Если язык хорош лишь в чем-то одном, то это — провал

В 2015 году площадка StackOverflow провела опрос среди разработчиков, в котором их попросили отметить, с какими языками программирования они работали и с какими хотели бы познакомиться. Тогда Rust занял третью строчку рейтинга. Однако годом позднее он переместился на первое место — 79% пользователей изъявили желание продолжить работу с ним.

Один из резидентов Hacker News назвал главными достоинствами языка прозрачность и простоту документации. Другие пользователи также отмечали открытость и доброжелательность Rust-сообщества, которое всегда готово помочь с изучением особенностей ЯП.

При этом многие разработчики решают продолжить работу с этим языком из-за его механизмов безопасности. Как сказал один из пользователей Reddit: «Программирование на Rust — это как паркур со страховкой и в защите; иногда это выглядит странно, но вы можете делать многие трюки, не боясь сломать себе что-нибудь».

С момента релиза стабильной версии Rust начался период его полноценного использования в продакшн. Одной из первых компаний, которые применили Rust в своем проекте, стала Mozilla. Часть «внутренностей» Firefox 45 для Linux были переписаны на Rust, а начиная с версии Firefox 47, Rust-код присутствует и в версии для Windows. Их Project Quantum, анонсированный в октябре 2016 года, также имеет в своем составе компоненты Servo.

Rust используется и в Dropbox — на этом ЯП написано ядро их продукта. Компания Dropbox создала свое новое облачное хранилище Magic Pocket, в которое перенесла информацию с Amazon S3. Изначально оно было реализовано на языке Go, но при больших нагрузках проблемой становилось высокое потребление памяти и низкая предсказуемость поведения кода на Go. Для решения этих проблем был частично задействован Rust.

В прошлом году использовать Rust для обработки пакетов JavaScript начали в npm. Rust помог исключить задержки в системе, работающей с 350 миллионами пакетов в день. Специалист службы поддержки npm Эшли Уильямс (Ashley Williams) рассказывала об опыте использования Rust на конференции RustFest в Украине. Видео вы найдете по ссылке.

Rust также используем и мы в компании Bitfury. На этом языке программирования реализован наш фреймворк для создания блокчейнов Exonum. Впервые мы представили платформу на конференции RustFest 2017, где показали её возможности и провели воркшоп, на котором продемонстрировали работу сервиса по созданию криптовалют (краткое руководство о том, как создать криптовалюту на Exonum вы можете найти здесь).

Реализация на Rust оказалась кстати при работе со смарт-контрактами. Благодаря этому умные контракты Exonum имеют большую производительность, чем контракты Ethereum (или Fabric). Код платформы полностью открыт и лежит в репозитории проекта на GitHub.

Rust также находит применение в сфере информационной безопасности. Такие проекты как Tor уже переносят часть кода на Rust.

В целом, сегодня Rust в своих продуктах используют 105 компаний. Полный их список (в котором также отмечена и Bitfury Group) можно найти на странице Friends of Rust на официальном сайте. И количество компаний, создающих программные продукты на Rust, постоянно увеличивается, чему разработчики языка очень рады.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *