Bevy Got a Glow-Up
Today’s Issue: Rust at Facebook, From Rust to C and Back Again, and Open-Sourcing BitCraft Online
Happy new month Rustaceans!
Welcome to another edition of the Rust Bytes newsletter.
In this issue, we’ll look at Bevy’s v0.16 latest release, challenge you with an integer-to-alphanumeric conversion puzzle, spotlight an amazing Rust project, and share some incredible links of the week.
Here’s issue 65 for you!
THE MAIN THING
Bevy Got a Glow-Up
Ever spent a weekend wrestling with a game engine, only to realize your renderer’s choking on a scene with more than three trees? Yeah, us too.
That’s why Bevy’s latest release is like a shot of espresso for your Rust-powered game dev dreams. This update is packed with goodies that make your scenes faster, your skies prettier, and your ECS less of a headache.
Let’s look at the big wins:
GPU-Driven Rendering - Bevy’s renderer now offloads heavy lifting to the GPU, slashing CPU time for massive scenes. Think 3x faster on Call of Duty’s Caldera hotel - 101 FPS on a 4090 versus 30 FPS in 0.15. Just don’t expect WebGL 2 to join the party yet.
ECS Relationships - Bidirectional entity links are here, making parent-child hierarchies a breeze. Spawning a player with a sword and shield is now as clean as children![Glove, Sword]. Caveat: it’s one-to-many for now, so no polyamorous entity graphs yet.
Procedural Atmospheric Scattering - Sunrises and sunsets that look like Instagram filters, with low performance cost. Slap an Atmosphere::EARTH on your camera, and watch distant objects fade to blue or blush pink at dusk. Reflections need some polish, though.
Improved Spawn API - Spawning hierarchies is no longer a nested callback nightmare. Write commands.spawn((Player, children![(RightHand, children![Glove, Sword])])) and call it a day. Your wrists will thank you.
No_std Support - Bevy now runs on everything from beefy PCs to a GameBoy Advance. Disable default features, and you’re coding for retro consoles. Rendering and audio? You’re on your own for now.
The catch? Some features like occlusion culling is experimental and can misfire, marking visible meshes as hidden.
WESL shaders sound cool but are a gamble for production, and some features like clustered decals skip WebGL 2 and mobile. Still, these are growing pains for an engine that’s sprinting toward greatness.
This update is begging you to spawn some entities and crank those shaders. Try it out, or your GPU will judge you from its idle state.
RUST CHALLENGE 🦀
Last week, we had you parse a JSON file and count the number of unique users.
Thanks to Suhas Ghorpadkar, Nothing, 𝓶𝓪𝓱𝓮𝓵𝓲𝓴𝓪 | महेलिका, and Rishabh who shared their solutions to the challenge. You rock! 🤘
Let's move on to this week’s challenge.
Integer to Alphanumeric Conversion
Given a non-negative integer num, convert it to a base-36 string representation where digits 0-9 are represented as '0'-'9' and 10-35 are represented as 'a'-'z'.
The output string should be in lowercase and must not contain leading zeros unless the input is 0, which should return "0".
You can start writing and testing your solution on Rust Playground. Once completed, please share your solution and tag us either on X, BlueSky, Mastodon, or reply to this email.
PROJECT SPOTLIGHT 💡
Yazi
Yazi, a blazing-fast terminal file manager written in Rust, is redefining how developers and power users navigate and manage files in the terminal.
Nicknamed "duck" (from its Chinese name), Yazi heavily relies on asynchronous I/O to deliver a smooth, efficient, and highly customizable experience.
Yazi addresses the challenges of navigating large directories, previewing files, and integrating with modern tools, which can often feel slow or cumbersome, all while delivering exceptional performance.
Here are features that make Yazi standout in the crowded field of terminal file managers.
Full Asynchronous Architecture - All I/O operations are non-blocking, with CPU tasks spread across threads for maximum resource efficiency.
Rich Preview Capabilities - Built-in support for multiple image protocols (e.g., Kitty, Sixel, WezTerm) and integration with Überzug++ and Chafa ensure seamless previews across nearly all terminals. Scrollable previews for videos, PDFs, and archives are a bonus.
Cross-Instance Communication - Its client-server architecture and Lua-based publish-subscribe model enable state persistence and data sharing across Yazi instances, a rare feature for terminal tools.
Vim-Like UX - With Vim-inspired keybindings, auto-completion for paths, and a visual mode, Yazi feels like home for Neovim users. Features like obscure input for passwords add practical finesse.
Yazi also supports a variety of terminals (from Warp to Windows Terminal) with native image protocols, ensuring a consistent experience across platforms.
Yazi is in public beta, and is open-source on GitHub at https://github.com/sxyazi/yazi.
AWESOME LINKS OF THE WEEK 🔗
Facebook's Rust wizards have open-sourced pyrefly. A fast type checker and IDE for Python, it's practically supersonic (allegedly!).
Deno v2.3 is out introducing enhanced deno compile for FFI and Node add-ons, local npm package support, improved deno fmt for CSS/HTML/SQL, new registry flags for deno add, robust OpenTelemetry features, and more.
Yoshua Wuyts wrote about Syntactic musings on match expressions, playfully discussing Rust's match and if..else, proposing && and || to swap clunky if-guards for snappy, C-like logic that’s easier to grok.
Filtra interviewed Vivek Bagaria (autonomy lead at Matic Robots) and talked about the company’s bold mission to revolutionize home robotics, using Rust for nearly everything to build a camera-driven, privacy-first floor cleaner that outsmarts sensor-heavy rivals.
Brandon Reinhart blogged about “Migrating away from Rust”, hilariously swapping Rust’s strict charm for C# and Unity. He’s proving sometimes you gotta trade your coder crush for a practical dance partner!
Chen quan released arkflow - a high-performance Rust stream processing engine, providing powerful data stream processing capabilities, supporting multiple input/output sources and processors.
Tom Hacohen (CEO of Svix) joined “Rust in production” and talked about the nitty-gritty of building a robust, Rust-powered webhook while tackling complexities like reliability and security. [podcast]
BitCraft Online will be open-sourcing its games backend, written in Rust. Get ready to tinker, tweak, and maybe even teach it some new tricks.
Jack O'Connor gave a talk, “From Rust to C and Back Again”, demonstrating how to call C standard library functions, and using the bindgen crate to generate Rust bindings from C header files. [video]
Leptos v0.8.0 got released, bringing Axum support, zippy compile times, WebSockets, and a sprinkle of bug fixes.
CodeCrafters: Become a Better Rust Engineer
CodeCrafters created amazing Rust courses that push your skills beyond the basics.
You’ll have fun building real-world projects from scratch, including Git, Docker, Redis, Kafka, SQLite, Grep, BitTorrent, HTTP Server, an Interpreter, and DNS.
The courses are self-paced, so you can learn at your own speed.
If you’re itching to level up your Rust skills, these courses are perfect for you.
Here’s what makes CodeCrafters stand out:
Learn by building projects that challenge you beyond just implementing CRUD features.
Strengthen your fundamentals by working on awesome low-level projects.
Get really good at reading and writing idiomatic Rust code.
Plus, take part in monthly contests for a chance to win exciting prizes.
You can get your CodeCrafters fees fully reimbursed through your corporate Learning & Development (L&D) budget.
Be sure to check with your employer about tapping into your L&D budget to save money and make this a no-brainer opportunity to level up your skills.
Don't take our word for it. See what others have to say. [affiliate]
SUPPORT RUST BYTES
You’re Rust Bytes’ biggest fans, and we love to see it.
Here’s how you can help spread the word:
❤️ Recommend Rust Bytes to your friends.
🤳 Connect with us on our socials: X, BlueSky, Mastodon, Publication.
☕️ Support our editors by buying us coffee.
📨 Email us at rustaceanseditors@gmail.com for sponsorship, feedback or ideas.
We are considering open-sourcing some of our internal resource that we heavily use by the end of the year.
That's all for now, Rustaceans.
John & Elley.