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 ()

Ответ на: комментарий от entefeed

Не развивалась. Мажорный релиз — пара фич, минорный — два багфикса. То же самое и останется.

anonymous ()

разработчики
часто

им кто-то пользуется? еще и часто?

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

https://news.ycombinator.com/item?id=9740429

+if CONFIG['MOZ_RUST']:
+    SOURCES += [
+        'binding/MP4Metadata.rs',
+    ]
+

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

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

Используешь релиз - нестабильные даже не увидишь

Т.е. в релизе нет базовой библиотеки? А зачем он тогда нужен вообще?

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

не пустили к изготовлению рабочего продукта

Ты забыл добавить «промышленного».

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

Т.е. в релизе нет базовой библиотеки? А зачем он тогда нужен вообще?

Как ты такие выводы сделал? Ещё раз: в стандартной библиотеке есть, условно, функции foo и bar. Первая стабильная, вторая - нет. (Не)стабильность в языке на уровне типов/модулей/функций, а не на уровней всей библиотеки.

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

Я лишь имею в виду то, что релиз = стабильность компонент. Тут релизы уже, судя по всему, были (ибо 1.6), а стабильность почему-то только сейчас появилась.

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

Я лишь имею в виду то, что релиз = стабильность компонент. Тут релизы уже, судя по всему, были (ибо 1.6), а стабильность почему-то только сейчас появилась.

Всё-таки советую почитать матчасть, чтобы не делать таких заявлений. Попробую обьяснить ещё раз: стандартная библиотека стала стабильной с 1.0. libcore, о которой речь, это деталь реализации. Ранее она была «нестабильной», чтобы не слишком связывать разработчикам руки. С таким же успехом, она могла вообще быть недоступна. А сейчас стабилизировали. В чём проблема?

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

Из 1 поста:

Стандартная библиотека Rust состоит из двух уровней: небольшая базовая библиотека libcore и полная стандартная библиотека libstd, которая построена на основе libcore.

Самым большим нововведением в 1.6 является стабилизация libcore.

Часть стандартной библиотеки была не стабильна до 1.6. С этим-то спорить не будешь?

Моё мнение таково: если часть не стабильна, то и целое стабильно быть не может.

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

вообще-то можешь делать, почти что хочешь, MIT, Apache...

Ты это серьёзно? Смысл мне делать «всё что хочу», если поддерживать придётся самому. Речь о другом была - человек сказал в Swift «вносить изменения может любой». Вот и мне стало интересно насколько реально свои идеи протолкнуть в основную ветку, а не форкнуть и сделать для себя. В расте с этим как раз нормально.

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

Часть стандартной библиотеки была не стабильна до 1.6. С этим-то спорить не будешь?

Ты до*бался до неудачной формулировки. Ну окей...

Моё мнение таково: если часть не стабильна, то и целое стабильно быть не может.

А никто и не обещал стабильности «целого», что бы ты под этим не понимал. Обещали стабильность интерфейсов libstd - к этому претензии есть, или мимокрокодил?

tailgunner ★★★★★ ()

Ещё один язык. Говорят в средневековом Китае тому, кто придумывал новый иероглиф делали секир-башка. Пора перенимать традиции.

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

С этим-то спорить не будешь?

Буду. Потому что «нестабильные части» остались и после 1.6.

Моё мнение таково: если часть не стабильна, то и целое стабильно быть не может.

Ты точно не троллишь?

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

В расте такие вещи не обязательно скрывать - они просто помечаются нестабильными. Дальше это уже сознательно решение: или используем релиз, пользуемся стабильным АПИ и спим спокойно. Или используем «ночные билды» и нестабильные вещи и готовимся регулярно чинить свой код.

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

Переведу. В будущем мы планируем заменять компоненты в Gecko компонентами, написанными на Rust, общими с Servo.

Где тут написано, что FF переведут на Servo? Правильно, нигде.

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

Где тут написано, что FF переведут на Servo?

А где разница между утверждениями «все компоненты Servo попадут в Firefox» и «Firefox переведут на Servo»?

tailgunner ★★★★★ ()

Учебник

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

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

Ну не обязательно самому, можно держать свою ветку и если всем остальным нравится, они сами коммитеть будут(может и нет), я в дополнение того, что в swift тоже Open Source "(Apache 2.0 with a Runtime Library Exception)", но изначальных прав свободного сообщества там нет(не у rust, не у swift), поэтому все что бы ты не делал/изменял будет у тебя, либо украдено. То есть, сие, почти, одно...

