Commit graph

14466 commits

Author SHA1 Message Date
bors
86c0b85da9 Auto merge of #74395 - Mark-Simulacrum:stage0-next, r=pietroalbini
Bump version to 1.47

This also bumps to a more recent rustfmt version, just to keep us relatively up to date (though almost nothing has changed in rustfmt we use beyond bumps to the parser infra). No formatting changes as a result of this.

r? @pietroalbini
2020-07-17 03:51:35 +00:00
Manish Goregaokar
5751c7f1db
Rollup merge of #74033 - ehuss:std-compile-all-platforms, r=Mark-Simulacrum
Add build support for Cargo's build-std feature.

This makes some changes to the standard library to make it easier to use with Cargo's build-std feature. The primary goal is to make it so that Cargo and its users do not need to know which crates to build and which features to use for every platform.

Conditional cfgs are adjusted so that there is usually a fall-through for unsupported platforms. Additionally, there is a "restricted-std" feature to mark `std` as unstable when used with build-std on no_std platforms. There is no intent to stabilize this feature for the foreseeable future.

This borrows some of the implementation for wasm which already does what this needs. More code sharing can be done with some other platforms (there is a lot of duplication with cloudabi, hermit, and sgx), but I figure that can be done in a future PR.

There are some small changes to stable behavior in this PR:
- `std::env::consts::ARCH` on asmjs now reports "wasm32", to match its actual architecture.
- Some of the wasm error messages for unsupported features report a slightly different error message so that the code can be reused.

There should otherwise not be any changes to how std is built for distribution via bootstrap.

This does not yet support all platforms when used with build-std.

- It doesn't work with 16-bit targets (hashbrown does not support that).
- It does not work with JSON spec targets.
    - In particular, all target triple snooping will need to be replaced with appropriate target option checking.
