Commit Graph

14317 Commits

Author SHA1 Message Date
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
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
Yuki Okushi 7d27c63114 Stabilize std::io::Buf{Reader, Writer}::capacity 2020-06-03 04:32:22 +09:00
Alexis Bourget d8cc2c1e4f Add a warning about infinite reading in read_(until|line) 2020-06-01 16:19:10 +02:00
bors f6072cab13 Auto merge of #72813 - RalfJung:rollup-4ko6q8j, r=RalfJung
Rollup of 5 pull requests

Successful merges:

 - #72683 (from_u32_unchecked: check validity, and fix UB in Wtf8)
 - #72715 (Account for trailing comma when suggesting `where` clauses)
 - #72745 (generalize Borrow<[T]> for Interned<'tcx, List<T>>)
 - #72749 (Update stdarch submodule to latest head)
 - #72781 (Use `LocalDefId` instead of `NodeId` in `resolve_str_path_error`)

Failed merges:

r? @ghost
2020-05-31 13:39:05 +00:00
Ralf Jung 3bbb475f00 Rollup merge of #72683 - RalfJung:char-debug-check, r=Mark-Simulacrum
from_u32_unchecked: check validity, and fix UB in Wtf8

Fixes https://github.com/rust-lang/rust/issues/72760
2020-05-31 12:03:22 +02:00
bors 4b1f86adbe Auto merge of #72759 - alexcrichton:update-compiler-builtins, r=Mark-Simulacrum
Update compiler-builtins

Pulls in a fix for #72758, more details on the linked issue.

[Crate changes included here][changes]

[changes]: https://github.com/rust-lang/compiler-builtins/compare/0.1.28...0.1.31

Closes #72758
2020-05-31 09:54:44 +00:00
Poliorcetics 4bae9e5937 Remove the fn main() in code example 2020-05-30 19:18:05 +02:00
Poliorcetics b0e524d444 Apply suggestions from code review
Fix suggestions from review.

Co-authored-by: Bastian Kauschke <bastian_kauschke@hotmail.de>
2020-05-30 18:58:54 +02:00
Ralf Jung 0fb6e63c04 encode_utf8_raw is not always valid UTF-8; clarify comments 2020-05-30 17:27:34 +02:00