1911 Commits

Author SHA1 Message Date
Wesley Wiser
ed472c8e0d Fix feature name 2015-07-11 12:34:01 -04:00
Wesley Wiser
5ee801adbf Fix version number on SliceConcatExt:join 2015-07-11 11:00:18 -04:00
Wesley Wiser
29c0c956bf Rename SliceConcatExt::connect to join #26900 2015-07-10 19:40:46 -04:00
bors
f11502cda8 Auto merge of #26904 - bluss:no-repeat, r=alexcrichton
In a followup to PR #26849, improve one more location for I/O where
we can use `Vec::resize` to ensure better performance when zeroing
buffers.

Use the `vec![elt; n]` macro everywhere we can in the tree. It replaces
`repeat(elt).take(n).collect()` which is more verbose, requires type
hints, and right now produces worse code. `vec![]` is preferable for vector
initialization.

The `vec![]` replacement touches upon one I/O path too, Stdin::read
for windows, and that should be a small improvement.

r? @alexcrichton
2015-07-09 10:36:41 +00:00
Ulrik Sverdrup
836f32e769 Use vec![elt; n] where possible
The common pattern `iter::repeat(elt).take(n).collect::<Vec<_>>()` is
exactly equivalent to `vec![elt; n]`, do this replacement in the whole
tree.

(Actually, vec![] is smart enough to only call clone n - 1 times, while
the former solution would call clone n times, and this fact is
virtually irrelevant in practice.)
2015-07-09 11:05:32 +02:00
Esption
dad8cd19d3 'iff' for docs to 'if and only if' 2015-07-08 21:17:13 -05:00
bors
9f26f14dc9 Auto merge of #26869 - alexcrichton:fix-msvc-sepcomp, r=nrc
This commit alters the implementation of multiple codegen units slightly to be
compatible with the MSVC linker. Currently the implementation will take the N
object files created by each codegen unit and will run `ld -r` to create a new
object file which is then passed along. The MSVC linker, however, is not able to
do this operation.

The compiler will now no longer attempt to assemble object files together but
will instead just pass through all the object files as usual. This implies that
rlibs may not contain more than one object file (if the library is compiled with
more than one codegen unit) and the output of `-C save-temps` will have changed
slightly as object files with the extension `0.o` will not be renamed to `o`
unless requested otherwise.
2015-07-08 22:45:19 +00:00
Alex Crichton
9bc8e6d147 trans: Link rlibs to dylibs with --whole-archive
This commit starts passing the `--whole-archive` flag (`-force_load` on OSX) to
the linker when linking rlibs into dylibs. The primary purpose of this commit is
to ensure that the linker doesn't strip out objects from an archive when
creating a dynamic library. Information on how this can go wrong can be found in
issues #14344 and #25185.

The unfortunate part about passing this flag to the linker is that we have to
preprocess the rlib to remove the metadata and compressed bytecode found within.
This means that creating a dylib will now take longer to link as we've got to
copy around the input rlibs to a temporary location, modify them, and then
invoke the linker. This isn't done for executables, however, so the "hello
world" compile time is not affected.

This fix was instigated because of the previous commit where rlibs may not
contain multiple object files instead of one due to codegen units being greater
than one. That change prevented the main distribution from being compiled with
more than one codegen-unit and this commit fixes that.

Closes #14344
Closes #25185
2015-07-08 15:24:23 -07:00
Ulrik Sverdrup
6ac0ba3c3a Improve Vec::resize so that it can be used in Read::read_to_end
We needed a more efficient way to zerofill the vector in read_to_end.
This to reduce the memory intialization overhead to a minimum.

