<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_interface/src/interface.rs, branch 1.71.1</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.71.1</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.71.1'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2023-05-23T14:53:36+00:00</updated>
<entry>
<title>Don't leak the function that is called on drop</title>
<updated>2023-05-23T14:53:36+00:00</updated>
<author>
<name>Maybe Waffle</name>
<email>waffle.lapkin@gmail.com</email>
</author>
<published>2023-05-23T14:53:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e2b953063d1c6302dd61a2284f8da8b770ddc11d'/>
<id>urn:sha1:e2b953063d1c6302dd61a2284f8da8b770ddc11d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Avoid `&amp;format("...")` calls in error message code.</title>
<updated>2023-05-16T07:59:56+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2023-05-16T06:04:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=01e33a3600789b0e96511c4ac95fc114b507c79e'/>
<id>urn:sha1:01e33a3600789b0e96511c4ac95fc114b507c79e</id>
<content type='text'>
Error message all end up passing into a function as an `impl
Into&lt;{D,Subd}iagnosticMessage&gt;`. If an error message is creatd as
`&amp;format("...")` that means we allocate a string (in the `format!`
call), then take a reference, and then clone (allocating again) the
reference to produce the `{D,Subd}iagnosticMessage`, which is silly.

This commit removes the leading `&amp;` from a lot of these cases. This
means the original `String` is moved into the
`{D,Subd}iagnosticMessage`, avoiding the double allocations. This
requires changing some function argument types from `&amp;str` to `String`
(when all arguments are `String`) or `impl
Into&lt;{D,Subd}iagnosticMessage&gt;` (when some arguments are `String` and
some are `&amp;str`).
</content>
</entry>
<entry>
<title>Move expansion of query macros in rustc_middle to rustc_middle::query</title>
<updated>2023-05-15T06:49:13+00:00</updated>
<author>
<name>John Kåre Alsaker</name>
<email>john.kare.alsaker@gmail.com</email>
</author>
<published>2023-05-15T04:24:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=fff20a703db364d8b91c14cef4779f5e632df191'/>
<id>urn:sha1:fff20a703db364d8b91c14cef4779f5e632df191</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #108638 - Zoxc:erase-query-values-map, r=cjgillot</title>
<updated>2023-05-14T13:47:01+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2023-05-14T13:47:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8e8116cfe5b1affcfcc22ffb6bb0152573488114'/>
<id>urn:sha1:8e8116cfe5b1affcfcc22ffb6bb0152573488114</id>
<content type='text'>
Use dynamic dispatch for queries

This replaces most concrete query values `V` with `MaybeUninit&lt;[u8; { size_of::&lt;V&gt;() }]&gt;` reducing the code instantiated by queries. The compile time of `rustc_query_impl` is reduced by 27%. It is an alternative to https://github.com/rust-lang/rust/pull/107937 which uses unstable const generics while this uses a `EraseType` trait which maps query values to their erased variant.

This is achieved by introducing an `Erased` type which does sanity check with `cfg(debug_assertions)`. The query caches gets instantiated with these erased types leaving the code in `rustc_query_system` unaware of them. `rustc_query_system` is changed to use instances of `QueryConfig` so that `rustc_query_impl` can pass in `DynamicConfig` which holds a pointer to a virtual table.

