LINUX.ORG.RU

Вышел Rust 1.0 Beta

 ,


2

7

3 апреля 2015 года, в полном соответствии с планом, вышла бета-версия Rust 1.0. Язык и большая часть стандартной библиотеки окончательно стабилизированы, до финального релиза возможны только минимальные изменения в API.

Некоторые изменения со времени альфа-версии, вышедшей 9 января:

Полный список изменений.

Так же разработчики отмечают рост экосистемы языка. Репозиторий crates.io недавно преодолел отметку в 1 миллион загрузок и содержит более 1700 модулей, готовых для использования. В данный момент идет работа по обновлению устаревших модулей до бета-версии. Большая часть документации (The Book, Rust By Example, The Rust Reference, API reference) приведена в соответствии с вышедшей бета-версией.

Окончательный релиз Rust 1.0 запланирован на 16 мая, разработчики потратят оставшиеся до релиза 6 недель на тестирование, исправление ошибок и обновление документации.

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

anonymous

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

Go лучше, Rust ждёт судьба D.

anonymous ()

А как дела у него обстоят с перфомансом? Хотя на этой стадии вряд ли разработчики будут об этом беспокоиться.

xio4 ()

Rust — убийца C++.

Теперь запутывать код становится в разы проще.

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

А как дела у него обстоят с перфомансом?

Нормально, если не забыть включить оптимизацию. Вот со скоростью компиляции - не очень.

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

Теперь запутывать код становится в разы проще.

«Xоть чуточку тоньше нельзя?» (ц)

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

Go лучше

Нет смысла сравнивать эти языки. Но Gо всё равно хуже.

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

Неужели хуже, чем даже gcc? Многопоточная компиляция поддерживается?

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

Чем же Go лучше?

уже сейчас ты можешь устроиться на работу с Go, вакансий может не море, но они хотя бы есть, в отличие от вакансий, где требуется Rust.

«Лучше» в этом суровом и жестоком мире, это когда ты можешь позволить купить себе за зарплату, что-то побольше пары чупа-чупсов (©Biorector).

anonymous ()

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

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

ничего уже принципиально не поменяется?

это было понятно еще с первых новостей про этот мертворожденный ЯП.

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

Получается, PHP и 1С лучше всех? По крайней мере, явно лучше Go.

anonymous ()

Убийцы С++ не существует, С++ сам себя убъет возрастающей сложностью.

zenden ()

тред будет уныл как и сам язычок

anonymous ()

А как в Русте с метапрограммированием?

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

уже сейчас ты можешь устроиться на работу с Go

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

А так-то работа у меня есть и Го там не нужен. В плане «поиграться» он тоже не интересен.

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

Да. После релиза развитие будет эволюционным в рамках версии 1.0, с сохранением обратной совместимости.

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

это было понятно еще с первых новостей про этот мертворожденный ЯП.

Чего? То-то такие как ты ныли в каждой новости про кучу изменений.

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

С++ сам себя убъет возрастающей сложностью.

К сожалению (или счастью) этот процесс очень затянется.

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

Неужели хуже, чем даже gcc?

gcc - компиляторы других языков.

Многопоточная компиляция поддерживается?

Поддерживается распараллеливание компиляции, но параллелится пока не так много.

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

Да. После релиза развитие будет эволюционным в рамках версии 1.0, с сохранением обратной совместимости.

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

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

рустомакросы

macro_rules! vec {
    ( $( $x:expr ),* ) => {
        {
            let mut temp_vec = Vec::new();
            $(
                temp_vec.push($x);
            )*
            temp_vec
        }
    };
}

У меня задымился парсер.

Hertz ★★★★★ ()
Ответ на: рустомакросы от Hertz

Re: рустомакросы

какая-то шняга. в остальном поделие на поиграться

anonymous ()

устранение «излишне высокоуровневых» абстракций, отказ от фокуса на POSIX и улучшение кросплатформенности. В частности, в стандартной библиотеке Rust 1.0 не будет средств для асинхронного ввода-вывода

Вот это непонятно, к чему из перечисленного относится отказ от AIO?

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

к чему из перечисленного относится отказ от AIO

улучшение кросплатформенности

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

Как я понял, раньше io в rust работало поверх libuv, и старый API был «заточен» под libuv и, косвенно, под POSIX. Когда убрали libuv и портировали под оффтопик, оказалось, что IO на разных платформах не удается эффективно запихнуть в libuv/POSIX формат, особенно в плане AIO, приходится добавлять много костылей. В итоге решили к 1.0 переписать io, ограничившись эффективной кросплатформенной абстракцией над блокирующим вводом-выводом, оставив AIO до следующих релизов. Вот тут подробно все описано.

