LINUX.ORG.RU

Вышел Rust 1.0

 , ,


12

10

15 мая 2015 года, в соответствии с планом, вышел публичный релиз Rust 1.0 - языка программирования общего назначения, разрабатываемого Mozilla совместно с сообществом. Язык ориентирован на разработку безопасных и эффективных приложений, имеет развитую систему типов, оптимизирующий кодогенератор на основе llvm и предоставляет расширенные гарантии потокобезопасности и безопасного доступа к памяти без использования сборщика мусора. В частности, Mozilla использует Rust для разработки браузерного движка следующего поколения servo.

Выход релиза 1.0 означает стабилизацию языка и стандартной библиотеки, их дальнейшее развитие будет происходить с сохранением обратной совместимости. В то же время, выход релиза не означает остановки развития языка - одновременно с релизом 1.0 разработчики выпустили бета-версию Rust 1.1, и в дальнейшем планируют выпускать новую версию каждые 6 недель. Среди ожидаемых изменений - заметное уменьшение времени компиляции и дальнейшее расширение стандартной библиотеки.

Перед релизом сообществом была проделана большая работа по обновлению пакетов в официальном репозитории crates.io , где подавляющее большинство из 2000 пакетов приведены в соответствие с версией 1.0. Онлайн-компилятор play.rust-lang.org претерпел редизайн и теперь позволяет выбирать между версиями компилятора. Менеджер пакетов и система сборки cargo так же получил ряд улучшений. Большинство популярных редакторов уже имеют полноценную поддержку языка, с подсветкой ошибок и автодополнением на основе racer, дополнительно вчера вышел Visual Rust 0.1 - расширение для поддержки Rust в Visual Studio. Официальная документация (The Book, The Rust Reference, Rust By Example и документация стандартной библиотеки) была приведена в соответствие со стабильным релизом, сегодня же стала доступна для предзаказа книга Programming Rust издательства O'Reilly, выход которой ожидается в ноябре 2015 года.

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

Официальный сайт: http://rust-lang.org/.

Примечания к релизу: https://github.com/rust-lang/rust/blob/master/RELEASES.md.

Ссылка на скачивание: http://www.rust-lang.org/install.html.

Официальная документация: http://doc.rust-lang.org/stable/.

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



Проверено: maxcom ()
Последнее исправление: cetjs2 (всего исправлений: 14)

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

планируют выпускать новую версию каждые 6 недель

Ну это пиздец

Ну давай будем выпускать новый стандарт С каждые шесть недель.

Каким образом связаны стандарт языка и версия компилятора?

Вангую жуткую кашу в головах программеров на этом по итогу.

В некоторых головах она уже.

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

ANSI C? Хардкор? Только K&R! Точнее, ассемблер. Ещё точнее, только программирование прямо опкодах. Под VLIW. Без словаря. Намагниченной иглой по поверхности вращающегося блина HDD. Без рук, с завязанными глазами и под бутиратом.

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

Ага, Фауст, щас. А где его анонс на ЛОР'е? Уже даже Rust, который позиционируют как «убийца C++» закоментирован тут до дыр (убивать он, видимо, будет с помощью своего синтаксиса, ибо он и вправду более убийственный, чем у плюсов).

Все нормальные проекты анонсируют на ЛОР'е, нет анонса на LOR'е - проект аццтой.

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

Если он такой гуру, то какой у него логин на LOR'е?

anonymous
()

Моё мнение по поводу Rust:

Язык черезвучайно усложнён. Lifetime analysis, всякие вливания из функциональных языков, код излишне перегружен специальными символами. И всё бы хорошо, но нужно изучить слишком много новой фигни, чтобы начать программировать на Rust. Статьи, которыя я читал по Расту, всё время обсуждают, как правильно объекты передавать туда и сюда, и как круто и больно компилятор бъёт тебя по рукам (и всяким другим местам, BDSM прямо какой-то). Столько всяких классков относящихся к lifetime, что голова может пойти кругом: Rc, Box, Ref, Cell, RefCell, RefMut, UnsafeCell.

Я хорошо знаю C++, но чтобы так же хорошо узнать Rust, нужно изучить ещё больше. Встаёт вопрос: нафига. А есть же люди, которые даже и C++ неасилили. Для них осилить Rust - неподъёмная задача. По этой причине Rust не взлетит. Откуда люди пойдут на Rust? Некоторые с C++, некоторые с Haskell. А больше людей, желающих решать головоломки вместо того, чтобы чтобы писать что-то действительно полезное, не найти.

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

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

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

C99 это тоже ANSI стандарт.

ANSI C это общепринятое название стандарта 89/90 года

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

