Commit Graph

12482 Commits

Author SHA1 Message Date
Mark Rousskov
28f8cb585a Rollup merge of #52656 - jD91mZM2:stablize-uds, r=alexcrichton
Stablize Redox Unix Sockets

I don't know if I did this correctly, but I basically spammed the `#[stable]` attribute everywhere :^)
2018-07-24 16:43:48 -06:00
bors
a2af8667b1 Auto merge of #52646 - ljedrz:single_char_pattern, r=michaelwoerister
Change single char str patterns to chars

A `char` is faster.
2018-07-24 08:24:11 +00:00
Colin Wallace
4f3ab4986e libstd: Prefer Option::map/etc over match where applicable 2018-07-23 22:00:51 -07:00
jD91mZM2
1581971635 Stablize Redox Unix Sockets 2018-07-24 06:25:29 +02:00
kennytm
a98c19e24b Rollup merge of #52548 - tko:cursor-doc, r=sfackler
Cursor: update docs to clarify Cursor only works with in-memory buffers

Reduce misconceptions about Cursor being more general than it really is.

Fixes: #52470
2018-07-24 09:49:50 +08:00
Markus Wein
ed5edcb318 Seperate summaries from rest of the comment 2018-07-23 15:38:15 +02:00
ljedrz
49c8ba91c7 Change single char str patterns to chars 2018-07-23 15:32:57 +02:00
kennytm
1208944ccb Rollup merge of #52582 - felixrabe:patch-2, r=pietroalbini
Typo
2018-07-23 01:00:05 +08:00
kennytm
8e6971dd2d Rollup merge of #52581 - petrochenkov:bmacrodoc, r=alexcrichton
Avoid using `#[macro_export]` for documenting builtin macros

Use a special `rustc_*` attribute instead.

cc https://github.com/rust-lang/rust/pull/52234
2018-07-23 01:00:03 +08:00
bors
3d51086303 Auto merge of #52394 - estebank:println, r=oli-obk
Improve suggestion for missing fmt str in println

Avoid using `concat!(fmt, "\n")` to improve the diagnostics being
emitted when the first `println!()` argument isn't a formatting string
literal.

Fix #52347.
2018-07-22 06:52:48 +00:00
Esteban Küber
3c817259e3 fix tidy ~ again 2018-07-21 19:19:56 -07:00
Esteban Küber
6aa17a3c68 Don't use the new eprintln for stage0 and stage1
I'm not entirely sure why (or if) this is needed.
2018-07-21 17:59:17 -07:00
Esteban Küber
a7a68370a7 Change eprintln!()
Address #30143 as well. `writeln!()` hasn't been changed.
2018-07-21 15:56:37 -07:00
Esteban Küber
00d500052c Gate format_args_nll behind feature flag 2018-07-21 15:50:46 -07:00
Felix Rabe
c581b96f39 Typo 2018-07-21 11:49:52 +02:00
bors
17eb392cef Auto merge of #52535 - alexcrichton:update-stdsimd, r=Mark-Simulacrum
Update stdsimd to undo an accidental stabilization

Closes #52403
2018-07-21 06:26:18 +00:00
Alex Crichton
d77defcca1 Update stdsimd to undo an accidental stabilization
Closes #52403
2018-07-20 22:34:09 -07:00
Vadim Petrochenkov
a18be44d63 Avoid using #[macro_export] for documenting builtin macros 2018-07-21 02:49:34 +03:00
Esteban Küber
154dee2dcc rework println 2018-07-19 23:18:07 -07:00
Esteban Küber
e613bfb701 Same change as println for eprintln 2018-07-19 23:18:07 -07:00
Esteban Küber
fbce952193 review comments: modify note wording and change println
- Don't print the newline on its own to avoid the possibility of
  printing it out of order due to `stdout` locking.
- Modify wording of `concat!()` with non-literals to not mislead into
  believing that only `&str` literals are accepted.
- Add test for `concat!()` with non-literals.
2018-07-19 23:18:07 -07:00
Esteban Küber
f53c145ef1 Improve suggestion for missing fmt str in println
Avoid using `concat!(fmt, "\n")` to improve the diagnostics being
emitted when the first `println!()` argument isn't a formatting string
literal.
2018-07-19 23:18:07 -07:00
bors
bc14d71622 Auto merge of #52349 - RalfJung:once, r=alexcrichton
sync::Once use release-acquire access modes

Nothing here makes a case distinction like "this happened before OR after that". All we need is to get happens-before edges whenever we see that the state/signal has been changed. Release-acquire is good enough for that.
2018-07-20 02:52:19 +00:00
Tommi Komulainen
8b80c9f5a1 Cursor: update docs to clarify Cursor only works with in-memory buffers
Reduce misconceptions about Cursor being more general than it really is.

