Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Nov 25, 2013
  1. @bors

    auto merge of #10637 : luqmana/rust/nmt, r=cmr

    bors committed
    There's no need for it to be @mut.
  2. @bors

    auto merge of #10600 : ktt3ja/rust/add-doc, r=huonw

    bors committed
    I received a lot of helpful explanations when I was going through rustc's middle-end code. I document some of them here.
Commits on Nov 24, 2013
  1. @ktt3ja
  2. @luqmana

    libextra: Remove @mut from term.

    luqmana committed
  3. @bors

    auto merge of #10475 : astrieanna/rust/issue8763, r=alexcrichton

    bors committed
    Issue #8763 is about improving a particular error message.
    * added case & better error message for "impl trait for module"
    * added compile-fail test
    * updated copyright dates
    * revised compile-fail test trait-or-new-type-instead
       (the error message for the modified test is still unclear, but that's a different bug rust-lang#8767)
  4. @astrieanna

    Fix issue #8763

    astrieanna committed with astrieanna
    * added case & better error message for "impl trait for module"
    * used better way to print the module
    * switched from //error-pattern to //~ ERROR
    * added compile-fail test
    * revised compile-fail test trait-or-new-type-instead
        (the error message for the modified test is still unclear, but that's a different bug)
    * added FIXME to trait-or-new-type-instead
  5. @bors
  6. @LeoTestard
  7. @bors
  8. @cmr

    Use -O1 for non-GNU linkers

    cmr committed
  9. @bors
  10. @bors
  11. @bors

    auto merge of #10578 : luqmana/rust/mingw64, r=alexcrichton

    bors committed
    With these changes I was able to cross compile for windows from a linux box. (Using the mingw-w64 package on Debian Testing).
    Fixed a bug where the `target_family` cfg would be wrong when targeting something with a different value than the host. (i.e windows -> unix or unix -> windows).
    Also, removed `LIBUV_FLAGS` in `mk/` because of the redundancy between it and `CFG_GCCISH_CFLAGS_(target)`.
    After this we can create a snapshot and migrate to mingw64 instead of mingw32.
  12. @bors

    auto merge of #10514 : sfackler/rust/mut, r=cmr

    bors committed
    This is based off of @blake2-ppc's work on #9429. That PR bitrotted and I haven't been able to contact the original author so I decided to take up the cause.
    `Mut` encapsulates a mutable, non-nullable slot. The `Cell` type is currently used to do this, but `Cell` is much more commonly used as a workaround for the inability to move values into non-once functions. `Mut` provides a more robust API.
    `Mut` duplicates the semantics of borrowed pointers with enforcement at runtime instead of compile time.
    let x = Mut::new(0);
        // make some immutable borrows
        let p = x.borrow();
        let y = *p.get() + 10;
        // multiple immutable borrows are allowed simultaneously
        let p2 = x.borrow();
        // this would throw a runtime failure
        // let p_mut = x.borrow_mut();
    // now we can mutably borrow
    let p = x.borrow_mut();
    *p.get() = 10;
    `borrow` returns a `Ref` type and `borrow_mut` returns a `RefMut` type, both of which are simple smart pointer types with a single method, `get`, which returns a reference to the wrapped data.
    This also allows `RcMut<T>` to be deleted, as it can be replaced with `Rc<Mut<T>>`.
    I've done things a little bit differently than the original proposal.
    * I've added `try_borrow` and `try_borrow_mut` methods that return `Option<Ref<T>>` and `Option<RefMut<T>>` respectively instead of failing on a borrow check failure. I'm not totally sure when that'd be useful, but I don't see any reason to not put them in and @cmr requested them.
    * `ReadPtr` and `WritePtr` have been renamed to `Ref` and `RefMut` respectively, as `Ref` is to `ref foo` and `RefMut` is to `ref mut foo` as `Mut` is to `mut foo`.
    * `get` on `MutRef` now takes `&self` instead of `&mut self` for consistency with `&mut`. As @alexcrichton pointed, out this violates soundness by allowing aliasing `&mut` references.
    * `Cell` is being left as is. It solves a different problem than `Mut` is designed to solve.
    * There are no longer methods implemented for `Mut<Option<T>>`. Since `Cell` isn't going away, there's less of a need for these, and I didn't feel like they provided a huge benefit, especially as that kind of `impl` is very uncommon in the standard library.
    Open Questions
    * `Cell` should now be used exclusively for movement into closures. Should this be enforced by reducing its API to `new` and `take`? It seems like this use case will be completely going away once the transition to `proc` and co. finishes.
    * Should there be `try_map` and `try_map_mut` methods along with `map` and `map_mut`?
Commits on Nov 23, 2013
  1. @huonw
  2. @sfackler
  3. @cmr

    Use linker optimizations on Linux

    cmr committed
  4. @luqmana

    Use CXX not CC for linking.

    luqmana committed
  5. @bors

    auto merge of #10611 : cmr/rust/ascii_flesh, r=pcwalton

    bors committed
    These are super boring. I can add tests if really desired, but they'd be long
    and even more boring than the methods.
  6. @cmr

    Add ctype-likes to Ascii

    cmr committed
  7. @luqmana
  8. @sfackler

    Add Rc::from_mut

    sfackler committed
  9. @sfackler

    More Mut tests

    sfackler committed
  10. @sfackler

    Strip down Cell functionality

    sfackler committed
  11. @sfackler

    Change Mut::map to Mut::with

    sfackler committed
  12. @sfackler
  13. @sfackler

    Cell -> Mut switch in comm

    sfackler committed
  14. @sfackler

    Move Rc tests away from Cell

    sfackler committed
  15. @sfackler

    Remove RcMut

    sfackler committed
    Rc<Mut<T>> should be used instead
  16. @sfackler

    Introduce Mut<T> to libstd

    sfackler committed
    Based off of blake2-ppc's work in #9429.
  17. @luqmana
  18. @luqmana

    Fix up mingw64 target.

    luqmana committed
Commits on Nov 22, 2013
  1. @bors
  2. @huonw
Something went wrong with that request. Please try again.