summary refs log tree commit diff
path: root/src/libstd
AgeCommit message (Collapse)AuthorLines
2014-02-25auto merge of #12522 : erickt/rust/hash, r=alexcrichtonbors-11/+1
This patch series does a couple things: * replaces manual `Hash` implementations with `#[deriving(Hash)]` * adds `Hash` back to `std::prelude` * minor cleanup of whitespace and variable names.
2014-02-25auto merge of #12525 : eddyb/rust/gate-default-type-param-usage, r=alexcrichtonbors-0/+2
Also reverted `#[deriving(Hash)]` to implement `Hash` only for `SipState`, until we decide what to do about default type params.
2014-02-25Remove std::bool::{Bool, all_values}Brendan Zabarauskas-162/+43
These were never used outside of the tests
2014-02-24Remove std::num::ToStrRadix from the preludeBrendan Zabarauskas-2/+4
2014-02-24Remove std::from_str::FromStr from the preludeBrendan Zabarauskas-1/+14
2014-02-24Remove std::default::Default from the preludeBrendan Zabarauskas-1/+2
2014-02-24std: Add Vec.reserve for rounding-up reservation.Huon Wilson-1/+8
`.reserve_exact` can cause pathological O(n^2) behaviour, so providing a `.reserve` that ensures that capacity doubles (if you step 1, 2, ..., n) is more efficient. cc #11949
2014-02-24std: make .swap_remove return Option<T>.Huon Wilson-26/+34
This is one of the last raw "indexing" method on vectors that returns `T` instead of the Option.
2014-02-24replace manual Hash impls with `#[deriving(Hash)]`Erick Tryzelaar-9/+1
2014-02-24std: minor whitespace cleanupErick Tryzelaar-2/+0
2014-02-24auto merge of #12445 : huonw/rust/less-unsafe, r=alexcrichtonbors-8/+4
Commits for details. Highlights: - `flate` returns `CVec<u8>` to save reallocating a whole new `&[u8]` - a lot of `transmute`s removed outright or replaced with `as` (etc.)
2014-02-24Gate default type parameter overrides.Eduard Burtescu-0/+2
Fixes #12423.
2014-02-24windows: Fix the test_exists unit testAlex Crichton-2/+5
Turns out the `timeout` command was exiting immediately because it didn't like its output piped. Instead use `ping` repeatedly to get a process that will sleep for awhile. cc #12516
2014-02-24Correctly ignore some tests on windowsAlex Crichton-6/+4
These two tests are notoriously flaky on the windows bots right now, so I'm ignoring them until I can investigate them some more. The truncate_works test has been flaky for quite some time, but it has gotten much worse recently. The test_exists test has been flaky since the recent std::run rewrite landed. Finally, the "unix pipe" test failure is a recent discovery on the try bots. I haven't seen this failing much, but better safe than sorry! cc #12516
2014-02-24auto merge of #12412 : alexcrichton/rust/deriving-show, r=huonwbors-237/+32
This commit removes deriving(ToStr) in favor of deriving(Show), migrating all impls of ToStr to fmt::Show. Most of the details can be found in the first commit message. Closes #12477
2014-02-23auto merge of #12380 : alexcrichton/rust/run-rewrite, r=brsonbors-714/+523
The std::run module is a relic from a standard library long since past, and there's not much use to having two modules to execute processes with where one is slightly more convenient. This commit merges the two modules, moving lots of functionality from std::run into std::io::process and then deleting std::run. New things you can find in std::io::process are: * Process::new() now only takes prog/args * Process::configure() takes a ProcessConfig * Process::status() is the same as run::process_status * Process::output() is the same as run::process_output * I/O for spawned tasks is now defaulted to captured in pipes instead of ignored * Process::kill() was added (plus an associated green/native implementation) * Process::wait_with_output() is the same as the old finish_with_output() * destroy() is now signal_exit() * force_destroy() is now signal_kill() Closes #2625 Closes #10016
2014-02-23Roll std::run into std::io::processAlex Crichton-714/+523
The std::run module is a relic from a standard library long since past, and there's not much use to having two modules to execute processes with where one is slightly more convenient. This commit merges the two modules, moving lots of functionality from std::run into std::io::process and then deleting std::run. New things you can find in std::io::process are: * Process::new() now only takes prog/args * Process::configure() takes a ProcessConfig * Process::status() is the same as run::process_status * Process::output() is the same as run::process_output * I/O for spawned tasks is now defaulted to captured in pipes instead of ignored * Process::kill() was added (plus an associated green/native implementation) * Process::wait_with_output() is the same as the old finish_with_output() * destroy() is now signal_exit() * force_destroy() is now signal_kill() Closes #2625 Closes #10016
2014-02-23Remove all ToStr impls, add Show implsAlex Crichton-237/+32
This commit changes the ToStr trait to: impl<T: fmt::Show> ToStr for T { fn to_str(&self) -> ~str { format!("{}", *self) } } The ToStr trait has been on the chopping block for quite awhile now, and this is the final nail in its coffin. The trait and the corresponding method are not being removed as part of this commit, but rather any implementations of the `ToStr` trait are being forbidden because of the generic impl. The new way to get the `to_str()` method to work is to implement `fmt::Show`. Formatting into a `&mut Writer` (as `format!` does) is much more efficient than `ToStr` when building up large strings. The `ToStr` trait forces many intermediate allocations to be made while the `fmt::Show` trait allows incremental buildup in the same heap allocated buffer. Additionally, the `fmt::Show` trait is much more extensible in terms of interoperation with other `Writer` instances and in more situations. By design the `ToStr` trait requires at least one allocation whereas the `fmt::Show` trait does not require any allocations. Closes #8242 Closes #9806
2014-02-23Merge remote-tracking branch 'huonw/inline-helpers'Brian Anderson-0/+2
2014-02-23Merge remote-tracking branch 'brson/iodoc'Brian Anderson-126/+41
2014-02-23auto merge of #12492 : huonw/rust/snapshots, r=alexcrichtonbors-931/+22
Replaces IterBytes with the new Hash, removing all trace of the old implementation.
2014-02-23Closes #12386. Removed 'pub mod' doc-comments in std::io's mod.rs file. ↵zslayton-19/+9
Added summary doc-comments to test.rs, util.rs and stdio.rs.
2014-02-24Transition to new `Hash`, removing IterBytes and std::to_bytes.Huon Wilson-926/+22
2014-02-24arena,std,serialize: remove some unnecessary transmutes.Huon Wilson-8/+4
`as`-able transmutes, duplication and manual slice decomposition are silly.
2014-02-23Register snapshots.Huon Wilson-5/+0
2014-02-23auto merge of #12416 : alexcrichton/rust/highlight, r=huonwbors-14/+14
This adds simple syntax highlighting based off libsyntax's lexer to be sure to stay up to date with rust's grammar. Some of the highlighting is a bit ad-hoc, but it definitely seems to get the job done! This currently doesn't highlight rustdoc-rendered function signatures and structs that are emitted to each page because the colors already signify what's clickable and I think we'd have to figure out a different scheme before colorizing them. This does, however, colorize all code examples and source code. Closes #11393
2014-02-23auto merge of #12311 : brson/rust/unstable, r=alexcrichtonbors-103/+91
With the stability attributes we can put public-but unstable modules next to others, so this moves `intrinsics` and `raw` out of the `unstable` module (and marks both as `#[experimental]`).
2014-02-23std: Move unstable::stack to rt::stackBrian Anderson-4/+6
2014-02-23std: Remove unstable::langBrian Anderson-55/+36
Put the lonely lang items here closer to the code they are calling.
2014-02-23std: Move raw to std::rawBrian Anderson-15/+18
Issue #1457
2014-02-23std: Move intrinsics to std::intrinsics.Brian Anderson-29/+31
Issue #1457
2014-02-23Move std::{trie, hashmap} to libcollectionsAlex Crichton-2594/+47
These two containers are indeed collections, so their place is in libcollections, not in libstd. There will always be a hash map as part of the standard distribution of Rust, but by moving it out of the standard library it makes libstd that much more portable to more platforms and environments. This conveniently also removes the stuttering of 'std::hashmap::HashMap', although 'collections::HashMap' is only one character shorter.
2014-02-23rustdoc: Add syntax highlightingAlex Crichton-14/+14
This adds simple syntax highlighting based off libsyntax's lexer to be sure to stay up to date with rust's grammar. Some of the highlighting is a bit ad-hoc, but it definitely seems to get the job done! This currently doesn't highlight rustdoc-rendered function signatures and structs that are emitted to each page because the colors already signify what's clickable and I think we'd have to figure out a different scheme before colorizing them. This does, however, colorize all code examples and source code. Closes #11393
2014-02-22std: Remove some nonsense from old std::io docsBrian Anderson-126/+41
Most of this stuff is irrelevant implementation notes from last year. This trims out the stuff that isn't appropriate for user-facing docs.
2014-02-22auto merge of #11863 : erickt/rust/hash, r=acrichtobors-8/+905
This PR merges `IterBytes` and `Hash` into a trait that allows for generic non-stream-based hashing. It makes use of @eddyb's default type parameter support in order to have a similar usage to the old `Hash` framework. Fixes #8038. Todo: - [x] Better documentation - [ ] Benchmark - [ ] Parameterize `HashMap` on a `Hasher`.
2014-02-22std: fix the hash doctestErick Tryzelaar-2/+2
2014-02-23std: mark two helper functions #[inline].Huon Wilson-0/+2
`str::utf8_char_width` and `char::from_u32` are tiny, which means it's a big performance hit to call them in a tight loop outside libstd.
2014-02-22Warn about unnecessary parentheses upon assignmentEduard Bopp-2/+2
Closes #12366. Parentheses around assignment statements such as let mut a = (0); a = (1); a += (2); are not necessary and therefore an unnecessary_parens warning is raised when statements like this occur. The warning mechanism was refactored along the way to allow for code reuse between the routines for checking expressions and statements. Code had to be adopted throughout the compiler and standard libraries to comply with this modification of the lint.
2014-02-21auto merge of #12422 : alexcrichton/rust/buffered-default, r=brsonbors-10/+20
One of the most common ways to use the stdin stream is to read it line by line for a small program. In order to facilitate this common usage pattern, this commit changes the stdin() function to return a BufferedReader by default. A new `stdin_raw()` method was added to get access to the raw unbuffered stream. I have not changed the stdout or stderr methods because they are currently unable to flush in their destructor, but #12403 should have just fixed that.
2014-02-21std: rewrite Hash to make it more genericErick Tryzelaar-7/+904
This patch merges IterBytes and Hash traits, which clears up the confusion of using `#[deriving(IterBytes)]` to support hashing. Instead, it now is much easier to use the new `#[deriving(Hash)]` for making a type hashable with a stream hash. Furthermore, it supports custom non-stream-based hashers, such as if a value's hash was cached in a database. This does not yet replace the old IterBytes-hash with this new version.
2014-02-21auto merge of #12421 : Hywan/rust/api_doc, r=alexcrichtonbors-3/+3
I was reading the code and saw this. Not the best contribution of my life ;-).
2014-02-21std: minor whitespace cleanupErick Tryzelaar-1/+1
2014-02-21auto merge of #12382 : bjz/rust/fmt-int, r=alexcrichtonbors-155/+620
This is PR is the beginning of a complete rewrite and ultimate removal of the `std::num::strconv` module (see #6220), and the removal of the `ToStrRadix` trait in favour of using the `std::fmt` functionality directly. This should make for a cleaner API, encourage less allocation, and make the implementation more comprehensible . The `Formatter::{pad_integral, with_padding}` methods have also been refactored make things easier to understand. The formatting tests for integers have been moved out of `run-pass/ifmt.rs` in order to provide more immediate feedback when building using `make check-stage2-std NO_REBUILD=1`. Arbitrary radixes are now easier to use in format strings. For example: ~~~rust assert_eq!(format!("{:04}", radix(3, 2)), ~"0011"); ~~~ The benchmarks have been standardised between `std::num::strconv` and `std::num::fmt` to make it easier to compare the performance of the different implementations. ~~~ type | radix | std::num::strconv | std::num::fmt ======|=======|========================|====================== int | bin | 1748 ns/iter (+/- 150) | 321 ns/iter (+/- 25) int | oct | 706 ns/iter (+/- 53) | 179 ns/iter (+/- 22) int | dec | 640 ns/iter (+/- 59) | 207 ns/iter (+/- 10) int | hex | 637 ns/iter (+/- 77) | 205 ns/iter (+/- 19) int | 36 | 446 ns/iter (+/- 30) | 309 ns/iter (+/- 20) ------|-------|------------------------|---------------------- uint | bin | 1724 ns/iter (+/- 159) | 322 ns/iter (+/- 13) uint | oct | 663 ns/iter (+/- 25) | 175 ns/iter (+/- 7) uint | dec | 613 ns/iter (+/- 30) | 186 ns/iter (+/- 6) uint | hex | 519 ns/iter (+/- 44) | 207 ns/iter (+/- 20) uint | 36 | 418 ns/iter (+/- 16) | 308 ns/iter (+/- 32) ~~~
2014-02-21auto merge of #12253 : pcwalton/rust/more-vec-ng, r=alexcrichtonbors-9/+200
r? @brson
2014-02-21libstd: Implement some convenience methods on vectorsPatrick Walton-9/+200
2014-02-21auto merge of #12326 : bjz/rust/integer, r=alexcrichtonbors-418/+29
This is part of the effort to simplify `std::num`, as tracked in issue #10387.
2014-02-22Reduce reliance on `to_str_radix`Brendan Zabarauskas-15/+8
This is in preparation to remove the implementations of ToStrRadix in integers, and to remove the associated logic from `std::num::strconv`. The parts that still need to be liberated are: - `std::fmt::Formatter::runplural` - `num::{bigint, complex, rational}`
2014-02-22Decouple integer formatting from std::num::strconvBrendan Zabarauskas-139/+609
This works towards a complete rewrite and ultimate removal of the `std::num::strconv` module (see #6220), and the removal of the `ToStrRadix` trait in favour of using the `std::fmt` functionality directly. This should make for a cleaner API, encourage less allocation, and make the implementation far more comprehensible. The `Formatter::pad_integral` method has also been refactored make it easier to understand. The formatting tests for integers have been moved out of `run-pass/ifmt.rs` in order to provide more immediate feedback when building using `make check-stage2-std NO_REBUILD=1`. The benchmarks have been standardised between std::num::strconv and std::num::fmt to make it easier to compare the performance of the different implementations. Arbitrary radixes are now easier to use in format strings. For example: ~~~ assert_eq!(format!("{:04}", radix(3, 2)), ~"0011"); ~~~
2014-02-22Add Pod trait bound to std::num::PrimitiveBrendan Zabarauskas-1/+3
2014-02-21auto merge of #12420 : pnkfelix/rust/fsk-improve-doc-for-ptr-offset, ↵bors-1/+2
r=alexcrichton ptr::RawPtr, spell out units used for the `offset` argument. spell out units used for the `offset` argument, so that callers do not try to scale to byte units themselves. (this was originally landed in PR #11002 for the stand-alone functions, but that PR did not modify the `RawPtr` methods, since that had no doc at all at the time. Now `RawPtr` has the *only* documentation for `offset`, since the stand-alone functions went away in PR #12167 / PR #12248.)