The OpenNET Project / Index page

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

Доступен язык программирования Rust 1.10

08.07.2016 11:04

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

В состав нового выпуска принято 1276 изменений от 139 разработчиков, среди которых:

  • Добавлена опция "-C panic=abort", позволяющая в случае краха из-за ошибки программы выполнить аварийное завершение работы, вместо вызова процесса "размотки" (unwinding). При отключении обработчиков unwind генерируется меньше кода и исполняемый файл получается более компактным (примерно на 10%), а компиляции производится немного быстрее;
  • Представлен новый формат исполняемых контейнеров (crate type) cdylib, который рассчитан на компиляцию динамических библиотек, предназначенных для встраивания в программы на других языках. Ранее доступный формат dylib позиционируется для создания динамических библиотек для проектов на языке Rust. В отличие от dylib в cdylib не включаются метаданные, экспортируемые символы аналогичны исполняемым файлам, не допускается LTO и все библиотеки связываются статически. Сборка простейшего примера "hello world" при использовании cdylib занимает 7.2 Кб, в то время как при dylib - 2.4 Мб;
  • Изменены требования для сборки компилятора Rust, который написан на языке Rust. Если ранее для сборки свежего стабильного релиза требовалось применение экспериментальных ночных выпусков Rust, что создавало большие трудности с поставкой rust в дистрибутивах, то отныне для сборки можно использовать прошлые стабильные выпуски. Т.е. для сборки Rust 1.10 достаточно наличия Rust 1.9, а для Rust 1.11 потребуется Rust 1.10;
  • Внесено несколько оптимизаций производительности в компилятор: За счёт применения кэширования ключей инициализации ускорено создание HashMaps. Сокращено потребление памяти и примерно на 15% ускорена работа кода проверки типов. В два раза ускорена операция поиска для итераторов Chain. В 10 раз ускорены операции выборки битовых свойств в таблицах Unicode;
  • В разряд стабильных переведено около 70 функций и методов, среди которых std::os::windows::fs::OpenOptionsExt, std::panic::{set,take}_hook, CStr::from_bytes_with_nul, compare_exchange, std::os::unix::net::{UnixStream, UnixListener, UnixDatagram, SocketAddr};
  • В Linux в качестве запасного пути инициализации HashMaps теперь может использоваться /dev/urandom, если getrandom недоступен (например, на начальной стадии загрузки системы);
  • В пакетном менеджере Cargo добавлена опция profile.*.panic для управления реализацией обработки крахов, для вывода информации о состоянии теперь применяется stderr вместо stdout, запрещено использования ключевых слов Rust в именах контейнеров, добавлен флаг "--force" для команды "cargo install", добавлен режим "cargo --explain" аналогичный "rustc --explain".

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

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



  1. Главная ссылка к новости (http://blog.rust-lang.org/2016...)
  2. OpenNews: Увидел свет язык программирования Rust 1.9
  3. OpenNews: Успехи Rust: Подготовка первого выпуска Servo и использование Rust в новом хранилище Dropbox
  4. OpenNews: На 2016 год запланировано задействование в Firefox кода на языке Rust и движка Servo
  5. OpenNews: Представлена операционная система Redox, написанная на языке Rust
  6. OpenNews: Началось формирование ночных сборок браузерного движка Servo
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44752-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 13:10, 08/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Хипстеры поиграют и забросят. А Си оно точно не заменит.
     
     
  • 2.3, Лама Д. (?), 13:15, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +21 +/
    Хипстеры бросят, нормальные люди попробуют язык и сделают свои выводы, и только аноним будет продолжать выплёскивать ненависть в комментариях.
     
     
  • 3.6, Аноним (-), 13:34, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >Участник: Лама Д.
    >Тип: Аноним

    Больше ненависти в комментариях, воннаби регистрант

     
  • 2.4, modos189 (ok), 13:17, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зачем этот ваш хипстерский C, когда есть B для нормальных пацанов
     
     
  • 3.5, Аноним (-), 13:23, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    C не хипстерский и активно используется. И да, Си логичное продолжение языка Би, который звучит не очень по-пацански. В Си, например, есть типы. А уж D не логичное продолжение. Как и Rust, и другие убийцы.
     
     
  • 4.13, Никто (??), 14:50, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ни один нормальный язык программирования не может быть логичным продолжением Си, поскольку логичное продолжение фундаментальной ошибки - это фундаментальная ошибка. Примером тому может служить язык Go - желание сделать его нормальным привело к тому, что от Си там мало что осталось. Напомню, одним из авторов Go является Кен Томпсон - автор языка Би, а, следовательно, соавтор Си. И как тогда появилась книга Кернигана и Ричи для С, так и теперь появилась книга Кернигана и Донована о Go. В отличии от многочисленных неофитов, корифеи хорошо понимают цену своему поделию, создаваемое ими под конкретные задачи в 70-х, а не на века.
     
     
  • 5.15, Аноним (-), 15:10, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сколько убийц Си всего было? Десятки, ведь. И не взлетели.
     
     
  • 6.24, Ordu (ok), 16:46, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что они методологически создавались неверно, всякими возомнившими из себя... большой текст свёрнут, показать
     
     
  • 7.27, _ (??), 17:20, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Бла-бла-бла! Больше текста ни о чём! :-р
     
     
  • 8.28, _ (??), 17:22, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И кстати - обратите внемане какой бургут на Go Чувствует что капец подкрался ... текст свёрнут, показать
     
     
  • 9.40, Ordu (ok), 21:10, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Капец кому Го Нет, го не умрёт так просто Он будет жить вечно, как Java и C ... текст свёрнут, показать
     
  • 8.39, Ordu (ok), 21:08, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Слишком сложно Но, простите, я не буду тут делать обзор пары десятков языков пр... текст свёрнут, показать
     
  • 7.34, rob pike (?), 19:22, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Си создавался методологически верно, путем отрывания у CPL всего хорошего что в нем было, и доотрывания от BCPL всего неужасного, что чудом осталось - http://pastebin.com/UAQaWuWG

     
  • 7.47, Kodir (ok), 01:58, 09/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какой обильный понос! Сразу видно вчерашнюю студоту - изучили на три языка больше, а выпежониваются так, будто в жизни сделали хоть один ценный язык.

    Ди - ему не надо быть убийцей кого-то или "преемником" - он просто логичное продолжение того, что в 70-ые считалось "языком программирования". Ди - независим ни от чего, синтаксис просто позаимствован, все фичи - ПРАКТИЧЕСКИ обкатаны и ПРИЗНАНЫ НУЖНЫМИ. Так что чего тут говном кидаться - непонятно, как раз Ди и мог быть хорошим системным языком для Линукса-2.

    Впрочем, на Ди уже есть своя ОС - https://github.com/Vild/PowerNex

     
     
  • 8.49, Roo2AT7d (ok), 08:11, 09/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И пилит ее какой-то аноним для виртуалбокса Сравни с Redox, которая уже работае... текст свёрнут, показать
     
     
  • 9.52, Вареник (?), 01:23, 10/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем сравнивать двух маргиналов Because we can Поигрались ради фана и забро... текст свёрнут, показать
     
  • 7.48, angra (ok), 03:08, 09/07/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ничего не имею против Rust, а вот тебе явно стоит что-то сделать со своей патологической ненавистью к Go. Может тогда сможешь его объективно критиковать, а не нести ахинею о безыдейности. В Go как минимум три хороших идеи - скорость компиляции, ортогональность фич, конкурентность за счет goroutine и channel.
     
  • 7.58, Лютый жабист_ (?), 11:10, 15/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В силу этих миллиардов, Go, может быть, отъест себе какую-нибудь нишу, типа как это случилось с Java, но на что-либо большее ему надеятся не приходится

    Вся бигдата, весь финансовый сектор на жабе крутится. Это у одминов локалхоста "жабы нет и не надо".

     
  • 6.26, _ (??), 17:18, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С убить невозможно! Ибо он идеален. Высокоуровневый ассемблер, по локоть в железе :)

    Поэтому практики не делают замену С ... они делают замену (DYBVFYBT!!!) - ___C++___
    И да школота, это __внезапно__ - два __разных__ езыка :)

    Так вот как замена С++ - rust может и взлететь. Может - не значит что и взлетит.
    Вот D к примеру не взлетел, а Go - таки да! Хотя последний скорее жабе замена :)

     
     
  • 7.51, rob pike (?), 20:45, 09/07/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Go взлетел (если его довольно скромную нишевую популярность можно так назвать) не как замена Java, и не как замена С++, а как замена Ruby, Python или Perl - для написания мелких, но полезных в хозяйстве сетевых утилит, небольших серверочков - не самых важных, тех что хотелось бы поручить студентам, интернам и другим недорогим работникам, но чтоб еще и не так тормозило.
     
     
  • 8.54, Никто (??), 13:05, 11/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Создатели Go писали о своих мотивах, что им нужна была цельная замена тройки язы... текст свёрнут, показать
     
  • 6.32, Аноним84701 (?), 18:23, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Сколько убийц Си всего было? Десятки, ведь. И не взлетели.

    Гм. Мне вот интересно, где это ржавчину объяляли убивцем Си? Только чур, ссылки на бложики восторженных Летних-Экспертов-Всего-и-Вся не предлагать.


     
  • 6.36, Анонимусы (?), 19:48, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Человек не умеет верно думать. Какие убийцы? Убийцы чего? Если думать последовательно, подключив логическое мышление и не отрываться от здравомыслия, то получается что создающиеся инструментарии нацелены на облегчение разработки, увелечения скорости и т.д.
    Нет никаких убийц и ничто ничего не убивает. Не хочешь кодить на Раст? Никто не мешает продолжать кодить на СИ или на ассамблере и т.д. Каждый язык по своему хорошь, у каждого из них есть как слабые так и сильные стороны и каждый язык можно применить под конкретные задачи в определенный момент в времени. Дело не в языках, какие из них круче и т.д. Дело в голове отдельно взятого индивидуума.
     
  • 5.16, Аноним (-), 15:11, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сколько убийц Си всего было? Десятки, ведь. И не взлетели. Да и гдн ты видел книгу Кернингана по Go?
     
     
  • 6.18, Аноним (-), 15:32, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    книгу Кернингана по го ещё никто не видел, а Кернигана есть, и даже уже в переводе
     
  • 6.55, Никто (??), 00:36, 12/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Есть у меня бумажный экземпляр этой книги
     
  • 3.38, Аноним (-), 20:05, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    все хаймены уже на S-ке кодят
     
  • 2.12, Анонимусы (?), 14:36, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Настоящие мужики проЖат только на ассемблере, остальное (включая ваш СИ ) это для сопливых пацанчиков :)
     
     
  • 3.21, Uri (??), 16:21, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Продолжаю утрировать: настоящие мужики кодят на JavaScript.
     
     
  • 4.29, _ (??), 17:23, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Продолжаю утрировать: настоящие мужики кодят на JavaScript.

    причём на макбуках, и в красивых стрингах и лифчиках от Prada :))))

     

  • 1.2, Аноним (-), 13:14, 08/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На последнем предложении залип.
     
     
  • 2.7, freehck (ok), 13:57, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Если вам что-то не понятно, Вы задайте вопросы. Вас конечно охаят, но всё-таки ответят.
     
     
  • 3.25, Аноним (-), 17:17, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Просто переполнение буфера, слишком многословное предложение :)
     
  • 2.45, Аноним (-), 23:04, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    "Транспортная кооперация, путем нормализации, стандартизации и инвентаризации спасет мелиорацию, электрификацию и механизацию." (c)
     

  • 1.8, Аноним (-), 14:05, 08/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Сборка простейшего примера "hello world" при использовании cdylib занимает 7.2 Кб, в то время как при dylib - 2.4 Мб;
    > "hello world" - 2.4 Мб;

    это победа

     
     
  • 2.31, Аноним84701 (?), 18:16, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Мусью в курсе, что такое статистическая линковка?
     
     
  • 3.37, Аноним (-), 19:54, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    такс посмотрим

    $ cat helloworl.go
    package main

    func main() {
        println("Привет, Арч!")
    }

    $ go build
    $ lh
    итого 1,1M
    -rwxr-xr-x 1 adm adm 1,1M июл  8 19:50 helloworld
    -rw-r--r-- 1 adm adm   58 июл  8 19:50 helloworld.go


    да, это победа

     
     
  • 4.41, Аноним84701 (?), 21:11, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > $ go build
    > $ lh
    > итого 1,1M
    > -rwxr-xr-x 1 adm adm 1,1M июл  8 19:50 helloworld
    > -rw-r--r-- 1 adm adm   58 июл  8 19:50 helloworld.go
    > да, это победа

    Казалось бы, причем тут го?



    cat test.rs
    fn main() {
         println!("Hello World!");
    }

    $ ll
    8,3K  8 июл 21:04 dynamic.out*
    1,5M  8 июл 21:04 static.out*
    $ strip *.out
    $ ll
    5,6K  8 Jul 21:04 dynamic.out*
    334K  8 Jul 21:04 static.out*



    Всей разницы: динамично линкованая libstd ржавчины



     
     
  • 5.43, Аноним (-), 21:55, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    всё же разница не столь велика

    $ go build -ldflags '-w -s' -o hw-stat helloworld.go
    $ go build -ldflags '-w -s' -linkshared -o hw-din helloworld.go

    $ ll hw-*
    7,7K июл  8 21:54 hw-din
    720K июл  8 21:54 hw-stat

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

     
     
  • 6.44, Аноним84701 (?), 22:05, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/

    > и кстати это под x86_64 компилится, пробовал раст по твоему примеру, выходит
    > немногим больше размер чем указанный у тебя, наверное делал под 32
    > ?

    x86_64
    rustc -O -C prefer-dynamic

     
  • 5.50, Roo2AT7d (ok), 08:50, 09/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В наших рядах шпиён! Release сборка при "cargo build --release":
    646КБ, после стрипа 363КБ.

    Откуда 1.5МБ то?

     

  • 1.9, Аноним (-), 14:20, 08/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    вакансии есть? golang - очень мало, но есть
     
     
  • 2.10, Нанобот (ok), 14:22, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    где-то ближе к версии 4.0 будут
     
  • 2.11, Аноним (-), 14:30, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    https://z.cash/blog/hiring.html
    https://rust.jobboard.io/jobs/394482-rust-developer-at-the-blackbird
     
     
  • 3.14, vasya (??), 15:04, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    имел ввиду на территории этой страны =)
     
     
  • 4.30, _ (??), 17:27, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > имел ввиду на территории этой страны =)

    Если "этастрана" == RU то пока вряд ли. Если ваша Ылита будет тверда в курсе на избавление от дигитальной зависимости - то может и появится. Ибо нужно будет столько прогеров, что мама ...

     

  • 1.17, Аноним (-), 15:28, 08/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А как у него с GUI и SQL ??
     
     
  • 2.20, vasya (??), 16:08, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    очевидно же, никак
     
  • 2.22, anonomouous (?), 16:32, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вот что есть https://github.com/kud1ing/awesome-rust
    Ну и crates.io
     
  • 2.23, Аноним (-), 16:34, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    драйвера для работы с БД:
    https://crates.io/crates/postgres

    конекшен пулы, для соединений:
    https://crates.io/crates/r2d2

    ORM от разработчиков ORM в RubyOnRails:
    https://crates.io/crates/diesel

    GUI так же ищи на crates.io
    естественно такой интеграции как у SWIFT c Apple GUI думаю не будет, но разработчики аппл, участвуют в развитии rust, в свое свободное время, может и будет удобно.

     

  • 1.19, Аноним (-), 15:46, 08/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Автоматическое управление памятью

    Это некорректно. Никакого автоматического управления памятью в Rust нет и в помине. Есть отслеживание времени жизни переменных времени компиляции.

     
  • 1.33, Аноним (-), 18:32, 08/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Изменены требования для сборки компилятора Rust, который написан на языке Rust. Если ранее для сборки свежего стабильного релиза требовалось применение экспериментальных ночных выпусков Rust, что создавало большие трудности с поставкой rust в дистрибутивах, то отныне для сборки можно использовать прошлые стабильные выпуски. Т.е. для сборки Rust 1.10 достаточно наличия Rust 1.9, а для Rust 1.11 потребуется Rust 1.10;

    Можно пример того как это было раньше?

     
  • 1.53, rihad (ok), 17:53, 10/07/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Когда планируют Cargo для FreeBSD портов допилить?
     
     
  • 2.56, Аноним (-), 15:44, 12/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Когда планируют Cargo для FreeBSD портов допилить?

    http://www.freshports.org/devel/cargo/
    и что там не так?

     
     
  • 3.57, rihad (ok), 15:51, 12/07/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Когда планируют Cargo для FreeBSD портов допилить?
    > http://www.freshports.org/devel/cargo/
    > и что там не так?

    Забыл пояснить, что для i386 не строится, а у меня VMware только такие оси ставит, т.к. проц без VT-x.

    $ pkg search cargo
    $

     

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



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

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