LINUX.ORG.RU

Rust 1.15

 


2

10

Представлен релиз Rust 1.15 — системного языка программирования, нацеленного на безопасную работу с памятью, скорость и параллельное выполнение кода. В этот релиз вошли 1443 патча.

Если у вас уже установлена предыдущая версия Rust, то обновиться до Rust 1.15 очень легко:

$ rustup update stable
или же следуя инструкции на соответствующей странице.

Стабильная версия, наконец-то, увидела долгожданную возможность: пользовательские расширения (custom derive)! К примеру, в Rust вы всегда могли автоматически реализовать некоторые типажи через атрибут derive:

#[derive(Debug)]
struct Pet {
    name: String,
}
В примере выше была определена реализация типажа Debug для структуры Pet с использованием минимального кода. Однако, это работало только для тех типажей, которые являлись частью стандартной библиотеки; пользователям это было недоступно. С версии Rust 1.15 это стало доступно. Это значит, что если вы захотите преобразовать структуру Pet в JSON, это так же просто, как добавить Serde в ваш Cargo.toml:
[dependencies]
serde = "0.9"
serde_derive = "0.9"
serde_json = "0.9" 
и добавить новый типаж к Pet:
#[macro_use]
extern crate serde_derive;

extern crate serde_json;

#[derive(Serialize, Deserialize, Debug)]
struct Pet {
    name: String,
}

fn main() {
    let pet = Pet { name: String::from("Ferris") };

    let serialized = serde_json::to_string(&pet).unwrap();
    println!("serialized = {}", serialized);

    let deserialized: Pet = serde_json::from_str(&serialized).unwrap();
    println!("deserialized = {:?}", deserialized);
}
Это выведет:
serialized = {"name":"Ferris"}
deserialized = Pet { name: "Ferris" }
Другой часто используемый вариант — Diesel (новая версия 0.10.0 которого представлена вслед за Rust 1.15). Допустим, у нас есть база данных, состоящая из Pet. Мы можем сделать выборку следующим образом:
// some extern crate and use lines elided here

#[derive(Queryable)]
struct Pet {
    name: String,
}

fn main() {
    use diesel_demo::schema::pets::dsl::*;

    let connection = establish_connection();
    let results = pets
        .limit(5)
        .load::<Pet>(&connection)
        .expect("Error loading pets");

    println!("Displaying {} pets", results.len());
    for pet in results {
        println!("{}", pet.name);
    }
}
Другие примеры с использование Diesel можно посмотреть на сайте.

Такого рода библиотеки являются очень мощными, но полагаются на пользовательские расширения для эргономики. Хотя эти библиотеки и работали прежде на стабильной версии Rust, пользоваться ими было не так удобно, и пользователи предпочитали работать на ночных версиях Rust «из-за Serde и Diesel». Пользовательские расширения являются одними из самых широко-используемых возможностей в ночных версиях Rust. Таким образом, в июле прошлого года была начата работа над RFC 1681 для реализации данной возможности. В августе RFC был принят, претерпел большое количество работы и тестирования и, в итоге, был включен в эту стабильную версию.

Научиться писать свои собственные расширения можно в соответствующей главе книги «The Rust Programming Language».

Хотя больше всего упоминаний в рамках данной возможности пришлось на «Serde и Diesel», есть много других крутых возможностей, которые можно делать при помощи пользовательских расширений: например, derive-new. Ещё больше можно увидеть, посмотрев список обратных зависимостей пакета syn. (syn очень важен для написания пользовательских расширений; для большей информации, смотрите соответствующую главу книги, ссылка на которую приведена выше). Пользовательские расширения были так же известны под названием «макросы 1.1», так как включают в себя основополагающую инфраструктуру для поддержки ещё более мощных возможностей во время компиляции в Rust, под названием «макросы 2.0». Ожидаем услышать больше новостей в этой сфере в будущих релизах.

Другие улучшения

