LINUX.ORG.RU

Альфа-версия Rust 1.0

 


2

6

9 января тихо и незаметно вышла альфа-версия Rust 1.0. Этот релиз является этапным в том смысле, что набор возможностей языка зафиксирован и в версиях 1.x значительных несовместимых изменений больше не будет (см. ниже); то же относится и к стандартной библиотеке. Гарантии стабильности означают, что Rust уже можно изучать, не опасаясь скорого устаревания полученных знаний из-за эволюции языка.

Тем не менее, апгрейд в линии от альфа-версии до финальной версии может вызвать мелкие несовместимости (Sync/Send changes, переименование uint/int в usize/isize), но все проблемы планируется решить до выпуска 1.0.

Основные изменения со времени предыдущего релиза:

  • улучшенная поддержка массивов и подобных им контейнеров в языке: DST
  • унификация трейтов и замыканий в виде unboxed closures: теперь замыкания - это просто объекты, реализующие определенные трейты

Полный список изменений с подробным их описанием по ссылке:

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

★★★★★

Проверено: JB ()
Последнее исправление: JB (всего исправлений: 1)

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

Firefox с крестов уже начали на Rust переписывать?

Переписывать-то зачем? А новый на Rust пишут, да.

tailgunner ★★★★★
() автор топика

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

a1batross ★★★★★
()

вика пишет:

в 2010 году язык был официально представлен на Mozilla Summit 2010[7].

и всего через 5(пять) лет вышла альфа 1.0.

Простите, а сколько лет ждать релиза?

emulek
()

Yehuda Katz and Steve Klabnik are joining the Rust Core Team

ого, Кац — способный чел, не знал, что и он обмазываться решил, успехов.

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

Если цель зарабатывать на нем - то пока что Го. Он ПХП нашего времени. А если для самосовершенствования - то углубленным си и растом )

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

А когда в Rust запилят нормальный автовывод типов?

«Нормальный» - это как в Хаскеле? Тогда никогда.

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

так чем лучше с 0 обмазываться (при базовом знании Си), рустом или го?

руст лучше. Он может ФП!

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

«Нормальный» - это как в Хаскеле?

Haskell, семейство ML и так далее.

Тогда никогда.

Почему? Какие-то фичи системы типов Rust этому припятствуют?

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

так чем лучше с 0 обмазываться (при базовом знании Си), рустом или го?

зависит от задач, если нужна замена Python (грубо говоря), при условии некритичности библиотек - тогда лучше брать Go, иначе Rust, но для вкуривания Rust нужно приложить сильно больше усилий (что впрочем даже хорошо, если целью является поднятие собственного уровня)

shty ★★★★★
()

выйдет релиз 1.0, надо будет глянуть, правда дальше «посмотреть» я уверен не дойдет, области применения не вижу

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

Обмазывать лучше чем-нибудь коричневым, так что rust. Rust ближе к железу. Надеюсь он взлетит, и кресты сдохнут.

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

Какие-то фичи системы типов Rust этому припятствуют?

Мне такие не известны. Просто глобальный вывод не востребован.

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

если серверная разработка то go

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

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

Видел время от времени срачи на тему разрешения глобального вывода типов на растофоруме и /r/rust, но довольно вялые.

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

