rust/src
bors cb9c1e0e70 auto merge of #16498 : Kimundi/rust/inline-utf-encoding, r=alexcrichton
The first commit improves code generation through a few changes:
- The `#[inline]` attributes allow llvm to constant fold the encoding step away in certain situations. For example, code like this changes from a call to `encode_utf8` in a inner loop to the pushing of a byte constant:

 ```rust
let mut s = String::new();
for _ in range(0u, 21) {
        s.push_char('a');
}
```
- Both methods changed their semantic from causing run time failure if the target buffer is not large enough to returning `None` instead. This makes llvm no longer emit code for causing failure for these methods.
- A few debug `assert!()` calls got removed because they affected code generation due to unwinding, and where basically unnecessary with today's sound handling of `char` as a Unicode scalar value.

~~The second commit is optional. It changes the methods from regular indexing with the `dst[i]` syntax to unsafe indexing with `dst.unsafe_mut_ref(i)`. This does not change code generation directly - in both cases llvm is smart enough to see that there can never be an out-of-bounds access. But it makes it emit a `nounwind` attribute for the function. 
However, I'm not sure whether that is a real improvement, so if there is any objection to this I'll remove the commit.~~

This changes how the methods behave on a too small buffer, so this is a 

[breaking-change]
2014-08-17 04:42:32 +00:00
..
compiler-rt@62a4ca6055
compiletest auto merge of #16435 : vadimcn/rust/windows, r=pcwalton 2014-08-15 00:46:19 +00:00
doc librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
driver
etc vim: Don't set foldmethod in the syntax file either 2014-08-15 16:41:07 -07:00
grammar
gyp@1e46da1000
jemalloc@024c67ad65
liballoc
libarena
libbacktrace
libcollections auto merge of #16498 : Kimundi/rust/inline-utf-encoding, r=alexcrichton 2014-08-17 04:42:32 +00:00
libcore auto merge of #16498 : Kimundi/rust/inline-utf-encoding, r=alexcrichton 2014-08-17 04:42:32 +00:00
libcoretest Optimized IR generation for UTF-8 and UTF-16 encoding 2014-08-16 21:13:39 +02:00
libdebug
libflate
libfmt_macros librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
libfourcc Allow deprecation in deprecated libraries 2014-08-12 13:35:56 -07:00
libgetopts librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
libglob
libgraphviz std: Rename slice::Vector to Slice 2014-08-13 11:30:14 -07:00
libgreen Fix various fallout from timer changes 2014-08-13 11:31:48 -07:00
libhexfloat Allow deprecation in deprecated libraries 2014-08-12 13:35:56 -07:00
liblibc librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
liblog Accept empty log level 2014-08-11 11:13:27 +01:00
libnative auto merge of #16435 : vadimcn/rust/windows, r=pcwalton 2014-08-15 00:46:19 +00:00
libnum auto merge of #16475 : treeman/rust/complex-divide-by-zero-test, r=alexcrichton 2014-08-16 07:16:13 +00:00
librand librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
librbml
libregex core: Change the argument order on splitn and rsplitn for strs. 2014-08-13 15:27:37 -07:00
libregex_macros
librlibc librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
librustc librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
librustc_back auto merge of #16435 : vadimcn/rust/windows, r=pcwalton 2014-08-15 00:46:19 +00:00
librustc_llvm
librustdoc auto merge of #16424 : pcwalton/rust/where-clauses, r=nikomatsakis 2014-08-15 06:26:23 +00:00
librustrt librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
librustuv auto merge of #16435 : vadimcn/rust/windows, r=pcwalton 2014-08-15 00:46:19 +00:00
libsemver Allow deprecation in deprecated libraries 2014-08-12 13:35:56 -07:00
libserialize Reenable ignored test and add run-pass test. 2014-08-11 19:20:10 -07:00
libstd auto merge of #16498 : Kimundi/rust/inline-utf-encoding, r=alexcrichton 2014-08-17 04:42:32 +00:00
libsync librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
libsyntax librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
libterm
libtest
libtime
libunicode core: Add binary_search and binary_search_elem methods to slices. 2014-08-13 11:30:15 -07:00
liburl core: Change the argument order on splitn and rsplitn for strs. 2014-08-13 15:27:37 -07:00
libuuid librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
libuv@dec0561d19
llvm@90a3141620
rt Move system header includes above valgrind.h include 2014-08-08 10:42:41 +01:00
rustllvm Fix builds with LLVM < 3.6 2014-08-15 16:36:05 +02:00
test librustc: Forbid external crates, imports, and/or items from being 2014-08-16 19:32:25 -07:00
README.md
snapshots.txt Register new snapshots 2014-08-15 22:16:10 -07:00

This is a preliminary version of the Rust compiler, libraries and tools.

Source layout:

Path Description
librustc/ The self-hosted compiler
liballoc/ Rust's core allocation library
libcore/ The Rust core library
libdebug/ Debugging utilities
libstd/ The standard library (imported and linked by default)
libgreen/ The M:N runtime library
libnative/ The 1:1 runtime library
libsyntax/ The Rust parser and pretty-printer
libtest/ Rust's test-runner code
------------------- ---------------------------------------------------------
libarena/ The arena (a fast but limited) memory allocator
libbacktrace/ The libbacktrace library
libcollections/ A collection of useful data structures and containers
libflate/ Simple compression library
libfmt_macros/ Macro support for format strings
libfourcc/ Data format identifier library
libgetopts/ Get command-line-options library
libglob/ Unix glob patterns library
libgraphviz/ Generating files for Graphviz
libhexfloat/ Hexadecimal floating-point literals
liblibc/ Bindings for the C standard library
liblog/ Utilities for program-wide and customizable logging
libnum/ Extended number support library (complex, rational, etc)
librand/ Random numbers and distributions
libregex/ Regular expressions
libregex_macros/ The regex! syntax extension
libsemver/ Rust's semantic versioning library
libserialize/ Encode-Decode types library
libsync/ Concurrency mechanisms and primitives
libterm/ ANSI color library for terminals
libtime/ Time operations library
liburl/ URL handling lirary
libuuid/ UUID's handling code
------------------- ---------------------------------------------------------
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
librustuv/ Rust libuv support code
------------------- ---------------------------------------------------------
llvm/ The LLVM submodule
rustllvm/ LLVM support code
------------------- ---------------------------------------------------------
etc/ Scripts, editors support, misc

NOTE: This list (especially the second part of the table which contains modules and libraries) is highly volatile and subject to change.