1. 06 11月, 2014 4 次提交
  2. 04 11月, 2014 1 次提交
    • C
      Implement flexible target specification · 6b130e3d
      Corey Richardson 提交于
      Removes all target-specific knowledge from rustc. Some targets have changed
      during this, but none of these should be very visible outside of
      cross-compilation. The changes make our targets more consistent.
      
      iX86-unknown-linux-gnu is now only available as i686-unknown-linux-gnu. We
      used to accept any value of X greater than 1. i686 was released in 1995, and
      should encompass the bare minimum of what Rust supports on x86 CPUs.
      
      The only two windows targets are now i686-pc-windows-gnu and
      x86_64-pc-windows-gnu.
      
      The iOS target has been renamed from arm-apple-ios to arm-apple-darwin.
      
      A complete list of the targets we accept now:
      
      arm-apple-darwin
      arm-linux-androideabi
      arm-unknown-linux-gnueabi
      arm-unknown-linux-gnueabihf
      
      i686-apple-darwin
      i686-pc-windows-gnu
      i686-unknown-freebsd
      i686-unknown-linux-gnu
      
      mips-unknown-linux-gnu
      mipsel-unknown-linux-gnu
      
      x86_64-apple-darwin
      x86_64-unknown-freebsd
      x86_64-unknown-linux-gnu
      x86_64-pc-windows-gnu
      
      Closes #16093
      
      [breaking-change]
      6b130e3d
  3. 03 11月, 2014 2 次提交
    • B
      Fix ICE when checking call overload · 1571abae
      Brian Koropoff 提交于
      If the overloaded method does not have a tuple or unit type as its
      first non-self parameter, produce a list of error types with the
      correct length to prevent a later index bound panic.  This typically
      occurs due to propagation of an earlier type error or unconstrained
      type variable.  Closes #18532
      1571abae
    • A
      refactor libcollections as part of collection reform · 112c8a96
      Alexis Beingessner 提交于
      * Moves multi-collection files into their own directory, and splits them into seperate files
      * Changes exports so that each collection has its own module
      * Adds underscores to public modules and filenames to match standard naming conventions
      
      (that is, treemap::{TreeMap, TreeSet} => tree_map::TreeMap, tree_set::TreeSet)
      
      * Renames PriorityQueue to BinaryHeap
      * Renames SmallIntMap to VecMap
      * Miscellanious fallout fixes
      
      [breaking-change]
      112c8a96
  4. 02 11月, 2014 1 次提交
  5. 01 11月, 2014 1 次提交
  6. 30 10月, 2014 3 次提交
    • A
      collections: Enable IndexMut for some collections · 1d356624
      Alex Crichton 提交于
      This commit enables implementations of IndexMut for a number of collections,
      including Vec, RingBuf, SmallIntMap, TrieMap, TreeMap, and HashMap. At the same
      time this deprecates the `get_mut` methods on vectors in favor of using the
      indexing notation.
      
      cc #18424
      1d356624
    • N
      Rebasing fixes · 3adb7554
      Nick Cameron 提交于
      3adb7554
    • N
      Enforce object safety · 8d8d8d4e
      Nick Cameron 提交于
      closes #17670
      
      [breaking-change]
      
      Traits must be object-safe if they are to be used in trait objects. This might require splitting a trait into object-safe and non-object-safe parts.
      
      Some standard library traits in std::io have been split - Reader has new traits BytesReader (for the bytes method) and AsRefReader (for by_ref), Writer has new trait AsRefWriter (for by_ref). All these new traits have blanket impls, so any type which implements Reader or Writer (respectively) will have an implmentation of the new traits. To fix your code, you just need to `use` the new trait.
      8d8d8d4e
  7. 29 10月, 2014 1 次提交
  8. 28 10月, 2014 2 次提交
    • N
      Avoid O(n^2) performance by reconsidering the full set of obligations only... · 1da73ff1
      Niko Matsakis 提交于
      Avoid O(n^2) performance by reconsidering the full set of obligations only when we are about to report an error (#18208). I found it is still important to consider the full set in order to make tests like `let x: Vec<_> = obligations.iter().collect()` work.
      1da73ff1
    • B
      Fix monomorphization of unboxed closures · f0cc3a93
      Brian Koropoff 提交于
      This adds a `Substs` field to `ty_unboxed_closure` and plumbs basic
      handling of it throughout the compiler. trans now correctly
      monomorphizes captured free variables and llvm function defs.  This
      fixes uses of unboxed closures which reference a free type or region
      parameter from their environment in either their signature or free
      variables.  Closes #16791
      f0cc3a93
  9. 25 10月, 2014 1 次提交
    • J
      Overhaul typechecking of patterns · 4380e96c
      Jakub Bukaj 提交于
      Instead of checking patterns in a top-down fashion with a known
      expected type on entry, this changes makes typeck establish
      appropriate constraints between a pattern and the expression
      it destructures, and lets inference compute the final types
      or produce good error messages if it's impossible.
      4380e96c
  10. 24 10月, 2014 2 次提交
  11. 23 10月, 2014 1 次提交
  12. 22 10月, 2014 1 次提交
  13. 21 10月, 2014 2 次提交
  14. 20 10月, 2014 2 次提交
    • A
      Ensure that the return type of a function is Sized · 0eb17e3f
      Ariel Ben-Yehuda 提交于
      While no real rvalue of an unsized type can exist, a diverging function
      can still "return" a value of such a type, which causes an ICE.
      
      Fixes #18107.
      0eb17e3f
    • A
      Remove a large amount of deprecated functionality · 9d5d97b5
      Alex Crichton 提交于
      Spring cleaning is here! In the Fall! This commit removes quite a large amount
      of deprecated functionality from the standard libraries. I tried to ensure that
      only old deprecated functionality was removed.
      
      This is removing lots and lots of deprecated features, so this is a breaking
      change. Please consult the deprecation messages of the deleted code to see how
      to migrate code forward if it still needs migration.
      
      [breaking-change]
      9d5d97b5
  15. 17 10月, 2014 2 次提交
  16. 16 10月, 2014 3 次提交
  17. 15 10月, 2014 3 次提交
  18. 14 10月, 2014 1 次提交
  19. 12 10月, 2014 1 次提交
  20. 11 10月, 2014 1 次提交
  21. 10 10月, 2014 1 次提交
    • A
      rustc: Add `const` globals to the language · 90d03d79
      Alex Crichton 提交于
      This change is an implementation of [RFC 69][rfc] which adds a third kind of
      global to the language, `const`. This global is most similar to what the old
      `static` was, and if you're unsure about what to use then you should use a
      `const`.
      
      The semantics of these three kinds of globals are:
      
      * A `const` does not represent a memory location, but only a value. Constants
        are translated as rvalues, which means that their values are directly inlined
        at usage location (similar to a #define in C/C++). Constant values are, well,
        constant, and can not be modified. Any "modification" is actually a
        modification to a local value on the stack rather than the actual constant
        itself.
      
        Almost all values are allowed inside constants, whether they have interior
        mutability or not. There are a few minor restrictions listed in the RFC, but
        they should in general not come up too often.
      
      * A `static` now always represents a memory location (unconditionally). Any
        references to the same `static` are actually a reference to the same memory
        location. Only values whose types ascribe to `Sync` are allowed in a `static`.
        This restriction is in place because many threads may access a `static`
        concurrently. Lifting this restriction (and allowing unsafe access) is a
        future extension not implemented at this time.
      
      * A `static mut` continues to always represent a memory location. All references
        to a `static mut` continue to be `unsafe`.
      
      This is a large breaking change, and many programs will need to be updated
      accordingly. A summary of the breaking changes is:
      
      * Statics may no longer be used in patterns. Statics now always represent a
        memory location, which can sometimes be modified. To fix code, repurpose the
        matched-on-`static` to a `const`.
      
            static FOO: uint = 4;
            match n {
                FOO => { /* ... */ }
                _ => { /* ... */ }
            }
      
        change this code to:
      
            const FOO: uint = 4;
            match n {
                FOO => { /* ... */ }
                _ => { /* ... */ }
            }
      
      * Statics may no longer refer to other statics by value. Due to statics being
        able to change at runtime, allowing them to reference one another could
        possibly lead to confusing semantics. If you are in this situation, use a
        constant initializer instead. Note, however, that statics may reference other
        statics by address, however.
      
      * Statics may no longer be used in constant expressions, such as array lengths.
        This is due to the same restrictions as listed above. Use a `const` instead.
      
      [breaking-change]
      
      [rfc]: https://github.com/rust-lang/rfcs/pull/246
      90d03d79
  22. 07 10月, 2014 2 次提交
  23. 06 10月, 2014 1 次提交
  24. 05 10月, 2014 1 次提交