ultrabear
461b49d96d
stabilize {slice,array}::from_mut
2024-10-09 00:38:01 -07:00
Matthias Krüger
cb5bb13ea9
Rollup merge of #131256 - RalfJung:f16-f128-const, r=ibraheemdev
...
move f16/f128 const fn under f16/f128 feature gate
The `*_const` features were added to work around https://github.com/rust-lang/rust/issues/129656 , which should not be needed any more.
2024-10-05 13:15:58 +02:00
Ralf Jung
0cd0f7ceef
move f16/f128 const fn under f16/f128 feature gate
2024-10-05 10:13:18 +02:00
onestacked
d0e6758677
Stabilize const_slice_split_at_mut
and const_slice_first_last_chunk
2024-10-05 09:52:13 +02:00
Jubilee
49c6d78117
Rollup merge of #130403 - eduardosm:stabilize-const_slice_from_raw_parts_mut, r=workingjubilee
...
Stabilize `const_slice_from_raw_parts_mut`
Stabilizes https://github.com/rust-lang/rust/issues/67456 , since https://github.com/rust-lang/rust/issues/57349 has been stabilized.
Stabilized const API:
```rust
// core::ptr
pub const fn slice_from_raw_parts_mut<T>(data: *mut T, len: usize) -> *mut [T];
// core::slice
pub const unsafe fn from_raw_parts_mut<'a, T>(data: *mut T, len: usize) -> &'a mut [T];
// core::ptr::NonNull
pub const fn slice_from_raw_parts(data: NonNull<T>, len: usize) -> Self
```
Closes https://github.com/rust-lang/rust/issues/67456 .
r? libs-api
2024-10-04 19:19:23 -07:00
Jubilee
882d660036
Rollup merge of #131177 - workingjubilee:stabilize-const-mut-referees, r=tgross35
...
Stabilize 5 `const_mut_refs`-dependent API
Since `const_mut_refs` and `const_refs_to_cell` have been stabilized, we now may create mutable references inside our library API. Thus we now stabilize the `const fn` version of these public library APIs which required such in their implementation:
- const `NonNull::as_mut` https://github.com/rust-lang/rust/issues/91822#issuecomment-2338930442
- const `slice::{first,last}_mut`: https://github.com/rust-lang/rust/issues/83570#issuecomment-2334847112
- const `str::as_{mut_ptr,bytes_mut}`: https://github.com/rust-lang/rust/issues/130086#issuecomment-2336408562
- const `str::from_utf8_unchecked_mut`: https://github.com/rust-lang/rust/issues/91005#issuecomment-2359820672
- const `UnsafeCell::get_mut`: https://github.com/rust-lang/rust/issues/88836#issuecomment-2359817772
2024-10-04 14:11:37 -07:00
bors
14f303bc14
Auto merge of #130157 - eduardosm:stabilize-const_float_classify, r=RalfJung
...
Stabilize `const_float_classify`
Tracking issue: https://github.com/rust-lang/rust/issues/72505
Also reverts https://github.com/rust-lang/rust/pull/114486
Closes https://github.com/rust-lang/rust/issues/72505
Stabilized const API:
```rust
impl f32 {
pub const fn is_nan(self) -> bool;
pub const fn is_infinite(self) -> bool;
pub const fn is_finite(self) -> bool;
pub const fn is_subnormal(self) -> bool;
pub const fn is_normal(self) -> bool;
pub const fn classify(self) -> FpCategory;
pub const fn is_sign_positive(self) -> bool;
pub const fn is_sign_negative(self) -> bool;
}
impl f64 {
pub const fn is_nan(self) -> bool;
pub const fn is_infinite(self) -> bool;
pub const fn is_finite(self) -> bool;
pub const fn is_subnormal(self) -> bool;
pub const fn is_normal(self) -> bool;
pub const fn classify(self) -> FpCategory;
pub const fn is_sign_positive(self) -> bool;
pub const fn is_sign_negative(self) -> bool;
}
```
cc `@rust-lang/wg-const-eval` `@rust-lang/libs-api`
2024-10-04 18:03:16 +00:00
Jubilee Young
75db6b29b5
library: Stabilize const_unsafecell_get_mut
...
Const-stabilizes:
- `UnsafeCell::get_mut`
2024-10-02 14:10:12 -07:00
Jubilee Young
966405d107
library: Stabilize const_ptr_as_ref
...
Const-stabilizes:
- `NonNull::as_mut`
2024-10-02 14:10:11 -07:00
Jubilee Young
bcc78bdc29
library: Stabilize const_str_as_mut
...
Const-stabilizes:
- `str::as_bytes_mut`
- `str::as_mut_ptr`
2024-10-02 14:09:19 -07:00
Jubilee Young
a0228686d1
library: Stabilize const_str_from_utf8_unchecked_mut
...
Const-stabilizes:
- `str::from_utf8_unchecked_mut`
2024-10-02 14:09:19 -07:00
Eduardo Sánchez Muñoz
0dc250c497
Stabilize const_slice_from_raw_parts_mut
2024-10-01 22:02:19 +02:00
Ralf Jung
ac488a2c3f
stabilize const_cell_into_inner
2024-09-28 11:29:02 +02:00
bors
11e760b7f4
Auto merge of #130738 - bjoernager:const-make-ascii, r=jhpratt
...
Mark `make_ascii_uppercase` and `make_ascii_lowercase` in `[u8]` and `str` as const.
Relevant tracking issue: #130698
This PR extends #130697 and #130713 to the similar methods in byte slices (`[u8]`) and string slices (`str`).
For the `str` methods, this simply requires adding the `const` specifier to the function signatures. The `[u8]` methods, however, require (at least a temporary) reimplementation due to the use of iterators and `for` loops.
2024-09-24 08:52:12 +00:00
Gabriel Bjørnager Jensen
e723fe1713
Mark and implement 'make_ascii_uppercase' and 'make_ascii_lowercase' in '[u8]' and 'str' as const;
2024-09-24 08:50:40 +02:00
Michael Goulet
64aa4c6e25
Rollup merge of #130762 - RalfJung:const_intrinsic_copy, r=dtolnay
...
stabilize const_intrinsic_copy
Fixes https://github.com/rust-lang/rust/issues/80697
This stabilizes
```rust
mod ptr {
pub const unsafe fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize);
}
impl *const T {
pub const unsafe fn copy_to(self, dest: *mut T, count: usize);
pub const unsafe fn copy_to_nonoverlapping(self, dest: *mut T, count: usize);
}
impl *mut T {
pub const unsafe fn copy_to(self, dest: *mut T, count: usize);
pub const unsafe fn copy_to_nonoverlapping(self, dest: *mut T, count: usize);
pub const unsafe fn copy_from(self, src: *const T, count: usize);
pub const unsafe fn copy_from_nonoverlapping(self, src: *const T, count: usize);
}
impl <T> NonNull<T> {
pub const unsafe fn copy_to(self, dest: NonNull<T>, count: usize);
pub const unsafe fn copy_to_nonoverlapping(self, dest: NonNull<T>, count: usize);
pub const unsafe fn copy_from(self, src: NonNull<T>, count: usize);
pub const unsafe fn copy_from_nonoverlapping(self, src: NonNull<T>, count: usize);
}
```
In particular, this reverts https://github.com/rust-lang/rust/pull/117905 , which reverted https://github.com/rust-lang/rust/pull/97276 .
The `NonNull` methods are not listed in the tracking issue, they were added to this feature gate in https://github.com/rust-lang/rust/pull/124498 . The existing [FCP](https://github.com/rust-lang/rust/issues/80697#issuecomment-1022585839 ) does not cover them. They are however entirely identical to the `*mut` methods and already stable outside `const`. ``@rust-lang/libs-api`` please let me know if FCP will be required for the `NonNull` methods.
2024-09-23 23:49:14 -04:00
Ralf Jung
2787179f53
stabilize const_intrinsic_copy
2024-09-23 22:12:54 +02:00
joboet
e94dd9b712
random: add tracking issue, address other comments
2024-09-23 10:36:16 +02:00
joboet
5c1c725724
std: implement the random
feature
...
Implements the ACP https://github.com/rust-lang/libs-team/issues/393 .
2024-09-23 10:29:51 +02:00
Matthias Krüger
c1ccdb7d0c
Rollup merge of #130659 - bjoernager:const-char-encode-utf16, r=dtolnay
...
Support `char::encode_utf16` in const scenarios.
Relevant tracking issue: #130660
The method `char::encode_utf16` should be marked "const" to allow compile-time conversions.
This PR additionally rewrites the `encode_utf16_raw` function for better readability whilst also reducing the amount of unsafe code.
try-job: x86_64-msvc
2024-09-23 06:45:33 +02:00
Gabriel Bjørnager Jensen
f48c5ec235
Mark and implement 'char::encode_utf16' as const; Rewrite 'encode_utf16_raw';
2024-09-21 12:53:28 +02:00
bors
b7b9453ea7
Auto merge of #130547 - workingjubilee:rollup-tw30khz, r=workingjubilee
...
Rollup of 3 pull requests
Successful merges:
- #130531 (Check params for unsafety in THIR)
- #130533 (Never patterns constitute a read for unsafety)
- #130542 (Stabilize const `MaybeUninit::as_mut_ptr`)
r? `@ghost`
`@rustbot` modify labels: rollup
2024-09-19 06:58:55 +00:00
bors
f8192ba0d0
Auto merge of #130511 - bjoernager:const-char-encode-utf8, r=dtolnay
...
Support `char::encode_utf8` in const scenarios.
This PR implements [`rust-lang/rfcs#3696`](https://github.com/rust-lang/rfcs/pull/3696/ ).
This assumes [`const_slice_from_raw_parts_mut`](https://github.com/rust-lang/rust/issues/67456/ ).
2024-09-19 04:17:04 +00:00
ultrabear
63f14b3a1e
remove feature attributes as const_maybe_uninit_as_mut_ptr is stabilized
2024-09-18 20:22:10 -07:00
Gabriel Bjørnager Jensen
fb475e4759
Mark and implement 'char::encode_utf8' as const.
2024-09-18 14:56:01 -07:00
Jubilee
12b59e52bc
Rollup merge of #130476 - workingjubilee:more-lazy-methods-take-2, r=Amanieu
...
Implement ACP 429: add `Lazy{Cell,Lock}::get[_mut]` and `force_mut`
Tracking issue for `lazy_get`: https://github.com/rust-lang/rust/issues/129333
2024-09-18 14:32:26 -07:00
Jubilee Young
d9cdb71497
library: Destabilize Lazy{Cell,Lock}::{force,deref}_mut
2024-09-18 11:39:21 -07:00
Ralf Jung
49316f871c
also stabilize const_refs_to_cell
2024-09-15 10:20:47 +02:00
Ralf Jung
3175cc2814
stabilize const_mut_refs
2024-09-15 09:51:32 +02:00
Eduardo Sánchez Muñoz
e3c822df4e
Stabilize const_float_classify
2024-09-12 17:45:58 +02:00
Ralf Jung
7a3a317618
remove const_slice_index annotations, it never had a feature gate anyway
2024-09-08 23:08:43 +02:00
bors
878f49f5ff
Auto merge of #130091 - matthiaskrgr:rollup-kalu1cs, r=matthiaskrgr
...
Rollup of 10 pull requests
Successful merges:
- #126452 (Implement raw lifetimes and labels (`'r#ident`))
- #129555 (stabilize const_float_bits_conv)
- #129594 (explain the options bootstrap passes to curl)
- #129677 (Don't build by-move body when async closure is tainted)
- #129847 (Do not call query to compute coroutine layout for synthetic body of async closure)
- #129869 (add a few more crashtests)
- #130009 (rustdoc-search: allow trailing `Foo ->` arg search)
- #130046 (str: make as_mut_ptr and as_bytes_mut unstably const)
- #130047 (Win: Add dbghelp to the list of import libraries)
- #130059 (Remove the unused `llvm-skip-rebuild` option from x.py)
r? `@ghost`
`@rustbot` modify labels: rollup
2024-09-07 23:02:03 +00:00
Matthias Krüger
3b2139bdb1
Rollup merge of #129555 - RalfJung:const_float_bits_conv, r=dtolnay
...
stabilize const_float_bits_conv
This stabilizes `const_float_bits_conv`, and thus fixes https://github.com/rust-lang/rust/issues/72447 . With https://github.com/rust-lang/rust/pull/128596 having landed, this is entirely a libs-only question now.
```rust
impl f32 {
pub const fn to_bits(self) -> u32;
pub const fn from_bits(v: u32) -> Self;
pub const fn to_be_bytes(self) -> [u8; 4];
pub const fn to_le_bytes(self) -> [u8; 4]
pub const fn to_ne_bytes(self) -> [u8; 4];
pub const fn from_be_bytes(bytes: [u8; 4]) -> Self;
pub const fn from_le_bytes(bytes: [u8; 4]) -> Self;
pub const fn from_ne_bytes(bytes: [u8; 4]) -> Self;
}
impl f64 {
pub const fn to_bits(self) -> u64;
pub const fn from_bits(v: u64) -> Self;
pub const fn to_be_bytes(self) -> [u8; 8];
pub const fn to_le_bytes(self) -> [u8; 8]
pub const fn to_ne_bytes(self) -> [u8; 8];
pub const fn from_be_bytes(bytes: [u8; 8]) -> Self;
pub const fn from_le_bytes(bytes: [u8; 8]) -> Self;
pub const fn from_ne_bytes(bytes: [u8; 8]) -> Self;
}
````
Cc `@rust-lang/wg-const-eval` `@rust-lang/libs-api`
2024-09-07 23:30:11 +02:00
Boxy
0091b8ab2a
update cfgs
2024-09-05 17:24:01 +01:00
bors
e71f952912
Auto merge of #129063 - the8472:cold-opt-size, r=Amanieu
...
Apply size optimizations to panic machinery and some cold functions
* std dependencies gimli and addr2line are now built with opt-level=s
* various panic-related methods and `#[cold]` methods are now marked `#[optimize(size)]`
Panics should be cold enough that it doesn't make sense to optimize them for speed. The only tradeoff here is if someone does a lot of backtrace captures (without panics) and printing then the opt-level change might impact their perf.
Seems to be the first use of the optimize attribute. Tracking issue #54882
2024-09-02 00:58:50 +00:00
Ralf Jung
19908ff7a3
stabilize const_float_bits_conv
2024-09-01 12:38:59 +02:00
Ralf Jung
a772db4206
ub_checks intrinsics: fall back to cfg(ub_checks)
2024-08-25 13:15:48 +02:00
Matthias Krüger
0dfdea1c45
Rollup merge of #128596 - RalfJung:const_fn_floating_point_arithmetic, r=nnethercote
...
stabilize const_fn_floating_point_arithmetic
Part of https://github.com/rust-lang/rust/issues/128288
Fixes https://github.com/rust-lang/rust/issues/57241
The existing test `tests/ui/consts/const_let_eq_float.rs` ([link](https://github.com/RalfJung/rust/blob/const_fn_floating_point_arithmetic/tests/ui/consts/const_let_eq_float.rs )) covers the basics, and also Miri has extensive tests covering the interpreter's float machinery. Also, that machinery can already be used on stable inside `const`/`static` initializers, just not inside `const fn`.
This was explicitly called out in https://github.com/rust-lang/rfcs/pull/3514 so in a sense t-lang just recently already FCP'd this, but let's hear from them whether they want another FCP for the stabilization here or whether that was covered by the FCP for the RFC.
Cc ``@rust-lang/lang``
### Open items
- [x] Update the Reference: https://github.com/rust-lang/reference/pull/1566
2024-08-24 22:14:11 +02:00
Ralf Jung
ebfa3e3f62
stabilize const_fn_floating_point_arithmetic
2024-08-22 08:25:54 +02:00
Eduardo Sánchez Muñoz
dbad758134
Stabilize feature char_indices_offset
2024-08-19 20:31:48 +02:00
The 8472
6d8f0bd930
apply #[optimize(size)] to #[cold] ones and part of the panick machinery
2024-08-14 20:50:04 +02:00
许杰友 Jieyou Xu (Joe)
196d256b20
Rollup merge of #128570 - folkertdev:stabilize-asm-const, r=Amanieu
...
Stabilize `asm_const`
tracking issue: https://github.com/rust-lang/rust/issues/93332
reference PR: https://github.com/rust-lang/reference/pull/1556
this will probably require some CI wrangling (and a rebase), so let's get that over with even though the final required PR is not merged yet.
r? `@ghost`
2024-08-14 21:43:07 +08:00
Folkert
8419c0956e
stabilize asm_const
2024-08-13 23:18:31 +02:00
Matthias Krüger
bc9c31df69
Rollup merge of #122884 - mzabaluev:pow-remove-exit-branch, r=Amanieu
...
Optimize integer `pow` by removing the exit branch
The branch at the end of the `pow` implementations is redundant with multiplication code already present in the loop. By rotating the exit check, this branch can be largely removed, improving code size and reducing instruction cache misses.
Testing on my machine (`x86_64`, 11th Gen Intel Core i5-1135G7 @ 2.40GHz), the `num::int_pow` benchmarks improve by some 40% for the unchecked operations and show some slight improvement for the checked operations as well.
2024-08-13 21:11:12 +02:00
Nadrieril
c256de2253
Update std and compiler
2024-08-10 12:07:17 +02:00
ltdk
0257f42089
Add tracking issue to core-pattern-type
2024-08-07 20:43:05 -04:00
sayantn
2cde11f2d1
Chore: add x86_amx_intrinsics
feature flag to core/lib.rs
and remove issue-120720-reduce-nan.rs
2024-08-04 03:08:18 +05:30
sayantn
41b017ec99
Add the sha512
, sm3
and sm4
target features
...
Add the feature in `core/lib.rs`
2024-08-02 02:29:15 +05:30
bors
f8060d282d
Auto merge of #128083 - Mark-Simulacrum:bump-bootstrap, r=albertlarsan68
...
Bump bootstrap compiler to new beta
https://forge.rust-lang.org/release/process.html#master-bootstrap-update-t-2-day-tuesday
2024-07-30 17:49:08 +00:00
George Bateman
23f46e5b99
Stabilize offset_of_nested
2024-07-29 17:50:12 +01:00