LINUX.ORG.RU

Вышел Rust 1.3

 ,


2

7

17 сентября вышел очередной стабильный релиз Rust 1.3 — языка программирования общего назначения, разрабатываемого Mozilla совместно с сообществом. Данный релиз в целом сохраняет обратную совместимость с Rust 1.0, вышедшим в мае этого года.

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

  • В стандартную библиотеку добавлен модуль Duration, предоставляющий API для работы с промежутками времени.
  • Документация пополнилась книгой The Rustonomicon, посвященной низкоуровневому программированию на Rust.
  • Изменен механизм вывода lifetime по-умолчанию.
  • Дальнейшее повышение производительности стандартной библиотеки и компилятора.
  • Реализована предварительная поддержка Windows XP в компиляторе.

Одновременно была выпущена бета-версия Rust 1.4, в которой разработчики планируют реализовать полноценную поддержку MS Visual C++ как среды сборки, что позволит использовать Rust под Windows без инструментария GNU.

>>> Официальный сайт

>>> Примечания к выпуску

>>> Ссылка на скачивание

>>> Официальная документация

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



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

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

ну почему - пусть будет, для мини-новости вполне годно

shty ★★★★★ ()

Отличная новость!

umren ★★★★★ ()

что сломали в этот раз?
ах вот:

Adjust the object default bound algorithm for cases like &'x Box<Trait> and &'x Arc<Trait>. The existing algorithm would default to &'x Box<Trait+'x>. The proposed change is to default to &'x Box<Trait+'static>.

Note: This is a BREAKING CHANGE.

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

ну и что, все равно в продакшене то нету

так что ломать можно свободно

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

It was found to cause no root regressions on crates.io

А что же дальше не цитируешь?

mix_mix ★★★★★ ()

Этот язык разрабатывается для того что бы люди писали на нем программы? Или роботы? Открыл исходник - месиво спец символов. Даже блин perl читабельнее! Почему люди вместо того что бы сделать нормально делают говно? Воистину C++ и тем более C ему не убить.

RA ()

#[!]{{@!/*:?*/%={}}

Круто! :-D 1.3 проходной, но все равно здорово.

ozkriff ()

Судя по опросу, 40 лоровцев таки активно интересуются ржавчиной. Мило.

ozkriff ()

Я таки забил на портирование poly2tri на ржавчину (да и вообще на идею бесклеточных tbs, для путенахождения в которых оно и было нужно) и принялся дальше размеренно говнокодить свой zoc с простыми и понятными шестигранниками.

ozkriff ()
fn do_something(f: &mut Foo, x: &mut Box<Trait>) {
    mem::swap(&mut f.field, &mut *x);
}

Не перестаю угорать с ультра-корявого синтаксиса.

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

Не перестаю угорать с ультра-корявого синтаксиса.

"...then they laugh at you" (ц)

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

Открыл исходник - месиво спец символов

Открой какой-нибудь другой, получше)

Почему люди вместо того что бы сделать нормально делают говно?

Потому что разные люди под «нормально» и «говно» понимают совсем разные вещи-с.

Надоели с синтаксисом, давайте что-нибудь тоньше/интересней, пятница же)

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

Слушай, а почему в том же Питоне такого месива из закорючек нет?

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

почему в том же Питоне такого месива из закорючек нет

Потому что скриптота? О.о

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

Надоели с синтаксисом, давайте что-нибудь тоньше/интересней, пятница же)

Так ли хороша семантика, если не получается сопроводить её человечным синтаксисом? Если генерический код на этом языке не может обойтись без верениц спецсимволов?

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

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

Что такое генерический код?

Ну и полюбопытствую: ты подписался на тег просто чтобы всюду жаловаться?

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

почему в том же Питоне такого месива из закорючек нет?

Потому что у Питона нет макросов, lifetimes, ADT, параметризуемых типов и нескольких сортов указателей.

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

Потому что скриптота?

Не понимаю такого объяснения. Вот Перл — тоже скриптота, и тем не менее весь в закорючках.

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