Большая часть орущих, что С++ не нужен с ним толком и не знакомы.

Вы опрометчиво не считаете это проблемой. Системное программирование - не такая большая ниша. А в прикладном плюсы всё сильнее вытесняются Java/C#. Блин, сейчас даже игры всерьёз пишут на Unity3D, C#. Лет десять назад я бы не поверил.

Такие люди на раст пересаживаться всё равно не будут.

И опять-таки очень опрометчивое самоуспокоение. Не важно будут ли пересаживаться (добровольно) с плюсов текущие программисты. Если новые не приходят - язык мёртв. Просто труп языка похож на белый карлик. Это уже огарок, но светить он может ещё очень долго. Я напомню цитату из блога компании PVS-Studio, как мы понимаем, компании, серьёзно занимающейся разработкой и продвижением инструмента для программистов на плюсах и точно держащей руку на пульсе всех плюсовых тем:

Пару раз на конференции при неформальном общении в холле или за обеденным столом меня спрашивали: «Неужели кто-то ещё программирует на Си++?». И искренне удивлялись, когда я отвечал: «да, и это один из самых используемых языков». Просто он как-то сегодня не на слуху. Кругом php, ruby, go. Кажется, что Си++ — это «было давно и не правда». И мне приятно, что люди лишний раз увидят в статье, что, например, Acronis Backup написан на Си++ и над этим постоянно трудится 70 программистов. Сам я о будущем Си и Си++ не переживаю. Мне просто удивительно, как так выходит, что многие считают Си++ мёртвым языком.

http://habrahabr.ru/company/pvs-studio/blog/239407/

Вот так вот. Он не переживает, но ему удивительно. Прямо таки классика, стадия первая: Отрицание. :-D

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

Плюснутые студеты (по уму) как всегда, не в курсе внутреннестей объекта своего фапа (а че, это же плюсы, тама усе по умолчанию быстро!!!)?

Т.е. о том, что в кутях все сводится к использованию qt_safe_select => т.е на сабже, к использованию pselect, слыхом не слыхали?

Ну тогда открою еще одну тайну великую: https://github.com/torvalds/linux/blob/4f671fe2f9523a1ea206f63fe60a7c7b3a56d5...

do_pselect -> core_sys_select ->do_select -> for(;;) 

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

do_pselect -> core_sys_select ->do_select -> for(;;)

И почему это плохо?

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

Ну синтаксис все таки не самая сильная черта Rust, мягко скажем.

Лично меня раздражают только некоторые вещи: экономия на буквах, например, ty для type или stmt для statement (при этом fn вполне нравится) и тройное указание типа для where. Ну и макросы, «на первый взгляд», не слишком легко читаются. В остальном всё более-менее обычно.

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

Вот меня это и смущает. Зачем это исключение?

Ну я не знаю. (:

Подозреваю, что для «простых» типов решили сэкономить одно нажатие шифта. str и правда чаще встречаться будет, чем String.

А так меня тоже многое раздражало поначалу. Потом свыкался. Собственно, это везде так.

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

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

И какой же геморрой от мутабельных строк?

Ну и у раста тут подход, «как у С++», в том смысле, иммутабельность на уровне объектов, а не типов. По моему, это вполне удобно.

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

О какой эффективности может идти речь если надо постоянно аллоцировать память в куче?

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

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

А в прикладном плюсы всё сильнее вытесняются Java/C#.

Что из софта на твоем компе написано на Java/C#?

Блин, сейчас даже игры всерьёз пишут на Unity3D, C#.

XNA умер, а в Unity3D на C# пишется только игровая логика, само ядро вполне себе C++, и даже при этом игры на Unity тормозные и жрущие память, потому что вынуждены тянуть с собой среду mono

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

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

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

Вот Rust как раз сложная технология с довольно человечным интерфейсом.

Смотря, что считать началом «интерфейса»...

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

Вангую жуткую кашу в головах программеров на этом по итогу.

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

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

В C++ shared_ptr только по желанию, да и с ним можно накопировать объектов когда не надо. Кроме того никто не мешает тебе в C++ вернуть указатель на локальную переменную в стеке в качестве результата или выстрелить себе в ногу иным спсобом при работе с памятью.
Так что нет, не такой же.

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

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

И чем это плохо?

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

Я хорошо знаю C++, но чтобы так же хорошо узнать Rust, нужно изучить ещё больше.

Нет.

DarkEld3r ★★★★★
()

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

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

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

Вы опрометчиво не считаете это проблемой.

Что именно?

Уверен, что работы «на плюсах» на мой век хватит. Впрочем, я не против пересесть на раст, если что. Не надо автоматически записывать людей в фанбои/хейтеры в зависимости от одного комментария.

Если новые не приходят - язык мёртв.

По моему опыту вполне приходят.

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

В C++ shared_ptr только по желанию

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

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

Вышел Rust 1.0 (комментарий) Раст проще по памяти хотя бы потому, что разименовать освобожденный указатель не используя unsafe {} крайне сложно, даже если делать это специально.

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

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

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

Ну а возможность вернуть указатель на стековую переменную плюсом язык я бы не считал.

А я и не в положительном контексте это описывал.

В расте, внезапно, тоже.

А как еще в расте полноценно запилить объект в куче и иметь на него несколько ссылок? У box время жизни жестко ограничено.

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

Что из софта на твоем компе написано на Java/C#?

На Java у меня точно написан Eclipse. :) На mono - Pinta.

