Commit graph

8278 commits

Author SHA1 Message Date
llogiq
658b7eba5b Fixed required type coercion
I'd have thought that the types of the slice::Split would have been inferred, but this appears not to be the case. Reverted this one change.
2015-09-08 07:41:50 +02:00
Andre Bogus
808390817a fixes/improvements thanks to @Manishearth 2015-09-08 01:03:01 +02:00
Andre Bogus
9cca96545f some more clippy-based improvements 2015-09-08 00:36:29 +02:00
Ryo Munakata
e8758e44b4 at_exit: fix a typo of the doc comment 2015-09-07 10:28:54 +09:00
Manish Goregaokar
1bf060ffb3 Rollup merge of #28253 - murarth:prelude-typo, r=steveklabnik 2015-09-05 16:16:02 +05:30
bors
6b36e921f4 Auto merge of #28242 - Diggsey:msvc-backtrace, r=alexcrichton
Currently LLVM does not generate the debug info required to get complete backtraces even when functions are inlined, so that part of the `run-pass/backtrace-debuginfo.rs` test is disabled when targetting MSVC. At worst this results in missing stack frames where functions have been inlined.
2015-09-05 07:21:01 +00:00
Murarth
f7ffd502e5 Fix typo in prelude docs 2015-09-04 21:27:55 -07:00
Diggory Blake
9a83842849 Add line numbers to MSVC backtrace
Add comments
2015-09-05 00:56:53 +01:00
bors
6f1014f351 Auto merge of #28069 - alexcrichton:rt-atexit, r=brson
This adds a call to `rt::cleanup` on `process::exit` to make sure we clean up
after ourselves on the way out from Rust.

Closes #28065
2015-09-04 10:33:42 +00:00
bors
b4de424e41 Auto merge of #28034 - alexcrichton:new-lines, r=aturon
This commit is an implementation of [RFC 1212][rfc] which tweaks the behavior of
the `str::lines` and `BufRead::lines` iterators. Both iterators now account for
`\r\n` sequences in addition to `\n`, allowing for less surprising behavior
across platforms (especially in the `BufRead` case). Splitting *only* on the
`\n` character can still be achieved with `split('\n')` in both cases.

The `str::lines_any` function is also now deprecated as `str::lines` is a
drop-in replacement for it.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1212-line-endings.md

Closes #28032
2015-09-04 08:50:56 +00:00
Alex Crichton
48615a68fb std: Account for CRLF in {str, BufRead}::lines
This commit is an implementation of [RFC 1212][rfc] which tweaks the behavior of
the `str::lines` and `BufRead::lines` iterators. Both iterators now account for
`\r\n` sequences in addition to `\n`, allowing for less surprising behavior
across platforms (especially in the `BufRead` case). Splitting *only* on the
`\n` character can still be achieved with `split('\n')` in both cases.

The `str::lines_any` function is also now deprecated as `str::lines` is a
drop-in replacement for it.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1212-line-endings.md

