LINUX.ORG.RU

Rust 0.11

 , ,


1

6

Спустя несколько месяцев разработки тихо и незаметно вышла новая версия Rust — языка программирования, разрабатываемого Mozilla и нацеленного на безопасность, производительность и параллелизм.

В данном релизе усилия разработчиков были главном образом сосредоточены на доведение до ума системы типов и стандартной библиотеки. Так, одной из основных задач являлось введение инфраструктуры для типов переменного размера. Также, как и обещано, был полностью удалён ~ и @ синтаксис в пользу использования стандартных типов Box и Gc.

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

  • Синтаксис ~[T] был удален из языка, вместо него используется Vec<T>;
  • Синтаксис ~str был удален из языка, вместо него используется String;
  • Синтаксис ~T был удален из языка, вместо него используется Box<T>;
  • Синтаксис @T был удален из языка, вместо него используется std::gc::Gc<T>;
  • Байтовые символы, строки и сырые строки теперь предваряются префиксом b;
  • Изменился синтаксис для указания времени жизни замыканий: <'a>|A, B|: 'b + K -> T;
  • Модульная арифметика для вещественных типов была убрана из языка;
  • Синтаксис use foo, bar, baz; был удален из языка;
  • Ключевое слово priv было удалено из языка;
  • Поля структур стали по умолчанию приватными;
  • Приватные перечислимые типы теперь запрещены;
  • Замыкание более не может быть вызвано через &-указатель;
  • Индекс вектора и размер битового сдвига теперь может быть представлен только в виде uint;
  • Стандартная библиотека теперь являет собой один унифицированный интерфейс к набору нижлежащих библиотек;
  • Добавлена новая библиотека libcore, призванная облегчить разработку встраиваемого программного обеспечения;
  • Был добавлен модуль regex, также включающий в себя набор статически скомпилированных регулярных выражений;
  • Набор I/O примитивов получил возможность прерывать операции по таймауту;
  • Добавлен макрос bitflags! для упрощения работы с битовыми флагами.

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

★★★★★

Проверено: fallout4all ()

Хотел написать, что зря удалили закорючки из синтаксиса (тильда с собачкой), но такооое:

Синтаксис @T был удален из языка, вместо него используется std::gc::Gc<T>;

Так и предлагается писать?

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

Седьмая и восьмая ноги для того несчастного плюсового кота?

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

Такими темпами через год-другой оно станет совершенно другим ЯП.

anonymous ()

А там можно бегать без штанов с камнем?

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

Можно. А ещё там можно говорить «Френдли» и гадить в git-репозиторий при этом.

Quasar ★★★★★ ()

Уже не нужно. Вначале бал интересен, сейчас кучу ФМС выкинули. Swift наше все. Надеюсь, яббл его заопенсорсит.

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

Надеюсь

Влажные мечты наивного анонимуса.

anonymous ()

Ползут потихоньку к 1.0, круто.

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

Кстати, видео с болталки о попытках разработки игр на Ржавчине: https://air.mozilla.org/rust-meetup-june-2014

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

Так и предлагается писать?

Предлагается писать use std::gc::Gc; и потом просто Gc<T>.

Но вообще, вместо использования Rc\Gc в Ржавчине форсят использование, по возможности, обычных ссылок.

ozkriff ()

Да, напрямую к rust 0.11 не относится, но дней пять назад наконец-то выпустили альфа версию обновленного пакетного менеджера cargo (http://crates.io).

ozkriff ()

Честно говоря, судя по изменениям в последних двух выпусках, складывается устойчивое ощущение, что люди хотели написать что-то своё альтернативно хорошее, чтобы не дублировать удачные находки в D, Vala и Go, но когда они решили это заставить работать, то выяснилось, что единственный способ --- это сделать свой собственный альтернативно одарённый C++.

Vudod ★★★★★ ()

Я все еще не забил на свою пошаговую гексагональную стратегию на Ржавчине - http://github.com/ozkriff/marauder, хотя времени на ее разработку последний месяц почти нет :( .

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

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

Для этого ему надо сначала стать хоть каким-то ЯП, а не under development.

Virtuos86 ★★★★★ ()

суть всех новостей про это непонятное поделие: «язык X был удалён из языка X. Был добавлен язык Y.»

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

Я могу понять людей, которые пишут «когда уже будет версия 1.0, чего так долго-то?», но, блин, откуда и зачем столько тупняка про изменения языка, у которого версия начинается с 0.*?

Тем более, что существенных семантических изменений (а не просто переименований и изменения синтаксиса) в версии 0.11 намного меньше, чем в версиях 0.10 и 0.9.

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

Уже не нужно. Вначале бал интересен, сейчас кучу ФМС выкинули. Swift наше все. Надеюсь, яббл его заопенсорсит.

Конечно «заопенсорсит». А тебя не смущает, что swift работает с рантаймом и библиотеками objective-c, т.е. это просто другой синтаксис для obj-c?

kkk ★★ ()

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

kto_tama ★★★★★ ()

Перлово-сишный синтаксис им показался слишком страшным и они теперь пошли в сторону С#/Java?

kovrik ★★★★★ ()

Язык довольно интересный, но вот синтаксис местами просто ужасен.

m0rph ★★★★★ ()

Кстати, что касается синтаксиса, есть крутой RFC про возможность опустить 80% явных указаний времени жизни ссылок. Должно сильно убрать «шум» из исходников. И, вроде, его всерьез собираются реализовать.

ozkriff ()

Изменился синтаксис для указания времени жизни замыканий:

>> <'a>|A, B|: 'b + K -> T;

От чего-то очень рассмешило)

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

