The OpenNET Project / Index page

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

Увидел свет язык программирования Rust 1.11

19.08.2016 10:12

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

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

  • Проведена большая работа по приведению в порядок внутренностей компилятора в процессе подготовки перехода на новую модель трансляции, основанную на дополнительном промежуточном представлении MIR (mid-level IR), применяемом после HIR (high-level IR), но перед LLVM IR. Также ведётся подготовка к реализации режима инкрементальной компиляции, допускающей использование неизменившихся объектных файлов;
  • В пакетный менеджер Cargo добавлена поддержка представленного в прошлом выпуске нового формата исполняемых контейнеров (crate type) cdylib, который рассчитан на компиляцию динамических библиотек, предназначенных для встраивания в программы на других языках. В Cargo.toml теперь допустимо указание 'crate-type = ["cdylib"]';
  • В стандартной библиотеке проведена замена предлагаемого по умолчанию метода хэширования - вместо ранее применяемого SipHash 2-4 задействован SipHash 1-3, который значительно быстрее, но потенциально менее стоек к возможным новым атакам, связанным с использованием коллизий (в настоящий момент проблем нет);
  • Добавлена поддержка вложенных атрибутов cfg_attr и возможность работы cfg_attr с атрибутами path;
  • В разряд стабильных переведена новая порция функций и методов. В BinaryHeap, BTreeMap и BTreeSet добавлен метод append. В libcore включены методы to_degrees и to_radians. В Iterator добавлены методы sum и product. В Cell и RefCell добавлен метод get_mut.

Из последних успехов Rust можно упомянуть включение первых компонентов, написанных на Rust, в основной состав Firefox 48, а также первый выпуск проекта Way Cooler, в рамках которого развивается написанный на Rust композитный менеджер для Wayland. Way Cooler может выступать в роли оконного менеджера с поддержкой мозаичного режима с управлением в стиле i3. Поддерживается подключение расширений на языке Lua и запуск X-приложений через XWayland.

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

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



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


