ASCII-Nova 🇺🇦
86 subscribers
980 photos
39 videos
9 files
426 links
предложка: @ascii_nova_suggest_bot

Гиковство && занудство, инди-музыка, геймдев и непрошенные советы

Чат, где мы обсуждаем код и всё около него: @ascii_nova_chat
Download Telegram
Forwarded from sad dev diary
⚡️⚡️⚡️ BREAKING NEWS ⚡️⚡️⚡️

Ferrocene,
the open-source Rust compiler crafted for safety-critical environments, has just secured ISO 26262 ("Road vehicles – Functional safety") and IEC 61508 ("International Standard for Automatic Protection Systems") qualifications. This green light means Rust is now geared up for action in automotive and industrial electronic systems.

Qualification for other standards and areas, such as railway and aerospace, are planned. 😏

https://ferrous-systems.com/blog/officially-qualified-ferrocene/

#rust #automotive #programming
# Пост про оффлайн Rust-разработку

Поделюсь важными находками

1) Вся официальная документация и книги
(the book, Rust By Example, standard library, rustc book, Cargo Book, ... все, я устану перечислять)
$ rustup docs

* это уже у вас есть вместе с туллчейном

2) Может более актуальная штука, уже для существующего проекта:
$ cargo doc --open

Позволяет сгенерировать документацию всех используемых крейтов в проекте — просто супер, когда хочешь посмотреть удобно описания и примеры по тем же tokio, axum и прочим вкусностям

* нужно при наличии интернета выполнить, чтобы пошла сборка документации

#Rust #TIL
👍3👏1
🤯4👍1
Недавно была крутейщая #Rust конференция в Нидерландах, на которой было много шикарнейших докладов

Почти вся элита Rust-коммьюнити выступала, от Alice Ryhl и Mara Bos, до Niko Matsakis (не упомянутые спикеры не менее мощные!)



Добавил себе в закладки очень многие, например (это не все):

Arc in the Linux Kernel - Alice Ryhl - YouTube
https://www.youtube.com/watch?v=gr9v0FFXaZ8&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=4

Async Rust in Embedded Systems with Embassy - Dario Nieuwenhuis - YouTube
https://www.youtube.com/watch?v=H7NtzyP9q8E&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=14

Xilem: Let's Build High Performance Rust UI - Raph Levien - YouTube
https://www.youtube.com/watch?v=OvfNipIcRiQ&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=14

Type Theory for Busy Engineers - Niko Matsakis - YouTube
https://www.youtube.com/watch?v=9qLACD9Bfbk&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7&index=16



Ссылка на плейлист с докладами:

https://www.youtube.com/watch?v=NPP2_6KMA60&list=PL8Q1w7Ff68DBZZbJt3ie5MUoJV5v2HeA7
👍5🔥1
Rustlings очень удобный и интересный набор упражнений по обучению программирования на #Rust

Когда-то, проходил их, ещё до того, как свичнуться и был доволен

Сейчас же ещё и новая версия!

Изучающим Rust очень советую

https://mo8it.com/blog/rustlings-rewrite
3👍1
Недавно написал свой первый процедурный макрос в Rust

Плюсы:
+ Писать макросы на Rust сверх приятно*
Минусы:
- Хочется писать теперь их еще и еще...

Если серьёзно, то возможность работать с набором токенов, которые парсятся в растовую структурку, очень интересно. Условно, я могу в макросе поменять сигнатуру полностью: изменить какой-то аргумент или вообще добавить новый.

В общем, сравнивая это с @декораторами из других ЯП и прочей рефлексией, то часто в таком случае, мы можем именно считать сигнатуру, но не изменить.

Иными словами, больше интересных возможностей по разработке API.

* Вспоминаю восторженные рассказы моего лида Николаса с одной из прошлых работ про Common Lisp и расширение синтаксиса через макросы (вроде ничего не перепутал) -- звучит мощно, не часто можно расширить синтаксис своего ЯП, верно?

В моём случае, это не расширение синтаксиса, но всё же выход на этот, скажем, мета-уровень (работа напрямую с конструкциями языка и (!) возможность изменить поведение), это драйвит

