<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_transmute/src/lib.rs, branch cargo_update</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=cargo_update</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=cargo_update'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-06-09T14:08:12+00:00</updated>
<entry>
<title>transmutability: shift abstraction boundary</title>
<updated>2025-06-09T14:08:12+00:00</updated>
<author>
<name>Jack Wrenn</name>
<email>jack@wrenn.fyi</email>
</author>
<published>2025-06-04T15:58:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e9eae28eee0a99c64e81f4fdf87d3c76241e56bd'/>
<id>urn:sha1:e9eae28eee0a99c64e81f4fdf87d3c76241e56bd</id>
<content type='text'>
Previously, `rustc_transmute`'s layout representations were genericized
over `R`, a reference. Now, it's instead genericized over
representations of type and region. This allows us to move reference
transmutability logic from `rustc_trait_selection` to
`rustc_transmutability` (and thus unit test it independently of the
compiler), and — in a follow-up PR — will make it possible to support
analyzing function pointer transmutability with minimal surgery.
</content>
</entry>
<entry>
<title>transmutability: Mark edges by ranges, not values</title>
<updated>2025-04-23T18:45:00+00:00</updated>
<author>
<name>Joshua Liebow-Feeser</name>
<email>hello@joshlf.com</email>
</author>
<published>2025-04-10T20:45:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4326a44e6f0859077b7789d42416b9291b0ff4d1'/>
<id>urn:sha1:4326a44e6f0859077b7789d42416b9291b0ff4d1</id>
<content type='text'>
In the `Tree` and `Dfa` representations of a type's layout, store byte
ranges rather than needing to separately store each byte value. This
permits us to, for example, represent a `u8` using a single 0..=255 edge
in the DFA rather than using 256 separate edges.

This leads to drastic performance improvements. For example, on the
author's 2024 MacBook Pro, the time to convert the `Tree` representation
of a `u64` to its equivalent DFA representation drops from ~8.5ms to
~1us, a reduction of ~8,500x. See `bench_dfa_from_tree`.

Similarly, the time to execute a transmutability query from `u64` to
`u64` drops from ~35us to ~1.7us, a reduction of ~20x. See
`bench_transmute`.
</content>
</entry>
<entry>
<title>transmutability: remove NFA intermediate representation</title>
<updated>2025-04-20T03:06:59+00:00</updated>
<author>
<name>Jack Wrenn</name>
<email>jack@wrenn.fyi</email>
</author>
<published>2025-04-17T17:58:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=957b5488a5fb3875006c06577d9049177ed971bc'/>
<id>urn:sha1:957b5488a5fb3875006c06577d9049177ed971bc</id>
<content type='text'>
Prior to this commit, the transmutability analysis used an intermediate
NFA representation of type layout. We then determinized this
representation into a DFA, upon which we ran the core transmutability
analysis. Unfortunately, determinizing NFAs is expensive. In this
commit, we avoid NFAs entirely by observing that Rust `union`s are the
only source of nondeterminism and that it is comparatively cheap to
compute the DFA union of DFAs.

We also implement Graphviz DOT debug formatting of DFAs.

Fixes rust-lang/project-safe-transmute#23
Fixes rust-lang/project-safe-transmute#24
</content>
</entry>
<entry>
<title>Remove `recursion_limit` increases.</title>
<updated>2025-04-02T05:25:27+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-04-02T05:25:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1830245a224c523f86ad3c62be76be3f336a9fb0'/>
<id>urn:sha1:1830245a224c523f86ad3c62be76be3f336a9fb0</id>
<content type='text'>
These are no longer needed now that `Nonterminal` is gone.
</content>
</entry>
<entry>
<title>Auto merge of #138414 - matthiaskrgr:rollup-9ablqdb, r=matthiaskrgr</title>
<updated>2025-03-12T17:27:43+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2025-03-12T17:27:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=249cb84316401daf040832cdbb8a45e0f5ab6af8'/>
<id>urn:sha1:249cb84316401daf040832cdbb8a45e0f5ab6af8</id>
<content type='text'>
Rollup of 7 pull requests