Обсуждение (61) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:19, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    > По структуре язык Rust напоминает C++

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

     
     
  • 2.2, Аноним (-), 10:36, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Еще заголовок неправильно написан, не в духе opennet. Надо было так: "Увидел свет язык программирования Rust 1.11, [u]ознаменовавший[/u] переход к разработке версии 1.12"
     
     
  • 3.8, rob pike (?), 11:21, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +20 +/
    "Ознаменовавший переход к разработке версии 1.12, в соответствии с решениями XXV Съезда, направленными на дальнейшее улучшение условий труда девелоперов, всего айтишного народа. Разработчики Rust взяли на себя повышенные социалистические обязательства и вызвали на соцсоревнование разработчиков Go, пообещав выпустить 1.12 в кратчайшие сроки"
     
     
  • 4.28, Аноним (-), 16:00, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    А я не поехал
    Я купил мотыля и пошел на реку...
     
  • 2.18, Аноним (-), 13:27, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Этот абзац бездумно копипастят из новости в новость.

    Это со всеми повторяющимися новостями так. Иногда бывает забавно.

     
  • 2.23, Аноним (-), 14:42, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А можно обосновать? Подход к управлению ресурсами (в том числе памятью) в этих языках очень похож, и я с ходу не могу вспомнить еще такие языки.
     
  • 2.35, Devider (ok), 20:09, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> По структуре язык Rust напоминает C++
    >>Этот абзац бездумно копипастят из новости в новость. Это разные языки, хоть как их сравнивай.

    Там же написано:
    >но существенно отличается в некоторых деталях реализации синтаксиса и семантики

    Так же раст напоминает Ada, Action script, Assembler, B, ..., Zonnon (включая РАФАЛ и МОДУЛу), но и имеет ряд отличий.

     
     
  • 3.51, Аноним (-), 15:53, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "муха - это такой маленький вертолёт", "но существенно отличается в некоторых деталях реализации"
     
     
  • 4.53, Аноним (-), 16:52, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > "муха - это такой маленький вертолёт", "но существенно отличается в некоторых деталях
    > реализации"

    Муха это маленькая птичка, КиШ одобряет :D

     

  • 1.3, jacob (?), 10:39, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    > Pадействован SipHash 1-3, который значительно быстрее, но потенциально менее стоек к возможным новым атакам, связанным с использованием коллизий (в настоящий момент проблем нет)

    прямо как в анекдоте. решил жить вечно, в настоящий момент проблем нет

     
  • 1.4, Аноним (-), 11:01, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Скиньте, пожалуйста, какую-нибудь статейку про то, как раст с памятью работает.

    Интересует, в основном, как фрагментируется (или не фраментируется) куча.

     
     
  • 2.5, Аноним (-), 11:04, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Про jemalloc почитайте, для бинарников он используется по умолчанию.
     
     
  • 3.57, Аноним (-), 09:46, 21/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ой-йё, не знал, что там jemalloc. Спасибо.
     

  • 1.7, rob pike (?), 11:17, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > развивается экспериментальный браузерный движок Servo

    Куда развивается? Развиваться можно после того как заработало что-то.

     
     
  • 2.9, Comdiv (ok), 11:30, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Развивается до рабочего состояния. Разве тут есть логическое противоречие?
     
     
  • 3.13, rob pike (?), 12:07, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Здесь есть вот какая тонкость. Если что-то "развивается до рабочего состояния", то это что-то неуместно в этой фазе развития называть "движком Servo". Можно "зачатками движка Servo", "прототипом движка Servo", "громадьем планов разработчиков движка Servo", и еще много как.
    Когда употребляется выражение "движок Servo развивается", тем самым подразумевается что этот "движок Servo" есть что-то существующее, рабочее - то есть следующую фазу развития.
     
     
  • 4.34, Comdiv (ok), 17:50, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Если что-то "развивается до рабочего состояния", то
    > это что-то неуместно в этой фазе развития называть "движком Servo".

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

     
     
  • 5.41, rob pike (?), 22:19, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Вот и называйте его "проектом создания движка Servo", а не "движком Servo".
     
     
  • 6.43, Comdiv (ok), 22:39, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Движок Servo - это и есть проект.
     
     
  • 7.46, rob pike (?), 01:33, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Что же, работающий движок Servo - это будет уже другой проект?
     
     
  • 8.47, Comdiv (ok), 01:43, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Что же Вы юродствуете Плохо работающий движок Servo и хорошо работающий в будущ... текст свёрнут, показать
     
     
  • 9.56, Аноним (-), 06:56, 21/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хорошая оговорка, учитывая сколько прошло времени и как это работает Может Ма... текст свёрнут, показать
     
  • 2.10, КО (?), 11:35, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    тут я с ВАми в корне не согласен - развиваться можно и до того, а вот деградировать, после.
     
     
  • 3.16, freehck (ok), 13:07, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    тут я с ВАми в корне не согласен - по моему опыту многие комментаторы деградировали до уровня обезьяны ещё до того, как у них в голове что-то заработало.
     
     
  • 4.38, Led (ok), 20:27, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > многие комментаторы деградировали

    Ты ж не намекаешь на вашего штатного (rob pike)?

     
     
  • 5.45, freehck (ok), 23:32, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ты ж не намекаешь на ... rob pike?

    Нет

     
     
  • 6.52, Led (ok), 16:06, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ты ж не намекаешь на ... rob pike?
    > Нет

    Спасибо, именно это и хотел услишать, чтобы развеять 1% сомнений в том, что rob pike -ваш штатный.

     
     
  • 7.54, Аноним (-), 06:44, 21/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Спасибо, именно это и хотел услишать, чтобы развеять 1% сомнений в том,
    > что rob pike -ваш штатный.

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

     
  • 3.60, Вареник (?), 07:50, 22/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > тут я с ВАми в корне не согласен - развиваться можно и
    > до того, а вот деградировать, после.

    Можно развиваться и деградировать одновременно.
    Обычно так и происходит.

     
  • 2.20, Растаман (?), 13:38, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Я понимаю, что haters gonna hate, но что мешает хотя бы погуглить? В репозитории https://github.com/servo/servo регулярные коммиты. Значит таки развивается, в отличии от :)
     
     
  • 3.22, rob pike (?), 14:39, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В отличие от чего?
     
     
  • 4.36, chinarulezzz (ok), 20:20, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В отличии от :)
     
  • 4.39, Led (ok), 20:27, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > В отличие от чего?

    тебя?

     
  • 3.49, Аноним (-), 11:15, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Развитие в неправильную сторону называется по другом. Хотя тоже сопровождается определённым количеством коммитов в единицу времени.
     
  • 2.37, Led (ok), 20:25, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Развиваться можно после того как заработало что-то.

    Значит ты таки не работаешь?

     

  • 1.11, Нанобот (ok), 11:51, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Rust->HIR->MIR->LLVM IR->машинный код
    по-моему это перебор с уровнями абстракции
     
     
  • 2.12, АнонимХ (ok), 11:59, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Любую проблему можно решить добавлением нового абстрактного слоя, кроме проблемы слишком большого количества абстрактных слоев :)
     
     
  • 3.55, Аноним (-), 06:47, 21/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Любую проблему можно решить добавлением нового абстрактного слоя, кроме проблемы слишком
    > большого количества абстрактных слоев :)

    Их можно абстрагировать, представив как всего один слой :)

     
     
  • 4.59, Вареник (?), 07:46, 22/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Для каждого следующего существует лишь предыдущий :)
     
  • 2.14, rob pike (?), 12:37, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > The latest verified CakeML compiler passes through 12 intermediate languages
     
     
  • 3.29, Нанобот (ok), 16:25, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    это не то, чем стоит гордиться
     
     
  • 4.42, rob pike (?), 22:21, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Как же вы предложили бы переделать архитектуру CakeML?
     
  • 2.15, Аноним84701 (?), 13:02, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Rust->HIR->MIR->LLVM IR->машинный код
    > по-моему это перебор с уровнями абстракции

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

    Вообще, сейчас HIR занимается и проверкой типов и borrowcheck, т.е. и жнец и на дуде игрец.
    А будет только проверять типы, borrow check вынесут в MIR, что вроде как позволит сделать проверку типов более точной. Ну и расто-специфическая оптимизация будет там же, в MIR.
    > reviously, the compiler relied solely on LLVM to perform optimizations, but with MIR, we can do some
    > Rust-specific optimizations before ever hitting LLVM – or, for that matter, before monomorphizing code.
    > Rust’s rich type system should provide fertile ground for going beyond LLVM’s optimizations.

    В общем, будем посмотреть что из этого выйдет.

     
  • 2.17, anonymous (??), 13:09, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кэп, это компилятор. Чтобы пооптимальней код генерировать ввели ещё доп. уровень оптимизаций. Конечных девелоперов и пользователей это никак не затронет, разве что бинарь будет чуть более быстрой или лёгкой.
     

  • 1.19, Аноним (-), 13:29, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Мне кажется, или все хотят опять вернуть проект пятого поколения компьютеров, забывая даже о законе Амдала? Вообще, в прошлом веке было как минимум несколько подобных языков
     
     
  • 2.21, Crazy Alex (ok), 14:31, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какой закон Амдала, если параллельно выполняется куча задач?
     
     
  • 3.26, angra (ok), 15:25, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как бы закон Амдала именно о параллельных вычислениях/задачах.

    Хотя чем он напугал анонима мне тоже не ясно.

     
     
  • 4.27, Crazy Alex (ok), 15:37, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Он о распараллеливании _одной_ задачи.А ы нашем случае - куча задач. То есть о самом феномене помнить стоит, но когда и как овчинка перестанет стоить выделки - только экспериментально проверять, и то обновлениями софта можно подправить.
     
     
  • 5.30, angra (ok), 16:26, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет никакой принципиальной разницы. И формулировок этого закона куча, в том числе вообще без использования понятия задачи. Например такая:
    "Производительность вычислительной системы, состоящей из связанных между собой устройств, в общем случае определяется самым непроизводительным ее устройством."
     
  • 4.50, Аноним (-), 14:19, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, что в прошлом веке уже пытались сделать то, что делают сейчас. Рекомендую всем поискать историю компьютеров пятого поколения
     

  • 1.24, adolfus (ok), 14:59, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нет стандарта -- нет и языка.
     
     
  • 2.25, Roo2AT7d (ok), 15:13, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нет стабильного ABI -- нет и языка.
     
     
  • 3.61, Аноним (-), 12:08, 22/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нет мозгов - считай, инвалид.
     

  • 1.31, skybon (ok), 17:02, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > обработка ошибок по кодам

    Закопать Rust и прикрутить стаический анализатор к g++.

     
     
  • 2.32, Аноним (-), 17:27, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Иж как у тебя бомбит по GCC/GNU
     
     
  • 3.33, Ordu (ok), 17:37, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. Бомбит по C++. Такого рода комментарии рождаются из рассуждения вида: "в языке X это можно сделать при помощи всего двух костылей, так зачем тогда добавлять это в список фичей языка Y?" А такие рассуждения порождаются из-за излишне идеализированного отношения к языку X.
     

  • 1.40, Аноним (-), 21:00, 19/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > При этом Rust обходится без использования сборщика мусора

    Ну не обходится, а не сожержит. Ибо утечки памяти таки допускает

     
     
  • 2.44, Аноним (-), 22:46, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И обходится, и содержит. Читайте дорогую документацию.
     
     
  • 3.48, Аноним (-), 09:21, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Утечки памяти не нарушают безопасность памяти
     

  • 1.58, Вареник (?), 07:43, 22/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Совпадет ли выпуск Servo с окончательным скурвиванием Мозиллы и ее флагманского продукта?
     
  • 1.62, Кирилл72 (?), 01:44, 23/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  и предоставляющего средства для высокого параллелизма выполнения заданий

    В каждой новости подобная фраза. Есть те кто изучал Rust? В Go понятно, канкаренси, работающий через runtime, а в Rust как это работает, если у него нет рантайма?
    За счет чего работает этот "высокий параллелизм"?

     

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



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

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