Commit graph

9609 commits

Author SHA1 Message Date
bors
8991ffc303 Auto merge of #36404 - christopherdumas:master, r=GuillaumeGomez
Documentation change to macros.rs for `includes!`

I'm not sure if this documentation is clear or extensive enough, but this is just to get started on the problem, fixes issue #36387.
2016-10-02 08:32:07 -07:00
bors
5045d4e396 Auto merge of #36824 - kali:master, r=alexcrichton
SO_NOSIGPIPE and MSG_NOSIGNAL (rebased #36426)

I'm not sure what happened when I pushed a rebased branch on #36426 , github closed it...
2016-10-01 01:19:47 -07:00
bors
8b00355119 Auto merge of #36339 - brson:emscripten-new, r=alexcrichton
Working asmjs and wasm targets

This patch set results in a working standard library for the asmjs-unknown-emscripten and wasm32-unknown-emscripten targets. It is based on the work of @badboy and @rschulman.

It does a few things:

- Updates LLVM with the emscripten [fastcomp](https://github.com/rust-lang/llvm/pull/50) patches, which include the pnacl IR legalizer and the asm.js backend. This patch is thought not to have any significant effect on existing targets.
- Teaches rustbuild to correctly link C code with emscripten
- Updates gcc-rs to work correctly with emscripten
- Teaches rustbuild to run crate tests for emscripten with node
- Modifies Thread::new to return an error on emscripten, to facilitate debugging a common failure mode
- Modifies libtest to run in single-threaded mode for emscripten
- Ignores a host of tests that don't work yet, mostly dealing with threads and I/O
- Updates libc with wasm32 definitions (presently the same as asmjs)
- Adds a wasm32-unknown-emscripten target that feeds the output of LLVM's asmjs backend through emcc to generate wasm

Notes and caveats:

- This is only known to work with `--enable-rustbuild`.
- The wasm32 target can't be tested correctly yet because of issues in compiletest and limitations in node https://github.com/kripken/emscripten/issues/4542, but hello.rs does seem to work when run on node via the binaryen interpreter
- This requires an up to date installation of the emscripten sdk from its incoming branch
- Unwinding is very broken
- When enabling the emscripten targets jemalloc is disabled for all targets, which results in test failures for the host

Next steps are to fix the jemalloc issue, start building the two emscripten targets on the auto builders, then start producing nightlies.

https://github.com/rust-lang/rust/issues/36317 tracks work on this.

Fixes https://github.com/rust-lang/rust/issues/36515
Fixes https://github.com/rust-lang/rust/issues/36515
Fixes https://github.com/rust-lang/rust/issues/36356
2016-09-30 19:00:36 -07:00
Brian Anderson
d997a6291f Call emcc with ERROR_ON_UNDEFINED_SYMBOLS 2016-09-30 14:02:57 -07:00
Brian Anderson
096670ca41 Ignore various entire test modules on emscripten 2016-09-30 14:02:56 -07:00
Brian Anderson
a4c3288129 Change the sigs of set_print/set_panic to allow restoring the default objects 2016-09-30 14:02:53 -07:00
Brian Anderson
183b2ddce4 Ignore entire test modules on emscripten instead of individual tests 2016-09-30 14:02:52 -07:00
Brian Anderson
9c4a01ee9e Ignore lots and lots of std tests on emscripten 2016-09-30 14:02:48 -07:00
Brian Anderson
b8b50f0eda Preliminary wasm32 support 2016-09-30 14:02:45 -07:00
Steve Klabnik
ebd1ad3fbb Rollup merge of #36851 - tmiasko:fix-read-until-docs, r=bluss
Fix BufRead::read_until documentation.

Second paragraph already fully explains what happens when EOF is
encountered. The third paragraph (removed one) is spurious and
misleading.
2016-09-30 13:44:48 -04:00
Steve Klabnik
e3e5f1fea3 Rollup merge of #36841 - GuillaumeGomez:process_doc, r=steveklabnik
Improve process module doc a bit

r? @steveklabnik
2016-09-30 13:44:47 -04:00
Steve Klabnik
a6f0a41b14 Rollup merge of #36833 - tmiasko:system-time-error, r=steveklabnik
Reword description of SystemTimeError.

Repalce timestamp with a system time, to be more consistent with
remaining documentation.

r? @steveklabnik
2016-09-30 13:44:47 -04:00
Steve Klabnik
dcec48dc13 Rollup merge of #36535 - GuillaumeGomez:macro_url, r=steveklabnik
Update to new macro url syntax

r? @steveklabnik
2016-09-30 13:44:46 -04:00
Tomasz Miąsko
1e8f692461 Fix BufRead::{read_until, read_line} documentation. 2016-09-30 11:58:10 +02:00
bors
7660bdf70a Auto merge of #36557 - sfackler:fix-hashdos-docs, r=alexcrichton
Clean up hasher discussion on HashMap

* We never want to make guarantees about protecting against attacks.
* "True randomness" is not the right terminology to be using in this
    context.
* There is significantly more nuance to the performance of SipHash than
    "somewhat slow".

r? @steveklabnik

Follow up to discussion on #35371
2016-09-29 20:25:45 -07:00
Guillaume Gomez
3176ba42e2 Improve process module doc a bit 2016-09-30 00:10:42 +02:00
Steven Fackler
aaf32aa4fe Mention FNV 2016-09-29 21:12:58 +02:00
bors
289f3a4ca7 Auto merge of #36377 - tormol:encode_utf, r=alexcrichton
Change encode_utf{8,16}() to write to a buffer and panic if it's too small

cc #27784

Should the "A buffer that's too small" examples be removed and replaced by tests?
2016-09-29 11:20:02 -07:00
Tomasz Miąsko
01a57a2faa Reword description of SystemTimeError.
Repalce timestamp with a system time, to be more consistent with
remaining documentation.
2016-09-29 20:08:46 +02:00
Jonathan Turner
02c050644b Rollup merge of #36811 - brson:bootstrap, r=alexcrichton
Update bootstrap compiler
2016-09-28 20:21:52 -07:00
Jonathan Turner
8f2c000506 Rollup merge of #36741 - matklad:no-flacky-test, r=alexcrichton
Remove CString drop test.

The test relies on the undefined behavior, and so may fail in some
circumstances. This can be worked around by stubbing a memory allocator
in the test, but it is a bit of work, and LLVM could still theoretically
eliminate the write of the zero byte in release mode (which is
intended).

So let's just remove the test and mark the function as inline. It
shouldn't be optimized away when inlined into the debug build of user's
code.

Supersedes #36607

r? @alexcrichton
2016-09-28 20:21:51 -07:00
Brian Anderson
3b49c60ab7 Remove stage0 hacks 2016-09-28 23:17:56 +00:00
Mathieu Poumeyrol
5980d5bfdd use MSG_NOSIGNAL from liblibc 2016-09-28 19:44:20 +02:00
Mathieu Poumeyrol
ed5e542819 MSG_NOSIGNAL on linux 2016-09-28 19:43:11 +02:00
Mathieu Poumeyrol
6f6e261e20 set SO_NOSIGPIPE on apple platforms 2016-09-28 19:43:11 +02:00
Jonathan Turner
4676bb0172 Rollup merge of #36740 - frehberg:apidoc, r=steveklabnik
Document init of HashSet/HashMap from vector
2016-09-28 10:33:56 -07:00
tormol
13a2dd96fe [breaking-change] std: change encode_utf{8,16}() to take a buffer and return a slice
They panic if the buffer is too small.
2016-09-28 09:03:30 +02:00
Tomasz Miąsko
26f9949bf6 [std::io::Chain] Mark first as done only when reading into non-zero length buffer.
Fixes #36771.
2016-09-27 17:55:20 +02:00
Frank Rehberger
f953d2564e Update set.rs 2016-09-27 10:32:21 +02:00
Frank Rehberger
81c47d591a Update map.rs 2016-09-27 10:31:25 +02:00
Jonathan Turner
5c9fc99520 Rollup merge of #36754 - tmiasko:getaddrinfo-errors, r=alexcrichton
When getaddrinfo returns EAI_SYSTEM retrieve actual error from errno.

Fixes issue #36546. This change also updates libc to earliest version
that includes EAI_SYSTEM constant.

Previously, in cases where `EAI_SYSTEM` has been returned from getaddrinfo, the
resulting `io::Error` would be broadly described as "System error":

    Error { repr: Custom(Custom { kind: Other, error: StringError("failed to lookup address information: System error") }) }

After change a more detailed error is crated based on particular value of
errno, for example:

    Error { repr: Os { code: 64, message: "Machine is not on the network" } }

The only downside is that the prefix "failed to lookup address information" is
no longer included in the error message.
2016-09-26 17:29:49 -07:00
Jonathan Turner
df52628ee3 Rollup merge of #36727 - kallisti5:master, r=Aatch
Haiku: Initial work at OS support

These changes should be non-invasive to non-Haiku platforms. These patches were hand reworked from Neil's original Rust 1.9.0 patches. I've done some style cleanup and design updates along the way.

There are a few small additional patches to libc, rust-installer and compiler-rt that will be submitted once this one is accepted.

Haiku can be compiled on Linux, and a full gcc cross-compiler with a Haiku target is available, which means bootstrapping should be fairly easy. The patches here have already successfully bootstrapped under our haiku x86_gcc2 architecture. http://rust-on-haiku.com/wiki/PortingRust

I'll be focusing on our more modern gcc5 x86 and x86 architectures for now.

As for support, we're not seeking official support for now. We understand Haiku isn't a top-tier OS choice, however having these patches upstream greatly reduces the amount of patchwork we have to do. Mesa has Haiku code upstream, and we submit patches to keep it going. Mesa doesn't test on Haiku and we're ok with that :-)
2016-09-26 17:29:49 -07:00
Tomasz Miąsko
c52b957b89 When getaddrinfo returns EAI_SYSTEM retrieve actual error from errno.
Fixes issue #36546. This change also updates libc to earliest version
that includes EAI_SYSTEM constant.
2016-09-26 21:25:59 +02:00
bors
8ccfc695b5 Auto merge of #36719 - shepmaster:build-env-var-reporting, r=alexcrichton
Report which required build-time environment variable is not set
2016-09-26 11:12:42 -07:00
Aleksey Kladov
300e13808e Remove CString drop test.
The test relies on the undefined behavior, and so may fail in some
circumstances. This can be worked around by stubbing a memory allocator
in the test, but it is a bit of work, and LLVM could still theoretically
eliminate the write of the zero byte in release mode (which is
intended).

So let's just remove the test and mark the function as inline. It
shouldn't be optimized away when inlined into the debug build of user's
code.
2016-09-26 20:50:32 +03:00
Frank Rehberger
6c4616c72d Update set.rs 2016-09-26 18:16:06 +02:00
Frank Rehberger
ba84d4ff81 Update map.rs 2016-09-26 18:15:27 +02:00
Frank Rehberger
3551008022 Update set.rs 2016-09-26 16:03:37 +02:00
Frank Rehberger
bd80e7bce7 Update map.rs 2016-09-26 16:00:24 +02:00
Frank Rehberger
aed99c800e Document init of HashSet/HashMap from vector 2016-09-26 13:39:31 +02:00
bors
3bf4a7ad45 Auto merge of #36734 - nnethercote:fix-HashSet-sizing, r=Aatch
Don't allocate during default HashSet creation.

The following `HashMap` creation functions don't allocate heap storage for elements.
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This is good, because it's surprisingly common to create a HashMap and never
use it. So that case should be cheap.

However, `HashSet` does not have the same behaviour. The corresponding creation
functions *do* allocate heap storage for the default number of non-zero
elements (which is 32 slots for 29 elements).
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This commit gives `HashSet` the same behaviour as `HashMap`, by simply calling
the corresponding `HashMap` functions (something `HashSet` already does for
`with_capacity` and `with_capacity_and_hasher`). It also reformats one existing
`HashSet` construction to use a consistent single-line format.

This speeds up rustc itself by 1.01--1.04x on most of the non-tiny
rustc-benchmarks.
2016-09-26 04:38:18 -07:00
Alexander von Gluck IV
7c34d9c144 Haiku: Use common thread set_name stub 2016-09-26 00:41:41 -05:00
Nicholas Nethercote
4eb069c981 Don't allocate during default HashSet creation.
The following `HashMap` creation functions don't allocate heap storage for elements.
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This is good, because it's surprisingly common to create a HashMap and never
use it. So that case should be cheap.

However, `HashSet` does not have the same behaviour. The corresponding creation
functions *do* allocate heap storage for the default number of non-zero
elements (which is 32 slots for 29 elements).
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This commit gives `HashSet` the same behaviour as `HashMap`, by simply calling
the corresponding `HashMap` functions (something `HashSet` already does for
`with_capacity` and `with_capacity_and_hasher`). It also reformats one existing
`HashSet` construction to use a consistent single-line format.

This speeds up rustc itself by 1.01--1.04x on most of the non-tiny
rustc-benchmarks.
2016-09-26 13:05:54 +10:00
Jake Goulding
cc8727e675 Report which required build-time environment variable is not set 2016-09-25 12:18:09 -04:00
Alexander von Gluck IV
8ec1d21ffa Haiku: Fix pthread_t typesize set to stable 1.8.0 post #29791 2016-09-25 11:17:36 -05:00
Niels Sascha Reedijk
783ab7766f Haiku: Work around the lack of the FIOCLEX ioctl
* Hand rebased from Niels original work on 1.9.0
2016-09-25 11:13:57 -05:00
Niels Sascha Reedijk
1a6fc8b7b8 Add support for the Haiku operating system on x86 and x86_64 machines
* Hand rebased from Niels original work on 1.9.0
2016-09-25 11:12:23 -05:00
Guillaume Gomez
812f908bc0 Rollup merge of #36578 - GuillaumeGomez:fix_typo, r=steveklabnik
Replace 'e.g.' by 'i.e.'

Fixes #36577.

r? @steveklabnik
2016-09-24 00:15:46 +02:00
Guillaume Gomez
f45283b93e Rollup merge of #36018 - durka:patch-28, r=steveklabnik
strengthen doc warning about CString::from_raw

Saw unsound code using this function on IRC.
2016-09-24 00:15:43 +02:00
bors
f2c53ea66b Auto merge of #36631 - frewsxcv:dir-entry-debug, r=sfackler
Implement Debug for DirEntry.

None
2016-09-22 23:12:23 -07:00