Семантика проще, никаких ссылок/указателей/лайфтаймов/дженериков. Сборщик мусора, опять же. Разные цели - разная семантика - разный синтаксис. Аналогично бессмысленно сравнение с Java, Go или D.

Если уж на то пошло, нужно сравнивать скорее с современным С++, и тут разница не так уж заметна.

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

Что такое генерический код?

Обобщенный, что-то уровня stl из с++ . Чтобы что-то подобное сделать описать на Rust (да хотя бы, описать банальное сложение целых) — полный жесткач выходит. Вот тут я писал подробнее: Nim lang (комментарий)

Ну и полюбопытствую: ты подписался на тег просто чтобы всюду жаловаться?

На тег я подписан, потому что мне этот язык интересен.

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

Потому что у Питона нет макросов, lifetimes, ADT, параметризуемых типов и нескольких сортов указателей.

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

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

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

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

И я до сих пор считаю, что замена ~ на Box<> была ошибкой... даже двумя ошибками.

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

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

Пока мы получили что-то близкое к Перлу. (разумеется, я про синтаксис и уровень читабельности, а не про семантику)

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

а мы получили что-то близкое к Перлу.

Что такое, у Rust тоже Тьюринг-полная грамматика? А количество не-алфавитно-цифровых символов в Nim (тот самый Python на стероидах) и Rust я считал в предыдущем треде - 42% против 49%, ЕМНИП.

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

Тут все знают, что это ты 39 раз проголосовал с разных аккаунтов.

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

Обобщенный, что-то уровня stl из с++ .

Мне кажется, что с появлением концептов в С++ будет весьма похожая ситуация.

да хотя бы, описать банальное сложение целых

fn test_add<T: Add>(a: T, b: T) -> <T as Add>::Output
{
    a + b
}

Не так уж страшно, как по мне.

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

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

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

Если уж на то пошло, нужно сравнивать скорее с современным С++, и тут разница не так уж заметна.

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

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

fn test_add<T: Add>(a: T, b: T) -> <T as Add>::Output

Лол. А теперь иди, и посмотри как гуру это делают на практике: https://github.com/rust-lang/rust/blob/a520568ae7dea13430c3d9ba5b3fb9596d8637... , строки 180-206. И тела макросов не забудь раскурить.

Мне кажется, что с появлением концептов в С++ будет весьма похожая ситуация.

Нет никакого смысла в языке, который ровнялся бы на уродца C++. Уже есть никому не нужный D. И умирающий перл тоже уже есть. Довольно.

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

А мне кажется, что ключевая разница — это наличие вещей типа pep8. Не в том смысле, что для пущей ынтырпрайзности был высран официальный coding conventions. А в том смысле, что авторы языка по-настоящему вложились в то, чтобы код на этом языке был красив. Медитировали над этим денно и нощно.

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

а мы получили что-то близкое к Перлу.

Что такое, у Rust тоже Тьюринг-полная грамматика? А количество не-алфавитно-цифровых символов в Nim (тот самый Python на стероидах) и Rust я считал в предыдущем треде - 42% против 49%, ЕМНИП.

А мне кажется, что ключевая разница — это наличие вещей типа pep8

/me молча покрутил пальцем у виска

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

Nim (тот самый Python на стероидах)

Он был бы «тем самым», если бы его дизайнили «те самые» авторы. Как минимум, Гвидо.

А так — это просто чей-то не слишком удачный креатив. И какими бы идеями авторы креатива ни вдохновлялись, получилось у них посредственно. Только и всего.

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

Лол. А теперь иди, и посмотри как гуру это делают на практике:

Видел, тему на которую ты ссылался, тоже читал. Но ты говорил о простом «сложении целых».

Нет никакого смысла в языке, который ровнялся бы на уродца C++.

А какие альтернативы? Тот же Nim не замена. Смысл сравнивать с языками, которые прячут нюансы и жертвую эффективностью?

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

Но ты говорил о простом «сложении целых».

Я говорил о том, чтобы его описать. А не воспользоваться готовым описанием.

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

Смысл сравнивать с языками, которые прячут нюансы и жертвую эффективностью?

