Commit Graph

7679 Commits

Author SHA1 Message Date
Nick Hamann
e2d770a398 Add some missing punctuation in the libstd/net/ip.rs docs. 2015-04-29 16:19:35 -05:00
Nick Hamann
42196ae7bf Improve libstd/net/udp.rs documentation.
This adds some missing punctuation, adds a missing word, and
corrects a bug in the description of `send_to`, which actually
returns the number of bytes written on success.

Fixes #24925.
2015-04-29 15:59:28 -05:00
Tamir Duberstein
69abc12b00 Register new snapshots 2015-04-28 17:23:45 -07:00
bors
cadc67e8fd Auto merge of #24777 - alexcrichton:musl, r=brson
These commits build on [some great work on reddit](http://www.reddit.com/r/rust/comments/33boew/weekend_experiment_link_rust_programs_against/) for adding MUSL support to the compiler. This goal of this PR is to enable a `--target x86_64-unknown-linux-musl` argument to the compiler to work A-OK. The outcome here is that there are 0 compile-time dependencies for a MUSL-targeting build *except for a linker*. Currently this also assumes that MUSL is being used for statically linked binaries so there is no support for dynamically linked binaries with MUSL.

MUSL support largely just entailed munging around with the linker and where libs are located, and the major highlights are:

* The entirety of `libc.a` is included in `liblibc.rlib` (statically included as an archive).
* The entirety of `libunwind.a` is included in `libstd.rlib` (like with liblibc).
* The target specification for MUSL passes a number of ... flavorful options! Each option is documented in the relevant commit.
* The entire test suite currently passes with MUSL as a target, except for:
  * Dynamic linking tests are all ignored as it's not supported with MUSL
  * Stack overflow detection is not working MUSL yet (I'm not sure why)
* There is a language change included in this PR to add a `target_env` `#[cfg]` directive. This is used to conditionally build code for only MUSL (or for linux distros not MUSL). I highly suspect that this will also be used by Windows to target MSVC instead of a MinGW-based toolchain.

To build a compiler targeting MUSL you need to follow these steps:

1. Clone the current MUSL repo from `git://git.musl-libc.org/musl`. Build this as usual and install it.
2. Clone and build LLVM's [libcxxabi](http://libcxxabi.llvm.org/) library. Only the `libunwind.a` artifact is needed. I have tried using upstream libunwind's source repo but I have not gotten unwinding to work with it unfortunately. Move `libunwind.a` adjacent to MUSL's `libc.a`
3. Configure a Rust checkout with `--target=x86_64-unknown-linux-musl --musl-root=$MUSL_ROOT` where `MUSL_ROOT` is where you installed MUSL in step 1.

I hope to improve building a copy of libunwind as it's still a little sketchy and difficult to do today, but other than that everything should "just work"! This PR is not intended to include 100% comprehensive support for MUSL, as future modifications will probably be necessary.
2015-04-28 20:12:59 +00:00
Alex Crichton
d98ab4faf8 std: Don't assume thread::current() works on panic
Inspecting the current thread's info may not always work due to the TLS value
having been destroyed (or is actively being destroyed). The code for printing
a panic message assumed, however, that it could acquire the thread's name
through this method.

Instead this commit propagates the `Option` outwards to allow the
`std::panicking` module to handle the case where the current thread isn't
present.

While it solves the immediate issue of #24313, there is still another underlying
issue of panicking destructors in thread locals will abort the process.

Closes #24313
2015-04-27 16:15:36 -07:00
Alex Crichton
0e154aaad6 std: Clean up some annotations in thread::local
Don't need so much manual #[doc(hidden)] and #[unstable] as much of it is
inherited!
2015-04-27 15:16:41 -07:00
Alex Crichton
7dd62155d8 std: Don't assume dlopen() works on yourself
Statically linked executables do not succeed (aka MUSL-based executables).
2015-04-27 10:11:15 -07:00
Alex Crichton
6c048723f8 std: Prepare for linking to musl
This commit modifies the standard library and its dependencies to link correctly
when built against MUSL. This primarily ensures that the right libraries are
linked against and when they're linked against they're linked against
statically.
2015-04-27 10:11:15 -07:00
Steve Klabnik
30f41b1bd6 Rollup merge of #24855 - richo:thread-doc, r=alexcrichton 2015-04-27 10:26:19 -04:00
bors
5c60145323 Auto merge of #24820 - bradking:fix-windows-process-spawn-command-line, r=alexcrichton
Fix `make_command_line` for the case of backslashes at the end of an
argument requiring quotes.  We must encode the command and arguments
such that `CommandLineToArgvW` recovers them in the spawned process.
Simplify the logic by using a running count of backslashes as they
are encountered instead of looking ahead for quotes following them.

Extend `test_make_command_line` to additionally cover:

* a leading quote in an argument that requires quotes,
* a backslash before a quote in an argument that requires quotes,
* a backslash at the end of an argument that requires quotes, and
* a backslash at the end of an argument that does not require quotes.
2015-04-27 10:49:11 +00:00
Richo Healey
5ed3ac99f4 thread: right now you can't actually set those printers 2015-04-26 21:17:14 -07:00
Brad King
e90408e915 std: Fix process spawn for arguments ending in backslashes on Windows
Fix `make_command_line` for the case of backslashes at the end of an
argument requiring quotes.  We must encode the command and arguments
such that `CommandLineToArgvW` recovers them in the spawned process.
Simplify the logic by using a running count of backslashes as they
are encountered instead of looking ahead for quotes following them.

Extend `test_make_command_line` to additionally cover:

* a leading quote in an argument that requires quotes,
* a backslash before a quote in an argument that requires quotes,
* a backslash at the end of an argument that requires quotes, and
* a backslash at the end of an argument that does not require quotes.
2015-04-25 15:35:22 -04:00
Manish Goregaokar
3e67b6bb6c add import (fixup #24649) 2015-04-25 22:33:19 +05:30
Manish Goregaokar
4f1bbc209f Rollup merge of #24649 - nham:path_new_examples, r=steveklabnik 2015-04-25 21:18:47 +05:30
bors
e3d00a4980 Auto merge of #24783 - jooert:unittestguidelines, r=alexcrichton
Changes the style guidelines regarding unit tests to recommend using a sub-module named "tests" instead of "test" for unit tests as "test" might clash with imports of libtest (see #23870, #24030 and http://users.rust-lang.org/t/guidelines-naming-of-unit-test-module/1078 for previous discussions).

r? @alexcrichton
2015-04-25 09:55:06 +00:00
bors
54d65092a4 Auto merge of #24724 - alexcrichton:symlink-stable, r=aturon
These functions were intended to be introduced as `#[stable]` as a stable API
was deprecated in favor of them, but they just erroneously forgot the stability
attributes.
2015-04-25 05:43:39 +00:00
Johannes Oertel
07cc7d9960 Change name of unit test sub-module to "tests".
Changes the style guidelines regarding unit tests to recommend using a
sub-module named "tests" instead of "test" for unit tests as "test"
might clash with imports of libtest.
2015-04-24 23:06:41 +02:00
bors
2214860d4a Auto merge of #24594 - doomsplayer:patch-2, r=alexcrichton
why use dummy implementation on linux?
2015-04-24 17:49:46 +00:00
Manish Goregaokar
f1db259804 Rollup merge of #24706 - tamird:remove-DST-comment, r=alexcrichton
`ToCStr` was removed with `old_io` and the current method `as_os_str`
is inherent to `Path`, meaning there is no suitable trait bound that
could be used here.

r? @alexcrichton
2015-04-24 19:21:14 +05:30
Manish Goregaokar
b5fddf9b19 Rollup merge of #24699 - mbrubeck:doc-edit, r=steveklabnik
r? @steveklabnik
2015-04-24 19:21:13 +05:30
bors
21f278a687 Auto merge of #24633 - rapha:master, r=alexcrichton 2015-04-23 23:44:40 +00:00
Raphael Speyer
47ebc48140 Implement IntoIterator for Receiver 2015-04-24 02:43:23 +10:00
Alex Crichton
a318b51346 std: Add missing stability for symlink functions
These functions were intended to be introduced as `#[stable]` as a stable API
was deprecated in favor of them, but they just erroneously forgot the stability
attributes.
2015-04-23 08:58:47 -07:00
Corey Farwell
115705f8ec Indicate trait names in doc-comment are code-like 2015-04-23 01:28:46 -04:00
Young Wu
4d6e2f5334 implement set_tcp_keepalive for linux 2015-04-23 10:27:44 +08:00
Tamir Duberstein
4047a7c29f Remove stale comment
`ToCStr` was removed with `old_io` and the current method `as_os_str`
is inherent to `Path`, meaning there is no suitable trait bound that
could be used here.
2015-04-22 15:57:24 -07:00
Matt Brubeck
b4a6f895ca Explain how to create a Stdin or Stdout 2015-04-22 13:57:08 -07:00
bors
5c9636975c Auto merge of #24447 - alexcrichton:audit-thread, r=aturon
Much of this code hasn't been updated in quite some time and this commit does a
small audit of the functionality:

* Implementation functions now centralize all functionality on a locally defined
  `Thread` type.
* The `detach` method has been removed in favor of a `Drop` implementation. This
  notably fixes leaking thread handles on Windows.
* The `Thread` structure is now appropriately annotated with `Send` and `Sync`
  automatically on Windows and in a custom fashion on Unix.
* The unsafety of creating a thread has been pushed out to the right boundaries
  now.

Closes #24442
2015-04-22 18:48:31 +00:00
Alex Crichton
2e11009978 std: Audit std::thread implementations
Much of this code hasn't been updated in quite some time and this commit does a
small audit of the functionality:

* Implementation functions now centralize all functionality on a locally defined
  `Thread` type.
* The `detach` method has been removed in favor of a `Drop` implementation. This
  notably fixes leaking thread handles on Windows.
* The `Thread` structure is now appropriately annotated with `Send` and `Sync`
  automatically on Windows and in a custom fashion on Unix.
* The unsafety of creating a thread has been pushed out to the right boundaries
  now.

Closes #24442
2015-04-22 10:42:33 -07:00
Corey Farwell
68989918d2 Remove doc-comment default::Default imports
In 8f5b5f94dc, `default::Default` was
added to the prelude, so these imports are no longer necessary.
2015-04-22 09:42:36 -04:00
Alex Crichton
224fc1085b Test fixes and rebase conflicts, round 1 2015-04-21 16:17:24 -07:00
Alex Crichton
a1dd5ac787 rollup merge of #24636: alexcrichton/remove-deprecated
Conflicts:
	src/libcore/result.rs
2015-04-21 15:28:53 -07:00
Alex Crichton
98e9765d97 rollup merge of #24541: alexcrichton/issue-24538
This is an implementation of [RFC 1030][rfc] which adds these traits to the
prelude and additionally removes all inherent `into_iter` methods on collections
in favor of the trait implementation (which is now accessible by default).

[rfc]: https://github.com/rust-lang/rfcs/pull/1030

This is technically a breaking change due to the prelude additions and removal
of inherent methods, but it is expected that essentially no code breaks in
practice.

[breaking-change]
Closes #24538
2015-04-21 15:28:06 -07:00
Alex Crichton
a568a7f9f2 std: Bring back f32::from_str_radix as an unstable API
This API was exercised in a few tests and mirrors the `from_str_radix`
functionality of the integer types.
2015-04-21 15:23:54 -07:00
Alex Crichton
59171f8ec8 rollup merge of #24651: tamird/old-references
r? @alexcrichton
2015-04-21 15:23:11 -07:00
Alex Crichton
2fc2e12687 rollup merge of #24222: lambda/rename-soft-link-to-symlink
Implement [RFC #1048][rfc].

On Windows, when you create a symbolic link you must specify whether it
points to a directory or a file, even if it is created dangling, while
on Unix, the same symbolic link could point to a directory, a file, or
nothing at all.  Furthermore, on Windows special privilege is necessary
to use a symbolic link, while on Unix, you can generally create a
symbolic link in any directory you have write privileges to.

This means that it is unlikely to be able to use symbolic links purely
portably; anyone who uses them will need to think about the cross
platform implications.  This means that using platform-specific APIs
will make it easier to see where code will need to differ between the
platforms, rather than trying to provide some kind of compatibility
wrapper.

Furthermore, `soft_link` has no precedence in any other API, so to avoid
confusion, move back to the more standard `symlink` terminology.

Create a `std::os::unix::symlink` for the Unix version that is
destination type agnostic, as well as `std::os::windows::{symlink_file,
symlink_dir}` for Windows.

Because this is a stable API, leave a compatibility wrapper in
`std::fs::soft_link`, which calls `symlink` on Unix and `symlink_file`
on Windows, preserving the existing behavior of `soft_link`.

[rfc]: https://github.com/rust-lang/rfcs/pull/1048
2015-04-21 15:23:06 -07:00
Alex Crichton
eeb94886ad std: Remove deprecated/unstable num functionality
This commit removes all the old casting/generic traits from `std::num` that are
no longer in use by the standard library. This additionally removes the old
`strconv` module which has not seen much use in quite a long time. All generic
functionality has been supplanted with traits in the `num` crate and the
`strconv` module is supplanted with the [rust-strconv crate][rust-strconv].

[rust-strconv]: https://github.com/lifthrasiir/rust-strconv

This is a breaking change due to the removal of these deprecated crates, and the
alternative crates are listed above.

[breaking-change]
2015-04-21 11:37:43 -07:00
Alex Crichton
e091ba3f3e std: Remove deprecated AsPath trait 2015-04-21 11:37:35 -07:00
Alex Crichton
69ded69d63 std: Remove deprecated AsOsStr/Str/AsSlice traits
Cleaning out more deprecated items
2015-04-21 11:37:34 -07:00
Brian Campbell
3cc84efcdd Deprecate std::fs::soft_link in favor of platform-specific versions
On Windows, when you create a symbolic link you must specify whether it
points to a directory or a file, even if it is created dangling, while
on Unix, the same symbolic link could point to a directory, a file, or
nothing at all.  Furthermore, on Windows special privilege is necessary
to use a symbolic link, while on Unix, you can generally create a
symbolic link in any directory you have write privileges to.

This means that it is unlikely to be able to use symbolic links purely
portably; anyone who uses them will need to think about the cross
platform implications.  This means that using platform-specific APIs
will make it easier to see where code will need to differ between the
platforms, rather than trying to provide some kind of compatibility
wrapper.

Furthermore, `soft_link` has no precedence in any other API, so to avoid
confusion, move back to the more standard `symlink` terminology.

Create a `std::os::unix::symlink` for the Unix version that is
destination type agnostic, as well as `std::os::windows::{symlink_file,
symlink_dir}` for Windows.

Because this is a stable API, leave a compatibility wrapper in
`std::fs::soft_link`, which calls `symlink` on Unix and `symlink_file`
on Windows, preserving the existing behavior of `soft_link`.
2015-04-21 12:14:22 -04:00
Tamir Duberstein
71bc70ea1b Remove references to old_{path,io} 2015-04-21 08:16:03 -07:00
Tamir Duberstein
32e5f4948f Remove unused files
Looks like these were missed in bf4e77d.
2015-04-21 08:16:02 -07:00
bors
7397bdc9c5 Auto merge of #24620 - pczarn:model-lexer-issues, r=cmr
Fixes #15679
Fixes #15878
Fixes #15882
Closes #15883
2015-04-21 14:37:53 +00:00
Piotr Czarnecki
13bc8afa4b Model lexer: Fix remaining issues 2015-04-21 12:02:12 +02:00
Nick Hamann
ba4d55d130 Separate code into two code blocks 2015-04-21 01:15:51 -05:00
Chris Wong
1131bc0a0f Implement Debug for File
This patch adds a `Debug` impl for `std::fs::File`.

On all platforms (Unix and Windows) it shows the file descriptor.

On Linux, it displays the path and access mode as well.

Ideally we should show the path/mode for all platforms, not just Linux,
but this will do for now.

cc #24570
2015-04-21 17:13:36 +12:00
Nick Hamann
e178495a5e Address some nits 2015-04-20 21:01:13 -05:00
Nick Hamann
db2f308a46 Add two examples for Path::new 2015-04-20 20:45:02 -05:00
bors
5910dc0e8e Auto merge of #24608 - frewsxcv:patch-15, r=alexcrichton 2015-04-20 02:47:45 +00:00
bors
c6b8d96abd Auto merge of #24526 - klutzy:getrandom-fix, r=alexcrichton
Fixes #21538.
2015-04-19 17:28:27 +00:00