Commit Graph

3704 Commits

Author SHA1 Message Date
Steven Fackler
435ca16f4f Close out #9155
Add a test to make sure it works and switch a private struct over to a
newtype.

Closes #9155
2013-10-03 00:15:54 -07:00
bors
b637798a5a auto merge of #9693 : sfackler/rust/newtype-removal, r=alexcrichton
UnboundedPipeStream is still a newtype since process::set_stdio needs to
look into its internals.

Closes #9667
2013-10-02 20:41:29 -07:00
Steven Fackler
019b131e12 Stop using newtype wrappers in std::rt::io
UnboundedPipeStream is still a newtype since process::set_stdio needs to
look into its internals.

Closes #9667
2013-10-02 20:37:17 -07:00
bors
ccd9a963f7 auto merge of #9681 : skade/rust/str-from-str, r=huonw
This fixes an issue for APIs that return FromStr. Before this change,
they would have to offer a seperate function for returning the source
string.
2013-10-02 18:16:29 -07:00
Alex Crichton
d06043ba0b rustdoc: Generate hyperlinks between crates
The general idea of hyperlinking between crates is that it should require as
little configuration as possible, if any at all. In this vein, there are two
separate ways to generate hyperlinks between crates:

1. When you're generating documentation for a crate 'foo' into folder 'doc',
   then if foo's external crate dependencies already have documented in the
   folder 'doc', then hyperlinks will be generated. This will work because all
   documentation is in the same folder, allowing links to work seamlessly both
   on the web and on the local filesystem browser.

   The rationale for this use case is a package with multiple libraries/crates
   that all want to link to one another, and you don't want to have to deal with
   going to the web. In theory this could be extended to have a RUST_PATH-style
   searching situtation, but I'm not sure that it would work seamlessly on the
   web as it does on the local filesystem, so I'm not attempting to explore this
   case in this pull request. I believe to fully realize this potential rustdoc
   would have to be acting as a server instead of a static site generator.

2. One of foo's external dependencies has a #[doc(html_root_url = "...")]
   attribute. This means that all hyperlinks to the dependency will be rooted at
   this url.

   This use case encompasses all packages using libstd/libextra. These two
   crates now have this attribute encoded (currently at the /doc/master url) and
   will be read by anything which has a dependency on libstd/libextra. This
   should also work for arbitrary crates in the wild that have online
   documentation. I don't like how the version is hard-wired into the url, but I
   think that this may be a case-by-case thing which doesn't end up being too
   bad in the long run.

Closes #9539
2013-10-02 16:17:08 -07:00
bors
371a7ec569 auto merge of #9675 : sfackler/rust/lint, r=alexcrichton
Closes #9671
2013-10-02 13:26:36 -07:00
Steven Fackler
b7fe83d573 Check enums in missing_doc lint
Closes #9671
2013-10-02 08:57:03 -07:00
Erick Tryzelaar
9de7ad2d8c std: Swap {To,From}Primitive to use the 64bit as the unimplemented version
One downside with this current implementation is that since BigInt's
default is now 64 bit, we can convert larger BigInt's to a primitive,
however the current implementation on 32 bit architectures does not
take advantage of this fact.
2013-10-02 07:55:42 -07:00
Erick Tryzelaar
d9d1dfc195 std: Replace num::IntConvertible with {To,From}Primitive 2013-10-02 07:55:41 -07:00
Florian Gilcher
4dc3ff9c80 Add an implementation of FromStr for ~str and @str
This fixes an issue for APIs that return FromStr. Before this change,
they would have to offer a seperate function for returning the source
string.
2013-10-02 15:37:59 +02:00
bors
d00c9269dc auto merge of #9665 : alexcrichton/rust/snapshot, r=brson
Uses the new snapshots to kill the old `loop` and introduce the new `continue`.
2013-10-02 02:31:29 -07:00
bors
97cd495aca auto merge of #9638 : pnkfelix/rust/fsk-issue7526-attempt-to-catch-nonuc-statics-in-match-patterns, r=alexcrichton
r? anyone

Address scariest part of #7526 by adding a new more specific lint (that is set to warn by default, rather than allow).
2013-10-02 01:16:31 -07:00
bors
88b0b511be auto merge of #9578 : alexcrichton/rust/un-ignore-libuv-process-tests, r=brson
Closes #9341
2013-10-01 17:41:29 -07:00
Alex Crichton
02cbfce0b3 Move the rt::io::process tests to run-pass
Closes #9341
2013-10-01 17:04:17 -07:00
Alex Crichton
4f67dcb24a Migrate users of 'loop' to 'continue'
Closes #9467
2013-10-01 15:53:13 -07:00
Daniel Micay
c9d4ad07c4 remove the float type
It is simply defined as `f64` across every platform right now.

A use case hasn't been presented for a `float` type defined as the
highest precision floating point type implemented in hardware on the
platform. Performance-wise, using the smallest precision correct for the
use case greatly saves on cache space and allows for fitting more
numbers into SSE/AVX registers.

If there was a use case, this could be implemented as simply a type
alias or a struct thanks to `#[cfg(...)]`.

Closes #6592

The mailing list thread, for reference:

https://mail.mozilla.org/pipermail/rust-dev/2013-July/004632.html
2013-10-01 14:54:10 -04:00
bors
12404aaadd auto merge of #9644 : alexcrichton/rust/clarify, r=huonw
It was a little ambiguous before how explicitl positional parameters and
implicit positional parameters intermingled, and this clarifies how the two
intermingle. This also updates a little bit of documentation/code examples
elsewhere as well.
2013-10-01 06:26:31 -07:00
bors
d6c3b67348 auto merge of #9576 : FlaPer87/rust/issue/9125, r=alexcrichton
Fixes #9125
2013-10-01 02:06:32 -07:00
Alex Crichton
dec37051dd Merge fall out of removing fmt! 2013-10-01 00:06:51 -07:00
Flavio Percoco
d379ff474f Update std::task::mod docstring 2013-10-01 09:03:04 +02:00
Alex Crichton
a8ba31dbf3 std: Remove usage of fmt! 2013-09-30 23:21:18 -07:00
Alex Crichton
23cb72b459 Clarify format! implicit positional references
It was a little ambiguous before how explicitl positional parameters and
implicit positional parameters intermingled, and this clarifies how the two
intermingle. This also updates a little bit of documentation/code examples
elsewhere as well.
2013-09-30 20:16:23 -07:00
Felix S. Klock II
a076fef2b6 Add new lint: non_uppercase_pattern_statics, for #7526.
This tries to warn about code like:
    ```rust
    match (0,0) {
        (0, aha) => { ... },
        ...
    }
    ```
where `aha` is actually a static constant, not a binding.
2013-10-01 01:44:25 +02:00
blake2-ppc
8163cb5390 std::iter: Introduce .by_ref() adaptor
Creates a wrapper around a mutable reference to the iterator.

This is useful to allow applying iterator adaptors while still
retaining ownership of the original iterator value.

Example::

   let mut xs = range(0, 10);
   // sum the first five values
   let partial_sum = xs.by_ref().take(5).fold(0, |a, b| a + b);
   assert!(partial_sum == 10);
   // xs.next() is now `5`
   assert!(xs.next() == Some(5));
2013-09-30 20:59:46 +02:00
bors
8174618a05 auto merge of #9619 : toffaletti/rust/mmap, r=huonw 2013-09-30 05:01:23 -07:00
Jason Toffaletti
b617569583 reduce heap allocations for MemoryMap 2013-09-29 23:05:40 -07:00
klutzy
f4f6b951d7 std::rt::uv::net: Enable tests on Win32
Closes #8815.
2013-09-30 13:56:55 +09:00
Alex Crichton
c687f6fa92 Put a newline after each logging message 2013-09-29 12:39:49 -07:00
Harry Marr
21b24e148b Add get_opt to std::vec 2013-09-29 16:59:00 +01:00
bors
c635fba748 auto merge of #9583 : blake2-ppc/rust/connect-vec, r=huonw
std::vec: Sane implementations for connect_vec and concat_vec

