Reading view
This Week in Matrix 2025-02-21
πMatrix Live
Today's Matrix Live: https://youtube.com/watch?v=wuQKtCg-dooπDept of Status of Matrix π‘οΈ
Thib (m.org) reports
The Foundation is at a crossroads. We need to raise an additional $610K to break-even, and more immediately to raise $100K to keep our bridges running.
As a neutral custodian for the specification and much more, the Foundation is key to the success of Matrix. It is time to step up for it.
πDept of Governance βοΈ
Gwmngilfen reports
πAnnouncing the Governing Board Working Groups process
The Governing Board has news! If you have been itching to know how to get involved, we are now ready to get you ... on-Board! π₯ π
The Working Groups are the beating heart of the GB - they get the work done. So naturally people have been asking "how do we make one?" and "what is expected of a Working Group?"
πCreating a Working Group
The process is fairly simple:
- First, find some people who want to work on the problem - we would suggest at least 3, but the more you have the better, as it shows the level of interest in the issue.
- Second, write down a charter for your Group - this doesn't need to be huge to start with, just a few sentences about what you want to be responsible for and the outcomes you want to achieve.
- Finally, get a Board Member to sponsor you - this means finding a Board Member who agrees with the work you want to do, and will act as your link to the rest of the Board. The #governing-board-office:matrix.org is a great place to start conversations about WGs and look for sponsors. If in doubt, ping me there ( @gwmngilfen:matrix.org ) and I will help if I can.
Once you have that done, the Board Member will discuss it with the rest of the GB, we'll put it to a vote, and if it passes, you're in! (If it doesn't, we'll be sure to pass back what feedback we can about why not).
We would advise making noise about your proposals for Working Groups in the community to rally support and/or new members to get work done. TWIM is a good place for that π
πExpectations of a Working Group
Working Groups are well named - they work. Some will provide advice & documents on a topic, others may produce code or similar outputs (think, a Docs WG?) but all have work to do. So, obviously you'll want to get on with that.
We also expect that:
Working Groups will have at least a Matrix room to discuss work in asynchronously
they will have regular meetings ("regular" is different for different groups, but we would expect not less than monthly). These could be video or chat meetings.
they take minutes of the meetings - the Board member can help here, but someone should take notes if they are not available.
- These minutes get passed up to the rest of the Board so we can all be kept up to date at a high level
Clearly there are also some longer term things that we expect, like an expectation to work well with other Working Groups, to build consensus for decisions, etc. The GB can help if things need unblocking, of course.
πDocumentation
We do need a place to record the Working Groups, what exists already, what they do, how you get involved. This will be added to the Matrix.org website SOONβ’οΈ
πInitial Working Groups
All of this is theoretical until we start creating some groups, so .. let's hear your proposals (and I have a few to post in a moment)! Let's get some work done πͺ
HarHarLinks announces
πNew GB Working Groups - call for members
Working Groups are the core of how the Governing Board orchestrates its work. We have some new ones for you to consider (for the first time π)
πWebsite WG (proposed)
The GB is considering a proposal for a Website WG! @HarHarLinks has written a charter regarding how to get work done for the main Matrix website, and has a good initial member list. While this is de-facto work already being done, we'd like to make it official - it's been proposed by @HarHarLinks so if this sounds like something you'd be interested in, register your interest with them!
πEvents WG (proposed)
The GB is considering a proposal for a Events WG! This would cover CfPs, staffing booths, merch, event tooling (Pretix box, etc) and so on. While this is de-facto work already being done, we'd like to make it official - its fairly detailed charter been proposed by @HarHarLinks so if this sounds like something you'd be interested in, register your interest with them!
Gwmngilfen reports
πIdeas for New GB Working Groups
In addition to the in-flight proposals from HarHarLinks, I have a couple of ideas that need input to get started...
πDocumentation WG (idea)
I think we could benefit from a Documentation Working Group in Matrix. The Spec pages are excellent, but much of the rest of our docs falls to the general website team, and we see a lot of copies of things like https://doc.matrix.tu-dresden.de/en which suggest to me that people aren't finding our docs sufficient?
So, without wanting to downplay the awesome work that has gone before, I think a dedicated Docs group could try to help specialise the various people working on the website, as well as provide a clear place to report issues with our materials. I'm willing to propose this, if you'd like to discuss it (or think it's an awful idea), please reach out to me ( @gwmngilfen:matrix.org )! in #governing-board-office:matrix.org
πNew User Experience WG (idea)
Another group I'm thinking about is the New User WG - this would be focussed on how we get more people to Matrix, and improve those first few minutes/hours/days in our ecosystem - and how to gather their feedback effectively.
During the Matrix Unconference in Brussels, I hosted a session on this, and in just 45 mins we made 2 pages of ideas, so I think it's a rich area. Outputs would be advice/suggestions to other parts of the ecosystem for how we can make things better for our newer (and especially non-tech) users. I'm willing to propose this, if you'd like to discuss it (or think it's an awful idea), please reach out to me ( @gwmngilfen:matrix.org ) in #governing-board-office:matrix.org
Got ideas of other WGs? Talk to us in #governing-board-office:matrix.org! Onwards!
πDept of Trust & Safety π€
Jim announces
An update on changes to the Matrix.org room directory: https://matrix.org/blog/2025/02/curated-room-directories/
πDept of Clients π±
πElement X iOS (website)
A total rewrite of Element-iOS using the Matrix Rust SDK underneath and targeting devices running iOS 16+.
Doug says
- The next release of Element X iOS has an updated Rust SDK and as such, we will no longer support the Sliding Sync proxy - native Simplified Sliding Sync via your homeserver is the only sync option.
- We made huge progress on embedding the Element Call web app into the Element X (rather than loading it from the web) - we are able to participate in calls, and are now just adapting the code to fully support localisation when embedded.
- We have started implementing pills for rooms and events, just as in Element Web. The first step is to replace permalinks rendered in the timeline with these new pills.
- We had a nice little external contribution that fixes @mention suggestions to work from anywhere in your message and not just at the end. Thanks Vickoo π
πElement X Android (website)
Android Matrix messenger application using the Matrix Rust SDK and Jetpack Compose.
Benoit reports
Working on several features currently:
- swipe between media: improvement when coming from the pinned Events list. Now merged!
- joining room by alias (can also be called
address
)- user interactive verification. It's currently possible to verify your own sessions, it will be possible to verify other users
- fixing bugs! We have fixed a bunch of ANR issue, the first stats from the PlayStore are showing a drop in the ANR occurrences.
- new translations into Norwegian and Turkish. Thanks for all the contributors! As a reminder, anyone can help translating the mobile applications from here: https://localazy.com/p/element/ . Translations are shared between the iOS and Android application.
πDept of SDKs and Frameworks π§°
πmatrix-rust-sdk (website)
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
poljar reports
It's been a quieter week, but progress continues! The event cache is receiving its final polish, including performance improvements, as it nears prime time.
The authentication system is also seeing ongoing enhancements, thanks to KΓ©vin Commaille.
Additionally, work has begun on the successor to MSC3061, aiming to allow newly joined users to access the history of encrypted rooms.
πEvent Cache Updates
- Simplified the flow when resolving a gap (#4691)
- Streamlined back-pagination logic (#4689)
- Implemented lazy-loading for
EventCache
(#4632)- Significantly improved reply replacement speed by introducing an index over replies (#4669)
πAuthentication Improvements
- Removed support for deserializing the old
UserSession
format that contained theissuer_info
field (#4679)- Adopted the new
GET /auth_metadata
Matrix API endpoint (#4673)- Removed the method for authorizing arbitrary scopes (#4664)
πOther Notable Changes
- Added a new constructor to
InboundGroupSession
for easier creation from anm.room_key
event (#4688)- Renamed snapshot files to reduce filename length, allowing Windows users to work on the codebase again (#4625)
- Enabled history visibility overrides when creating a room (#4682)
- Ensured that paginations and syncs donβt add events to the pinned events timeline (#4645)
πDept of Ops π
πsynadm (website)
Command line admin tool for Synapse (Matrix homeserver)
jacksonchen666 (they/it) announces
We have released synadm v0.47! This release packs a few features:
- Connection errors to Synapse should be more reasonably small and easy to understand, thanks to #168.
synadm user redact
is now added, which redacts a user's messages. Supports local and remote users, but intricate details are up to Synapse (see "Redact all events of a user").- You can filter for empty rooms on the server side in
synadm room list
with--empty
or--not-empty
. This is in addition tosynadm room purge-empty
- More options were added to
synadm user list
to match what Synapse supportssynadm media quarantine
andunquarantine
now have the-U
/--mxc-uri
argument to pass MXC URIs toThat's all in code. There are a few changes in documentation, including the theme, listed on the changelogs.
And of course, a changelog is also available on GitHub. Our room is at #synadm:peek-a-boo.at if you have any questions or other stuff.
πmatrix-docker-ansible-deploy (website)
Matrix server setup using Ansible and Docker
Slavi says
thanks to Aine of etke.cc, matrix-docker-ansible-deploy now supports FluffyChat Web as an additional Matrix client you can self-host.
To learn more, see our Setting up FluffyChat Web documentation page.
Slavi announces
Thanks to Zepmann, matrix-docker-ansible-deploy now supports bridging to Bluesky via mautrix-bluesky.
To learn more, see our Setting up mautrix-bluesky documentation page.
πDept of Interesting Projects π°οΈ
πMatrixbird (website)
ahq announces
Matrixbird is an experimental "mail over matrix" idea I've been working on. It supports both traditional email and secure "matrix email" (local and federated) in a unified client.
πMatrix Federation Stats
Aine [don't DM] reports
collected by MatrixRooms.info - an MRS instance by etke.cc
As of today,
10771
Matrix federateable servers have been discovered by matrixrooms.info,3202
(29.7%
) of them are publishing their rooms directory over federation. The published directories contain21078
rooms.Stats timeline is available on MatrixRooms.info/stats
πDept of Ping
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.
π#ping:maunium.net
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank | Hostname | Median MS |
---|---|---|
1 | codestorm.net | 232.5 |
2 | bi-vibes.com | 296 |
3 | shork.ch | 338 |
4 | matrix.sp-codes.de | 483 |
5 | computerlie.be | 538.5 |
6 | mtest.eyer.life | 770.5 |
7 | mgamers.com | 815 |
8 | ncat.cafe | 821.5 |
9 | felixilef.de | 916.5 |
10 | craftingcomrades.net | 968 |
πThat's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!
To learn more about how to prepare an entry for TWIM check out the TWIM guide.
(Updated) Spitz Plus GL-X2000 is an Upcoming Wi-Fi 6 and 4G LTE CAT 12 Router
Benchmarks: Excellent Power Efficiency With 5th Gen AMD EPYC Using amd-pstate & Power Profiles
Ubuntu 25.04 Working On More Improvements For Snapdragon X1 Elite Laptop Support
PCSX2 Enables Wayland Support By Default - After Previously Calling It "Super Broken"
Gentoo Linux Announces Official QCOW2 Images For Cloud VMs
Z3fold & Zbud Allocators Likely To Be Removed In Linux 6.15
Ubuntu 25.04 Now Under Feature Freeze Ahead Of April Release
Chromium Ozone Support For Wayland Continues Progressing In 2025
Renesas RA4L1 ultra-low-power MCU family offers 168 Β΅A/MHz operation, dual-bank flash, capacitive touch

Renesas has recently introduced the RA4L1 ultra-low-power Arm Cortex-M33 MCU family along with two evaluation/development boards. This new lineup consists of 14 ultra-low-power devices based on an 80 MHz Arm Cortex-M33 processor with TrustZone support and designed for metering, IoT sensing, smart locks, digital cameras, and human-machine interface (HMI) applications. The RA4L1 MCU family offers high power efficiency at 168 Β΅A/MHz while active and a standby current of 1.70 Β΅A while retaining SRAM. Additionally, they support segment LCD, capacitive touch, USB-FS, CAN FD, low-power UART, multiple serial interfaces (SPI, QSPI, I2C, I3C, SSI), ADC, DAC, real-time clock, and security features like the RSIP security engine with TRNG, AES, ECC, and Hash. Renesas RA4L1 microcontroller Renesas RA4L1 specifications MCU core Arm Cortex-M33 core (Armv8-M) Up to 80 MHz operating frequency Arm Memory Protection Unit (MPU) 8 secure regions (MPU_S) 8 non-secure regions (MPU_NS) CoreSight ETM-M33 Dual SysTick timers (secure & non-secure) [...]
The post Renesas RA4L1 ultra-low-power MCU family offers 168 Β΅A/MHz operation, dual-bank flash, capacitive touch appeared first on CNX Software - Embedded Systems News.
Ubuntu 24.04.2 released with Linux 6.11 kernel and hardware enablement stack

Ubuntu 24.04.2 has just been released with Linux 6.11 kernel and hardware enablement (HWE) stack. I would typically not care too much about a point release, but our reviews of mini PCs have shown Ubuntu 24.04 with Linux 6.8 was not always well supported with recent mini PC, mostly due to issues with WiFi or Bluetooth, but sometimes itβs even worse. The most common problem I encountered was that MediaTek MT7922-based WiFi 6 and Bluetooth 5.3 module would not support Bluetooth on Ubuntu 24.04 unless we updated the Linux kernel to version 6.10 or newer. Mini PCs with recent processors like the Khadas Mind 2 AI Maker Kit based on Intel Core Ultra 7 258V AI SoC required even more tweaks for HDMI audio, GPU, and WiFi + Bluetooth which is why I tested it with Ubuntu 24.10 instead. Ubuntu 24.04.2 should solve all of those issues. The announcement explains [...]
The post Ubuntu 24.04.2 released with Linux 6.11 kernel and hardware enablement stack appeared first on CNX Software - Embedded Systems News.
KiCad 9 released with support for embedded files, tables in schematics, custom ERC/DRC errors, mouse scroll wheel actions, and more

KiCad 9 open-source EDA software has just been released with a range of new features such as support for embedded files (fonts, 3D files, PDF), tables in schematics, custom ERC/DRC errors, warnings, and exclusion comments, mouse scroll wheel actions, multiple track drag, and much more. The latest KiCad 9.0.0 release includes 4,870 unique commits from hundreds of developers and translators, and the KiCad library has further gained 1500 new symbols, 750 new footprints, and 132 new 3D models. There are way too many changes to list them all here, so Iβll mention some highlights here: Jobsets (predefined output jobs) β Feature that provides predefined sets of βjobsββ plotting, exporting, and running DRCβon schematics and PCBs. Independent jobset files are reusable as users may want to create output pipelines that they can apply across their projects for consistency. Jobsets can be run from the command line or the KiCad GUI. Embedded [...]
The post KiCad 9 released with support for embedded files, tables in schematics, custom ERC/DRC errors, mouse scroll wheel actions, and more appeared first on CNX Software - Embedded Systems News.
Linus Torvalds Clearly Lays Out Linux Maintainer Roles - Or Not - Around Rust Code
Friday Five β February 21, 2025
Mesa's Zink Driver Enables cl_khr_gl_sharing, Working On DaVinci Resolve Support
Femtofox Pro v1 LoRa and Meshtastic development board runs Linux-based Foxbuntu OS on Rockchip RV1103 SoC

The Femtofox Pro v1 kit is a compact, low-power LoRa and Meshtastic development board running Linux specially designed for Meshtastic networks. Built around the Luckfox Pico Mini (Rockchip RV1103) SBC, this compact development platform supports USB host/device functionality, Ethernet, WiFi over USB, GPIO interfaces, I2C, UART, and a real-time clock (RTC). The most unique feature of this board is that it operates at very low power (0.27-0.4W), making it ideal for solar-powered applications. Additionally, Femtofox supports native Meshtastic client control, USB mass storage, and network reconfiguration via a USB flash drive. It also includes user-configurable buttons for WiFi toggling and system reboot, enhancing its usability. These features make Femtofox particularly useful for applications such as emergency response and off-grid messaging. Femtofox Pro v1 kit specifications Mainboard β Luckfox Pico Mini A SoCΒ β Rockchip RV1103 SoC CPU β Arm Cortex-A7 processor @ 1.2GHz + RISC-V core Memory β 64MB DDR2 [...]
The post Femtofox Pro v1 LoRa and Meshtastic development board runs Linux-based Foxbuntu OS on Rockchip RV1103 SoC appeared first on CNX Software - Embedded Systems News.
Rust 1.85 Release Stabilizes Rust 2024 Edition
OpenRazer 3.10 Delivers New Razer Hardware Support For Linux Users
Announcing Rust 1.85.0 and Rust 2024
The Rust team is happy to announce a new version of Rust, 1.85.0. This stabilizes the 2024 edition as well. Rust is a programming language empowering everyone to build reliable and efficient software.
If you have a previous version of Rust installed via rustup
, you can get 1.85.0 with:
$ rustup update stable
If you don't have it already, you can get rustup
from the appropriate page on our website, and check out the detailed release notes for 1.85.0.
If you'd like to help us out by testing future releases, you might consider updating locally to use the beta channel (rustup default beta
) or the nightly channel (rustup default nightly
). Please report any bugs you might come across!
What's in 1.85.0 stable
Rust 2024
We are excited to announce that the Rust 2024 Edition is now stable! Editions are a mechanism for opt-in changes that may otherwise pose a backwards compatibility risk. See the edition guide for details on how this is achieved, and detailed instructions on how to migrate.
This is the largest edition we have released. The edition guide contains detailed information about each change, but as a summary, here are all the changes:
- Language
- RPIT lifetime capture rules β Changes the default capturing of parameters by
impl Trait
types whenuse<..>
is not present. if let
temporary scope β Changes the scope of temporaries forif let
expressions.- Tail expression temporary scope β Changes the scope of temporaries for the tail expression in a block.
- Match ergonomics reservations β Disallow some pattern combinations to avoid confusion and allow for future improvements.
- Unsafe
extern
blocks βextern
blocks now require theunsafe
keyword. - Unsafe attributes β The
export_name
,link_section
, andno_mangle
attributes must now be marked asunsafe
. unsafe_op_in_unsafe_fn
warning β Theunsafe_op_in_unsafe_fn
lint now warns by default, requiring explicitunsafe {}
blocks inunsafe
functions.- Disallow references to
static mut
β References tostatic mut
items now generate a deny-by-default error. - Never type fallback change β Changes to how the never type
!
coerces, and changes thenever_type_fallback_flowing_into_unsafe
lint level to "deny". - Macro fragment specifiers β The
expr
macro fragment specifier inmacro_rules!
macros now also matchesconst
and_
expressions. - Missing macro fragment specifiers β The
missing_fragment_specifier
lint is now a hard error, rejecting macro meta variables without a fragment specifier kind. gen
keyword β Reserves thegen
keyword in anticipation of adding generator blocks in the future.- Reserved syntax β Reserves
#"foo"#
style strings and##
tokens in anticipation of changing how guarded string literals may be parsed in the future.
- RPIT lifetime capture rules β Changes the default capturing of parameters by
- Standard library
- Changes to the prelude β Adds
Future
andIntoFuture
to the prelude. - Add
IntoIterator
forBox<[T]>
β Changes how iterators work with boxed slices. - Newly unsafe functions β
std::env::set_var
,std::env::remove_var
, andstd::os::unix::process::CommandExt::before_exec
are now unsafe functions.
- Changes to the prelude β Adds
- Cargo
- Cargo: Rust-version aware resolver β Changes the default dependency resolver behavior to consider the
rust-version
field. - Cargo: Table and key name consistency β Removes some outdated
Cargo.toml
keys. - Cargo: Reject unused inherited default-features β Changes how
default-features = false
works with inherited workspace dependencies.
- Cargo: Rust-version aware resolver β Changes the default dependency resolver behavior to consider the
- Rustdoc
- Rustdoc combined tests β Doctests are now combined into a single executable, significantly improving performance.
- Rustdoc nested
include!
change β Changes to the relative path behavior of nestedinclude!
files.
- Rustfmt
- Rustfmt: Style edition β Introduces the concept of "style editions", which allow you to independently control the formatting edition from the Rust edition.
- Rustfmt: Formatting fixes β A large number of fixes to formatting various situations.
- Rustfmt: Raw identifier sorting β Changes to how
r#foo
identifiers are sorted. - Rustfmt: Version sorting β Changes to how identifiers that contain integers are sorted.
Migrating to 2024
The guide includes migration instructions for all new features, and in general
transitioning an existing project to a new edition.
In many cases cargo fix
can automate the necessary changes. You may even find that no changes in your code are needed at all for 2024!
Note that automatic fixes via cargo fix
are very conservative to avoid ever changing the semantics of your code. In many cases you may wish to keep your code the same and use the new semantics of Rust 2024; for instance, continuing to use the expr
macro matcher, and ignoring the conversions of conditionals because you want the new 2024 drop order semantics. The result of cargo fix
should not be considered a recommendation, just a conservative conversion that preserves behavior.
Many people came together to create this edition. We'd like to thank them all for their hard work!
async
closures
Rust now supports asynchronous closures like async || {}
which return futures when called. This works like an async fn
which can also capture values from the local environment, just like the difference between regular closures and functions. This also comes with 3 analogous traits in the standard library prelude: AsyncFn
, AsyncFnMut
, and AsyncFnOnce
.
In some cases, you could already approximate this with a regular closure and an asynchronous block, like || async {}
. However, the future returned by such an inner block is not able to borrow from the closure captures, but this does work with async
closures:
let mut vec: Vec<String> = vec![];
let closure = async || {
vec.push(ready(String::from("")).await);
};
It also has not been possible to properly express higher-ranked function signatures with the Fn
traits returning a Future
, but you can write this with the AsyncFn
traits:
use core::future::Future;
async fn f<Fut>(_: impl for<'a> Fn(&'a u8) -> Fut)
where
Fut: Future<Output = ()>,
{ todo!() }
async fn f2(_: impl for<'a> AsyncFn(&'a u8))
{ todo!() }
async fn main() {
async fn g(_: &u8) { todo!() }
f(g).await;
//~^ ERROR mismatched types
//~| ERROR one type is more general than the other
f2(g).await; // ok!
}
So async
closures provide first-class solutions to both of these problems! See RFC 3668 and the stabilization report for more details.
Hiding trait implementations from diagnostics
The new #[diagnostic::do_not_recommend]
attribute is a hint to the compiler to not show the annotated trait implementation as part of a diagnostic message. For library authors, this is a way to keep the compiler from making suggestions that may be unhelpful or misleading. For example:
pub trait Foo {}
pub trait Bar {}
impl<T: Foo> Bar for T {}
struct MyType;
fn main() {
let _object: &dyn Bar = &MyType;
}
error[E0277]: the trait bound `MyType: Bar` is not satisfied
--> src/main.rs:9:29
|
9 | let _object: &dyn Bar = &MyType;
| ^^^^ the trait `Foo` is not implemented for `MyType`
|
note: required for `MyType` to implement `Bar`
--> src/main.rs:4:14
|
4 | impl<T: Foo> Bar for T {}
| --- ^^^ ^
| |
| unsatisfied trait bound introduced here
= note: required for the cast from `&MyType` to `&dyn Bar`
For some APIs, it might make good sense for you to implement Foo
, and get Bar
indirectly by that blanket implementation. For others, it might be expected that most users should implement Bar
directly, so that Foo
suggestion is a red herring. In that case, adding the diagnostic hint will change the error message like so:
#[diagnostic::do_not_recommend]
impl<T: Foo> Bar for T {}
error[E0277]: the trait bound `MyType: Bar` is not satisfied
--> src/main.rs:10:29
|
10 | let _object: &dyn Bar = &MyType;
| ^^^^ the trait `Bar` is not implemented for `MyType`
|
= note: required for the cast from `&MyType` to `&dyn Bar`
See RFC 2397 for the original motivation, and the current reference for more details.
FromIterator
and Extend
for tuples
Earlier versions of Rust implemented convenience traits for iterators of (T, U)
tuple pairs to behave like Iterator::unzip
, with Extend
in 1.56 and FromIterator
in 1.79. These have now been extended to more tuple lengths, from singleton (T,)
through to 12 items long, (T1, T2, .., T11, T12)
. For example, you can now use collect()
to fanout into multiple collections at once:
use std::collections::{LinkedList, VecDeque};
fn main() {
let (squares, cubes, tesseracts): (Vec<_>, VecDeque<_>, LinkedList<_>) =
(0i32..10).map(|i| (i * i, i.pow(3), i.pow(4))).collect();
println!("{squares:?}");
println!("{cubes:?}");
println!("{tesseracts:?}");
}
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561]
std::env::home_dir()
Updates to std::env::home_dir()
has been deprecated for years, because it can give surprising results in some Windows configurations if the HOME
environment variable is set (which is not the normal configuration on Windows). We had previously avoided changing its behavior, out of concern for compatibility with code depending on this non-standard configuration. Given how long this function has been deprecated, we're now updating its behavior as a bug fix, and a subsequent release will remove the deprecation for this function.
Stabilized APIs
BuildHasherDefault::new
ptr::fn_addr_eq
io::ErrorKind::QuotaExceeded
io::ErrorKind::CrossesDevices
{float}::midpoint
- Unsigned
{integer}::midpoint
NonZeroU*::midpoint
- impl
std::iter::Extend
for tuples with arity 1 through 12 FromIterator<(A, ...)>
for tuples with arity 1 through 12std::task::Waker::noop
These APIs are now stable in const contexts
mem::size_of_val
mem::align_of_val
Layout::for_value
Layout::align_to
Layout::pad_to_align
Layout::extend
Layout::array
std::mem::swap
std::ptr::swap
NonNull::new
HashMap::with_hasher
HashSet::with_hasher
BuildHasherDefault::new
<float>::recip
<float>::to_degrees
<float>::to_radians
<float>::max
<float>::min
<float>::clamp
<float>::abs
<float>::signum
<float>::copysign
MaybeUninit::write
Other changes
Check out everything that changed in Rust, Cargo, and Clippy.
Contributors to 1.85.0
Many people came together to create Rust 1.85.0. We couldn't have done it without all of you. Thanks!