The OpenNET Project / Index page

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

Выпуск языка программирования Rust 1.3

17.09.2015 23:52

Доступен релиз языка программирования Rust 1.3, развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).

В новом выпуске работа по оптимизации производительности была сфокусирована на стандартной библиотеке: задействован более эффективный алгоритм сопоставления строк, за счёт улучшения кода обнуления областей увеличена производительность вызовов Vec::resize и Read::read_to_end, проведена оптимизация вызова Read::read_to_end при работе со стандартным входным потоком и файлами, значительно ускорен код функции PartialEq.

В стандартной библиотеке представлен новый Duration API для работы с интервалами времени. Улучшены реализации Error и Hash/Hasher. Добавлена поддержка FreeBSD на системах i686 (x86_64 поддерживается уже давно) и Windows XP, продолжено портирование под инструментарий MSVC. В пакетном менеджере Cargo улучшены средства диагностической сборки (lint). Представлено новое руководство Rustonomicon, отражающее тонкости использования Rust и методы написания Unsafe-обработчиков.

  1. Главная ссылка к новости (http://blog.rust-lang.org/2015...)
  2. OpenNews: Выпуск языка программирования Rust 1.2, развиваемого проектом Mozilla
  3. OpenNews: Выпуск языка программирования Rust 1.1, развиваемого проектом Mozilla
  4. OpenNews: Увидел свет язык программирования Rust 1.0
  5. OpenNews: Выпуск языка программирования Rust 0.12, развиваемого проектом Mozilla
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/42981-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 00:28, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –25 +/
    Эталонное ненужно или все-таки серебряная пуля? Кто что думает?
     
     
  • 2.2, Kuku (?), 00:50, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Вам это не нужно
     
  • 2.6, AnotherReality (ok), 02:26, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Посамому  расту у меня мнения нет, но  я доверяю мнению amarao  http://habrahabr.ru/post/239067/#comment_8031769
     
  • 2.13, Аноним (-), 09:05, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –10 +/
    Та же Vala, вид в профиль.
    Или еще какой из сотен "c/c++ только лучше!"
     

  • 1.3, Капитошка (?), 01:17, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    15.05.2015 Rust 1.0
    26.06.2015 Rust 1.1
    08.08.2015 Rust 1.2
    17.09.2015 Rust 1.3

    лепят как горячие пирожки

     
     
  • 2.4, Хвост (?), 02:18, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Они сами выбрали небольшой период релизов.
     
  • 2.5, t (??), 02:22, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    5 недель. цикл как у firefox..
     

  • 1.7, 0eviy (ok), 03:20, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Есть и есть, почему и нет
     
  • 1.8, классический анонимус (?), 04:41, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Название Rustonomicon отдаёт колдунством и некромансией. Рекомендую сменить на Rustomasutra.
     
     
  • 2.9, Адепт (?), 05:49, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Rustomasutra это вторая часть, сначала нужен Rustonomicon
     
  • 2.10, Аноним (-), 06:24, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    все правильно, rust с unsafe - это оно и есть, колдунство и некромансия))
     
  • 2.11, Аноним (-), 06:35, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    руководство распечатывается, скручивается в трубочку и начинается rustomania
     
  • 2.50, Аноним (-), 16:07, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    The Rustonomicon
    The Dark Arts of Advanced and Unsafe Rust Programming

    http://doc.rust-lang.org/nightly/nomicon/

     

  • 1.12, Аноним (-), 09:02, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Список приложений написанных на Rust code bluejekyll trust-dns 8212 a DNS-... большой текст свёрнут, показать
     
     
  • 2.14, Аноним (-), 09:18, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А как же glutin - переписанный GLFW, а также glium - безопасная обёртка над OpenGL
     
  • 2.17, Аноним (-), 09:55, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    толсто.

    http://www.piston.rs

    более 3 тысяч приложений и пакетов за несколько месяцев,
    от библиотек, вёбфреймворков, до геймдвижков, гуй-менеждеров и аудиcэплеров
    https://crates.io/

     
     
  • 3.20, Аноним (-), 10:14, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Список приложений
    > http://www.piston.rs
    >  game engine

    Вы не знаете что такое приложение? Хоть словарь купите, что ли.

    > https://crates.io/
    > более 3 тысяч приложений и пакетов за несколько месяцев,

    Пакетов не приложений. Самые популярные пакеты на этом сайле
    libc
    winapi
    rand - в 2015 в Rust нет инструментов для генерации случайных чисел в стандартной библиотеке
    gcc
    time см rand
    winapi-build
    и тп.
    Я выше привес список ПРИЛОЖЕНИЙ взятый из kud1ing/awesome-rust из раздела ПРИЛОЖЕНИЯ.


     
     
  • 4.48, Аноним (-), 15:56, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >в 2015 в Rust нет инструментов для генерации случайных чисел в стандартной библиотеке

    это намеренное решение - сделать стандартную библиотеку как можно более легковесной и вынести все что можно в отдельные крейты под управлением менеджера пакетов (т.е. Cargo). В C++ такого менеджера нет, и поэтому приходится пихать все подряд в уже разросшийся до неприличных размеров libstdc++

     
  • 3.21, Аноним (-), 10:15, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >более 3 тысяч приложений и пакетов за несколько месяцев,

    слабо.
    http://go-search.org/

    196291 golang packages in 102487 projects

     
     
  • 4.44, Аноним (-), 14:50, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    а сколько там сам GO с первой версии живет?
    Кол-во пакетов c релиза 1й версии GO за 6месяцев?

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

    Вот тогда на текущий момент на гитхабе 7тыс "пакетов":
    https://github.com/search?l=Rust&q=rust&ref=searchresults&type=Repositories&ut

     

  • 1.15, Аноним (-), 09:49, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Я посмотрел на образцы кода и у меня вытекли глаза В 2015 году язык программиро... большой текст свёрнут, показать
     
     
  • 2.16, Аноним (-), 09:50, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это пример из стандартной библиотеки
    http://doc.rust-lang.org/book/macros.html
    или скорее из стандартной костылетеки.
     
  • 2.18, Аноним (-), 10:06, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/

    >


    > <c++ 2003>
    > int foo [] = { 16, 2, 77, 40, 12071 };

    let foo: Vec<u32> = vec![16, 2, 77, 40, 12071];


    Уже есть "стандартный" готовый макрос, подключать и вводить дополнительно в код ничего не надо.
    И кстати есть Плюсовые конструкции которые в РУСТ выглядят лучше и гораздо удобнее.

     
     
  • 3.25, Аноним (-), 10:24, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А я вот вижу в макросе Vec::new(). То есть для пользовательского типа макрос не сработает и потребуется писать его заново.
    А ля
    let myFoo: Myvec<u32> = myvec![]
    Причем, костылесипедирование это официально рекомендованный метод написания кода.

     
     
  • 4.49, Аноним (-), 16:05, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >А я вот вижу в макросе Vec::new(). То есть для пользовательского типа макрос не сработает и потребуется писать его заново

    эксперты opennet, как обычно, блещут знанием обсуждаемого предмета. Идите курите вывод типов в rust

     
  • 2.19, Аноним (-), 10:11, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Вот так точнее уж сравнивать
    C++
    int foo [] = { 16, 2, 77, 40, 12071 };
    RUST
    let foo = vec![16, 2, 77, 40, 12071];
     
     
  • 3.22, Аноним (-), 10:18, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >   vec!

    Это! макрос! который! приведен! выше! Любой! пользовательский! тип! потребует! написания! уевой! тучи! таких! макросов!

     
     
  • 4.24, Aleks Revo (ok), 10:24, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >>   vec!
    > Это! макрос! который! приведен! выше! Любой! пользовательский! тип! потребует! написания!
    > уевой! тучи! таких! макросов!

    Нахрена любому пользовательскому типу туева хуча макросов?

     
     
  • 5.26, Аноним (-), 10:26, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Нахрена любому пользовательскому типу туева хуча макросов?

    Причем тут туева хуча?
    Это макрос инициализации. Пользовательскому типу не нужна инициализация?


     
     
  • 6.28, Aleks Revo (ok), 10:38, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Нахрена любому пользовательскому типу туева хуча макросов?
    > Причем тут туева хуча?
    > Это макрос инициализации. Пользовательскому типу не нужна инициализация?

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

    Вектор - динамическая структура.

    В конце концов обычно данные хранятся не в коде программы, а на внешних носителях.

     
     
  • 7.34, Аноним (-), 11:27, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    let Rust = "Overhyped trash"
    Deal::with::it()
     
     
  • 8.56, Aleks Revo (ok), 07:23, 21/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Как тут ниже написали Анус запеканус Это не уровень аудитории Rust, это уров... текст свёрнут, показать
     
  • 6.57, Aleks Revo (ok), 07:28, 21/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Нахрена любому пользовательскому типу туева хуча макросов?
    > Причем тут туева хуча?
    > Это макрос инициализации. Пользовательскому типу не нужна инициализация?

    Вот смотри, неосиливший:

        let vertex_data = [
            Vertex { pos: [ -0.5, -0.5 ], color: [1.0, 0.0, 0.0] },
            Vertex { pos: [  0.5, -0.5 ], color: [0.0, 1.0, 0.0] },
            Vertex { pos: [  0.0,  0.5 ], color: [0.0, 0.0, 1.0] },
        ];

    Инициализировано. Без макросов. Пользовательский тип.
    Зато с макросами можно сильно больше.

        let program = {
            let vs = gfx::ShaderSource {
                glsl_120: Some(include_bytes!("triangle_120.glslv")),
                glsl_150: Some(include_bytes!("triangle_150.glslv")),
                .. gfx::ShaderSource::empty()
            };
            let fs = gfx::ShaderSource {
                glsl_120: Some(include_bytes!("triangle_120.glslf")),
                glsl_150: Some(include_bytes!("triangle_150.glslf")),
                .. gfx::ShaderSource::empty()
            };
            factory.link_program_source(vs, fs).unwrap()
        };

     
  • 2.23, Aleks Revo (ok), 10:23, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    C++ - в 2003 году исполнилось 20 лет.
    Rust - в 2015 году - первый стабильный релиз в котором зафиксировали синтаксис.
    Кстати, а в чём проблема - компилятор сам понимает {1, 2, 3} или структуру формирует препроцессор vec![1, 2, 3]? Вы от одной мысли про макросы начинаете генерировать говнокод? ))
     
     
  • 3.27, Аноним (-), 10:30, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > C++ - в 2003 году исполнилось 20 лет.

    Эта возможность появилась в 2003(официально). Но у мозилы терминальный приступ NIH.

    > Rust - в 2015 году - первый стабильный релиз

    Надеюсь и последний.
    > Кстати, а в чём проблема - компилятор сам понимает {1, 2, 3}
    > или структуру формирует препроцессор vec![1, 2, 3]?

    Слава богу создатели Rust нагенерировали овнокода за нас и назвали стандартной библиотекой.


     
     
  • 4.29, Aleks Revo (ok), 10:42, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> C++ - в 2003 году исполнилось 20 лет.
    > Эта возможность появилась в 2003(официально). Но у мозилы терминальный приступ NIH.

    То есть, спустя 20 лет после появления самого языка. 20 лет жили не тужили.
    И Мозилла как-то больше десяти лет юзала, пока вконец костыли C++ не осточертели и не подвернулась команда разрабатывающая язык с требуемыми фичами.


    >> Rust - в 2015 году - первый стабильный релиз
    > Надеюсь и последний.
    >> Кстати, а в чём проблема - компилятор сам понимает {1, 2, 3}
    >> или структуру формирует препроцессор vec![1, 2, 3]?
    > Слава богу создатели Rust нагенерировали овнокода за нас и назвали стандартной библиотекой.

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

     
     
  • 5.31, Аноним (-), 11:01, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >И Мозилла как-то больше десяти лет юзала

    и еще 40 будет "юзать". Servo даже не близок к использованию.
    >команда разрабатывающая язык с требуемыми фичами.

    Игнорирую все наработки в дизайне языков программирования и прикладной опыт за эти 20 лет.
    А потом они удивляются непопулярности их NIH творения.

     
     
  • 6.43, Aleks Revo (ok), 14:40, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Servo даже не близок к использованию

    Кто-то его обещал прям сейчас на тарелочке с голубой каёмочкой™?

    > Игнорирую все наработки в дизайне языков программирования и прикладной опыт за эти 20 лет.
    > все
    > ВСЕ

    Вот ты, например, ухитряешься игнорировать элементарную логику и ничего - пальцы веером ))
    Это инициализация вектора заложенная в синтаксис языка - "все мировые наработки и прикладной опыт"?

    Должен разочаровать, твой опыт стремится к плинтусу. Снизу.

     
  • 2.30, Аноним (-), 10:49, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > let x: Vec<u32> = {
    >    let mut temp_vec = Vec::new();
    >    temp_vec.push(1);
    >    temp_vec.push(2);
    >    temp_vec.push(3);
    >    temp_vec
    >};

    Вы массив фиксированного размера сравниваете со списком нефиксированного, разве нет?
    Мне кажется более близким эквивалентом вашему коду на С++ является:

    let x = &mut [16, 2, 77, 40, 12071];

     
     
  • 3.32, Аноним (-), 11:03, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    vector <string> vs{"alpha", "beta", "gamma"};
    Работает не?
     
     
  • 4.35, Аноним (-), 11:43, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    C++11?

    Вообще-то, как минимум (мы же не необразованные обезьяны использующие "use namespace std;", да?):

    std::vector<std::string> vs {"alpha", "beta", "gamma"};

    Без макросов можно еще (таки да, длиннее и не так эффективно - хотя фиг знает какие там оптимизации компилятор сделает...):

    let vs: &mut Vec<_> = &mut (["alpha", "beta", "gamma"]).iter().cloned().collect();

     
     
  • 5.36, Аноним (-), 12:11, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Вообще-то, как минимум (мы же не необразованные обезьяны использующие "use namespace std;", да?):

    using std::vector;

    >let vs: &mut Vec<_> = &mut (["alpha", "beta", "gamma"]).iter().cloned().collect();

    Без комментариев.

     
     
  • 6.38, Аноним (-), 12:43, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Без комментариев.

    Ok, уговорил.

     
  • 2.41, Аноним (-), 14:24, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    <c++ 2003>
    int foo [] = { 16, 2, 77, 40, 12071 };
    <Rust 2015>
    let foo = [16, 2, 77, 40, 12071];
     

  • 1.37, foror (ok), 12:18, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Когда уже наследование запилят для нормальной реализации DOM, GUI, RPG и прочих задач из классического ООП?
     
     
  • 2.40, Аноним (-), 14:13, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Никогда. И слава богу, ООП не нужен.
     

  • 1.39, burjui (ok), 13:25, 18/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Это хорошо, что они развивают язык, но не рановато ли они его зарелизили? Решил как-то изучить Rust на задаче, уже решённой мной несколько раз на C, C++ и D - написании парсера выдуманного мной игрушечного ЯП. Язык показался достаточно приятным для системного, но borrow checker просто вынес мозг при написании парсера. Сначала я думал, что это я тупой и не вкурил в работу механизма заимствования, побежал читать доки, блоги и whatnot. Выяснилось, что всё я понял правильно, просто компилятор умеет определять только лексические области заимствования. То есть следующий код:

    fn parseExpr(&mut self) -> ParseResult {
        match self.lexer.read() {
            Some(token) => CompileError::new(&token.location, "parseExpr(): not implemented"),
            None => CompileError::new(&self.location(), "parseExpr(): not implemented")
        }
    }

    Не компилится:

    error: cannot borrow '*self' as immutable because 'self.lexer' is also borrowed as mutable
      None => CompileError::new(&self.location(), "parseExpr(): not implemented")

    Компилятор считает, что self.lexer заимствован в ветке None, хотя очевидно, что заимствование должно завершиться в самом её начале, т.к. заимствованная ссылка не используется. Но компилятору пофиг.

    И разработчикам пофиг, потому что у RFC по этой проблеме - https://github.com/rust-lang/rfcs/issues/811 - стоит статус "отложено" (postponed). Они не считают это достаточно серьёзной проблемой, чтобы решать её до первого релиза, и хотят отложить это до Rust 2.0, хотя именно borrow checker доставляет больше всего проблем новичками-растоманам.

    В общем, текущая реализация компилятора для меня сводит на нет всё удовольствие от изучения Rust. Подожду 2.0, чтобы не портить впечатление.

     
     
  • 2.42, Аноним (-), 14:34, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Погромисты на низкоуровневых ЯП любят испытывать боль. В русте ты получаешь всё те же ощущения, но зато у тебя появляется надежда: если мучения твои окончатся, ты получишь гарантированно рабочий код без течек и т.п. Можешь утешать себя этим.
     
     
  • 3.45, burjui (ok), 15:10, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Анус запеканус? На Rust в целом гораздо приятнее писать, чем на том же C, просто компилятор пока туповат. Когда починят и смажут, ощущения будут ещё лучше. Не вижу смысла так кипеть, если никто тебя не заставляет писать на Rust здесь и сейчас. А пока чинят, у тебя есть время отдышаться, успокоиться и нанести мазь на припекаемое место.
     
     
  • 4.52, Вареник (?), 21:12, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Анус запеканус
    >> туповат
    >> Когда починят и смажут, ощущения будут ещё лучше.
    >> отдышаться, успокоиться и нанести мазь на припекаемое место.

    - Вот она, целевая аудитория Rust...

     
     
  • 5.54, burjui (ok), 15:57, 19/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Есть форма, а есть содержание. Видимо, видеть второе за первым (я сейчас не про еду) дано не всем.
     
  • 3.46, Аноним (-), 15:31, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >ты получишь гарантированно рабочий код

    Без утечек памяти и сегфолтов, багов  и логических ошибок, от запуска этого кода у процессора отрастет новое ядро, а на hdd пропадут bad-ы.
    Ну и понятно дело, волосы станут живыми и шелковистыми.

     
     
  • 4.55, Aleks Revo (ok), 07:16, 21/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Кернел 4.2, amdgpu + radeonsi - null pointer dereference на старте системы и по совместительству вместо старта системы.
    Упс, откуда это? Писали, тестировали, дебажили, наконец релизили, а оно...
    В неурочный час и все ядра могут отваливаться и волосы на груди седеть ;)
     
  • 2.47, Аноним (-), 15:44, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>И разработчикам пофиг...

    нет, этой проблемой как раз занимаются, должна быть решена с вводом MIR:

    https://github.com/rust-lang/rfcs/pull/1211

     
     
  • 3.51, burjui (ok), 16:57, 18/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отличные новости.
     

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



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

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