Avoid unnecessary copying of subvectors, and calculate the needed space
beforehand. These implementations are simple but better than the
previous.

Also only implement it once, for all `Vector<T>` using:

    impl<'self, T: Clone, V: Vector<T>> VectorVector<T> for &'self [V]

Closes #9581
2013-09-28 07:31:02 -07:00
bors
4d81e38512 auto merge of #9574 : FlaPer87/rust/suppress_warnings, r=metajack
Small change that suppresses a warning because of an unused import.
2013-09-27 23:51:03 -07:00
bors
c151d371fc auto merge of #9562 : alexcrichton/rust/snapshots, r=thestinger 2013-09-27 21:56:04 -07:00
blake2-ppc
3709aa78d8 std::vec: Remove functions concat, connect
std::vec::{concat, connect, concat_slices, connect_slices} are replaced
by the already existing trait methods .concat_vec() and .connect_vec().
2013-09-28 05:56:49 +02:00
bors
4a2f8ba8c9 auto merge of #9559 : sfackler/rust/more-visibility, r=alexcrichton 2013-09-27 20:31:05 -07:00
blake2-ppc
24a4d0daf0 std::vec: Sane implementations for connect_vec and concat_vec
Avoid unnecessary copying of subvectors, and calculate the needed space
beforehand. These implementations are simple but better than the
previous.

Also only implement it once, for all `Vector<T>` using:

    impl<'self, T: Clone, V: Vector<T>> VectorVector<T> for &'self [V]

performance improved according to the bench test:

    before
    test vec::bench::concat ... bench: 74818 ns/iter (+/- 408)
    test vec::bench::connect ... bench: 87066 ns/iter (+/- 376)

    after
    test vec::bench::concat ... bench: 17724 ns/iter (+/- 126)
    test vec::bench::connect ... bench: 18353 ns/iter (+/- 691)

Closes #9581
2013-09-28 05:25:18 +02:00
blake2-ppc
5444f601dc std::vec: Add benchmark for .concat_vec and .connect_vec 2013-09-28 04:53:46 +02:00
bors
3ae895360c auto merge of #9557 : blake2-ppc/rust/vec-lifetime-token, r=thestinger
std::vec: Use a valid value as lifetime dummy in iterator

The current implementation uses `&v[0]` for the lifetime struct field,
but that is a dangling pointer for iterators derived from zero-length
slices.

Example:

    let v: [int, ..0] = [];  println!("{:?}", v.iter())

    std::vec::VecIterator<,int>{ptr: (0x7f3768626100 as *()), end: (0x7f3768626100 as *()), lifetime: &139875951207128}

To replace this parameter, use a field of type `Option<&'self ()>`
that is simply initialized with `None`, but still allows the iterator to
have a lifetime parameter.
2013-09-27 19:16:05 -07:00
bors
67394f20eb auto merge of #9552 : brson/rust/0.9-pre, r=alexcrichton 2013-09-27 13:51:07 -07:00
Flavio Percoco
d7e8f4cb03 Suppress warning by removing unused import 2013-09-27 21:36:14 +02:00
bors
10e7f12daf auto merge of #9550 : alexcrichton/rust/remove-printf, r=thestinger
The 0.8 release was cut, down with printf!
2013-09-27 08:21:23 -07:00
Alex Crichton
46aaf5128d Register new snapshots 2013-09-27 00:44:32 -07:00
Erick Tryzelaar
b1ee87f402 std: simplify vec.with_c_str
This also fixes a bug in `vec.with_c_str_unchecked` where we
were not calling `.to_c_str_unchecked()` for long strings.
2013-09-26 22:49:10 -07:00
Erick Tryzelaar
2d878033fd std: add micro optimization to vec.with_c_str_unchecked
before:

test c_str::bench::bench_with_c_str_unchecked_long ... bench: 361 ns/iter (+/- 9)
test c_str::bench::bench_with_c_str_unchecked_medium ... bench: 75 ns/iter (+/- 2)
test c_str::bench::bench_with_c_str_unchecked_short ... bench: 60 ns/iter (+/- 9)

after:

