Commit graph

14325 commits

Author SHA1 Message Date
Manish Goregaokar
e1549786ff
Rollup merge of #72836 - poliorcetics:std-time-os-specificities, r=shepmaster
Complete the std::time documentation to warn about the inconsistencies between OS

Fixes #48980.

I put the new documentation in `src/libstd/time.rs` at the module-level because it affects all types, even the one that are not directly system dependents if they are used with affected types, but there may be a better place for it.
2020-06-18 15:20:47 -07:00
Manish Goregaokar
49ab0cab61
Rollup merge of #72279 - RalfJung:raw-ref-macros, r=nikomatsakis
add raw_ref macros

In https://github.com/rust-lang/rust/issues/64490, various people were in favor of exposing `&raw` as a macro first before making the actual syntax stable. So this PR (unstably) introduces those macros.

I'll create the tracking issue if we're okay moving forward with this.
2020-06-18 15:20:39 -07:00
Dylan DPC
3c437e5733
Rollup merge of #73389 - lzutao:from, r=kennytm
Use `Ipv4Addr::from<[u8; 4]>` when possible

Resolve this comment: https://github.com/rust-lang/rust/pull/73331#discussion_r440098369
2020-06-16 15:08:47 +02:00
Dylan DPC
94105c2da3
Rollup merge of #73373 - lzutao:bug-trackcaller, r=Amanieu
Use track caller for bug! macro
2020-06-16 15:08:42 +02:00
Lzu Tao
0e6c333ca6 Use Ipv4Addr::from<[u8; 4]> when possible 2020-06-16 01:54:17 +00:00
Alexis Bourget
9e510085ec Complete the std::time documentation to warn about the inconsistencies between OS 2020-06-15 15:19:02 +02:00
Lzu Tao
64a6de25ea Join mutiple lines if it is more readable 2020-06-15 13:15:47 +00:00
Ralf Jung
54bd077cd6
Rollup merge of #73331 - hermitcore:listen, r=kennytm
extend network support for HermitCore

- add basic support of TcpListerner for HermitCore
- revise TcpStream to support peer_addr
2020-06-15 12:01:14 +02:00
Ralf Jung
202499fb43
Rollup merge of #73304 - dtolnay:socketeq, r=Mark-Simulacrum
Revert heterogeneous SocketAddr PartialEq impls

Originally added in #72239.

These lead to inference regressions (mostly in tests) in code that looks like:

```rust
let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
```

That compiles as of stable 1.44.0 but fails in beta with:

```console
error[E0284]: type annotations needed
 --> src/main.rs:3:41
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
  |                                         ^^^^^ cannot infer type for type parameter `F` declared on the associated function `parse`
  |
  = note: cannot satisfy `<_ as std::str::FromStr>::Err == _`
help: consider specifying the type argument in the method call
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse::<F>().unwrap());
  |
```

Closes #73242.
2020-06-15 12:01:13 +02:00
Ralf Jung
ec6fe42dd4
Rollup merge of #73139 - poliorcetics:cstring-from-vec-with-nul, r=dtolnay
Add methods to go from a nul-terminated Vec<u8> to a CString

Fixes #73100.

Doc tests have been written and the documentation on the error type
updated too.

I used `#[stable(feature = "cstring_from_vec_with_nul", since = "1.46.0")]` but I don't know if the version is correct.
2020-06-15 12:01:09 +02:00
Ralf Jung
7c8b9413b8
Rollup merge of #73104 - poliorcetics:explicit-mutex-drop-example, r=dtolnay
Example about explicit mutex dropping

Fixes #67457.

Following the remarks made in #73074, I added an example on the main `Mutex` type, with a situation where there is mutable data and a computation result.

In my testing it is effectively needed to explicitly drop the lock, else it deadlocks.

