Commit Graph

4371 Commits

Author SHA1 Message Date
Brendan Zabarauskas 472dfe74b3 Simplify std::num::Primitive trait definition
This removes the `Primitive::{bits, bytes, is_signed}` methods and removes the operator trait constraints, for the reasons outlined below:

- The `Primitive::{bits, bytes}` associated functions were originally added to reflect the existing `BITS` and `BYTES` statics included in the numeric modules. These statics are only exist as a workaround for Rust's lack of CTFE, and should probably be deprecated in the future in favor of using the `std::mem::size_of` function (see #11621).

- `Primitive::is_signed` seems to be of little utility and does not seem to be used anywhere in the Rust compiler or libraries. It is also rather ugly to call due to the `Option<Self>` workaround for #8888.

- The operator trait constraints are already covered by the `Num` trait.
2014-01-18 09:12:53 +11:00
bors 61416626ac auto merge of #11571 : derekchiang/rust/fix-task-docs, r=alexcrichton
There might be a reason, but I failed to see why these comments couldn't be proper rust docs.
2014-01-16 11:26:40 -08:00
bors 6361c1dee5 auto merge of #11579 : kballard/rust/windows-path-join, r=erickt
WindowsPath::new("C:").join("a") produces r"C:". This is incorrect.
It should produce "C:a".
2014-01-16 00:51:44 -08:00
Derek Chiang 0e94ae4d8a Fix some docs in std::rt::task 2014-01-16 14:24:04 +08:00
bors 6708558c34 auto merge of #11548 : bjz/rust/bitwise, r=alexcrichton
One less trait in `std::num` and three less exported in the prelude.

cc. #10387
2014-01-15 20:36:48 -08:00
bors a5ed0c58cb auto merge of #11565 : mozilla/rust/snapshot, r=huonw 2014-01-15 17:46:42 -08:00
Brendan Zabarauskas 1dd6906db2 Merge Bitwise and BitCount traits and remove from prelude, along with Bounded
One less trait in std::num, and three less exported in the prelude.
2014-01-16 11:51:33 +11:00
bors 36971217aa auto merge of #11568 : FlaPer87/rust/even, r=alexcrichton
This implementation should be a bit more optimal than calling `self.is_multiple_of(&2)`
2014-01-15 16:02:01 -08:00
bors 149fc76698 auto merge of #11550 : alexcrichton/rust/noinline, r=thestinger
The failure functions are generic, meaning they're candidates for getting
inlined across crates. This has been happening, leading to monstrosities like
that found in #11549. I have verified that the codegen is *much* better now that
we're not inlining the failure path (the slow path).
2014-01-15 13:51:50 -08:00
Kevin Ballard c57920b37b path: Fix joining Windows path when the receiver is "C:"
WindowsPath::new("C:").join("a") produces r"C:\a". This is incorrect.
It should produce "C:a".
2014-01-15 12:53:56 -08:00
bors 7ce3386511 auto merge of #11112 : alexcrichton/rust/issue-11087, r=brson
This should allow callers to know whether the channel was empty or disconnected
without having to block.

Closes #11087
2014-01-15 12:37:00 -08:00
Alex Crichton adb895a34f Allow more "error" values in try_recv()
This should allow callers to know whether the channel was empty or disconnected
without having to block.

Closes #11087
2014-01-15 11:21:56 -08:00
bors f60d937dd9 auto merge of #11543 : thestinger/rust/gc, r=cmr
This type isn't yet very useful since it only pretends cycles won't be
a problem. Anyone using it should be made aware that they're going to
leak.
2014-01-15 11:21:45 -08:00
Flavio Percoco 515978d1bd Use the least significant beat to determine if int/uint is even 2014-01-15 19:11:00 +01:00
bors 7bebdbd968 auto merge of #11561 : eddyb/rust/moar-inlines, r=pcwalton 2014-01-15 06:26:38 -08:00
Daniel Micay 29840addd4 remove the concept of managed-unique from libstd
Closes #11545
2014-01-15 08:22:59 -05:00
Daniel Micay 197fe67e11 register snapshots 2014-01-15 08:22:56 -05:00
bors 180ac0cc07 auto merge of #11556 : am0d/rust/docs, r=huonw 2014-01-15 05:01:47 -08:00
Eduard Burtescu 7ca3bea5bf libstd: Added more #[inline] annotations and replaced uses of libc::abort with the intrinsic. 2014-01-15 11:45:12 +02:00
bors 29070c3bee auto merge of #11535 : thestinger/rust/header, r=alexcrichton
Unique pointers and vectors currently contain a reference counting
header when containing a managed pointer.