Система сборки Rust была переписана на Rust с использованием Cargo. Теперь это основная система. Процесс был долгим, но наконец-то принес свои плоды. Вся разработка Rust происходит в основной ветке с использованием новой системы сборки, начиная с декабря прошлого года и показывает хорошую работу, ещё один показатель зрелости Cargo. Уже подготовлен PR для полного удаления всех Makefile-ов к версии Rust 1.17. Это позволит rustc напрямую использовать пакеты с crates.io в компиляторе, как это делается в других проектах на Rust.

В Rust появилась поддержка новых платформ 3 уровня: i686-unknown-openbsd, MSP430, и ARMv5TE.

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

В качестве незначительного улучшения, ?Sized теперь можно использовать в утверждении where. Другими словами:

struct Foo<T: ?Sized> {
    f: T,
}

struct Foo<T> where T: ?Sized {
    f: T,
}
Вторая форма теперь принимается, и равнозначна первой.

Более подробный список изменений.

Стабилизация библиотек

Алгоритм slice::sort был переписан и теперь гораздо-гораздо быстрее. Применяется гибридная сортировка слиянием, вдохновленная Timsort. Раньше применялась простая сортировка слиянием.

Если у вас имеется Vec<T> где T: Copy с вызовом extend на него, ваш код теперь будет гораздо быстрее.

Говоря о быстродействии, chars().count(), chars().last(), и char_indices().last() теперь тоже быстры!

Китайские символы теперь правильно отображаются в fmt::Debug.

Также были стабилизированы следующие функции:

Более подробный список изменений.

Возможности Cargo

Cargo теперь будет выдавать предупреждение, если в верхнем уровне пакета будет файл с названием build.rs, но не будет аннотации build = "build.rs". Это делается из соображения совместимости, так как предполагается использование файла build.rs в верхнем уровне пакета в качестве файла сборки.

В этом релизе, скрипты в Cargo больше не имеют доступа во время сборки к переменной среды окружения OUT_DIR через env!(«OUT_DIR»). Теперь проверку переменной надо осуществлять во время выполнения через std::env. Установка значения переменной во время сборки было ошибкой и некорректной при кросс-компиляции. Проверьте свои пакеты и обновите на использование std::env.

Команда cargo test получила поддержку флага --all, что полезно при работе с рабочими пространствами.

Появилась возможность статической компиляции с использованием MSVC CRT на Windows, и статического связывания OpenSSL на Mac OS X.

Более подробный список изменений.

Страница благодарности

Для выражения благодарности авторам и помощникам, которые делают Rust лучше, запущена новая инициатива «Thanks!» — страница с благодарностью людям, которые внесли вклад в Rust. Страница доступна по адресу https://thanks.rust-lang.org/ (или https://♥.rust-lang.org). Список авторов и помощников за всё время, по количеству коммитов, можно посмотреть здесь: https://thanks.rust-lang.org/rust/all-time. В Rust 1.15 всего был сделан вклад со стороны 137 людей.

>>> Подробности

★★★★★

Проверено: jollheef ()

Ну что, це и цепепе пришел конец?

anonymous ()

Сообщение удалено tailgunner по причине 3.4 Пустое сообщение (0)

rustup update stable

хипс

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

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

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

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 3)
Ответ на: комментарий от upcFrost

по какой-то странной причине сейчас пошла мода что каждый новый язык лепит свою обновлялку

Я не могу сказать, что мне это нравится, но 1) цикл релизов Rust короче, чем циклы релизов дистрибутивов 2) проблема не собственно в языкоспецифичных обновлялках, а в том, что их авторы плюют на системные менеджеры пакетов и живут в каком-то хипстерском мире, где обновить компилятор и подсосать либу прямо из мастера git - обычное дело.

P.S. и rustup - обновлялка только компилятора.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от upcFrost

Я не знаю что на нём пишут, но я сомневаюсь что большая часть пользователей - линуксоиды. Судя по гитхабу - преобладает мак.

RazrFalcon ★★★★★ ()

Как сделать ЯП целиком из синтаксического мусора.

ritsufag ★★★★★ ()
Ответ на: комментарий от tailgunner