svicer ()
Ответ на: Учебник от anonymous

«но оно не поможет выучить язык.» «оно» это вы?

svicer ()
Ответ на: Учебник от anonymous

Есть ли учебники по этому языку?

https://github.com/ctjhoa/rust-learning

Сюда смотрел? Ну и если под «описанием языка» ты подразумеваешь вот это, то по нему вполне можно изучать язык. Это не сухая спека/стандарт, там вполне приводятся примеры и всё более-менее разжёвывается.

DarkEld3r ★★★★★ ()

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

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

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

Почему?

DarkEld3r ★★★★★ ()

Так, анонимы, перемещаемся из треда про C сюда!!1

anonymous ()

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

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

одним из майнфреймовых языков

майнфреймовых

лицорука.ткст

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

А где разница между утверждениями «все компоненты Servo попадут в Firefox» и «Firefox переведут на Servo»?

А где там «все»? Очевидно будет некоторый пересекающийся код. Мелкие компоненты, которые можно использовать там и там. Движок это во-первых рендеринг (HTML+CSS+SVG+..), во-вторых это JavaScript. Это не компонент и он практически не делится. Более того, по ссылке написана истинная судьба Servo:

Determine product opportunities for a standalone Servo browser or embeddable library (e.g., for Android).

Т.е. подумать над тем, можно ли выпустить браузер с движком Servo или библиотеку, например для андроида. Т.е. если Mozilla и выпустит браузер, то это будет отдельный продукт, а не FF. И, скорее всего, не для десктопа.

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

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

Так, анонимы, перемещаемся из треда про C сюда!!1

Это там, где облажались все участники дискуссии?

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

А где разница между утверждениями «все компоненты Servo попадут в Firefox» и «Firefox переведут на Servo»?

А где там «все»?

А сколько в процентах надо?

Движок это

А причем тут «движок», особенно в твоем понимании? Servo - это layout engine и перевод Firefox на него принципиально возможен.

во-первых рендеринг (HTML+CSS+SVG+..), во-вторых это JavaScript

В Servo нет своей реализации JavaScript.

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

Никто точно не знает, что это будет. Но если в Firefox заменят Gecko на Servo, это будет именно «Firefox, переведенный на Servo», и неважно, какой лейбл на него прилепят.

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

https://github.com/ctjhoa/rust-learning Сюда смотрел? Ну и если под «описанием языка» ты подразумеваешь вот это, то по нему вполне можно изучать язык. Это не сухая спека/стандарт, там вполне приводятся примеры и всё более-менее разжёвывается.

Туда и туда смотрел. Ты мне дал русской перевод и английский оригинал чтива, где просто даётся нотация, описывается семантика и синтаксис языка. Этого недостаточно.

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

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

Переведу. В будущем мы планируем заменять компоненты в Gecko компонентами, написанными на Rust, общими с Servo.

Одному мне кажется, что это придурь? Ну перепишите те же компоненты с нуля на C++, если старая реализация совсем плоха. Зачем изобретать велосипед и превращать старого монстра в лоскутного франкенштейна? Не могу проследить логику мозиллы во всей этой эпопее. Результаты пока ну очень эфемерные, при этом они все больше отстают от гугла и теряют рынок.

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

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

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

Ну перепишите те же компоненты с нуля на C++

  1. Ну перепишите те же компоненты с нуля на C++;
  2. Реализация совсем плоха;
  3. Перейти к 1 пункту.

Так вот, чтобы такого не получилось, нужен др. инструмент (aka Rust).

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

У других получается почему-то. Ну ладно, допустим, на C++ получается очень плохо, откуда уверенность что на Rust у них получится лучше?

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

Одному мне кажется, что это придурь? Ну перепишите те же компоненты с нуля на C++, если старая реализация совсем плоха.

Вроде бы Firefox и так на C++.

Зачем изобретать велосипед и превращать старого монстра в лоскутного франкенштейна? Не могу проследить логику мозиллы во всей этой эпопее. Результаты пока ну очень эфемерные, при этом они все больше отстают от гугла и теряют рынок.