Use the implementation of `std::vec::from_elem` (used for the vec![]
macro) for Vec::resize as well. For simple element types like u8, this
compiles to memset, so it makes Vec::resize much more efficient.
2015-07-08 19:40:40 +02:00
Esption
492f33a267 Fixed some occurrences of 'if' being spelled 'iff' 2015-07-08 05:29:03 -05:00
bors
a2b927c5a4 Auto merge of #26817 - cmr:vecdeque-docs, r=Gankro
None
2015-07-06 05:01:21 +00:00
Steve Klabnik
8c7fd357e0 Rollup merge of #26806 - cmr:stabilize-drain, r=Gankro
None
2015-07-05 15:12:20 -04:00
Steve Klabnik
2e78d3705f Rollup merge of #26464 - Gankro:send, r=alexcrichton
Vec contains `Unique<T>` and some usizes, this is already derived.
2015-07-05 15:12:19 -04:00
Corey Richardson
f5ea6208e0 collections: vec_deque: add some notes on how to use VecDeque as a queue effectively 2015-07-05 12:18:57 -04:00
Corey Richardson
8e2ce46d99 collections: vec_deque: rename "ringbuf" to "VecDeque" in doc comments 2015-07-05 04:01:30 -04:00
Ulrik Sverdrup
c5a0a73253 str: Correct documentation on is_char_boundary
Documentation claims it panics on out of bounds -- it regards out of
bounds as just not a char boundary.

core::str module is aware of how it works and uses it appropriately.
Maybe we should rename it to `is_valid_index`, `is_slicable_index`, or
something similar.
2015-07-04 15:20:34 +02:00
Steve Klabnik
66f757b26d remove some feature gates from the docs
These aren't actually needed
2015-07-03 15:45:06 -04:00
Steve Klabnik
57eed53041 Add more description for from_raw_parts's unsafety
Fixes #26737.
2015-07-02 14:05:57 -04:00
bors
8a599c8cef Auto merge of #26034 - Gankro:deprecate-bits, r=alexcrichton
I've mirrored them out to crates (bit-vec and bit-set) that build on stable.

(not sure if this actually correctly deprecates them in std)
2015-07-01 17:55:20 +00:00
Alexis Beingessner
7850c8d0aa fallout of bitvec/bitset deprecation 2015-07-01 10:30:14 -07:00
Steve Klabnik
26ff4714dd Rollup merge of #26678 - bluss:doc-fmt, r=steveklabnik
fmt: Update docs and mention :#? pretty-printing

Expose `:#?` well in the docs for fmt and Debug itself. Also update some out of date information and fix formatting in `std::fmt` docs.
2015-06-30 15:37:45 -04:00
Alexis Beingessner
8b25086f3d Deprecate BitSet and BitVec in favour of bit-vec and bit-set crates in cargo 2015-06-30 10:37:11 -07:00
Ulrik Sverdrup
516941b74f fmt: Update docs and mention :#? pretty-printing 2015-06-30 14:37:06 +02:00
bors
378a370ff2 Auto merge of #25646 - huonw:align, r=alexcrichton
This removes a footgun, since it is a reasonable assumption to make that
pointers to `T` will be aligned to `align_of::<T>()`. This also matches
the behaviour of C/C++. `min_align_of` is now deprecated.

Closes #21611.
2015-06-26 02:58:31 +00:00
Steven Fackler
18e78b91de Avoid overflow in Vec::from_iter
Closes #26550
2015-06-24 22:59:52 -07:00
Huon Wilson
225b116829 Make align_of behave like min_align_of.
This removes a footgun, since it is a reasonable assumption to make that
pointers to `T` will be aligned to `align_of::<T>()`. This also matches
the behaviour of C/C++. `min_align_of` is now deprecated.

Closes #21611.
2015-06-24 17:00:43 -07:00
Alexis Beingessner
b667fab292 remove redundant Send and Sync impl from Vec 2015-06-20 19:51:46 -07:00
Alex Crichton
c9b40a30c0 std: Stabilize vec_map::Entry::or_insert{,_with}
These functions mirror the other Entry APIs of other maps, and were mistakenly
just not stabilized the first time around.
2015-06-17 09:07:17 -07:00
Alex Crichton
b4a2823cd6 More test fixes and fallout of stability changes 2015-06-17 09:07:17 -07:00
Alex Crichton
2d389c125e std: Stabilize the str_matches feature
This commit stabilizes the `str::{matches, rmatches}` functions and iterators,
but renames the unstable feature for the `str::{matches,rmatches}_indices`
function to `str_match_indices` due to the comment present on the functions
about the iterator's return value.
2015-06-17 09:07:16 -07:00
Alex Crichton
68b628b165 std: Deprecate Vec::from_raw_buf
This function is more naturally expressed as slice::from_raw_buf plus a call to
to_vec.
2015-06-17 09:07:16 -07:00
Alex Crichton
f85c4f62d8 std: Deprecate all permutation-related slice methods
These methods have been unstable for quite some time, and it's not clear that
these should remain in the standard library.
2015-06-17 09:07:16 -07:00
Alex Crichton
ce1a965cf5 Fallout in tests and docs from feature renamings 2015-06-17 09:07:16 -07:00
Alex Crichton
6895311e85 std: Split the std_misc feature 2015-06-17 09:06:59 -07:00
Alex Crichton
d444d0c357 collections: Split the collections feature
This commit also deprecates the `as_string` and `as_slice` free functions in the
`string` and `vec` modules.
2015-06-17 09:06:59 -07:00
Alex Crichton
c44f5399e4 alloc: Split apart the global alloc feature 2015-06-17 09:06:59 -07:00
Alex Crichton
c14d86fd3f core: Split apart the global core feature
This commit shards the broad `core` feature of the libcore library into finer
grained features. This split groups together similar APIs and enables tracking
each API separately, giving a better sense of where each feature is within the
stabilization process.

