The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Релиз языка программирования Rust 1.25"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Релиз языка программирования Rust 1.25"  +/
Сообщение от opennews (??) on 30-Мрт-18, 22:45 
Доступен (https://blog.rust-lang.org/2018/03/29/Rust-1.25.html) релиз языка программирования Rust 1.25 (http://www.rust-lang.org), развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.


По структуре язык  Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo (http://blog.rust-lang.org/2014/11/20/Cargo.html), позволяющий получить нужные для программы библиотеки  в один клик. Для размещения библиотек поддерживается репозиторий crates.io (https://crates.io/).


В подготовке нового выпуска приняли участие 139 разработчиков. Основные новшества (https://github.com/rust-lang/rust/blob/master/RELEASES.md#ve...):


-  Компилятор переведён с кодовой базы LLVM 4 на LLVM 6. В компилятор также добавлена опция "-C lto=val (https://github.com/rust-lang/rust/pull/47521)" для выбора типа LTO-оптимизации и целевая платформа "i586-unknown-linux-musl (https://github.com/rust-lang/rust/pull/47282)";

-  Предложен новый способ использования выражения "use" для оформления вложенных групп импортирования:


   use std::{fs::File, io::Read, path::{Path, PathBuf}};
вместо
   use std::fs::File;
   use std::io::Read;
   use std::path::{Path, PathBuf};


-  Добавлена возможность использования символа "|" для отделения сопоставлений в блоке match:


   enum Foo { A, B, C }
   fn main() {
       let x = Foo::A;
       match x {
           | Foo::A
           | Foo::B => println!("AB"),
           | Foo::C => println!("C"),
       }
   }

-  Принят и стабилизирован RFC 1358 (https://github.com/rust-lang/rfcs/blob/master/text/1358-repr...), определяющий атрибут "#[repr(align(x))]", при помощи которого можно указать способ выравнивания данных для структур;

-  В разряд стабильных переведена новая порция API, в том числе std::ptr::NonNull‹T› и Location::column;
-  В libcore добавлен модуль time, содержащий тип Duration, который раньше присутствовал только в libstd. Функции from_secs и from_millis теперь определены как "const", т.е. могут использоваться для создания констант:


   static MINUTE: Duration = Duration::from_secs(60);

-  Объявлен устаревшим метод net::lookup_host;
-  Документация по умолчанию переведена на использование разметки CommonMark (спецификация для формата Markdown) вместо Hoedown;
-  На сайте doc.rust-lang.org предложено новое руководство "Rust By Example (https://doc.rust-lang.org/rust-by-example/)";

-  В пакетном менеджере Cargo команда "new now" теперь по умолчанию создаёт исполняемые контейнеры (crate) в виде бинарного исполняемого файла (флаг "--bin"), а не библиотеки (для библиотеки теперь нужно явно указывать флаг "--lib"). Команда "new now" также теперь не удаляет префикс  "rust-" и  суффикс "-rs" из имени пакета;
-  Существенно ускорена работа "cargo doc" и операции получения кода зависимостей из Git.


URL: https://blog.rust-lang.org/2018/03/29/Rust-1.25.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=48363

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Релиз языка программирования Rust 1.25"  +6 +/
Сообщение от Аноним (??) on 30-Мрт-18, 22:45 
Как насчёт использования APL символов? Обычные то закончатся скоро, а слова писать, по всей видимости, не Ъ.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от Аноним (??) on 30-Мрт-18, 23:14 
До скалы с операторами вида <>|<> еще далеко.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Релиз языка программирования Rust 1.25"  +1 +/
Сообщение от Crazy Alex (ok) on 30-Мрт-18, 23:26 
Вот как раз подумалось, что очень похоже становится. И запросто может сфейлиться по той же причине - перестарались с "крутостью".
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Релиз языка программирования Rust 1.25"  –3 +/
Сообщение от Аноним (??) on 31-Мрт-18, 00:24 
Ууу, ыкспердс опеннета, неосиливший Scala. В Scala нет операторов.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Релиз языка программирования Rust 1.25"  +11 +/
Сообщение от мурзилла on 31-Мрт-18, 00:31 
ну что вы, apl - детище древних serial терминалов, у которых только половина ascii и то неполная.

У нас в XXI веке - полный unicode тех символов. Правда, пока голоса разделились поровну- никак не определим, смайлик-какaшка это унарный или бинарный оператор?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "Релиз языка программирования Rust 1.25"  +4 +/
Сообщение от angra (ok) on 31-Мрт-18, 00:40 
https://docs.scala-lang.org/tour/operators.html
То, что операторы используют механизм методов, не мешает им быть операторами.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Релиз языка программирования Rust 1.25"  –3 +/
Сообщение от Аноним (??) on 31-Мрт-18, 00:49 
>То, что операторы используют механизм методов

Ещё раз. По слогам - В СКАЛА НЕТ ОПЕРАТОРОВ, есть только методы классов/объектов. Инфиксная форма вызова метода с одним параметром - синтаксический сахар компилятора. Например "оператор" + это метод класса и без синатксического сахара записывается как 1.+(2). В случае настоящего оператора, как в джаве или с++ такое просто не возможно, ибо там это именно операторы.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Релиз языка программирования Rust 1.25"  +11 +/
Сообщение от funny.falcon on 31-Мрт-18, 01:12 
Думаю, как с минусом: если у себя наложил, то унарный; если же соседу по дверь, то бинарный.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

10. "Релиз языка программирования Rust 1.25"  +4 +/
Сообщение от Буратино on 31-Мрт-18, 01:20 
Лолчто?

В C++ спокойно пишется что obj1 += obj2, что obj1.operator+=(obj2).

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

11. "Релиз языка программирования Rust 1.25"  +10 +/
Сообщение от angra (ok) on 31-Мрт-18, 01:44 
> В СКАЛА НЕТ ОПЕРАТОРОВ

Если написать большими буквами, то убедительней не будет, особенно в свете того, что официальная дока говорит об обратном.

> Инфиксная форма вызова метода с одним параметром - синтаксический сахар компилятора.

Ага, а их приоритет чем является?

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

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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

13. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Аноним (??) on 31-Мрт-18, 06:49 
>Например "оператор" + это метод класса и без синатксического сахара записывается как 1.+(2).

Если оператор + можно записать как-то по другому, он не перестает быть оператором.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

14. "Релиз языка программирования Rust 1.25"  –6 +/
Сообщение от Аноним (??) on 31-Мрт-18, 07:49 
Можно узнать про связь языка Раст с LLVM?

Зачем Расту LLVM? Без LLVM компилятор Раста не умеет компиляить себя? А может для компиляции исходников *.rs нужна стороняя виртуальная машина?

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

К тому же LLVM не любят во Free Softwere Foundation.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от сишечка с пюрешечкой on 31-Мрт-18, 09:01 
если совсем просто, то писать компилятор очень тяжело. llvm - одна из лучших вещей, которые случались с компиляторами, она позволяет писать только фронтенд и сэкономить кучу времени и сил, а заодно и получить качественный результат. в приличных ОС (Fedora например) вообще весь llvm это 20 мегабайт, можно и потерпеть ради такой прелести.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "Релиз языка программирования Rust 1.25"  –1 +/
Сообщение от Аноним (??) on 31-Мрт-18, 10:18 
> если совсем просто, то писать компилятор очень тяжело. llvm - одна из
> лучших вещей, которые случались с компиляторами, она позволяет писать только фронтенд
> и сэкономить кучу времени и сил, а заодно и получить качественный
> результат.

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

Хорошо, но почему они выбрали в качестве бекенда LLVM? Почему нельзя в качестве бекенда выбрать GCC с его лютой GNU GPL ver.3? LLVM разрешительно-пермиссивная, есть опасность, что вокруг LLVM могут создастся проприетарные сервисы.

>в приличных ОС (Fedora например) вообще весь llvm это 20 мегабайт, можно и потерпеть ради такой прелести.

20 мегабайт это обманка. Твой дистр видимо просто разрезал LLVM на части и упаковал их. Чуть что, при первой же необходимости, ты очутишь прелести недостатка по зависимостям. Это типично для дистрибутивов с deb и RPM пакетной системой.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "Релиз языка программирования Rust 1.25"  +/
Сообщение от anomymous on 31-Мрт-18, 11:53 
> По структуре язык Rust напоминает C++

Нет.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

18. "Релиз языка программирования Rust 1.25"  –1 +/
Сообщение от Аноним (??) on 31-Мрт-18, 12:26 
> Предложен новый способ использования выражения

Мне одному кажется, что Rust становится новым перлом?

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

19. "Релиз языка программирования Rust 1.25"  +3 +/
Сообщение от leap42 (ok) on 31-Мрт-18, 12:28 
> Почему нельзя в качестве бекенда выбрать GCC?

Он так не может

> вокруг LLVM могут создастся проприетарные сервисы

это норма, его же проприерасты из Apple придумали, но исходники открыты и всегда будут (* по крайней мере старые версии никуда не денутся)

> 20 мегабайт это обманка. Твой дистр видимо просто разрезал LLVM на части и упаковал их

это не обманка, а адекватная работа пакетного менеджера, он на то и нужен

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

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

21. "Релиз языка программирования Rust 1.25"  +1 +/
Сообщение от Аноним (??) on 31-Мрт-18, 13:07 
> Зачем разработчикам языка, который к тому-же, позиционирует себя как системный язык вообще понадобилась эта виртуальная машина?

Ты бы почитал про LLVM что-нибудь, кроме расшифровки названия. Это не (только) виртуальная машина, это фреймворк для создания компиляторов.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

22. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Аноним (??) on 31-Мрт-18, 13:08 
В данном случае такое расширение вполне логично.
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

23. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Илья (??) on 31-Мрт-18, 14:06 
> как в джаве или...

извините, но скала работает на jwm.

Обратите внимание на то, что операторы практически везде таким же образом "появляются".
Вот пример из .net:
    
    public static bool operator ==(Decimal d1, Decimal d2)
    {
      return Decimal.FCallCompare(ref d1, ref d2) == 0;
    }

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

24. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Илья (??) on 31-Мрт-18, 14:08 
>> По структуре язык Rust напоминает C++
> Нет.

ну чуточку. Вообще, эта фраза мигрирует из новости в новость :)

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

25. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от Аноним (??) on 31-Мрт-18, 15:08 
>> Хорошо, но почему они выбрали в качестве бекенда LLVM?

Альтернатив нет. GCC не был написан по подобному модульному принципу. Если только Вы не хотите компилировать свой язык в Си (как в Vala), который в свою очередь через GCC прогонять.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

26. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от Аноним (??) on 31-Мрт-18, 15:11 
>> Предложен новый способ использования выражения
> Мне одному кажется, что Rust становится новым перлом?
> Если что-то легко реализовать в компиляторе, это не значит, что это что-то
> нужно тащить в язык...

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

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

27. "Релиз языка программирования Rust 1.25"  –3 +/
Сообщение от Аноним (??) on 31-Мрт-18, 17:45 
> по крайней мере старые версии никуда не денутся

Ага, и ассемблер никуда не денется. Причём тут это? В новости явно сказано, что требуется новая версия LLVM. Какой будет прок со "старых версий", если ржавый зависит от новых?

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

28. "Релиз языка программирования Rust 1.25"  –3 +/
Сообщение от yet another on 31-Мрт-18, 18:51 
Положим, там не 20M, а несколько кусков с размерами около 1G.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

30. "Релиз языка программирования Rust 1.25"  –5 +/
Сообщение от Аноним (??) on 31-Мрт-18, 20:36 
Никому не нужное дерьмо тащат, а ООП так и не завезли. Без ООП не нужен. Нам одних си-фанатиков хватает с их макросно-процедурным гoвнокодом, а сюда ещё раст-фанатиков завезли с тем же дерьмoм.
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

31. "Релиз языка программирования Rust 1.25"  +1 +/
Сообщение от Аноним (??) on 31-Мрт-18, 20:58 
Qt порт бы целиком под Rust...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

32. "Релиз языка программирования Rust 1.25"  –1 +/
Сообщение от Аноним (??) on 31-Мрт-18, 21:04 
Rust версию llvm с собой таскает. Обожаю когда свободофобы придумывают очередную невероятную причину не любить свободные лицензии.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

34. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Nexmean on 01-Апр-18, 06:16 
Не нужен ООП в расте, никогда его там не будет. В расте куда более мощная и гибкая система типов нежели ООП.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

35. "Релиз языка программирования Rust 1.25"  +/
Сообщение от авыф on 01-Апр-18, 06:53 
Расскажите подробнее, интересно посушать.
Вообще, по мне так в ООП нет ничего плохого кроме переопределения методов базовых классов.
В некоторых компаниях на уровне кодоанализа разрешают наследовать типы только от абстрактных классов, и это круто
Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

36. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от авыф on 01-Апр-18, 07:11 
да, скала это, конечно, это вещь в себе.
Разработчики такие: "
    А че это у нас скобочки как у всех? Давайте скорее угловые скобки сделаем квадратными... а квадратные - круглыми! Нужен какой-нибудь крутой концепт, чтобы "всё было чем-нибудь", подождите, минуточку, ...  о госпади, это гениально "every value is an object"!. Тааак, интерфейсы мы переименуем во что-нибудь модное, готово! Вот эту хрень возьмем из питона. Вот эту хрень из js. Язык готов!"  

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

37. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Аноним (??) on 01-Апр-18, 07:16 
Боже упаси! Не нужно никакого ООП! Для языка, который позиционируется системным ООП не нужен.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

38. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от Аноним (??) on 01-Апр-18, 07:23 
> Расскажите подробнее, интересно посушать.
> Вообще, по мне так в ООП нет ничего плохого кроме переопределения методов
> базовых классов.

Поподробнее не могу, скажу просто, ООП нужно тем, кто неможет, или не умеет в алгоритмы.

> В некоторых компаниях на уровне кодоанализа разрешают наследовать типы только от абстрактных
> классов, и это круто

Эти "некоторые компании" отсавь себе, на второе. Я знаю одно, для системного программирования ООП не нужно. Лишняя сущность.

Короче, любители ООП идите стройным шагом прямо в лес. Не загрязняйте чистые воды Раста.

Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

39. "Релиз языка программирования Rust 1.25"  –1 +/
Сообщение от афаф on 01-Апр-18, 11:35 
> Поподробнее не могу, скажу просто, ООП нужно тем, кто неможет, или не умеет в алгоритмы.

Извините, не вижу никакого противоречия Вы его сами придумали?

> Я знаю одно, для системного программирования ООП не нужно.

Раст вроде не только про системное программирование.
Взгляните на количество http-фреймворков: https://github.com/flosse/rust-web-framework-comparison
Имеются привязки к gtk/qt Есть ОРМ-ка, diesel. Да и вообще, насколько я понимаю, он изначально для SERVO писался

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

40. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Аноним (??) on 01-Апр-18, 12:53 
>Извините, не вижу никакого противоречия Вы его сами придумали?

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

>Раст вроде не только про системное программирование.

Я тоже так могу: "Си это ведь не только системное программирование".

>Да и вообще, насколько я понимаю, он изначально для SERVO писался

А ты что хотел от Мозиллы, чтобы они кодили микроконтроллеры? Скажем так, язык не создавался именно для Servo. Мозиловцы подключились позже. Да, на поздних стадях Servo и Раст разрабатывались вместе.


Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

41. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от Alan Walk on 01-Апр-18, 13:40 
LLVM это компилятор, с возможностью запуска кода в виртуальной машине.  Раст поступает так.  Он своим оптимизатором оптимизирует код используя возможности языка, а после готовит байт код для LLVM. А LLVM уже готовит оптимизирует, разворачивает этот байт код для какого-нибудь железа.

Вокруг LLVM крутятся огромные деньги, все его пилят оптимизируют, используют, он открытый. Тотже эпль язык использует LLVM. И множество других компилируемых.

Взять сишный Clang компилятор, он работает также(в связке с LLVM и по такомуже циклу).

А GCC, он для единственного си идет только...

В итоге мы имеем скорость как у сишки на Clang(хром в последнее время на Clang везде собирается если что).

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

42. "Релиз языка программирования Rust 1.25"  –2 +/
Сообщение от Афаф on 01-Апр-18, 16:01 
> готовеньких шаблонов

Я бы сказал общепринятых шаблонов. Наличие паттернов оо проектирования это скорее преимущество, разумеется при правильном использовании.

Конечно, есть люди с ооп головного мозга, но это проходит со временем.

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

43. "Релиз языка программирования Rust 1.25"  +/
Сообщение от Led (ok) on 01-Апр-18, 20:58 
> Конечно, есть люди с ооп головного мозга, но это проходит со временем.

У тебя не пройдёт.

Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

44. "Релиз языка программирования Rust 1.25"  +1 +/
Сообщение от Led (ok) on 01-Апр-18, 21:00 
> А GCC, он для единственного си идет только...

Ты специально сегодня зарегался только для того, чтобы показать какой ты недалёкий?

Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

48. "Релиз языка программирования Rust 1.25"  –1 +/
Сообщение от Солнышко (??) on 02-Апр-18, 17:21 
>> готовеньких шаблонов
> Я бы сказал общепринятых шаблонов. Наличие паттернов оо проектирования это скорее преимущество,
> разумеется при правильном использовании.
> Конечно, есть люди с ооп головного мозга, но это проходит со временем.

Да если б хотя бы ООП знали...

Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру