LINUX.ORG.RU

Сообщения dotcoder

 

Немного новостей из мира Rust

Последние новости из мира Rust вкратце:

  1. Вышла новая стабильная версия Rust 1.74.0.
  2. Сформирована новая команда по работе над официальной спецификацией языка Rust и представлено их видение.
  3. Ferrocene (набор инструментов компилятора Rust для критически важных сред и систем безопасности) прошёл сертификацию и теперь официально соответствует требованиям ISO 26262 и IEC 61508 и полностью пригоден для использования в средах, критически важных для безопасности.
  4. Доступно видео с конференции EuroRust 2023.
  5. Microsoft вкладывает 10 миллионов долларов, чтобы сделать Rust языком 1-го класса в своих инженерных системах.

Перемещено maxcom из talks

 

dotcoder
()

JetBrains присоединяется к Фонду Rust и выпускает новую среду разработки под Rust — RustRover

 ,

dotcoder
()

Ушёл из жизни автор Vim — Брэм Муленаар

3 августа ушёл из жизни автор Vim Брэм Муленаар.

https://groups.google.com/g/vim_announce/c/tWahca9zkt4?pli=1

 bram moolenaar, ,

dotcoder
()

Google представила новую операционную систему

Там это, Google новую операционку анонсировала. Называется KataOS.

Пишут, что для встраиваемых систем, периферийных устройств (типа сетевых камер) и интернета вещей. Цель – написать надёжно-защищённую систему, поэтому «Катя» практически полностью написана на Rust.

В качестве ядра используется микроядро seL4 (и, внимание: seL4’s implementation is formally (mathematically) proven correct (bug-free) against its specification. It was the world’s first operating system with such a proof, and is still the only proven operating system featuring fine-grained capability-based security and high performance).

Подробнее: https://opensource.googleblog.com/2022/10/announcing-kataos-and-sparrow.html

 , kataos,

dotcoder
()

Pingora — альтернатива Nginx от Cloudflare

Компания Cloudflare в своём блоге рассказала о новом HTTP-прокси Pingora, написанном на Rust.

На данный момент Pingorа полностью задействована в продакшне и уже показала более высокую производительность и эффективность по сравнению со старым решением: Pingora обслуживает более 1 трлн. запросов в день, потребляя при этом только треть вычислительных ресурсов и ОЗУ по сравнению с предыдущей инфраструктурой (Pingora потребляет примерно на 70% меньше процессорного времени и на 67% меньше памяти по сравнению со старым сервисом с той же нагрузкой по трафику).

Причиной написания своего прокси послужили ограничения и возможности Nginx, в которые они упёрлись, и было целесообразнее написать своё решение: «мы переросли Nginx» - как они сами пишут в корпоративном блоге.

В будущем Cloudflare планируют открыть исходный код Pingora.

https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/

 , pingora,

dotcoder
()

Carbon — преемник C++ от Google

На конференции Cpp North был представлен экспериментальный язык программирования Carbon – преемник С++ (по заявлению разработчиков). Видео презентации: https://www.youtube.com/watch?v=omrY53kbVoA

Разработчики обещают производительность, соответствующую C++, взаимодействие с существующим кодом C++, от наследования до шаблонов, быстрые и масштабируемые сборки, совместимые с существующими системами сборки C++, двунаправленную интероперабельность с C++ и многое другое.

Пример кода на Carbon:

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

тот же код на С++:

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

Доп. информация: https://9to5google.com/2022/07/19/carbon-programming-language-google-cpp/

 , carbon

dotcoder
()

Rust 1.59.0

Вышла новая версия языка программирования Rust, Rust 1.59.0. В этой версии стабилизированы следующие возможности:

Встроенный ассемблер

Теперь можно внедрять инструкции языка ассемблера непосредственно в исходный код и писать низкоуровневый код с доступом к специализированным машинным инструкциям:

use std::arch::asm;

// Multiply x by 6 using shifts and adds
let mut x: u64 = 4;
unsafe {
    asm!(
        "mov {tmp}, {x}",
        "shl {tmp}, 1",
        "shl {x}, 2",
        "add {x}, {tmp}",
        x = inout(reg) x,
        tmp = out(reg) _,
    );
}
assert_eq!(x, 4 * 6);

Встроенный ассемблер стабилизирован для следующих архитектур: x86 и x86-64, ARM, AArch64, RISC-V.

Деструктурирующие присваивания

Теперь можно использовать кортежи, срезы и шаблоны структур в левой части присваивания:

let (a, b, c, d, e);

(a, b) = (1, 2);
[c, .., d, _] = [1, 2, 3, 4, 5];
Struct { e, .. } = Struct { e: 5, f: 3 };

assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);

Примечание: деструктурирующие присваивания с такими операторами как += запрещены.

Значения по умолчанию для константных дженериков и чередование типов параметра