Successful merges:

 - #137314 (change definitely unproductive cycles to error)
 - #137701 (Convert `ShardedHashMap` to use `hashbrown::HashTable`)
 - #138269 (uefi: fs: Implement FileType, FilePermissions and FileAttr)
 - #138331 (Use `RUSTC_LINT_FLAGS` more)
 - #138345 (Some autodiff cleanups)
 - #138387 (intrinsics: remove unnecessary leading underscore from argument names)
 - #138390 (fix incorrect tracing log)

r? `@ghost`
`@rustbot` modify labels: rollup
</content>
</entry>
<entry>
<title>Remove `#![warn(unreachable_pub)]` from all `compiler/` crates.</title>
<updated>2025-03-11T02:14:21+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-03-11T01:55:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ff0a5fe975bdf94ea6a42c96c20a3891a91e503c'/>
<id>urn:sha1:ff0a5fe975bdf94ea6a42c96c20a3891a91e503c</id>
<content type='text'>
It's no longer necessary now that `-Wunreachable_pub` is being passed.
</content>
</entry>
<entry>
<title>Revert "Use workspace lints for crates in `compiler/` #138084"</title>
<updated>2025-03-10T10:12:47+00:00</updated>
<author>
<name>许杰友 Jieyou Xu (Joe)</name>
<email>39484203+jieyouxu@users.noreply.github.com</email>
</author>
<published>2025-03-10T10:12:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=063ef18fdc10cb0eb49e1af855e1a8e807e73eed'/>
<id>urn:sha1:063ef18fdc10cb0eb49e1af855e1a8e807e73eed</id>
<content type='text'>
Revert &lt;https://github.com/rust-lang/rust/pull/138084&gt; to buy time to
consider options that avoids breaking downstream usages of cargo on
distributed `rustc-src` artifacts, where such cargo invocations fail due
to inability to inherit `lints` from workspace root manifest's
`workspace.lints` (this is only valid for the source rust-lang/rust
workspace, but not really the distributed `rustc-src` artifacts).

This breakage was reported in
&lt;https://github.com/rust-lang/rust/issues/138304&gt;.

This reverts commit 48caf81484b50dca5a5cebb614899a3df81ca898, reversing
changes made to c6662879b27f5161e95f39395e3c9513a7b97028.
</content>
</entry>
<entry>
<title>Remove `#![warn(unreachable_pub)]` from all `compiler/` crates.</title>
<updated>2025-03-07T21:41:43+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-03-06T03:37:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8a3e03392ef12508a3ce50875594ddedd1164ed7'/>
<id>urn:sha1:8a3e03392ef12508a3ce50875594ddedd1164ed7</id>
<content type='text'>
(Except for `rustc_codegen_cranelift`.)

It's no longer necessary now that `unreachable_pub` is in the workspace
lints.
</content>
</entry>
<entry>
<title>Increase recursion_limit in numerous crates.</title>
<updated>2025-03-07T03:51:07+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-03-05T23:03:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=293fe0a9667b442b2a4adf94bbf68bf60391441c'/>
<id>urn:sha1:293fe0a9667b442b2a4adf94bbf68bf60391441c</id>
<content type='text'>
This is temporarily needed for `x doc compiler` to work. They can be
removed once the `Nonterminal` is removed (#124141).
</content>
</entry>
<entry>
<title>Remove `allow(unused_variables)` for `rustc_transmute`.</title>
<updated>2025-02-28T06:31:31+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-02-28T05:52:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=785e21d382ed83121cb3751c1fd05147c2eb41f2'/>
<id>urn:sha1:785e21d382ed83121cb3751c1fd05147c2eb41f2</id>
<content type='text'>
This was hiding some genuine sins, including unused arguments in
numerous functions/methods (incl. trait methods), and some unnecessary
computation.
</content>
</entry>
</feed>