This `{ ref_count, type_desc, prev, next }` header is not necessary and
not a sensible foundation for tracing. It adds needless complexity to
library code and is responsible for breakage in places where the branch
 has been left out.

The `borrow_offset` field can now be removed from `TyDesc` along with
the associated handling in the compiler.

Closes #9510
Closes #11533
2014-01-14 23:01:51 -08:00
Alex Crichton 86c60b68f9 Flag failure functions as inline(never)
The failure functions are generic, meaning they're candidates for getting
inlined across crates. This has been happening, leading to monstrosities like
that found in #11549. I have verified that the codegen is *much* better now that
we're not inlining the failure path (the slow path).
2014-01-14 22:52:03 -08:00
a_m0d e9c30ebaaf Mark LineIterator as public so its docs get generated. 2014-01-14 22:13:54 -05:00
Daniel Micay 77758f0b5e add implementation of Repr for ~[T] 2014-01-14 22:01:44 -05:00
Daniel Micay 6809b172e0 remove borrow_offset as ~ is now free of headers 2014-01-14 22:01:44 -05:00
Daniel Micay 0e885e42b1 remove reference counting headers from ~
Unique pointers and vectors currently contain a reference counting
header when containing a managed pointer.

This `{ ref_count, type_desc, prev, next }` header is not necessary and
not a sensible foundation for tracing. It adds needless complexity to
library code and is responsible for breakage in places where the branch
has been left out.

The `borrow_offset` field can now be removed from `TyDesc` along with
the associated handling in the compiler.

Closes #9510
Closes #11533
2014-01-14 22:01:40 -05:00
Huon Wilson e1ebdb8790 std::trie: optimise insert slightly.
This reduces the number of moves/memcpy's we do, which makes insert
faster, especially in cases of keys with long equal prefixes (the
_low_bits tests):

Before:

    bench_insert_large                ... bench:    553966 ns/iter (+/- 64050)
    bench_insert_large_low_bits       ... bench:   1048151 ns/iter (+/- 92484)
    bench_insert_small                ... bench:    168840 ns/iter (+/- 22410)
    bench_insert_small_low_bits       ... bench:    185069 ns/iter (+/- 38332)

After:

    bench_insert_large                ... bench:    422132 ns/iter (+/- 35112)
    bench_insert_large_low_bits       ... bench:    339083 ns/iter (+/- 34421)
    bench_insert_small                ... bench:    134539 ns/iter (+/- 15254)
    bench_insert_small_low_bits       ... bench:     88775 ns/iter (+/- 5746)