Сравнивать нужно с языками, которые хорошо читаются. И если до их уровня не дотягиваешь, то нужно выявлять причины и пытаться что-то изменить. Не оправдания искать («более богатая семантика», «скриптота»), а по косточкам разбирать, как так получается. Детального анализа читабельности в случае rust, как и глубокого сравнения с более читабельными языками, я не видел. Это тяжелый сложный труд; похоже что авторы языка не считают нужным его на себя взваливать. Увы.

Manhunt ★★★★★ ()

хочу веселья ради изучить один из языков: rust, go или swift (если они действительно его заопенсорсят). какой из них интереснее, удобнее и полезнее?

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

Сравнивать нужно с языками, которые хорошо читаются.

Нужно кому и для чего?

Опять же, это весьма спорно. Скажем, вижуал бейсик ведь читается легко? Но лично мне на нём писать никогда не нравилось. Да и в целом он не сильно популярен. Паскаль, которой часто хвалят по этим же причинам, находится в похожей ситуации. И наоборот - С++ считается «ужасным», но весьма популярен.

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

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

Не оправдания искать

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

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

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

Или это претензия в духе «мне не нравится, значит они плохо старались?» Возьми и предложи или сделай лучше. Иначе остаётся только ждать, что это сделает кто-то другой.

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

какой из них интереснее, удобнее и полезнее?

Из этих трёх самым практичным выглядит Го (при всей моей нелюбви к нему). А так смотря для чего. Если тебя интересует яблочная платформа (за пределами он даже если «заопенсорся», вряд ли, сильно вылезет), в первую очередь, то бери swift. Если что-то низкоуровневое/системное - попробуй раст. Иначе, опять же го.

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

Тут я не совсем понимаю чего именно ты хочешь?

Хочу более системного подхода к вопросам синтаксиса. Я до сих пор хожу охреневший от треда на internals.rust-lang.org , в котором решилась судьба открытых и закрытых диапазонов.

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

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

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

Вот Перл — тоже скриптота, и тем не менее весь в закорючках.

Перл в своё время стал очень популярным ЯП и закорючки не мешали огромному кол-ву программистов. Одно CPAN чего стоило. Да и перед PHP, я помню как пытался прогать вначале на Perl ибо книжек было больше, чем по PHP.

Закорючки помогали работать со строками и генерировать веб-страницы. Но как показала практика можно и без закорючек генерить страницы, особо ничего не теряя. А работа со строками очень уж специфичная область.

В Rust закорючки нужны для работы с памятью без GC. Очевидно без закорючек не получилось бы. По крайне мере концептов ЯП с безопасной работой с памятью без GC на горизонте не наблюдается (поделие типа Swift не считается).

Соответсвенно он занял свою нишу, между ЯП, где нет GC и полная анархия с 0day уязвимостями и ЯП у которых есть GC. И видимо эта ниша найдет своих сторонников. Т.к. в отличие от Perl, нет на Rust очередного PHP, нет концептов как можно работать с памятью безопасно и при этом с простым синтаксисом и без GC.

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

Хочу более системного подхода к вопросам синтаксиса.

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

Есть какой-то комплекс принципов, который позволил в питоне по-человески оформить те конструкции, которые в перле обычно записываются кроказябрами.

Не верю я в такую магию. Да и в питоне, наверняка, тоже нелогичные моменты найти можно.

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

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

Чем «очевиднее» утверждение, тем тяжелее дать ему внятное обоснование. Наивысшая степень очевидности — это когда «очевидец» прибегает к аргументам вида «на коране клянус!!!1»

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

Да и в питоне, наверняка, тоже нелогичные моменты найти можно.

Мы сейчас про читабельность, а не про логичность.

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

По правде сказать, ни одна из сторон ни одного внятного аргумента в том обсуждении не привела. Все апеллировали к альтернативным реализациям (mesa, swift, ruby) и к своим личным субъективным впечатлениям. У мозилловцев по части синтаксиса есть вообще какие-нибудь явно сформулированные design goals / criteria, или каждый раз хреначат как попало, полностью стихийно?

Manhunt ★★★★★ ()
Последнее исправление: Manhunt (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.