rust/src
Alex Crichton 3e5257f68f rollup merge of #20079: SimonSapin/string_push_ascii_fast_path
`String::push(&mut self, ch: char)` currently has a single code path that calls `Char::encode_utf8`. This adds a fast path for ASCII `char`s, which are represented as a single byte in UTF-8.

Benchmarks of stage1 libcollections at the intermediate commit show that the fast path very significantly improves the performance of repeatedly pushing an ASCII `char`, but does not significantly affect the performance for a non-ASCII `char` (where the fast path is not taken).

```
bench_push_char_one_byte                  59552 ns/iter (+/- 2132) = 167 MB/s
bench_push_char_one_byte_with_fast_path    6563 ns/iter (+/- 658) = 1523 MB/s
bench_push_char_two_bytes                 71520 ns/iter (+/- 3541) = 279 MB/s
bench_push_char_two_bytes_with_slow_path  71452 ns/iter (+/- 4202) = 279 MB/s
bench_push_str_one_byte                   38910 ns/iter (+/- 2477) = 257 MB/s
```

A benchmark of pushing a one-byte-long `&str` is added for comparison, but its performance [has varied a lot lately](https://github.com/rust-lang/rust/pull/19640#issuecomment-67741561). (When the input is fixed, `s.push_str("x")` could be used just as well as `s.push('x')`.)
2014-12-21 09:27:37 -08:00
..
compiler-rt@62a4ca6055 Update compiler-rt to work for non-v7 arm. 2014-06-18 17:02:08 -07:00
compiletest Remove a ton of public reexports 2014-12-21 09:26:41 -08:00
doc rollup merge of #19996: th0114nd/boolean-inden 2014-12-21 09:27:33 -08:00
driver Separate the driver into its own crate that uses trans, typeck. 2014-12-04 10:04:52 -05:00
etc rustc: Start "stabilizing" some flags 2014-12-19 11:38:24 -08:00
grammar Modify regex::Captures::{at,name} to return Option 2014-12-14 08:56:51 -05:00
jemalloc@b001609960 update jemalloc 2014-10-05 22:17:25 -04:00
liballoc rollup merge of #20070: aturon/stab-2-clone 2014-12-21 09:27:36 -08:00
libarena libarena: use unboxed closures 2014-12-13 17:03:46 -05:00
libbacktrace
libcollections rollup merge of #20079: SimonSapin/string_push_ascii_fast_path 2014-12-21 09:27:37 -08:00
libcore rollup merge of #20070: aturon/stab-2-clone 2014-12-21 09:27:36 -08:00
libcoretest Revise std::thread API to join by default 2014-12-18 23:31:52 -08:00
libflate Mostly rote conversion of proc() to move|| (and occasionally Thunk::new) 2014-12-14 04:21:56 -05:00
libfmt_macros Remove feature(import_shadowing) from all crates. 2014-12-20 06:37:14 +02:00
libgetopts Remove feature(import_shadowing) from all crates. 2014-12-20 06:37:14 +02:00
libgraphviz rollup merge of #19892: pnkfelix/region-graphviz 2014-12-17 11:50:29 -08:00
liblibc Make at_exit initialize lazily 2014-12-18 23:31:34 -08:00
liblog liblog: use #[deriving(Copy)] 2014-12-19 10:43:24 -05:00
librand librand: use #[deriving(Copy)] 2014-12-19 10:43:24 -05:00
librbml librbml: use #[deriving(Copy)] 2014-12-19 10:43:24 -05:00
libregex libregex: use #[deriving(Copy)] 2014-12-19 10:43:24 -05:00
libregex_macros rollup merge of #19820: alexcrichton/deprecate-some-more-libs 2014-12-17 11:50:24 -08:00
librustc rollup merge of #20057: nick29581/array-syntax 2014-12-21 09:27:35 -08:00
librustc_back librustc: Always parse macro!()/macro![] as expressions if not 2014-12-18 12:09:07 -05:00
librustc_borrowck Fix the fallout of removing feature(import_shadowing). 2014-12-20 07:49:37 +02:00
librustc_driver rollup merge of #19898: Aatch/issue-19684 2014-12-21 09:26:41 -08:00
librustc_llvm librustc_llvm: use #[deriving(Copy)] 2014-12-19 10:51:00 -05:00
librustc_resolve Remove a ton of public reexports 2014-12-21 09:26:41 -08:00
librustc_trans rollup merge of #20057: nick29581/array-syntax 2014-12-21 09:27:35 -08:00
librustc_typeck rollup merge of #20039: barosl/if-let-friendly-error 2014-12-21 09:27:34 -08:00
librustdoc rollup merge of #20006: alexcrichton/no-more-empty-modules 2014-12-21 09:27:33 -08:00
libserialize rollup merge of #19980: erickt/cleanup-serialize 2014-12-21 09:26:44 -08:00
libstd rollup merge of #20077: shepmaster/stdin-typo 2014-12-21 09:27:36 -08:00
libsyntax rollup merge of #20059: nick29581/self-impl 2014-12-21 09:27:35 -08:00
libterm libterm: use #[deriving(Copy)] 2014-12-19 10:51:01 -05:00
libtest Remove a ton of public reexports 2014-12-21 09:26:41 -08:00
libtime libtime: use #[deriving(Copy)] 2014-12-19 10:51:01 -05:00
libunicode std: Collapse SlicePrelude traits 2014-12-14 19:03:56 -08:00
llvm@ec1fdb3b9d Update LLVM to get slightly better memcpy elision 2014-10-17 17:16:18 +02:00
rt Avoid .take().unwrap() with FnOnce closures 2014-12-18 23:31:52 -08:00
rust-installer@aed7347241 Use rust-installer for installation 2014-12-11 17:14:17 -08:00
rustllvm Add LLVM ExecutionEngine API 2014-12-11 15:33:27 -07:00
test rollup merge of #20059: nick29581/self-impl 2014-12-21 09:27:35 -08:00
snapshots.txt Create a snapshot on top of 1b97cd3 2014-12-16 14:39:18 +01:00