LINUX.ORG.RU

Сообщения dotcoder

 

Turso решили сделать свой Postgres на Rust

 , , turso

Создатели Turso (ребята, которые переписали SQLite на Rust) выкатили громкий анонс: они пишут современную версию Postgres с нуля на Rust. Но самый сок не в самом Rust, а в концепции, которую они закладывают.

Они пошли по тому же пути, что и во время разработки своей версии SQLite: всё есть виртуалка, которая переводит SQL в свой байт-код; для пруфа они запустили немодифицированный Doom в браузере, скомпиленный в байт-код SQLite.

По сути, они превращают Turso в некое подобие «LLVM для баз данных»:

  • Есть одно мощное, надежное и асинхронное ядро со своей виртуальной машиной байт-кода (VDBE).
  • Поверх этого ядра можно натягивать разные фронтенды (SQL-диалекты). Первым был SQLite, вторым официально становится Postgres, а в теории можно прикрутить хоть MySQL или Redis.

Главные фичи и фишки их Postgres:

  • Архитектура: Никаких процессов на каждое соединение, всё полностью асинхронно.
  • Гибкость: Этот Postgres можно будет запускать прямо в браузере через WASM, хранить в одном локальном файле (как SQLite) или поднимать миллиард инстансов на пользователя под капотом edge-функций.
  • Авто-обновляемые материализованные представления: Фича, которую в обычном Postgres ждут годами — «матвьюхи» обновляются сами в реальном времени, без костылей с триггерами и кронами.
  • Совместимость: Обещают поддержку родного wire-протокола, чтобы без проблем подключались привычные ORM и psql. На 100% совместимость не претендуют, но обещают покрыть абсолютное большинство юзкейсов.
  • Лицензия: Всё пишется в опенсорсе под MIT. Код уже можно покрутить в репозитории.
dotcoder
()

Вышел Rust 1.85.0 aka Rust 2024

 

Вышел Rust 1.85.0, который также стабилизирует новую редакцию Rust 2024. Подвезли асинхронные замыкания, улучшения компилятора и API, Cargo теперь разруливает зависимости с учётом поля rust-version.

Подробности тут: https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html и в руководсте по редакциям Rust: https://doc.rust-lang.org/edition-guide/rust-2024/index.html

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 — Брэм Муленаар

 bram moolenaar, ,

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

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

dotcoder
()

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

 , kataos,

Там это, 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

dotcoder
()

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

 , pingora,

Компания 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/

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/

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/

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
()