anonymous ()

в полном соответствии с планом

Наоборот, они поменяли план. Недавно предполагаемой датой выхода значилось Mar 31.

iamweasel ()
Ответ на: рустомакросы от Hertz

рустомакросы

Местные декларативные макросы, конечно, не вершина элегантности, но и не сказал бы, что очень уж плохи. После прочтения https://doc.rust-lang.org/book/macros.html вполне себе понимаемо. Мой парсер не дымится, если чего-то адски сложного не наворачивать.

«$» - метапеременные, «имя:тип» - тип фрагмента, "()*" - повторение. Не так и сложно же.

ozkriff ()
Последнее исправление: ozkriff (всего исправлений: 1)
Ответ на: Re: рустомакросы от anonymous

Эта шняга перед компиляцией вылупляется в такую рутину:

let x: Vec<u32> = {
    let mut temp_vec = Vec::new();
    temp_vec.push(1);
    temp_vec.push(2);
    temp_vec.push(3);
    temp_vec
};
Пример отсюда по ссылке от DarkEld3r.
Что-то меня одолевают большие сомнения по поводу того, что овладев рустом можно серьёзно повысить свою производительность. Его, судя по всему, пока освоишь - просрёшь все полимеры.

Hertz ★★★★★ ()

Гайз, а как у раста дела со всякими аллокаторама, мемори пулами? На каждый чих аллоцировть память - дно же, о каком перфомансе может быть речь?

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

Спасибо, ясно. Надеюсь, найдут новый формат для std.

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

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

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

Его, судя по всему, пока освоишь - просрёшь все полимеры.

Если уже знаешь плюсы, то в ржавчине осваивать принципиально нового - только модель памяти, не?

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

С++ сам себя убъет возрастающей сложностью.

опять ты свою тупость с общественной путаешь

shty ★★★★★ ()
Ответ на: рустомакросы от Hertz

У меня задымился парсер.

тю, слабоват у Вас, мужчина, парсер... попишите-ка с полгода на Scala для укрепления парсера

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

Годнота!

ps: Rust и Go для разных целей! Оба вкусные!

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

Скорее GCC это набор компиляторов, а gcc - программа для компиляции C/C++.

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

Гайз, а как у раста дела со всякими аллокаторама, мемори пулами?

Типа пул: https://www.reddit.com/r/rust/comments/2tuciv/whats_a_good_use_case_for_arena...

Аллокаторов нет, но обсуждение где-то ведется: https://github.com/rust-lang/rfcs/issues/538

На каждый чих аллоцировть память

Зачем? Да и современные маллоки достаточно быстрые.

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

На каждый чих аллоцировть память

Ты где это увидел? Проецируешь небось свои жаба-комплексы. В Rust как в С++ все по максимуму выделяется на стеке, выделенное в куче передается либо по ссылке либо как rvalue через move-constructor, сводя необходимость в аллокации в минимуму. А вообще есть доступ к стандартному аллокатору(jemalloc, кажется) и реализованы арены.

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

http://rustbyexample.com/box.html

«All values in Rust are stack allocated by default. Values can be boxed (allocated in the heap) by creating a Box<T>. A box is a smart pointer to a heap allocated value of type T»

И box-ов этих в реальном коде дохрена, взять хотя бы коллекции.

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

Ну вот хотя бы в список хочу элементы запихивать. Это что, каждый элемент будет box-ится выделением памяти в хипе? Это же ппц.

dizza ★★★★★ ()

Чем им ним не угодил?

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

И box-ов этих в реальном коде дохрена

Это ты по какому коду судишь?

взять хотя бы коллекции

Что с коллекциями? Коллекции хранят данные по значению, в частности vec - как std::vector в С++ - это просто массив значений. Очевидно, более сложные коллекции активно выделяют память для своих внутренних структур, но это необходимый минимум, все как в С++. Возможно ты путаешь настоящие генерики с подделкой из Java-мирка? Там да, для каждой вставки объект выделяется в куче, и контейнер хранит ссылку на Object, неявно приводя его к нужному типу.

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

И box-ов этих в реальном коде дохрена, взять хотя бы коллекции.

ну а ты предлагаешь данные коллекций на стеке хранить?

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