LINUX.ORG.RU

Rust 1.11

 


1

5

Команда разработчиков Rust рада представить релиз Rust 1.11. Rust — это системный язык программирования, при разработке которого внимание сосредоточено на безопасности, скорости и параллелизме.

Как обычно, вы можете установить Rust 1.11 с соответствующей страницы на официальном сайте, а также посмотреть примечания к выпуску на GitHub.

Основные изменения

  • Большая часть изменений касалась пока ещё нестабильных внутренностей компилятора. Началась работа над инкрементальной компиляцей и переходом на MIR. В этом выпуске были заложены основы для этих возможностей.
  • В выпуске 1.10 был введён новый формат контейнеров cdylib, который используется при компиляции кода на Rust для встраивания в другие языки. До этого момента поддержка cdylib была реализована только в компиляторе, теперь эта возможность стала доступна и в Cargo.
  • В стандартной библиотеке изменилась функция хэширования по умолчанию с SipHash 2-4 на SipHash 1-3.

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

  • В BinaryHeap, BTreeMap, и BTreeSet добавлен метод append.
  • В BTreeMap и BTreeSet добавлен метод split_off.
  • Методы to_degrees и to_radians ранее были реализованы для f32 и f64 в libstd, теперь они также доступны в libcore.
  • В Iterator добавлены два новых метода: sum и product.
  • Cell и RefCell получили метод get_mut.
  • assert_eq!, как и assert!, теперь принимает пользовательское сообщение об ошибке.
  • Главный поток теперь называется “main” вместо “<main>”.

Cargo

  • Добавлена поддержка цвета для Windows-консолей, и вы можете теперь конфигурировать цвета для stderr так же, как и для stdout.
  • Скрипты сборки теперь могут выдавать предупреждения.
  • Как было упомянуто выше, добавлена поддержка cdylib-контейнеров.
  • Cargo теперь предотвращает публикацию контейнеров при наличии изменённых файлов или файлов, которые не являются частью рабочего дерева.

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Kilte (всего исправлений: 9)
Ответ на: комментарий от FilosofeM

цепепе конец?

Да, все ждали именно этой версии раста, теперь то заживем.

anonymous
()

Я уж думал не запостят.

Но в целом минорщина. Все заняты MIR'ом.

RazrFalcon ★★★★★
()

sage

В мининовости надо.

anonymous
()

переходом на MIR.

Это уже третий mir который я знаю. Два других утонули. Традиция?

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

И в чем польза ржавого, если оно напичкано unsafe?

Ты ничего не понимаешь! У них же на сайте написано, что он безопасный!!11

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

Тем, что unsafe можно изолировать, и предоставить наружу безопасный интерфейс.

Посмотрел на код https://github.com/SimonSapin/rust-on-bbc-microbit/search?utf8=✓&q=unsafe...

4 unsafe для обращения к железу и один, который в принципе можно заменить на test::black_box

Есть подозрение, что вы на код не смотрели.

red75prim ★★★
()

