Commit Graph

18751 Commits

Author SHA1 Message Date
王宇逸
c9ccec93fa Initial STD support for Cygwin
Signed-off-by: Ookiineko <chiisaineko@protonmail.com>
2025-03-10 21:23:31 +08:00
Mara Bos
2647cf17e7 Add #[track_caller] to from_usize. 2025-03-10 12:20:06 +01:00
Mara Bos
7677567e54 Remove unnecessary semicolon. 2025-03-10 12:20:06 +01:00
Mara Bos
4374d5461e Update tests. 2025-03-10 12:20:05 +01:00
Mara Bos
fb9ce02976 Limit formatting width and precision to 16 bits. 2025-03-10 12:20:05 +01:00
Bastian Kersting
e5dc1e3786 Add comments for #[no_sanitize(cfi)] in stdlib 2025-03-10 08:59:24 +00:00
Bastian Kersting
02bb2d4410 Disable CFI for weakly linked syscalls
Currently, when enabling CFI via -Zsanitizer=cfi and executing e.g.
std::sys::random::getrandom, we can observe a CFI violation. This is
the case for all consumers of the std::sys::pal::weak::weak macro,
as it is defining weak functions which don't show up in LLVM IR
metadata. CFI fails for all these functions.

Similar to other such cases in
https://github.com/rust-lang/rust/issues/115199, this change stops
emitting the CFI typecheck for consumers of the macro via the
\#[no_sanitize(cfi)] attribute.
2025-03-10 08:51:04 +00:00
LemonJ
fa183ad827 fix copy typo 2025-03-10 16:46:18 +08:00
LemonJ
55c658b242 fix ptr inconsistency in Rc Arc 2025-03-10 16:39:38 +08:00
Thalia Archibald
523b9d9428 Implement default methods for io::Empty and io::Sink
Eliminate any redundant, unobservable logic from the their default
method implementations.

The observable changes are that `Write::write_fmt` for both types now
ignores the formatting arguments, so a user fmt impl which has side
effects is not invoked, and `Write::write_all_vectored` for both types
does not advance the borrowed buffers. Neither behavior is guaranteed by
the docs and the latter is documented as unspecified.

`Empty` is not marked as vectored, so that `Chain<Empty, _>` and
`Chain<_, Empty>` are not forced to be vectored.
2025-03-10 01:38:20 -07:00
Matthias Krüger
2f1908df61 Rollup merge of #138074 - thaliaarchi:hermit-seek, r=ChrisDenton
Support `File::seek` for Hermit

`lseek` was added in `hermit-abi` in commit [87dd201](87dd201a14) (add missing interface for lseek, 2024-07-15), which was just released in version 0.5.0.

cc ``@mkroening,`` ``@stlankes``

Fixes https://github.com/hermit-os/hermit-rs/issues/652
2025-03-10 09:32:13 +01:00
Matthias Krüger
2270979935 Rollup merge of #137585 - xizheyin:issue-135801, r=workingjubilee
Update documentation to consistently use 'm' in atomic synchronization example

Fixes #135801
2025-03-10 09:32:11 +01:00
Thalia Archibald
8c7a94e4cd Implement read_buf and vectored read/write for SGX stdio 2025-03-10 00:48:13 -07:00
Jethro Beekman
b52666868f Copy from userspace to MaybeUninit
Co-authored-by: Thalia Archibald <thalia@archibald.dev>
2025-03-10 00:45:19 -07:00
Ayush Singh
e0a9dd31c1 uefi: fs: Partially implement FileAttr
- Just the permission and file type.
- FileTimes will need some new conversion functions and thus will come
  with a future PR. Trying to keep things simple here.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-03-10 08:16:56 +05:30
Ayush Singh
c717cc7cd2 uefi: fs: Implement FileType
- Similar to FilePermissions, using bool to represent the bitfield.
- FileType cannot be changed, so no need to worry about converting back
  to attribute.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-03-10 08:16:56 +05:30
Ayush Singh
1833737e16 uefi: fs: Implement FilePermission
- UEFI file permissions are indicated using a u64 bitfield used for
  readonly/filetype, etc.
- Using normal bool with to and from attribute conversions to
  FilePermission from overriding some other bitfields.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-03-10 08:16:55 +05:30