#Rust
🔥5
ASCII-Nova 🇺🇦
Еще немного внутренностей — в общем, работа чисто в Растовых терминах
А, кстати, говоря про синтаксис -- для процедурных макросов, можно реализовать какой угодно парсер аргументов, вплоть до... например парсинга Python кода (https://crates.io/crates/inline-python)

Я реализовал простой опциональный аргумент вида: [, return_value = "unwrap"|"unwrapAndColon"|"asIs"] (параметр, с ожиданием одного из трёх значений).

В общем, реально классная штука и зрелость экосистемы для написания макросов меня прямо впечатляет (макросы я активно старался НЕ писать как бывший плюсовик, т.к. макросы это pure C way, а я топил за плюсы и шаблоны)

Может не самое честное сравнение с препроцессором C/C++, т.к. это просто замена/вставка текста (буквально), но иметь макросы, которые прямо компилируемые внутри, это супер круто!

#Rust
🥰6
Memory Safety in C++ vs Rust vs Zig | by B Shyam Sundar | Jul, 2024 | Medium
https://medium.com/@shyamsundarb/memory-safety-in-c-vs-rust-vs-zig-f78fa903f41e

Добротная статья. В целом, хорошая иллюстрация, зачем вообще #Rust

В мире C++ нужно писать новые компиляторы (или обёртки), чтобы работать с владением
1👀1
😁2😢2
Scientific Computing in Rust 2024
https://scientificcomputing.rs/

Прямо сейчас идёт классный онлайн-воркшоп по #Rust

Тем кто пропускает (например я), записи можно будет потом посмотреть на канале: https://www.youtube.com/@ScientificComputinginRust
В #Rust оператор ? работает не только для Result<T, E>, но оказывается и для Option<T>.

Т.е. применённый к Option<T>, сразу вернётся None, если значения нет.

Пока что не понимаю, насколько активно буду использовать, хотя для Result<T, E> использую 10 раз из 10.

#TIL
1😁1
lvkv/whenfs: A FUSE Filesystem for your Google calendar
https://github.com/lvkv/whenfs

вот это я понимаю, пет проекты у людей

PS. и конечно же на #Rust
🤣4🔥3
https://doc.rust-lang.org/nightly/unstable-book/language-features/postfix-match.html

Интересно, случайно наткнулся на классную штуку: возможность писать match в "текучем" стиле

для тех, кто как я, любит разные длинные ФП-шные колбасы из вызовов методов один за одним, может иметь смысл

#Rust #TIL
Forwarded from trace!("TheBestTvarynka") (Pavlo Myroniuk)
Both frontend and backend are written in Rust. Sometimes you need to know the host OS in the frontend code. #[cfg(target_os = "...")] will not work because all Rust frontend code is compiled with the wasm32-unknown-unknown target. So, you'll always get a non-Windows target OS.
After some googling, I wrote a small workaround.
// build.rs
fn main() {
println!("cargo::rustc-check-cfg=cfg(windows_is_host_os)");
if cfg!(windows) {
println!("cargo:rustc-cfg=windows_is_host_os");
}
}

The idea is to define a custom cfg attribute in the build.rs. All code in build.rs is executed after dependencies compilation but before app compilation. So, in the build.rs we have more information about the host OS than in the frontend code.
Now I can use the windows_is_host_os in the #[cfg(...)] attribute:
// somewhere in the frontend code
#[cfg(windows_is_host_os)]
{
// Windows
}
#[cfg(not(windows_is_host_os))]
{
// Not Windows
}


#rust
🔥4😁1
Я обычно для быстрых проверок пользуюсь официальной песочницей (онлайн компилятор): https://play.rust-lang.org

Но в нём нет возможности указать зависимости :(

Поэтому был рад, когда нашёл Rust Explorer, который позволяет их указывать, например: https://www.rustexplorer.com/b/q76rqj

#Rust #TIL
2
Rust Project goals for 2024 | Rust Blog
https://blog.rust-lang.org/2024/08/12/Project-goals.html


Здорово!

Выделил для себя всё связанное с async:
- Скоро будет 2024 Edition: небольшие (но долгожданные изменения) изменения синтаксиса
- Улучшения async (жду не меньше!): упрощение написания async кода

#Rust
3👍2🤡1