&lt;table&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;Benchmark&lt;/td&gt;&lt;td colspan="1"&gt;&lt;b&gt;Before&lt;/b&gt;&lt;/th&gt;&lt;td colspan="2"&gt;&lt;b&gt;After&lt;/b&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Time&lt;/td&gt;&lt;td align="right"&gt;Time&lt;/td&gt;&lt;td align="right"&gt;%&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;clap&lt;/b&gt;:check&lt;/td&gt;&lt;td align="right"&gt;1.7055s&lt;/td&gt;&lt;td align="right"&gt;1.6949s&lt;/td&gt;&lt;td align="right"&gt; -0.62%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;hyper&lt;/b&gt;:check&lt;/td&gt;&lt;td align="right"&gt;0.2547s&lt;/td&gt;&lt;td align="right"&gt;0.2528s&lt;/td&gt;&lt;td align="right"&gt; -0.73%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;regex&lt;/b&gt;:check&lt;/td&gt;&lt;td align="right"&gt;0.9590s&lt;/td&gt;&lt;td align="right"&gt;0.9553s&lt;/td&gt;&lt;td align="right"&gt; -0.39%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;syn&lt;/b&gt;:check&lt;/td&gt;&lt;td align="right"&gt;1.5457s&lt;/td&gt;&lt;td align="right"&gt;1.5440s&lt;/td&gt;&lt;td align="right"&gt; -0.11%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;syntex_syntax&lt;/b&gt;:check&lt;/td&gt;&lt;td align="right"&gt;5.9092s&lt;/td&gt;&lt;td align="right"&gt;5.9009s&lt;/td&gt;&lt;td align="right"&gt; -0.14%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Total&lt;/td&gt;&lt;td align="right"&gt;10.3741s&lt;/td&gt;&lt;td align="right"&gt;10.3479s&lt;/td&gt;&lt;td align="right"&gt; -0.25%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Summary&lt;/td&gt;&lt;td align="right"&gt;1.0000s&lt;/td&gt;&lt;td align="right"&gt;0.9960s&lt;/td&gt;&lt;td align="right"&gt; -0.40%&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;Benchmark&lt;/td&gt;&lt;td colspan="1"&gt;&lt;b&gt;Before&lt;/b&gt;&lt;/th&gt;&lt;td colspan="2"&gt;&lt;b&gt;After&lt;/b&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Time&lt;/td&gt;&lt;td align="right"&gt;Time&lt;/td&gt;&lt;td align="right"&gt;%&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;clap&lt;/b&gt;:check:initial&lt;/td&gt;&lt;td align="right"&gt;2.0605s&lt;/td&gt;&lt;td align="right"&gt;2.0575s&lt;/td&gt;&lt;td align="right"&gt; -0.15%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;hyper&lt;/b&gt;:check:initial&lt;/td&gt;&lt;td align="right"&gt;0.3218s&lt;/td&gt;&lt;td align="right"&gt;0.3216s&lt;/td&gt;&lt;td align="right"&gt; -0.07%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;regex&lt;/b&gt;:check:initial&lt;/td&gt;&lt;td align="right"&gt;1.1848s&lt;/td&gt;&lt;td align="right"&gt;1.1839s&lt;/td&gt;&lt;td align="right"&gt; -0.07%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;syn&lt;/b&gt;:check:initial&lt;/td&gt;&lt;td align="right"&gt;1.9409s&lt;/td&gt;&lt;td align="right"&gt;1.9376s&lt;/td&gt;&lt;td align="right"&gt; -0.17%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;syntex_syntax&lt;/b&gt;:check:initial&lt;/td&gt;&lt;td align="right"&gt;7.3105s&lt;/td&gt;&lt;td align="right"&gt;7.2928s&lt;/td&gt;&lt;td align="right"&gt; -0.24%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Total&lt;/td&gt;&lt;td align="right"&gt;12.8185s&lt;/td&gt;&lt;td align="right"&gt;12.7935s&lt;/td&gt;&lt;td align="right"&gt; -0.20%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Summary&lt;/td&gt;&lt;td align="right"&gt;1.0000s&lt;/td&gt;&lt;td align="right"&gt;0.9986s&lt;/td&gt;&lt;td align="right"&gt; -0.14%&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;Benchmark&lt;/td&gt;&lt;td colspan="1"&gt;&lt;b&gt;Before&lt;/b&gt;&lt;/th&gt;&lt;td colspan="2"&gt;&lt;b&gt;After&lt;/b&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Time&lt;/td&gt;&lt;td align="right"&gt;Time&lt;/td&gt;&lt;td align="right"&gt;%&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;clap&lt;/b&gt;:check:unchanged&lt;/td&gt;&lt;td align="right"&gt;0.4606s&lt;/td&gt;&lt;td align="right"&gt;0.4617s&lt;/td&gt;&lt;td align="right"&gt; 0.24%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;hyper&lt;/b&gt;:check:unchanged&lt;/td&gt;&lt;td align="right"&gt;0.1335s&lt;/td&gt;&lt;td align="right"&gt;0.1336s&lt;/td&gt;&lt;td align="right"&gt; 0.08%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;regex&lt;/b&gt;:check:unchanged&lt;/td&gt;&lt;td align="right"&gt;0.3324s&lt;/td&gt;&lt;td align="right"&gt;0.3346s&lt;/td&gt;&lt;td align="right"&gt; 0.65%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;syn&lt;/b&gt;:check:unchanged&lt;/td&gt;&lt;td align="right"&gt;0.6268s&lt;/td&gt;&lt;td align="right"&gt;0.6307s&lt;/td&gt;&lt;td align="right"&gt; 0.64%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟣 &lt;b&gt;syntex_syntax&lt;/b&gt;:check:unchanged&lt;/td&gt;&lt;td align="right"&gt;1.8248s&lt;/td&gt;&lt;td align="right"&gt;1.8508s&lt;/td&gt;&lt;td align="right"&gt;💔  1.43%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Total&lt;/td&gt;&lt;td align="right"&gt;3.3779s&lt;/td&gt;&lt;td align="right"&gt;3.4113s&lt;/td&gt;&lt;td align="right"&gt; 0.99%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Summary&lt;/td&gt;&lt;td align="right"&gt;1.0000s&lt;/td&gt;&lt;td align="right"&gt;1.0061s&lt;/td&gt;&lt;td align="right"&gt; 0.61%&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