Fixes: #52470
2018-07-19 21:11:51 +02:00
kennytm
9fe86e566d Rollup merge of #51628 - euclio:line-writer, r=frewsxcv
use checked write in `LineWriter` example

The example was wrong because it didn't check the return value of
`write()`, and it didn't flush the buffer before comparing the contents
of the file.

Fixes #51621.
2018-07-19 00:59:47 +08:00
Ralf Jung
3e1254d956 sync::Once: Use Acquire on the hot path, and explain why we don't use it elsewhere 2018-07-17 20:51:31 +02:00
Felix Rabe
a65d535c5f Fix doc comment: use ? instead of .unwrap() 2018-07-17 14:18:58 +02:00
Markus Wein
b81ee0b370 Document From conversions for CString and CStr 2018-07-16 20:37:28 +02:00
Markus Wein
acdafa0fb1 Document From conversions for OsString and OsStr 2018-07-16 20:37:15 +02:00
kennytm
dad4efb961 Rollup merge of #52156 - zajlerke:update-deprecation-notice, r=Kimundi
Update std::ascii::ASCIIExt deprecation notes

Fixes #52085
2018-07-14 02:56:41 +08:00
Tatsuyuki Ishi
72e2c00af4 Fix redox libstd leftover 2018-07-13 11:29:51 +02:00
bors
8b48b247dc Auto merge of #52281 - cramertj:fast-tls, r=alexcrichton
Use fast TLS on Fuchsia

I'm not sure why Fuchsia was separated here, but we provide these symbols, and tests are passing in QEMU with this change. cc @raphlinus.

r? @alexcrichton
2018-07-13 08:00:16 +00:00
kennytm
a7c2c68b13 Rollup merge of #52298 - RalfJung:dirs, r=Mark-Simulacrum
make reference to dirs crate clickable in terminals

Currently I have to copy-paste the link; with this change I can just click it right in my terminal window.
2018-07-12 20:25:33 +08:00
kennytm
eb1728b585 Rollup merge of #52277 - kraai:patch-2, r=kennytm
Uncapitalize "If"
2018-07-12 20:25:29 +08:00
kennytm
b317ab1bc5 Rollup merge of #51912 - mbrubeck:more_box_slice_clone, r=alexcrichton
impl Clone for Box<CStr>, Box<OsStr>, Box<Path>

Implements #51908.
2018-07-12 20:25:25 +08:00
Ralf Jung
e9a88eaaf9 make reference to dirs crate clickable in terminals 2018-07-12 12:48:10 +02:00
Taylor Cramer
a6fa656555 Use fast TLS on Fuchsia 2018-07-11 18:11:53 -07:00
Matt Kraai
e488cba678 Uncapitalize "If" 2018-07-11 17:19:41 -07:00
Andy Russell
c12a757424 simplify assertions 2018-07-11 14:39:22 -04:00
Mark Rousskov
b41105ba26 Rollup merge of #52239 - CAD97:patch-1, r=alexcrichton
Remove sync::Once::call_once 'static bound

See https://internals.rust-lang.org/t/sync-once-per-instance/7918 for more context.

Suggested r is @alexcrichton, the one who added the `'static` bound back in 2014. I don't want to officially r? though, if the system would even let me. I'd rather let the system choose the appropriate member since it knows more than I do.

`git blame` history for `sync::Once::call_once`'s signature:

- [std: Second pass stabilization of sync](f3a7ec7028) (Dec 2014)

    ```diff
    -    pub fn doit<F>(&'static self, f: F) where F: FnOnce() {
    +    #[stable]
    +    pub fn call_once<F>(&'static self, f: F) where F: FnOnce() {
    ```

- [libstd: use unboxed closures](cdbb3ca9b7) (Dec 2014)

    ```diff
    -    pub fn doit(&'static self, f: ||) {
    +    pub fn doit<F>(&'static self, f: F) where F: FnOnce() {
    ```

- [std: Rewrite the `sync` module](71d4e77db8) (Nov 2014)

    ```diff
    -    pub fn doit(&self, f: ||) {
    +    pub fn doit(&'static self, f: ||) {
    ```

    > ```text
    >  The second layer is the layer provided by `std::sync` which is intended to be
    >  the thinnest possible layer on top of `sys_common` which is entirely safe to
    >  use. There are a few concerns which need to be addressed when making these
    >  system primitives safe:
    >
    >    * Once used, the OS primitives can never be **moved**. This means that they
    >      essentially need to have a stable address. The static primitives use
    >      `&'static self` to enforce this, and the non-static primitives all use a
    >      `Box` to provide this guarantee.
    > ```

The author of this diff is @alexcrichton. `sync::Once` now contains only a pointer to (privately hidden) `Waiter`s, which are all stack-allocated. The `'static` bound to `sync::Once` is thus unnecessary to guarantee that any OS primitives are non-relocatable.

