11 Jun 2026
Planet Mozilla
Mozilla Privacy Blog: A Handful of Companies Control the Web. AICOA Can Change That.
Mozilla Champions the Reintroduction of the American Innovation and Choice Online Act (AICOA)
Today, only a handful of tech companies shape the online experience for the more than 300 million internet users in America. This concentration of power is exactly why we need legislation that advances competition and user choice. It's all the more urgent as AI transforms not just the tools that people use, but also magnifies the competitive inequities underlying the web itself.
The American Innovation and Choice Online Act (AICOA) is bipartisan legislation designed to curb harmful gatekeeper behaviors of the biggest tech platforms. The bill does so by prohibiting dominant platforms from unfairly preferencing their own products, discriminating against tech competitors, and preventing interoperability - all practices that stop the best product winning and stifle consumer control. The goal is straightforward: companies should compete based on the quality of their products, not by leveraging anticompetitive tactics.
As the builder and operator of the Firefox browser and the browser engine Gecko, Mozilla has firsthand experience with the impact of the exclusionary practices AICOA seeks to prevent. For example, deceptive design tactics deployed by operating systems make it difficult for people to install and keep Firefox as their preferred browser. Browsers are the portal through which people access the open web, and users should define that interaction. AICOA would help limit the ability of operating systems to steer users toward affiliated products through deceptive design choices. Ensuring meaningful user choice online is not just about variety; it reflects values and individual preferences. Openness and innovation thrives when the web is built around platforms that serve people, not the other way round.
Browser engines, while lesser-known, are among the most complex and consequential pieces of infrastructure on the modern internet, impacting user-focused innovations in privacy, security, speed, and more. Gecko is one of only three widely used engines and the only independent browser engine. The importance of that competitive counterweight cannot be underestimated. When platform owners favor their own vertically integrated products, independent challengers face barriers that have nothing to do with product quality and everything to do with a monopolized market.
It's important to recognize that antitrust reform can make the internet more private and secure than it is today, as we've consistently emphasized. For example, in 2021, Firefox was at the forefront of developing technology against cross-site tracking, but could not release the technology to Firefox users on iOS because of app store rules preferring Apple's own browser engine, blocking alternatives like Gecko.
We're champions of AICOA and look forward to working with members of Congress to push this legislation forward and tackle longstanding anticompetitive practices. Mozilla thanks Senators Grassley and Klobuchar for their leadership in advancing competition. A thriving tech ecosystem requires an open, fair, and competitive market where innovative services can compete on merit and people can control their own experiences online.
The post A Handful of Companies Control the Web. AICOA Can Change That. appeared first on Open Policy & Advocacy.
11 Jun 2026 2:05pm GMT
Pascal Chevrel: Spell-checking for more Firefox users — a community effort
A while back, I stumbled onto something that turned into a rewarding side-project at Mozilla.
Firefox ships with a built-in spellchecker, but it only activates if a dictionary for your language is bundled with the browser. Coverage had grown organically over the years - driven largely by localizers and community members adding support for their own languages. Dictionary work was actually very active in the early years of the Mozilla project, but like many things in a large open-source codebase with a lot to manage, it had quietly received less attention over time, for no particularly good reason. So I decided to change that.
Taking stock
I put together a full inventory dashboard of every third-party dictionary shipped in Firefox Desktop, cataloguing sources, upstream health, and - critically - licensing.
Licensing turns out to be the main bottleneck. Firefox is open-source software, so any dictionary we ship has to carry a licence compatible with the Mozilla codebase. Some excellent dictionaries exist for languages Firefox supports, but their licences don't allow direct inclusion. In those cases, the dictionary can still reach users - but only as a Firefox extension they have to find and install manually, rather than something that just works out of the box.
The goal of the inventory wasn't to point fingers at anything. It was to make the full picture visible, so that anyone who wanted to help would know exactly where to start.
Plugging into the community
Once the inventory existed, the work was really about connecting the right people. Mozilla's localizer community already had the expertise and motivation - what was sometimes missing was a clear entry point. I took care of all the patches myself, so that localizers wouldn't have to deal with the technical side of things. This work was done in coordination with Mozilla's Localization drivers team, who own the dictionary infrastructure and reviewed and merged the changes.
The results
We expanded the number of locales shipping with a built-in dictionary from 30 to 41. This shipped last week with Firefox 151.0.3, and these improvements also benefit Thunderbird users, since both applications share the same dictionary infrastructure.
New dictionaries added: Croatian, English (UK), Georgian, Persian, Slovenian, Tajik, Tamil, Tibetan, Turkish, Welsh, and Xhosa.
Updated dictionaries: Bulgarian, Danish, French, Hungarian, Indonesian, Latvian, Polish, Romansh, and Swedish.
Stirring the pot
Part of the reason for doing this work publicly - building the inventory, filing the bugs, making the gaps visible - was to give people with the right expertise a reason to step in themselves. That's exactly what happened.
For Turkish and Russian, the existing open-source Hunspell dictionaries had become outdated - vocabulary and linguistic rules that hadn't kept pace with how the languages are actually used today. Selim (our Turkish l10n lead) and Valentin (our Russian l10n lead) each decided to take matters into their own hands.
Selim forked the TDD Turkish dictionary and updated it with modern vocabulary, better circumflex support, and performance improvements - the result is hunspell-tr-moz, now shipping in Firefox 151.0.3. Valentin built a new modern Russian dictionary from scratch, ru-spelling-dictionary, released under MPL-2.0. It's currently available as a Firefox extension - if you use Russian, Valentin would appreciate feedback on the quality before it's integrated directly into Firefox.
Both projects are public and open-source.
What's still in the pipeline
The licence question is also quietly resolving itself for a couple more locales. The maintainers of the Kabyle and Asturian dictionaries have agreed to relicense their work to allow direct inclusion in Firefox. Once that's done, those communities will join the list too.
There are still gaps in the inventory. Some are licence issues that may resolve over time. But for many of the remaining locales, the honest answer is that we simply haven't looked hard enough yet. Dictionaries are often individual passion projects or work coming out of linguistics circles - they exist, but finding them takes investigation. If you know of a dictionary for a language Firefox doesn't currently support, that's exactly the kind of lead worth following up on.
An open invitation
Mozilla is still a place where a motivated contributor can find a corner of the project, do meaningful work, and have a real impact - without needing to be a browser engineer or a Mozilla insider.
The inventory dashboard is public. If you're a localizer, a linguist, or a dictionary maintainer and you want to help bring spellchecking to more Firefox users, the gaps are clearly documented. And if you maintain a dictionary that could be included but licensing is an obstacle, that's a conversation worth having.
See you in May 2027 for the next update.
11 Jun 2026 1:59pm GMT
10 Jun 2026
Planet Mozilla
This Week In Rust: This Week in Rust 655
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
Official
- How Josh helps Rust manage code across multiple repositories
- Maintainer spotlight: Tiffany Pek Yuan (@tiif)
Newsletters
Project/Tooling Updates
- Announcing stdx, Rust's extended standard library
- OmniScope 0.2.0 released:FFI static detection tool based on LLVM IR
- Announcing Asterinas 0.18.0
- Oryxis SSH 0.8: split panes
- Ratatui 0.30.1 is released - a Rust library for cooking up terminal user interfaces
- @utoo/pack: A Next-Generation Build Tool Based on Turbopack
- Pico de Gallo - a USB-attached protocol bridge for developing embedded-hal drivers on your laptop
- kache 0.5.0: designing a correct compile-cache key
- Announcing smb2: a very fast pure-Rust SMB2/3 client
Observations/Thoughts
- Only Bounds
- Porting our Django backend to Rust improved the infra usage by 90%
- Decimal Crates Comparison and Benchmark | Chinese version
- TeaQL Robot Task Board: a Rust TUI showcase for auditable business workflows
- [video] Rayon is NOT for games - use this instead
- [audio] Veo with Anders Hellerup Madsen and Gorm Casper
Rust Walkthroughs
- [series] Who Runs Your Rust Future? Hands-On Intro to Async Rust
- Extend MySQL Using Rust
- Learn Rust Smart Pointers and Interior Mutability by Building Git Commit Graph Viewer
- heap underflow: classic algorithm solutions in idiomatic Rust, runnable in the browser
Crate of the Week
This week's crate is rustion, a SSH bastion server.
Thanks to handewo for the self-suggestion!
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.
- cuda-oxide Windows fork - test the Windows MSVC release on more CUDA/Windows setups
- openslate - add unit tests for slugify() in api/src/notes.rs
- openslate - add integration tests for notes CRUD in api/src/notes.rs
- openslate - add integration tests for auth flow in api/src/users.rs
- openslate - add unit tests for build_fts_query() in api/src/search.rs
- openslate - add integration tests for auth middleware and logout in api/src/auth.rs
- openslate - add integration tests for media endpoints (DB layer) in api/src/media.rs
- openslate - add unit tests for ext_from_mime() and filename_from_url() in api/src/media.rs
- reliakit - add a typed_csv example to the umbrella crate
- reliakit - implement CsvField for char
- reliakit - implement CsvField for the core::net address types
- reliakit - write a short "which resilience block do I use?" guide
- reliakit - extract a reusable rolling-window counter from RollingBreaker
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.
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
526 pull requests were merged in the last week
Compiler
- add
extern "tail"calling convention - add very basic "comptime" fn implementation
- avoid
unreachable_codeon required return values - cleanup and optimize
render_impls - macros: report unbound metavariables directly
- rewrite
rustc_span::symbol::Internerto avoid double hashing - staticlib hide internal symbols
Library
- add APIs for case folding to the standard library
- add
_valueAPI for number literals in proc-macro - further optimize
SliceIndex<str>impl forRange<usize> - improve TLS codegen by marking the panic/init path as cold
- perf: use
get_uncheckedforTwoWaySearcher - stabilize
PathBuf::into_string - stabilize
Result::map_or_defaultandOption::map_or_default
Cargo
Rustdoc
- IXCRE: preserve sizedness bounds on type params belonging to the parent item
- don't link
doc(hidden)associated type projections - fix trait impl ordering
- render
implrestriction
Clippy
- support
iter_mutinITER_NEXT_SLICE borrowed_box: clean-up, improve suggestion messagedouble_must_use: make the lint machine-applicable in single-attribute caseiter_cloned_collect: split off the suggestion from the main message- add
manual_isolate_lowest_onelint - detect more ranges in
single_range_in_vec_init - do not trigger
inline_trait_boundson auto-derived code - extend
extra_unused_lifetimesfor spuriousfor<'a> large_const_arrays: check nested large arrays- fix
explicit_counter_loopfalse positive when the counter is only modified inside theelseblock oflet...elsebinding - fix
result_large_errandresult_unit_errnot triggering on async functions - fix
unused_async_trait_implsuggestions with return statements - fix lints duplications in
unknown_attributeandrenamed_builtin_attr - obtaining the metadata of a const pointer is a const operation
- perf: avoid cloning associated items in
empty_line_after - perf: skip the
boxed_localwalk for functions without a Box parameter - perf: skip the
inline_alwaysrelevance walk for items without the attribute
Rust-Analyzer
feat(diagnostics): emit error for infer vars in non-inference contexts- adopt uv's AI policy
- distribute windows builts with mimalloc
- lower field defaults to
rustc_type_ir::Consts RunnableKind::Testshould map toproject_json::RunnableKind::TestOneextract_functionmisses&mutforcontainer[i].mut_method()- do not emit a "type annotations needed" error on
include_bytes!()where the array length cannot be inferred - no generate unused generic params in trait sign
- parse OR pattern types
- rename schema subItems with
sub_items - implement
rust-analyzer/evaluatePredicatelsp extension - parse unnamed
enumvariants
Rust Compiler Performance Triage
A fairly noisy week, with a bunch of small regressions contained within, leading to a slight increase on average in instruction counts. This week had a lot of large rollups, likely due to some CI problems, but thankfully many of those came with pre-triaged perf results by the time (thank you to those triagers!). Roughly similar slight regressions for cycles and wall times across the week.
Triage done by @simulacrum. Revision range: 4804ad7e..f3ef3bd8
2 Regressions, 0 Improvements, 10 Mixed; 5 of them in rollups 32 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
- Document panic in
RangeInclusive::from(legacy::RangeInclusive) - Tracking Issue for explicit-endian String::from_utf16
- Tracking Issue for
substr_rangeand related methods - Decide and document where stdarch intrinsics are allowed to diverge from asm behavior
- Document that
ManuallyDrop's Box interaction has been fixed - Add temporary scope to assert_eq and assert_ne
- Clean up crate type names to fix dylib vs staticlib confusion
- Add
T: PartialEqbounds to derivedStructuralPartialEqimpls. - stabilize feature
float_algebraic
No Items entered Final Comment Period this week for Rust RFCs, Cargo, Language Team, Language Reference 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
Upcoming Events
Rusty Events between 2026-06-10 - 2026-07-08 🦀
Virtual
- 2026-06-10 | Virtual (Girona, ES) | Rust Girona
- 2026-06-12 | Virtual (Kenya, KE) | RustaceansKenya
- 2026-06-16 | Virtual (Washington, DC, US) | Rust DC
- 2026-06-17 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2026-06-17 | Virtual (Girona, ES) | Rust Girona
- 2026-06-18 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-06-18 | Virtual (Berlin, DE) | Rust Berlin
- 2026-06-21 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-06-23 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-06-23 | Virtual (London, UK) | Women in Rust
- 2026-07-01 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2026-07-02 | Virtual (Berlin, DE) | Rust Berlin
- 2026-07-02 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2026-07-05 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-07-07 | Virtual (London, GB) | Women in Rust
Europe
- 2026-06-10 | Köln, DE | Rust Cologne
- 2026-06-10 | München, DE | Rust Munich
- 2026-06-11 | Berlin, DE | Rust Berlin
- 2026-06-11 | Switzerland, CH | PostTenebrasLab
- 2026-06-12 - 2026-06-14 | Kraków, PL | Rustmeet
- 2026-06-16 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
- 2026-06-16 | Milano, IT | Rust Language Milan
- 2026-06-18 | Aarhus, DK | Rust Aarhus
- 2026-06-18 | Barcelona, ES | BcnRust
- 2026-06-19 | Dresden, DE | Rust Dresden
- 2026-06-23 | Paris, FR | Rust Paris
- 2026-06-23 | Warsaw, PL | Rust Warsaw
- 2026-06-25 | Berlin, DE | Rust Berlin
- 2026-07-02 | Edinburgh, GB | Rust and Friends
- 2026-07-02 | Enschede, OV, NL | Baseflow Tech Meetups
- 2026-07-08 | Dublin, IE | Rust Dublin
North America
- 2026-06-11 | Lehi, UT, US | Utah Rust
- 2026-06-11 | Mountain View, CA, US | Hacker Dojo
- 2026-06-11 | San Diego, CA, US | San Diego Rust
- 2026-06-16 | San Francisco, CA, US | San Francisco Rust Study Group
- 2026-06-16 | San Francisco, CA, US | San Francisco Rust Study Group
- 2026-06-17 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2026-06-18 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-06-24 | Austin, TX, US | Rust ATX
- 2026-06-24 | Los Angeles, CA, US | Rust Los Angeles
- 2026-06-25 | Atlanta, GA, US | Rust Atlanta
- 2026-06-26 | New York, NY, US | Rust NYC
- 2026-07-02 | Saint Louis, MO, US | STL Rust
Oceania
- 2026-06-11 | Brisbane City, QL, AU | Rust Brisbane
- 2026-06-25 | Melbourne, AU | Rust Melbourne
South America
- 2026-06-18 | Florianópolis, BR | Rust SC
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
It's a footgun, yes, but it's a sound footgun.
- Prof. Dr. Ralf Jung on github
Thanks to Theemathas 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
10 Jun 2026 4:00am GMT