- Switching to gimli (#73441) will make cross-building *much* easier.
- There are still a ton of issues on the Cargo side to resolve. A big one is panic strategy support.

Future PRs are intended to address some of these issues.
2020-07-16 17:08:57 -07:00
Manish Goregaokar
41d956bf63
Rollup merge of #73269 - mzohreva:mz/sgx-wait-timeout, r=jethrogb
Enable some timeouts in SGX platform

This would partially resolve https://github.com/fortanix/rust-sgx/issues/31

cc @jethrogb and @Goirad
2020-07-16 17:08:56 -07:00
Mark Rousskov
647d9b525f apply bootstrap cfgs 2020-07-16 19:36:49 -04:00
Manish Goregaokar
3cecd6003b Revert "Remove spotlight usage"
This reverts commit 13c6d5819a.
2020-07-16 09:58:34 -07:00
Manish Goregaokar
4b4ea686ff
Rollup merge of #74377 - alexcrichton:test-default, r=Mark-Simulacrum
Move libstd's default feature to libtest

This commit makes it so `std` no longer has a `default` feature, but
instead the `test` crate has a `default` feature doing the same thing.
The purpose of this commit is to allow Cargo's `-Zbuild-std` command,
which could customize the features of the standard library, to handle
the `default` feature for libstd. Currently Cargo's `-Zbuild-std`
support starts at libtests's manifest as the entry point to the std set
of crates.
2020-07-16 00:01:11 -07:00
Manish Goregaokar
e598ee51e4
Rollup merge of #74037 - JohnTitor:contributing-md, r=Mark-Simulacrum
Update reference to CONTRIBUTING.md

CONTRIBUTING.md has been migrated to the rustc-dev-guide but some still refer there.
Update them with the appropriate links.

Fixes #74253
2020-07-16 00:01:04 -07:00
Mohsen Zohrevandi
85c25aed51 Move usercall_wait_timeout to abi::usercalls::wait_timeout 2020-07-15 15:48:36 -07:00
Alex Crichton
e158913f2b Move libstd's default feature to libtest
This commit makes it so `std` no longer has a `default` feature, but
instead the `test` crate has a `default` feature doing the same thing.
The purpose of this commit is to allow Cargo's `-Zbuild-std` command,
which could customize the features of the standard library, to handle
the `default` feature for libstd. Currently Cargo's `-Zbuild-std`
support starts at libtests's manifest as the entry point to the std set
of crates.
2020-07-15 11:37:46 -07:00
Manish Goregaokar
b7cf2cbd78
Rollup merge of #74291 - regexident:from-docs, r=GuillaumeGomez
Added docs for `From<c_int>` for `ExitStatus`

Partially addresses https://github.com/rust-lang/rust/issues/51430
2020-07-15 11:01:22 -07:00
Eric Huss
3d44d3ccfd Simplify os_str_bytes cfg expression. 2020-07-15 09:57:10 -07:00
Eric Huss
0eb293ddb7 Use an allow-list of platforms that support std.
Use a fall-through for no_std targets.
2020-07-15 09:57:10 -07:00
Eric Huss
6e9a1de0d1 Introduce restricted-std feature. 2020-07-15 09:57:05 -07:00
Eric Huss
8c6c1dd3d3 Automatically calculate std::env::consts::ARCH.
This simplifies the definition for ARCH.

Note that this changes asmjs-unknown-emscripten ARCH to `wasm32`,
which reflects the actual target arch.
2020-07-15 08:38:10 -07:00
Manish Goregaokar
7b1247c34f
Rollup merge of #74271 - lzutao:cmdbytes, r=LukasKalbertodt
process_unix: prefer i32::*_be_bytes over manually shifting bytes

This PR makes it more clear about the intend of the code.
2020-07-14 13:19:30 -07:00
Manish Goregaokar
fadd91c630
Rollup merge of #74263 - RalfJung:thread-local, r=Mark-Simulacrum
Slight reorganization of sys/(fast_)thread_local

I was long confused by the `thread_local` and `fast_thread_local` modules in the `sys(_common)` part of libstd. The names make it *sound* like `fast_thread_local` is just a faster version of `thread_local`, but really these are totally different APIs: one provides thread-local "keys", which are non-addressable pointer-sized pieces of local storage with an associated destructor; the other (the "fast" one) provides just a destructor.

So I propose we rename `fast_thread_local` to `thread_local_dtor`, and `thread_local` to `thread_local_key`. That's what this PR does.
2020-07-14 13:19:28 -07:00
Manish Goregaokar
353df59893
Rollup merge of #73759 - GuillaumeGomez:stdin-examples, r=Dylan-DPC
Add missing Stdin and StdinLock examples

r? @Dylan-DPC
2020-07-14 13:19:20 -07:00
Manish Goregaokar
063bbc485e
Rollup merge of #74220 - lzutao:windows-path-com, r=LukasKalbertodt
Refactor Windows `parse_prefix`

These changes make me feel more readable.
See the commit messages for more details.
2020-07-14 07:39:04 -07:00
Manish Goregaokar
905c4e05e1
Rollup merge of #73866 - Goirad:fix-entry-improper-ctypes, r=davidtwco
Obviate #[allow(improper_ctypes_definitions)]

Modifies the return type for `fn entry` so that allowing
improper_ctypes_definitions is no longer necessary. This change is
derived from a similar pattern in `libstd/sys/sgx/abi/usercalls/raw.rs`
with `UsercallReturn`.

cc @jethrogb
2020-07-14 07:38:56 -07:00
Vincent Esche
538f15776b Added docs for From<c_int> for ExitStatus 2020-07-14 10:25:14 +02:00
Manish Goregaokar
d9614dbe47
Rollup merge of #73867 - poliorcetics:union-keyword, r=joshtriplett
Document the union keyword

Partial fix of #34601.

This documents the `union` keyword by presenting three cases: simply using a union, matching on a union and referencing the fields of a union.

@rustbot modify labels: T-doc,C-enhancement
2020-07-13 22:23:03 -07:00
Lzu Tao
879afd5116 process_unix: prefer i32::*_be_bytes over manually shifting bytes 2020-07-12 16:47:15 +00:00
Lzu Tao
e31898b024 Reduce unsafe scope 2020-07-12 14:51:04 +00:00
Lzu Tao
0281a05f66 Prefer empty OsStr over unsafe cast from [u8] 2020-07-12 14:51:04 +00:00
Lzu Tao
b1d6798899 Rewrite parse_two_comps 2020-07-12 14:51:04 +00:00
Lzu Tao
27a966a149 Make use of slice::strip_prefix and slice pattern 2020-07-12 14:51:04 +00:00
Lzu Tao
90a7d2470a Make is_valid_drive_letter function 2020-07-12 14:51:04 +00:00
Lzu Tao
0ff820cb62 Move constants to top file 2020-07-12 14:51:04 +00:00
Lzu Tao
1e05e09fe9 Remove the useless indentation 2020-07-12 14:51:04 +00:00
Ralf Jung
7dc388654d adjust remaining targets 2020-07-12 11:46:42 +02:00
Ralf Jung
8082fb988a rename fast_thread_local -> thread_local_dtor; thread_local -> thread_local_key 2020-07-12 11:46:42 +02:00
Lzu Tao
9a8b516de0 Sorting feature attributes in std 2020-07-12 09:40:12 +00:00
Manish Goregaokar
d2f8c30951
Rollup merge of #74127 - tamird:allowlist, r=oli-obk
Avoid "whitelist"

Other terms are more inclusive and precise.
2020-07-10 23:26:47 -07:00
Manish Goregaokar
427ef98bc3
Rollup merge of #74076 - sunfishcode:wasi-fileext-newmethods, r=alexcrichton
Add `read_exact_at` and `write_all_at` to WASI's `FileExt`

This adds `read_exact_at` and `write_all_at` to WASI's `FileExt`,
similar to the Unix versions of the same names.
2020-07-10 23:26:34 -07:00
Mohsen Zohrevandi
1466598e19 Address review comments 2020-07-10 19:57:31 -07:00
Tamir Duberstein
62cf767a4a
Avoid "whitelist"
Other terms are more inclusive and precise.
2020-07-10 07:39:28 -04:00
Dan Gohman
58fc61b79c Make WASI's FileExt's read_at/write_at consistent with other targets.
Rename the existing read_at/write_at to read_vectored_at/write_vectored_at,
for consistency with libstd's read_vectored/write_vectored. And,
introduce new read_at/write_at functions which take a single buffer,
similar to all other targets which provide these functions, so this will
make it easier for applications to share code between WASI and other
targets.

Note that WASI's FileExt is currently unstable.
2020-07-07 16:04:52 -07:00
Dan Gohman
653c091262 Add read_exact_at and write_all_at to WASI's FileExt
This adds `read_exact_at` and `write_all_at` to WASI's `FileExt`,
similar to the Unix versions of the same names.
2020-07-07 16:04:52 -07:00
bors
8ac1525e09 Auto merge of #74006 - euclio:sys-unix-static-mut, r=oli-obk
libstd: remove some mutable statics in sys::unix

My understanding is that this achieves the same behavior and performance with safe code.
2020-07-07 19:35:26 +00:00
Yuki Okushi
85072e3303
Update reference to CONTRIBUTING.md 2020-07-07 17:12:22 +09:00
Manish Goregaokar
86f8c5350f
Rollup merge of #74074 - sunfishcode:windows-openoptionsext-return-type, r=LukasKalbertodt
Fix the return type of Windows' `OpenOptionsExt::security_qos_flags`.

This adjusts the return type of Windows' `OpenOptionsExt::security_qos_flags`
to be consistent with the other functions in the trait.
2020-07-06 17:45:32 -07:00
Manish Goregaokar
ca5b64d2d2
Rollup merge of #73962 - ryr3:unsafe_tcp, r=LukasKalbertodt
libstd/net/tcp.rs: #![deny(unsafe_op_in_unsafe_fn)]

Enclose unsafe operations in unsafe blocks for net/tcp.rs. Fixes part of #73904.
2020-07-06 17:45:24 -07:00
Manish Goregaokar
218d96ed6b
Rollup merge of #70563 - GuillaumeGomez:page-hash-handling, r=ollie27,kinnison
[rustdoc] Page hash handling

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

A good example to see the change is to use this URL: https://doc.rust-lang.org/nightly/std/string/struct.String.html#from_iter.v-3

After the change, it actually goes to the target element (and change the page hash to something more clear for the users).

r? @kinnison

cc @ollie27
2020-07-06 17:45:15 -07:00
Andy Russell
792f2dedd7
libstd: remove some mutable statics in sys::unix 2020-07-06 20:13:54 -04:00
Dan Gohman
6196eaa0b1 Fix the return type of Windows' OpenOptionsExt::security_qos_flags.
This adjusts the return type of Windows' `OpenOptionsExt::security_qos_flags`
to be consistent with the other functions in the trait.
2020-07-05 16:04:27 -07:00
Manish Goregaokar
9d0ca3806f
Rollup merge of #73925 - eduardosm:improve-pr72617-comments, r=RalfJung
Improve comments from #72617, as suggested by RalfJung

r? @RalfJung
2020-07-03 17:17:01 -07:00
Eduardo Sánchez Muñoz
0f1adc8ec8 Further improve comments in libstd/panicking.rs. 2020-07-02 13:47:19 +02:00
Guillaume Gomez
af29620277 Fix links 2020-07-02 13:19:04 +02:00
Yashhwanth Ram
8dc1e42515 libstd/net/tcp.rs: #![deny(unsafe_op_in_unsafe_fn)]
Enclose unsafe operations in unsafe blocks
2020-07-02 11:33:37 +05:30
Manish Goregaokar
441f04b56b
Rollup merge of #73909 - eltonlaw:unsafe-libstd-fs-rs, r=sfackler
`#[deny(unsafe_op_in_unsafe_fn)]` in libstd/fs.rs

The `libstd/fs.rs` part of https://github.com/rust-lang/rust/issues/73904 . Wraps the two calls to an unsafe fn `Initializer::nop()` in an `unsafe` block.

Followed instructions in parent issue, ran `./x.py check src/libstd/` after adding the lint and two warnings were given. After adding these changes, those disappear.
2020-07-01 20:36:06 -07:00