A few minor APIs were deprecated along the way:

* Iterator::reverse_in_place
* marker::NoCopy
2015-06-17 09:06:59 -07:00
bors
0250ff9a5f Auto merge of #22681 - mzabaluev:extend-faster, r=huonw
Instead of a fast branch with a sized iterator falling back to a potentially poorly optimized iterate-and-push loop, a single efficient loop can serve all cases.

In my benchmark runs, I see some good gains, but also some regressions, possibly due to different inlining choices by the compiler. YMMV.
2015-06-17 00:44:25 +00:00
bors
b5b3a99f84 Auto merge of #26190 - Veedrac:no-iter, r=alexcrichton
Pull request for #26188.
2015-06-11 18:10:08 +00:00
Joshua Landau
d7f5fa4636 Conver reborrows to .iter() calls where appropriate 2015-06-11 13:56:07 +01:00
bors
37cf025f1c Auto merge of #26154 - pmarcelll:master, r=Gankro
Various methods in both libcore/char.rs and librustc_unicode/char.rs were previously marked with #[inline], now every method is marked in char's impl blocks.
Partially fixes #26124.
EDIT: I'm not familiar with pull reqests (yet), apparently Github added my second commit to thit PR...
Fixes #26124
2015-06-11 05:05:20 +00:00
bors
2fbbd54afe Auto merge of #26122 - bluss:borrow-box, r=alexcrichton
Implement Borrow<T> and BorrowMut<T> for Box<T: ?Sized>
2015-06-11 03:25:45 +00:00
bors
fbb13543fc Auto merge of #25839 - bluss:str-split-at-impl, r=alexcrichton
Implement RFC rust-lang/rfcs#1123

Add str method str::split_at(mid: usize) -> (&str, &str).

Also a minor cleanup in the collections::str module. Remove redundant slicing of self.
2015-06-11 00:22:27 +00:00
Joshua Landau
ca7418b846 Removed many pointless calls to *iter() and iter_mut() 2015-06-10 21:14:03 +01:00
Manish Goregaokar
bd7a6ec8ec Rollup merge of #26164 - tafia:early-dedup, r=Gankro
No need to dedup if there is only 1 element in the vec, can early return
2015-06-10 22:07:10 +05:30
Manish Goregaokar
7d9427e6cd Rollup merge of #26146 - steveklabnik:remove_unsafe_pointer, r=Gankro
Using two terms for one thing is confusing, these are called 'raw pointers' today.
2015-06-10 22:07:10 +05:30
Ulrik Sverdrup
1112a05b8f collections: Remove redundant slicing for str
This is a remnant from a previous implementation of the str methods.
Using `self` is fine now.
2015-06-10 09:15:07 +02:00
Ulrik Sverdrup
d43bf53948 Add str::split_at
Implement RFC rust-lang/rfcs#1123

Add str method str::split_at(mid: usize) -> (&str, &str).
2015-06-10 09:15:07 +02:00
bors
e954031ea2 Auto merge of #26130 - steveklabnik:gh25986, r=alexcrichton
This can be confusing when whitespace is the separator

Fixes #25986
2015-06-10 05:28:03 +00:00
Johann Tuffe
cb31373dc2 early return if 1 element
No need to dedup if there is only 1 element in the vec, can early return
2015-06-10 10:51:48 +08:00