Универсальные типы теперь могут указывать значения по умолчанию для своих универсальных констант:

struct ArrayStorage<T, const N: usize = 2> {
    arr: [T; N],
}

impl<T> ArrayStorage<T> {
    fn new(a: T, b: T) -> ArrayStorage<T> {
        ArrayStorage {
            arr: [a, b],
        }
    }
}

Раньше параметры типа должны были стоять перед всеми константными параметрами. Это ограничение было ослаблено и теперь их можно чередовать:

fn cartesian_product<
    T, const N: usize,
    U, const M: usize,
    V, F
>(a: [T; N], b: [U; M], f: F) -> [[V; N]; M]
where
    F: FnMut(&T, &U) -> V
{
    // ...
}

Предупреждения о несовместимости в будущем

Теперь Cargo будет показывать предупреждение, если та или иная зависимость будет отклонена в будущих версиях Rust. После выполнения команд cargo build или cargo check, можно увидеть примерно такое предупреждение:

warning: the following packages contain code that will be rejected by a future version of Rust: old_dep v0.1.0
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`

При помощи команды cargo report можно увидеть полный отчёт по коду, который будет отклонён.

Создание урезанных бинарников

Теперь Rust поддерживает удаление отладочной информации во время компоновки. Для этого в Cargo.toml надо добавить строку strip:

[profile.release]
strip = "debuginfo"

Можно также указать symbols или просто true для удаления всей символьной информации там, где это поддерживается.

Инкрементальная компиляция отключена по умолчанию

Из-за возможности возникновения ошибок десериализации (и паник) в этой версии отключена поддержка инкрементальной компиляции (можно принудительно включить через переменную среды RUSTC_FORCE_INCREMENTAL=1). Исправление уже присутствует в бета-версии Rust 1.60; если до релиза не будут найдены другие ошибки, связанные с этой проблемой, инкрементальная компиляция будет включена обратно.

Стабилизированные API

  • std::thread::available_parallelism
  • Result::copied
  • Result::cloned
  • arch::asm!
  • arch::global_asm!
  • ops::ControlFlow::is_break
  • ops::ControlFlow::is_continue
  • TryFrom for u8
  • char::TryFromCharError implementing Clone, Debug, Display, PartialEq, Copy, Eq, Error
  • iter::zip
  • NonZeroU8::is_power_of_two
  • NonZeroU16::is_power_of_two
  • NonZeroU32::is_power_of_two
  • NonZeroU64::is_power_of_two
  • NonZeroU128::is_power_of_two
  • DoubleEndedIterator for ToLowercase
  • DoubleEndedIterator for ToUppercase
  • TryFrom<&mut [T]> for [T; N]
  • UnwindSafe for Once
  • RefUnwindSafe for Once
  • armv8 neon intrinsics for aarch64

Следующие стабильные функции теперь являются const:

  • mem::MaybeUninit::as_ptr
  • mem::MaybeUninit::assume_init
  • mem::MaybeUninit::assume_init_ref
  • ffi::CStr::from_bytes_with_nul_unchecked

Другие изменения

Все остальные изменения и новшества можно увидеть по ссылке: https://blog.rust-lang.org/2022/02/24/Rust-1.59.0.html

Более подробный список изменений доступен по ссылке: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1590-2022-02-24

 

dotcoder
()

Новый редактор — Zed

Авторы редактора Atom представляют своё новое детище — Zed, который является, как они пишут у себя на сайте, «молниеносным редактором кода для совместной работы, написанном на Rust». Основной упор сделан на супер-отзывчивости и возможности совместной работы в реальном времени. Для нового редактора, авторы, вдохновившись Mozilla WebRender, написали новый высокопроизводительный UI-фреймворк — GPUI; для совместного редактирования в реальном времени используются бесконфликтные реплицированные типы данных. Помимо поддержки LSP (Language Server Protocol), авторы создали Tree-sitter — быструю инкрементную библиотеку синтаксического анализа, которая может предоставить Zed деревья синтаксиса для более чем 50 языков. Tree-sitter уже работает и обеспечивает необходимую функциональность на Github.

https://zed.dev/

 , , , zed

dotcoder
()

Rust - самый высокооплачиваемый язык программирования в 2021 году

Rust - не только самый любимый язык несколько лет подряд согласно опросу на StackOverflow, но и самый высокооплачиваемый язык программирования в 2021 году (по крайней мере в Великобритании): https://thenextweb.com/news/move-over-python-rust-highest-paid-programming-la...

 , ,

dotcoder
()

Серия видео по Rust для начинающих

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

 ,

dotcoder
()

Если ты работаешь на IBM, то всё твоё время принадлежит им

«As an IBM employee, you are not allowed to use your gmail account to work in any way on VNIC. You are not allowed to use your personal email account as a „hobby“. You are an IBM employee 100% of the time. Please remove yourself completely from the maintainers file. I grant you a 1 time exception on contributions to VNIC to make this change.»

https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=4ac...

 

dotcoder
()

Microsoft опубликовал у себя курс по Rust

Microsoft опубликовал у себя на сайте курс для начинающих по языку программирования Rust.

Курс доступен на русском языке, состоит из 8 модулей и предлагает следующие пункты схемы обучения:

  • Установите средства, необходимые для написания первых строк кода на Rust.
  • Ознакомьтесь с основными понятиями Rust.
  • Узнайте, как обрабатывать ошибки.
  • Научитесь управлять памятью в Rust.
  • Используйте универсальные типы и признаки.
  • Настройте модули для пакетов и крейтов.
  • Пишите и запускайте автоматизированные тесты.
  • Создайте программу командной строки.

 ,

dotcoder
()

Rust теперь будет использоваться для разработки Android

В общем, разработчики запарились с уязвимостями, связанными с ошибками работы с памятью на C и C++, которые стабильно составляют ~70% всех найденных уязвимостей на Android высокой степени опасности. И вместо того, чтобы вкладывать ресурсы и усилия на их поиски, предупреждение и предотвращение, разработчики в первую очередь решили избегать эти ошибки. В связи с этим, разработчики объявили о поддержке языка программирования Rust для платформы AOSP (Android Open Source Project) для разработки самой ОС.

https://security.googleblog.com/2021/04/rust-in-android-platform.html

 , ,

dotcoder
()

wezterm — кроссплатформенный эмулятор терминала и мультиплексор с ускорением на GPU

Хочу познакомить вас с ещё одним кроссплатформенным эмулятором терминала и мультиплексором с ускорением на GPU – wezterm. Написан на Rust.

Возможности:

 , ,

dotcoder
()

Rust в ядре

В общем, сабж. В ядре Linux появились зачатки поддержки языка программирования Rust, пока что в linux-next.

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/ru...

 , ,

dotcoder
()

Flutter 2

Разработчики Flutter в рамках мероприятия «Flutter Engage» анонсировали новое крупное обновление – Flutter 2. Также вышла новая версия Dart 2.12.

Flutter известен тем, что позволяет разработчикам создавать портативные приложения для любой платформы, которые компилируются и работают нативно. В Flatter 2 заявлена поддержка 5 операционных систем и веб, теперь один и тот же код может работать на iOS, Android, Windows, macOS, и Linux, а также в виде веб-приложений.

Из важного:

  • появилась надёжная null-безопаность
  • добавлена стабильная реализация FFI
  • новые утилиты разработки и профилирования

P.S. Canonical заявили, что все будущие десктопные и мобильные приложения будут писать на Flutter.

P.P.S. Доклады и презентации с Flutter Engage на YouTube.

 ,

dotcoder
()

Создан Rust Foundation, Microsoft и Google присоединились

Вчера был создан Rust Foundation, новая независимая некоммерческая организация, которая будет поддерживать и всячески продвигать язык программирования Rust: https://foundation.rust-lang.org/

Microsoft и Google присоединились:

https://cloudblogs.microsoft.com/opensource/2021/02/08/microsoft-joins-rust-f...

https://opensource.googleblog.com/2021/02/google-joins-rust-foundation.html

 , ,

dotcoder
()

Языку Rust 5 лет

Сегодня исполнилось 5 лет языку программирования Rust с начала выпуска версии 1.0 в 2015 году. С чем я и поздравляю комьюнити!

Достижения за эти 5 лет можно увидеть по ссылке: https://blog.rust-lang.org/2020/05/15/five-years-of-rust.html

 ,

dotcoder
()

LabVIEW раздают (Community Edition)

Компания National Instruments сделала бесплатными для некоммерческого использования свои продукты LabVIEW и LabVIEW NXG.

LabVIEW (англ. Laboratory Virtual Instrumentation Engineering Workbench) — это среда разработки и платформа для выполнения программ, созданных на графическом языке программирования «G» фирмы National Instruments (США). Первая версия LabVIEW была выпущена в 1986 году для Apple Macintosh, в настоящее время существуют версии для Unix, Linux, Mac OS и Microsoft Windows.

LabVIEW используется в системах сбора и обработки данных, а также для управления техническими объектами и технологическими процессами. Идеологически LabVIEW очень близка к SCADA-системам, но в отличие от них в большей степени ориентирована на решение задач не столько в области АСУ ТП, сколько в области АСНИ.

Скачать можно здесь: https://www.ni.com/en-us/shop/labview/select-edition/labview-community-editio...

Подробности тут: https://twitter.com/labview/status/1255134775880192001

 

dotcoder
()

В будущем, возможно можно будет писать модули Linux на Rust

Появление такой возможности в данный момент обсуждают разработчики.

Страница с фреймворком.

 , ,

dotcoder
()

RSS подписка на новые темы