LINUX.ORG.RU

Rust


248

19

Всего сообщений: 119

Продемонстрирована возможность разработки частей Linux на Rust

Группа Разработка

Французский программист написал статью, в которой рассмотрел возможность переписывания ядра Linux на Rust.

В статье отмечено, что данный язык хорошо подходит для системного программирования, будучи достаточно низкоуровневым и при этом лишённым многих недостатков C, и уже используется для написания новых ОС. Однако автор не считает создание ОС с нуля перспективным для серьёзного применения, и последовательный перенос отдельных частей Linux на Rust для решения различных проблем безопасности кажется ему более целесообразным.

В качестве «Proof of Concept» была приведена реализация системного вызова, содержащая вставки на Assembler внутри unsafe-блоков. Код компилируется в объектный файл, не связанный с библиотеками и интегрируемый в ядро во время сборки. Работа производилась на основе исходного кода Linux 4.8.17.

>>> Статья

 , ,

batya
()

Rust 1.17

Группа Mozilla

Команда Rust рада представить выпуск Rust 1.17.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.

Если у вас установлена предыдущая версия Rust, то для обновления достаточно выполнить:

$ rustup update stable

Если у вас ещё не установлен Rust, то вы можете установить rustup c соответствующей страницы нашего веб-сайта и ознакомиться с подробным примечанием к выпуску 1.17.0 на GitHub.

( читать дальше... )

>>> Подробнее смотрите примечания к выпуску

 ,

mersinvald
()

29–30 апреля в Киеве пройдёт RustFest 2017

Группа Конференции и встречи

29–30 апреля в Киеве будет проходить европейская конференция RustFest.

Rust — самый любимый язык программирования в мире по опросу StackOverflow. Он соединяет в себе последние достижения теории языков программирования с лучшими практиками индустрии и используется повсеместно: Internet of Things, Machine Learning, системные библиотеки, аддоны для Python, Java, .NET и т. д., мобильная разработка и WebAssembly.

( читать дальше... )

>>> Подробности

 , ,

listochkin
()

Начата публикация исходных кодов серверной части Wire

Группа Open Source

На GitHub начата публикация исходных кодов серверной части сервиса обмена мгновенными сообщениями Wire. Пока опубликован код, отвечающий за обмен сообщениями и интеграцию с nginx. В дальнейшем будут открыты исходники системы push-нотификаций для устройств на iOS и Android, поиска пользователей и управления устройствами.

Большая часть кода написана на языке программирования Haskell, небольшие фрагменты — на Rust и C. Код опубликован под лицензией AGPL 3.0.

Исходный код

>>> Подробности

 , , ,

hateyoufeel
()

Rust 1.16

Группа Mozilla

Представлен релиз Rust 1.16 — системного языка программирования, нацеленного на безопасную работу с ресурсами, скорость и параллельное выполнение кода. В этот релиз вошли 1364 патча от 137 разработчиков.

Если у вас уже установлена предыдущая версия Rust, то обновиться до Rust 1.16 очень легко:

$ rustup update stable

Самое крупное нововведение в Rust 1.16 — новая субкоманда cargo check направленная на ускорение процесса разработки.

( читать дальше... )

>>> Подробности

 ,

mersinvald
()

Rust 1.15

Группа Разработка

Представлен релиз Rust 1.15 — системного языка программирования, нацеленного на безопасную работу с памятью, скорость и параллельное выполнение кода. В этот релиз вошли 1443 патча.

Если у вас уже установлена предыдущая версия Rust, то обновиться до Rust 1.15 очень легко:

$ rustup update stable
или же следуя инструкции на соответствующей странице.

( Новое в 1.15 )

>>> Подробности

 

dotcoder
()

Rust 1.14

Группа Mozilla

Представлен релиз Rust 1.14 — системного языка программирования, нацеленного на безопасную работу с памятью, скорость и параллельное выполнение кода. В этот релиз вошли 1230 патчей.

