Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Mar 16, 2014

  1. bors

    auto merge of #12924 : Florob/rust/bigint, r=alexcrichton

    This is a minor optimization of the bignum module. The improvements mostly come from avoiding allocations and boundary checks. This also switches all of libnum to vec_ng::Vec.
    authored March 16, 2014
  2. bors

    auto merge of #12929 : sfackler/rust/automatically-derived, r=cmr

    This will enable rustdoc to treat them specially.
    
    I also got rid of `std::cmp::cmp2`, which is isomorphic to the `TotalOrd` impl for 2-tuples and never used.
    authored March 16, 2014
  3. bors

    auto merge of #12899 : brson/rust/cleanbacktrace, r=alexcrichton

    After `make clean` I'm seeing the build break with
    
    ```
    cp: cannot stat ‘x86_64-unknown-linux-gnu/rt/libbacktrace/.libs/libbacktrace.a’: No such file or directory
    ```
    
    Deleteing the libbacktrace dir entirely on clean fixes.
    authored March 16, 2014
  4. bors

    auto merge of #12791 : alexcrichton/rust/liblog, r=brson

    The rationale and modifications can be found in the first commit message.
    
    This does make logging a bit more painful to use initially because it involves a feature gate and some `phase` attributes, but I think it may be reasonable to not require the `phase` attribute for loading `macro_rules!` macros because defining them will still be gated.
    authored March 15, 2014
  5. Alex Crichton

    Test fixes and rebase conflicts

    This commit switches over the backtrace infrastructure from piggy-backing off
    the RUST_LOG environment variable to using the RUST_BACKTRACE environment
    variable (logging is now disabled in libstd).
    authored March 12, 2014
  6. Steven Fackler

    Tag derived impls with #[automatically_derived]

    This will enable rustdoc to treat them specially.
    authored March 15, 2014
  7. Alex Crichton

    rustc: Topographically sort rust dependencies

    This commit starts to topographically sort rust dependencies on the linker
    command line. The reason for this is that linkers use right-hand libraries to
    resolve left-hand libraries symbols, which is especially crucial for us because
    we're using --as-needed on linux.
    authored March 13, 2014
  8. Alex Crichton

    rustc: Tweak where -lmorestack is on link commands

    In removing many fields from the crate map, executables no longer always have an
    explicit dependency on all upstream libraries. This means that the linker is no
    longer picking them up as it used to.
    
    To the best of my knowledge, the current situation is happening:
    
    * On linux, we're passing the --as-needed flag to the linker, meaning that
      libraries are stripped out if there are no references to symbols in them.
    * Executables may not reference libstd at all, such as "fn main() {}"
    * When linking, the linker will discard libstd because there are no references
      to symbols in it. I presume that this means that all previous libs have had
      all their symbols resolved, so none of the libs are pulling in libstd as a
      dependency.
    * The only real dependence on libstd comes from the rust_stack_exhausted symbol
      (which comes from libmorestack), but -lmorestack is at the end so by the time
      this comes up libstd is completely gone, leading to undefined references to
      rust_stack_exhausted
    
    I'm not entirely convinced that this is what's happening, but it appears to be
    along these lines. The one thing that I'm sure of is that removing the crate map
    (and hence implicit dependency on all upstream libraries) has changed how
    objects depend on upstream libraries.
    authored March 12, 2014
  9. Alex Crichton

    rustc: Remove compiler support for __log_level()

    This commit removes all internal support for the previously used __log_level()
    expression. The logging subsystem was previously modified to not rely on this
    magical expression. This also removes the only other function to use the
    module_data map in trans, decl_gc_metadata. It appears that this is an ancient
    function from a GC only used long ago.
    
    This does not remove the crate map entirely, as libgreen still uses it to hook
    in to the event loop provided by libgreen.
    authored March 08, 2014
  10. Alex Crichton

    log: Introduce liblog, the old std::logging

    This commit moves all logging out of the standard library into an external
    crate. This crate is the new crate which is responsible for all logging macros
    and logging implementation. A few reasons for this change are:
    
    * The crate map has always been a bit of a code smell among rust programs. It
      has difficulty being loaded on almost all platforms, and it's used almost
      exclusively for logging and only logging. Removing the crate map is one of the
      end goals of this movement.
    
    * The compiler has a fair bit of special support for logging. It has the
      __log_level() expression as well as generating a global word per module
      specifying the log level. This is unfairly favoring the built-in logging
      system, and is much better done purely in libraries instead of the compiler
      itself.
    
    * Initialization of logging is much easier to do if there is no reliance on a
      magical crate map being available to set module log levels.
    
    * If the logging library can be written outside of the standard library, there's
      no reason that it shouldn't be. It's likely that we're not going to build the
      highest quality logging library of all time, so third-party libraries should
      be able to provide just as high-quality logging systems as the default one
      provided in the rust distribution.
    
    With a migration such as this, the change does not come for free. There are some
    subtle changes in the behavior of liblog vs the previous logging macros:
    
    * The core change of this migration is that there is no longer a physical
      log-level per module. This concept is still emulated (it is quite useful), but
      there is now only a global log level, not a local one. This global log level
      is a reflection of the maximum of all log levels specified. The previously
      generated logging code looked like:
    
        if specified_level <= __module_log_level() {
            println!(...)
        }
    
      The newly generated code looks like:
    
        if specified_level <= ::log::LOG_LEVEL {
            if ::log::module_enabled(module_path!()) {
                println!(...)
            }
        }
    
      Notably, the first layer of checking is still intended to be "super fast" in
      that it's just a load of a global word and a compare. The second layer of
      checking is executed to determine if the current module does indeed have
      logging turned on.
    
      This means that if any module has a debug log level turned on, all modules
      with debug log levels get a little bit slower (they all do more expensive
      dynamic checks to determine if they're turned on or not).
    
      Semantically, this migration brings no change in this respect, but
      runtime-wise, this will have a perf impact on some code.
    
    * A `RUST_LOG=::help` directive will no longer print out a list of all modules
      that can be logged. This is because the crate map will no longer specify the
      log levels of all modules, so the list of modules is not known. Additionally,
      warnings can no longer be provided if a malformed logging directive was
      supplied.
    
    The new "hello world" for logging looks like:
    
        #[phase(syntax, link)]
        extern crate log;
    
        fn main() {
            debug!("Hello, world!");
        }
    authored March 08, 2014
  11. bors

    auto merge of #12927 : sfackler/rust/test-warn, r=huonw

    The use of `std::os::args` creates a deprecated_owned_vector warning
    with a bogus span.
    authored March 15, 2014
  12. Steven Fackler

    Remove std::cmp::cmp2.

    It isn't used anywhere and `cmp2(a, b, c, d)` is identical to
    `(a, b).cmp(&(c, d))`.
    authored March 15, 2014
  13. Steven Fackler

    Squash test ~[] warning

    The use of `std::os::args` creates a deprecated_owned_vector warning
    with a bogus span.
    authored March 15, 2014
  14. bors

    auto merge of #12923 : sfackler/rust/vecify, r=brson

    authored March 15, 2014
  15. bors

    auto merge of #12922 : luqmana/rust/fix-arm, r=alexcrichton

    authored March 15, 2014
  16. Brian Anderson

    mk: Clean libbacktrace w/ gusto

    After `make clean' I'm seeing the build break with
    
    ```
    cp: cannot stat ‘x86_64-unknown-linux-gnu/rt/libbacktrace/.libs/libbacktrace.a’: No such file or directory
    ```
    
    Deleteing the libbacktrace dir entirely on clean fixes.
    authored March 14, 2014

Mar 15, 2014

  1. bors

    auto merge of #12921 : alexcrichton/rust/no-extra, r=sfackler

    Forgot to remove this as part of the previous removal of libextra
    authored March 15, 2014
  2. Florob

    num: Migrate `~[T]` to `std::vec_ng::Vec`

    authored March 16, 2014
  3. Florob

    num: Slightly optimize bigint

    authored March 15, 2014
  4. Luqman Aden

    libstd: Fix a typo. s/target_os/target_arch/

    authored March 15, 2014
  5. Steven Fackler

    Remove ~[] from libsemver

    authored March 15, 2014
  6. Alex Crichton

    doc: Remove reference to the 'extra' library

    Forgot to remove this as part of the previous removal of libextra
    authored March 15, 2014
  7. Steven Fackler

    Remove most ~[] usage in liburl

    authored March 15, 2014
  8. bors

    auto merge of #12918 : sfackler/rust/doc-html-attr, r=alexcrichton

    authored March 15, 2014
  9. Steven Fackler

    Add rustdoc html crate info

    authored March 15, 2014
  10. bors

    auto merge of #12908 : alexcrichton/rust/issue-12897, r=thestinger

    This is mostly just an implementation detail, and anyone worried about the stack
    bounds doesn't need to be bothered with the red zone because it's not usable
    anyway.
    
    Closes #12897
    authored March 15, 2014
  11. bors

    auto merge of #12906 : sfackler/rust/timespec-total, r=thestinger

    authored March 15, 2014
  12. bors

    auto merge of #12896 : alexcrichton/rust/goodbye-extra, r=brson

    This commit shreds all remnants of libextra from the compiler and standard
    distribution. Two modules, c_vec/tempfile, were moved into libstd after some
    cleanup, and the other modules were moved to separate crates as seen fit.
    
    Closes #8784
    Closes #12413
    Closes #12576
    authored March 14, 2014
  13. Alex Crichton

    green: Don't return the red zone in stack_bounds()

    This is mostly just an implementation detail, and anyone worried about the stack
    bounds doesn't need to be bothered with the red zone because it's not usable
    anyway.
    
    Closes #12897
    authored March 14, 2014
  14. Steven Fackler

    Implement TotalEq and TotalOrd for Timespec

    There's a test making sure that Ord works, so the order dependence
    shouldn't be an issue
    authored March 14, 2014
  15. bors

    auto merge of #12895 : michaelwoerister/rust/limited-debuginfo, r=ale…

    …xcrichton
    
    Very minor modification of just one test case. Fixes #12787.
    authored March 14, 2014
  16. bors

    auto merge of #12887 : huonw/rust/danger-guide, r=alexcrichton

    docs: begin a "low-level & unsafe code" guide.
    
    This aims to cover the basics of writing safe unsafe code. At the moment
    it is just designed to be a better place for the `asm!()` docs than the
    detailed release notes wiki page, and I took the time to write up some
    other things.
    
    More examples are needed, especially of things that can subtly go wrong;
    and vast areas of `unsafe`-ty aren't covered, e.g. `static mut`s and
    thread-safety in general.
    authored March 14, 2014
  17. Huon Wilson

    docs: begin a "low-level & unsafe code" guide.

    This aims to cover the basics of writing safe unsafe code. At the moment
    it is just designed to be a better place for the `asm!()` docs than the
    detailed release notes wiki page, and I took the time to write up some
    other things.
    
    More examples are needed, especially of things that can subtly go wrong;
    and vast areas of `unsafe`-ty aren't covered, e.g. `static mut`s and
    thread-safety in general.
    authored March 15, 2014
  18. bors

    auto merge of #12893 : alexcrichton/rust/cfg-not, r=luqmana

    The two commits have the details of the two fixes
    authored March 14, 2014

Mar 14, 2014

  1. bors

    auto merge of #12888 : aochagavia/rust/Fix-comment, r=alexcrichton

    The old comment of as_mut_slice() did not describe the function correctly. The new one does.
    
    Also refactored option::iter() and option::mut_iter() to use as_ref() and as_mut() instead of match.
    authored March 14, 2014
Something went wrong with that request. Please try again.