r? @dtolnay because you were the one to review the previous PR.
2020-06-15 12:01:07 +02:00
Stefan Lankes
76f1581a25 remove obsolete , to pass the format check 2020-06-15 10:05:14 +02:00
Stefan Lankes
a8e3746e91 add comment about the usage of Arc 2020-06-15 09:29:32 +02:00
Stefan Lankes
6c983a7335 use Ipv6Addr::from to build the IPv6 address 2020-06-15 08:53:58 +02:00
Stefan Lankes
9c9f21fb23 Revert "simplify conversion to IpAddr::V6"
This reverts commit d221ffc68e.
2020-06-15 08:43:44 +02:00
Stefan Lankes
aa53a037a2 Revert "changes to pass the format check"
This reverts commit 9d596b50f1.
2020-06-15 08:43:08 +02:00
Stefan Lankes
810ba39563 remove obsolete line 2020-06-15 08:07:56 +02:00
Stefan Lankes
9d596b50f1 changes to pass the format check 2020-06-15 07:28:53 +02:00
Stefan Lankes
d221ffc68e simplify conversion to IpAddr::V6 2020-06-14 23:43:54 +02:00
Alexis Bourget
47cc5cca7e Update to use the new error type and correctly compile the doc tests 2020-06-14 23:22:36 +02:00
Alexis Bourget
685f06612d Add a new error type for the new method 2020-06-14 23:21:40 +02:00
Alexis Bourget
5f4eb27a0d Removing the TryFrom impl 2020-06-14 19:31:11 +02:00
Stefan Lankes
fd86a84720 use latest interface to HermitCore 2020-06-14 00:39:14 +02:00
Stefan Lankes
c99116afe3 remove unused function 2020-06-14 00:38:31 +02:00
Stefan Lankes
71d41d9e9f add TcpListener support for HermitCore
Add basic support of TcpListerner for HermitCore.
In addition, revise TcpStream to support peer_addr.
2020-06-13 20:51:00 +02:00
David Tolnay
204c236ad5
Add test for comparing SocketAddr with inferred right-hand side 2020-06-13 10:21:11 -07:00
David Tolnay
c010e711ca
Rewrap comments in Mutex example 2020-06-13 10:11:02 -07:00
Poliorcetics
34b3ff06e1
Clarify the scope-related explanation
Based on the review made by dtolnay.
2020-06-13 18:43:37 +02:00
Poliorcetics
f747073fc1
Apply suggestions from code review
Co-authored-by: David Tolnay <dtolnay@gmail.com>
2020-06-13 18:41:01 +02:00
David Tolnay
c45231ca55
Revert heterogeneous SocketAddr PartialEq impls
These lead to inference regressions (mostly in tests) in code that looks
like:

    let socket = std::net::SocketAddrV4::new(std::net::Ipv4Addr::new(127, 0, 0, 1), 8080);
    assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());

That compiles as of stable 1.44.0 but fails in beta with:

    error[E0284]: type annotations needed
     --> src/main.rs:3:41
      |
    3 |     assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
      |                                         ^^^^^ cannot infer type for type parameter `F` declared on the associated function `parse`
      |
      = note: cannot satisfy `<_ as std::str::FromStr>::Err == _`
    help: consider specifying the type argument in the method call
      |
    3 |     assert_eq!(socket, "127.0.0.1:8080".parse::<F>().unwrap());
      |
2020-06-12 22:13:55 -07:00
Ralf Jung
f0d2e78d39 add raw_ref macros 2020-06-12 19:10:58 +02:00
Alexis Bourget
6b955268d7 Fix the link in the TryFrom impl 2020-06-11 16:55:03 +02:00
Alexis Bourget
7f3bb398fa Add a TryFrom<Vec<u8>> impl that mirror from_vec_with_nul 2020-06-11 00:36:55 +02:00
Lzu Tao
fff822fead Migrate to numeric associated consts 2020-06-10 01:35:47 +00:00
Alexis Bourget
1312d30a6a Remove a lot of unecessary/duplicated comments 2020-06-09 22:40:30 +02:00
Alexis Bourget
b03164e667 Move to unstable, linking the issue 2020-06-09 22:15:05 +02:00
bors
fd4b177aab Auto merge of #72655 - jethrogb:sgx-lvi-hardening, r=petrochenkov
Enable LVI hardening for x86_64-fortanix-unknown-sgx

