🦀 Rust на каждом GPU? Теперь это реальность
Команда выпустила серьезное обновление: теперь можно писать универсальный GPU-код на Rust, который работает сразу на разных платформах — без ручной настройки под каждую.
📦 Что нового:
— Поддержка *portable shader crates*
— Один и тот же шейдер можно запускать на Vulkan, WebGPU, Metal и даже CUDA
— Расширенный стандартный набор типов и функций
— Интеграция с cargo и spirv-builder стала проще
— Поддержка inline-asm и более точной отладки
💡 Почему это важно:
Раньше GPU-код приходилось писать под каждую платформу отдельно (HLSL, GLSL, CUDA). Теперь можно писать всё на Rust и использовать один и тот же код для разных бэкендов.
Это приближает нас к идее truly portable GPU programming — с безопасностью и удобством Rust.
Команда выпустила серьезное обновление: теперь можно писать универсальный GPU-код на Rust, который работает сразу на разных платформах — без ручной настройки под каждую.
📦 Что нового:
— Поддержка *portable shader crates*
— Один и тот же шейдер можно запускать на Vulkan, WebGPU, Metal и даже CUDA
— Расширенный стандартный набор типов и функций
— Интеграция с cargo и spirv-builder стала проще
— Поддержка inline-asm и более точной отладки
💡 Почему это важно:
Раньше GPU-код приходилось писать под каждую платформу отдельно (HLSL, GLSL, CUDA). Теперь можно писать всё на Rust и использовать один и тот же код для разных бэкендов.
Это приближает нас к идее truly portable GPU programming — с безопасностью и удобством Rust.
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Speech-to-text прямо из терминала на ratatui
Удобный терминальный инструмент, который умеет:
- записывать голос;
- превращать речь в текст;
- показывать реальный waveform в терминале со шкалой dBFS и детектором клиппинга.
https://github.com/kristoferlund/ostt
Удобный терминальный инструмент, который умеет:
- записывать голос;
- превращать речь в текст;
- показывать реальный waveform в терминале со шкалой dBFS и детектором клиппинга.
https://github.com/kristoferlund/ostt
👍3🔥1
🦀 Error Handling: Библиотеки против Приложений
Часто вижу в код-ревью кашу из способов обработки ошибок. Давайте раз и навсегда зафиксируем базу, чтобы ваш код был идиоматичным.
Есть два лагеря, и вам нужно быть в обоих, но в разное время:
1. Вы пишите Библиотеку?
Используйте
Почему: Вашим пользователям важно
2. Вы пишите Приложение (CLI, Backend)?
Используйте
Почему: Вам чаще всего плевать на тип ошибки в глубине стека, вам важно прокинуть её наверх (
Итог: В библиотеках даем структуру (
#rust #tips #error_handling
Часто вижу в код-ревью кашу из способов обработки ошибок. Давайте раз и навсегда зафиксируем базу, чтобы ваш код был идиоматичным.
Есть два лагеря, и вам нужно быть в обоих, но в разное время:
1. Вы пишите Библиотеку?
Используйте
thiserror.Почему: Вашим пользователям важно
матчить ошибки. Им нужно знать, что именно пошло не так (NetworkError, ParseError), чтобы программно на это отреагировать. Вы не должны навязывать им тяжелые трейты.#[derive(thiserror::Error, Debug)]
pub enum MyLibError {
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("Invalid header")]
InvalidHeader,
}
2. Вы пишите Приложение (CLI, Backend)?
Используйте
anyhow.Почему: Вам чаще всего плевать на тип ошибки в глубине стека, вам важно прокинуть её наверх (
main), залоггировать контекст и упасть (или отдать 500-ку).use anyhow::{Context, Result};
fn main() -> Result<()> {
let config = std::fs::read_to_string("config.toml")
.context("Не удалось прочитать конфиг")?;
Ok(())
}
Итог: В библиотеках даем структуру (
thiserror), в приложениях собираем контекст (anyhow). Не смешивайте.#rust #tips #error_handling
❤1
👍3🔥1