joboet
c52e0596c5 std: move stdio to sys
As per #117276, this moves the platform definitions of `Stdout` and friends into `sys`. This PR also unifies the UNIX and Hermit implementations and moves the `__rust_print_err` function needed by libunwind on SGX into the dedicated module for such helper functions.
2025-03-09 23:42:13 +01:00
Thalia Archibald
1abaacd375 Support File::seek for Hermit 2025-03-09 15:38:30 -07:00
Thalia Archibald
32d0c4ed86 Update hermit-abi to 0.5.0 2025-03-09 15:38:29 -07:00
Matthias Krüger
33530e4cb9 Rollup merge of #138276 - bdbai:fix-uwp-ntopenfile, r=ChrisDenton
Lazy load NtOpenFile for UWP

Lazily load `NtOpenFile` to allow libraries targeting UWP to build and link.

Fixes #138257 .

r? `@ChrisDenton`
2025-03-09 16:41:54 +01:00
Matthias Krüger
980a529164 Rollup merge of #138233 - smmalis37:no-advapi32, r=ChrisDenton
Windows: Don't link std (and run-make) against advapi32, except on win7

Std no longer depends on any functionality provided by advapi32, so we can remove it from the list of external libraries we link against. Except, the win7 targets do still rely on advapi32-provided functionality. This PR therefore moves linking against it to only occur on win7 targets, so that no new uses of it slip in without being noticed.
2025-03-09 16:41:52 +01:00
Matthias Krüger
2460fc68b9 Rollup merge of #138228 - TDecking:master, r=jhpratt
Use `disjoint_bitor` inside `borrowing_sub`

This makes the definition of `borrowing_sub` consistent with that of `carrying_add`.
2025-03-09 16:41:51 +01:00
Matthias Krüger
3bc41aa3e6 Rollup merge of #137650 - thaliaarchi:move-fs-pal, r=Noratrieb
Move `fs` into `sys`

Move platform definitions of `fs` into `std::sys`, as part of https://github.com/rust-lang/rust/issues/117276.

cc `@joboet`
2025-03-09 16:41:49 +01:00
bdbai
33c6c3a1e9 Lazy load NtOpenFile for UWP 2025-03-09 22:42:17 +08:00
Folkert de Vries
a312635821 expose is_s390x_feature_detected from std::arch 2025-03-09 14:04:39 +01:00
Marijn Schouten
506c304654 Clarify iterator by_ref docs 2025-03-09 13:24:46 +01:00
Marijn Schouten
db7e61cfa5 document capacity for ZST as example and prose 2025-03-09 13:11:51 +01:00
Thalia Archibald
685619e4c9 Move fs into sys 2025-03-08 16:22:37 -08:00
ltdk
8269132210 Add inherent versions of MaybeUninit::fill methods for slices 2025-03-08 18:41:35 -05:00
Martin Habovstiak
50ea503d9d Stabilize const_vec_string_slice
This feature was approved for stabilization in
https://github.com/rust-lang/rust/issues/129041#issuecomment-2508940661
so this change stabilizes it.
2025-03-08 17:03:52 +01:00
Steven Malis
9278a3ebd6 Don't link against advapi32, except on win7. 2025-03-08 10:55:47 -05:00
Tobias Decking
8d37f38873 Use disjoint_bitor inside borrowing_sub 2025-03-08 15:45:03 +01:00
ltdk
ffa86bf6eb Reword documentation about SocketAddr having varying layout 2025-03-08 08:19:22 -05:00
Markus Reiter
3628a8f326 Remove unneeded parentheses. 2025-03-08 12:56:00 +01:00
Jacob Pratt
6576d35aef Rollup merge of #138189 - GuillaumeGomez:env-var, r=joshtriplett
Mention `env` and `option_env` macros in `std::env::var` docs

Fixes https://github.com/rust-lang/rust/issues/138159.

Just like there are mentions in `env!` and `option_env!` docs to `std::env::var`, it'd be nice to have a "mention back" as well.
2025-03-08 01:27:23 -05:00
Jacob Pratt
0c67061569 Rollup merge of #137528 - ChrisDenton:rename-win, r=joboet
Windows: Fix error in `fs::rename` on Windows 1607

