The OpenNET Project / Index page

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

30.03.2018 21:28  Релиз языка программирования Rust 1.25

Доступен релиз языка программирования Rust 1.25, развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.

По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек поддерживается репозиторий crates.io.

В подготовке нового выпуска приняли участие 139 разработчиков. Основные новшества:

  • Компилятор переведён с кодовой базы LLVM 4 на LLVM 6. В компилятор также добавлена опция "-C lto=val" для выбора типа LTO-оптимизации и целевая платформа "i586-unknown-linux-musl";
  • Предложен новый способ использования выражения "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, определяющий атрибут "#[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";
  • В пакетном менеджере Cargo команда "cargo new" теперь по умолчанию создаёт исполняемые бинарные файлы (флаг "--bin"), а не библиотеки (для библиотеки теперь нужно явно указывать флаг "--lib"). Команда "cargo new" также теперь не удаляет префикс "rust-" и суффикс "-rs" из имени пакета;
  • Существенно ускорена работа "cargo doc" и операции получения кода зависимостей из Git.


  1. Главная ссылка к новости (https://blog.rust-lang.org/201...)
  2. OpenNews: Для Linux и Redox представлена реализация Libc на языке Rust
  3. OpenNews: Релиз языка программирования Rust 1.24
  4. OpenNews: Третий выпуск операционной системы Redox OS, написанной на языке Rust
  5. OpenNews: В Firefox добавлен CSS-движок Stylo, написанный на языке Rust
  6. OpenNews: Эксперимент по разработке частей ядра Linux на языке Rust
Лицензия: CC-BY
Тип: Программы
Ключевые слова: rust, lang
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 22:45, 30/03/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +6 +/
    Как насчёт использования APL символов? Обычные то закончатся скоро, а слова писать, по всей видимости, не Ъ.
     
     
  • 2.2, Аноним (-), 23:14, 30/03/2018 [^] [ответить]    [к модератору]
  • –2 +/
    До скалы с операторами вида <>|<> еще далеко.
     
     
  • 3.3, Crazy Alex (ok), 23:26, 30/03/2018 [^] [ответить]    [к модератору]
  • +1 +/
    Вот как раз подумалось, что очень похоже становится. И запросто может сфейлиться по той же причине - перестарались с "крутостью".
     
     
  • 4.36, авыф (?), 07:11, 01/04/2018 [^] [ответить]     [к модератору]
  • –2 +/
    да, скала это, конечно, это вещь в себе Разработчики такие А че это у н... весь текст скрыт [показать]
     
  • 3.4, Аноним (-), 00:24, 31/03/2018 [^] [ответить]    [к модератору]  
  • –3 +/
    Ууу, ыкспердс опеннета, неосиливший Scala. В Scala нет операторов.
     
     
  • 4.6, angra (ok), 00:40, 31/03/2018 [^] [ответить]    [к модератору]  
  • +4 +/
    https://docs.scala-lang.org/tour/operators.html
    То, что операторы используют механизм методов, не мешает им быть операторами.
     
     
  • 5.7, Аноним (-), 00:49, 31/03/2018 [^] [ответить]     [к модератору]  
  • –3 +/
    Ещё раз По слогам - В СКАЛА НЕТ ОПЕРАТОРОВ, есть только методы классов объектов... весь текст скрыт [показать]
     
     
  • 6.10, Буратино (?), 01:20, 31/03/2018 [^] [ответить]    [к модератору]  
  • +4 +/
    Лолчто?

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

     
  • 6.11, angra (ok), 01:44, 31/03/2018 [^] [ответить]    [к модератору]  
  • +10 +/
    > В СКАЛА НЕТ ОПЕРАТОРОВ

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

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

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

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

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

     
  • 6.13, Аноним (-), 06:49, 31/03/2018 [^] [ответить]    [к модератору]  
  • +/
    >Например "оператор" + это метод класса и без синатксического сахара записывается как 1.+(2).

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

     
  • 6.23, Илья (??), 14:06, 31/03/2018 [^] [ответить]     [к модератору]  
  • +/
    извините, но скала работает на jwm Обратите внимание на то, что операторы практ... весь текст скрыт [показать]
     
  • 2.5, мурзилла (?), 00:31, 31/03/2018 [^] [ответить]    [к модератору]  
  • +11 +/
    ну что вы, apl - детище древних serial терминалов, у которых только половина ascii и то неполная.

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

     
     
  • 3.9, funny.falcon (?), 01:12, 31/03/2018 [^] [ответить]    [к модератору]  
  • +11 +/
    Думаю, как с минусом: если у себя наложил, то унарный; если же соседу по дверь, то бинарный.
     
  • 1.14, Аноним (-), 07:49, 31/03/2018 [ответить] [показать ветку] [···]     [к модератору]  
  • –6 +/
    Можно узнать про связь языка Раст с LLVM Зачем Расту LLVM Без LLVM компилятор ... весь текст скрыт [показать]
     
     
  • 2.15, сишечка с пюрешечкой (?), 09:01, 31/03/2018 [^] [ответить]     [к модератору]  
  • –2 +/
    если совсем просто, то писать компилятор очень тяжело llvm - одна из лучших вещ... весь текст скрыт [показать]
     
     
  • 3.16, Аноним (-), 10:18, 31/03/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Насколько я понял очень трудно создавать свой бекенд, который и превращает исход... весь текст скрыт [показать]
     
     
  • 4.19, leap42 (ok), 12:28, 31/03/2018 [^] [ответить]     [к модератору]  
  • +3 +/
    Он так не может это норма, его же проприерасты из Apple придумали, но исходники ... весь текст скрыт [показать]
     
     
  • 5.27, Аноним (-), 17:45, 31/03/2018 [^] [ответить]     [к модератору]  
  • –3 +/
    Ага, и ассемблер никуда не денется Причём тут это В новости явно сказано, что ... весь текст скрыт [показать]
     
     
  • 6.32, Аноним (-), 21:04, 31/03/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Rust версию llvm с собой таскает. Обожаю когда свободофобы придумывают очередную невероятную причину не любить свободные лицензии.
     
     
  • 7.41, Alan Walk (?), 13:40, 01/04/2018 [^] [ответить]     [к модератору]  
  • –2 +/
    LLVM это компилятор, с возможностью запуска кода в виртуальной машине Раст пос... весь текст скрыт [показать]
     
     
  • 8.44, Led (ok), 21:00, 01/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > А GCC, он для единственного си идет только...

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

     
  • 4.25, Аноним (-), 15:08, 31/03/2018 [^] [ответить]     [к модератору]  
  • –2 +/
    Альтернатив нет GCC не был написан по подобному модульному принципу Если тольк... весь текст скрыт [показать]
     
  • 3.28, yet another (?), 18:51, 31/03/2018 [^] [ответить]    [к модератору]  
  • –3 +/
    Положим, там не 20M, а несколько кусков с размерами около 1G.
     
  • 2.21, Аноним (-), 13:07, 31/03/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Ты бы почитал про LLVM что-нибудь, кроме расшифровки названия Это не только в... весь текст скрыт [показать]
     
  • 1.17, anomymous (?), 11:53, 31/03/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > По структуре язык Rust напоминает C++

    Нет.

     
     
  • 2.24, Илья (??), 14:08, 31/03/2018 [^] [ответить]    [к модератору]  
  • +/
    >> По структуре язык Rust напоминает C++
    > Нет.

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

     
  • 1.18, Аноним (-), 12:26, 31/03/2018 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    Мне одному кажется, что Rust становится новым перлом Если что-то легко реализов... весь текст скрыт [показать]
     
     
  • 2.22, Аноним (-), 13:08, 31/03/2018 [^] [ответить]    [к модератору]  
  • +/
    В данном случае такое расширение вполне логично.
     
  • 2.26, Аноним (-), 15:11, 31/03/2018 [^] [ответить]     [к модератору]  
  • –2 +/
    Здесь люди получают удовольствие от реализации всё новых и новых сложных фич в я... весь текст скрыт [показать]
     
     
  • 3.30, Аноним (-), 20:36, 31/03/2018 [^] [ответить]    [к модератору]  
  • –5 +/
    Никому не нужное дерьмо тащат, а ООП так и не завезли. Без ООП не нужен. Нам одних си-фанатиков хватает с их макросно-процедурным гoвнокодом, а сюда ещё раст-фанатиков завезли с тем же дерьмoм.
     
     
  • 4.34, Nexmean (?), 06:16, 01/04/2018 [^] [ответить]    [к модератору]  
  • +/
    Не нужен ООП в расте, никогда его там не будет. В расте куда более мощная и гибкая система типов нежели ООП.
     
     
  • 5.35, авыф (?), 06:53, 01/04/2018 [^] [ответить]    [к модератору]  
  • +/
    Расскажите подробнее, интересно посушать.
    Вообще, по мне так в ООП нет ничего плохого кроме переопределения методов базовых классов.
    В некоторых компаниях на уровне кодоанализа разрешают наследовать типы только от абстрактных классов, и это круто
     
     
  • 6.38, Аноним (-), 07:23, 01/04/2018 [^] [ответить]     [к модератору]  
  • –2 +/
    Поподробнее не могу, скажу просто, ООП нужно тем, кто неможет, или не умеет в ал... весь текст скрыт [показать]
     
     
  • 7.39, афаф (?), 11:35, 01/04/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    > Поподробнее не могу, скажу просто, ООП нужно тем, кто неможет, или не умеет в алгоритмы.

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

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

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

     
     
  • 8.40, Аноним (-), 12:53, 01/04/2018 [^] [ответить]     [к модератору]  
  • +/
    Хорошо, попытаюсь в лоб Людям, которые ничего кроме ООП и готовеньких шаблонов ... весь текст скрыт [показать]
     
     
  • 9.42, Афаф (?), 16:01, 01/04/2018 [^] [ответить]    [к модератору]  
  • –2 +/
    > готовеньких шаблонов

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

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

     
     
  • 10.43, Led (ok), 20:58, 01/04/2018 [^] [ответить]    [к модератору]  
  • +/
    > Конечно, есть люди с ооп головного мозга, но это проходит со временем.

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

     
  • 10.48, Солнышко (??), 17:21, 02/04/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    >> готовеньких шаблонов
    > Я бы сказал общепринятых шаблонов. Наличие паттернов оо проектирования это скорее преимущество,
    > разумеется при правильном использовании.
    > Конечно, есть люди с ооп головного мозга, но это проходит со временем.

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

     
  • 4.37, Аноним (-), 07:16, 01/04/2018 [^] [ответить]    [к модератору]  
  • +/
    Боже упаси! Не нужно никакого ООП! Для языка, который позиционируется системным ООП не нужен.
     
  • 1.31, Аноним (-), 20:58, 31/03/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Qt порт бы целиком под Rust...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


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