Проблема в том, что гугл делает действительно хороший браузер. FF был хорош, когда альтернативы ему были — кривущий IE и платная Opera. Сегодня Edge это отличный браузер; Chrome это отличный браузер. Оба частично открыты. Я не говорю, что FF это плохой браузер, но у него нет каких-то объективных преимуществ сегодня. И корпорации с сотнями миллиардов долларов за спиной тоже нет. Поэтому рынок он будет терять в любом случае, пока не останется с достаточно малой долей. Как ты ему предлагаешь не отставать от гугла, который свой браузер пихает прям со страницы самого популярного в мире сайта? Или от микрософта, чей браузер тупо стоит предустановленный.

А на каком языке переписывать какой-нибудь URL парсер — во всём этом не имеет никакого значения.

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

А на каком языке переписывать какой-нибудь URL парсер — во всём этом не имеет никакого значения.

Зачем же тогда велосипед изобретать, если не имеет? Вот тут не могу понять. Казалось бы квалификация разработчиков браузера должна быть достаточной, чтобы грамотно применять современный C++. Или это просто скучно им? Придумали себе игрушку?

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

У других получается почему-то. Ну ладно, допустим, на C++ получается очень плохо, откуда уверенность что на Rust у них получится лучше?

Они уже не первый день мучаются с С++. Думаю, они знают, что делают. Всяко это лучше, чем жрать кактус, и корчить довольную гримасу. Конкуренция в мире языков программирования — всем на руку.

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

откуда уверенность что на Rust у них получится лучше?

А у кого есть эта уверенность?

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

Зачем оно нужно, если есть Swift?

Зачем нужен ты, если есть твой сосед?

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

Сегодня Edge это отличный браузер; Chrome это отличный браузер. Оба частично открыты.

Сегодня Edge это отличный браузер-шпион; Chrome это отличный браузер-зонд. Оба частично открыты.

Исправил.

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

Зачем же тогда велосипед изобретать, если не имеет? Вот тут не могу понять. Казалось бы квалификация разработчиков браузера должна быть достаточной, чтобы грамотно применять современный C++. Или это просто скучно им? Придумали себе игрушку?

Что именно ты хочешь сказать?

Что грамотный современный C++ делает Rust ненужным? Очевидно с этой точкой зрения создатели Rust-а и поддерживающие их люди в Mozilla не согласятся. Они сделали свой выбор, создали язык, написали компилятор и планируют его развивать. В общем-то и Google сделал свой язык на замену C/C++ и Apple. Т.е. Mozilla тут не одинока в отрицании современного C++.

Что не имеет смысла переписывать что-то с C++ на Rust? В целом имеет смысл, чтобы применять Rust. Это идёт как следствие предыдущего пункта. Раз язык создали, на нём нужно писать, в том числе переписывать то, что давно хотелось переписать, например. Ты же не будешь утверждать, что в любой кусок кода надо вцепляться зубами и ни в коем случае не давать его переписывать. Если давно хочется, почему бы не переписать на Rust.

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

Сегодня Edge это отличный браузер-шпион; Chrome это отличный браузер-зонд. Оба частично открыты.

Упор на это вряд ли поможет в маркетинге в современном мире, где люди радостно отдают все свои личные данные всем, кому ни попадя.

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

В общем-то и Google сделал свой язык на замену C/C++ и Apple.

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

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

Упор на это вряд ли поможет в маркетинге в современном мире, где люди радостно отдают все свои личные данные всем, кому ни попадя.

Грустно как-то! Фейсбук отлично знает когда ты кушаешь и какаешь. При удалении личной инфы, она сохраняется на серверах, на длительный срок.

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

В общем-то и Google сделал свой язык на замену C/C++ и Apple. Т.е. Mozilla тут не одинока

Намекаешь, что мозилла собезъянничала, чтобы было все как у взрослых?

Раз язык создали, на нём нужно писать

Железный довод :)

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

Ок!

Попытался переписать несколько модулей в рабочем проекте на Сишечки под Cortex-m4. Вывод, язык годен. Если baremetal будет официально поддерживаться, то буду использовать.

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

И громоптица с 2012 не развивалась, а поддерживалась. Теперь и поддерживаться нормально не будет, будут говносборочки уровня слаквари.

Раз уж у тебя так душа болит за Thunderbird, может быть ты возглавишь разработку? Для этого даже не обязательно быть квалифицированным программистом. Программистов навалом, а вот организовать и мотивировать их некому. Глядишь, появится Entefeed Foundation, платиновые спонсоры, почёт в коммьюнити. Или расскажи про свои отговорки, вместе посмеёмся.

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