1) цикл релизов Rust короче, чем циклы релизов дистрибутивов

цикл релизов gcc тоже короче.

авторы плюют на системные менеджеры пакетов и живут в каком-то хипстерском мире

в точку

и rustup - обновлялка только компилятора

вот ты прикинь - gcc решит что надо обновиться из гита, и радостно обновится напару с glibc, угробив попутно полсистемы.

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

цикл релизов Rust короче, чем циклы релизов дистрибутивов

цикл релизов gcc тоже короче.

Релевантен цикл релизов стандартов Си++.

Но у gcc тоже есть своя обновлялка - crosstool.

rustup - обновлялка только компилятора

вот ты прикинь - gcc решит что надо обновиться из гита

Вот прикинь - rustup сам ничего не решает.

радостно обновится напару с glibc, угробив попутно полсистемы.

Что заставляет тебя думать, будто rustup сносит предыдущий компилятор, библиотеки, и перекомпилирует всё собой?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Но у gcc тоже есть своя обновлялка - crosstool

это вроде как не совсем обновлялка

Вот прикинь - rustup сам ничего не решает

ок, тупой юзверь нажал «обновить» и сделал себе больно. нафига тогда вообще stable ветка дистрибутива? можно ж взять генту и разрешить все keywords, вот счастье-то будет, каждая софтина прямо с пылу с жару.

Что заставляет тебя думать, будто rustup сносит предыдущий компилятор, библиотеки, и перекомпилирует всё собой?

где-нибудь есть 146% гарантия что после компиляции одной библиотеки в следующий раз десяток других не превратится в тыкву?

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

радостно обновится напару с glibc, угробив попутно полсистемы.

rustup сам ничего не обновляет

RazrFalcon ★★★★★ ()
Ответ на: комментарий от upcFrost

Но у gcc тоже есть своя обновлялка - crosstool

это вроде как не совсем обновлялка

Это инсталлятор новых тулчейнов. Такой же, как rustup.

Вот прикинь - rustup сам ничего не решает

ок, тупой юзверь нажал «обновить» и сделал себе больно