Короткая версия ответа от Huon`а: http://www.reddit.com/r/rust/comments/2bcof3/rust_type_inference_question_fun...

It's a philosophical thing: global type inference has a variety of downsides that Rust wishes to avoid (a small change can cause errors in a completely different place due to the inferred types changing, and avoiding it also allows one to compile a program just looking at the type signatures, no need to look at the definitions). Inferring the types of functions would require global inference, while closures are just normal values and are always inside some other function, i.e. inferring their types is purely local.

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

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

Делает одну вещь и делает ее хорошо (востребованный нынче шедулинг, а во времена ПХП это был востребованный тогда HTML-шаблонизатор ).

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

makoven ★★★★★
()

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

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

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

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

На Go переписывают (со всяких питонов), чтобы снизить нагрузку и сократить число серверов. C++ не подходит, потомучто течет. А раст не течет и позволяет выжать больше чем Go. А еще в Go проблемы с архитектурой очень больших приложений. Это все ИМХО, конечно же

makoven ★★★★★
()

Rust

несовместимых изменений больше не будет

верю, верю.

crowbar
()

Ну не знаю. Моё видение идеального ЯП как-то ближе к сисярпу (или возможно джаве). Раст как-то выглядит на их фоне аляповато и бесперспективно, очередной ЯП однодневка, развиваемый 3.5 анонами.

anonymous
()

Хорошо. Сам я уже слишком завязан на D, но Rust как язык мне нравится даже больше.

Единственное, что огорчает в алфе 1.0.0 - синтаксис в некоторых местах таки и остался излишне перегруженным спецсимволами, а я надеялся на сокращения для самых типичных ситуаций.

Функции вида from_str в языке с нормальной системой типов выглядят как-то нелепо.

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

А раст не течет и позволяет выжать больше чем Go

даже не буду тебе приводить очевидные аргументы как ты здесь не прав

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

синтаксис в некоторых местах таки и остался излишне перегруженным спецсимволами

Лямбды? Там планируется доработка вывода, чтобы писать меньше спецсимволов.

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

А раст не течет и позволяет выжать больше чем Go

даже не буду тебе приводить очевидные аргументы

Было бы что привести - привел бы...

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

C++ не подходит, потомучто течет.

4.2

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

в go нет возможности течь by design, rust - есть unsafe и им будут пользоватся, профит от использования rust вместо go вплане «скорости» работы на сервере ничтожен и бессмысленен особенно учитывая практически нулевого compile time в go относительно rust, так же вход в rust и go абсолютно разный, что увеличивает риски в коде твоей команды в разы, ну и go рожден для одной цели и ниши, в которой он успешно развивается и захватывает, rust будет лезть в разные направления и нигде не преуспеет, хотя возможно и заменит c++ когда-нибудь, который с с++14 и скоро с с++17 стал бесконечным мульти-парадигменым и непонятным монстром, который выучить уже вообще нереально никому.

совсем забыл про stdlib, в go все в ней направлено на сеть, веб и бекенд опять же, а что там у rust?

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

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

это весьма дурная привычка «учить языки»

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

в go нет возможности течь by design

4.2

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

так делает большинство к сожалению

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

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

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

посмотри все топики на лоре про «я начинаю изучать программирование»

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

кресты, очевидно же

неосиляторам привет

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

профит от использования rust вместо go вплане «скорости» работы на сервере ничтожен и бессмысленен

Из бенчмарков видно в большинстве случаев профит по ЦП и памяти в разы.

особенно учитывая практически нулевого compile time в go относительно rust

Статический бинарь - это, конечно, хорошо. Зато библиотеки с растовым ABI вполне способны осесть в репах и затмить плюсовые.

так же вход в rust и go абсолютно разный

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

ну и go рожден для одной цели и ниши

js тоже был рожден для одной цели. С тех пор дня не проходит чтобы кто-нибудь не упомянул этот врожденный изъян

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

js тоже был рожден для одной цели

и где он он сейчас? везде! вывод: сделать вначале одно хорошо, unix way же.

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

Лямбды? Там планируется доработка вывода, чтобы писать меньше спецсимволов

Лямбды, невозможность использовать макрос вида println!«Hello» для простых строк, уже упомянутый from_str. Когда читал гайд первый раз, обращал внимание на довольно много таких мелочей.

Rust: let i = from_str::<uint>(«5»);

D: auto i = to!uint(«5»);

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

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

P.S. для подогрева холивара - Go среди новичков самый бесполезный и годен только для примитивных сервисов (хотя именно в этой нише очень хорош).

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

посмотри все топики на лоре про «я начинаю изучать программирование»

ну вот я же и говорю - маленькая, да и еще к тому же окрашенная выборка

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