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)

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

Взято отсюда: https://news.ycombinator.com/item?id=2390980

Там, кстати, засветился некто Патрик Валтон: http://pcwalton.github.io/

Очевидно, что в то время Go и Rust были нацелены на одну и ту же нишу, но потом что-то пошло не так языки развели по нишам и получилось так:

https://github.com/search?utf8=✓&q=rust OS&type=Repositories&ref=...

https://github.com/search?utf8=✓&q=go OS&type=Repositories&ref=se...

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

Как по мне, хайп вокруг go затих даже быстрее хайпа вокруг nodejs.

Да пофиг, главное что на го и ноде пишут вовсю, а про раст пока одна болтовня, только чудовищные хелловорлды иногда проскакивают.

А уж на лоре так вообще штаб-квартира его фанатов

Огласите весь список, пжалста. Вижу пару-тройку юзеров, форсящих его уже не первый год. Что именно они на нем пишут не признаются.

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

Колобок, когда Пайк говорит про пригодность для системного программирования, он имеет в виду пригодность для написания утилит Plan 9. И что забавно, го до сих пор его поддерживает.
Мозиловцы, говоря «системное программирование», имеют в виду нечто другое.

Когда там в Rust unsafe появился?

Ну поищи по коммитам, это совсем не сложно.

Там, кстати, засветился некто Патрик Валтон: http://pcwalton.github.io/

Я тебе больше скажу, в разработке раста активно участвовал ещё один человек не из мозиллы. Он правда потом ушёл, хлопнув дверью.

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

Интересно, а гонка версий файрфокса не является ли плавной подготовкой к хромированию? Вот сейчас они почти сравнялись, плюс ещё готовится унификация расширений. Таким макаром в районе 50-х версий можно легким движением руки заменить движок, и большинство юзеров не заметит даже. Тут то и сказочке конец.

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

Официальный мануал тоже эволюционирует, будет и нормальная литература.

По сути, осталось только подождать, пока кто-нибудь не соберёт воедино то, что по трём книгам раскидано, и не выпустит это в PDF

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

Ну в логику закапывания мозиллы укладывается:

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

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

shkolnick-kun ★★★★★
()

Здравствуйте!

Добро делать спешить должно. Александр Суворов.

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

Ага, именно поэтому в Go до 2011 года была возможность работы на голом железе.

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

Вот, кстати, насчет Go и системного программиррования: https://groups.google.com/forum/#!topic/golang-dev/csXFw1XPEmI

It is unmaintained and untested, and I think it's broken too.

Вот такое системное программирование с Go. Кстати, на голом железе можно пускать и Lua, и Common Lisp, и Python - по твоей логике, всё это языки системного программирования.

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

I'm glad that systems languages are getting a little more love these days. However, I'm a little saddened to see that no one seems to want to write a language that can also be used at the write-a-kernel level. Both Rust and GoLang have expressly made this a non-goal[1][2].

Вырываешь такой фразу из контекста, и ты уже опроверг оппонента.

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

pcwalton 1759 days ago

