1. 19 8月, 2014 2 次提交
  2. 18 8月, 2014 5 次提交
  3. 17 8月, 2014 16 次提交
    • B
      auto merge of #16547 : huonw/rust/new-kw, r=pcwalton · dc65307e
      bors 提交于
      dc65307e
    • B
      auto merge of #16543 : huonw/rust/deprecated-btree, r=alexcrichton · eff87bc9
      bors 提交于
      This is very half-baked at the moment and very inefficient, e.g.
      inappropriate use of by-value `self` (and thus being forced into an
      overuse of `clone`). People get the wrong impression about Rust when
      using it, e.g. that Rust cannot express what other languages can because
      the implementation is inefficient: https://news.ycombinator.com/item?id=8187831 .
      eff87bc9
    • B
      a12a4ddc
    • B
      auto merge of #16432 : pcwalton/rust/kindck-traits, r=nikomatsakis · 921240e0
      bors 提交于
      them during kind checking.
      
      This implements RFC #11.
      
      Closes #15759.
      
      r? @nikomatsakis
      921240e0
    • P
      librustc: Allow trait bounds on structures and enumerations, and check · 086a5ca7
      Patrick Walton 提交于
      them during kind checking.
      
      This implements RFC #11.
      
      Closes #15759.
      086a5ca7
    • B
      auto merge of #16535 : michaelsproul/rust/vim-traits, r=pcwalton · 6dca1426
      bors 提交于
      The vim syntax highlighting file had become out of sync with the real prelude.
      
      Lots of Vector -> Slice renames have happened recently.
      6dca1426
    • B
      auto merge of #16498 : Kimundi/rust/inline-utf-encoding, r=alexcrichton · cb9c1e0e
      bors 提交于
      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]
      cb9c1e0e
    • K
      Fix an error in a code sample in bitv.rs · 9e514af0
      Kasey Carrothers 提交于
      9e514af0
    • B
      auto merge of #16482 : pcwalton/rust/resolve-shadowing, r=brson · 4a5654f9
      bors 提交于
      declared with the same name in the same scope.
      
      This breaks several common patterns. First are unused imports:
      
          use foo::bar;
          use baz::bar;
      
      Change this code to the following:
      
          use baz::bar;
      
      Second, this patch breaks globs that import names that are shadowed by
      subsequent imports. For example:
      
          use foo::*; // including `bar`
          use baz::bar;
      
      Change this code to remove the glob:
      
          use foo::{boo, quux};
          use baz::bar;
      
      Or qualify all uses of `bar`:
      
          use foo::{boo, quux};
          use baz;
      
          ... baz::bar ...
      
      Finally, this patch breaks code that, at top level, explicitly imports
      `std` and doesn't disable the prelude.
      
          extern crate std;
      
      Because the prelude imports `std` implicitly, there is no need to
      explicitly import it; just remove such directives.
      
      The old behavior can be opted into via the `import_shadowing` feature
      gate. Use of this feature gate is discouraged.
      
      This implements RFC #116.
      
      Closes #16464.
      
      [breaking-change]
      
      r? @brson
      4a5654f9
    • P
      librustc: Forbid external crates, imports, and/or items from being · 7f928d15
      Patrick Walton 提交于
      declared with the same name in the same scope.
      
      This breaks several common patterns. First are unused imports:
      
          use foo::bar;
          use baz::bar;
      
      Change this code to the following:
      
          use baz::bar;
      
      Second, this patch breaks globs that import names that are shadowed by
      subsequent imports. For example:
      
          use foo::*; // including `bar`
          use baz::bar;
      
      Change this code to remove the glob:
      
          use foo::{boo, quux};
          use baz::bar;
      
      Or qualify all uses of `bar`:
      
          use foo::{boo, quux};
          use baz;
      
          ... baz::bar ...
      
      Finally, this patch breaks code that, at top level, explicitly imports
      `std` and doesn't disable the prelude.
      
          extern crate std;
      
      Because the prelude imports `std` implicitly, there is no need to
      explicitly import it; just remove such directives.
      
      The old behavior can be opted into via the `import_shadowing` feature
      gate. Use of this feature gate is discouraged.
      
      This implements RFC #116.
      
      Closes #16464.
      
      [breaking-change]
      7f928d15
    • H
    • H
      collections: deprecate BTree. · 7b141ad9
      Huon Wilson 提交于
      This is very half-baked at the moment and very inefficient, e.g.
      inappropriate use of by-value `self` (and thus being forced into an
      overuse of `clone`). People get the wrong impression about Rust when
      using it, e.g. that Rust cannot express what other languages can because
      the implementation is inefficient.
      7b141ad9
    • B
      auto merge of #16531 : alexcrichton/rust/snapshots, r=luqmana · 85fd37f8
      bors 提交于
      Hopefully this will fix #16489!
      85fd37f8
    • J
      Add `use a::b::{c, mod};` to the manual · 7606f580
      Jakub Wieczorek 提交于
      7606f580
    • M
      Optimized IR generation for UTF-8 and UTF-16 encoding · 13079c1a
      Marvin Löbel 提交于
      - Both can now be inlined and constant folded away
      - Both can no longer cause failure
      - Both now return an `Option` instead
      
      Removed debug `assert!()`s over the valid ranges of a `char`
      - It affected optimizations due to unwinding
      - Char handling is now sound enought that they became uneccessary
      13079c1a
    • B
      auto merge of #16505 : dotdash/rust/extern_realpath, r=alexcrichton · 17bcc1b0
      bors 提交于
      Crates that are resolved normally have their path canonicalized and all
      symlinks resolved. This does currently not happen for paths specified
      using the --extern option to rustc, which can lead to rustc thinking
      that it encountered two different versions of a crate, when it's
      actually the same version found through different paths.
      
      Fixes #16496
      17bcc1b0
  4. 16 8月, 2014 15 次提交
  5. 15 8月, 2014 2 次提交