Fixes #137499

There's a bug in our Windows implementation of `fs::rename` that only manifests on a specific version of Windows. Both newer and older versions of Windows work.

I took the safest route to fixing this by using the old `MoveFileExW` function to implement this and only falling back to the new behaviour if that fails. This is similar to what is done in `unlink` (just above this function).

try-job: dist-x86_64-mingw
try-job: dist-x86_64-msvc
2025-03-08 01:27:21 -05:00
Jacob Pratt
720eacf086 Rollup merge of #136642 - bjorn3:separate_alloctest_crate, r=cuviper
Put the alloc unit tests in a separate alloctests package

Same rationale as https://github.com/rust-lang/rust/pull/135937. This PR has some extra complexity though as a decent amount of tests are testing internal implementation details rather than the public api. As such I opted to include the modules containing the types under test using `#[path]` into the alloctests package. This means that those modules still need `#[cfg(test)]`, but the rest of liballoc no longer need it.
2025-03-08 01:27:20 -05:00
Kevin Reid
769425a4ea Expand CloneToUninit documentation.
* Clarify relationship to `dyn` after #133003.
* Add an example of using it with `dyn` as #133003 enabled.
* Add an example of implementing it.
* Add links to Rust Reference for the mentioned concepts.
* Mention that its method should rarely be called.
* Replace parameter name `dst` with `dest` to avoids confusion between
  “DeSTination” and “Dynamically-Sized Type”.
* Various small corrections.
2025-03-07 19:46:23 -08:00
Jacob Pratt
8cf86cd68d Rollup merge of #138000 - RalfJung:atomic-rmw, r=Amanieu
atomic: clarify that failing conditional RMW operations are not 'writes'

Fixes https://github.com/rust-lang/rust/issues/136669

r? ``@Amanieu``
Cc ``@rust-lang/opsem`` ``@chorman0773`` ``@gnzlbg`` ``@briansmith``
2025-03-07 21:57:51 -05:00
Jacob Pratt
4ec8407196 Rollup merge of #137606 - davidtwco:next-edition, r=traviscross,ehuss
add a "future" edition

This idea has been discussed previously [on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/Continuous.20edition-like.20changes.3F/near/432559262) (though what I've implemented isn't exactly the "next"/"future" editions proposed in that message, just the "future" edition). I've found myself prototyping changes that involve edition migrations and wanting to target an upcoming edition for those migrations, but none exists. This should be permanently unstable and not removed.
2025-03-07 21:57:49 -05:00
Guillaume Gomez
17dd2b179c Mention env and option_env macros in std::env::var docs 2025-03-07 22:00:36 +01:00
Markus Reiter
90ebc24607 Use intrinsics::assume instead of hint::assert_unchecked. 2025-03-07 20:19:12 +01:00
Markus Reiter
22725588d3 Never inline lookup_slow. 2025-03-07 20:17:52 +01:00
bjorn3
22d0440993 Add comments 2025-03-07 19:11:13 +00:00
bjorn3
ae5687e4b0 Fully test the alloc crate through alloctests
For the tests that make use of internal implementation details, we
include the module to test using #[path] in alloctests now.
2025-03-07 19:11:13 +00:00
bjorn3
701bedc323 Move last remaining Rc test to alloctests 2025-03-07 19:11:13 +00:00
bjorn3
be1e0b786d Move most Rc tests to alloctests 2025-03-07 19:11:13 +00:00
bjorn3
fb04372dc5 Move all alloc integration tests to a new alloctests crate 2025-03-07 19:11:11 +00:00
Matthias Krüger
f5a143f796 Rollup merge of #134797 - spastorino:ergonomic-ref-counting-1, r=nikomatsakis
Ergonomic ref counting

This is an experimental first version of ergonomic ref counting.

This first version implements most of the RFC but doesn't implement any of the optimizations. This was left for following iterations.

RFC: https://github.com/rust-lang/rfcs/pull/3680
Tracking issue: https://github.com/rust-lang/rust/issues/132290
Project goal: https://github.com/rust-lang/rust-project-goals/issues/107

r? ```@nikomatsakis```
2025-03-07 19:15:33 +01:00