а в Unity3D на C# пишется только игровая логика

Т.е. собственно то, чем пользуются купившие/взявшие Unity3D.

игры на Unity тормозные и жрущие память, потому что вынуждены тянуть с собой среду mono

Ага. Всё очень печально. Только развитие Unity3D вынудило старичков CryEngine/Unreal Engine подвинуться и изменить политику лицензирования.

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

Уверен, что работы «на плюсах» на мой век хватит.

Ну тут мало кому стоит беспокоиться. Даже cobol обеспечил своим адептам «программирование до смерти». И ещё не хватило даже. :)

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

Ну, новую полноценную IDE сомневаюсь что кто-то начнёт пилить специально под Rust. А вот поддержку в уже существующие, думаю, добавят в ближайшие пару лет.

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

Столько всяких классков относящихся к lifetime, что голова может пойти кругом: Rc, Box, Ref, Cell, RefCell, RefMut, UnsafeCell.

Но ведь всё это — вполне естественные и очевидные вещи, если понимаешь, как работает управление памятью.

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

Ведь обычно сборщик мусора, это когда что-то крутится в другом потоке и в непредвиденный момент времени теребит твою память.

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

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

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

На Java у меня точно написан Eclipse. :) На mono - Pinta.

ого как много, ну точно C++ загибается

Только развитие Unity3D вынудило старичков CryEngine/Unreal Engine подвинуться и изменить политику лицензирования.

наверное скоро вынудит переписать движки на C# :)

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

Посмотрите сколько проектов на Go хостятся на github, а так-же на то что часть ребят, что увлекались нодой, теперь вдруг резво стали ковырять Go. Думаю, не менее знаковым явлением можно считать что, что на Go стали кодить ребята из компаний вроде Google и Yandex. Так что да, Go популярен. Не так как C/C++ или Python, но стоит учитывать что его популярность растёт.

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

Столько всяких классков относящихся к lifetime, что голова может пойти кругом: Rc, Box, Ref, Cell, RefCell, RefMut, UnsafeCell.
Я хорошо знаю C++

Если хорошо знаете С++, значит должны знать, что там не меньше типов указателей: *, &, shared_ptr, weak_ptr, unique_ptr. И это только в стандартной библиотеке. + 6 видов указателей в boost + 7 в Qt. Они конечно во многом подобны, но не идентичны.

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

Ну, не велика заслуга перегнать D. Вот когда он станет популярней чем Objective C - это будет явным признаком успеха.

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

Ну а возможность вернуть указатель на стековую переменную плюсом язык я бы не считал.

gcc по умолчанию даст тебе сделать такое, но выдаст предупреждение. Rust, скорее всего даст только при явном указании unsafe (или как-то так). Особой разницы я не вижу.

P.S. IMHO, компилятор должен давать возможность делать что угодно, но выдавать предупреждения в сомнительных случаях, чтобы предостерегать от глупых ошибок.

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

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

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

anonymous
()

Отличный тред, дискуссия уже на 8 страниц, причем ни одного хохлосрача!

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

никто не запрещает тебе использовать библиотеку не по назначению, если тебе так хочется. но это не отменяет того что основное направление бибилиотеки - десктопные приложения. это можно заметить хотябы по то тому что в Qt (в отличие от других фреймворков) нет http сервера, только http клиент. тебе в любом случае придется подключать что-либо строннее, либо реализовывать очередной велосипед самостоятельно.

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

написали бы компилятор, который переводит из языка с простым и понятным синтаксисом в C++

Чем тебя не устраивает компилятор, который переводит из языка с простым и понятным синтаксисом в машинный код?

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

Чем тебя не устраивает компилятор, который переводит из языка с простым и понятным синтаксисом в машинный код?

Во-первых, цель такого компилятора только в том, чтобы превратить сложный синтаксис C++ в более простой. Не меняя очень мощной семантики плюсов.

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

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