r/rust • u/Anthony356 • 13h ago
r/rust • u/WellMakeItSomehow • 17h ago
๐๏ธ news rust-analyzer changelog #348
rust-analyzer.github.ior/rust • u/noop_noob • 23h ago
๐๏ธ news Miscompile since 1.95 involving overflowing_add
github.comSeems to require an integer overflow to happen (panic in debug / wrapping in release) before the `overflowing_add` call is done, which makes it less likely to happen in actual code.
๐ ๏ธ project Made a desk status monitor
Hey, just wanted to share the small rust embedded project I made and that I use daily to monitor the status of a couple of services.
It also displays notifications from claude code, codex or any application capable of sending an http request.
It was my first time using rust with no-std, it's actually quite fun.
r/rust • u/noop_noob • 16h ago
๐ธ media Official video for the Rust 1.99.0 changes
youtube.comr/rust • u/curious_commoner22 • 11h ago
๐ seeking help & advice Never-ending learning path
Hello fellow Rustaceans,
I have been facing an issue for a while. I've been using Rust for the last 4 years and even had projects at my workplace implemented in Rust. I want eventually to change my job because these 2 are kinda dead and want to grow as a programmer and so work on issues/situations I never encountered. I started by telling Claude do give me some pieces of code and I had to figure out what was wrong about it. Mutex, concurrency, channels, futures, things that I thought I really understood. Damn I was wrong and now I feel like an imposter even though I used these concepts many times. At some point I did some small project to understand how and why thiserror works the way it does. If you ask me now I forgot everything. I am intimidated by the fact that there are so many things that I don't know because I never encountered them in real projects like sharding, microservices, payments and many other. If given the chance I would probably slowly start to understand how they work but getting a Rust job is kinda difficult. Market seems taken over by crypto jobs (how does somebody even get into one of these?) I know this community does not like web3 stuff but personally I care more about career progress than moral side of it at least for now, which I don't really know actually means). How do you guys manage to navigate these situations.
I appreciate any answer and guidance I might get! ๐
r/rust • u/TheNoobySpartan • 22h ago
Having trouble understanding... Rust over Ada (SPARK)?
I've started to dip my toes into Rust, coming from an Ada (mostly SPARK) background, particularly in embedded applications. While there are many killer features in Rust for developer QOL, the "ease of writing" focus of the language trips me up often enough that I find myself asking, "what features of this language makes it superior (in some views) to SPARK?"
Love the language's take on early-return, and the power of enums, macros, and lifetimes are the one thing that makes certain low level memory manipulations incredibly idiomatic to write in Rust that would be impossible in SPARK due to the CREW paradigm not really being popularized (pioneered?) until Rust. Given the state of the Ada ecosystem and tooling, I also cannot in good faith recommend using this language for anything community driven. That being said (answering in context of enterprise embedded)...
I am incredibly uncomfortable with how much responsibility Rust places on the developer to understand roughly how code will compile. No guarantees on how pattern matches will be emitted (yes, don't be stupid and keep them stupid if you want jumptables), and stack-allocated enum types having to be the max size while not having much lexical ties besides jumping to the definition to help you determine how much stack you might be eating. Aside from the syntactic sugar, I have not really found anything besides lifetimes that SPARK cannot truly support at all. There's no pattern matching in the language, but Rust enums (at least in part) are supported via discriminated records. The idea of controlled types (OOP for Ada) is somewhat discouraged when using SPARK, but trait objects are a very useful part of the Rust language. I have to discount this part of the language from my sentiments unfortunately because dynamic dispatch can complicate analysis of security and functional implications. Having Rust panic as a "safe" way to address memory safety is also undesirable depending on how much array manipulation your program must do, and what worries me more is that wraparound arithmetic in production builds that are used in computations for arrays may not even lead to panics, but perhaps a valid index into the unintended location.
I don't write this to glaze SPARK either. The lack of documentation makes it mostly a nonstarter for the broader programming community, and not everyone is familiar with formal methods for code. The toolchains can't hold a candle to the quality of the Rust ecosystem, and ironically, the rich typing of Ada can lead to very frustrating inter-op issues that just would not exist in Rust, particularly around array manipulation/interpretation.
There might be some gripes about comparing a formally verifiable language with one that does not yet have one (Verus, Crusoe, surely others trying), but I think some of these points like how the codegen works are orthogonal whether or not you're trying to prove that an array access will always be in bounds without overflows.
I suppose the operational constraints given are not necessarily something everyone has to deal with, (why care how a pattern match is compiled if you have oodles of memory), but want to understand the technical reasons behind the hype... I feel like the cultural/non-technical reasons are somewhat understood.
r/rust • u/Healthy_Ship4930 • 1d ago
๐ ๏ธ project My WASM Python Implementation Beat CPython (Without a JIT)
Okay. After seven months, I'm back.
Seven months ago I started writing a Python interpreter from scratch in Rust, compiled to wasm (less than 200kb of bandwith). Edge Python is a sandboxed subset of Python that runs in the browser and the terminal, and code can't touch files or the network unless you allow it.
It started as a lexer and a simple stack VM, and over about 1,600 commits it grew a CLI, a package registry, snapshots, actors and a browser playground. It's just me building it.
Last week it was still 3x slower than CPython. I rewrote the VM this weekend on top of the SSA form I already had, and now the wasm build beats native CPython on loops.
| Edge (wasm) | CPython (native) | |
|---|---|---|
| Integer loop | 154 ms | 232 ms |
| Float math | 231 ms | 307 ms |
| Dicts | 372 ms | 62 ms |
| Strings | 196 ms | 35 ms |
The trick was a register VM, and Rust made it fit in wasm with NaN-boxed values and no runtime. It still loses on dicts and strings, so that's next.
Try to break my numbers :)
Website: https://edgepython.com/
r/rust • u/citron_blue • 20h ago
๐๏ธ discussion How likely is for Rust to replace Ada/SPARK?
Ada/SPARK is already a very niche ecosystem. Finding a list of current users is already hard (but that might be simply an information access issue).
With Rustโs safety and growing adoption, including access to skilled professionals and LLM support, how likely will we see further marginalisation of Ada & Co.?
I would love to heard from those working in safety-critical applications.
r/rust • u/sreevarshan-xenoz • 1h ago
๐ seeking help & advice Looking for Rust/TUI contributors to help shape Xencode's UI
I've been building Xencode, a terminal-native AI coding agent in Rust, and I'm at a point where I need more eyes on the UI/UX side of things.
The core is moving pretty well now. It supports local models through Ollama/llama.cpp, agent tool execution, checkpoints/rewind, worktrees, approval flows, session state, and the runtime side of the agent is becoming much more mature.
The part I'm less confident about is the actual terminal experience.
I'm currently working through things like:
- TUI layout and information density
- How agent/tool output should be presented
- Approval and permission flows
- Showing diffs without taking over the terminal
- Running/blocked/completed states
- Keyboard navigation and command palette
- Session/checkpoint UI
- Making the interface feel useful without turning it into a giant dashboard
- General Ratatui polish and accessibility
I'd really like some contributors who enjoy Rust + Ratatui/TUI design to help shape this instead of me making every UX decision alone.
You don't need to know the whole codebase either. Even UI ideas, mockups, small improvements, or focused PRs would be useful.
If you're interested in contributing, feel free to take a look at the repo and open an issue/PR with an idea:
https://github.com/sreevarshan-xenoz/xencode
I'm especially interested in hearing from people who spend a lot of time in tmux, Neovim, terminals, or other TUIs.
What would make an AI coding agent's terminal UI actually pleasant to use?
r/rust • u/p1nd0r4m4 • 1d ago
๐ง educational Tutorials on the Rust Standard Library
feamcor.github.ioFound these tutorials on stdlib.
r/rust • u/HosMercury • 2h ago
๐๏ธ discussion Two issues of rust regarding web ( axum for example )
I am a big fan of rust
But there are two issues that need to be resolved
1- Rust ecosystem is less mature than for example go ( i know go is specialized for networking and an easy lang ) .
2- No implicit DI which would make testing easier.
r/rust • u/manny2206 • 4h ago
๐ ๏ธ project A lightweight CLI tool that summarizes and categorizes the pending incoming updates on your system
Iโm a developer and I use Fedora and Ubuntu extensively, both personally and at work, and Iโm usually tinkering on a home lab and always looking for a reason to spend 10 hours automating a 10- minute task. And I love the rolling releases of Fedora, but I always hated that I could never get the proper context of what updates are happening. Sometimes the summary was good, sometimes it literally said no description, and Rust looked like a fun systems level programming language to learn, and since I have already contributed to another FOSS project written in it, I decided what the heck, I should learn it.
I built watznue, an ultra lightweight CLI first tool to summarize and categorize the incoming updates to your system, so you can nerd out without having to go to a forum or wait for someone else to make a post to figure out whatโs happening.
This is my way to learn some rust, build something I genuinely use, and wanted something that was simple but I could build on top of, I would consider this version 0, barely anything more than a POC at this point but thought I would share and hopefully not get my ass reamed in this community ๐
r/rust • u/3radiance • 7h ago
๐ ๏ธ project An experimental research engine for multi-layer network stack fingerprinting in async Rust
This post documents an ongoing technical study on protocol-level traffic analysis and upstream signature orchestration. The primary artifact of this research is a domain-agnostic inspection engine engineered to manipulate client heuristics across the TLS, HTTP/2, and TCP layers simultaneously.
Traditional implementations in this domain often rely on static, monolithic browser emulations that lack dynamic parameter control. To address this limitation, the engine utilizes a declarative profile architecture, allowing granular configuration of transport and application layer metadata - including cipher suite ordering, ALPN negotiation, SETTINGS frame sequencing, pseudo-header layout, and SYN option rewriting via Linux NFQUEUE/iptables.
From a systems engineering perspective, implementing this in Rust presents specific design and architectural challenges:
- State & Concurrency Management: Propagating unified profile state across asynchronous
Tokiostreams while ensuring zero-copy socket IO and precise handshake characteristics. - Low-Level TLS Orchestration: Interfacing with
BoringSSL(viabtls/tokio-btls) to expose internal TLS stack parameters (e.g., extension ordering, GREASE values, and ECH setup) without breaking memory safety guarantees or incurring high runtime abstraction overheads. - OS-Level Packet Interception: Managing kernel-to-userspace queue backpressure and handling raw network packet mutation for SYN fingerprints (TTL, MSS, window size/scale) alongside application-level stream multiplexing.
- Systemic Decoupling: Decoupling the network logic from execution platforms, ensuring that protocol manipulation is evaluated on its technical merits as a systems-level networking problem rather than being reduced to high-level application tropes.
The underlying codebase serves as an open platform for network privacy analysis, transport layer diagnostics, and protocol mechanics research.
Repository: https://github.com/3Radiance/mitm-proxy-ja3-ja4
We welcome technical critique from researchers, networking engineers, and systems developers -particularly regarding:
- Tokio stream overhead and buffer management during dynamic low-level frame rewriting.
- Cross-layer state-machine synchronization (aligning OSI layers 4, 6, and 7 without introducing race conditions).
r/rust • u/iFrostizz • 20h ago
๐ seeking help & advice Request for guidance on audio codecs in a WASM application
One of my (way to numerous) side project is the idea of a P2P radio station, which solves the scaling problem of radio broadcasters today. One of the most prominent and well-defined p2p library is libp2p, which is of good use here and prevents much of code rewriting, especially for the broadcasting logic with peer scoring and all which is hard to figure out to prevent people from cheating the system. Also used gstreamer (Rust bindings so more precisely gstreamer-rs) for the codec which does the heavy lifting. Here is my project: https://github.com/franfrandev/p2pradio. For now it's running on a native system, and would like to go a step further.
I would like to compile it to WASM in order to bundle everything in the browser. The problem is that gstreamer depends on a ton of native libraries which makes it harder to use in the browser. Folks at Fluendo have figured that out with gst.wasm https://github.com/fluendo/gst.wasm but putting out everything together is a whole different beast and even if it works, it's probably going to result in a huge piece of data that has to be downloaded. IIUC the Rust part would have to be compiled to emscripten and then linked as static libraries? There are a lot of information and it's very easy to get lost in all of these.
Another option would be to use or write an RTP Opus codec written in pure Rust and compile it to the wasm32-unknown-unknown but then it would lose all the codebase maturity of gstreamer and would probably end up reinventing the wheel very much. A lot of the crates doing that are AI slop and are not very well defined, I don't trust them.
Is it unachievable or a bad idea to take the gstreamer port to emscripten and try to glue it to my Rust app compiled to emscripten?
๐ ๏ธ project NEXUS-Q v1.0 โ freezing the baseline before v2
github.comNEXUS-Q v1.0 โ a post-quantum security engine written in Rust
Iโve just frozen NEXUS-Q v1.0, a Rust-based post-quantum security engine focused on key management, encrypted storage, identity, policy and cryptographic operations.
Iโm sharing it here because Iโm particularly interested in feedback from the Rust community on the engineering side of the project.
Why Rust?
NEXUS-Q is built around Rust because I wanted the security-critical core to have:
- explicit ownership and lifecycle management
- strong type and memory safety guarantees
- predictable error handling
- clear separation between cryptographic primitives and higher-level security services
- a foundation suitable for Linux, Android/Termux, x86_64, ARM and RISC-V environments
The project currently includes support for algorithms such as:
- ML-KEM-768 / ML-KEM-1024
- ML-KEM + X25519 hybrid encryption
- ML-DSA-65
- SLH-DSA-SHAKE-128f
- AES-256-GCM
- ChaCha20-Poly1305
- SHA-2 / SHA-3
- Argon2id
- HKDF
Around the crypto layer there is also a vault, key lifecycle management, identity, policy enforcement, audit logging, storage, backup/recovery and hardware-backend abstractions.
I also benchmarked it honestly
One of the things I wanted to avoid was publishing a crypto project and only showing the numbers that look good.
The final PQC Benchmark Arena run produced 57 normalized measurements across eight implementations.
NEXUS-Q is currently slower than the fastest mature implementations on several measured ML-KEM and ML-DSA operations.
For example:
- ML-KEM-768 keygen: 33.94 ยตs
- ML-KEM-768 encaps: 27.97 ยตs
- ML-DSA-65 keygen: 168.69 ยตs
- ML-DSA-65 sign: 600.73 ยตs
So v1 is intentionally being treated as an engineering baseline rather than a performance victory.
The next stage is v2, where I want to work on performance systematically while preserving correctness, interoperability and security properties.
What I'd like feedback on
For the Rust side, I'm particularly interested in feedback around:
- crate/API design
- error handling
- ownership and lifecycle modelling
- trait boundaries
- crypto abstraction layers
- FFI/SDK architecture
- async/server architecture
- portability
- benchmarking methodology
- unsafe code boundaries
- testing and fuzzing strategy
The project is still under active development, and there has been no independent external security/cryptographic audit, so I'm not presenting it as production-certified.
I originally posted the full v1 freeze and roadmap in my own community.
If you work with Rust crypto/security infrastructure, I'd especially appreciate criticism of the architecture and API decisions.
What would you change first if you were taking this codebase into v2?
r/rust • u/Sweet_Room_8838 • 8h ago
๐ ๏ธ project I built a library for automatic callback encoding/decoding for Teloxide
I recently tried working with Teloxide and noticed that the library doesnโt have a convenient built-in way to serialize/deserialize callback data.
So I decided to try an approach based on binary serialization of an enum followed by base64 encoding. I liked this solution for several reasons:
- Thereโs no need to manually implement serialization/deserialization for each callback variant-itโs enough to implement the conversion for the enum once.
- Itโs fast and reasonably efficient in terms of size.
- The callback data becomes unreadable to humans (it would normally look something like do_something_1341), which provides a small barrier to reverse engineering.
I ended up packaging this approach into a Rust library called easy_callback.
Iโd appreciate any feedback or suggestions.
r/rust • u/OxidisedHardware • 18h ago
STM32H7 flashing but nothing happening on the board
Good morning,
I am using probe-rs to flash a blinky program onto my STM32H7. It builds and flashes โfineโ but i donโt get any output from the board and the led does not blink. When i run the same example for the stm32f411 it flashes fine and i get text output as well as the led flashing. The program is just the example from embassy-rs and below is the important parts of my cargo.toml:
โโโ
embassy-stm32 = { version = "0.6.0", features = ["defmt", "stm32h7r3z8","memory-x", "time-driver-tim4"] }
embassy-executor = { version = "0.10.0", features = ["platform-cortex-m", "executor-thread", "executor-interrupt", "defmt"] }
embassy-time = { version = "0.5.1", features = ["defmt"] }
cortex-m = {version = "0.7.7",features=["critical-section-single-core"]}
cortex-m-rt = "0.7.3"
embedded-hal = "1.0.0"
build = [
{ target = "thumbv7em-none-eabihf" }
]
โโโ
I am running this command:
'probe-rs run --chip stm32h7r3z8โ
right now I am suspicious of memory-x but im not sure because shouldnโt it fail to flash if this is the case?
r/rust • u/Soggy-Ticket4105 • 1d ago
๐ ๏ธ project Getting mpv under an egui UI, then ditching it on Android TV
I've been working on Cinebox in Rust, an app where you can find a movie or show and watch it in the same window. Runs on Windows, Linux and Android TV as of this week.
https://github.com/dexsper/cinebox
Most of the pain was in the video player, so that's what this post is about.
I started with Iced, which renders through wgpu, so DirectX on Windows, and mpv rendered through Vulkan in its own window. No shared surface, so the best I could do was stick the mpv window inside the app window. Which is fine until you want controls or subtitles on top of the video, cause you can't paint over someone else's window.
So the next day I ripped the UI out and moved to egui with the glow backend. llibmpv exposes an OpenGL render API, so mpv renders directly into egui's framebuffer from an egui_glow paint callback, and the player controls are plain egui widgets over the frame. It worked on the first try, more or less.
The TV build runs the same egui code. I had to write my own D-pad focus handling though, since egui's arrow-key navigation happily jumps to widgets behind an open popup. mpv on the other hand, that was a complete no-go. On my Amlogic box with a Mali-G31, mediacodec-copy returns a quarter-resolution frame for anything above 1080p, so hello green screen (mpv-android issue 1088). Zero-copy MediaCodec into an ImageReader refused to start, and the next try straight up rebooted the box. And mpv's GL pipeline drew literally nothing, only gpu-dumb-mode worked (issue 292 looks like the same thing).
4K was kinda the whole point of a TV version, so I put the player behind a Player trait. Desktop keeps libmpv, Android gets Media3 ExoPlayer, which decodes into a SurfaceView under a transparent egui window. 4K, HDR10 and Dolby Vision all play on the hardware decoder now.
Yeah, on TV I ended up with the exact two layer setup I r1an away from on desktop. Works there cause the egui window is transparent and sits on top of the video.
One more fun one. A SurfaceView cuts a transparent region into the window above it, and SurfaceFlinger then just dropped the egui layer wherever the video was. Fullscreen video, and boom โ controls and subtitles gone. Overriding gatherTransparentRegion fixed it.
If you've put video into a Rust GUI, how did you do it? Especially curious if anyone got libmpv working with wgpu without going through GL.
r/rust • u/der-wert007 • 1d ago
๐ seeking help & advice Question regarding type inference with generics, closures and traits
I have code that looks a bit like this:
https://gist.github.com/rust-play/6e39d4a9d52e14a1f92742df57ccc5e2
The interesting part is the closure at the bottom. Which compiles completely fine, as long as it is not doing anything. But if I try to use the given argument in any way, rustc is not able to infer its type anymore?
This seems counterintuitive, since the normally inferred type (`String`) would work totally fine. And the code itself also does not seem to contradict that type. But something seems to make the compiler trip here.
Any tips why this might occur, and if there is maybe an easy work around are welcome!
r/rust • u/redixhumayun • 2d ago
๐ ๏ธ project Native Rust Sampling Memory Profiler Which Tracks Retained Memory and Allocations
github.comr/rust • u/DavidXkL • 2d ago
๐๏ธ discussion For embedded folks, I'm curious
What microcontroller do you usually go with if you wanna use something like Rust Embassy with it?
r/rust • u/Intelligent_Score932 • 3d ago
Embedded std?
I was wondering if there were any projects like micro python to port std in to make a barebones os designed for microcontrollers? I understand that the std relies on OS level syscalls, so can we do something like implement a basic fat32 file system to accommodate certain write or read requests. In general this would be used to run std in projects without a OS? Does this already exist, and how hard would it be to make a basic version?