This implements mitigations for the Load Value Injection vulnerability (CVE-2020-0551) for the `x86_64-fortanix-unknown-sgx` target by enabling new LLVM passes. More information about LVI and mitigations may be found at https://software.intel.com/security-software-guidance/insights/deep-dive-load-value-injection.

This PR unconditionally enables the mitigations for `x86_64-fortanix-unknown-sgx` since there is no available hardware that doesn't require the mitigations. This may be reconsidered in the future.

* [x] This depends on https://github.com/rust-lang/compiler-builtins/pull/359/
2020-06-08 20:10:07 +00:00
Alexis Bourget
496818ccd7 Add methods to go from a nul-terminated Vec<u8> to a CString, checked and unchecked.
Doc tests have been written and the documentation on the error type
updated too.
2020-06-08 18:38:48 +02:00
Poliorcetics
fdef1a5915
Simply use drop instead of std::mem::drop
Co-authored-by: LeSeulArtichaut <leseulartichaut@gmail.com>
2020-06-08 16:29:47 +02:00
Ralf Jung
824ea6bf2d
Rollup merge of #72963 - poliorcetics:cstring-from-raw, r=dtolnay
Cstring `from_raw` and `into_raw` safety precisions

Fixes #48525.
Fixes #68456.

This issue had two points:

- The one about `from_raw` has been addressed (I hope).
- The other one, about `into_raw`, has only been partially fixed.

About `into_raw`: the idea was to:

> steer users away from using the pattern of CString::{into_raw,from_raw} when interfacing with C APIs that may change the effective length of the string by writing interior NULs or erasing the final NUL

I tried making a `Vec<c_char>` like suggested but my current solution feels very unsafe and *hacky* to me (most notably the type cast), I included it here to make it available for discussion:

```rust
fn main() {
    use std::os::raw::c_char;

    let v = String::from("abc")
        .bytes()
        // From u8 to i8,
        // I feel like it will be a problem for values of u8 > 255
        .map(|c| c as c_char)
        .collect::<Vec<_>>();

    dbg!(v);
}
```
2020-06-08 09:55:30 +02:00
Ralf Jung
89d8979c9a
Rollup merge of #72761 - poliorcetics:use-keyword-doc, r=Dylan-DPC
Added the documentation for the 'use' keyword

This is a partial fix of #34601.

I heavily inspired myself from the Reference on the `use` keyword.

I checked the links when compiling the documentation, they should be ok.

I also added an example for the wildcard `*` in the case of types, because it's behaviour is not *import everything* like one might think at first.
2020-06-08 09:55:24 +02:00
Alexis Bourget
9c8f881ccd Improved the example to work with mutable data, providing a reason for the mutex holding it 2020-06-07 23:42:55 +02:00
Alexis Bourget
95c4899e55 Added an example where explicitly dropping a lock is necessary/a good idea. 2020-06-07 23:36:07 +02:00
Jethro Beekman
ea48f2e4da Enable LVI hardening for x86_64-fortanix-unknown-sgx 2020-06-07 12:12:30 +02:00
bors
84ec8238b1 Auto merge of #72957 - Mark-Simulacrum:bootstrap-bump, r=sfackler
Bump bootstrap compiler to 1.45

Pretty standard update.
2020-06-05 11:11:26 +00:00
Brian Cain
d0ee0dc9de Hexagon libstd: fix typo for c_ulonglong 2020-06-03 22:47:48 -05:00
Alexis Bourget
87abe174c4 Added a warning to CString::into_raw too 2020-06-03 23:55:41 +02:00
Alexis Bourget
00a7b56bab Added the documentation about length to CString::from_raw 2020-06-03 23:32:26 +02:00
Mark Rousskov
7139342249 Bump to 1.46 2020-06-03 15:27:51 -04:00
Dylan DPC
ec2826cc2e
Rollup merge of #72924 - JohnTitor:stabilize-buf-capacity, r=shepmaster
Stabilize `std::io::Buf{Reader, Writer}::capacity`

Closes #68833
FCP is done here: https://github.com/rust-lang/rust/issues/68833#issuecomment-637596083
2020-06-03 18:05:41 +02:00