LINUX.ORG.RU

Rust 1.6

 ,


2

3

Команда разработчиков Rust рада представить первый в этом году релиз Rust — 1.6. Rust — это системный язык программирования, при разработке которого внимание сосредоточено на безопасности, скорости и параллелизме. Как обычно, вы можете установить Rust 1.6 с соответствующей страницы на официальном сайте, а также посмотреть примечания к выпуску на GitHub. Выпуск включает в себя около 1100 патчей и содержит ряд небольших улучшений, одно важное изменение, а также изменение на Crates.io.

Стабилизация libcore

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

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

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

Около 30 библиотечных функций и методов теперь являются стабильными в 1.6. Заметные улучшения включают в себя:

  • Семейство функций drain() для коллекций. Эти методы позволяют перемещать элементы из коллекций, сохраняя память, в которой они размещены, тем самым снижая выделение памяти в некоторых ситуациях.
  • Ряд реализаций типажа From для конвертирования между типами стандартной библиотеки, в основном между целочисленными типами и числами с плавающей точкой.
  • Наконец, Vec::extend_from_slice(), ранее известный как push_all(). Этот метод существенно быстрее, чем более общий метод extend().

Crates.io запрещает использование масок в версиях зависимостей

Если вы являетесь мейнтейнером контейнера на Crates.io, возможно вы видели следующее предупреждение:

новые контейнеры более не могут использовать маски при описании зависимостей.

Другими словами, это запрещено:

[dependencies]
regex = "*"

Вместо этого вы должны указать конкретную версию или диапазон версий, используя одну из опций: ^, ~, или =.

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

>>> Официальный анонс

★★★★★

Проверено: Klymedy ()
Последнее исправление: Klymedy (всего исправлений: 6)
Ответ на: комментарий от r_asian

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

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

Ну то есть о «поддержке со стороны Apple» речь не идёт от слова «совсем»...

https://github.com/klange/taylor

We tell swiftc to spit out LLVM intermediate representation, and then have Clang (which is much more reasonable about retargeting)

What's in here right now doesn't need any Swift runtime support. That will change very quickly as we try to add support for things like arrays, classes, structs, strings, etc.

Замечательно, замечательно. Постпроцессор выхлопа компилятора Swift, который пока не умеет вообще ничего.

https://github.com/rzhikharevich/swift-bare-bones

А это просто смешно.

tailgunner ★★★★★
()

🔥

Хороший язык и релизы интересные.

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

Лично я по ссылке увидел, что реализация алгоритмов на Rust выполняется за меньшее количество секунд, чем реализация на С. Кроме 4 тестов.

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

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

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

При том, что удобство языка ещё надо доказать.

До что там доказывать, главный пока претендент на гран-при в номинации «самый корявый и вырвиглазный язык столетия».

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

Сравните реализации этих сферических тестов. И плюсы, и даже сишка лаконичнее этого ублюдка. Это лол.

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

который пока не умеет вообще ничего

Можно подумать, хруст много умеет из коробки на bare metal.

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

Можно подумать

Это ж уметь надо.

хруст много умеет из коробки на bare metal.

По сравнению с ничего не умеющим Swift, Rust умеет в бесконечность раз больше.

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

где просто даётся нотация, описывается семантика и синтаксис языка.

Нет. «Просто описывается» - это вот тут (reference). А по тому, что я дал вполне реально изучать язык. Возможно, эта книга не подходит для людей, которые вообще никакой язык не знают - ну что ж, будем надеяться, что когда-то появятся и такие.

Какие реальные примеры и задачи нужны? В тех книгах, что я читал (по другим языкам, если что) задачки обычно примитивные. Если и попадается развитие какой-то идеи на протяжении многих глав, то опять же, её искусственность явно заметна. Как раз потому что нет смысла впихивать в учебник кучу деталей.

Если что, не хочу сказать, что лучше имеющейся литературы быть не может. Разумеется, может. Другое дело, что ситуация весьма неплохая. И для ознакомления с языком более чем достаточно.

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

Ни Go, ни Swift не являются заменой Си++.

Заменой во всех сферах - нет. Но в отдельных нишах вполне могут потеснить.

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

Опять хрустофаны суют этот букварь. Где Rust Cookbook я вас спрашиваю? Ах да, вы же никаких реальных задач ещё не придумали для своего чуда-юда, всё стандартные либы переписываете с сишки. Очередной мощщный йаязыг для онанистов.

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

Rust умеет в бесконечность раз больше

Тылгуня, меня дико смешит твоя склонность залипать на вычурное говнецо. Пытон, какамль, скаля, теперь хруст. Что ни тайтл, то абсолютно бесполезная, но мощщщная хрень. Все-таки крепко тебя в детстве ушиб PL/I.

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

Где Rust Cookbook я вас спрашиваю?
Май 2015 г.: выпуск версии Rust 1.0

В самом деле, ведь язык уже столько времени живёт.

quantum-troll ★★★★★
()

Похоже на говно. Может взлететь.

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

Gecko говно и у него высокий входной порог потому что С++, давайте придумаем новый язык и переведем ФФ на него
Firefox переходит на WebKit

И тут они узнают, что WebKit написан на ... C++.

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

А ты еще не понял? Он же просто хипстор.

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

Mozilla тут не одинока в отрицании современного C++

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

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

как будто бы «куда угодно» не означает хромиум-клоны :}

