🦀 Rust совет
На прошлой неделе мы показывали, как встраивать статические данные в код с помощью
Сегодня - маленький, но очень полезный трюк.
⚙️ Запуск Cargo с конкретной версией toolchain
Иногда нужно проверить, будет ли ваш проект работать на следующей версии Rust (которая скоро станет stable).
Для этого не нужно менять глобальную версию Rust.
Достаточно просто указать toolchain прямо в команде:
Можно использовать и другие версии:
💡 Это удобно для:
• тестирования совместимости с будущими релизами Rust
• проверки nightly-фич
• CI-пайплайнов
• отлова будущих breaking changes
Маленький трюк, но экономит часы дебага.
#rust #rustlang
На прошлой неделе мы показывали, как встраивать статические данные в код с помощью
include_str!.Сегодня - маленький, но очень полезный трюк.
⚙️ Запуск Cargo с конкретной версией toolchain
Иногда нужно проверить, будет ли ваш проект работать на следующей версии Rust (которая скоро станет stable).
Для этого не нужно менять глобальную версию Rust.
Достаточно просто указать toolchain прямо в команде:
cargo +beta test
Можно использовать и другие версии:
cargo +nightly build
cargo +stable check
💡 Это удобно для:
• тестирования совместимости с будущими релизами Rust
• проверки nightly-фич
• CI-пайплайнов
• отлова будущих breaking changes
Маленький трюк, но экономит часы дебага.
#rust #rustlang
🤗16❤10🥰3🍓1👀1
Выиграй деньги, став чемпионом ИТ-соревнования от МТС
Остались считанные дни до окончания регистрации — призовой фонд 1 500 000 рублей.
True Tech Hack — это три уникальные задачи для инженеров данных, разработчиков и системных аналитиков. За лучшие решения дают деньги и зовут на стажировку.
Для всех финалистов — закрытая вечеринка с диджеем в Москве на видовой площадке.
Регистрация закроется вечером 10 апреля — торопись!
Остались считанные дни до окончания регистрации — призовой фонд 1 500 000 рублей.
True Tech Hack — это три уникальные задачи для инженеров данных, разработчиков и системных аналитиков. За лучшие решения дают деньги и зовут на стажировку.
Для всех финалистов — закрытая вечеринка с диджеем в Москве на видовой площадке.
Регистрация закроется вечером 10 апреля — торопись!
🖕16👍1🌭1🍌1
🦀 Rust: заметки о написании WASM
Rust - один из лучших языков для разработки WebAssembly, но у него есть немало «острых углов».
В своей статье Brooklyn Zelenka делится практическими уроками из реальной разработки Rust-WASM и объясняет, какие проблемы чаще всего встречаются и как их обходить.
• Rust отлично подходит для компиляции в WebAssembly - безопасная память, хорошая интеграция с LLVM и высокая производительность.
• Однако связка Rust + wasm-bindgen может быть неудобной, и многие разработчики сталкиваются с неожиданными ограничениями и странностями API.
• В реальных проектах важно выработать собственные паттерны архитектуры и взаимодействия с хост-средой (обычно JavaScript).
• Многие проблемы WASM связаны не с Rust, а с самим экосистемным слоем: биндинги, сборка, взаимодействие с браузером и tooling.
Автор делится конкретными практическими приёмами, которые позволяют значительно упростить работу с Rust-WASM и избежать типичных ошибок.
Если вы работаете с WebAssembly или только планируете использовать Rust для WASM — статья обязательна к прочтению.
https://notes.brooklynzelenka.com/Blog/Notes-on-Writing-Wasm
Rust - один из лучших языков для разработки WebAssembly, но у него есть немало «острых углов».
В своей статье Brooklyn Zelenka делится практическими уроками из реальной разработки Rust-WASM и объясняет, какие проблемы чаще всего встречаются и как их обходить.
• Rust отлично подходит для компиляции в WebAssembly - безопасная память, хорошая интеграция с LLVM и высокая производительность.
• Однако связка Rust + wasm-bindgen может быть неудобной, и многие разработчики сталкиваются с неожиданными ограничениями и странностями API.
• В реальных проектах важно выработать собственные паттерны архитектуры и взаимодействия с хост-средой (обычно JavaScript).
• Многие проблемы WASM связаны не с Rust, а с самим экосистемным слоем: биндинги, сборка, взаимодействие с браузером и tooling.
Автор делится конкретными практическими приёмами, которые позволяют значительно упростить работу с Rust-WASM и избежать типичных ошибок.
Если вы работаете с WebAssembly или только планируете использовать Rust для WASM — статья обязательна к прочтению.
https://notes.brooklynzelenka.com/Blog/Notes-on-Writing-Wasm
🔥16❤6🥰5👍1🤗1
Rust и QUIC уже делают то, к чему ИИ только подбирается
Пока все спорят про агентов и автокодинг, в системной разработке quietly происходит очень важная вещь. Люди начинают нормально проверять сложные системы, а не надеяться на тесты.
Команда Адольфо Очагавии взяла QUIC-симулятор на базе quinn и попыталась убедиться, что он вообще работает корректно. Не на простых кейсах, а на произвольных сетях, включая сценарии уровня Земля–Марс.
Обычные тесты быстро закончились. Покрыть такие сценарии руками невозможно.
Они пошли другим путём. Сначала зафиксировали на бумаге, что считается корректным поведением. Затем встроили audit-лог прямо в симуляцию. После этого написали отдельный verifier, который прогоняет каждую симуляцию и проверяет её автоматически.
Ключевой момент в том, как это реализовано. Основную логику вообще не трогали. Проверка вынесена в отдельный слой. Сам verifier достаточно простой, его можно прочитать и понять без погружения в систему. Поверх этого появились golden-тесты, которые ловят регрессии.
Это выглядит как практическая версия того, о чём сейчас много говорят в контексте ИИ. Не просто генерировать код или тесты, а формализовать поведение системы и проверять его на уровне свойств.
Если переносить на AI-системы, то это ровно та же проблема. У нас есть агенты, пайплайны, куча состояний и внешних эффектов. И почти нет нормальной верификации. Всё держится на эвристиках и наблюдении.
Этот кейс хорошо показывает, куда двигаться дальше. Не усложнять архитектуру, а добавлять слой проверяемости поверх неё.
Разбор здесь
https://ochagavia.nl/blog/a-real-world-case-of-property-based-verification/
Пока все спорят про агентов и автокодинг, в системной разработке quietly происходит очень важная вещь. Люди начинают нормально проверять сложные системы, а не надеяться на тесты.
Команда Адольфо Очагавии взяла QUIC-симулятор на базе quinn и попыталась убедиться, что он вообще работает корректно. Не на простых кейсах, а на произвольных сетях, включая сценарии уровня Земля–Марс.
Обычные тесты быстро закончились. Покрыть такие сценарии руками невозможно.
Они пошли другим путём. Сначала зафиксировали на бумаге, что считается корректным поведением. Затем встроили audit-лог прямо в симуляцию. После этого написали отдельный verifier, который прогоняет каждую симуляцию и проверяет её автоматически.
Ключевой момент в том, как это реализовано. Основную логику вообще не трогали. Проверка вынесена в отдельный слой. Сам verifier достаточно простой, его можно прочитать и понять без погружения в систему. Поверх этого появились golden-тесты, которые ловят регрессии.
Это выглядит как практическая версия того, о чём сейчас много говорят в контексте ИИ. Не просто генерировать код или тесты, а формализовать поведение системы и проверять его на уровне свойств.
Если переносить на AI-системы, то это ровно та же проблема. У нас есть агенты, пайплайны, куча состояний и внешних эффектов. И почти нет нормальной верификации. Всё держится на эвристиках и наблюдении.
Этот кейс хорошо показывает, куда двигаться дальше. Не усложнять архитектуру, а добавлять слой проверяемости поверх неё.
Разбор здесь
https://ochagavia.nl/blog/a-real-world-case-of-property-based-verification/
🔥16👍10❤5🥱3🥰2
🚨 В Rust появился безопасный способ брать указатели на поля без UB
Если работаешь с raw pointers, рано или поздно упираешься в проблему.
Нужно получить указатель на поле структуры. Но через обычную ссылку это может сломать правила borrow checker и привести к скрытым багам.
Особенно если речь про unsafe-код и тонкие места с aliasing.
Для этого в std есть addr_of! и addr_of_mut!.
Они позволяют взять указатель на поле напрямую, без создания временной ссылки. Это важно, потому что ты не нарушаешь stacked borrows и не создаёшь лишних промежуточных состояний.
По сути ты получаешь pointer projection без побочных эффектов.
Это мелкая деталь, но в низкоуровневом коде она решает реальные проблемы. Особенно в FFI, системном коде и оптимизациях.
Если пишешь unsafe в Rust, эти макросы стоит знать.
Если работаешь с raw pointers, рано или поздно упираешься в проблему.
Нужно получить указатель на поле структуры. Но через обычную ссылку это может сломать правила borrow checker и привести к скрытым багам.
Особенно если речь про unsafe-код и тонкие места с aliasing.
Для этого в std есть addr_of! и addr_of_mut!.
Они позволяют взять указатель на поле напрямую, без создания временной ссылки. Это важно, потому что ты не нарушаешь stacked borrows и не создаёшь лишних промежуточных состояний.
По сути ты получаешь pointer projection без побочных эффектов.
Это мелкая деталь, но в низкоуровневом коде она решает реальные проблемы. Особенно в FFI, системном коде и оптимизациях.
Если пишешь unsafe в Rust, эти макросы стоит знать.
❤30👍2🥰1🤗1