about summary refs log tree commit diff
path: root/src/libstd
AgeCommit message (Collapse)AuthorLines
2013-10-02std: Replace num::IntConvertible with {To,From}PrimitiveErick Tryzelaar-99/+357
2013-10-02auto merge of #9665 : alexcrichton/rust/snapshot, r=brsonbors-12/+12
Uses the new snapshots to kill the old `loop` and introduce the new `continue`.
2013-10-02auto merge of #9638 : ↵bors-0/+2
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-01auto merge of #9578 : alexcrichton/rust/un-ignore-libuv-process-tests, r=brsonbors-142/+2
Closes #9341
2013-10-01Move the rt::io::process tests to run-passAlex Crichton-142/+2
Closes #9341
2013-10-01Migrate users of 'loop' to 'continue'Alex Crichton-12/+12
Closes #9467
2013-10-01remove the `float` typeDaniel Micay-1502/+27
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-01auto merge of #9644 : alexcrichton/rust/clarify, r=huonwbors-19/+42
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-01auto merge of #9576 : FlaPer87/rust/issue/9125, r=alexcrichtonbors-19/+29
Fixes #9125
2013-10-01Merge fall out of removing fmt!Alex Crichton-4/+4
2013-10-01Update std::task::mod docstringFlavio Percoco-19/+29
2013-09-30std: Remove usage of fmt!Alex Crichton-509/+497
2013-09-30Clarify format! implicit positional referencesAlex Crichton-19/+42
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-01Add new lint: non_uppercase_pattern_statics, for #7526.Felix S. Klock II-0/+2
This tries to warn about code like: ```rust match (0,0) { (0, aha) => { ... }, ... } ``` where `aha` is actually a static constant, not a binding.
2013-09-30auto merge of #9619 : toffaletti/rust/mmap, r=huonwbors-7/+7
2013-09-29reduce heap allocations for MemoryMapJason Toffaletti-7/+7
2013-09-30std::rt::uv::net: Enable tests on Win32klutzy-4/+0
Closes #8815.
2013-09-29Put a newline after each logging messageAlex Crichton-1/+1
2013-09-28auto merge of #9583 : blake2-ppc/rust/connect-vec, r=huonwbors-46/+38
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-27auto merge of #9574 : FlaPer87/rust/suppress_warnings, r=metajackbors-1/+0
Small change that suppresses a warning because of an unused import.
2013-09-27auto merge of #9562 : alexcrichton/rust/snapshots, r=thestingerbors-50/+0
2013-09-28std::vec: Remove functions concat, connectblake2-ppc-20/+5
std::vec::{concat, connect, concat_slices, connect_slices} are replaced by the already existing trait methods .concat_vec() and .connect_vec().
2013-09-27auto merge of #9559 : sfackler/rust/more-visibility, r=alexcrichtonbors-11/+11
2013-09-28std::vec: Sane implementations for connect_vec and concat_vecblake2-ppc-26/+15
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-28std::vec: Add benchmark for .concat_vec and .connect_vecblake2-ppc-0/+18
2013-09-27auto merge of #9557 : blake2-ppc/rust/vec-lifetime-token, r=thestingerbors-6/+6
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-27auto merge of #9552 : brson/rust/0.9-pre, r=alexcrichtonbors-2/+2
2013-09-27Suppress warning by removing unused importFlavio Percoco-1/+0
2013-09-27auto merge of #9550 : alexcrichton/rust/remove-printf, r=thestingerbors-24/+24
The 0.8 release was cut, down with printf!
2013-09-27Register new snapshotsAlex Crichton-50/+0
2013-09-26std: simplify vec.with_c_strErick Tryzelaar-28/+20
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-26std: add micro optimization to vec.with_c_str_uncheckedErick Tryzelaar-0/+47
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-26std: Up vec.with_c_str's stack buffer to 128Erick Tryzelaar-1/+1
This matches @graydon's recommendation.
2013-09-26std: Remove an unnecessary comment from c_strErick Tryzelaar-3/+0
The documentation for `.with_c_str()` already says that the pointer will be deallocated before returning from the function.
2013-09-26std: Micro-optimize vec.with_c_str for short vectorsErick Tryzelaar-14/+52
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-26std: Add benchmarks to c_strErick Tryzelaar-0/+103
2013-09-26std: implement Container for CStringErick Tryzelaar-2/+10
2013-09-26std: removed some warnings in tests.Erick Tryzelaar-7/+6
2013-09-26std and rustc: Convert users of c_str to use .with_c_strErick Tryzelaar-16/+16
2013-09-26Visibility fixesSteven Fackler-11/+11
2013-09-27std::vec: Use a valid value as lifetime dummy in iteratorblake2-ppc-6/+6
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-26Update version numbers to 0.9-preBrian Anderson-2/+2
2013-09-26auto merge of #9261 : alexcrichton/rust/logging, r=huonwbors-58/+72
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-26Update the compiler to not use printf/printflnAlex Crichton-24/+24
2013-09-26auto merge of #9507 : brson/rust/sched, r=alexcrichtonbors-32/+141
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-26auto merge of #9506 : sfackler/rust/visibility, r=alexcrichtonbors-2/+2
2013-09-26auto merge of #9497 : pnkfelix/rust/fsk-7752-use-fcnptr-for-glob-errfunc, r=cmrbors-2/+2
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-26auto merge of #9490 : alexcrichton/rust/issue-9487, r=cmrbors-6/+10
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-25auto merge of #9404 : blake2-ppc/rust/result-map-opt, r=cmrbors-13/+0
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-25std::rt: Implement task yielding. Fix a starvation problemBrian Anderson-32/+141