Commit Graph

414 Commits

Author SHA1 Message Date
blake2-ppc
bfa9b43b71 dlist: Add bench test for rotate_to_{front, back} 2013-07-21 21:05:48 +02:00
bors
73e9a121d2 auto merge of #7921 : bytewiseand/rust/smallint-iter, r=huonw
Made the `iter` and `mut_iter` methods on SmallIntMap and SmallIntSet return double-ended-iterators. These iterators now implement `size_hint`.

Also the iterator tests only tested dense maps/sets, which aren't very useful. So they were changed to iterate over sparse maps/sets.

Fixes #7721
2013-07-21 11:22:38 -07:00
blake2-ppc
b71c3d250f dlist: Add .rotate_to_front(), .rotate_to_back()
Add methods to move back element to front or front element to back,
without reallocating nodes.
2013-07-21 19:31:40 +02:00
blake2-ppc
78d0cf1409 dlist: Factor out pop and push operations by list node
Factor out internal methods for pop/push ~Node<T>, This allows moving
nodes instead of destructuring and allocating new.

Make use of this in .merge() so that it requires no allocations when
merging two DList.
2013-07-21 19:31:40 +02:00
blake2-ppc
5336bdcab1 dlist: Simplify match clauses to use Option methods
Make the core Deque implementation a bit simpler by using Option methods
when we simply map on a Some value, and deduplicate some common lines.
2013-07-21 19:31:40 +02:00
blake2-ppc
60cb9c003c serialize: implement Encodable for DList
This impl was missing for unknown reason.
2013-07-21 19:31:40 +02:00
Steven Fackler
fd757a8ab0 Added bitv iterator benchmarks 2013-07-21 03:22:59 -04:00
Steven Fackler
0b4d8d6882 Added iterator tests 2013-07-21 03:22:59 -04:00
Steven Fackler
d6923ddf64 Removed unecessary indirection in Bitv
BitvVariant is the same size as it was before (16 bytes).
2013-07-21 03:22:59 -04:00
Steven Fackler
b32a02cdba Derive Clone for bitv stuff 2013-07-21 03:22:59 -04:00
Steven Fackler
5f208b82e9 Switched bitv to external iterators 2013-07-21 03:22:21 -04:00
bors
c325cb0a42 auto merge of #7912 : graydon/rust/extra-new-benchmarks-1, r=catamorphism
This adds new #[bench] benchmarks for extra::smallintmap, treemap, sha1, sha256 and 512, and base64. Also fixes a bunch of warnings in bitv.
2013-07-20 22:10:28 -07:00
bors
8476419fef auto merge of #7896 : pcwalton/rust/pub-extern, r=pcwalton
r? @nikomatsakis
2013-07-20 18:40:39 -07:00
Patrick Walton
06594ed96b librustc: Remove pub extern and priv extern from the language.
Place `pub` or `priv` on individual items instead.
2013-07-20 17:39:38 -07:00
bors
75b4b1b027 auto merge of #7882 : blake2-ppc/rust/iterator-clone, r=thestinger
Implement method .cycle() that repeats an iterator endlessly

Implement Clone for simple iterators (without closures), including VecIterator.