As the `'static` bound is not required for `sync::Once`'s operation, removing it is strictly more useful. As an example, it allows attaching a one-time operation to instances rather than only to global singletons.
2018-07-11 12:38:40 -06:00
bors
66787e0524 Auto merge of #51553 - jD91mZM2:uds, r=sfackler
Unix sockets on redox

This is done using the ipcd daemon. It's not exactly like unix sockets because there is not actually a physical file for the path, but it's close enough for a basic implementation :)
This allows mio-uds and tokio-uds to work with a few modifications as well, which is exciting!
2018-07-11 14:15:01 +00:00
ljedrz
1915cd1dc2 Add missing dyn in tests 2018-07-11 09:11:39 +02:00
Christopher Durham
0f3f292b4c remove sync::Once::call_once 'static
- [std: Rewrite the `sync` module71d4e77db8) (Nov 2014)

    ```diff
    -    pub fn doit(&self, f: ||) {
    +    pub fn doit(&'static self, f: ||) {
    ```

    > ```text
    >  The second layer is the layer provided by `std::sync` which is intended to be
    >  the thinnest possible layer on top of `sys_common` which is entirely safe to
    >  use. There are a few concerns which need to be addressed when making these
    >  system primitives safe:
    >
    >    * Once used, the OS primitives can never be **moved**. This means that they
    >      essentially need to have a stable address. The static primitives use
    >      `&'static self` to enforce this, and the non-static primitives all use a
    >      `Box` to provide this guarantee.
    > ```

The author of this diff is @alexcrichton. `sync::Once` contains only a pointer to (privately hidden) `Waiter`s, which are all stack-allocated. The `'static` bound to `sync::Once` is thus unnecessary to guarantee that any OS primitives are non-relocatable.

See https://internals.rust-lang.org/t/sync-once-per-instance/7918 for more context.
2018-07-10 22:47:59 -04:00
ljedrz
b29a6fbabc Add missing dyn for cloudabi, redox, unix and wasm 2018-07-10 20:52:29 +02:00
ljedrz
560d8079ec Deny bare trait objects in src/libstd. 2018-07-10 20:35:36 +02:00
Simon Sapin
239ec7d2dc Implement #[alloc_error_handler]
This to-be-stable attribute is equivalent to `#[lang = "oom"]`.
It is required when using the alloc crate without the std crate.
It is called by `handle_alloc_error`, which is in turned called
by "infallible" allocations APIs such as `Vec::push`.
2018-07-09 23:13:24 +02:00
Simon Sapin
620599e886 Remove extern on the pub fn rust_oom lang item in libstd, to match ABI of the declaration in liballoc
This turned out to be important on Windows.
Calling `handle_alloc_error(Layout:🆕:<[u8; 42]>())` caused:

```
Exception thrown at 0x00007FF7C70DC399 in a.exe: 0xC0000005:
Access violation reading location 0x000000000000002A.
```

0x2A equals 42, so it looks like the `Layout::size` field of type `usize`
was interpreted as a pointer to read from.
2018-07-09 23:13:24 +02:00
bors
c6807bb1b2 Auto merge of #52159 - SimonSapin:alloc-prelude, r=alexcrichton
Add the `alloc::prelude` module

It contains the re-exports that are in `std::prelude::v1` but not in `core::prelude::v1`.

Calling it prelude is somewhat of a misnomer since (unlike those modules in `std` or `core`) its contents are never implicitly imported in modules. Rather it is intended to be used with an explicit glob import like `use alloc::prelude::*;`. However there is precedent for the same misnomer with `std::io::prelude`, for example.

This new module is unstable with the same feature name as the `alloc` care. They are proposed for stabilization together in RFC https://github.com/rust-lang/rfcs/pull/2480.
2018-07-09 14:29:59 +00:00
Andy Russell
a1e1b5c3fb rework LineWriter example
The original example didn't check the return value of `write()`, didn't
flush the writer, and didn't properly demonstrate the buffering.

Fixes #51621.
2018-07-08 17:46:23 -04:00
jD91mZM2
0b56e7f1a9 Delete leftover files 2018-07-08 20:48:11 +02:00