I think you could write a kernel in Rust (though you'd need to add unsafe pointers, direct calls, and possibly other stuff to the language), it's just not a goal of the project. There's no reason why I wouldn't accept patches to the language that would help in that effort as long as they didn't wildly conflict with the main goals of the project.

Системный такой язык, но не для ядерного кода.

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

Вырываешь такой фразу из контекста,

не вырывай.

pcwalton 1759 days ago

I think you could write a kernel in Rust (though you'd need to add unsafe pointers, direct calls, and possibly other stuff to the language), it's just not a goal of the project.

Системный такой язык, но не для ядерного кода.

define системный. А так да, цель проекта «разработка языка для реализации Servo», на котором работал Уолтон... ну ты понел. А язык разрабатывался Хоаром.

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

Тэйлгунер, ты ссылки из ОП-поста читал?

Applications using Rust in the embedded space, as well as those writing operating systems, often eschew libstd, using only libcore.

libcore being stabilized is a major step towards being able to write the lowest levels of software using stable Rust. There’s still future work to be done, however.

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

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

Тэйлгунер, ты ссылки из ОП-поста читал?

Да. Но спор с shkolnick-kun относится к древним временам - 2012 год и раньше.

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

Создатели указывают _текущую_ область применения. А я еще помню, как в девелоперский лист первый раз пришел человек и сказал «гляньте, я Rust на голом микроконтроллере запустил».

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

Ну ё-маё, я с 4 страницы объясняю про «тогда» и «сейчас», пытаясь анализировать возможные причины.

А вы все конспироложество, конспироложество...

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

There has been a weird tension at least since I started following the mailing list I distinctly remember a post /u/strncat made advocating the use of native threads and getting rid of the dependency on libuv somewhere around 0.5 or 0.6...

Раст стал таким плюсовым не без участия strcat'а. Который, напомню, даже не мозилловец.

quantum-troll ★★★★★
()
Последнее исправление: quantum-troll (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

define системный.

This!

По этому определению Rust системный с самого начала.

я с 4 страницы объясняю про «тогда» и «сейчас»

Ты излагаешь чушь вроде этой:

shkolnick-kun> То есть мозилле был нужен язык для браузера, прикладной то есть.

shkolnick-kun> Было это 2010 году, и только через джва года, ДЖВА, КАРЛ.

shkolnick-kun> Появляется Rust, как системный язык!

При этом сам даешь ссылки на статьи начала 2011 года, когда Rust уже называется «системным языком». Получается шизофренично.

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

не без участия strcat'а

strncat'а :)

Более похожим на С++.

Например? ЕМНИП, strncat занимался в основном рантаймом. Похоронил зеленые нити, например.

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

Похоронил зеленые нити, например.

Одного этого совсем не мало.

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

Тогда не понятно, зачем его пытаются впихнуть в Сишную нишу...

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

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

Есть разные системные: для кого-то это GRUB, Linux, newlib, а для кого-то это платформа prognoz, например.

Что касается Rust, то я отталкивался от статьи из педивикии:

The goal of Rust is to be a good language for the creation of large client and server programs that run over the Internet.

Появляется Rust, как системный язык!

Это значит, что там появились unsafe, asm, raw pointers, и прочие фичи, необходимые для:

write a kernel in Rust

То есть в рамках системного есть минимум 2 ниши, и в марте 2011 из Go уже выпилили соответствующие возможности, а в Rust их еще не было...

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

А дальше Rust начали переводить в «ядерную» нишу путем добавления необходимых фич.

А потом все заверте...

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

Нормальный такой шум XD

Ну давай посмотрим вместе. Из двадцати первых проектов: раст - почти половина не имеет отношения к ОС (rust-osc, Rust-iOS-Example, core-foundation-rs, rust-sandbox, osmpbfreader-rs, io-surface-rs, rust-osm, readline). Для Го ещё веселее.

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

Книга не вышла планируется на август. Потом ждать когда его преведут.

Я думал, только моя бабушка переводные книги читает.

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

В том и соль, что для Go их не видно ни одной, а на Rust [почти] каждый хипстор пытается написать свое ядро с переключением контекста и потоками.

То есть смена ЦА и ниши прошла успешно.

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

Куча хлама, интересного только 2.5 хипстерам.

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

Есть разные системные

Поздно вилять. Тебя просили определить, что это, и ты определил: «systems programming aims to produce software and software platforms which provide services to other software, are performance constrained, or usually both».

Это значит, что там появились unsafe, asm, raw pointers, и прочие фичи

А что, в современном Rust есть asm? Не знал. А unsafe pointers есть уже в rust 0.1 (первый self-hosted релиз, 20.01.2012), см. doc/tutorial.md.

То есть в рамках системного есть минимум 2 ниши, и в марте 2011 из Go уже выпилили соответствующие возможности

untested и unmaintained код.

а в Rust их еще не было...

Были.

Ну, Си-хейтерам виднее, гыгык.

У приличного Си-хейтера лет 10 опыта работы на Си, а у некоторых и 15+.

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

А что, в современном Rust есть asm?

А то: https://doc.rust-lang.org/book/inline-assembly.html

untested и unmaintained код.

В котором была заинтересована часть «сообщества», о чем свидетельствует драма в комментах к code review... То есть «Корпорации добра» было #Нинужно и код выпилили.

Были

Не было. Без unsafe, raw pointers и asm невозможно писать ядерный код без применения Си. Unsafe появился в Rust только в октябре 2011 а в марте его еще небыло в проекте, о чем красноречиво говорит @pcwalton.

У приличного Си-хейтера лет 10 опыта работы на Си, а у некоторых и 15+.

Ты с крестами не путаешь часом?

shkolnick-kun ★★★★★
()

А мне вот стало интересно, руст также быстр в плане скорости облысения программиста, как цепепе? :-) Кто больше облысеет после 2-х лет нагрузки на мозг от причуд и догм языка программирования, программист на руст или программист на цепепе? :-)

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

Не было

То есть ты не смотрел. Ну окей, фантазируй дальше.

У приличного Си-хейтера лет 10 опыта работы на Си, а у некоторых и 15+.

Ты с крестами не путаешь часом?

Нет. Си++11 - это просто щастье по сравнению с Си.

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

Нет. Си++11 - это просто щастье по сравнению с Си.

А правда, что даже можно будет делать так

auto auto(auto)
{
  auto;
}
и компилятор сам напишет код? :-)

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

А правда, что даже можно будет делать так

Да ты уже так делаешь.

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

То есть ты не смотрел. Ну окей, фантазируй дальше.

Вот тут поясняют, что unsafe запилили 12 октября 2011: Rust 1.6 (комментарий)

До этого момента 2 остальные фичи вводить было бессмысленно. FFI не считается, даже если он был до этого, т.к. подразумевает использование C или C++ c extern «C».

Нет. Си++11 - это просто щастье по сравнению с Си.

А С++14 - вообще концентрированный эндорфин.

Си-хейтеры это крестогеи в основном, тут как у волков с лисами, — близкие виды терпеть друг друга не могут.

И Rust как раз для них и делали, и им он очень даже нравится.

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

А С++14 - вообще концентрированный эндорфин.

Нет, это 1300 головокружительных страниц стандарта, полных под завязку угловых скобок :-)

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

А что, в современном Rust есть asm?

А то: https://doc.rust-lang.org/book/inline-assembly.html

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

Вот тут поясняют, что unsafe запилили 12 октября 2011

Я написал не «unsаfe block», а «unsafe pointer» - T *. Впрочем, квалификатор unsafe был уже в rustboot в 2010. Конечно, это не тот unsafe, что сейчас, но он был.

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

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

Ценят его в основном люди с бэкграундом в ML/Haskell.

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

Нет, это 1300 головокружительных страниц стандарта, полных под завязку угловых скобок :-)

Очередной неосилятор. Прыще C++14 только Git.

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