1. 25 11月, 2013 5 次提交
  2. 24 11月, 2013 8 次提交
    • B
      auto merge of #10633 : cmr/rust/linker_opts, r=thestinger · ae91b81a
      bors 提交于
      r? @Luqmana
      ae91b81a
    • C
      Use -O1 for non-GNU linkers · a8a6188a
      Corey Richardson 提交于
      a8a6188a
    • B
      auto merge of #10625 : huonw/rust/json-errors, r=alexcrichton · ce45bb7f
      bors 提交于
      Fixes #4244.
      ce45bb7f
    • B
      auto merge of #10620 : cmr/rust/linker_opts, r=thestinger · 738eb9b9
      bors 提交于
      738eb9b9
    • B
      auto merge of #10578 : luqmana/rust/mingw64, r=alexcrichton · 9ba473f8
      bors 提交于
      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/rt.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.
      9ba473f8
    • B
      auto merge of #10514 : sfackler/rust/mut, r=cmr · 33375a31
      bors 提交于
      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.
      
      Overview
      ======
      `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.
      ```rust
      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>>`.
      
      Changes
      ======
      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`?
      33375a31
    • H
      extra: improve the errors for the JSON Decoder. · b052f28f
      Huon Wilson 提交于
      Fixes #4244.
      b052f28f
    • S
      Move mutable::Mut to cell::RefCell · bdfaf04b
      Steven Fackler 提交于
      bdfaf04b
  3. 23 11月, 2013 22 次提交
  4. 22 11月, 2013 5 次提交