> The theory is simple, the immutable iterators simply hold state
> variables (indicies or pointers) into frozen containers. We can freely
> clone these iterators, just like we can clone borrowed pointers.
2013-07-20 16:58:30 -07:00
blake2-ppc
fe134b9509 dlist: Implement Clone for immutable iterators 2013-07-20 20:30:58 +02:00
bors
5c999d4eca auto merge of #7894 : pcwalton/rust/and-pointers-in-at-boxes, r=brson
r? @brson
2013-07-20 10:55:34 -07:00
blake2-ppc
980646a450 Use Option .take() or .take_unwrap() instead of util::replace where possible 2013-07-20 05:12:05 -04:00
Ben Blum
621bc79d0d Fix warnings in stdtest and extratest. Maybe somebody will care. 2013-07-20 05:12:05 -04:00
Ben Blum
10a400ffaa Reimplement ARC::unwrap() and friends. 2013-07-20 05:08:55 -04:00
Matthijs Hofstra
eb74f0ccf6 Added a new method to extra::future (unwrap) + a test 2013-07-19 21:04:33 -04:00
Andreas Martens
51649b763e smallint{map,set}: replace iterators with DoubleEndedIterator
Also changed the tests to iterate over sparse maps/sets.
2013-07-20 02:29:54 +02:00
Graydon Hoare
0ba6a51f32 extra: add some microbenchmarks 2013-07-19 15:08:42 -07:00
bors
3514a5af06 auto merge of #7857 : blake2-ppc/rust/fix-test-warnings, r=alexcrichton
Fix warnings that only show up when compiling the tests for libstd, libextra and one in librusti. Only trivial changes.
2013-07-18 20:55:38 -07:00
Patrick Walton
9089cf2ec9 librustc: Forbid & pointers (other than &'static) inside @ boxes.
This makes custom borrowing implementations for custom smart pointers
sound.
2013-07-18 17:12:46 -07:00
bors
f83c118f42 auto merge of #7833 : blake2-ppc/rust/hashmap-consume, r=alexcrichton
Updated all users of HashMap, HashSet ::consume() to use
.consume_iter().

Since .consume_iter() takes the map or set by value, it needs awkward
extra code to in librusti's use of @mut HashMap, where the map value can
not be directly moved out.

Addresses issue #7719
2013-07-18 10:19:44 -07:00
bors
babf741177 auto merge of #7840 : alexcrichton/rust/better-test-help, r=huonw
Progress on #7824, closes #7825
2013-07-18 06:52:41 -07:00
blake2-ppc
7ef9e722b8 hashmap: Remove .consume() has rename .consume_iter() to .consume()
Updated all users of HashMap, HashSet old .consume() to use .consume()
with a for loop.

Since .consume() takes the map or set by value, it needs awkward
extra code to in librusti's use of @mut HashMap, where the map value can
not be directly moved out.
2013-07-18 15:03:59 +02:00
blake2-ppc
e93dd34cd3 Fix warnings in libextra tests
Most of these are "unneccesary allocation" in bitv, for ~[false, ..] instead
of [false, ..].
2013-07-18 02:18:53 +02:00
Patrick Walton
3d13d4b58d libextra: Add a stray deriving or two. 2013-07-17 15:15:34 -07:00
Patrick Walton
66a9b7d5bd libsyntax: Remove some multi-gigabyte clones that were preventing bootstrapping on Windows. 2013-07-17 14:57:56 -07:00
Patrick Walton
dc4bf173f8 test: Fix tests. 2013-07-17 14:57:55 -07:00
Patrick Walton
88fe4ae09c librustc: Remove the Copy bound from the language. 2013-07-17 14:57:54 -07:00
Patrick Walton
d57e8f8419 librustc: Change repeated vector expressions to use implicit copyability. 2013-07-17 14:57:54 -07:00
Patrick Walton
2dbb3c3887 test: Fix tests. 2013-07-17 14:57:54 -07:00
Patrick Walton
e20549ff19 librustc: Remove all uses of the Copy bound. 2013-07-17 14:57:53 -07:00
Patrick Walton
99b33f7219 librustc: Remove all uses of "copy". 2013-07-17 14:57:51 -07:00
Patrick Walton
b4e674f6e6 librustc: Add a lint mode for unnecessary copy and remove a bunch of them. 2013-07-17 14:56:42 -07:00
bors
8c082658be auto merge of #7829 : graydon/rust/codegen-compiletests, r=cmr
This should get us over the hump of activating basic ratcheting on codegen tests, at least. It also puts in place optional (disabled by default) ratcheting on all #[bench] tests, and records all metrics from them to harvestable .json files in any case.
2013-07-17 13:07:24 -07:00
Graydon Hoare
6d78a367b1 extra: avoid possible divide-by-zero conditions test. 2013-07-17 12:28:48 -07:00
bors
4bd716ac8e auto merge of #7831 : ozten/rust/issues-7764-swap_unwarp-take-unwrap, r=pcwalton
Fixes Issue #7764

Running `make check` I do get a failure:

    test rt::io::extensions::test::push_bytes ... ok
    rustest rt::comm::test::oneshot_single_thread_send_port_close ... t: task failed at 'Unhandled condition:
     read_error: {kind: OtherIoError, desc: "Placeholder error. You shouldn\'t be seeing this", detail: None}',
     /Users/shout/Projects/rust/src/libstd/condition.rs:50
    /bin/sh: line 1: 35056 Abort trap: 6           x86_64-apple-darwin/stage2/test/stdtest-x86_64-apple-darwin --logfile
     tmp/check-stage2-T-x86_64-apple-darwin-H-x86_64-apple-darwin-std.log
    make: *** [tmp/check-stage2-T-x86_64-apple-darwin-H-x86_64-apple-darwin-std.ok] Error 134
2013-07-16 21:31:48 -07:00
Alex Crichton
d5f53c780e Provide more useful messages when tests are given -h or --help
Progress on #7824
2013-07-16 20:08:01 -07:00
bors
53e934c2ab auto merge of #7684 : pnkfelix/rust/fsk-invert-range-rev-halfclosedness-issue5270-2ndpr, r=cmr
Changes int/uint range_rev to iterate over range `(hi,lo]` instead of `[hi,lo)`.

Fix #5270.

Also:
* Adds unit tests for int/uint range functions
* Updates the uses of `range_rev` to account for the new semantics.  (Note that pretty much all of the updates there were strict improvements to the code in question; yay!)
* Exposes new function, `range_step_inclusive`, which does the range `[hi,lo]`, (at least when `hi-lo` is a multiple of the `step` parameter).
* Special-cases when `|step| == 1` removing unnecessary bounds-check.  (I did not check whether LLVM was already performing this optimization; I figure it would be a net win to not leave that analysis to the compiler.  If reviewer objects, I can easily remove that from the refactored code.)

(This pull request is a rebased version of PR #7524, which went stale due to recent unrelated changes to num libraries.)
2013-07-16 14:37:34 -07:00
Austin King
712ac836c6 Rename Option swap_unwrap to take_unwrap. Fixes Issue#7764 2013-07-16 12:47:01 -07:00
Graydon Hoare
8e58a272cc extra: reduce bench loop max time to 3s. 2013-07-16 09:33:54 -07:00
Graydon Hoare
f2f7fb3ae1 extra: Add metrics functions to test. 2013-07-16 09:33:54 -07:00
Graydon Hoare
77823c907b extra: add tests for test::MetricMap, MetricDiff, ratchet. 2013-07-16 09:33:54 -07:00
OGINO Masanori
31d29d394f Add more tests for build metadata. 2013-07-16 20:53:25 +09:00
OGINO Masanori
9ba32f306a Update the ordering algorithm to semver 2.0.0.
Note that Version's `le` is not "less than or equal to" now, since `lt`
ignores build metadata. I think the new ordering algorithm satisfies
strict weak ordering which C++ STL requires, instead of strict total
ordering.
2013-07-16 20:53:25 +09:00
blake2-ppc
3385e795c5 ringbuf: Implement DoubleEndedIterator 2013-07-16 01:13:26 +02:00
Austin King
b7e4b88c4a Noting that json.rs provides parsing as well 2013-07-14 18:26:45 -07:00
bors
68a32aad1a auto merge of #7716 : kballard/rust/term-attr, r=cmr
Teach `extra::term` to support more terminal attributes than just color.

Fix the compiler diagnostic messages to print in bold instead of bright white. This matches Clang's output.

Cache the term::Terminal instead of re-parsing for every diagnostic (fixes #6827).
2013-07-14 15:55:20 -07:00
Kevin Ballard
690495de03 term: Add new function .attr() to toggle terminal attributes
Also add .supports_attr() to test for attribute support without writing
anything to output.

Update .reset() to use sgr0 instead of op.
2013-07-14 14:37:29 -07:00
Kevin Ballard
7d8a0fdb7d Give term.fg() and term.bg() a bool return value 2013-07-14 14:37:29 -07:00
blake2-ppc
961184f852 dlist: Use inline on very small functions and iterator functions 2013-07-14 23:03:54 +02:00
blake2-ppc
7681cf62e3 dlist: Simplify by using Option::{map, map_mut}
These methods were fixed or just added so they can now be used.
2013-07-14 22:59:15 +02:00
blake2-ppc
9ccf443088 ringbuf: Implement .size_hint() for iterators 2013-07-14 22:30:22 +02:00
bors
0cb1ac0f9f auto merge of #7788 : MarkJr94/rust/from_iter, r=cmr
Added Iterators for HashMap/Set, TreeMap/Set, TrieMap/Set, and PriorityQueue as per Issue #7626
2013-07-14 12:01:22 -07:00
=Mark Sinclair
bbe03da9c6 Stripped trailing spaces; Implemented FromIterator for TreeMap and PriorityQueue 2013-07-14 13:18:50 -04:00
Alex Crichton
9fd2ac7428 Make TLS keys actually take up space
If the TLS key is 0-sized, then the linux linker is apparently smart enough to
put everything at the same pointer. OSX on the other hand, will reserve some
space for all of them. To get around this, the TLS key now actuall consumes
space to ensure that it gets a unique pointer
2013-07-14 10:15:07 -07:00
Alex Crichton
e3211fa1f1 Purge the last remnants of the old TLS api
Closes #3273
2013-07-14 09:29:12 -07:00
Steven Fackler
6b37b5bab7 Split mutable methods out of Set and Map
Fixes most of #4989. I didn't add Persistent{Set,Map} since the only
persistent data structure is fun_treemap and its functionality is
currently too limited to build a trait out of.
2013-07-13 19:44:36 -07:00
blake2-ppc
c095a5c6cb dlist: Use a DoubleEndedIterator for .mut_iter() and .mut_rev_iter()
Unify the mutable iterators too. Switch the ListInsertion trait to use
method .insert_next() and .peek_next() for list mutation. .insert_next()
inserts an element into the list that will not appear in iteration, of
course; so the length of the iteration can not change during iteration.
2013-07-13 04:31:13 +02:00
blake2-ppc
e1d5d1c049 dlist: Use DoubleEndedIterator for .consume_rev_iter() 2013-07-13 04:31:13 +02:00
blake2-ppc
89a0c99dbe dlist: Implement DoubleEndedIterator and use for .iter() and .rev_iter() 2013-07-13 04:31:05 +02:00
blake2-ppc
c6e7890e13 dlist: Fix bug in DList::merge
Did not properly allow runs from the `other` list to be merged in. The
test case was using a wrong expected value.

Edited docs for merge so they explain more clearly what it does.

Also make sure insert_ordered is marked pub.
2013-07-13 04:30:15 +02:00
bors
96453eb5c5 auto merge of #7736 : thestinger/rust/doc, r=thestinger
2b96408 r=sanxiyn

documents conversion, size hints and double-ended iterators and adds
more of the traits to the prelude
2013-07-12 13:34:29 -07:00
Alex Crichton
1ec06e0124 Remove the global 'vec::to_owned' function 2013-07-12 16:13:51 -04:00
bors
5cc4e5145d auto merge of #7730 : chris-morgan/rust/bitv-eq_vec-bool, r=cmr
Fixes #7711.
2013-07-12 11:37:35 -07:00
Chris Morgan
5b656cfbcb Replace owned with borrowed pointer.
As pointed out by cmr, there's no need for it to be owned there.
That was also in the original scope of #7711.
2013-07-12 23:17:59 +10:00
Daniel Micay
cc4baac891 Merge pull request #7679 from alexcrichton/consume-smallintmap
Add a `consume` method to SmallIntMap
2013-07-11 23:40:51 -07:00
Daniel Micay
2b96408600 extend the iterator tutorial
documents conversion, size hints and double-ended iterators and adds
more of the traits to the prelude
2013-07-12 01:53:50 -04:00
bors
07183ea6e7 auto merge of #7677 : alexcrichton/rust/tls-gc, r=pcwalton
cc #6004 and #3273

This is a rewrite of TLS to get towards not requiring `@` when using task local storage. Most of the rewrite is straightforward, although there are two caveats:

1. Changing `local_set` to not require `@` is blocked on #7673
2. The code in `local_pop` is some of the most unsafe code I've written. A second set of eyes should definitely scrutinize it...

The public-facing interface currently hasn't changed, although it will have to change because `local_data::get` cannot return `Option<T>`, nor can it return `Option<&T>` (the lifetime isn't known). This will have to be changed to be given a closure which yield `&T` (or as an Option). I didn't do this part of the api rewrite in this pull request as I figured that it could wait until when `@` is fully removed.

This also doesn't deal with the issue of using something other than functions as keys, but I'm looking into using static slices (as mentioned in the issues).
2013-07-11 19:52:37 -07:00
Alex Crichton
0af64ae315 Add a consume method to SmallIntMap 2013-07-11 19:20:46 -07:00
Chris Morgan
b8e95c4602 Make Bitv::eq_vec take ~[bool] rather than ~[uint]
Fixes #7711.
2013-07-12 09:52:49 +10:00
bors
4478ded57c auto merge of #7623 : graydon/rust/codegen-compiletests, r=pcwalton
This is some initial sketch-work for #7461 though it will depend on #7459 to be useful for anything. For the time being, just infrastructure.
2013-07-11 15:55:45 -07:00
Graydon Hoare
bbdbd3c69d extra: add explicit ratchet-noise-percent option to benchmark ratchet, plus a few test breaking fixes. 2013-07-11 15:16:11 -07:00
Graydon Hoare
83fb3d224a extra: add metrics ratchet to test driver. 2013-07-11 13:15:52 -07:00
Graydon Hoare
8614d1694c extra: factor ConsoleTestState methods into an impl, fix perf bug.
It was re-reading terminfo on each line of output.
2013-07-11 13:15:52 -07:00
Graydon Hoare
bf1f69c156 extra: add ToJson for TreeMap. 2013-07-11 13:15:52 -07:00
Graydon Hoare
9e67bc37ff extra: simplify the bench stat loop, improve stability somewhat (?) 2013-07-11 13:15:52 -07:00
blake2-ppc
0f9b9a5fb7 extra: Mention extra::container::Deque trait in doc for RingBuf and DList 2013-07-11 16:17:51 +02:00
blake2-ppc
b2b88b326d dlist: Name the type DList for doubly-linked list 2013-07-11 15:54:35 +02:00
blake2-ppc
a8e7bdd142 dlist: Fix license header 2013-07-11 15:54:35 +02:00
blake2-ppc
24d2d7b5bb dlist: Implement trait Deque 2013-07-11 15:54:35 +02:00
blake2-ppc
7052371e39 extra: Rename deque::Deque to ringbuf::RingBuf and impl trait Deque
Let RingBuf have a logical name for a concrete type, and Deque is
used for the Deque trait (implemented by RingBuf and dlist).
2013-07-11 15:54:35 +02:00
blake2-ppc
6a95e49fc5 extra: Add mod container with trait Deque 2013-07-11 15:54:35 +02:00
blake2-ppc
92842d6516 dlist: Expose ListInsertion trait with insert_before and peek_next
An iterator that allows mutating the list is very useful but needs care
to not be unsound. ListIteration exposes only insert_before (used for
insert_ordered) and peek_next so far.
2013-07-11 15:54:35 +02:00
blake2-ppc
4fa69ab97c dlist: Put all tests into a tests module
The exception is the function check_links which needs access to struct
Node (which is not pub).
2013-07-11 15:54:34 +02:00
blake2-ppc
8d06efb8ea dlist: Collect a common pattern into link_with_prev() 2013-07-11 15:54:34 +02:00
blake2-ppc
7b1c57713d dlist: Introduce a struct Rawlink mimicing Option<T> for a raw pointer
Rawlink<T> holds a *mut T pointer and can convert itself to Option<&mut T>.
The null pointer is of course None.
2013-07-11 15:54:34 +02:00
blake2-ppc
f97e64083b dlist: Implement size_hint properly for all iterators 2013-07-11 15:52:21 +02:00
blake2-ppc
824bb44f92 dlist: A new implementation of an owned doubly-linked list
This is an owned sendable linked list which allows insertion and
deletion at both ends, with fast traversal through iteration, and fast
append/prepend.

It is indended to replace the previous managed DList with exposed list
nodes. It does not match it feature by feature, but DList could grow
more methods if needed.
2013-07-11 15:52:21 +02:00
Alex Crichton
f9bf69d253 Remove all external requirements of @ from TLS
Closes #6004
2013-07-11 00:37:13 -07:00
Gary Linscott
f091a1e075 Convert json Reader to iterators
This is much faster for strings, and eventually when there is a
buffered reader of some sort.

Reading example.json 100 times before was around 1.18s.
After:
- reading from string 0.68s
- reading from file 1.08s (extra time is all in io::Reader)
2013-07-10 23:08:13 -04:00
Felix S. Klock II
db0a13b986 Switch over to new range_rev semantics; fix #5270. 2013-07-10 09:35:35 +02:00
bors
41dcec2fe1 auto merge of #7265 : brson/rust/io-upstream, r=brson
r? @graydon, @nikomatsakis, @pcwalton, or @catamorphism

Sorry this is so huge, but it's been accumulating for about a month. There's lots of stuff here, mostly oriented toward enabling multithreaded scheduling and improving compatibility between the old and new runtimes. Adds task pinning so that we can create the 'platform thread' in servo.

[Here](e1555f9b56/src/libstd/rt/mod.rs (L201)) is the current runtime setup code.

About half of this has already been reviewed.
2013-07-09 18:28:46 -07:00
Alex Crichton
cb5b9a477c Rename local_data methods/types for less keystrokes 2013-07-09 17:39:49 -07:00
bors
e388a80c23 auto merge of #7117 : jensnockert/rust/freestanding, r=cmr
The free-standing functions in f32, f64, i8, i16, i32, i64, u8, u16,
u32, u64, float, int, and uint are replaced with generic functions in
num instead.

This means that instead of having to know everywhere what the type is, like

~~~
f64::sin(x)
~~~

You can simply write code that uses the type-generic versions in num instead, this works for all types that implement the corresponding trait in num.

~~~
num::sin(x)
~~~

Note 1: If you were previously using any of those functions, just replace them
with the corresponding function with the same name in num.

Note 2: If you were using a function that corresponds to an operator, use the
operator instead.

Note 3: This is just https://github.com/mozilla/rust/pull/7090 reopened against master.
2013-07-09 13:34:50 -07:00
bors
ee102468fa auto merge of #7614 : MarkJr94/rust/smallintmap_enum, r=huonw
Added external iterators as well as tests to SmallIntMap and SmallIntSet. Fixes #7366
2013-07-09 01:22:35 -07:00