The OpenNET Project / Index page

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

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

30.09.2016 21:35

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

В состав нового выпуска принято 1361 изменений от 176 разработчиков. Основные новшества:

  • Переход на новый бэкенд компилятора, использующий модель трансляции, основанную на дополнительном промежуточном представлении MIR (mid-level IR), применяемом после HIR (high-level IR), но перед LLVM IR. MIR предоставляет всю необходимую информацию о потоке управления программы, позволяя компилятору точно судить об изменении типов и необходимости вызова деструкторов, манипулируя простейшими структурами в стеке, легко транслируемыми в вид, поддающийся оптимизации в LLVM.

    MIR также позволяет обойтись значительно более простым языком, упрощающим создание фаз компиляции и проверки корректности, без необходимости выполнения манипуляций только с достаточно сложным абстрактным синтаксическим деревом (AST). Для некоторых типов кода после внедрения MIR наблюдается сокращение времени компиляции и размера результирующего кода. В дальнейшем, MIR позволит добавить новые режимы оптимизации, труднореализуемые при ранее используемой схеме работы компилятора;

  • Представлен новый формат сообщений об ошибках, выводимых компилятором rustc. Новый формат в наглядном виде доводит до разработчика внутреннюю информацию о причинах возникновения ошибки, подсвечивая цветом части кода, связанные с проблемой, и приводя в примечании данные о том, что именно не так с кодом. При этом показывается не только строка в коде, на которой непосредственно возникла ошибка, но и контекстно связанные с ошибкой строки. Например, при ошибке вызова функции из-за неверного указания аргументов, дополнительно показывается строка с определением аргументов функции. Новый формат может выводиться не только на экран, но и в виде конструкций JSON ("--error-format=json") для автоматизированной обработки результатов сборки;

  • В пакетный менеджер Cargo добавлена поддержка "рабочих областей" (workspaces), позволяющих использовать в группе пакетов единый файл блокировки Cargo.lock. Для проектов, разбиваемых на несколько пакетов, новая возможность позволит упростить поддержание общих зависимостей. В cargo также добавлена возможность переопределения источника исполняемых контейнеров (crate), что позволяет при помощи команд cargo-vendor и cargo-local-registry организовать обращение к локальной копии зависимостей, что в будущем послужит основой для возможности создания локальных зеркал репозитория crates.io;
  • В rustc добавлена поддержка трёх новых целевых платформ библиотеки MUSL: arm-unknown-linux-musleabi, arm-unknown-linux-musleabihf и armv7-unknown-linux-musleabihf, для которых генерируются статически связанные исполняемые файлы;
  • Добавлена поддержка сборки компилятора с использованием LLVM 3.9;
  • В тестовые исполняемые файлы добавлена опция "--test-threads" для задания числа потоков, используемых при запуске тестов. При выполнении тестов дольше 60 секунд теперь выводится предупреждение;
  • В разряд стабильных переведена новая порция функций и методов.

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

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



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


Обсуждение (13) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Андрей (??), 23:10, 30/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Добавлена поддержка сборки компилятора с использованием LLVM 3.9

    Как-никак ровно 4 недели назад вышел.

     
  • 1.2, Аноним (-), 22:39, 01/10/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > и модель акторов

    Кочует из новости в новость эта самая модель акторов. Кто-то может объяснить, что имеется ввиду, ибо в стандартной библиотеке никаких акторов нет.

     
     
  • 2.3, Аноним (-), 23:44, 01/10/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно были ранее (до 1.0) и их убрали из стандартной библиотеки как не production-ready реализацию.

    Как я понимаю, для actor model в языке уже есть необходимые механизмы (channels), а реализации можно поискать на крейтс:

    https://crates.io/search?q=actor

     
     
  • 3.4, Аноним (-), 13:35, 02/10/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Возможно были ранее (до 1.0) и их убрали из стандартной библиотеки как не production-ready реализацию.
    >
    > Как я понимаю, для actor model в языке уже есть необходимые механизмы (channels), а реализации можно поискать на крейтс:
    >
    > https://crates.io/search?q=actor

    Ну так речь именно про стандартную библиотеку, в крейтах много чего есть.
    Скорее всего имеются ввиду таски, которые были весьма схожи с акторами. Но их выпилили, как и зелёные потоки.
    Так и зачем это писать из новости в новость?

     
     
  • 4.5, Аноним (-), 17:28, 02/10/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что это шаблон для копипасты, с которым нюьсмейкером влом разбираться.
     
     
  • 5.8, all_glory_to_the_hypnotoad (ok), 20:48, 02/10/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    В этом и заключается весь rust - сплошной булшит из фантазий его апологетов N-летней давности.
     
     
  • 6.10, Аноним (-), 08:49, 03/10/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    разрешите уточнить: фантазии или апологеты N-летней давности?
     

  • 1.6, th3m3 (ok), 20:23, 02/10/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Уже можно чисто на Rust писать Android-приложения? Никто не в курсе?
     
     
  • 2.9, vasily (?), 00:14, 03/10/2016 [^] [^^] [^^^] [ответить]  
  • +/
    "Чисто на расте" можно писать то же, что и "чисто на сях".
     
  • 2.11, Аноним (-), 12:48, 03/10/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Можно, начиная с компилятора и загрузчика
     

  • 1.7, all_glory_to_the_hypnotoad (ok), 20:47, 02/10/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > По структуре язык Rust напоминает C++...

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

     
     
  • 2.12, Илья (??), 19:23, 03/10/2016 [^] [^^] [^^^] [ответить]  
  • +/
    так про все языки пишут, у которых блоки в фигурных скобках. так писали про пёрл, про свифт, про го.

    Просто когда читаете такую надпись не воспринимайте ее всерьёз.

     
     
  • 3.13, Led (ok), 23:24, 04/10/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Эрлангисту оно напоминает эрланг (без OTP и, к сожалению, без лёгких процессов).

    Хаскелисту... нет, хаскелисту оно, наверное, ничего не напоминает из-за отсутствия монад и жутко красивой, но практически бесполезной "ленивости".

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



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

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