Оказывается, они до сих пор не делают оптимизаций до LLVM :(

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

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

Оказывается, они до сих пор не делают оптимизаций до LLVM

А кто делает?

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

Кактус это для сишников, растаманы просто веселые и обкуренные. Ассемблеристы, вообще, на амфетамине. jvm это кокаинум

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

И в чем польза ржавого, если оно напичкано unsafe?

В том что unsafe не является дефолтом, и компилятор проверяет - безопасный код или нет.

anonymous
()

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

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

Надо же, закон Амдала вспомнили. И мало кто вспоминает, что этот закон является формулой прироста производительности _при наличии нераспараллеливаемого кода_.

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

бывает принципиально нераспараллеливаемый код

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

tailgunner ★★★★★
()

Не взлетит, синтаксис зашлакован. Даже С++ смотрится лучше по сравнению с этим.

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

cargo

Вот он смущает. Во-первых какой-то невнятный алфавит в структуре директорий .cargo (зачем это?)

А во-вторых, опасение, что если взлетит - повторится судьба «npm hell», только «cargo hell» (хоть это и лучше засовывания тысяч perl-*, python-* пакетов в дистрибутивы, но все-равно не айс)

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

А во-вторых, опасение, что если взлетит - повторится судьба «npm hell», только «cargo hell»

Я столько раз слышал про rpm-, dpk-, и прочие dependency hells, что это стало для меня просто шумом. О чем ты говоришь, конкретно?

(хоть это и лучше засовывания тысяч perl-*, python-* пакетов в дистрибутивы, но все-равно не айс)

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

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

О чем ты говоришь, конкретно?

Об этом. Когда проекты станут зависеть от тысяч очень мелких модулей. Какая-нибудь утилита будет тянуть за собой фреймворк, который тянет 700 мегабайт зависимостей. Уследить за всем этим будет некому. Не обновлявшаяся больше пары месяцев либа в зависимостях будет вызывать страх и опасение. В один момент всё на****тся. Через пол года твой проект не соберется, т.к. все зависимости поменялись кординально. Короче, типичные проблемы js-мирка

Я как раз боюсь, что cargo будет пытаться подменять собой дистрибутивные менеджеры пакетов

Похоже уже давно началось. https://crates.io/crates/sqlite3-src

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

Я столько раз слышал про rpm-, dpk-, и прочие dependency hells, что это стало для меня просто шумом.

Это называется «привыкание». То, что ты стал менее чувствительным к проблеме, не значит что она исчезла.

anonymous
()

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

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

Уследить за всем этим будет некому.

За этим будет следить разработчик. Карго пишет, что он качает и собирает.

Не обновлявшаяся больше пары месяцев либа в зависимостях будет вызывать страх и опасение.

Зависимости задаётся с точностью до версии. Все версии либы доступны. Никаких проблем с обновлением не будет.

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

Такого быть не может. Только если разработчик криворук и задавал зависимости вида superlib = "*", вместо superlib = "1.2.3".

типичные проблемы js-мирка

«Типичный проблемы» - это создание проблем там, где их нет.

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

дубовая логика компилятора

Он статически доказывает правильность кода. Если он ругается, значит есть на что.

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

невнятный алфавит в структуре директорий .cargo

Шта? Какой еще алфавит?

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

О чем ты говоришь, конкретно?

Об этом.

Так это курьез. И в любом случае, проблема человеческая.

Через пол года твой проект не соберется, т.к. все зависимости поменялись кординально. Короче, типичные проблемы js-мирка

Это проблемы инженерной культуры. Понятно, что у жабаскриптеров и близких к ним по уровню развития веб-макак она отсутствует, ну так они и получают то, что заслужили. Заслужат это растеры - сами виноваты.

Я как раз боюсь, что cargo будет пытаться подменять собой дистрибутивные менеджеры пакетов

Похоже уже давно началось. https://crates.io/crates/sqlite3-src

Bundled dependencies - обычное дело же. Ничего хорошего, но иногда приходится использовать.

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

Зависимости задаётся с точностью до версии. Все версии либы доступны. Никаких проблем с обновлением не будет.

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

Там еще вопрос политики. У crates.io есть администрация, которая может быть предвзята. Как это было в npm. Некая компания потребовала занятое имя в npm-репе. Администрация дала, удалив существующий проект. Разработчик которого обиделся и удалил все свои проекты из npm. Вроде так

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

LOL, окромя Shotwell там парочка простеньких утилиток, калькулятор и горстка игорь аля солитер - огромный прогресс с 2006 года.

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

свыше три года в моей системе тип умного дома.

Ещё одно подтверждение того, что лишп живёт только в пределах локалхостов борщеедов.

P.S. моя система типа умного дома написана на Idris.

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

Ещё одно подтверждение того, что лишп живёт только в пределах локалхостов борщеедов

Странно видеть рядом слова «лисп» и «живет»

PS: IoT-Боярен с умным домом на 1С

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

Странно видеть рядом слова «лисп» и «живет»

Ну это как Ленин и Цой.

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

Действительно адекватнее. Но все может измениться

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

Какой еще зоопарк? Зависимости не хранятся глобально. Для каждого проекта собираются отдельно + статическая линковка = никаких либ.

Там еще вопрос политики.

Ох... Там можно вообще далеко зайти. Параноик - держите локальное зеркало.

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