13 May 2026
Planet Mozilla
Firefox Tooling Announcements: MozPhab 2.15.1 Released
Bugs resolved in Moz-Phab 2.15.1:
- bug 2036719 moz-phab --no-stack doesn't work as suggested?
Discuss these changes in #engineering-workflow on Slack or #Conduit Matrix.
1 post - 1 participant
13 May 2026 8:14pm GMT
This Week In Rust: This Week in Rust 651
Hello and welcome to another issue of This Week in Rust! Rust is a programming language empowering everyone to build reliable and efficient software. This is a weekly summary of its progress and community. Want something mentioned? Tag us at @thisweekinrust.bsky.social on Bluesky or @ThisWeekinRust on mastodon.social, or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub and archives can be viewed at this-week-in-rust.org. If you find any errors in this week's issue, please submit a PR.
Want TWIR in your inbox? Subscribe here.
Updates from Rust Community
Foundation
Newsletters
Project/Tooling Updates
- Numax - A portable Rust runtime for distributed apps
- Entroly 0.18.0: Rust-powered AI context engine with PRISM reinforcement learning, SimHash dedup, and EGSC caching
- uFerris: A Versatile Learning Board for Rust Embedded
- Record Ownership: Which Side Is Right?
- iroh 1.0.0-rc.0 - The first release candidate
- Burn 0.21.0 Release: Up to 8× Lower Framework Overhead, Differentiable Collectives and Improved Kernels
- Ratty: A terminal emulator with inline 3D graphics
- Announcing the Rust runtime for Appwrite Functions
- Announcing diesel-async 0.9
- Fresh 0.3.4: Ansi-native 'terminal' theme matches the system's theme; UI for Live Grep + custom grep providers; persistent 'dock' split; Verilog/VHDL support; and much more
Observations/Thoughts
- Killing a
Cowmade my JSON formatter 42% faster - Getting Started with Geospatial Rust - What satellites measure, spectral bands, indices, cloud detection.
- Lessons Learned Building High-Performance Rust Profiler
- The limits of Rust, or why you should probably not follow Amazon, Cloudflare and Discord
- The hidden cost of mpsc channels
- "Respectful" YAML patching in Rust
Rust Walkthroughs
- Learn Rust Generics and Traits By Building a Mini Blackjack Game
- Build a Full-Featured Text Editor From Scratch | 0xKiire
- Where the sun keeps shinin': the provider pattern
- End-to-End Geospatial Processing with EORST - Build a satellite pipeline in Rust: STAC query to GeoTIFF.
- All the ways to mock your Rust code
- Rust in Android Development: Complete Guide
Miscellaneous
Crate of the Week
This week's crate is cloakrs, a library and CLI tool for detecting and masking personally identifiable information.
Despite having no suggestion to work with, llogiq is content with his choice.
Please submit your suggestions and votes for next week!
Calls for Testing
An important step for RFC implementation is for people to experiment with the implementation and give feedback, especially before stabilization.
If you are a feature implementer and would like your RFC to appear in this list, add a call-for-testing label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature need testing.
No calls for testing were issued this week by Rust, Cargo, Rustup or Rust language RFCs.
Let us know if you would like your feature to be tracked as a part of this list.
Call for Participation; projects and speakers
CFP - Projects
Always wanted to contribute to open-source projects but did not know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
No Calls for participation were submitted this week.
If you are a Rust project owner and are looking for contributors, please submit tasks here or through a PR to TWiR or by reaching out on Bluesky or Mastodon!
CFP - Events
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
- Scientific Computing in Rust 2026| 2026-06-05 | Virtual | 2026-07-08 - 2026-07-10
If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a PR to TWiR or by reaching out on Bluesky or Mastodon!
Updates from the Rust Project
502 pull requests were merged in the last week
Compiler
- consider
Result<T, Uninhabited>andControlFlow<Uninhabited, T>to be equivalent toTfor must use lint - fewer global
node_id_to_def_idlookups - introduce move expressions (
move($expr)) - resolve: evaluate private visibilities eagerly in eff vis computation
Library
- add
Command::get_resolved_envs - add
Drop::pin_dropfor pinned drops - add
keepalive,set_keepalivetoTcpStreamimplementations - drop unmapped ZSTs in array
map - have arrays'
drop_gluejust unsize and call the slice version - implemented
PathBuf::into_string
Cargo
diag: Track Cargo diagnostic warning/error count like is done for rustc- suggest 'fmt' when user types 'cargo rustfmt'
- rebuild when -Zpublic-dependency changes
Clippy
- add new lint
inline_trait_bounds - new lint:
manual_clear - fix
manual_option_zipfalse positive when the outer param is used in closure - incompatibility of
non_canonical_clone_implandimplicit_return
Rust-Analyzer
- add wrap in tree list with editor
- add diagnostic for E0436
- add diagnostic for E0529
- complete
:: on module def - support deref patterns
- add whitespaces on postfix completion in macro
- do not infer signatures, instead infer anon consts in them
- do not replace closure capture place types with errors if they fail to normalize
- fix handling of
selfinlower_coroutine_body_with_moved_arguments() - fix offer on unrelated for
toggle_macro_delimiter - generally fix derive helper resolution in semantics
- in "Implement missing members", do not add assoc types with defaults
- no add spaces on
..=on macro inside macro - provide an InferCtxt to TyLoweringContext
- provide source map for the lowered
let self = selfbinding in async fns - ref match uses unified type
- renaming mut vars removed
mutin patterns generated by macro - respect lint attributes for diagnostics that don't set their main node
- remove make mut
Rust Compiler Performance Triage
This week saw a couple of PRs affecting the new trait solver, which is steadily moving forward, in particular #156139 was a massive perf. win. #156185 optimized visibility computation, resulting in up to a 8% win on the typenum crate.
Triage done by @Kobzol. Revision range: 1d72d7e8..aa31d6d8
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) |
0.3% | [0.1%, 0.4%] | 62 |
| Regressions ❌ (secondary) |
0.5% | [0.1%, 1.5%] | 77 |
| Improvements ✅ (primary) |
-1.7% | [-8.8%, -0.2%] | 18 |
| Improvements ✅ (secondary) |
-13.6% | [-85.6%, -0.0%] | 34 |
| All ❌✅ (primary) | -0.2% | [-8.8%, 0.4%] | 80 |
2 Regressions, 2 Improvements, 5 Mixed; 4 of them in rollups 31 artifact comparisons made in total
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
Final Comment Period
Every week, the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
Tracking Issues & PRs
- lint on
core::ffi::c_voidas a return type - Tracking issue for release notes of #154647: change
c_doubletof32onavrtargets - Stabilize
--remap-path-prefixin rustdoc - Replace printables table with
unicode_data.rstables - Tracking issue for RFC 2137: Support defining C-compatible variadic functions in Rust (c_variadic
- Tracking Issue for
Path::is_empty - Tracking Issue for integer formatting into a fixed-size buffer
- resolve: Partially convert
ambiguous_glob_importslint into a hard error
No Items entered Final Comment Period this week for Cargo, Compiler Team (MCPs only), Language Team or Unsafe Code Guidelines. Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.
New and Updated RFCs
- No New or Updated RFCs were created this week.
Upcoming Events
Rusty Events between 2026-05-13 - 2026-06-10 🦀
Virtual
- 2026-05-17 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-05-19 | Virtual (Washington, DC, US) | Rust DC
- 2026-05-20 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2026-05-20 | Virtual (Girona, ES) | Rust Girona
- 2026-05-21 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-05-21 | Virtual (Berlin, DE) | Rust Berlin
- 2026-05-21 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2026-05-26 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-05-26 | Virtual (London, UK) | Women in Rust
- 2026-05-27 | Virtual (Girona, ES) | Rust Girona
- 2026-06-03 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2026-06-04 | Virtual (Berlin, DE) | Rust Berlin
- 2026-06-04 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2026-06-07 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-06-09 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-06-10 | Virtual (Girona, ES) | Rust Girona
Asia
- 2026-05-13 | Malaysia, MY | Rust Meetup Malaysia
- 2026-05-14 | Seoul, KR | Seoul Rust (Programming Language) Meetup
- 2026-05-16 | Bangalore, IN | Rust Bangalore
- 2026-06-02 | Beijing, CN | Voice AI and Rust Meetup (Rust for AI, lowcoderust.com)
Europe
- 2026-05-13 | Girona, ES | Rust Girona
- 2026-05-14 | Switzerland, CH | PostTenebrasLab
- 2026-05-18 - 2026-05-23 | Utrecht, NL | RustWeek 2026
- 2026-05-18 | Milano, MI, IT | Rust Language Milan
- 2026-05-19 | Aarhus, DK | Rust Aarhus
- 2026-05-19 | Amsterdam, NL | RustNL
- 2026-05-19 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
- 2026-05-19 | London, UK | Women in Rust
- 2026-05-21 | Amsterdam, NL | RustNL
- 2026-05-22 | Amsterdam, NL | RustNL
- 2026-05-26 | Dortmund, DE | Rust Dortmund
- 2026-05-26 | Manchester, UK | Rust Manchester
- 2026-05-29 | Berlin, DE | Rust Berlin
- 2026-06-03 | Dublin, IE | Rust Dublin
North America
- 2026-05-14 | Lehi, UT, US | Utah Rust
- 2026-05-14 | Mountain View, CA, US | Hacker Dojo
- 2026-05-14 | Portland, OR, US | PDXRust
- 2026-05-14 | San Diego, CA, US | San Diego Rust
- 2026-05-16 | Boston, MA, US | Boston Rust Meetup
- 2026-05-19 | San Francisco, CA, US | San Francisco Rust Study Group
- 2026-05-20 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2026-05-20 | San Francisco, CA, US | Bay Area Rust Meetup
- 2026-05-21 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-05-21 | Nashville, TN, US | Music City Rust Developers
- 2026-05-23 | Boston, MA, US | Boston Rust Meetup
- 2026-05-27 | Austin, TX, US | Rust ATX
- 2026-05-28 | Atlanta, GA, US | Rust Atlanta
- 2026-05-28 | Los Angeles, CA, US | Rust Los Angeles
- 2026-05-30 | Boston, MA, US | Boston Rust Meetup
- 2026-06-04 | Saint Louis, MO, US | STL Rust
- 2026-06-06 | Boston, MA, US | Boston Rust Meetup
Oceania
- 2026-05-14 | Melbourne, AU | Rust Melbourne
- 2026-05-26 | Barton, ACT, AU | Canberra Rust User Group
South America
- 2026-05-13 | Montevideo, UY | Rust Meetup Uruguay
If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
Of the last 150 merged PRs to Bun, 108 are memory-safety-adjacent - missed cleanup on an error path, use-after-free, uninitialized reads, out-of-bounds access, reentrancy. 75 of those would not compile in a language with destructors, move semantics, and a borrow checker. One in three PRs we ship is "forgot to free something on an error path."
Of the 108, ~88 are in Zig. The ~14 in C++ are mostly ref-cycles and GC-concurrency races - the residual class that survives any language. So the Zig→Rust delta is real: the Zig bugs are exactly the destructor/ownership-fixable kind, and the C++ side is already near the floor.
Without stronger compile-time guarantees, this stays a cat-and-mouse game. The proposal is to remove the largest bug class structurally rather than fix instances of it indefinitely.
- Jarred Sumner on the bun github
Thanks to Brian Kung for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by:
- nellshamrell
- llogiq
- ericseppanen
- extrawurst
- U007D
- mariannegoldin
- bdillo
- opeolluwa
- bnchi
- KannanPalani57
- tzilist
Email list hosting is sponsored by The Rust Foundation
13 May 2026 4:00am GMT
11 May 2026
Planet Mozilla
Mozilla Privacy Blog: Six Million Selections Later: How the DMA Is Giving People Browser Choice
At Mozilla, we've long believed in giving people choice and agency over their experiences online. As power in digital markets has concentrated in a small number of large companies, there have been efforts in the US, Japan, UK, India, Korea, Brazil and elsewhere to restore competition and put choice back in people's hands.
These efforts are at various stages, but first among them was the EU's Digital Markets Act. Over two years since obligations came into effect, the DMA is delivering for people in some key areas.
Not everywhere. Not perfectly. And not without enforcement. But browser choice is the clearest example.
Every 10 seconds, someone picks Firefox through a DMA choice screen
Operating systems like iOS, Android, Windows, and MacOS lean on pre-installed browsers, tricky default settings, and deceptive design to make it hard for people to exercise choice and to keep independent browsers from competing on a level playing field. But where the DMA has created opportunities for genuine browser choice, people are taking it.
New Mozilla data is clear: since the rules took effect, Firefox is selected through a DMA browser choice screen every 10 seconds. That adds up to more than six million Firefox selections. And people are sticking with us: retention is five times higher when people choose Firefox through a choice screen.
Academic analysis points the same way. Independent researchers compared Firefox daily active users in the EU with 43 non-EU countries. Comparing the 15 months before and after browser choice screens rolled out on iOS, they found that Firefox daily active users (DAU) were 113% higher in the EU than it would have been without the DMA. On Android, it was 12% higher. The smaller Android effect is due to the fact that Firefox usage there started from a much higher base, and the Android rollout has been more uneven than on iOS. The research also shows that the DMA's effect is growing over time.
Browser choice on mobile is moving, but desktop is left behind
The DMA's work isn't done. There remains room for improvement on mobile (including making it easier to import your data to a new browser and switch with one click). However, desktop remains largely untouched - leaving roughly 310 million desktops and laptops in the EU without equivalent browser choice. For example, Windows users are subject to deceptive design tactics and are not given an active choice. Even where choice screens exist, they are not a silver bullet; ecosystem lock-in and interoperability barriers still hold back competition and innovation.
Still, the signal is clear: when people get real browser choice, they take it and select alternatives. It's easy for gatekeepers to dismiss this as a couple of competitors benefiting. This ignores the range of challenger browsers also reporting huge growth in the EU. What's more, it ignores the benefit to people. DMA browser choice screens are reaching different audiences. Mozilla analysis shows that women make up a significantly higher share of Firefox selections on iOS via a choice screen than organic downloads, suggesting that choice screens may successfully reach a demographic that reports lower confidence in manually changing browser defaults. The DMA's effects are only starting to be felt and understood.
The road ahead
Effective enforcement of the obligations is the way forward. Gatekeepers continue to test and, in many instances, openly push back against the intent of the DMA provisions. This can take the form of implementation choices that limit real user uptake, delays in rolling out effective solutions, or sustained efforts to reinterpret, weaken, or roll back key provisions.
Most evidently, privacy and security arguments are often elevated in ways that risk diverting attention from whether compliance is delivering genuine choice and competition in practice. In reality, privacy, security, and effective competition can and should be designed to work hand-in-hand. They do not always have to be traded off.
Policymakers and enforcers should remain focused on outcomes: ensuring that the DMA delivers real-world competition and user choice, and resisting efforts to dilute its impact through partial compliance or narrative reframing.
Browser choice is just the start
Mozilla's hope is that real browser choice will become the rule, rather than the exception. And that the lessons of browser choice screens will be applied to other areas of the DMA, including data portability and interoperability. Only with full compliance - including applying the existing DMA text to AI - can the full benefits of competition and innovation be brought to people in the EU.
The post Six Million Selections Later: How the DMA Is Giving People Browser Choice appeared first on Open Policy & Advocacy.
11 May 2026 7:03pm GMT