Closes #28032
2015-09-03 23:01:41 -07:00
Diggory Blake
d4fc3ec208 Add line numbers to windows-gnu backtraces
Fix formatting
Remove unused imports
Refactor
Fix msvc build
Fix line lengths
Formatting
Enable backtrace tests
Fix using directive on mac
pwd info
Work-around buildbot PWD bug, and fix libbacktrace configuration
Use alternative to `env -u` which is not supported on bitrig
Disable tests on 32-bit windows gnu
2015-09-04 01:25:15 +01:00
Manish Goregaokar
e6e175b828 Add ptr import (fixup #28187) 2015-09-04 01:40:05 +05:30
Vadim Petrochenkov
06fb196256 Use null()/null_mut() instead of 0 as *const T/0 as *mut T 2015-09-03 09:49:50 +03:00
Alex Crichton
04c09f9466 std: Run at_exit cleanup on process::exit
This adds a call to `rt::cleanup` on `process::exit` to make sure we clean up
after ourselves on the way out from Rust.

Closes #28065
2015-09-02 17:21:11 -07:00
Michael Neumann
52e7f5553e Fix compile on DragonFly: Replace unknown uint32_t/in64_t by u32/i64. 2015-09-02 10:57:57 +02:00
bors
cb9323ec09 Auto merge of #28130 - alexcrichton:fix-msvc-static-tls-dtor, r=brson
Running TLS destructors for a MSVC Windows binary requires the linker doesn't
elide the `_tls_used` or `__tls_used` symbols (depending on the architecture).
This is currently achieved via a `#[link_args]` hack but this only works for
dynamically linked binaries because the link arguments aren't propagated to
statically linked binaries.

This commit alters the strategy to instead emit a volatile load from those
symbols so LLVM can't elide it, forcing the reference to the symbol to stay
alive as long as the callback function stays alive (which we've made sure of
with the `#[linkage]` attribute).

Closes #28111
2015-09-01 19:34:21 +00:00
Alex Crichton
9a3acece30 std: Run TLS destructors in a statically linked binary
Running TLS destructors for a MSVC Windows binary requires the linker doesn't
elide the `_tls_used` or `__tls_used` symbols (depending on the architecture).
This is currently achieved via a `#[link_args]` hack but this only works for
dynamically linked binaries because the link arguments aren't propagated to
statically linked binaries.

This commit alters the strategy to instead emit a volatile load from those
symbols so LLVM can't elide it, forcing the reference to the symbol to stay
alive as long as the callback function stays alive (which we've made sure of
with the `#[linkage]` attribute).

Closes #28111
2015-09-01 11:03:28 -07:00
bors
7d78f2d333 Auto merge of #28094 - apasel422:extend-hashmap, r=alexcrichton
It appears that these impls were left out of #25989 by mistake.

r? @alexcrichton

I'm not sure what the stability markers for these should be.
2015-09-01 00:32:07 +00:00
Andrew Paseltiner
a73d27f6d3 Implement RFC 839 for {HashMap, HashSet}
It appears that these impls were left out of #25989 by mistake.
2015-08-31 13:57:59 -04:00
Tobias Bucher
1f81ef4d0f Atomically set CLOEXEC on duplicated sockets
For Bitrig, NetBSD and OpenBSD the constant was incorrectly in posix01, when
it's actually posix08, so we move it. This is a [breaking-change], but we
already had one in #27930.

Fix NetBSD's F_DUPFD_CLOEXEC constant.

For a similar feature detection, see this musl thread:
http://comments.gmane.org/gmane.linux.lib.musl.general/2963

This assumes that an int literal has type `c_int` for varidic functions.
2015-08-30 10:24:05 +02:00
bors
4bb90232da Auto merge of #27588 - cesarb:read_all, r=alexcrichton
This implements the proposed "read_exact" RFC (https://github.com/rust-lang/rfcs/pull/980).

Tracking issue: https://github.com/rust-lang/rust/issues/27585
2015-08-30 05:59:49 +00:00
bors
d50352419e Auto merge of #28043 - apasel422:rfc-1194, r=alexcrichton 2015-08-29 00:06:04 +00:00
Andrew Paseltiner
f9b63d3973 implement RFC 1194 2015-08-28 12:41:54 -04:00
bors
ab792abf1f Auto merge of #28047 - steveklabnik:doc_print, r=alexcrichton 2015-08-28 13:48:09 +00:00
Cesar Eduardo Barros
73e7a72695 Add issue number to read_exact unstable declarations 2015-08-28 06:33:50 -03:00
bors
6f28232756 Auto merge of #28054 - zaeleus:ios-imports, r=alexcrichton
This fixes building for ios targets caused by 7925c79.
2015-08-28 04:28:23 +00:00
bors
3a80411415 Auto merge of #28038 - durka:grep-unstable-issue-refs, r=alexcrichton
After submitting #28031, I ran a [script](https://gist.github.com/durka/a5243440697c780f669b) on the rest of src/ and found some anomalies. In this PR are the fixes that I thought were obvious (but I might be wrong!). The others I've submitted in issue #28037.
2015-08-28 02:49:45 +00:00
Michael Macias
c5ab1166e7 std: Fix backtrace imports for ios targets
This fixes building for ios targets caused by 7925c79.
2015-08-27 18:47:15 -05:00
bors
8dba06aeee Auto merge of #28052 - Manishearth:rollup, r=Manishearth
- Successful merges: #28010, #28013, #28022, #28029, #28033, #28039, #28045, #28048
- Failed merges:
2015-08-27 23:25:38 +00:00
Steve Klabnik
d9819b76d2 Add some examples for the print! macro 2015-08-27 19:02:45 -04:00
Manish Goregaokar
aebe352794 Rollup merge of #28029 - tshepang:unusual, r=steveklabnik 2015-08-28 03:38:37 +05:30
bors
79dd92fc16 Auto merge of #27930 - barosl:path_max, r=alexcrichton
This PR rewrites the code that previously relied on `PATH_MAX`.

On my tests, even though the user gives the buffer length explicitly, both Linux's glibc and OS X's libc seems to obey the hard limit of `PATH_MAX` internally. So, to truly remove the limitation of `PATH_MAX`, the related system calls should be rewritten from scratch in Rust, which this PR does not try to do.

However, eliminating the need of `PATH_MAX` is still a good idea for various reasons, such as: (1) they might change the implementation in the future, and (2) some platforms don't have a hard-coded `PATH_MAX`, such as GNU Hurd.

More details are in the commit messages.

Fixes #27454.

r? @alexcrichton
2015-08-27 21:47:33 +00:00
Barosl Lee
6065678e62 Use a different buffer doubling logic for std::sys::os::getcwd
Make `std::sys::os::getcwd` call `Vec::reserve(1)` followed by
`Vec::set_len` to double the buffer. This is to align with other similar
functions, such as:

- `std::sys_common::io::read_to_end_uninitialized`
- `std::sys::fs::readlink`

Also, reduce the initial buffer size from 2048 to 512. The previous size was
introduced with 4bc26ce in 2013, but it seems a bit excessive. This is
probably because buffer doubling was not implemented back then.
2015-08-28 04:48:03 +09:00
Barosl Lee
7723550fdd Reduce the reliance on PATH_MAX
- Rewrite `std::sys::fs::readlink` not to rely on `PATH_MAX`

It currently has the following problems:

1. It uses `_PC_NAME_MAX` to query the maximum length of a file path in
the underlying system. However, the meaning of the constant is the
maximum length of *a path component*, not a full path. The correct
constant should be `_PC_PATH_MAX`.

2. `pathconf` *may* fail if the referred file does not exist. This can
be problematic if the file which the symbolic link points to does not
exist, but the link itself does exist. In this case, the current
implementation resorts to the hard-coded value of `1024`, which is not
ideal.

3. There may exist a platform where there is no limit on file path
lengths in general. That's the reaon why GNU Hurd doesn't define
`PATH_MAX` at all, in addition to having `pathconf` always returning
`-1`. In these platforms, the content of the symbolic link can be
silently truncated if the length exceeds the hard-coded limit mentioned
above.

4. The value obtained by `pathconf` may be outdated at the point of
actually calling `readlink`. This is inherently racy.

This commit introduces a loop that gradually increases the length of the
buffer passed to `readlink`, eliminating the need of `pathconf`.

- Remove the arbitrary memory limit of `std::sys::fs::realpath`

As per POSIX 2013, `realpath` will return a malloc'ed buffer if the
second argument is a null pointer.[1]

[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html

- Comment on functions that are still using `PATH_MAX`

There are some functions that only work in terms of `PATH_MAX`, such as
`F_GETPATH` in OS X. Comments on them for posterity.
2015-08-28 04:46:55 +09:00
bors
b28f0b1887 Auto merge of #28030 - tshepang:improve-example, r=alexcrichton 2015-08-27 16:51:57 +00:00
Alex Burka
595fda0de7 fix some more unstable issue annotations 2015-08-27 12:48:35 -04:00
bors
d6a65cd3fe Auto merge of #27975 - sfackler:iter-order-methods, r=aturon
This does cause some breakage due to deficiencies in resolve -
`path::Components` is both an `Iterator` and implements `Eq`, `Ord`,
etc. If one calls e.g. `partial_cmp` on a `Components` and passes a
`&Components` intending to target the `PartialOrd` impl, the compiler
will select the `partial_cmp` from `Iterator` and then error out. I
doubt anyone will run into breakage from `Components` specifically, but
we should see if there are third party types that will run into issues.

`iter::order::equals` wasn't moved to `Iterator` since it's exactly the
same as `iter::order::eq` but with an `Eq` instead of `PartialEq` bound,
which doensn't seem very useful.

I also updated `le`, `gt`, etc to use `partial_cmp` which lets us drop
the extra `PartialEq` bound.

cc #27737 

r? @alexcrichton
2015-08-27 07:13:02 +00:00
Steven Fackler
651c42f11f Make iter::order functions into methods on Iterator
This does cause some breakage due to deficiencies in resolve -
`path::Components` is both an `Iterator` and implements `Eq`, `Ord`,
etc. If one calls e.g. `partial_cmp` on a `Components` and passes a
`&Components` intending to target the `PartialOrd` impl, the compiler
will select the `partial_cmp` from `Iterator` and then error out. I
doubt anyone will run into breakage from `Components` specifically, but
we should see if there are third party types that will run into issues.

`iter::order::equals` wasn't moved to `Iterator` since it's exactly the
same as `iter::order::eq` but with an `Eq` instead of `PartialEq` bound,
which doensn't seem very useful.

I also updated `le`, `gt`, etc to use `partial_cmp` which lets us drop
the extra `PartialEq` bound.

cc #27737
2015-08-26 23:23:57 -07:00
bors
fd302a95e1 Auto merge of #27808 - SimonSapin:utf16decoder, r=alexcrichton
* Rename `Utf16Items` to `Utf16Decoder`. "Items" is meaningless.
* Generalize it to any `u16` iterator, not just `[u16].iter()`
* Make it yield `Result` instead of a custom `Utf16Item` enum that was isomorphic to `Result`. This enable using the `FromIterator for Result` impl.
* Replace `Utf16Item::to_char_lossy` with a `Utf16Decoder::lossy` iterator adaptor.

This is a [breaking change], but only for users of the unstable `rustc_unicode` crate.

I’d like this functionality to be stabilized and re-exported in `std` eventually, as the "low-level equivalent" of `String::from_utf16` and `String::from_utf16_lossy` like #27784 is the low-level equivalent of #27714.

CC @aturon, @alexcrichton
2015-08-27 00:41:13 +00:00
Tshepang Lekhonkhobe
cf3d6b569c doc: improve as_path example 2015-08-26 23:40:36 +02:00
Tshepang Lekhonkhobe
933eb3e320 path: the if-else block looked unusual 2015-08-26 23:16:53 +02:00
bors
685332c8d3 Auto merge of #27998 - birkenfeld:patch-1, r=alexcrichton
These have been removed and should not be documented here.

Should the replacement crates on crates.io be linked to, or is that not wanted in the core docs?
2015-08-26 15:50:52 +00:00
bors
b339f38fa2 Auto merge of #27995 - nagisa:windows-error-message, r=alexcrichton
According to https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx:

> If the function succeeds, the return value is the number of TCHARs stored in the output buffer,
> excluding the terminating null character.

_**Completely untested**_… since I have no Windows machine or anything of a sort to test this on.

r? @aturon
2015-08-25 16:22:17 +00:00
Georg Brandl
fc7c0f99d7 collections doc: remove mention of BitVec, BitSet, VecMap
These have been removed and should not be documented here.
2015-08-25 18:20:42 +02:00
Simonas Kazlauskas
c4c533a293 Do not recalculate string length in error_string
According to https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx:

> If the function succeeds, the return value is the number of TCHARs stored in the output buffer,
> excluding the terminating null character.
2015-08-25 18:33:39 +03:00
bors
e195aa84b4 Auto merge of #27971 - tbu-:pr_cloexec, r=alexcrichton
On Linux the flag is just ignored if it is not supported:
https://lwn.net/Articles/588444/

Still needs the values of O_CLOEXEC on the BSDs.

Touches #24237.
2015-08-25 07:23:18 +00:00
bors
656c3acdeb Auto merge of #27966 - GuillaumeGomez:iterator, r=alexcrichton
Part of #22709.
cc @Veedrac

r? @bluss

I don't have added tests yet, I'll see how to do it tomorrow.
2015-08-25 04:48:19 +00:00
bors
19aadd51a8 Auto merge of #27957 - overminder:aug23-i686-android, r=alexcrichton
- All the libstd tests are passing in the optimized build against
  a Zenfone2 and the x86 Android emulator.

I haven't tested the other libraries though.
2015-08-25 03:04:30 +00:00
Cesar Eduardo Barros
ff81920f03 Implement read_exact for the Read trait
This implements the proposed "read_exact" RFC
(https://github.com/rust-lang/rfcs/pull/980).
2015-08-24 19:10:08 -03:00