1. 08 1月, 2015 3 次提交
    • A
      Test fixes and rebase conflicts · 0dc48b47
      Alex Crichton 提交于
      0dc48b47
    • B
      Preliminary feature staging · c27133e2
      Brian Anderson 提交于
      This partially implements the feature staging described in the
      [release channel RFC][rc]. It does not yet fully conform to the RFC as
      written, but does accomplish its goals sufficiently for the 1.0 alpha
      release.
      
      It has three primary user-visible effects:
      
      * On the nightly channel, use of unstable APIs generates a warning.
      * On the beta channel, use of unstable APIs generates a warning.
      * On the beta channel, use of feature gates generates a warning.
      
      Code that does not trigger these warnings is considered 'stable',
      modulo pre-1.0 bugs.
      
      Disabling the warnings for unstable APIs continues to be done in the
      existing (i.e. old) style, via `#[allow(...)]`, not that specified in
      the RFC. I deem this marginally acceptable since any code that must do
      this is not using the stable dialect of Rust.
      
      Use of feature gates is itself gated with the new 'unstable_features'
      lint, on nightly set to 'allow', and on beta 'warn'.
      
      The attribute scheme used here corresponds to an older version of the
      RFC, with the `#[staged_api]` crate attribute toggling the staging
      behavior of the stability attributes, but the user impact is only
      in-tree so I'm not concerned about having to make design changes later
      (and I may ultimately prefer the scheme here after all, with the
      `#[staged_api]` crate attribute).
      
      Since the Rust codebase itself makes use of unstable features the
      compiler and build system to a midly elaborate dance to allow it to
      bootstrap while disobeying these lints (which would otherwise be
      errors because Rust builds with `-D warnings`).
      
      This patch includes one significant hack that causes a
      regression. Because the `format_args!` macro emits calls to unstable
      APIs it would trigger the lint.  I added a hack to the lint to make it
      not trigger, but this in turn causes arguments to `println!` not to be
      checked for feature gates. I don't presently understand macro
      expansion well enough to fix. This is bug #20661.
      
      Closes #16678
      
      [rc]: https://github.com/rust-lang/rfcs/blob/master/text/0507-release-channels.md
      c27133e2
    • J
      use slicing sugar · 517f1cc6
      Jorge Aparicio 提交于
      517f1cc6
  2. 07 1月, 2015 1 次提交
  3. 06 1月, 2015 1 次提交
  4. 03 1月, 2015 1 次提交
    • A
      std: Stabilize the prelude module · 56290a00
      Alex Crichton 提交于
      This commit is an implementation of [RFC 503][rfc] which is a stabilization
      story for the prelude. Most of the RFC was directly applied, removing reexports.
      Some reexports are kept around, however:
      
      * `range` remains until range syntax has landed to reduce churn.
      * `Path` and `GenericPath` remain until path reform lands. This is done to
        prevent many imports of `GenericPath` which will soon be removed.
      * All `io` traits remain until I/O reform lands so imports can be rewritten all
        at once to `std::io::prelude::*`.
      
      This is a breaking change because many prelude reexports have been removed, and
      the RFC can be consulted for the exact list of removed reexports, as well as to
      find the locations of where to import them.
      
      [rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0503-prelude-stabilization.md
      [breaking-change]
      
      Closes #20068
      56290a00
  5. 31 12月, 2014 1 次提交
  6. 30 12月, 2014 1 次提交
    • A
      std: Stabilize the prelude module · c32d03f4
      Alex Crichton 提交于
      This commit is an implementation of [RFC 503][rfc] which is a stabilization
      story for the prelude. Most of the RFC was directly applied, removing reexports.
      Some reexports are kept around, however:
      
      * `range` remains until range syntax has landed to reduce churn.
      * `Path` and `GenericPath` remain until path reform lands. This is done to
        prevent many imports of `GenericPath` which will soon be removed.
      * All `io` traits remain until I/O reform lands so imports can be rewritten all
        at once to `std::io::prelude::*`.
      
      This is a breaking change because many prelude reexports have been removed, and
      the RFC can be consulted for the exact list of removed reexports, as well as to
      find the locations of where to import them.
      
      [rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0503-prelude-stabilization.md
      [breaking-change]
      
      Closes #20068
      c32d03f4
  7. 22 12月, 2014 1 次提交
  8. 21 11月, 2014 1 次提交
    • A
      Remove libnative · 3ee916e5
      Aaron Turon 提交于
      With runtime removal complete, there's nothing left of libnative. This
      commit removes it.
      
      Fixes #18687
      
      [breaking-change]
      3ee916e5
  9. 06 11月, 2014 1 次提交
  10. 20 10月, 2014 1 次提交
    • 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
  11. 17 9月, 2014 1 次提交
  12. 14 9月, 2014 1 次提交
  13. 02 9月, 2014 1 次提交
  14. 17 8月, 2014 1 次提交
    • 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
  15. 26 7月, 2014 1 次提交
    • B
      rustc: Future proof runtime injection · 8f692e6a
      Brian Anderson 提交于
      Rename and gensym the runtime on import, so that users
      can't refer to the `native` crate.
      
      This is unlikely to break code, but users should import the "native" crate directly.
      
      [breaking-change]
      8f692e6a
  16. 22 7月, 2014 1 次提交
  17. 06 7月, 2014 1 次提交
    • A
      rustc: Remove CrateId and all related support · 50ee1ec1
      Alex Crichton 提交于
      This commit removes all support in the compiler for the #[crate_id] attribute
      and all of its derivative infrastructure. A list of the functionality removed is:
      
      * The #[crate_id] attribute no longer exists
      * There is no longer the concept of a version of a crate
      * Version numbers are no longer appended to symbol names
      * The --crate-id command line option has been removed
      
      To migrate forward, rename #[crate_id] to #[crate_name] and only the name of the
      crate itself should be mentioned. The version/path of the old crate id should be
      removed.
      
      For a transitionary state, the #[crate_id] attribute is still accepted if
      the #[crate_name] is not present, but it is warned about if it is the only
      identifier present.
      
      RFC: 0035-remove-crate-id
      [breaking-change]
      50ee1ec1
  18. 28 6月, 2014 1 次提交
  19. 16 6月, 2014 1 次提交
  20. 15 6月, 2014 1 次提交
    • A
      rustc: Obsolete the `@` syntax entirely · ade807c6
      Alex Crichton 提交于
      This removes all remnants of `@` pointers from rustc. Additionally, this removes
      the `GC` structure from the prelude as it seems odd exporting an experimental
      type in the prelude by default.
      
      Closes #14193
      [breaking-change]
      ade807c6
  21. 12 6月, 2014 2 次提交
  22. 10 6月, 2014 1 次提交
  23. 08 6月, 2014 1 次提交
  24. 25 5月, 2014 2 次提交
  25. 23 5月, 2014 1 次提交
  26. 21 5月, 2014 1 次提交
    • K
      Change std inject attributes to outer attributes · 23ca66ec
      Kevin Ballard 提交于
      The #[phase(syntax,link)] attribute on `extern crate std` needs to be an
      outer attribute so it can pretty-print properly.
      
      Also add `#![no_std]` and `#[feature(phase)]` so compiling the
      pretty-printed source will work.
      23ca66ec
  27. 14 5月, 2014 1 次提交
    • K
      rustc: Make std_inject valid for pretty-printer · 6d535b5b
      klutzy 提交于
      Inject `extern crate {std, native}` before `use` statements.
      Add `#![feature(glob)]` since `use std::prelude::*` is used.
      
      (Unfortunately `rustc --pretty expanded` does not converge,
      since `extern crate` and `use std::prelude::*` is injected at every
      iteration.)
      6d535b5b
  28. 13 5月, 2014 1 次提交
  29. 11 5月, 2014 1 次提交
    • N
      Reorganise driver code. · 37ca3678
      Nick Cameron 提交于
      The goal of this refactoring is to make the rustc driver code easier to understand and use. Since this is as close to an API as we have, I think it is important that it is nice. On getting stuck in, I found that there wasn't as much to change as I'd hoped to make the stage... fns easier to use by tools.
      
      This patch only moves code around - mostly just moving code to different files, but a few extracted method refactorings too. To summarise the changes: I added driver::config which handles everything about configuring the compiler. driver::session now just defines and builds session objects. I moved driver code from librustc/lib.rs to librustc/driver/mod.rs so all the code is one place. I extracted methods to make emulating the compiler without being the compiler a little easier. Within the driver directory, I moved code around to more logically fit in the modules.
      37ca3678
  30. 03 5月, 2014 1 次提交
    • A
      rustc: Remove the session building_library flag · 825f6ace
      Alex Crichton 提交于
      This has long since not been too relevant since the introduction of many crate
      type outputs. This commit removes the flag entirely, adjusting all logic to do
      the most reasonable thing when building both a library and an executable.
      
      Closes #13337
      825f6ace
  31. 26 4月, 2014 1 次提交
  32. 14 4月, 2014 1 次提交
  33. 04 4月, 2014 1 次提交
  34. 01 4月, 2014 1 次提交
  35. 31 3月, 2014 1 次提交
  36. 22 3月, 2014 1 次提交