Компилятор сообщает о синтаксической ошибке на «hello world», взятый из учебника.
Какая ошибка у вас?
Компилятор Rust выдаёт не исполняемый код, а код в LLVM IR.
Это не так, компилятор Rust как исполняемый файл rustc выдаёт исполняемый код. LLVM IR используется внутри и скрыто от пользователя. Visual C++ используется не здесь, а при компоновке с системными библиотеками и нужен если вам нужно MSVC ABI — из всего Visual C++ нужен лишь link.exe.
А code churn на уровне 200 000 — 2 000 000 строк это уже извините меня не «поделка», как ни крути.
А до продакшена этой поделке лет 5 в лучшем случае, 20 в обычном.
Сколько лет пройдёт до того, как махровая индустрия возьмёт на вооружение Rust обсуждать есть смысл только с учётом того, что Go появился на 3 года раньше Rust. Прямые сравнения неуместны.
Логика на уровне «я не слышал, значит этого нет». А я слышал про Skylight и MaidSafe, и чего, кто теперь прав?
Да, это боевой код, который работает в реальных условиях — это production. Его размер здесь не важен, но если хотите, то вот цифры (это честные SLOC, без пробелов и комментариев):
У MaidSafe всё ядро распределённой сети на Rust (14000 строк).
Redox — это активно разрабатываемая ОС на Rust. 40000 строк кода на Rust. И пока вы не возразили, что этим «никто не пользуется» или «вы про это не слышали» — вспомните, как начинался Linux.
Вот план реализации Servo: github.com/servo/servo/wiki/Roadmap. Моё понимание таково: Servo пока просто не готов к боевому применению. Хотя некоторые сайты уже отрисовываются так же хорошо, как и в Gecko.
Насколько я помню, в целом Mozilla действует так: постепенно заменяют компоненты в Firefox на те, что используется в Servo, так что в конце они будут использовать одно и то же, а затем можно и движок заменить.
Возможно, вы знаете, что этот сайт обновляется практически никогда. Я его видел полтора года назад — он выглядел так же. Поэтому я не уверен, что он соответствует действительности на данный момент.
Я с вами не спорю, но хочется уточнить один момент: проверки Rust в unsafe не отключаются. Есть ровно три вещи, которые разрешаются дополнительно только в unsafe: разыменование сырых указателей, вызов опасных функций, и доступ к изменяемым статическим данным. Есть довольно большой класс поведения, которое считается не определенным и которое недопустимо даже в unsafe, но есть и поведение, которое явно не считается небезопасным и называется вместо этого «нежелательным» (например, утечка памяти).
Из других новостей: на 1.3 racer собирался 4:45 на моей машине, на 1.4 — 3:57. Один мой проект собирается теперь за 1:00 вместо 1:14. Примерно 20% ускорения в обоих случаях.
Что радует, ускорения компиляции примерно такого масштаба происходят в каждом релизе.
Пара замечаний. Во-первых, идиоматично переиспользовать имена переменных в паттернах наподобие того, что демонстрирует ваш код:
Я знаю про эту практику, но мне она не нравится. Маскировать переменные можно и в Си, однако обычно я этого избегаю, т.к. это вносит путаницу и обычно сигнализирует о чрезмерной вложенности или непродуманности имён.
Во-вторых, where — это не «задание краткого имени для длинного типа», это определение ограничений на дженериковую ти́повую переменную:
Разумеется. Спасибо. Подумал про одно, написал про другое.
Не спасает. Фундаментальная проблема сервера Emacs для меня в том, что он слишком жёстко связан с окружающим миром. Изоляция процессов плохая. Заглючило sudo в tramp-mode и всё повисло? Убивай сервер. Запустил что-то слишком прожорливое или медленное? Сервер висит вместе с процессом. Короче, не 21-й век: асинхронности мало.
Да, где-то видел что это «лучшая библиотека разбора аргументов вообще, с которой приходилось работать» (по мнению одного из пользователей; мой вольный перевод).
Это не так, компилятор Rust как исполняемый файл rustc выдаёт исполняемый код. LLVM IR используется внутри и скрыто от пользователя. Visual C++ используется не здесь, а при компоновке с системными библиотеками и нужен если вам нужно MSVC ABI — из всего Visual C++ нужен лишь link.exe.
Да и, что меня ловить-то, я и сам поймаюсь.
А code churn на уровне 200 000 — 2 000 000 строк это уже извините меня не «поделка», как ни крути.
Сколько лет пройдёт до того, как махровая индустрия возьмёт на вооружение Rust обсуждать есть смысл только с учётом того, что Go появился на 3 года раньше Rust. Прямые сравнения неуместны.
Да, это боевой код, который работает в реальных условиях — это production. Его размер здесь не важен, но если хотите, то вот цифры (это честные SLOC, без пробелов и комментариев):
У MaidSafe всё ядро распределённой сети на Rust (14000 строк).
Redox — это активно разрабатываемая ОС на Rust. 40000 строк кода на Rust. И пока вы не возразили, что этим «никто не пользуется» или «вы про это не слышали» — вспомните, как начинался Linux.
Все ссылки, кроме последней — на релевантные статьи или код.
Вот план реализации Servo: github.com/servo/servo/wiki/Roadmap. Моё понимание таково: Servo пока просто не готов к боевому применению. Хотя некоторые сайты уже отрисовываются так же хорошо, как и в Gecko.
Насколько я помню, в целом Mozilla действует так: постепенно заменяют компоненты в Firefox на те, что используется в Servo, так что в конце они будут использовать одно и то же, а затем можно и движок заменить.
try! спасает только то, что он всего один, достаточно прост и быстро узнается в процессе изучения языка.
История успеха — это Servo. Он рисует страницы в 2 раза быстрее Gecko в одном потоке и ещё быстрее в многопоточном режиме.
А из коммерческих пользователей есть как минимум Maidsafe, Skylight, OpenDNS. У них в разных местах есть посты о том, почему они выбрали Раст.
Например, недавно появился mail sender — lettre.
Что радует, ускорения компиляции примерно такого масштаба происходят в каждом релизе.
Я знаю про эту практику, но мне она не нравится. Маскировать переменные можно и в Си, однако обычно я этого избегаю, т.к. это вносит путаницу и обычно сигнализирует о чрезмерной вложенности или непродуманности имён.
Разумеется. Спасибо. Подумал про одно, написал про другое.