2014-01-15 12:03:21 +11:00
Huon Wilson 6b5e63ff2d std::trie: add benchmarks for insert. 2014-01-15 11:32:53 +11:00
Daniel Micay f40d5b1050 add an experimental tag for Gc<T> due to cycles
This type isn't yet very useful since it only pretends cycles won't be
a problem. Anyone using it should be made aware that they're going to
leak.
2014-01-14 17:13:22 -05:00
bors 9075025c7b auto merge of #11485 : eddyb/rust/sweep-old-rust, r=nikomatsakis 2014-01-14 12:32:11 -08:00
Björn Steinbrink 5902263d0a Fix the representation of C void pointers in LLVM IR
Currently, we have c_void defined to be represented as an empty struct,
but LLVM expects C's void* to be represented as i8*. That means we
currently generate code in which LLVM doesn't recognize malloc() and
free() and can't apply certain optimization that would remove calls to
those functions.
2014-01-14 19:22:23 +01:00
Brian Anderson 062b0fd264 std: Ignore bind error tests on android. #11530 2014-01-13 19:45:37 -08:00
Brian Anderson 46905c04f5 Bump version to 0.10-pre 2014-01-12 17:45:22 -08:00
Brendan Zabarauskas cd248e29b1 Clean up std::num::cmath and remove stale comments 2014-01-13 10:33:54 +11:00
Brendan Zabarauskas 1246f0b094 Remove RealExt
These functions are of little utility outside a small subset of use cases. If people need them for their own projects then they can use their own bindings for libm (which aren't hard to make).
2014-01-13 10:32:50 +11:00
Eduard Burtescu 509fc92a9b Removed remnants of @mut and ~mut from comments and the type system. 2014-01-12 02:26:04 +02:00
bors 29e82c65b4 auto merge of #11472 : kud1ing/rust/iOS, r=alexcrichton
This fixes #11336

I guess the type sizes are correct for both OS X and iOS, but i am not certain.
In any case, i'd rather have any iOS build at all, so that we have something to improve upon.
2014-01-11 08:46:20 -08:00
Eduard Burtescu 7a305f9e83 Removed free_glue from tydesc (the code is still generated, but inlined in drop_glue). 2014-01-11 16:40:23 +02:00
kud1ing 6bbd2ed98e define arch for iOS/ARM 2014-01-11 10:21:24 +01:00
bors a34727f276 auto merge of #11416 : bjz/rust/remove-print-fns, r=alexcrichton
The `print!` and `println!` macros are now the preferred method of printing, and so there is no reason to export the `stdio` functions in the prelude. The functions have also been replaced by their macro counterparts in the tutorial and other documentation so that newcomers don't get confused about what they should be using.
2014-01-10 18:21:21 -08:00
Brendan Zabarauskas 4fc0452ace Remove re-exports of std::io::stdio::{print, println} in the prelude.
The `print!` and `println!` macros are now the preferred method of printing, and so there is no reason to export the `stdio` functions in the prelude. The functions have also been replaced by their macro counterparts in the tutorial and other documentation so that newcomers don't get confused about what they should be using.
2014-01-11 10:46:00 +11:00
Carl-Anton Ingmarsson 0b3311c260 std::io: Optimize u64_from_be_bytes()
Instead of reading a byte at a time in a loop we copy the relevant bytes into
a temporary vector of size eight. We can then read the value from the temporary
vector using a single u64 read. LLVM seems to be able to optimize this
almost scarily good.
2014-01-10 20:14:05 +01:00
Carl-Anton Ingmarsson 326e63187f std::io: Add tests and benchmarks for u64_from_be_bytes() 2014-01-10 13:37:50 +01:00
bors 72a52522ca auto merge of #11437 : sfackler/rust/mem-eof, r=alexcrichton
It's easy to figure out and useful as a sanity check sometimes.
2014-01-10 01:56:18 -08:00
Steven Fackler 52e06c663c Add eof to MemReader and BufReader
It's easy to figure out and useful as a sanity check sometimes.
2014-01-09 21:03:18 -08:00
bors f78293c274 auto merge of #11360 : huonw/rust/stack_bounds, r=alexcrichton
We just approximate with a 2MB stack for native::start.
2014-01-09 20:21:17 -08:00
bors 28ddc6537f auto merge of #10926 : thestinger/rust/rc, r=cmr 2014-01-09 19:01:30 -08:00
Daniel Micay fc60ace7a9 port over the old tests to the new Rc 2014-01-09 21:59:07 -05:00
bors ff3d5d4603 auto merge of #11055 : pcwalton/rust/placement-box, r=pcwalton
r? @nikomatsakis
2014-01-09 16:11:18 -08:00
Patrick Walton e12711540a librustc: Implement placement box for GC and unique pointers. 2014-01-09 16:05:34 -08:00
Daniel Micay c5bcb22719 rename Strong -> Rc, replacing rc with weak 2014-01-09 16:02:17 -05:00