summary refs log tree commit diff
path: root/src/libstd
AgeCommit message (Collapse)AuthorLines
2015-02-01openbsd: incoporate remarksSébastien Marie-39/+26
- consolidate target_record_sp_limit and target_get_sp_limit functions for aarch64, powerpc, arm-ios and openbsd as there are all without segmented stacks (no need to duplicate functions). - rename __load_self function to rust_load_self - use a mutex inner load_self() as underline implementation is not thread-safe
2015-02-01openbsd supportSébastien Marie-37/+199
2015-02-01Auto merge of #21788 - carllerche:master, r=alexcrichtonbors-1/+56
The implementation is similar to `Thread::park`
2015-01-31make Send/Sync impl of RawTable manualAlexis-12/+14
2015-01-31Kill more `isize`sTobias Bucher-6/+6
2015-01-30Implement Thread::park_timeoutCarl Lerche-1/+56
2015-01-30Test fixes and rebase conflictsAlex Crichton-25/+23
Also some tidying up of a bunch of crate attributes
2015-01-30rollup merge of #21631: tbu-/isize_policeAlex Crichton-208/+208
Conflicts: src/libcoretest/iter.rs
2015-01-30rollup merge of #21713: alexcrichton/second-pass-fmtAlex Crichton-10/+10
2015-01-30rollup merge of #21736: sfackler/bufread-capacity-fixAlex Crichton-1/+1
We don't care about how much space the allocation has, but the actual usable space in the buffer. r? @alexcrichton
2015-01-30rollup merge of #21733: mneumann/fix-io-rename-dfAlex Crichton-1/+1
2015-01-30rollup merge of #21718: alexcrichton/stabilize-from-strAlex Crichton-65/+93
This commits adds an associated type to the `FromStr` trait representing an error payload for parses which do not succeed. The previous return value, `Option<Self>` did not allow for this form of payload. After the associated type was added, the following attributes were applied: * `FromStr` is now stable * `FromStr::Err` is now stable * `FromStr::from_str` is now stable * `StrExt::parse` is now stable * `FromStr for bool` is now stable * `FromStr for $float` is now stable * `FromStr for $integral` is now stable * Errors returned from stable `FromStr` implementations are stable * Errors implement `Display` and `Error` (both impl blocks being `#[stable]`) Closes #15138
2015-01-30rollup merge of #21704: FlaPer87/macro-reexportAlex Crichton-1/+1
Conflicts: src/libstd/lib.rs
2015-01-30rollup merge of #21678: vojtechkral/threads-native-namesAlex Crichton-2/+52
Fixes #10302 I really am not sure I'm doing this right, so here goes nothing... Also testing this isn't easy. I don't have any other *nix boxes besides a Linux one. Test code: ```rust use std::thread; use std::io::timer::sleep; use std::time::duration::Duration; fn make_thread<'a>(i: i64) -> thread::JoinGuard<'a, ()> { thread::Builder::new().name(format!("MyThread{}", i).to_string()).scoped(move || { println!("Start: {}", i); sleep(Duration::seconds(i)); println!("End: {}", i); }) } fn main() { let mut guards = vec![make_thread(3)]; for i in 4i64..16 { guards.push(make_thread(i)); } } ``` GDB output on my machine: ``` (gdb) info threads Id Target Id Frame 15 Thread 0x7fdfbb35f700 (LWP 23575) "MyThread3" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 14 Thread 0x7fdfba7ff700 (LWP 23576) "MyThread4" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 13 Thread 0x7fdfba5fe700 (LWP 23577) "MyThread5" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 12 Thread 0x7fdfba3fd700 (LWP 23578) "MyThread6" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 11 Thread 0x7fdfb8dfe700 (LWP 23580) "MyThread4" 0x00007fdfbb746193 in select () from /usr/lib/libc.so.6 10 Thread 0x7fdfb8fff700 (LWP 23579) "MyThread7" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 9 Thread 0x7fdfb8bfd700 (LWP 23581) "MyThread8" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 8 Thread 0x7fdfb3fff700 (LWP 23582) "MyThread9" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 7 Thread 0x7fdfb3dfe700 (LWP 23583) "MyThread10" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 6 Thread 0x7fdfb3bfd700 (LWP 23584) "MyThread11" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 5 Thread 0x7fdfb2bff700 (LWP 23585) "MyThread12" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 4 Thread 0x7fdfb29fe700 (LWP 23586) "MyThread13" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 3 Thread 0x7fdfb27fd700 (LWP 23587) "MyThread14" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 2 Thread 0x7fdfb1bff700 (LWP 23588) "MyThread15" 0x00007fdfbbe35a8d in nanosleep () from /usr/lib/libpthread.so.0 * 1 Thread 0x7fdfbc411800 (LWP 23574) "threads" 0x00007fdfbbe2e505 in pthread_join () from /usr/lib/libpthread.so.0 ``` (I'm not sure why one of the threads is duplicated, but it does that without my patch too...)
2015-01-30rollup merge of #21495: richo/unexported-unmangled-lintAlex Crichton-0/+5
The usecase is that functions made visible to systems outside of the rust ecosystem require the symbol to be visible. This adds a lint for functions that are not exported, but also not mangled. It has some gotchas: [ ]: There is fallout in core that needs taking care of [ ]: I'm not convinced the error message is correct [ ]: It has no tests ~~However, there's an underlying issue which I'd like feedback on- which is that my belief that that non-pub functions would not have their symbols exported, however that seems not to be the case in the first case that this lint turned up in rustc (`rust_fail`), which intuition suggests has been working.~~ This seems to be a separate bug in rust, wherein the symbols are exported in binaries, but not in rlibs or dylibs. This lint would catch that case.
2015-01-30std: Stabilize the std::fmt moduleAlex Crichton-10/+10
This commit performs a final stabilization pass over the std::fmt module, marking all necessary APIs as stable. One of the more interesting aspects of this module is that it exposes a good deal of its runtime representation to the outside world in order for `format_args!` to be able to construct the format strings. Instead of hacking the compiler to assume that these items are stable, this commit instead lays out a story for the stabilization and evolution of these APIs. There are three primary details used by the `format_args!` macro: 1. `Arguments` - an opaque package of a "compiled format string". This structure is passed around and the `write` function is the source of truth for transforming a compiled format string into a string at runtime. This must be able to be constructed in stable code. 2. `Argument` - an opaque structure representing an argument to a format string. This is *almost* a trait object as it's just a pointer/function pair, but due to the function originating from one of many traits, it's not actually a trait object. Like `Arguments`, this must be constructed from stable code. 3. `fmt::rt` - this module contains the runtime type definitions primarily for the `rt::Argument` structure. Whenever an argument is formatted with nonstandard flags, a corresponding `rt::Argument` is generated describing how the argument is being formatted. This can be used to construct an `Arguments`. The primary interface to `std::fmt` is the `Arguments` structure, and as such this type name is stabilize as-is today. It is expected for libraries to pass around an `Arguments` structure to represent a pending formatted computation. The remaining portions are largely "cruft" which would rather not be stabilized, but due to the stability checks they must be. As a result, almost all pieces have been renamed to represent that they are "version 1" of the formatting representation. The theory is that at a later date if we change the representation of these types we can add new definitions called "version 2" and corresponding constructors for `Arguments`. One of the other remaining large questions about the fmt module were how the pending I/O reform would affect the signatures of methods in the module. Due to [RFC 526][rfc], however, the writers of fmt are now incompatible with the writers of io, so this question has largely been solved. As a result the interfaces are largely stabilized as-is today. [rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0526-fmt-text-writer.md Specifically, the following changes were made: * The contents of `fmt::rt` were all moved under `fmt::rt::v1` * `fmt::rt` is stable * `fmt::rt::v1` is stable * `Error` is stable * `Writer` is stable * `Writer::write_str` is stable * `Writer::write_fmt` is stable * `Formatter` is stable * `Argument` has been renamed to `ArgumentV1` and is stable * `ArgumentV1::new` is stable * `ArgumentV1::from_uint` is stable * `Arguments::new_v1` is stable (renamed from `new`) * `Arguments::new_v1_formatted` is stable (renamed from `with_placeholders`) * All formatting traits are now stable, as well as the `fmt` method. * `fmt::write` is stable * `fmt::format` is stable * `Formatter::pad_integral` is stable * `Formatter::pad` is stable * `Formatter::write_str` is stable * `Formatter::write_fmt` is stable * Some assorted top level items which were only used by `format_args!` were removed in favor of static functions on `ArgumentV1` as well. * The formatting-flag-accessing methods remain unstable Within the contents of the `fmt::rt::v1` module, the following actions were taken: * Reexports of all enum variants were removed * All prefixes on enum variants were removed * A few miscellaneous enum variants were renamed * Otherwise all structs, fields, and variants were marked stable. In addition to these actions in the `std::fmt` module, many implementations of `Show` and `String` were stabilized as well. In some other modules: * `ToString` is now stable * `ToString::to_string` is now stable * `Vec` no longer implements `fmt::Writer` (this has moved to `String`) This is a breaking change due to all of the changes to the `fmt::rt` module, but this likely will not have much impact on existing programs. Closes #20661 [breaking-change]
2015-01-30std: Stabilize FromStr and parseAlex Crichton-65/+93
This commits adds an associated type to the `FromStr` trait representing an error payload for parses which do not succeed. The previous return value, `Option<Self>` did not allow for this form of payload. After the associated type was added, the following attributes were applied: * `FromStr` is now stable * `FromStr::Err` is now stable * `FromStr::from_str` is now stable * `StrExt::parse` is now stable * `FromStr for bool` is now stable * `FromStr for $float` is now stable * `FromStr for $integral` is now stable * Errors returned from stable `FromStr` implementations are stable * Errors implement `Display` and `Error` (both impl blocks being `#[stable]`) Closes #15138
2015-01-30fixes after rebaseJorge Aparicio-1/+0
2015-01-30s/while let/for/g now that #21245 has been fixedJorge Aparicio-16/+5
2015-01-30smoke out remaining bugsJorge Aparicio-7/+2
2015-01-30fix testsJorge Aparicio-0/+5
2015-01-30fix falloutJorge Aparicio-8/+24
2015-01-30lint: Add test for no_mangleRicho Healey-7/+3
2015-01-29rt: allow unexported functionsRicho Healey-0/+9
rust_panic is unexported, however the metadata exported will usually include it for attaching breakpoints.
2015-01-30Add a few missing stability markers.Chris Morgan-0/+38
2015-01-30Remove all `i` suffixesTobias Bucher-208/+208
2015-01-30Change from core::ops::RangeFull to std::opsNick Cameron-1/+0
2015-01-30Rename FullRange to RangeFullNick Cameron-1/+25
2015-01-29Auto merge of #21677 - japaric:no-range, r=alexcrichtonbors-191/+191
Note: Do not merge until we get a newer snapshot that includes #21374 There was some type inference fallout (see 4th commit) because type inference with `a..b` is not as good as with `range(a, b)` (see #21672). r? @alexcrichton
2015-01-29s/Show/Debug/gJorge Aparicio-33/+33
2015-01-29remove unused importsJorge Aparicio-1/+1
2015-01-29fix inference falloutJorge Aparicio-6/+6
2015-01-29convert remaining `range(a, b)` to `a..b`Jorge Aparicio-16/+16
2015-01-29`for x in range(a, b)` -> `for x in a..b`Jorge Aparicio-128/+128
sed -i 's/in range(\([^,]*\), *\([^()]*\))/in \1\.\.\2/g' **/*.rs
2015-01-29`range(a, b).foo()` -> `(a..b).foo()`Jorge Aparicio-13/+13
sed -i 's/ range(\([^,]*\), *\([^()]*\))\./ (\1\.\.\2)\./g' **/*.rs
2015-01-29Auto merge of #21730 - Manishearth:rollup, r=alexcrichtonbors-14/+7
Should clear our backlog of rollups from the queue
2015-01-29Feature gate macro_reexport. Fixes #20906Flavio Percoco-1/+1
2015-01-29Auto merge of #21680 - japaric:slice, r=alexcrichtonbors-9/+9
Replaces `slice_*` method calls with slicing syntax, and removes `as_slice()` calls that are redundant due to `Deref`.
2015-01-28Fix up check to bypass internal bufferSteven Fackler-1/+1
We don't care about how much space the allocation has, but the actual usable space in the buffer.
2015-01-29Fix wrong use std::io -> old_ioMichael Neumann-1/+1
2015-01-29Rollup merge of 21654 - FlaPer87:unify-impls, r=alexcrichtonManish Goregaokar-13/+6
2015-01-29Rollup merge of #21640 - retep998:rmdir, r=alexcrichtonManish Goregaokar-1/+1
`_wrmdir` is literally just a wrapper around `RemoveDirectoryW`, so let's just use `RemoveDirectoryW`. r? @alexcrichton
2015-01-28Merge remote-tracking branch 'origin/master' into rollupManish Goregaokar-498/+632
Conflicts: src/libcollections/slice.rs src/libcore/nonzero.rs src/libcore/ops.rs
2015-01-28Thread native name setting, fix #10302Vojtech Kral-1/+1
2015-01-28Thread native name setting, fix #10302Vojtech Kral-1/+1
2015-01-28Thread native name setting, fix #10302Vojtech Kral-19/+18
2015-01-28Rollup merge of #21676 - Victory:fix-deprication-in-random, r=alexcrichtonManish Goregaokar-31/+31
Cleanup mention of uint, use usize/us instead. This includes the example `println!("{}", 2u * x);`
2015-01-27Merge remote-tracking branch 'rust-lang/master'Brian Anderson-575/+600
Conflicts: src/libcore/cell.rs src/librustc_driver/test.rs src/libstd/old_io/net/tcp.rs src/libstd/old_io/process.rs
2015-01-27Rollup merge of #21602 - japaric:derive-copy, r=alexcrichtonManish Goregaokar-4/+4
2015-01-27Thread native name setting, fix #10302Vojtech Kral-4/+4