It's based on https://github.com/rust-lang/rust/pull/108167.

r? `@cjgillot`
</content>
</entry>
<entry>
<title>Auto merge of #107586 - SparrowLii:parallel-query, r=cjgillot</title>
<updated>2023-05-13T13:47:53+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2023-05-13T13:47:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=dd8ec9c88d4d87986cbf2083c398ab6c52dc3f80'/>
<id>urn:sha1:dd8ec9c88d4d87986cbf2083c398ab6c52dc3f80</id>
<content type='text'>
Introduce `DynSend` and `DynSync` auto trait for parallel compiler

part of parallel-rustc #101566

This PR introduces `DynSend / DynSync` trait and `FromDyn / IntoDyn` structure in rustc_data_structure::marker. `FromDyn` can dynamically check data structures for thread safety when switching to parallel environments (such as calling `par_for_each_in`). This happens only when `-Z threads &gt; 1` so it doesn't affect single-threaded mode's compile efficiency.

r? `@cjgillot`
</content>
</entry>
<entry>
<title>Fix --check-cfg bug with args order when parsing</title>
<updated>2023-05-06T16:40:47+00:00</updated>
<author>
<name>Urgau</name>
<email>urgau@numericable.fr</email>
</author>
<published>2023-05-06T16:26:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f4ca42f573e3a8bd9bb5099efa0285855b77367f'/>
<id>urn:sha1:f4ca42f573e3a8bd9bb5099efa0285855b77367f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>correct literals for dyn thread safe</title>
<updated>2023-05-06T01:34:53+00:00</updated>
<author>
<name>SparrowLii</name>
<email>liyuan179@huawei.com</email>
</author>
<published>2023-04-07T13:20:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=089a38880b6e3b05a2c59644469233dbda411158'/>
<id>urn:sha1:089a38880b6e3b05a2c59644469233dbda411158</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rename relative names in `sync`</title>
<updated>2023-05-06T01:34:24+00:00</updated>
<author>
<name>SparrowLii</name>
<email>liyuan179@huawei.com</email>
</author>
<published>2023-04-04T08:26:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=9f8ab2a8d361c537d5f0e3c27df9e3f630daecd3'/>
<id>urn:sha1:9f8ab2a8d361c537d5f0e3c27df9e3f630daecd3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>introduce `DynSend` and `DynSync` auto trait</title>
<updated>2023-05-06T01:34:18+00:00</updated>
<author>
<name>SparrowLii</name>
<email>liyuan179@huawei.com</email>
</author>
<published>2023-03-03T02:14:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b9746ce03901fc39707c8c2d0405caf5384b4e97'/>
<id>urn:sha1:b9746ce03901fc39707c8c2d0405caf5384b4e97</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve internal representation of check-cfg</title>
<updated>2023-05-05T11:06:47+00:00</updated>
<author>
<name>Urgau</name>
<email>urgau@numericable.fr</email>
</author>
<published>2023-04-30T12:43:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d327d5b16840346d838a29fdbac49a66be216a08'/>
<id>urn:sha1:d327d5b16840346d838a29fdbac49a66be216a08</id>
<content type='text'>
This is done to simplify to relationship between names() and values()
but also make thing clearer (having an Any to represent that any values
are allowed) but also to allow the (none) + values expected cases that
wasn't possible before.
</content>
</entry>
</feed>