( Новое в 1.14 )

>>> Подробности

 

dotcoder
()

Анонсирован первый конкурс недобросовестного программирования на Rust

Группа Mozilla

Команда Rust анонсирует первый ежегодный конкурс «недобросовестного Rust» по мотивам существующих конкурсов «недобросовестного C» и «недобросовестной криптографии».

Задача Rust — сделать доступным написание безопасного низкоуровневого кода, защищённого от случайных уязвимостей. Меньше времени уделяется возможности Rust защитить от умышленного внедрения уязвимостей при бдительном обзоре кода. Конкурс предназначен для обнаружения и устранения возможных слабостей языка и его экосистемы. Иными словами, авторы просят вас сломать систему с помощью достаточно лёгкого для понимания кода. Можете ли вы написать полностью safe-Rust, скрывающий логический баг, или скрыть в unsafe-Rust уязвимость, которая не обнаружится при обзоре кода?

>>> Подробности

 

anonymous
()

Первый Live CD Redox OS

Группа Open Source

Доступен первый тестовый образ Live CD Redox OS — операционной системы, написанной на Rust.

( читать дальше... )

>>> Исходный код

>>> livedisk.iso

>>> Подробности

 , ,

mersinvald
()

Rust 1.13

Группа Mozilla

Представлен релиз Rust 1.13 — системного языка программирования, нацеленного на безопасную работу с памятью, скорость и параллельное выполнение кода. В этот релиз вошли 1448 патчей.

Этот сезон оказался очень плодотворным для Rust. Проведены конференции RustConf, RustFest и Rust Belt Rust. Обсуждено будущее языка, разработан план на 2017 год и созданы новые инструменты.

Новое в 1.13

Выпуск 1.13 содержит несколько расширений языка, включая долгожданный оператор ?, оптимизацию времени компиляции, новые возможности cargo и стандартной библиотеки, а также множество мелких улучшений в документации и исправления ошибок.

Cargo в этом релизе содержит важные обновления безопасности, связанные с зависимостями от curl и OpenSSL, для которых также недавно были опубликованы обновления безопасности. Подробную информацию можно найти в соответствующих источниках для curl 7.51.0 и OpenSSL 1.0.2j.

( читать дальше... )

>>> Подробности

 

dotcoder
()

Corrode, проект транслятора из C в Rust, получил финансирование Mozilla

Группа Open Source

Джеймс Шарп (James Sharp), отметившийся ранее в проекте X.org, в начале мая 2016 начал разработку проекта Corrode, целью которого является трансляция программ, написанных на C, в исходный код на Rust. Corrode написан на Haskell и распространяется под GNU GPLv2.

( читать дальше... )

>>> Подробности

 , corrode, , ,

shahid
()

Rust Language Service

Группа Open Source

Разработчики Rust представили Rust Language Service, который является одной из первых реализаций Language Server Protocol, созданного Microsoft, Codenvy и Red Hat для стандартизации коммуникации различных IDE и языков программирования.

Rust Language Service пока в состоянии «pre-alpha» и разработчики просят вашей помощи.

Поддержка Language Server Protocol на данный момент реализована только только в Eclipse и VSCode.

>>> Подробности о Language Server Protocol

>>> Подробности о Rust Language Service

 , ,

grim
()

svgcleaner 0.7.0

Группа Open Source

Вышла новая версия программы для очистки SVG-файлов от лишней информации.

svgcleaner позиционируется как оптимизатор без потерь, строго следующий спецификации SVG 1.1 Full.

( основные изменения )

Программа распространяется под лицензией GNU GPL v2. Сопутствующие библиотеки — под MPL v2.

Готовые сборки

>>> Подробности

 ,

RazrFalcon
()

into_rust() — скринкасты по Rust. Доступно видео с RustConf 2016.

Группа Документация