D, Vala и Go

D не взлетел видимо от того, что мало чего превносил по сравнению с C++. Vala и Go вообще из другой оперы (эдакая замена петонов и ПХП). А вот Rust, на мой взгляд, имеет все шансы занять трон С++. С его RAII, алгебраическими типами, гигиеническими макросами, встроенной конкурентностью, ембедабельностью и прочими вау-плюшками)

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

Ну открыли они NextStep и что, все ринулись писать на Objective-C для онтопика?

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

Swift наше все. Надеюсь, яббл его заопенсорсит.

Зря надеешься.

tailgunner ★★★★★ ()

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

Все, теперь я могу перестать ныть по этому поводу в каждом несчастном треде о Rust

vertexua ★★★☆☆ ()

Кстати ~ лучше бы оставили

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

Просто если Box, то уже и до std::unique_ptr недалеко. Разницы особо не вижу

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

Box

ИМХО, странно плохой выбор термина. Ладно бы Boxed или BoxPtr, но box - это же сама область памяти в куче. Еще и зарезервировали слово box :/

tailgunner ★★★★★ ()

удален

изменился

запрещены

Простите, эти ребята вообще умеют проектировать?

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

Простите

Нет прощения.

эти ребята вообще умеют проектировать?

Ты когда-нибудь проектировал что-нибудь сложное?

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

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

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

Ладно бы Boxed или BoxPtr, но box

Да хоть Pinkie Pie. Как-будто суть в синтаксиисе, а не в семантике. В петоне вон отличный синтаксис, но он не перестал от этого быть шлаком

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

Ладно бы Boxed или BoxPtr, но box

Да хоть Pinkie Pie

«Кому и кобыла - невеста» (ц)

Как-будто суть в синтаксиисе, а не в семантике

Имена должны точно отображать семантику.

tailgunner ★★★★★ ()

А можно немного комментариев для тех, кто не сильно за языком следил?

Изменился синтаксис для указания времени жизни замыканий: <'a>|A, B|: 'b + K -> T;

Как было/как стало и хорошо ли это?

Синтаксис use foo, bar, bar; был удален из языка;
Ключевое слово priv было удалено из языка;
Приватные перечислимые типы теперь запрещены;
Замыкание более не может быть вызвано через &-указатель;

Почему?

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

Swift наше все.

Swift по фичам гораздо беднее выглядит. Да и многие вещи (типа прибитого гвоздями ARC) выглядят коряво.

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

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

Хотя я это, кажется, уже писал в прошлых темах.

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

«box» и «box», «упакованное» или «обернутое» значение и окей, лично мне мозги не ломает

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

tailgunner ★★★★★ ()

Вся суть хруста

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

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

Изменился синтаксис для указания времени жизни замыканий: <'a>|A, B|: 'b + K -> T;
Как было/как стало и хорошо ли это?
Замыкание более не может быть вызвано через &-указатель;

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

Про синтаксис - вроде как, просто нефатальные изменения синтаксиса, мало на что влияющие.

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

Синтаксис use foo, bar, bar; был удален из языка;

За ненадобностью и лишней сложностью. Есть же use foo::{bar, baz};

Ключевое слово priv было удалено из языка;

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

Приватные перечислимые типы теперь запрещены;

Опять же, для упрощения языка. Плюс они очень редко на практике использовались. Это составная часть удаления «priv». Подробности тут: https://github.com/rust-lang/rfcs/blob/master/complete/0006-remove-priv.md

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

Простите, эти ребята вообще умеют проектировать?

Это аджайл, сынок. Привыкай.

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

А мне нравится Rust.

Проблема в том, что многим кацапам тоже нравится Rust. Не боишься зашквариться?

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

зашквариться

Написал в гугл. Первая ссылка

Краткий толковый словарь тюремного мира

Вот почему я не понял твой вопрос

vertexua ★★★☆☆ ()

Отлично! Великолепный Раст стал ещё более совершенным!

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