test c_str::bench::bench_with_c_str_unchecked_long ... bench: 362 ns/iter (+/-
test c_str::bench::bench_with_c_str_unchecked_medium ... bench: 30 ns/iter (+/- 7)
test c_str::bench::bench_with_c_str_unchecked_short ... bench: 12 ns/iter (+/- 4)
2013-09-26 22:20:40 -07:00
Erick Tryzelaar
4868273d97 std: Up vec.with_c_str's stack buffer to 128
This matches @graydon's recommendation.
2013-09-26 22:20:40 -07:00
Erick Tryzelaar
ca66b81283 std: Remove an unnecessary comment from c_str
The documentation for `.with_c_str()` already says that the pointer
will be deallocated before returning from the function.
2013-09-26 22:20:40 -07:00
Erick Tryzelaar
e02d1eb171 std: Micro-optimize vec.with_c_str for short vectors
This now makes it unsafe to save the pointer returned by .with_c_str
as that pointer now may be pointing at a stack allocated array.

I arbitrarily chose 32 bytes as the length of the stack vector, and
so it might not be the most optimal size.

before:

test c_str::bench::bench_with_c_str_long ... bench: 539 ns/iter (+/- 91)
test c_str::bench::bench_with_c_str_medium ... bench: 97 ns/iter (+/- 2)
test c_str::bench::bench_with_c_str_short ... bench: 70 ns/iter (+/- 5)

after:

test c_str::bench::bench_with_c_str_long ... bench: 542 ns/iter (+/- 13)
test c_str::bench::bench_with_c_str_medium ... bench: 53 ns/iter (+/- 6)
test c_str::bench::bench_with_c_str_short ... bench: 19 ns/iter (+/- 0)
2013-09-26 22:20:40 -07:00
Erick Tryzelaar
410a96cc79 std: Add benchmarks to c_str 2013-09-26 22:20:40 -07:00
Erick Tryzelaar
2a9e763304 std: implement Container for CString 2013-09-26 22:20:39 -07:00
Erick Tryzelaar
0bdc99d81f std: removed some warnings in tests. 2013-09-26 22:20:39 -07:00
Erick Tryzelaar
4834661c66 std and rustc: Convert users of c_str to use .with_c_str 2013-09-26 22:20:39 -07:00
Steven Fackler
fe9b1e29fc Visibility fixes 2013-09-26 22:01:33 -07:00
blake2-ppc
c0e1c09783 std::vec: Use a valid value as lifetime dummy in iterator
The current implementation uses `&v[0]` for the lifetime struct field,
but that is a dangling pointer for iterators derived from zero-length
slices.

Example:

    let v: [int, ..0] = [];  println!("{:?}", v.iter())

    std::vec::VecIterator<,int>{ptr: (0x7f3768626100 as *()), end: (0x7f3768626100 as *()), lifetime: &139875951207128}

To replace this parameter, use a field of type `Option<&'self ()>`
that is simply initialized with `None`, but still allows the iterator to
have a lifetime parameter.
2013-09-27 06:06:13 +02:00
Brian Anderson
99c1fb8c66 Update version numbers to 0.9-pre 2013-09-26 18:18:42 -07:00
bors
1434b4bfca auto merge of #9261 : alexcrichton/rust/logging, r=huonw
This lifts various restrictions on the runtime, for example the character limit
when logging a message. Right now the old debug!-style macros still involve
allocating (because they use fmt! syntax), but the new debug2! macros don't
involve allocating at all (unless the formatter for a type requires allocation.
2013-09-26 17:11:13 -07:00
Alex Crichton
409182de6d Update the compiler to not use printf/printfln 2013-09-26 17:05:59 -07:00
Steve Klabnik
964da1c9fd Document std::ops.
Added an overview with a 'real' example, as well as toy implementations of all of
the traits.

Closes #9356.
2013-09-26 11:17:34 -07:00
bors
c486634118 auto merge of #9507 : brson/rust/sched, r=alexcrichton
This also includes a fix for yielding from single-threaded schedulers where the scheduler would stop working before its work queue was empty. Fixes the deadlocks that this patch had previously.
2013-09-26 10:46:15 -07:00
bors
6f991a2441 auto merge of #9506 : sfackler/rust/visibility, r=alexcrichton 2013-09-26 09:21:09 -07:00
bors
930f7790fb auto merge of #9497 : pnkfelix/rust/fsk-7752-use-fcnptr-for-glob-errfunc, r=cmr
Fix #7752.

~~(The glob API is a little funky; I tried to make a small test for it, which I'll add to the end of this description, and its not clear whether globfree is supposed to free solely the structure allocated by glob itself, or if it is going to try to free more than that.)~~ (The previous note was a user-error: I was misusing the CString API.)

Anyway, this seems to work in terms of calling errfunc where expected.)

```rust
#[allow(unused_imports)];
use std::libc::types::os::arch::c95::{c_char, c_int, size_t};
use std::libc::funcs::posix01::glob;
use std::libc::types::os::common::posix01::glob_t;
use std::libc::consts::os::posix01::{GLOB_APPEND, GLOB_DOOFFS, GLOB_ERR,
                                     GLOB_MARK, GLOB_NOCHECK, GLOB_NOSORT,
                                     GLOB_NOESCAPE, GLOB_NOSPACE,
                                     GLOB_ABORTED, GLOB_NOMATCH};
use std::ptr;
use std::c_str;

#[fixed_stack_segment]
fn main() {
    let mut g = glob_t {
        gl_pathc:  0, // size_t,
        __unused1: 0, // c_int,
        gl_offs:   2, // size_t,
        __unused2: 0, // c_int,
        gl_pathv:  ptr::null(), // **c_char,

        __unused3: ptr::null(), // *c_void,

        __unused4: ptr::null(), // *c_void,
        __unused5: ptr::null(), // *c_void,
        __unused6: ptr::null(), // *c_void,
        __unused7: ptr::null(), // *c_void,
        __unused8: ptr::null(), // *c_void,
    };

    extern "C" fn errfunc(_epath: *c_char, _errno: int) -> int {
        println!("errfunc called");
        return 0;
    }

    struct Reduced { pathc: size_t, offs: size_t, pathv: **c_char, }
    impl Reduced {
        fn from(g: &glob_t) -> Reduced {
            Reduced {pathc: g.gl_pathc, offs: g.gl_offs, pathv: g.gl_pathv}
        }
    }

    do ("*.rs/*").with_c_str |pat| {
        println!("calling glob");
        unsafe { glob::glob(pat, GLOB_DOOFFS, errfunc, &mut g); }
        println!("After glob call");

        println!("g: {:?}", Reduced::from(&g));
        for i in range(0, g.gl_pathc as int) {
            unsafe {
                let p : **c_char = ptr::offset(g.gl_pathv, g.gl_offs as int + i);
                let x = c_str::CString::new(*p, false);
                match x.as_str() {
                    Some(s) => {
                        println!("gl_pathc[{:d}]: {:?}", i, s);
                    }
                    None => {
                        println!("gl_pathc[{:d}]: unvalid", i);
                    }
                }
            }
        }
    }

    println!("calling globfree on g: {:?}", g);
    unsafe { glob::globfree(&mut g); }
    println!("after globfree call");

}

```
2013-09-26 04:16:03 -07:00
bors
a268a1c4bb auto merge of #9490 : alexcrichton/rust/issue-9487, r=cmr
If there's no TLS key just yet, then there's nothing to unsafely borrow, so
continue returning None. This prevents causing the runtime to abort itself when
logging before the runtime is fully initialized.

Closes #9487

r? @brson
2013-09-26 00:30:57 -07:00
bors
5adfa10387 auto merge of #9404 : blake2-ppc/rust/result-map-opt, r=cmr
std::result: Remove function `map_opt`.

This function has never had any users in the tree, so this is my
initiative to remove this function.
2013-09-25 22:30:53 -07:00
Brian Anderson
d209717ddd std::rt: Implement task yielding. Fix a starvation problem 2013-09-25 20:05:56 -07:00
Marvin Löbel
e94b3fae39 Moved StrSlice doc comments from impl to trait.
Moved OwnedStr doc comments from impl to trait.
Added a few #[inline] hints.

The doc comment changes make the source a bit harder to read, as
documentation and implementation no longer live right next to each
other. But this way they at least appear in the docs.
2013-09-26 04:44:36 +02:00
Steven Fackler
d8957e6332 Some struct visibility fixes 2013-09-25 19:42:02 -07:00
Alex Crichton
eb2b25dd6d Refactor the logging system for fewer allocations
This lifts various restrictions on the runtime, for example the character limit
when logging a message. Right now the old debug!-style macros still involve
allocating (because they use fmt! syntax), but the new debug2! macros don't
involve allocating at all (unless the formatter for a type requires allocation.
2013-09-25 16:30:05 -07:00
Felix S. Klock II
48b4b1f52c errfunc ptr is nullable, so use Option as part of interface to glob (#7752). 2013-09-25 23:38:59 +02:00
Alex Crichton
f648690234 rustdoc: Strip hidden docs by default. 2013-09-25 14:27:43 -07:00
Alex Crichton
3585c64d09 rustdoc: Change all code-blocks with a script
find src -name '*.rs' | xargs sed -i '' 's/~~~.*{\.rust}/```rust/g'
    find src -name '*.rs' | xargs sed -i '' 's/ ~~~$/ ```/g'
    find src -name '*.rs' | xargs sed -i '' 's/^~~~$/ ```/g'
2013-09-25 14:27:42 -07:00
bors
af25f58ac3 auto merge of #9498 : catamorphism/rust/rust-path-hack-fix, r=cmr,metajack
r? @metajack
2013-09-25 12:45:54 -07:00
Alex Crichton
324418f32b Don't die in try_unsafe_borrow if tls isn't ready
If there's no TLS key just yet, then there's nothing to unsafely borrow, so
continue returning None. This prevents causing the runtime to abort itself when
logging before the runtime is fully initialized.

Closes #9487
2013-09-25 11:40:30 -07:00
bors
0186473bd2 auto merge of #9493 : huonw/rust/move-tuples, r=thestinger
The old behaviour of `foo.n0()` is replaced by `foo.n0_ref().clone()`.
2013-09-25 11:26:07 -07:00
Tim Chevalier
667adad26f rustpkg: Search for packages correctly when using the rust_path_hack
Previously, any package would match any other package ID when searching
using the rust_path_hack, so long as the directory had one or more crate
files in it. Now, rustpkg checks that the parent directory matches the
package ID.

Closes #9273
2013-09-25 11:12:24 -07:00
Tim Chevalier
22654165c6 std: Add an is_parent_of method to Path 2013-09-25 11:08:30 -07:00
Felix S. Klock II
7e809819c6 #7752: use fcnptr for glob errfunc. 2013-09-25 15:50:15 +02:00
bors
df97d23c71 auto merge of #9455 : jesseray/rust/master, r=pnkfelix
In "/src/libstd/char.rs", there are function and method definitions for `is_lowercase()`, `is_uppercase()`, `is_whitespace()`, etc. However, there was no function or method for control characters, so I added the `is_control()` function and method definitions along with documentation and tests. Running `./configure && make check` shows that all tests for `is_control()` pass.
2013-09-25 03:55:56 -07:00
Huon Wilson
04ca6dcd84 std: Replace CloneableTuple with Tuple, which takes self by-val.
The old behaviour of `foo.n0()` is replaced by `foo.n0_ref().clone()`.
2013-09-25 19:00:08 +10:00
bors
d7bb40c50c auto merge of #9470 : luqmana/rust/bba, r=brson
#8431

~~@brson: do we need to bump up the cratemap version for this change?~~ Tis a no.
2013-09-24 20:25:58 -07:00
Luqman Aden
90e009f9b6 Remove the annihilate function from the crate map. Fixes #8431 2013-09-24 20:34:11 -04:00
bors
a7d68adbdd auto merge of #9336 : alexcrichton/rust/issue-7981, r=catamorphism
Progress on #7981

This doesn't completely close the issue because `struct A;` is still allowed, and it's a much larger change to disallow that. I'm also not entirely sure that we want to disallow that. Regardless, punting that discussion to the issue instead.
2013-09-24 15:45:57 -07:00
Alex Crichton
4b266f1c0d Stop accepting 'impl ...;', require {} instead
Progress on #7981
2013-09-24 14:12:02 -07:00
Simon Sapin
4aee7b2b42 Do not imply that str is sometimes null-terminated. 2013-09-24 13:26:10 +01:00
bors
85ca934bfe auto merge of #9457 : klutzy/rust/doc-fix, r=alexcrichton 2013-09-24 03:46:00 -07:00
bors
18e3bcd1ab auto merge of #9449 : dckc/rust/patch-1, r=alexcrichton 2013-09-23 23:46:05 -07:00
klutzy
426ad12671 std::local_data: Fix document code 2013-09-24 13:34:48 +09:00
bors
c1b187d41b auto merge of #9454 : alexcrichton/rust/snapshot, r=thestinger 2013-09-23 21:06:03 -07:00
Alex Crichton
51cfcc8382 Register new snapshots 2013-09-23 20:29:01 -07:00
Dan Connolly
5500d86b45 remove apostrophe where it's is not used as a contraction 2013-09-23 21:28:33 -05:00
Patrick Walton
90d3da9711 test: Fix rustdoc and tests. 2013-09-23 18:23:22 -07:00
Patrick Walton
68ea9aed96 librustc: Remove @fn managed closures from the language. 2013-09-23 18:23:21 -07:00
Patrick Walton
9a4de3f305 libsyntax: Introduce routines and remove all @fns from libsyntax save the old visitor 2013-09-23 18:23:21 -07:00
bors
9705399504 auto merge of #9301 : luqmana/rust/ncm, r=brson
Get rid of the crate_map arg!

r? @brson
2013-09-23 15:46:05 -07:00
Luqman Aden
20a10ff9c9 Find the cratemap at runtime on windows. 2013-09-23 18:26:16 -04:00
Jesse Ray
13571af92f Added is_control function, method, and tests. 2013-09-23 17:10:48 -04:00
Daniel Micay
bc34a3416b disable starvation test completely for now
this is still broken on the bsd builder, perhaps because it has 1 core
2013-09-22 18:25:59 -04:00
Daniel Micay
11a8b3d028 disable scheduler starvation test on valgrind 2013-09-22 13:52:32 -04:00
Huon Wilson
0951313c1e Remove the C(++) ISAAC Rng from the old rt.
This has to leave rust_gen_seed and rng_gen_seed around since they're
used to initialise the std::rand RNGs.
2013-09-23 00:11:43 +10:00
Huon Wilson
fb923c7d3f std: merge rand::{Rng,RngUtil} with default methods.
Also, documentation & general clean-up:
- remove `gen_char_from`: better served by `sample` or `choose`.
- `gen_bytes` generalised to `gen_vec`.
- `gen_int_range`/`gen_uint_range` merged into `gen_integer_range` and
  made to be properly uniformly distributed. Fixes #8644.

Minor adjustments to other functions.
2013-09-23 00:11:42 +10:00
Huon Wilson
884c1e112d std: move rand.rs to rand/mod.rs. 2013-09-22 21:39:23 +10:00
blake2-ppc
4cd3c5c72f std::result: Remove function map_opt
This function has never had any users in the tree
2013-09-22 13:09:18 +02:00
bors
07167826d6 auto merge of #9395 : brson/rust/0.8, r=alexcrichton 2013-09-22 00:25:56 -07:00
bors
11f68f51f0 auto merge of #9353 : brson/rust/sched, r=alexcrichton,cmr
This guarantees that if there is work to do it will be found
2013-09-21 18:31:01 -07:00
Brian Anderson
695cb9fc2b Update version numbers to 0.8 2013-09-21 16:25:08 -07:00
Jeff Olson
c6e5b86db6 std: add file::io::test module and ensure correct build 2013-09-21 14:15:58 -07:00
Jeff Olson
6ebb364d80 std: cleanup file::io rustdoc_ng output 2013-09-21 14:15:58 -07:00
bors
d3e6889060 auto merge of #9381 : luisbg/rust/master, r=cmr
Closes #9379
2013-09-21 08:10:55 -07:00
bors
650100dfbf auto merge of #9369 : sebcrozet/rust/f64_inline, r=thestinger
This was, somehow, missed by #8332.
2013-09-21 06:05:56 -07:00
bors
030fffa57c auto merge of #9368 : StrLght/rust/master, r=thestinger 2013-09-21 04:45:57 -07:00
bors
55f528f5af auto merge of #9354 : thestinger/rust/cleanup, r=alexcrichton
I don't see the point of this function, and there are no users.
2013-09-21 01:35:59 -07:00
Alex Crichton
4fd061c426 Implement a web backend for rustdoc_ng
This large commit implements and `html` output option for rustdoc_ng. The
executable has been altered to be invoked as "rustdoc_ng html <crate>" and
it will dump everything into the local "doc" directory. JSON can still be
generated by changing 'html' to 'json'.

This also fixes a number of bugs in rustdoc_ng relating to comment stripping,
along with some other various issues that I found along the way.

The `make doc` command has been altered to generate the new documentation into
the `doc/ng/$(CRATE)` directories.
2013-09-20 22:49:03 -07:00
Luis de Bethencourt
e98bd9bb68 Document a few undocumented methos in Vector
Closes #9379
2013-09-21 01:21:08 -04:00
Sébastien Crozet
7cb0c6392b std: add missing #[inline] annotation to the f64 neg method.
This was, somehow, missed by #8332.
2013-09-21 00:23:49 +02:00
Grigoriy
eb519b952d Fix example in std::Option 2013-09-21 02:00:20 +04:00
bors
a95604fcaa auto merge of #9276 : alexcrichton/rust/dox, r=brson
Hopefull this will make our libstd docs appear a little more "full".
2013-09-20 14:11:08 -07:00
bors
ccb80ab4f7 auto merge of #9321 : chris-morgan/rust/lowercase-nan-methods, r=brson
This is for consistency in naming conventions.

- ``std::num::Float::NaN()`` is changed to ``nan()``;
- ``std::num::Float.is_NaN()`` is changed to ``is_nan()``; and
- ``std::num::strconv::NumStrConv::NaN()`` is changed to ``nan()``.

Fixes #9319.
2013-09-20 02:01:13 -07:00
bors
e5fdc7dee5 auto merge of #9320 : chris-morgan/rust/unreachable-macro-part-two-of-two-containing-the-destruction-of-the-unreachable-function, r=alexcrichton
This is the second of two parts of #8991, now possible as a new snapshot
has been made. (The first part implemented the unreachable!() macro; it
was #8992, 6b7b8f2682.)

``std::util::unreachable()`` is removed summarily; any code which used
it should now use the ``unreachable!()`` macro.

Closes #9312.

Closes #8991.
2013-09-20 00:36:11 -07:00
Daniel Micay
807725b995 util: remove unused with function 2013-09-20 00:59:02 -04:00
Brian Anderson
c767643f2b std::rt: Try stealing from all schedulers
This guarantees that if there is work to do it will be found
2013-09-19 19:48:58 -07:00
Luqman Aden
2d22c0c8e4 Fix unresolved symbol error for the crate_map in libstd on os x. 2013-09-19 18:17:29 -04:00
Alex Crichton
5165ecde66 Ignore io::process tests
They're causing syscalls to get interrupted, and std::io doesn't correctly
handle EINTR
2013-09-19 15:17:29 -07:00
bors
755f6229da auto merge of #9279 : erickt/rust/master, r=alexcrichton
`Some(5).or_{default,zero}` can be easily replaced with `Some(Some(5).unwrap_or_default())`.
2013-09-19 09:55:59 -07:00
Chris Morgan
d9874c0885 Rename the NaN and is_NaN methods to lowercase.
This is for consistency in naming conventions.

- ``std::num::Float::NaN()`` is changed to ``nan()``;
- ``std::num::Float.is_NaN()`` is changed to ``is_nan()``; and
- ``std::num::strconv::NumStrConv::NaN()`` is changed to ``nan()``.

Fixes #9319.
2013-09-19 23:59:51 +10:00
bors
4904bc33cc auto merge of #9292 : blake2-ppc/rust/borrow-ref-eq, r=huonw
std::borrow: Use raw pointer comparison for `ref_eq`

Compare as `*T` in `ref_eq` instead of casting to uint, to match what
std::ptr does.
2013-09-19 03:01:05 -07:00
bors
a7cf7b7b0b auto merge of #9291 : jzelinskie/rust/remove-cond, r=alexcrichton
This is my first contribution, so please point out anything that I may have missed.

I consulted IRC and settled on `match () { ... }` for most of the replacements.
2013-09-19 00:31:05 -07:00
bors
3c0013134c auto merge of #9280 : alexcrichton/rust/less-c++, r=brson
Some of the functions could be converted to rust, but the functions dealing with
signals were moved to rust_builtin.cpp instead (no reason to keep the original
file around for one function).

Closes #2674

Because less C++ is better C++!
2013-09-18 22:15:59 -07:00
Chris Morgan
e2807a4565 Replace unreachable() calls with unreachable!().
This is the second of two parts of #8991, now possible as a new snapshot
has been made. (The first part implemented the unreachable!() macro; it
was #8992, 6b7b8f2682.)

``std::util::unreachable()`` is removed summarily; any code which used
it should now use the ``unreachable!()`` macro.

Closes #9312.

Closes #8991.
2013-09-19 15:04:03 +10:00
Alex Crichton
c3ad785d83 Remove rust_run_program.cpp
Some of the functions could be converted to rust, but the functions dealing with
signals were moved to rust_builtin.cpp instead (no reason to keep the original
file around for one function).

Closes #2674
2013-09-18 20:58:56 -07:00
Luqman Aden
133200a6e2 libstd/librustc: Make the crate_map a weak symbol that libstd links against. 2013-09-18 17:44:04 -04:00
Alex Crichton
cb7756a81d Implement process bindings to libuv
This is a re-landing of #8645, except that the bindings are *not* being used to
power std::run just yet. Instead, this adds the bindings as standalone bindings
inside the rt::io::process module.

I made one major change from before, having to do with how pipes are
created/bound. It's much clearer now when you can read/write to a pipe, as
there's an explicit difference (different types) between an unbound and a bound
pipe. The process configuration now takes unbound pipes (and consumes ownership
of them), and will return corresponding pipe structures back if spawning is
successful (otherwise everything is destroyed normally).
2013-09-18 13:52:18 -07:00
Luqman Aden
9621156fc3 librustc/libstd: No longer pass crate_map to start. 2013-09-18 16:51:27 -04:00
bors
d2b0b11aeb auto merge of #9296 : alexcrichton/rust/snapshots, r=cmr
huzzah!
2013-09-18 11:46:37 -07:00
Alex Crichton
817576ee70 Register new snapshots 2013-09-18 11:07:22 -07:00
bors
b43ee6cd2e auto merge of #9277 : crabtw/rust/mips, r=brson
This patch fixes some errors of MIPS target, however, MIPS C ABI is still broken. I will send another PR to fix the problem.

Because MIPS target has no "generic" CPU name, I add --target-cpu and --target-feature to RUST_FLAGS. In order to workaround the "compact frame descriptions incompatible with DWARF2 .eh_frame" problem, the linker I used is CXX but not CC.
2013-09-18 09:15:56 -07:00
bors
e02313a172 auto merge of #9275 : blake2-ppc/rust/float-from-str, r=thestinger
std: Remove {float,f64,f32}::from_str in favor of from_str in the prelude

Like issue #9209, remove float::{from_str, from_str_radix} in favor of
the two corresponding traits. The same for modules f64 and f32.

New usage is:

    from_str::<float>("1.2e34")
2013-09-18 08:01:00 -07:00
Jimmy Zelinskie
4757631369 Remove and replace cond! Closes #9282. 2013-09-18 07:34:02 -04:00
Brian Anderson
fd0fcba9f5 std: Fix an invalid read in from_c_multistring
When `count` is `Some` this function was reading a byte past the end
of the buffer.
2013-09-17 21:25:18 -07:00
blake2-ppc
7024a9d529 std::borrow: Use raw pointer comparison for ref_eq
Compare as `*T` in `ref_eq` instead of casting to uint, to match what
std::ptr does.
2013-09-18 06:05:06 +02:00
Alex Crichton
88bc11e646 Document a few undocumented modules in libstd
Hopefull this will make our libstd docs appear a little more "full".
2013-09-17 20:50:23 -07:00
Erick Tryzelaar
5ab843fbc3 std: Remove Option.or_{default,zero}
These can be replaced with `Some(option.or_default())`.
2013-09-17 19:50:41 -07:00
Jyun-Yan You
d11f746cc1 fix compilation errors of mips target 2013-09-18 10:10:32 +08:00
blake2-ppc
b5d560a9e0 std: Remove {float,f64,f32}::from_str in favor of from_str
Like issue #9209, remove float::{from_str, from_str_radix} in favor of
the two corresponding traits. The same for modules f64 and f32.

New usage is

	from_str::<float>("1.2e34")
2013-09-18 04:02:42 +02:00
bors
c135cb2683 auto merge of #9235 : olsonjeffery/rust/newrt_file_io_1, r=thestinger
A quick rundown:

- added `file::{readdir, stat, mkdir, rmdir}`
- Added access-constrained versions of `FileStream`; `FileReader` and `FileWriter` respectively
- big rework in `uv::file` .. most actions are by-val-self methods on `FsRequest`; `FileDescriptor` has gone the way of the dinosaurs
- playing nice w/ homing IO (I just copied ecr's work, hehe), etc
- added `FileInfo` trait, with an impl for `Path`
  - wrapper for file-specific actions, with the file path always implied by self's value
  - has the means to create `FileReader` & `FileWriter` (this isn't exposed in the top-level free function API)
  - has "safe" wrappers for `stat()` that won't throw in the event of non-existence/error (in this case, I mean `is_file` and `exists`)
  - actions should fail if done on non-regular-files, as appropriate
- added `DirectoryInfo` trait, with an impl for `Path`
  - pretty much ditto above, but for directories
  - added `readdir` (!!) to iterate over entries in a dir as a `~[Path]` (this was *brutal* to get working)

...<del>and lots of other stuff</del>not really. Do your worst!
2013-09-17 14:05:45 -07:00
Jeff Olson
70152ff557 std: fix win32 build issue re: multistring parsing 2013-09-17 11:15:33 -07:00
Jeff Olson
a5275ffd5c std: whitespace clean up io::file docs 2013-09-17 10:14:15 -07:00
Daniel Micay
befc561fa4 remove unnecessary transmutes 2013-09-17 11:54:37 -04:00
Jeff Olson
5d9932fddb std: fix win32 build error in os::env() 2013-09-17 08:40:31 -07:00
Jeff Olson
3067ee6373 std: remove RtioStream 2013-09-17 08:01:44 -07:00
bors
29cdf58861 auto merge of #9244 : thestinger/rust/drop, r=catamorphism
This doesn't close any bugs as the goal is to convert the parameter to by-value, but this is a step towards being able to make guarantees about `&T` pointers (where T is Freeze) to LLVM.
2013-09-17 07:15:42 -07:00
Jeff Olson
c0ec40f74b std: merge conflict cleanup from std::str 2013-09-16 23:39:33 -07:00
Jeff Olson
95ef1f5415 std: docstring fixes in io::file 2013-09-16 23:36:39 -07:00
Jeff Olson
56c87ffb30 std: minor cleanup in some io_error descs in io::file 2013-09-16 23:19:24 -07:00
Jeff Olson
d3ed9a9e3b std: lots of docs for std::rt::io::file
i hope they don't bitrot
2013-09-16 23:19:24 -07:00
Jeff Olson
60ba17098b std: FsRequest.req_boilerplate() be &mut self 2013-09-16 23:19:24 -07:00
Jeff Olson
a87ff60f49 std: remove impl'd/commented-out fstat signatures 2013-09-16 23:19:24 -07:00
Jeff Olson
e9acdd9392 std: generlize & move io::file::suppressed_stat to io::ignore_io_error 2013-09-16 23:19:24 -07:00
Jeff Olson
52840a5bbc std: correctly pass STDOUT in to naive_print test fn 2013-09-16 23:19:24 -07:00
Jeff Olson
e741449ea1 std: unignore some file io tests that work on windows, now 2013-09-16 23:19:24 -07:00
Jeff Olson
bf399d558e std: bind uv_fs_readdir(), flesh out DirectoryInfo and docs/cleanup 2013-09-16 23:19:24 -07:00
Jeff Olson
25b4d8c1d7 std: expose more stat info 2013-09-16 23:19:23 -07:00
Jeff Olson
63182885d8 std: more work on from_c_multistring.. let it take an optional len param 2013-09-16 23:19:23 -07:00
Jeff Olson
71c7798d66 std: clean up Dir/FileInfo inheritence and flesh out Dir Info 2013-09-16 23:17:47 -07:00
Jeff Olson
daf4974628 std: win32 os::env() str parsing to str::raw::from_c_multistring + test 2013-09-16 23:17:46 -07:00
Jeff Olson
b49fc4cf4e std: adding file::{stat,mkdir,rmdir}, FileInfo and FileReader/FileWriter
add ignores for win32 tests on previous file io stuff...
2013-09-16 23:17:46 -07:00
Jeff Olson
055488df1a merge cleanup 2013-09-16 23:17:46 -07:00
Jeff Olson
af650572e0 std/rt: in-progress file io work
std: remove unneeded field from RequestData struct

std: rt::uv::file - map us_fs_stat & start refactoring calls into FsRequest

std: stubbing out stat calls from the top-down into uvio

std: us_fs_* operations are now by-val self methods on FsRequest

std: post-rebase cleanup

std: add uv_fs_mkdir|rmdir + tests & minor test cleanup in rt::uv::file

WORKING: fleshing out FileStat and FileInfo + tests

std: reverting test files..

refactoring back and cleanup...
2013-09-16 23:17:46 -07:00
bors
d5e9033a0d auto merge of #9108 : blake2-ppc/rust/hazards-on-overflow, r=alexcrichton
Fix uint overflow bugs in std::{at_vec, vec, str}

Closes #8742

Fix issue #8742, which summarized is: unsafe code in vec and str did assume
that a reservation for `X + Y` elements always succeeded, and didn't overflow.

Introduce the method `Vec::reserve_additional(n)` to make it easy to check for
overflow in `Vec::push` and `Vec::push_all`.

In std::str, simplify and remove a lot of the unsafe code and use `push_str`
instead. With improvements to `.push_str` and the new function
`vec::bytes::push_bytes`, it looks like this change has either no or positive
impact on performance.

I believe there are many places still where `v.reserve(A + B)` still can overflow.
This by itself is not an issue unless followed by (unsafe) code that steps aside
boundary checks.
2013-09-16 19:35:50 -07:00
Daniel Micay
4e161a4d40 switch Drop to &mut self 2013-09-16 22:19:23 -04:00
blake2-ppc
e211888407 std::at_vec: Fix segfault on overflow when resizing ~[@T]
Easy to reproduce:

    let mut v = ~[@1];
    v.resize(-1);  // success a.k.a silent failure
    v.push(@2); // segfault
2013-09-17 02:48:00 +02:00
blake2-ppc
6e538edea2 rt::io: Use vec::reserve_additional 2013-09-17 02:48:00 +02:00
blake2-ppc
90dc9512ba std::str: Fix overflow problems in unsafe code
See issue #8742
2013-09-17 02:47:59 +02:00
bors
0ec4d34b3f auto merge of #9211 : klutzy/rust/win32-fix, r=alexcrichton 2013-09-16 11:30:42 -07:00
blake2-ppc
e34e2032e8 std::str: Add bench tests for StrVector::connect() and for str::push_str 2013-09-16 19:13:41 +02:00
blake2-ppc
8fce135326 std::vec: Add function vec::bytes::push_bytes
`push_bytes` is implemented with `ptr::copy_memory` here since this
function is intended to be used to implement `.push_str()` for str, so
we want to avoid the overhead.
2013-09-16 19:13:41 +02:00
blake2-ppc
8d488f38ed std::vec: Fix hazards with uint overflows in unsafe code
Issue #8742

Add the method `.reserve_additional(n: uint)`: Check for overflow in
self.len() + n, and reserve that many elements (rounded up to next power
of two). Does nothing if self.len() + n < self.capacity() already.
2013-09-16 19:13:30 +02:00
bors
6bc48b63f3 auto merge of #9192 : Kimundi/rust/master, r=huonw
A SendStr is a string that can hold either a ~str or a &'static str.
This can be useful as an optimization when an allocation is sometimes needed but the common case is statically known.

Possible use cases include Maps with both static and owned keys, or propagating error messages across task boundaries.

SendStr implements most basic traits in a way that hides the fact that it is an enum; in particular things like order and equality are only determined by the content of the wrapped strings.

This basically reimplements #7599 and has a use case for replacing an similar type in `std::rt::logging` ( Added in #9180).
2013-09-16 09:00:44 -07:00
Marvin Löbel
0635cb75b5 Corrected a few small style issues
Split up test function a bit
2013-09-16 17:45:24 +02:00
Marvin Löbel
76c3e8a38c Add an SendStr type
A SendStr is a string that can hold either a ~str or a &'static str.
This can be useful as an optimization when an allocation is sometimes needed but the common case is statically known.

Possible use cases include Maps with both static and owned keys, or propagating error messages across task boundaries.

SendStr implements most basic traits in a way that hides the fact that it is an enum; in particular things like order and equality are only determined by the content of the wrapped strings.

Replaced std::rt:logging::SendableString with SendStr
Added tests for using an SendStr as key in Hash- and Treemaps
2013-09-16 16:57:50 +02:00
blake2-ppc
2017cc3ce4 std::num: Add uint::next_power_of_two_opt
Like next_power_of_two, but returns None on overflow.
2013-09-16 15:04:48 +02:00
Kevin Ballard
51470f3b97 c_str: Add new method .as_str() -> Option<&str>
Also rustify .as_bytes(), so it no longer calls libc::strlen() and is
inlineable.
2013-09-15 20:30:03 -07:00
klutzy
6d9c399ee2 std::rt::uv::file: Enable tests on Win32
Closes #8814.
2013-09-16 12:01:24 +09:00
klutzy
20e8470953 std::rt::uv::uvio: Enable tests on Win32
Closes #8816.
2013-09-16 10:31:36 +09:00
klutzy
3686c6cbcf std::rt::io::net::tcp: Fix one tcp test on Win32
Fixes `connect_error` part of #8811.
2013-09-16 03:45:20 +09:00
klutzy
879cfe6049 std::rt::uv::uvll: Fix uv_req_type on Win32
Also enables request_sanity_check() test.

Closes #8817
2013-09-16 03:33:29 +09:00
klutzy
f3c8882533 std::os: Use unicode for last_os_error() on Win32
FormatMessageA may return non-ascii message,
which is encoded as system code page, not utf8.
This may cause `assert!(is_utf8(v))` failure on
some non-English machines.
This patch replaces it with FormatMessageW,
which returns utf-16 message.

Fixes `make check-stage2-std` failure on my machine. :)
2013-09-16 03:30:17 +09:00
klutzy
1e745f1679 std::rt::io::support: Fix ignored test on Win32
Assumes drive C: exists.

Closes #8812.
2013-09-16 03:30:10 +09:00
klutzy
d2ce83ccb1 std::rt::io::file: Enable I/O tests on Win32
Enable blocked tests which are now fixed by #9165.

Closes #8810.
2013-09-15 23:20:33 +09:00
blake2-ppc
8522341274 Remove {uint,int,u64,i64,...}::from_str,from_str_radix
Remove these in favor of the two traits themselves and the wrapper
function std::from_str::from_str.

Add the function std::num::from_str_radix in the corresponding role for
the FromStrRadix trait.
2013-09-15 14:29:16 +02:00
Alex Crichton
fd8c05ccc9 Document all of the format! related macros 2013-09-15 01:09:00 -07:00
Alex Crichton
cfe3db810b Reduce the amount of complexity in format!
This renames the syntax-extension file to format from ifmt, and it also reduces
the amount of complexity inside by defining all other macros in terms of
format_args!
2013-09-15 01:09:00 -07:00
Daniel Micay
48f61ecbf9 iter: add the edge case tests for range too 2013-09-15 00:54:32 -04:00
Daniel Micay
8149e5c99f rm some uses of the advance iterator method 2013-09-15 00:45:34 -04:00
blake2-ppc
6e3d5c62e7 std::num: Remove range_step for each numeric type
Replaced by `std::iter::range_step`
2013-09-15 00:41:41 -04:00
blake2-ppc
ad74fde62f Use std::iter::range_step
Use the iterator version instead of the old uint::/int::range_step
functions.
2013-09-15 00:41:34 -04:00
Daniel Micay
66c2965b04 iter: fix RangeInclusive's DoubleEndedIterator 2013-09-15 00:39:34 -04:00
Daniel Micay
bf7587f551 iter: fix range_inclusive when start > stop 2013-09-15 00:32:15 -04:00
Daniel Micay
1f961c74c4 fix range_step{,_inclusive} with negative step 2013-09-15 00:32:07 -04:00
bors
0dbd509e0f auto merge of #9199 : thestinger/rust/range_step, r=cmr
My focus was on getting these to be correct in all cases by handling overflow properly. I'll clean them up and work on the performance later.
2013-09-14 17:10:51 -07:00
Daniel Micay
a18038f3b2 iter: add RangeStep and RangeStepInclusive 2013-09-14 18:26:21 -04:00
bors
cf7e93ff25 auto merge of #9198 : FlaPer87/rust/shared-port, r=cmr
SharedPort implementation was missing in std::comm. Since this module
also wraps SharedChan, it makes sense to have SharedPort defined there
as well.
2013-09-14 15:20:50 -07:00
bors
5c4f65e6f5 auto merge of #9191 : huonw/rust/are-you-tired, r=cmr
Allows `std::rt::io::timer::sleep(1000)` rather than `std::rt::io::timer::Timer::new().unwrap().sleep(1000)`.
2013-09-14 14:05:51 -07:00
Daniel Micay
3aead52586 iter: move Counter impl to the proper place 2013-09-14 16:51:55 -04:00
Daniel Micay
10c8978edb iter: replace comment with a docstring 2013-09-14 16:51:33 -04:00
Flavio Percoco
9357f8f4cd Add SharedPort wrapper around rt::comm::SharedPort
SharedPort implementation was missing in std::comm. Since this module
also wraps SharedChan, it makes sense to have SharedPort defined there
as well.
2013-09-14 22:50:28 +02:00
Daniel Micay
561f1b0063 iter: fix range docstrings 2013-09-14 16:33:19 -04:00
bors
bca015d9ff auto merge of #9182 : bjz/rust/master, r=brson
Somehow this was missed!

cc #4819
2013-09-14 11:15:54 -07:00
bors
1c26513ef9 auto merge of #9180 : blake2-ppc/rust/reduce-either, r=catamorphism
Work a bit towards #9157 "Remove Either". These instances don't need to use Either and are better expressed in other ways (removing allocations and simplifying types).
2013-09-14 08:50:50 -07:00
Huon Wilson
f39ab75a78 std::rt: Add a standalone sleep function. 2013-09-15 00:20:48 +10:00
bors
55b43fa26e auto merge of #9165 : klutzy/rust/newrt-file-fix, r=sanxiyn
It was broken on win32 because of header inconsistency.
2013-09-14 05:00:56 -07:00
bors
f853f0b2d6 auto merge of #9160 : alexcrichton/rust/local-data-docs, r=huonw
Remove references to local_data::Key and only mention the macro for how to
construct new keys into local data.
2013-09-14 02:30:59 -07:00
bors
fbafb41fff auto merge of #9156 : sfackler/rust/buffered-fix, r=huonw
This is a workaround for #9155. Currently, any uses of BufferedStream
outside of libstd ICE.
2013-09-14 01:16:00 -07:00
bors
2aa578efd9 auto merge of #9115 : erickt/rust/master, r=erickt
This is a series of patches to modernize option and result. The highlights are:

* rename `.unwrap_or_default(value)` and etc to `.unwrap_or(value)`
* add `.unwrap_or_default()` that uses the `Default` trait
* add `Default` implementations for vecs, HashMap, Option
* add  `Option.and(T) -> Option<T>`, `Option.and_then(&fn() -> Option<T>) -> Option<T>`, `Option.or(T) -> Option<T>`, and `Option.or_else(&fn() -> Option<T>) -> Option<T>`
* add `option::ToOption`, `option::IntoOption`, `option::AsOption`, `result::ToResult`, `result::IntoResult`, `result::AsResult`, `either::ToEither`, and `either::IntoEither`, `either::AsEither`
* renamed `Option::chain*` and `Result::chain*` to `and_then` and `or_else` to avoid the eventual collision with `Iterator.chain`.
* Added a bunch of impls of `Default`
* Added a `#[deriving(Default)]` syntax extension
* Removed impls of `Zero` for `Option<T>` and vecs.
2013-09-14 00:01:04 -07:00
Alex Crichton
0af2bd829e Remove all usage of change_dir_locked
While usage of change_dir_locked is synchronized against itself, it's not
synchronized against other relative path usage, so I'm of the opinion that it
just really doesn't help in running tests. In order to prevent the problems that
have been cropping up, this completely removes the function.

All existing tests (except one) using it have been moved to run-pass tests where
they get their own process and don't need to be synchronized with anyone else.

There is one now-ignored rustpkg test because when I moved it to a run-pass test
apparently run-pass isn't set up to have 'extern mod rustc' (it ends up having
linkage failures).
2013-09-13 21:58:00 -07:00
Brendan Zabarauskas
ec8f88417c Add Orderable bound to num::Primitive 2013-09-14 13:31:31 +10:00
blake2-ppc
830ac37ca2 std::logging: Use a more specific enum than Either 2013-09-14 04:07:43 +02:00
Erick Tryzelaar
93683ae6da std: Fix another windows problem with the unwrap_or_default rename 2013-09-13 07:09:32 -07:00
Erick Tryzelaar
28eb49bfbf std: rename Option.chain to Option.and_then on windows 2013-09-13 06:58:46 -07:00
klutzy
3924cb031f std::rt::io: Fix file I/O on Win32
It was broken on win32 because of header inconsistency.
2013-09-13 19:23:57 +09:00
Alex Crichton
d0462f070c Improve the local_data docs slightly
Remove references to local_data::Key and only mention the macro for how to
construct new keys into local data.
2013-09-12 23:26:06 -07:00
bors
323e8f07ff auto merge of #9087 : fhahn/rust/rust_crate_map, r=brson
This patch converts the rust_crate_map.cpp to Rust as mentioned at the end of #8880.
2013-09-12 23:00:51 -07:00
Steven Fackler
ef964a162f Stop using newtypes in rt::io::buffered
This is a workaround for #9155. Currently, any uses of BufferedStream
outside of libstd ICE.
2013-09-12 21:48:47 -07:00
Erick Tryzelaar
7f9c5aae9e std: Restore Option::chain{,_mut}_ref as and_then{,_mut}_ref 2013-09-12 18:54:28 -07:00
Erick Tryzelaar
f107718a9b std: Remove Zero impl for Option
Options are not numeric types, so it doesn't make sense for them to
implement Zero.
2013-09-12 18:54:13 -07:00
Erick Tryzelaar
43aba856b4 std: Remove Zero impl from vec
Vecs are not numeric types, so it doesn't make sense for them to
implement Zero.
2013-09-12 18:54:13 -07:00
Erick Tryzelaar
ca47eebb44 std: Add a bunch of Default impls 2013-09-12 18:54:13 -07:00
Erick Tryzelaar
38f97ea103 std: Rename {Option,Result}::chain{,_err}* to {and_then,or_else} 2013-09-12 18:54:13 -07:00
Erick Tryzelaar
e03d60e9eb std: Add ToEither/IntoEither/AsEither 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
12e0d7ecf0 std: Add ToResult/IntoResult/AsResult 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
ff34740a29 std: Add ToOption/IntoOption/AsOption 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
b8a284e873 std: fix a warning 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
d625d4a598 std: Add Option.{and,and_then,or,or_else} 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
7380b1ce7f std: Add Option.unwrap_or_else and a couple tests 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
2bd87ad432 std: Add Default implementation for vecs 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
e6c11313c8 std: Add Option.{result_or_default,or_default} that uses Default 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
4a73c8eac7 std: add default implementations to Option 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
653400a7f0 std: add default implementations to HashMap 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
45c62c08f9 std: rename Option::unwrap_or_default() to unwrap_or() 2013-09-12 18:54:11 -07:00
Florian Hahn
2b5f4b55c0 Convert rust_crate_map.cpp to Rust
Conflicts:
	src/libstd/rt/logging.rs
2013-09-13 00:47:30 +02:00
bors
cabba6b4d3 auto merge of #9136 : thestinger/rust/ptr, r=alexcrichton
This is mostly for consistency, as you can now compare raw pointers in
constant expressions or without the standard library.

It also reduces the number of `ptrtoint` instructions in the IR, making
tracking down culprits of what's usually an anti-pattern easier.
2013-09-12 13:10:55 -07:00
bors
a6be8d353b auto merge of #9140 : alexcrichton/rust/issue-9119, r=huonw
Closes #9119
2013-09-12 11:56:00 -07:00
bors
4825db44c8 auto merge of #9012 : alexcrichton/rust/format-args, r=huonw
The purpose of this macro is to further reduce the number of allocations which
occur when dealing with formatting strings. This macro will perform all of the
static analysis necessary to validate that a format string is safe, and then it
will wrap up the "format string" into an opaque struct which can then be passed
around.

Two safe functions are added (write/format) which take this opaque argument
structure, unwrap it, and then call the unsafe version of write/format (in an
unsafe block). Other than these two functions, it is not intended for anyone to
ever look inside this opaque struct.

The macro looks a bit odd, but mostly because of rvalue lifetimes this is the
only way for it to be safe that I know of.

Example use-cases of this are:

* third-party libraries can use the default formatting syntax without any
  forced allocations
* the fail!() macro can avoid allocating the format string
* the logging macros can avoid allocation any strings

I plan on transitioning the standard logging/failing to using these macros soon. This is currently blocking on inner statics being usable in cross-crate situations (still tracking down bugs there), but this will hopefully be coming soon!

Additionally, I'd rather settle on a name now than later, so if anyone has a better suggestion other than `format_args`, I'm not attached to the name at all :)
2013-09-12 03:21:08 -07:00
bors
68125359cd auto merge of #9138 : alexcrichton/rust/dynamic-lib-not-threadsafe, r=thestinger
The library isn't thread-safe, cc #9137
2013-09-12 01:16:08 -07:00
Alex Crichton
a018a5c343 Parse underscores in identifiers for format!
Closes #9119
2013-09-12 01:07:10 -07:00
Alex Crichton
9a5f95a82c Implement a format_args!() macro
The purpose of this macro is to further reduce the number of allocations which
occur when dealing with formatting strings. This macro will perform all of the
static analysis necessary to validate that a format string is safe, and then it
will wrap up the "format string" into an opaque struct which can then be passed
around.

Two safe functions are added (write/format) which take this opaque argument
structure, unwrap it, and then call the unsafe version of write/format (in an
unsafe block). Other than these two functions, it is not intended for anyone to
ever look inside this opaque struct.

The macro looks a bit odd, but mostly because of rvalue lifetimes this is the
only way for it to be safe that I know of.

Example use-cases of this are:

* third-party libraries can use the default formatting syntax without any
  forced allocations
* the fail!() macro can avoid allocating the format string
* the logging macros can avoid allocation any strings
2013-09-12 00:36:54 -07:00
Alex Crichton
645b83d712 Flag the dynamic_lib tests as ignored
The library isn't thread-safe, cc #9137
2013-09-11 23:22:52 -07:00
bors
03ca1befb3 auto merge of #9114 : sfackler/rust/flush-fix, r=brson 2013-09-11 23:11:04 -07:00
Daniel Micay
b7435cf447 implement raw pointer comparisons in librustc
This is mostly for consistency, as you can now compare raw pointers in
constant expressions or without the standard library.

It also reduces the number of `ptrtoint` instructions in the IR, making
tracking down culprits of what's usually an anti-pattern easier.
2013-09-12 01:58:39 -04:00
bors
c8f69dd2a4 auto merge of #9038 : singingboyo/rust/with-mem-writer, r=anasazi
This is in many ways a replacement for the current std::io::with_str_writer.
2013-09-11 12:16:01 -07:00
bors
f711650b8d auto merge of #8999 : anasazi/rust/multi-threaded-io-tests, r=brson
Resolves #8685
2013-09-11 10:21:02 -07:00
Florian Hahn
b0e13e0d0e Add HashSet::with_capacity_and_keys() function
This function can be use to create HashSets before the tls is
initialized.
2013-09-11 16:57:15 +02:00
Steven Fackler
412ab49557 Don't fail in TcpStream.flush 2013-09-10 21:43:47 -07:00
bors
ba9fa89bfb auto merge of #9091 : sfackler/rust/buffered, r=alexcrichton
The default buffer size is the same as the one in Java's BufferedWriter.

We may want BufferedWriter to have a Drop impl that flushes, but that
isn't possible right now due to #4252/#4430. This would be a bit
awkward due to the possibility of the inner flush failing. For what it's
worth, Java's BufferedReader doesn't have a flushing finalizer, but that
may just be because Java's finalizer support is awful.

The current implementation of BufferedStream is weird in my opinion, but
it's what the discussion in #8953 settled on.

I wrote a custom copy function since vec::copy_from doesn't optimize as
well as I would like.

Closes #8953
2013-09-10 21:36:06 -07:00