into_rust() — это плод годовой работы Николаса Мацакиса, одного из основных членов команды разработчиков Rust, и представляет из себя хранилище обучающих скринкастов по данному языку программирования. Обучение строится вокруг принципа работы с памятью в Rust: владение и заимствование.

( читать дальше... )

Также стали доступны видеозаписи с прошедшей 10 сентября первой конференции по Rust — RustConf 2016.

( читать дальше... )

>>> Подробности

 , rustconf, ,

dotcoder
()

Rust 1.12

Группа Mozilla

Команда разработчиков Rust рада представить релиз Rust 1.12 — системного языка программирования, нацеленного на безопасную работу с памятью, скорость и параллельное выполнение кода. В этот релиз вошёл 1361 патч.

( читать дальше... )

>>> Подробности

 

dotcoder
()

Rust 1.11

Группа Mozilla

Команда разработчиков Rust рада представить релиз Rust 1.11. Rust — это системный язык программирования, при разработке которого внимание сосредоточено на безопасности, скорости и параллелизме.

Как обычно, вы можете установить Rust 1.11 с соответствующей страницы на официальном сайте, а также посмотреть примечания к выпуску на GitHub.

( читать дальше... )

>>> Подробности

 

Kilte
()

Rust 1.10

Группа Mozilla

Анонсирована очередная версия языка программирования Rust 1.10, разрабатываемого Mozilla совместно с сообществом.

Улучшения компилятора:

  • Добавлен новый тип крейта cdylib, предназначенный для экспорта C API. Основные отличия от dylib:
    • отсутствие метаданных;
    • разрешено LTO;
    • все библиотеки должны быть статически слинкованы;
    • экспортируются лишь те символы, которые помечены как extern. Например:
      pub fn foo() {} // не экспортируется
      #[no_mangle] pub extern fn bar() {} // экспортируется
    Для сравнения: «hello world» cdylib занимает 7.2КБ, а dylib - 2.4МБ.
  • Добавлена поддержка платформ i586-unknown-linux-gnu, i686-unknown-linux-musl, и armv7-linux-androideabi;
  • Снижено потребление памяти на ~100МБ при проверке типов;
  • Ускорена проверка T: Sized на 15%;
  • Улучшена кодогенерация при #[derive(Copy, Clone)].

Изменения в стандартной библиотеке:

Breaking changes!

  • AtomicBool теперь преобразуется в bool, а не isize. Демонстрация:
    use std::sync::atomic::AtomicBool;
    use std::mem::transmute;
    
    fn main() {
        let foo: bool = unsafe { transmute(AtomicBool::new(true)) };
    }
    
    На старых версиях компилятора будет ошибка;
  • time::Duration::new теперь будет паниковать при переполнении;
  • String::truncate теперь будет паниковать чуть меньше;
  • Небольшое изменение поведения макросов на этапе их парсинга: из :ty и :path следует :block;
  • Исправлен баг, связанный с гигиеной макросов. Следующий код будет валидным в устаревших версиях компилятора:
    fn main() {
        let x = true;
        macro_rules! foo { () => {
            let x = 0;
            macro_rules! bar { () => {x} }
            let _: bool = bar!();
            //^ `bar!()` использует первый `x` (который bool),
            //| а должен использовать второй `x` (который i32).
        }}
        foo! {};
    }
  • Переименование платформ:
    • arm-unknown-linux-gnueabi => arm-unknown-linux-gnu;
    • arm-unknown-linux-gnueabihf => arm-unknown-linux-gnu;
    • armv7-unknown-linux-gnueabihf => armv7-unknown-linux-gnu.
    Другими словами, изменены target_env, применяемые в conditional compilation.

