This makes it very slightly faster, especially when the string is valid
UTF-8, and completely removes the use of `unsafe` from the first half.
Before:
from_utf8_lossy_100_ascii ... bench: 151 ns/iter (+/- 17)
from_utf8_lossy_100_invalid ... bench: 447 ns/iter (+/- 33)
from_utf8_lossy_100_multibyte ... bench: 135 ns/iter (+/- 4)
from_utf8_lossy_invalid ... bench: 124 ns/iter (+/- 10
After:
from_utf8_lossy_100_ascii ... bench: 119 ns/iter (+/- 8)
from_utf8_lossy_100_invalid ... bench: 454 ns/iter (+/- 16)
from_utf8_lossy_100_multibyte ... bench: 116 ns/iter (+/- 9)
from_utf8_lossy_invalid ... bench: 119 ns/iter (+/- 9)
|
||
|---|---|---|
| .. | ||
| compiler-rt@d4606f1818 | ||
| compiletest | ||
| doc | ||
| driver | ||
| etc | ||
| gyp@1e46da1000 | ||
| libarena | ||
| libcollections | ||
| libextra | ||
| libflate | ||
| libfourcc | ||
| libgetopts | ||
| libglob | ||
| libgreen | ||
| libnative | ||
| libnum | ||
| librustc | ||
| librustdoc | ||
| librustuv | ||
| libsemver | ||
| libserialize | ||
| libstd | ||
| libsync | ||
| libsyntax | ||
| libterm | ||
| libuuid | ||
| libuv@800b56fe6a | ||
| llvm@f5f1ffea20 | ||
| rt | ||
| rustllvm | ||
| test | ||
| README.md | ||
| snapshots.txt | ||
This is a preliminary version of the Rust compiler, libraries and tools.
Source layout:
| Path | Description |
|---|---|
librustc/ |
The self-hosted compiler |
libstd/ |
The standard library (imported and linked by default) |
libextra/ |
The "extras" library (slightly more peripheral code) |
libgreen/ |
The M:N runtime library |
libnative/ |
The 1:1 runtime library |
libsyntax/ |
The Rust parser and pretty-printer |
| ------------------- | --------------------------------------------------------- |
rt/ |
The runtime system |
rt/rust_*.c |
- Some of the runtime services |
rt/vg |
- Valgrind headers |
rt/msvc |
- MSVC support |
rt/sundown |
- The Markdown library used by rustdoc |
| ------------------- | --------------------------------------------------------- |
compiletest/ |
The test runner |
test/ |
Testsuite |
test/codegen |
- Tests for the LLVM IR infrastructure |
test/compile-fail |
- Tests that should fail to compile |
test/debug-info |
- Tests for the debuginfo tool |
test/run-fail |
- Tests that should compile, run and fail |
test/run-make |
- Tests that depend on a Makefile infrastructure |
test/run-pass |
- Tests that should compile, run and succeed |
test/bench |
- Benchmarks and miscellaneous |
test/pretty |
- Pretty-printer tests |
test/auxiliary |
- Dependencies of tests |
| ------------------- | --------------------------------------------------------- |
librustdoc/ |
The Rust API documentation tool |
libuv/ |
The libuv submodule |
| ------------------- | --------------------------------------------------------- |
llvm/ |
The LLVM submodule |
rustllvm/ |
LLVM support code |
| ------------------- | --------------------------------------------------------- |
etc/ |
Scripts, editors support, misc |