С тем же успехом можно сказать «тупой юзер запустил rm -rf ~/*» и сделал себе больно.

Что заставляет тебя думать, будто rustup сносит предыдущий компилятор, библиотеки, и перекомпилирует всё собой?

где-нибудь есть 146% гарантия что после компиляции одной библиотеки в следующий раз десяток других не превратится в тыкву?

Ы?

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

С тем же успехом можно сказать «тупой юзер запустил rm -rf ~/*» и сделал себе больно

вот потому многие дистры запрещают rm -rf / делать

просто вот кулстори пятиминутрой давности. у меня после обновления gcc отвалился cmake. хз почему, вроде даже не настолько мощно обновился, пришлось пересобрать

Это инсталлятор новых тулчейнов. Такой же, как rustup

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

upcFrost ★★★★★ ()

Доступна бета-версия поддержки инкрементальной компиляции в Rust: https://internals.rust-lang.org/t/incremental-compilation-beta/4721 Время инкрементальной компиляции занимает от 35% до 50% времени регулярной компиляции в режиме отладки. И в 5 раз быстрее (20%) в режиме релиза.

dotcoder ★★★★★ ()
Ответ на: комментарий от upcFrost

С тем же успехом можно сказать «тупой юзер запустил rm -rf ~/*» и сделал себе больно

вот потому многие дистры запрещают rm -rf / делать

Я же специально написал «rm -rf ~/*».

просто вот кулстори пятиминутрой давности. у меня после обновления gcc отвалился cmake

У тебя Gentoo?

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

Мм... по-моему, Rust как «системного тулчейна» сейчас просто не существует. В любом случае, rustup не включен в поставку Rust, насколько я знаю. Это отдельный инструмент, такой же, как crosstool.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

У тебя Gentoo?

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

Rust как «системного тулчейна» сейчас просто не существует. В любом случае, rustup не включен в поставку Rust, насколько я знаю. Это отдельный инструмент, такой же, как crosstool.

ок, тогда брат жив. но тогда новость некорректна. «Если у вас уже установлена предыдущая версия Rust, то обновиться до Rust 1.15 очень легко» != «добавить в систему новый тулчейн можно командой»

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Мм... по-моему, Rust как «системного тулчейна» сейчас просто не существует. В любом случае, rustup не включен в поставку Rust, насколько я знаю. Это отдельный инструмент, такой же, как crosstool.

C 1.14 включен. Ну и как бы обновляется сам компилятор, а это компилируемый язык. Так что я вообще не понимаю к чему притензии.

nikita-b ()

Какой страшный синтаксис у этого языка.

blackst0ne ★★★★★ ()
fn main() {
    let pet = Pet { name: String::from("Ferris") };

А почему нельзя просто name: «Ferris»?

makoven ★★★★★ ()

мда, со скоростью появления плюшек в Rust намного лучше, нежели в C && C++ ...

zamazan4ik ★★ ()
Ответ на: комментарий от blackst0ne

лично у меня такое чувство, что как будто и не для людей этот ЯП делали

zamazan4ik ★★ ()

Язык очень понравился, хотя не сделал ещё никаких серьёзных проектов на нём - так, несколько ерундовин. но уже понимается его годнота, когда он будет допилен. Сразу чувствуется, что язык 21 века.

Синтаксис там нормальный - его разнообразие оправдано. Это не замена вашим явкам, шарпам и тд, а РАБОЧАЯ альтернатива Си, благодаря отсутствию обязательного ГЦ, изи линковки си библиотек, контролю за памятью, нормальным типам данным, защите от падений, поддержки arm-none-eabi и тд платформ и тд. Уже сейчас можно использовать rust с STM32 - в интернете есть даже статьи на эту тему, но пока подожду.

Как устаканиться синтаксис - обязательно попробую использовать в релизных устройствах. Уж очень всё привлекательно.

SL_RU ★★★ ()

Diesel

Мы с Иваном Ильичом работали на дизеле~

Unununij ★★★★ ()
Ответ на: комментарий от SL_RU

Язык очень понравился, хотя не сделал ещё никаких серьёзных проектов на нём

Суть ржавофанов.

anonymous ()
Ответ на: комментарий от ritsufag

Как сделать ЯП целиком из синтаксического мусора.

Привет Алиса. Как там поживает профессор Силизнёв? Вы ещё не улетели на Альфу Центавру?

anonymous ()
Ответ на: комментарий от makoven

Просто строковой литерал «ferris» - это, если по-русски, неизменяемый слайс символов, который живёт вечно. Если бы поле было того же типа, мы не могли бы создавать Pet с чем-нибудь кроме строковых литералов или их частей. Можно было бы использовать просто неизменяемый слайс символов, но тогда бы у объектов типа Pet появился параметр лайфтайма и компилятор бы следил, чтоб Pet не пережил объект, на который ссылается имя. Поэтому в данном случае используется владеющий тип String, в который копируют строку из литерала.

khrundel ★★ ()
Ответ на: комментарий от khrundel

Поэтому в данном случае используется владеющий тип String, в который копируют строку из литерала.

Сделать например «строка» с двойными кавычками - сменяемой, а 'строка' с одной - несменяемой, так и не додумались. Поэтому везде этот спам с to_owned или ::from.

И так во всем. Количество ритуалов и танцев с бубном просто зашкаливает. Все идеи вроде бы сами по себе неплохие, но сочетание синтакса лайфаймов, Box<>/Cow<>, Option/Result и unwrap, дженериков, HKT, макросов (причем сразу двух типов), метамакросов типа #derive, итд. - в итоге приводит к такой каше, что кажется, синтакс языка существует для поддержки самого себя а не для решения задач программиста.

Знаменитый деятель open-source движения Эрик С. Реймонд недавно нелестно отозвался о Rust по той же причине. В статье Rust меня глубоко разочаровал, Реймонд описал попытку использовать Rust для написания простенького IRC-сервера. Вердикт - Rust крайне неудобный в использовании и понимании, не имеет достаточно мощных и гибких библиотек, и потребовал четыре дня для написания 67 строк работающего кода (и это для программиста такого калибра, как сам Реймонд). Во второй статье, Rust и ограничение коллективного дизайна, Реймонд немного смягчил мнение и счел, что теоретически у языка есть будущее, но до стадии пригодности к массовому использованию язык еще слишком недоработан.

gene1 ()
Ответ на: комментарий от gene1

Все идеи вроде бы сами по себе неплохие, но сочетание синтакса лайфаймов, Box<>/Cow<>, Option/Result и unwrap, дженериков, HKT, макросов (причем сразу двух типов), метамакросов типа #derive, итд. - в итоге приводит к такой каше, что кажется, синтакс языка существует для поддержки самого себя а не для решения задач программиста.

Однако, http://stackoverflow.com/research/developer-survey-2016#technology-most-loved...

Знаменитый деятель open-source движения Эрик С. Реймонд недавно нелестно отозвался о Rust

В этих же статьях он обозвал тупыми фанатами всех, кто пытался с ним спорить (и еще там было много слова swarm - статья-самопеар его книжек). Так что насчет «калибра» этого оратора можно поспорить

makoven ★★★★★ ()
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от makoven

Однако

Рейтинги «любимости» языка - обратно пропорциональны количеству людей его использующих. Потому что пока язык - экзотичная диковинка, его используют только фанаты, и конечно им он будет нравится.

gene1 ()
Ответ на: комментарий от gene1

Рейтинги «любимости» языка - обратно пропорциональны количеству людей его использующих

Смелое заявление. Проверять вы его, конечно, не будете?

makoven ★★★★★ ()
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от makoven

Смелое заявление. Проверять вы его конечно не будете?

Смотря на вашу же ссылку - первые три любимых языка - Раст, Свифт, F#. Последние три - Питон, С#, Node.js (JavaScript).

Первая ссылка в Гугле по запросу «github most used languages» приводит к https://www.techworm.net/2016/09/top-10-popular-programming-languages-github.... . В списке - JavaScript на первом месте, Питон - на третьем, C# - на восьмом. Ни Раст, ни Свифт, ни F#, в список не вошли вообще.

gene1 ()
Ответ на: комментарий от gene1

Первая ссылка в Гугле по запросу «github most used languages»

Developer Survey Results 2016

2016

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

makoven ★★★★★ ()
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от gene1

Сделать например «строка» с двойными кавычками - сменяемой, а 'строка' с одной - несменяемой, так и не додумались.

А char чем обозначать будем? Ещё какие-нибудь кавычки?

Deleted ()
Ответ на: комментарий от gene1

Знаменитый деятель open-source движения Эрик С. Реймонд

«Выучил» ЯП за 4 дня и думал что его понимает на достаточном уровне чтобы критиковать.
В пример приводился Go, с которым раст сравнивался. Эрик нахваливал что мол Go хороший потому что простой и я его смог выучить за 4 дня, а Rust нет.
Что примечательно, в следующей его статье про более детальное сравнение этих языков, Go бы разнесен в пух и прах. Делайте выводы о компетентности автора и его скорости на выводы сами.

mersinvald ★★★★ ()
Последнее исправление: mersinvald (всего исправлений: 1)
Ответ на: комментарий от gene1

четыре дня для написания 67 строк работающего кода (и это для программиста такого калибра, как сам Реймонд)

Рыдал.

Во второй статье, Rust и ограничение коллективного дизайна, Реймонд немного смягчил мнение

Вообще странная статья. Swarm design? Это о Rust? Какой бред.

tailgunner ★★★★★ ()
Ответ на: комментарий от zamazan4ik

мда, со скоростью появления плюшек в Rust намного лучше, нежели в C && C++ ...

Пока языком пользуются пара тысяч человек во всем мире — это нормально. Интересно будет посмотреть на скорость развития Rust-а, когда это количество вырастет до сотни тысяч.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

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

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

zamazan4ik ★★ ()
Ответ на: комментарий от zamazan4ik

нет такого тяжёлого груза как обратная совместимость.

С момента 1.0 есть. Последующие релизы сохраняют обратную совместимость с первым стейблом.

mersinvald ★★★★ ()
Ответ на: комментарий от zamazan4ik

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

Тут дело даже не в совместимости, а в том, что 80% текущих пользователей языка готовы бежать с темпом «новый релиз раз в 6-ть недель». Чем больше становится пользователей, тем меньше желающих двигаться в таком темпе.

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

Ну, в свое время я, например, не мог себе представить, до какой популярности дойдет Go. И как быстро это произойдет.

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

Так-то у Rust-а пока есть неоспоримые достоинства перед C++ и уж тем более перед C. И если старых C++ников от перехода на Rust может удерживать много разных факторов, то вот новички вполне могли бы Rust-ом и заинтересоваться.

eao197 ★★★★★ ()
Ответ на: комментарий от eao197

Так-то у Rust-а пока есть неоспоримые достоинства перед C++ и уж тем более перед C. И если старых C++ников от перехода на Rust может удерживать много разных факторов, то вот новички вполне могли бы Rust-ом и заинтересоваться.

А если rust не взлетит? И есть ли под него нормальные средства разработки с автодополнением и поддержкой рефакторинга?

anonymous ()
Ответ на: комментарий от eao197

люди, которые много работали с безопасными языками с GC, но мало имели дел с нативным кодом.

Не знаю насколько это показатель, но рубистам Rust нравится, судя по количеству статей и постов на реддите.
Насколько я понял, они Rust втыкают в боттлнеки, там где Ruby дюже медленный.
Но опять же, не знаю о чем это говорит, так как эти люди все таки имеют обычно предыдущий опыт использования Си для тех же задач и радостно принимают раст именно по этому)

mersinvald ★★★★ ()
Ответ на: комментарий от anonymous

А если rust не взлетит?

Ну не взлетит и не взлетит. Се ля ви.

И есть ли под него нормальные средства разработки с автодополнением и поддержкой рефакторинга?

Понятия не имею. Мне в C++ это не больно нужно. А на Rust я пока со стороны посматриваю, применить его пока что негде.

eao197 ★★★★★ ()
Ответ на: комментарий от anonymous

средства разработки с автодополнением

Любой редактор + racer

с поддержкой рефакторинга

Сразу после допила RLS до состояния хотя бы беты. Пока что работает 50/50

mersinvald ★★★★ ()
Ответ на: комментарий от eao197

насколько низок порог входа в него для не очень опытных разработчиков

Двоякий вопрос, которой много раз обсуждался в сообществе. С одной стороны, заставить прогу собираться на rust, для новичка, титаническая задача. Зато когда она собралась - она работает.

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

RazrFalcon ★★★★★ ()
Ответ на: комментарий от mersinvald

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

Люди, которые пишут код, от которого требуется производительность, на Ruby, должны страдать :)

Насколько я понял, они Rust втыкают в боттлнеки, там где Ruby дюже медленный.

Это не интересно. Интереснее, когда Rust использовался бы для разработке проектов, сравнимых с MongoDB, RethinkDB, Tarantool, ClickHouse...

Надо, наверное, еще подождать, посмотреть.

eao197 ★★★★★ ()
Ответ на: комментарий от RazrFalcon

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

Я бы здесь различал C и C++. На современном C++, если писать как рекомендуют лучшие собаководы, утечек, UB и прочих приколов будет немного.

Другое дело, что новичку в современный C++ войти ой как не просто.

eao197 ★★★★★ ()
Последнее исправление: eao197 (всего исправлений: 1)

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

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

buddhist ★★★★★ ()
Ответ на: комментарий от eao197

Мы же про новичка говорим. Накопипастит со SO и всё. Он вообще не в теме про стандарты и прочую муть.

Один use-after-move какую боль вызовет.

RazrFalcon ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.