The OpenNET Project / Index page

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

Выпуск языка программирования Rust 0.11, развиваемого проектом Mozilla

03.07.2014 10:33

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

С момента прошлого выпуска внесено около 1700 изменений, основная работа была связана с оттачиванием качества библиотек и системы типизации. В частности, представлена новая инфраструктура для использования типов динамического размера. Проведён рефакторинг стандартной библиотеки - монолитная libstd разделена на несколько отдельных библиотек - libcore, liblibc, liballoc, libcollections, librustrt, libsyn и librand (libstd теперь выступает в роли надстройки над этими библиотеками). Прекращена поддержка синтаксических конструкций "~" и "@", вместо которых следует использовать библиотечные типы "Box" и "Gc".

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

Базовые возможности языка:

  • Ориентация на безопасность:
    • Аккуратная работа с памятью - никаких нулевых и потерянных указателей. Автоматическое управление памятью;
    • Контроль изменчивости. Объекты неизменяемы (Immutable) по умолчанию;
    • Безопасность динамического выполнения: обработка сбоев, исключения, ведение лога, RAII / dtors;
    • Typestate: возможность определения сложных инвариантов, контролирующих структуры данных.
  • Ориентация на параллельность и эффективность кода:
    • Явный контроль памяти, контролирование схемы распределения памяти;
    • Крайне лёгкие задачи, формируемые в виде сопрограмм. Лёгкость в порождении тысяч и миллионов подпроцессов;
    • Итераторы в стэке (фактически лямбда-блоки без распределения кучи);
    • Статическая, нативная компиляция с созданием исполняемых файлов ELF, PE, Mach-o;
    • Прямой и простой интерфейс для кода на языке Си;
  • Ориентация на практическое применение:
    • Мультипарадигмальный, функциональный, императивно-процедурный, объектно-ориентированный, поддерживающий параллельную actor-модель;
    • Функции высшего порядка с биндингами;
    • Нет номинальных типов или иерархии типов;
    • Мультиплатформенный, поддерживается Windows, Linux, Mac OS X, *BSD;
    • Хранение строк в UTF-8, разнообразие низкоуровневых типов;
    • Работает с существующими нативными наборами инструментов: GDB, Valgrind, Shark и т.д.;
    • Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.


  1. Главная ссылка к новости (https://mail.mozilla.org/piper...)
  2. OpenNews: Подготовлен вариант GNU Coreutils, переписанный на языке Rust
  3. OpenNews: Выпуск языка программирования Rust 0.10, развиваемого проектом Mozilla
  4. OpenNews: Выпуск языка программирования Rust 0.9, развиваемого проектом Mozilla
  5. OpenNews: Для GCC подготовлен фронтэнд с поддержкой языка Rust, развиваемого проектом Mozilla
  6. OpenNews: Выпуск языка программирования Rust 0.8, развиваемого проектом Mozilla
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/40125-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (30) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, softfire (?), 10:48, 03/07/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Зачем нужны Раст и Го, когда есть Эрланг?
     
     
  • 2.3, Аноним (-), 10:57, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Надо же людям чем-то заниматься. Вот и Эрланг тоже нинужно.
     
     
  • 3.8, rob pike (?), 12:01, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Только OOCobol
    только хардкор
     
  • 3.21, Crazy Alex (ok), 14:48, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Эрланг, при всех его плюсах, далеко не самый удобный язык. Одни строки чего стоят. Плюс эрланг - это, факьтически, только одна парадигма, а их часто удобно смешать.
     
  • 2.11, Аноним (-), 12:13, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Go не нужен, потому что gc. Эрланг вообще убогая помойка. А вот Rust перспективы умеет.
     
     
  • 3.22, Crazy Alex (ok), 14:51, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Rust тоже gc, вообще-то. А что Go не нужен - согласен, если хочется бедный возможностями язык - есть си с паскалем и прочая древность.
     
     
  • 4.27, Аноним (-), 19:05, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Вы путаете gc и автоматическое управление памятью.
     
     
  • 5.32, Аноним (-), 04:40, 08/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    В расте в стандартной библиотеке гц тоже есть.
     
  • 2.13, rshadow (ok), 12:20, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Правильный вопрос: зачем нужен rust, go, erlang, ...
     
  • 2.14, vitalif (ok), 12:39, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чтобы мазиле было чем заняться...
     
  • 2.19, qqq (??), 14:11, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    не, Раст очень интересен - симбиоз ФП и ООП, чего мало в эрланге. Эрланг тоже крут, но нет пространств имен и полезных возможностей ООП: наследование, виртуальные методы, полиморфизм. Надо, чтобы разработчики Раста еще более пристально взглянули на эрланг и позаимствовали еще больше отдельных фич и парадигм таких как матчинг, хвостовая, атомы, ноды, реализации модели "акторов"... Но в целом все довольно шикарно - главное выйти за пределы традиционных сопрограмм.
     
     
  • 3.29, Kuku (?), 20:59, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > не, Раст очень интересен - симбиоз ФП и ООП, чего мало в
    > эрланге. Эрланг тоже крут, но нет пространств имен и полезных возможностей
    > ООП: наследование, виртуальные методы, полиморфизм. Надо, чтобы разработчики Раста еще
    > более пристально взглянули на эрланг и позаимствовали еще больше отдельных фич
    > и парадигм таких как матчинг, хвостовая, атомы, ноды, реализации модели "акторов"...
    > Но в целом все довольно шикарно - главное выйти за пределы
    > традиционных сопрограмм.

    Насколько я знаю, в Rust есть и матчинг, и модель акторов (о ней и в тексте статьи сказано). Относительно остального надо поинтересоваться


     

  • 1.2, Аноним (-), 10:56, 03/07/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    зачем нужны Раст, Го, Эрланг, Си, когда есть ассемблер?
     
     
  • 2.5, ivn (?), 11:05, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    зачем нужны компьютеры, когда есть человеческий мозг?
     
     
  • 3.7, rob pike (?), 11:39, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мозг - это мракобесие же, непрогрессивно, мэйнфрейм практически.
    Сейчас модно распределенность, чтоб много дешевых взаимозаменяемых нейронов, shared nothing, message passing - как у медузы.
     
     
  • 4.18, Аноним (-), 13:30, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Gray goo.
     
  • 3.20, burjui (ok), 14:13, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Зачем нужен мозг, если многие прекрасно живут, по всей видимости, без него?
     
  • 3.24, Димон (??), 15:39, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Говорят, что человеческий мозг способен распознать сарказм. Врут.
     
     
  • 4.25, rob pike (?), 16:23, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Иногда способен. Но только человеческий же сарказм.
    Сарказм медузы нам не распознать. Что подтверждает нашу уверенность в превосходстве безмозговой модели.
     

  • 1.4, Аноний (?), 11:01, 03/07/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Если сравнивать Erlang и Rust то:
    Динимическая типизация - Статическая типизация
    Нет прямой работы с памятью - Есть (как прямамя так и GC)
    Функциональное программирование - ООП
    То есть совершенно разные ЯП.

     
     
  • 2.6, tratata (?), 11:19, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В rust ООП ровно такое же как в haskell -- тот же самый вид полиморфизма и нет наследования. А erlang куда больше ООП язык, чем многие другие.
     
     
  • 3.9, Crazy Programmer (?), 12:03, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем Вам ООП?
     
     
  • 4.12, anonymous (??), 12:17, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Что бы - ООП! Нанай-на!
     
  • 2.10, анон (?), 12:12, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Функциональное программирование - ООП

    Сам по себе Erlang это безусловно функциональщина, но т.к. пишут чаще всего не на Erlang, а Erlang/OTP, то можно говорить, что Erlang самый натуральный ООП.

     
     
  • 3.23, Crazy Alex (ok), 14:54, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ООП - да. А вот насчет натуральности я бы поспорил. На редкость неестественно оно выглядит. Прнимерно как метапрограммирование, прибитое к старым плюсам.  И работает, и мощное донельзя, и используется повсеместно - но совершенно очевидно, что это насилие над языком. Благо, в С++11 подправили, осталось концептов дождаться.
     

  • 1.15, Аноним (-), 13:01, 03/07/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ну, когда там уже появится стабильный rust 1.0
     
  • 1.16, Аноним (-), 13:05, 03/07/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    http://www.opennet.me/openforum/vsluhforumID3/95231.html#18
     
  • 1.26, Аноним (-), 16:55, 03/07/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Дональд Кнут одобрил ???
    значит паскаль и Си, остальное сжечь, еретики
     
  • 1.28, Mirraz (ok), 20:06, 03/07/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень похоже на торт! Раньше всё надеялся на D, но GC убивает все преимущества, Go как-то мимо меня прошёл, а вот Rust как раз может стать той серебряной пулей.
     
     
  • 2.30, Аноним (-), 21:36, 03/07/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Go полностью завязан на GC, так что вам он понравится видимо еще меньше чем D :) А еще там нет дженериков
     

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



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

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