Не означает, конечно. Есть еще IE (хз как он называется сейчас).

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

вместо того чтобы браузер и почтовый клиент делать занимаются отрицанием С+

Юмор в том, что они запилили внезапно! C++, только еще более сложный, уродливый и несовместимый с сишкой. То есть даже не на ноль себя помножили, а на минусовое значение. Теперь, когда компиляторы научились в новые стандарты, плюсовики только смеются и крутят пальцам у виска при упоминании хруста. Среди сишников тем более больных нет даже тыкать палочкой в это угребище.

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

Юмор в том, что они запилили внезапно! C++, только еще более сложный, уродливый и несовместимый с сишкой.

Все те сложности, что есть в расте, есть и в плюсах. Единственная разница состоит в том, что раст не даст тебе собрать кривую программу, в отличие от компилятора С++.

Среди сишников тем более больных нет даже тыкать палочкой в это угребище.

Сишники даже простейший полиморфизм не осилили, куда им до раста или до плюсов.

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

Единственная разница состоит в том, что раст не даст тебе собрать кривую программу, в отличие от компилятора С++.

Ага, не даст и все.

https://github.com/servo/servo/issues/6087

Сишники даже простейший полиморфизм не осилили, куда им до раста или до плюсов.

У сишников ровно такой же «полиморфизм», как в Rust и С++, просто им приходится больше руками делать.

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

раст не даст тебе собрать кривую программу

О, как все запущено. Канпелятор не просто всеведающий, а еще и безгрешный. Помолимся, братья!

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

Сишники даже простейший полиморфизм не осилили

Вот, кстати, практический пример полиморфизма в С:

https://www.sqlite.org/capi3ref.html#sqlite3_vfs

Чем не экземпляр класса с полями и виртуальными методами. Про всякие GObject и говорить не стоит.

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

ИИ наконец то изобрели, ура! И кто, жопоходцы из Мозиллы (не осилившие плюсы), ну надо же.

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

О, как все запущено. Канпелятор не просто всеведающий, а еще и безгрешный. Помолимся, братья!

Ну в данном случае, очевидно, имелась ввиду работа с памятью. Вот только там где не надо заморачиваться с ручным управлением, - есть GC и ARC. А в случае с Rust ты либо тупо пишешь unsafe код и забиваешь на безопасность, либо явно выбрал не тот язык.

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

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

А ты думаешь гугол им за что донатит?

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

Юмор в том, что они запилили внезапно! C++, только еще более сложный, уродливый и несовместимый с сишкой. То есть даже не на ноль себя помножили, а на минусовое значение.

Две дилды этому садомиту!!!

А еще там явно какой-то юношеский максимализм проглядывает: написать свой язык, свой пакетный менеджер, свою безопасную ОС, и чтоб ни с чем не совместимо было обязятельно!

Хотя нет, ffi там все таки есть...

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

там где не надо заморачиваться с ручным управлением, - есть GC и ARC. А в случае с Rust ты либо тупо пишешь unsafe код и забиваешь на безопасность, либо явно выбрал не тот язык.

А расскажи, чем тебя не устроили Rc и Arc из Rust.

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

Сказал анонимус, также не осиливший плюсы.

Телепаты в треде, всем одеть шапочки из фольги!

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

Также? То есть факт неосиляторства мозильников ты не оспариваешь? Вот засада, даже верные фаны чморят мозилоидов :-)

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

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

quantum-troll ★★★★★
()

Кто-нибудь пробовал экспериментальный плагин от IntelliJ? Я его собирал, но идея его кушать отказалась.

trycatch ★★★
()
Ответ на: комментарий от quantum-troll

Все те сложности, что есть в расте, есть и в плюсах.

Нет.

Единственная разница состоит в том, что раст не даст тебе собрать кривую программу, в отличие от компилятора С++.

Даст.

Тут кстати Александреску интевью давал, про раст там тоже есть: https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-...

shkolnick-kun ★★★★★
()
Ответ на: комментарий от quantum-troll

Ну ё-мае, опять ты со своим ад-хок полиморфизмом и static vs dynamic dispatch.

Как тесен мир все таки.

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

А расскажи, чем тебя не устроили Rc и Arc из Rust.

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

struct MutDnaSeqs<'a> { s: &'a mut [u8] }
fn mut_dna_seqs<'a>(s: &'a mut [u8]) -> MutDnaSeqs<'a> {
    MutDnaSeqs { s: s }
}
impl<'a> Iterator for MutDnaSeqs<'a> {
    type Item = &'a mut [u8];

    fn next(&mut self) -> Option<&'a mut [u8]> {
        let tmp = std::mem::replace(&mut self.s, &mut []);
        let tmp = match memchr(tmp, b'\n') {
            Some(i) => &mut tmp[i + 1 ..],
            None => return None,
        };
        let (seq, tmp) = match memchr(tmp, b'>') {
            Some(i) => tmp.split_at_mut(i),
            None => {
                let len = tmp.len();
                tmp.split_at_mut(len)
            }
        };
        self.s = tmp;
        Some(seq)
    }

некомфортно, при том, что код сам по себе простой. Конечно, это чисто субъективно.

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

ад-хок полиморфизмом

Почему именно ад-хок? В параметрический сишники также не умеют.

И еще раз даст.

Тебе не надоело постить древнюю ошибку, связанную с unsafe-кодом в стандартной библиотеке?

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

void *pAppData;

Окей.

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

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