Изменения в менеджере зависимостей Cargo:

  • Добавлен флаг --force, -f для подкоманды cargo install, предназначенной для загрузки исходных текстов из crates.io, их компиляции и установки в каталог ~/.cargo/bin. Это нововведение теперь позволит писать:
    cargo install FOO -f
    вместо:
    cargo uninstall FOO
    cargo install FOO
    Однако всё еще невозможно узнать, а требуется ли обновление вообще?
  • Диагностические сообщения теперь отправляются в stderr, а не в stdout;
  • С помощью флагов cargo doc --bin и cargo doc --lib можно выбрать: генерировать html документацию для проекта-приложения src/main.rs или проекта-библиотеки src/lib.rs;
  • В конфигурационном файле Cargo.toml, который можно встретить в корневом каталоге каждого проекта, теперь можно указать, каким образом макрос panic!() будет завершать приложение: unwind (по умолчанию) или abort;
  • Добавлен флаг cargo --explain FOO, поведение которого идентично rustc --explain FOO: показывает документацию по номеру ошибки;
  • В черный список имен крейтов добавлены ключевые слова раста, такие как fn, unsafe, let и прочее.

>>> Подробности

 ,

shaiZaigh
()

Rust 1.9

Группа Mozilla

Анонсирована очередная версия языка программирования Rust 1.9, разрабатываемого Mozilla совместно с сообществом. Примечательно то, что с момента релиза первого стабильного выпуска прошел 1 год.

Основные изменения:

  • Стабилизирован модуль std::panic, позволяющий перехватывать раскрутку стека. Соответствующие функции рекомендуется применять только в исключительных ситуациях, но никак не для эмуляции механизма try-catch.
  • Стабилизированы методы настройки TCP и UDP соединений; расширены возможности OsString, BTreeSet и HashSet; char может быть получен из UTF-16 последовательности; стабилизирована функция copy_from_slice(); появилась возможность работы с волатильными переменными с помощью read_volatile и write_volatile; сырые указатели обрели .as_ref() и .as_mut(), которые возвращают Option<&T>, где null будет представлен как None; в libcore для всех типов реализован Debug.
  • Разработчикам библиотек доступен атрибут #[deprecated], разрешающий компилятору слать предупреждения при использовании устаревшего API.
  • Специализация уже используется в ночном релизе и будет доступна в стабильном 1.11 через 3 месяца, но оптимизация .to_owned() и .to_string() таки попала в текущий стабильный выпуск.
  • Расширен список поддерживаемых платформ: mips-unknown-linux-musl, mipsel-unknown-linux-musl, i586-pc-windows-msvc.
  • Ускорено время компиляции монады с одинаковыми функциями.

Изменения в менеджере зависимостей Cargo:

  • В системе могут работать несколько cargo одновременно, блокировки теперь применяются на файлы.
  • Переменную окружения RUSTFLAGS можно использовать для передачи произвольных флагов компилятору.

Для кросс-компиляции подготовлен инструмент rustup, обеспечивающий тривиальное взаимодействие с каналами сборок компилятора (stable, beta, nightly), стандартными библиотеками и их документацией к различным операционным системам, а также обновление всего этого зоопарка одной командой.

>>> Подробности

 

shaiZaigh
()

Вышел Rust 1.8

Группа Open Source

Команда Rust с удовольствием сообщает о выходе новой стабильной версии Rust 1.8. Rust — это язык системного программирования, фокусирующийся на безопасности, скорости и поддержке многопоточного программирования.

( читать дальше... )

>>> Вышел Rust 1.8

 

red75prim
()

Redox — операционная система, написанная на Rust

Группа Open Source

Redox — новая UNIX-подобная операционная система с открытым исходным кодом, написанная на Rust.

Основные особенности:

  • микроядерная архитектура;
  • основная часть кода написана на Rust;
  • имеется опционально включаемый GUI Orbital;
  • библиотека Newlib для программ на C (аналог glibc);
  • лицензия MIT;
  • драйверы работают в пространстве пользователя;
  • доступны распространенные команды UNIX;
  • поддержка ZFS (пока в разработке).

Скриншот

Образы для QEMU и VirtualBox, ISO с установщиком

>>> Подробности

 ,

Deleted
()