granite-rust/src
bors 404978ea72 auto merge of #16122 : pcwalton/rust/lifetimes-in-unboxed-closures, r=pnkfelix
This patch primarily does two things: (1) it prevents lifetimes from
leaking out of unboxed closures; (2) it allows unboxed closure type
notation, call notation, and construction notation to construct closures
matching any of the three traits.

This breaks code that looked like:

    let mut f;
    {
        let x = &5i;
        f = |&mut:| *x + 10;
    }

Change this code to avoid having a reference escape. For example:

    {
        let x = &5i;
        let mut f; // <-- move here to avoid dangling reference
        f = |&mut:| *x + 10;
    }

I believe this is enough to consider unboxed closures essentially
implemented. Further issues (for example, higher-rank lifetimes) should
be filed as followups.

Closes #14449.

[breaking-change]

r? @pnkfelix
2014-08-14 16:36:19 +00:00
..
compiler-rt@62a4ca6055 Update compiler-rt to work for non-v7 arm. 2014-06-18 17:02:08 -07:00
compiletest auto merge of #16332 : brson/rust/slicestab, r=aturon 2014-08-14 05:36:25 +00:00
doc auto merge of #16444 : steveklabnik/rust/fix_boxes_in_manual, r=brson 2014-08-14 11:16:19 +00:00
driver
etc core: Add binary_search and binary_search_elem methods to slices. 2014-08-13 11:30:15 -07:00
grammar adding proof of context-sensitivy of raw string literals 2014-07-27 02:13:19 -04:00
gyp@1e46da1000
jemalloc@024c67ad65 Updated deps 2014-06-12 20:20:12 +03:00
liballoc Rename Share to Sync 2014-08-07 08:54:38 -07:00
libarena alloc, arena, test, url, uuid: Elide lifetimes. 2014-07-31 11:50:24 -07:00
libbacktrace
libcollections Fix test fallout 2014-08-13 17:11:21 -07:00
libcore auto merge of #16470 : liigo/rust/rename-private-cmp-macros, r=brson 2014-08-14 13:01:18 +00:00
libcoretest core: Add binary_search and binary_search_elem methods to slices. 2014-08-13 11:30:15 -07:00
libdebug Use byte literals in libdebug 2014-08-06 01:14:31 -04:00
libflate Update doc URLs for version bump 2014-07-11 11:21:57 -07:00
libfmt_macros librustc: Disallow mutation and assignment in pattern guards, and modify 2014-07-25 15:26:21 -07:00
libfourcc Allow deprecation in deprecated libraries 2014-08-12 13:35:56 -07:00
libgetopts auto merge of #16291 : nham/rust/byte_literals, r=alexcrichton 2014-08-06 23:41:05 +00:00
libglob deprecate Vec::get 2014-07-17 12:08:31 +12:00
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 windows: Fix INVALID_HANDLE_VALUE 2014-08-07 16:40:12 -04:00
liblog Accept empty log level 2014-08-11 11:13:27 +01:00
libnative libnative: process spawning should not close inherited file descriptors 2014-08-12 19:09:18 -07:00
libnum core: Change the argument order on splitn and rsplitn for strs. 2014-08-13 15:27:37 -07:00
librand core: Rename ImmutableSlice::unsafe_ref to unsafe_get 2014-08-13 11:30:14 -07:00
librbml libserialize: add error() to Decoder 2014-07-31 21:41:19 -07:00
libregex core: Change the argument order on splitn and rsplitn for strs. 2014-08-13 15:27:37 -07:00
libregex_macros AST refactoring: merge PatWild and PatWildMulti into one variant with a flag. 2014-08-06 17:04:44 +02:00
librlibc std: Rename various slice traits for consistency 2014-08-13 11:30:14 -07:00
librustc auto merge of #16122 : pcwalton/rust/lifetimes-in-unboxed-closures, r=pnkfelix 2014-08-14 16:36:19 +00:00
librustc_back Temporary bootstrapping hack: introduce syntax for r egion bounds like 'b:'a, 2014-08-07 07:23:59 -04:00
librustc_llvm librustc: Use builder for llvm attributes. 2014-07-25 16:06:44 -07:00
librustdoc core: Change the argument order on splitn and rsplitn for strs. 2014-08-13 15:27:37 -07:00
librustrt Register new snapshot 12e0f72 2014-08-08 07:55:00 -04:00
librustuv auto merge of #16284 : alexcrichton/rust/issue-16272, r=aturon 2014-08-12 03:31:20 +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 #16332 : brson/rust/slicestab, r=aturon 2014-08-14 05:36:25 +00:00
libsync Fix various fallout from timer changes 2014-08-13 11:31:48 -07:00
libsyntax auto merge of #16122 : pcwalton/rust/lifetimes-in-unboxed-closures, r=pnkfelix 2014-08-14 16:36:19 +00:00
libterm Use byte literals in libterm 2014-08-06 01:25:48 -04:00
libtest alloc, arena, test, url, uuid: Elide lifetimes. 2014-07-31 11:50:24 -07:00
libtime time::Tm should impl Eq in addition to PartialEq 2014-08-02 10:25:32 -07:00
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 Allow deprecation in deprecated libraries 2014-08-12 13:35:56 -07:00
libuv@dec0561d19 native, rustuv: Fix spawning with empty args 2014-08-05 19:54:54 -07:00
llvm@90a3141620 Update LLVM 2014-08-04 17:43:56 -07:00
rt Move system header includes above valgrind.h include 2014-08-08 10:42:41 +01:00
rustllvm Added clarification regarding rust_try_inner. 2014-08-05 19:14:15 -07:00
test auto merge of #16122 : pcwalton/rust/lifetimes-in-unboxed-closures, r=pnkfelix 2014-08-14 16:36:19 +00:00
README.md Update README file for src/ directory 2014-06-03 14:06:54 +02:00
snapshots.txt Register new snapshot 12e0f72 2014-08-08 07:55:00 -04: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.