Commit Graph

4361 Commits

Author SHA1 Message Date
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
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
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
Daniel Micay
77cc1c5107 add a strong/weak reference counted pointer type 2014-01-09 15:53:44 -05:00
Daniel Micay
b36a948831 stop treating Rc cycles as unsafe 2014-01-09 15:53:44 -05:00
Alex Crichton
a18282c3d0 Remove eof() from io::Reader 2014-01-09 09:27:10 -08:00
bors
1b0f5b23fc auto merge of #11412 : bjz/rust/num-cleanups, r=alexcrichton
The methods contained in `std::num::{Algebraic, Trigonometric, Exponential, Hyperbolic}` have now been moved into `std::num::Real`. This is part of an ongoing effort to simplify `std::num` (see issue #10387).

`std::num::RealExt` has also been removed from the prelude because it is not a commonly used trait.

r? @alexcrichton
2014-01-09 06:26:27 -08:00
bors
ab9ec6d59a auto merge of #11402 : bjz/rust/remove-approx, r=alexcrichton
This trait seems to stray too far from the mandate of a standard library as implementations may vary between use cases. Third party libraries should implement their own if they need something like it.

This closes #5316.

r? @alexcrichton, @pcwalton
2014-01-09 05:06:33 -08:00
bors
fb44e20f65 auto merge of #11394 : alexcrichton/rust/no-decorator, r=cmr
This is just an unnecessary trait that no one's ever going to parameterize over
and it's more useful to just define the methods directly on the types
themselves. The implementors of this type almost always don't want
inner_mut_ref() but they're forced to define it as well.
2014-01-09 03:51:27 -08:00
Alex Crichton
6df57ec2e2 Remove the io::Decorator trait
This is just an unnecessary trait that no one's ever going to parameterize over
and it's more useful to just define the methods directly on the types
themselves. The implementors of this type almost always don't want
inner_mut_ref() but they're forced to define it as well.
2014-01-08 23:42:28 -08:00
Brendan Zabarauskas
ceea85a148 Remove ApproxEq and assert_approx_eq!
This trait seems to stray too far from the mandate of a standard library as implementations may vary between use cases.
2014-01-09 15:41:46 +11:00
Brendan Zabarauskas
0232fed174 Merge some numeric traits with Real and don't re-export RealExt
The methods contained in `std::num::{Algebraic, Trigonometric, Exponential, Hyperbolic}` have now been moved into `std::num::Real`. This is part of an ongoing effort to simplify `std::num` (see issue #10387).

`std::num::RealExt` has also been removed from the prelude because it is not a commonly used trait.
2014-01-09 15:29:09 +11:00
Alex Crichton
75165f78de Robustly read remaining bytes in a character
Closes #11372
2014-01-08 13:25:19 -08:00