Commit Graph

2437 Commits

Author SHA1 Message Date
Erick Tryzelaar
8d5ab3061a core: add char_len method 2013-03-20 07:53:23 -07:00
Erick Tryzelaar
4b0f29a466 core: add char_at_reverse 2013-03-20 07:53:23 -07:00
Patrick Walton
ca3bc644f4 libcore: Make a couple of constructors public. rs=testfixing 2013-03-19 20:37:53 -07:00
Erick Tryzelaar
fe74a1c9a2 core: rename vec::rev_each{,i} to vec::each{,i}_reverse
I'm making this change because the _reverse suffix is more commonly
used in libcore/libstd.
2013-03-19 20:24:04 -07:00
Patrick Walton
e6f53c091e libsyntax: Forbid use (and most other things) within extern { ... } blocks 2013-03-19 18:00:18 -07:00
Patrick Walton
2e7ec80bcc librustc: Enforce privacy for static methods.
This starts moving a bunch of privacy checks into the privacy
checking phase and out of resolve.
2013-03-19 13:40:48 -07:00
Patrick Walton
e78f2e2ac5 librustc: Make the compiler ignore purity.
For bootstrapping purposes, this commit does not remove all uses of
the keyword "pure" -- doing so would cause the compiler to no longer
bootstrap due to some syntax extensions ("deriving" in particular).
Instead, it makes the compiler ignore "pure". Post-snapshot, we can
remove "pure" from the language.

There are quite a few (~100) borrow check errors that were essentially
all the result of mutable fields or partial borrows of `@mut`. Per
discussions with Niko I think we want to allow partial borrows of
`@mut` but detect obvious footguns. We should also improve the error
message when `@mut` is erroneously reborrowed.
2013-03-18 17:21:16 -07:00
Patrick Walton
c4db4faefa libsyntax: Stop parsing old lifetimes, except for the ones on data type declarations. 2013-03-18 17:21:15 -07:00
Patrick Walton
352c070365 librustc: Convert all uses of old lifetime notation to new lifetime notation. rs=delifetiming 2013-03-18 17:21:14 -07:00
Brian Anderson
5af5766512 core: Initialize global state lazily in the Scheduler ctor
I don't want any global one-time initalization functions because
that will make embedding harder.
2013-03-18 17:00:35 -07:00
Brian Anderson
044703435b Add a way to run the test suite with the new scheduler
TESTARGS=--newrt make check-stage1-rpass

Conflicts:
	src/rt/rustrt.def.in
2013-03-18 17:00:35 -07:00
Brian Anderson
a882554a78 core: Refactor uv bindings
I can already see these are going to get massive. Putting them into multiple
files.
2013-03-18 16:59:37 -07:00
Brian Anderson
7ef54c7ecd core: Begin uv file system bindings 2013-03-18 16:59:37 -07:00
Brian Anderson
57e85b5f94 core: Add rt::io and start sketching the API 2013-03-18 16:59:37 -07:00
Brian Anderson
9a075f264a core: Rename rt::io to rt::rtio
This is an internal interface. I want to use rt::io for public interfaces.
2013-03-18 16:59:37 -07:00
Brian Anderson
42cba98509 core: Convert some multiline statements to single-line 2013-03-18 16:59:37 -07:00
Brian Anderson
54bb7226e1 core: Simplify uvll bindings and strip out currently-unused bits
No more mapping uv structs to Rust structs
2013-03-18 16:59:37 -07:00
Brian Anderson
723d2247c1 core: Don't use printf in rtdebug!
The bots were showing a segfault that I can't reproduce. Assuming it's
varargs related so let's not use printf
2013-03-18 16:59:11 -07:00
Brian Anderson
d30c758974 Give core::rt and std::net their own uvll bindings
I intend to do some big refactoring and don't want to deal w/ std just now
2013-03-18 16:59:11 -07:00
Brian Anderson
e8ddef93da core: Cleanup rt::context 2013-03-18 16:59:10 -07:00
Brian Anderson
63d18658c1 rt: Add RUST_DEBUG_MEM to rust_env to avoid races 2013-03-16 14:25:44 -07:00
bors
ebba8b4e35 auto merge of #5408 : thestinger/rust/trie, r=pcwalton
The chunk fix is cherry picked from @graydon's `gc` branch.
2013-03-15 22:39:42 -07:00
bors
6f1e8ef71a auto merge of #5404 : bstrie/rust/decopy, r=pcwalton
Also turn `copy` into `.clone()` in much of run-pass.
2013-03-15 20:15:44 -07:00
Daniel Micay
d856215b92 add a test for the chunk function 2013-03-15 21:45:08 -04:00
Graydon Hoare
0942c80272 core: fix trie chunk function 2013-03-15 21:12:17 -04:00
Daniel Micay
98900d55e7 add constructor to TrieSet (was missing) 2013-03-15 21:03:29 -04:00
bors
4ad9e5c0c2 auto merge of #5396 : ILyoan/rust/fix_rt_tls, r=graydon
Add a conditional compile option for android
2013-03-15 17:18:44 -07:00
bors
6859a6d9a3 auto merge of #5391 : brson/rust/to-bytes, r=graydon
r?

I want to use this function as a method. There's probably a better way to design this but the existing `ToBytes` trait is not what I am looking for (it has a parameter to indicate the byte order).
2013-03-15 16:15:47 -07:00
Ben Striegel
748c2c9ebc impl Clone for ~T, ~[T], ~str 2013-03-15 18:26:59 -04:00
bors
c724dae7de auto merge of #5395 : thestinger/rust/iter, r=pcwalton 2013-03-15 09:21:56 -07:00
ILyoan
1a6a37e01a Fix an android compilation fail 2013-03-15 15:35:39 +09:00
Daniel Micay
a49ccee68e MutableIter impl for Option + use it in treemap 2013-03-14 23:44:25 -04:00
bors
73b253dc80 auto merge of #5371 : thestinger/rust/hidden, r=pcwalton 2013-03-14 20:06:44 -07:00
bors
c3fe0b97de auto merge of #5369 : thestinger/rust/iter, r=z0w0
This can eventually be implemented on other sequence containers like `deque` (it's missing `each` too at the moment).
2013-03-14 19:06:47 -07:00
Brian Anderson
38ac809cc7 core: Add to_bytes method to StrSlice trait 2013-03-14 18:08:55 -07:00
bors
4bf5ad63f0 auto merge of #5367 : brson/rust/5299, r=thestinger
r?
2013-03-14 17:51:47 -07:00
bors
0c7aeddb5f auto merge of #5365 : thestinger/rust/map, r=catamorphism 2013-03-14 15:06:49 -07:00
Patrick Walton
58f248d923 test: Fix tests. rs=tests 2013-03-13 20:08:35 -07:00
Patrick Walton
b1c699815d librustc: Don't accept as Trait anymore; fix all occurrences of it. 2013-03-13 20:07:09 -07:00
Daniel Micay
e4f5866c10 rm FIXME from use of #[doc(hidden)] on pub mod 2013-03-13 22:12:55 -04:00
Daniel Micay
968e0ddc60 hide the linkhack module in the docs 2013-03-13 22:12:43 -04:00
Daniel Micay
c64a5d2d37 add a trait for mutable iterators 2013-03-13 21:29:48 -04:00
Brian Anderson
34113dcf6a core: Add spawn, stream and friends to prelude. #5299 2013-03-13 18:17:12 -07:00
ILyoan
ef0364e9e4 Remove unused import in core 2013-03-14 09:52:51 +09:00
Daniel Micay
becad9bb07 add the mutate_values method to the Map trait 2013-03-13 19:33:10 -04:00
Niko Matsakis
852619d5d7 Remove ++ mode from the compiler (it is parsed as + mode)
and obsolete `-` mode altogether (it *was* parsed as `+` mode).
2013-03-13 17:00:09 -04:00
Niko Matsakis
efc7f82bc4 Revamp foreign code not to consider the Rust modes. This requires
adjusting a few foreign functions that were declared with by-ref
mode.  This also allows us to remove by-val mode in the near future.

With copy mode, though, we have to be careful because Rust will implicitly pass
somethings by pointer but this may not be the C ABI rules.  For example, rust
will pass a struct Foo as a Foo*.  So I added some code into the adapters to
fix this (though the C ABI rules may put the pointer back, oh well).

This patch also includes a lint mode for the use of by-ref mode
in foreign functions as the semantics of this have changed.
2013-03-13 16:59:37 -04:00
bors
695e9fd13c auto merge of #5293 : brson/rust/logging, r=brson
r? @graydon

This removes `log` from the language. Because we can't quite implement it as a syntax extension (probably need globals at the least) it simply renames the keyword to `__log` and hides it behind macros.

After this the only way to log is with `debug!`, `info!`, etc. I figure that if there is demand for `log!` we can add it back later.

I am not sure that we ever agreed on this course of action, though I *think* there is consensus that `log` shouldn't be a statement.
2013-03-13 10:40:07 -07:00
Brian Anderson
0ad3a110be Work around linkage bug cross-compiling from x86_64-apple-darwin to i686-apple-darwin
The correct opendir/readdir to use appear to be the 64-bit versions called
opendir$INODE64, etc. but for some reason I can't get them to link properly
on i686. Putting them in librustrt and making gcc figure it out works.
This mystery will have to wait for another day.
2013-03-12 21:01:40 -07:00
Patrick Walton
b60c3bfa4a libcore: Attempt to put out burning tree on Mac by using the old symbol on 32 bit. rs=bustage 2013-03-12 15:27:45 -07:00
Brian Anderson
806732a70b core: Turn off rtdebug logging 2013-03-12 13:05:45 -07:00
bors
b5334c3095 auto merge of #5333 : brson/rust/context, r=brson
ARM definitely compiles
2013-03-12 01:51:43 -07:00
bors
a95b933350 auto merge of #5328 : bstrie/rust/optadd, r=graydon
This will allow you to use the `+` operator to add together any two
Options, assuming that the contents of each Option likewise implement
`+`. So Some(4) + Some(1) == Some(5), and adding with None leaves the
other value unchanged.

This might be monoidic? I don't know what that word means!
2013-03-12 00:57:43 -07:00
Brian Anderson
e28d4b3516 core: Add context switching for ARM and MIPS
ARM definitely compiles
2013-03-11 23:33:05 -07:00
Brian Anderson
cb37d09f50 core: Remove logging constants 2013-03-11 23:19:42 -07:00
Brian Anderson
82f190355b Remove uses of log 2013-03-11 23:19:42 -07:00
Ben Striegel
a21b43c6bb Implement Add on Option types
This will allow you to use the + operator to add together any two
Options, assuming that the contents of each Option likewise implement
+. So Some(4) + Some(1) == Some(5), and adding with None leaves the
other value unchanged.

This might be monoidic? I don't know what that word means!
2013-03-11 22:46:16 -04:00
Brian Anderson
676e0290ed core: Add rt mod and add the new scheduler code 2013-03-11 19:44:29 -07:00
bors
a6bb4a0f1a auto merge of #5292 : thestinger/rust/nil, r=graydon 2013-03-11 17:27:43 -07:00
Brian Anderson
7e5995197f core: Convert obsolete fn syntax 2013-03-11 15:42:00 -07:00
Jeff Olson
3aa92a91c9 core: convert asserts to fail_unless! 2013-03-11 15:38:55 -07:00
Jeff Olson
5ff66f0405 core: link pthreads explicitly in linux build 2013-03-11 15:38:55 -07:00
Jeff Olson
cf82360e72 core: formatting appeasement 2013-03-11 15:38:55 -07:00
Jeff Olson
a04ba76f8e core: fix broken tests on windows 2013-03-11 15:38:55 -07:00
Jeff Olson
25c3c363a8 core: change import of exchange_alloc for win32 os::_list_dir 2013-03-11 15:38:55 -07:00
Jeff Olson
a69a2acfba rt/core: port os::list_dir to rust ref #4812 2013-03-11 15:38:55 -07:00
Jeff Olson
53db6c7e2a core: rt/core: impl os::env() in rust ref #4812 2013-03-11 15:38:55 -07:00
Jeff Olson
4bc26ce575 rt/core: impl os::getcwd() in rust ref #4812 2013-03-11 15:38:55 -07:00
bors
878a31066d auto merge of #5305 : brson/rust/mut_buf_as_slice, r=brson
r?

Like `buf_as_slice` but for mutable pointers and slices.
2013-03-11 14:06:50 -07:00
Brian Anderson
c88ce30c48 core: Add vec::raw::mut_buf_as_slice 2013-03-11 13:44:32 -07:00
Josh Matthews
86cf248262 Add deriving_eq to Cell. 2013-03-11 15:23:45 -04:00
Patrick Walton
08c840205e librustc: Lint the old drop destructor notation off 2013-03-11 09:36:00 -07:00
Patrick Walton
1274d4a006 test: Fix tests. rs=tests 2013-03-11 09:36:00 -07:00
Patrick Walton
4faf63e472 libstd: Remove all newtype enums from std and core. 2013-03-11 09:35:59 -07:00
Patrick Walton
bd2d17e4a1 libsyntax: Stop parsing bare functions in preparation for switching them over 2013-03-11 09:35:58 -07:00
Patrick Walton
d18f785457 librustc: Replace all uses of fn() with &fn(). rs=defun 2013-03-11 09:35:58 -07:00
Daniel Micay
80c71c839a add a TotalOrd impl for the unit type 2013-03-10 13:54:51 -04:00
Daniel Micay
788de758e3 vec: cleanup 2013-03-09 16:53:39 -05:00
Daniel Micay
06a336ae79 vec: renovate the BaseIter impl
* add 'self region to the borrowed pointer parameter
* rm workaround for #2263
* inline (wrappers)
* iter-trait is gone
2013-03-09 16:27:15 -05:00
Andrew Paseltiner
bef5396af6 core: implement Clone for primitive types 2013-03-09 12:14:12 -05:00
Ben Striegel
fdf69dd7b0 Finish de-implicit-selfing everything but the test suite 2013-03-08 19:34:39 -05:00
Daniel Micay
b69fb75348 implement BaseIter for dlist (removing iter-trait)
Closes #2827
2013-03-08 18:19:30 -05:00
Daniel Micay
cf9e958fe0 rm obsolete iter-trait/option.rs file 2013-03-08 12:34:43 -05:00
Alex Crichton
62651df2b4 Fix dvec-related fallout in tests 2013-03-08 09:56:52 -05:00
Alex Crichton
59de3853be core: Remove the dvec module 2013-03-08 09:54:41 -05:00
Alex Crichton
7ccb0e63c5 core: Remove uses of DVec in io/repr 2013-03-08 09:53:45 -05:00
Patrick Walton
d661711cc2 test: Fix tests. 2013-03-07 22:37:58 -08:00
Patrick Walton
d7e74b5e91 librustc: Convert all uses of assert over to fail_unless! 2013-03-07 22:37:57 -08:00
Patrick Walton
239e64242c libsyntax: Stop parsing structural record types 2013-03-07 22:32:52 -08:00
Patrick Walton
6b5d1afeec librustc: Remove "extern mod { ... }" from librustc, librustdoc, and tests. rs=deexterning 2013-03-07 22:32:52 -08:00
Patrick Walton
fd271adc75 libcore: Remove extern mod { ... } from libcore. rs=deexterning 2013-03-07 22:32:51 -08:00
bors
c3c018f8ab auto merge of #5256 : thestinger/rust/bool, r=brson 2013-03-06 19:12:40 -08:00
Niko Matsakis
3168fe06ff Add manual &self/ and &static/ and /&self declarations that
are currently inferred.  New rules are coming that will require
them to be explicit.  All add some explicit self declarations.
2013-03-06 15:12:57 -05:00
Daniel Micay
7782aa82d2 bool: make the from_str function a FromStr impl 2013-03-06 13:05:59 -05:00
bors
4b79a58d9d auto merge of #5252 : nikomatsakis/rust/issue-5087-make-trait-not-impl-self, r=pcwalton
Two changes:

- The first fixes an inconsistency in coherence whereby extension methods were added to the inherent methods table, but only in cross-crate scenarios.  This causes some minor fallout in tests and so forth.  In one case (comm) I added inherent and trait methods so as to avoid the need to import traits like `GenericPort` just to use a port.

- The second makes objects not implement the associated trait, as discussed in #5087.

r? @pcwalton
2013-03-06 09:27:59 -08:00
Niko Matsakis
6d764cc361 Make object types not implement associated trait. Fixes #5087. 2013-03-06 11:02:19 -05:00
Niko Matsakis
6267339d68 Fix bug in coherence that causes all cross-crate impls to be regarded as
inherent impls, not just those of the `impl Type` variety.
2013-03-06 11:02:19 -05:00
Ben Striegel
12f06bb496 Finish de-implicit-selifizng libcore 2013-03-06 04:00:25 -05:00
bors
959e483fb7 auto merge of #5235 : yjh0502/rust/io_float, r=graydon
When parsing bytes from a wire, there is a need to parse floating-point bytes to float values ([u8*4] to f32, [u8*8] to f64). This can be done via cast::transmute, but there is no way to do it safely.

It's quite common, so I think I't better to support it in core library.
2013-03-05 22:00:40 -08:00
Erick Tryzelaar
743cfce703 core: convert vec::{last,last_opt} to return references 2013-03-05 19:39:18 -08:00
Erick Tryzelaar
d60747a248 core: convert vec::{init,initn} to return references 2013-03-05 19:37:04 -08:00
Erick Tryzelaar
5ae06ae9de core: convert vec::{tail,tailn} to return references 2013-03-05 19:37:04 -08:00
Erick Tryzelaar
359bb3e10b core: convert vec::{head,head_opt} to return references 2013-03-05 19:37:04 -08:00
Jihyun Yu
ce23c8c0cf add floating-point read/write to Reader/Writer 2013-03-06 09:07:04 +09:00
Daniel Micay
ab5bc5dffe trie: remove the Copy requirement 2013-03-05 18:53:43 -05:00
bors
dec599f652 auto merge of #5234 : pcwalton/rust/equiv, r=pcwalton
r? @nikomatsakis
2013-03-05 12:12:50 -08:00
Patrick Walton
2fa2ad5995 libcore: Implement an Equiv trait and use it on hashmaps.
7.3x speedup in string map search speed on a microbenchmark of pure hashmap
searching against a constant string, due to the lack of allocations.

I ran into a few snags.

1. The way the coherence check is set up, I can't implement `Equiv<@str>` and
   `Equiv<~str>` for `&str` simultaneously.

2. I wanted to implement `Equiv<T>` for all `T:Eq` (i.e. every type can be
   compared to itself if it implements `Eq`), but the coherence check didn't
   like that either.

3. I couldn't add this to the `Map` trait because `LinearMap` needs special
   handling for its `Q` type parameter: it must not only implement `Equiv<T>`
   but also `Hash` and `Eq`.

4. `find_equiv(&&"foo")` doesn't parse, because of the double ampersand. It has
   to be written `find_equiv(& &"foo")`. We can probably just fix this.

Nevertheless, this is a huge win; it should address a major source of
performance problems, including the one here:

http://maniagnosis.crsr.net/2013/02/creating-letterpress-cheating-program.html
2013-03-05 10:18:36 -08:00
bors
afd6196d7b auto merge of #5233 : bstrie/rust/deimpselfcore, r=graydon 2013-03-05 08:12:51 -08:00
Daniel Micay
17b5a14c4c trie: fix breaking out of the iterators early 2013-03-05 10:10:22 -05:00
Daniel Micay
f7ae9b1759 trie: fix each_reverse 2013-03-05 09:35:45 -05:00
bors
eddefbc893 auto merge of #5212 : thestinger/rust/iter, r=graydon
A small step towards fixing #2827
2013-03-05 02:06:50 -08:00
bors
75c5bc90d2 auto merge of #5179 : alexcrichton/rust/default-warn-unused-import, r=graydon
I've found that unused imports can often start cluttering a project after a long time, and it's very useful to keep them under control. I don't like how Go forces a compiler error by default and it can't be changed, but I certainly want to know about them so I think that a warn is a good default.

Now that the `unused_imports` lint option is a bit smarter, I think it's possible to change the default level to warn. This commit also removes all unused imports throughout the compiler and libraries (500+).

The only odd things that I ran into were that some `use` statements had to have `#[cfg(notest)]` or `#[cfg(test)]` based on where they were. The ones with `notest` were mostly in core for modules like `cmp` whereas `cfg(test)` was for tests that weren't part of a normal `mod test` module.
2013-03-05 00:57:46 -08:00
Ben Striegel
9db61e0c21 De-implicit-self libcore 2013-03-04 22:36:15 -05:00
bors
40e733a150 auto merge of #5209 : luqmana/rust/reader, r=graydon 2013-03-04 11:42:39 -08:00
Alex Crichton
cb4ab76e4a Adding missing imports for tests, and gate off others 2013-03-04 12:27:01 -05:00
Alex Crichton
dfb5c10dea Remove unused imports throughout src/ 2013-03-04 12:27:01 -05:00
bors
c639a78dc4 auto merge of #5205 : thestinger/rust/radix, r=graydon
This is an implementation of a map and set for integer keys. It's an ordered container (by byte order, which is sorted order for integers and byte strings when done in the right direction) with O(1) worst-case lookup, removal and insertion. There's no rebalancing or rehashing so it's actually O(1) without amortizing any costs.

The fanout can be adjusted in multiples of 2 from 2-ary through 256-ary, but it's hardcoded at 16-ary because there isn't a way to expose that in the type system yet. To keep things simple, it also only allows `uint` keys, but later I'll expand it to all the built-in integer types and byte arrays.

There's quite a bit of room for performance improvement, along with the boost that will come with dropping the headers on `Owned` `~` and getting rid of the overhead from the stack switches to the allocator. It currently does suffix compression for a single node and then splits into two n-ary trie nodes, which could be replaced with an array for at least 4-8 suffixes before splitting it. There's also the option of doing path compression, which may be a good or a bad idea and depends a lot on the data stored.

I want to share the test suite with the other maps so that's why I haven't duplicated all of the existing integer key tests in this file. I'll send in another pull request to deal with that.

Current benchmark numbers against the other map types:

    TreeMap:
     Sequential integers:
      insert: 0.798295
      search: 0.188931
      remove: 0.435923
     Random integers:
      insert: 1.557661
      search: 0.758325
      remove: 1.720527

    LinearMap:
     Sequential integers:
      insert: 0.272338
      search: 0.141179
      remove: 0.190273
     Random integers:
      insert: 0.293588
      search: 0.162677
      remove: 0.206142

    TrieMap:
     Sequential integers:
      insert: 0.0901
      search: 0.012223
      remove: 0.084139
     Random integers:
      insert: 0.392719
      search: 0.261632
      remove: 0.470401

@graydon is using an earlier version of this for the garbage collection implementation, so that's why I added this to libcore. I left out the `next` and `prev` methods *for now* because I just wanted the essentials first.
2013-03-04 08:21:47 -08:00
Jyun-Yan You
5150b9811b rustc: MIPS32 support 2013-03-03 19:27:27 -08:00
Daniel Micay
af645e8487 replace option::iter with a BaseIter impl 2013-03-03 11:01:17 -05:00
Luqman Aden
162c816e34 libcore: Add read_until to ReaderUtil. 2013-03-03 02:03:30 -08:00
bors
5655ae46a7 auto merge of #5197 : pcwalton/rust/fn-types, r=pcwalton
r? @catamorphism
2013-03-02 19:18:37 -08:00
bors
826644e8cb auto merge of #5114 : osaut/rust/incoming, r=brson
Several typos corrected in the comments of  src/libcore/iter.rs and 2013 added to the copyright header (as requested on CONTRIBUTING.md)
2013-03-02 18:21:39 -08:00
Patrick Walton
542119f61f libcore: Remove fn@, fn~, and fn& from libcore. rs=defun 2013-03-02 16:49:32 -08:00
Patrick Walton
97fd421319 librustc: Remove fn@, fn~, and fn& from librustc. rs=defun 2013-03-02 16:49:31 -08:00
Patrick Walton
a3f728238b librustc: Forbid chained imports and fix the logic for one-level renaming imports 2013-03-02 16:49:30 -08:00
bors
a14b489925 auto merge of #5199 : thestinger/rust/hashmap, r=brson
Closes #4764
2013-03-02 16:30:39 -08:00
Daniel Micay
3550233d37 inline the implementation of TotalOrd for integers 2013-03-02 16:30:42 -05:00
Daniel Micay
a4d22635e1 add an initial radix trie implementation 2013-03-02 16:29:41 -05:00
bors
2304fe6208 auto merge of #5196 : thestinger/rust/ord, r=catamorphism
This allows `TreeMap`/`TreeSet` to fully express their requirements and reduces the comparisons from ~1.5 per level to 1 which really helps for string keys.

I also added `ReverseIter` to the prelude exports because I forgot when I originally added it.
2013-03-02 05:15:39 -08:00
Daniel Micay
035233a259 treemap: reimplement using TotalOrd 2013-03-02 14:10:19 -05:00
Daniel Micay
ca1ceb15b1 add a TotalOrd trait 2013-03-02 14:10:16 -05:00
bors
5aca7d6aef auto merge of #5137 : yjh0502/rust/empty_struct, r=nikomatsakis
The fix is straight-forward, but there are several changes
while fixing the issue.

1) disallow `mut` keyword when making a new struct

In code base, there are following code,

```rust
struct Foo { mut a: int };
let a = Foo { mut a: 1 };
```

This is because of structural record, which is
deprecated corrently (see issue #3089) In structural
record, `mut` keyword should be allowd to control
mutability. But without structural record, we don't
need to allow `mut` keyword while constructing struct.

2) disallow structural records in parser level
This is related to 1). With structural records, there
is an ambiguity between empty block and empty struct
To solve the problem, I change parser to stop parsing
structural records. I think this is not a problem,
because structural records are not compiled already.

Misc. issues

There is an ambiguity between empty struct vs. empty match stmt.
with following code,

```rust
match x{} {}
```

Two interpretation is possible, which is listed blow

```rust
match (x{}) {} //  matching with newly-constructed empty struct
(match x{}) {}  //  matching with empty enum(or struct) x
                //  and then empty block
```

It seems that there is no such code in rust code base, but
there is one test which uses empty match statement:
https://github.com/mozilla/rust/blob/incoming/src/test/run-pass/issue-3037.rs

All other cases could be distinguished with look-ahead,
but this can't be. One possible solution is wrapping with
parentheses when matching with an uninhabited type.

```rust
enum what { }
fn match_with_empty(x: what) -> ~str {
    match (x) { //use parentheses to remove the ambiguity
    }
}
```
2013-03-02 04:21:38 -08:00
Daniel Micay
a4175c34c3 make LinearMap fields private
Closes #4764
2013-03-02 05:09:36 -05:00
Jihyun Yu
95bc9ea26d Remove REC, change related tests/docs 2013-03-02 12:57:05 +09:00
Brian Anderson
9639ca5aa8 core: Move core::rt to core::unstable::lang 2013-03-01 17:27:14 -08:00
Brian Anderson
bcf626812b Rename core::private to core::unstable. #4743 2013-03-01 14:55:47 -08:00
Patrick Walton
50c08dbf0d Merge pull request #5178 from catamorphism/constant-buffers
core: Address XXX, make static constants for strings used when stringify...
2013-03-01 08:44:47 -08:00
Patrick Walton
9519ee5d80 librustc: "APL2" -> "ASL2". rs=license-fix 2013-03-01 08:41:31 -08:00
Patrick Walton
c355f17943 Merge remote branch 'sevrak/issue-5164' into incoming 2013-03-01 08:39:02 -08:00
bors
1d34a55d88 auto merge of #5162 : brson/rust/fixmes, r=brson 2013-03-01 01:54:38 -08:00
bors
a660bb362c auto merge of #5180 : catamorphism/rust/post-snapshot, r=catamorphism
* Disallow structural records everywhere
* Remove all #[cfg(stage0)] stuff
* Remove the last deprecated modes in libcore
* Un-xfail a test
2013-02-28 22:45:37 -08:00
bors
b7e72974dc auto merge of #5147 : nikomatsakis/rust/remove-legacy-trait-table, r=nikomatsakis
r? @pcwalton
2013-02-28 21:39:39 -08:00
Tim Chevalier
6b6d15ac20 Remove code that was awaiting a snapshot
* Disallow structural records everywhere
* Remove all #[cfg(stage0)] stuff
* Remove the last deprecated modes in libcore
* Un-xfail a test
2013-02-28 20:30:50 -08:00
Niko Matsakis
4ecb672d7f Remove legacy object creation mode, and convert remaining uses of it 2013-02-28 20:28:04 -05:00
bors
916d1a9165 auto merge of #5176 : brson/rust/unwrap_shared_mutable_state, r=nikomatsakis
r?

This fixes the current [random failures](http://buildbot.rust-lang.org/builders/auto-linux/builds/291/steps/test/logs/stdio) on the bots and closes #4436 by removing `unwrap_shared_mutable_state` and the code that depends on it. The result is that ARC-like things will not be unwrappable. This feature is complex and is not used outside of test cases.

Note that there is not consensus to remove it.

(second commit)
2013-02-28 17:21:40 -08:00
Tim Chevalier
405a35c7f8 core: Address XXX, make static constants for strings used when stringifying floats 2013-02-28 16:49:02 -08:00
Brian Anderson
78d5091a4f core: Remove unwrap_shared_mutable_state. #4436 2013-02-28 15:20:40 -08:00
Alex Crichton
2df07ddc25 Fix implicit leaks of imports throughout libraries
Also touch up use of 'pub' and move some tests around so the tested functions
don't have to be 'pub'
2013-02-28 18:00:34 -05:00
Patrick Walton
09a2b4e599 librustc: Make methods private if the impl is private 2013-02-28 11:32:26 -08:00
Patrick Walton
107bf96ff0 librustc: Mark all type implementations public. rs=impl-publicity 2013-02-28 11:32:24 -08:00
sevrak
833ad6018e Fix license attribute on crates 2013-02-28 13:34:01 +00:00
bors
b171d0ef7b auto merge of #5159 : brson/rust/rtcall, r=brson 2013-02-28 01:12:38 -08:00
bors
c705440ee3 auto merge of #5155 : bstrie/rust/dedrop, r=pcwalton
This removes all but 6 uses of `drop {}` from the entire codebase. Removing any of the remaining uses causes various non-trivial bugs; I'll start reporting them once this gets merged.
2013-02-27 23:30:40 -08:00
bors
6bff18ea0d auto merge of #5098 : pkgw/rust/pr/issue4869, r=brson
See issue #4869. I'm not quite sure what constitutes "consensus from the core team" (cf. discussion in the issue), but this at least demonstrates that the proposed change is pretty straightforward.

After this change, there are no new test failures. I've un-ignored the `to_str` vectors test; it's not at all obvious to me why it'd be problematic, and it passes on my Linux machine.
2013-02-27 20:39:39 -08:00
Brian Anderson
4a04a188e3 Convert NOTEs to FIXMEs 2013-02-27 18:44:35 -08:00
Brian Anderson
2f858de1c3 Remove the last remnants of rtcalls 2013-02-27 18:34:04 -08:00
Ben Striegel
43d43adf6b Turn old drop blocks into Drop traits 2013-02-27 19:14:19 -05:00
bors
33e7a1f087 auto merge of #5145 : Kimundi/rust/incoming, r=catamorphism 2013-02-27 13:27:48 -08:00
Patrick Walton
07c3f5c0de librustc: Forbid pub or priv before trait implementations 2013-02-27 09:40:16 -08:00
Patrick Walton
573a31dfa7 libsyntax: Forbid mutable vectors. rs=demuting 2013-02-27 09:40:16 -08:00
Patrick Walton
8d7e6ef772 libsyntax: Forbid ~mut and ~const. rs=demuting 2013-02-27 09:40:15 -08:00
Marvin Löbel
c2be2ec42d Added ToStr implementations for &[T] and @[T] 2013-02-27 16:02:53 +01:00
bors
f4e8ac21cd auto merge of #5135 : brson/rust/start, r=pcwalton
r?

#3406

Pretty straightforward. I'm using opaque pointers instead trying to get trans and core to agree on the types of the main function and crate map. One oddity is that this required changing the order of the `-lrustrt` argument to the linker in order to resolve `upcall_new_stack`. Linkers are mysterious.
2013-02-26 23:45:39 -08:00
bors
99a902c81d auto merge of #5120 : jbclements/rust/macros-have-scope, r=pcwalton
r?

After this patch, macros declared in a module, function, or block can only be used inside of that module, function or block, with the exception of modules declared with the #[macro_escape] attribute; these modules allow macros to escape, and can be used as a limited macro export mechanism.

This pull request also includes miscellaneous comments, lots of new test cases, a few renamings, and a few as-yet-unused data definitions for hygiene.
2013-02-26 20:00:38 -08:00
Brian Anderson
f4327230fa Add a 'start' lang item and use it instead of rust_start 2013-02-26 19:43:26 -08:00
Luqman Aden
f460c2adf8 Move levenshtein distance fn to core::str. 2013-02-26 17:23:30 -08:00
bors
0ded562e83 auto merge of #5023 : mitsuhiko/rust/make-absolute-refactor, r=catamorphism
This pull request moves the logic from os::make_absolute() into the path module and fixes path joining for Windows.  It does this by adding an ``unsafe_join()`` function that implements the operating system's path joining semantics.

Additionally it also adds an ``is_restricted()`` method to the trait which will return true if the path points to a windows device file.
2013-02-26 14:03:52 -08:00
bors
0e6d895ed8 auto merge of #5119 : Kimundi/rust/incoming, r=catamorphism
Removed deprecated `str()` functions in int-template.rs and uint-template.rs
2013-02-26 10:54:39 -08:00
John Clements
598e814152 Hoist macro defs out of inner function 2013-02-26 10:26:42 -08:00
Marvin Löbel
42b0bacd76 Removed deprecated str() functions in int-template.rs and uint-template.rs 2013-02-26 16:38:30 +01:00
Patrick Walton
e2f90091cf libcore: Move Cell to core and de-~mut core and std 2013-02-26 04:18:12 -08:00
Patrick Walton
c483aab4ae librustc: Implement a lint mode for mutable structures; deny by default. r=tjc 2013-02-26 04:18:11 -08:00
Olivier Saut
88f8868158 Add current year in the copyright header 2013-02-26 10:02:53 +01:00
Olivier Saut
4519f8290a Various typos corrected 2013-02-26 09:56:04 +01:00
Peter Williams
a712d828f9 libcore: remove default to_str implementations for pointer types
These couldn't be overridden and so ended up being quite restrictive. This has
the side effect of changing the stringification of ~vecs, but nothing in
relied on this. Closes #4869.
2013-02-23 17:43:08 -05:00
bors
1bc4e3f6a2 auto merge of #5078 : bblum/rust/incoming, r=brson
r? @brson
2013-02-22 13:39:34 -08:00
bors
c316189d15 auto merge of #5081 : brson/rust/pipes, r=pcwalton
r?
2013-02-22 11:24:38 -08:00
Graydon Hoare
0309af458c Put unique allocs in managed heap when they might contain managed boxes. 2013-02-21 23:01:17 -08:00
Brian Anderson
dab6a85230 core: Extract comm from pipes. #4742 2013-02-21 17:36:54 -08:00
bors
ab784b7de5 auto merge of #5059 : Kimundi/rust/incoming, r=catamorphism
compiles-as-is, but needs a snapshot to remove the `stage0`ed extfmt export in core.

Closes #4750
2013-02-21 16:42:35 -08:00
Ben Blum
9dae4cf1f0 Fix private::exclusive_unwrap_conflict test. Fixes #4689. 2013-02-21 19:42:18 -05:00
bors
c0218fb106 auto merge of #5069 : pcwalton/rust/plussing-2, r=pcwalton 2013-02-21 08:35:12 -08:00
Patrick Walton
c0defda499 librustc: Separate the rest of the trait bounds with + and stop parsing space-separated ones. rs=plussing 2013-02-21 08:29:48 -08:00
Marvin Löbel
3792eb2a38 Moved core::extfmt to core::private::extfmt
Needs a snapshot to remove stage0 extfmt export in core
2013-02-21 13:32:20 +01:00
bors
a02da4ecde auto merge of #5063 : pcwalton/rust/plussing, r=pcwalton 2013-02-20 21:22:30 -08:00
Patrick Walton
bf2a225c0b librustc: Separate most trait bounds with '+'. rs=plussing 2013-02-20 21:14:20 -08:00
Matthijs 'Thiez' Hofstra
9776c38731 Changed a test to use intrinsics.rs and changed a few lines that were too long, had bad whitespace, etc. 2013-02-20 20:45:17 +01:00
Matthijs 'Thiez' Hofstra
675bdcf341 Created libcore/private/intrinsics.rs, which aims to contain every
rustc intrinsic. Several files in libcore have been changed to use
these intrinsics.
As of yet, none of the intrinsics are documented.
2013-02-20 20:39:49 +01:00
bors
f68335113b auto merge of #5002 : catamorphism/rust/one-tuples, r=graydon
r? @graydon - This is for greater uniformity (for example, macros that generate
tuples). rustc already supported 1-tuple patterns, but there was no
way to construct a 1-tuple term.

@graydon , as far as your comment on #4898 - it did turn out to be solvable inside the macro (since @luqmana already fixed it using structs instead), but I still think it's a good idea to allow 1-tuples, for uniformity. I don't think anyone is likely to trip over it, and I'm not too worried that it changes the amount of ambiguity.
2013-02-19 09:14:33 -08:00
Graydon Hoare
968ab03026 rt: fix memory-unsafe random seed logic, r=valgrindclean 2013-02-19 07:06:36 -08:00
Tim Chevalier
dc30cc356b core: Fix BSD breakage, I hope 2013-02-18 20:12:17 -08:00
Armin Ronacher
c77c5c4674 Added is_restricted() to path 2013-02-19 01:54:05 +00:00
Tim Chevalier
aa284de1fc rustc: For one-tuples, make parsing and printing the type work
and add a test to reflect-visit-data
2013-02-18 17:45:56 -08:00
Armin Ronacher
b07eab5faa Improved windows path handling support 2013-02-19 01:34:48 +00:00
Armin Ronacher
c8d8f6cfec Refactored make_absolute into functionality on the Path 2013-02-18 22:48:18 +00:00
Daniel Micay
6956e81c9b vec: grow_fn doesn't require Copy 2013-02-17 14:09:09 -05:00
Graydon Hoare
585d6f7b00 rustpkg: Massage for landing. 2013-02-15 18:50:51 -08:00
Zack Corr
b10dc1af06 Move semver to std and finish rustpkg 2013-02-15 18:04:10 -08:00
Zack Corr
2192d11cd1 Correct Zack Corr's email in AUTHORS.txt 2013-02-15 18:04:10 -08:00
Zack Corr
321e3c4909 Add cmp::Ord implementation for semver::Version 2013-02-15 18:04:10 -08:00
Zack Corr
226b61ba5f rustpkg: Add package script parsing 2013-02-15 18:04:10 -08:00
bors
3e97cce27d auto merge of #4957 : Kimundi/rust/incoming, r=catamorphism
Moved them into own module and made them not depend on an Round trait impl for integers and generic math functions that can fail on integers any more.
2013-02-15 17:29:57 -08:00
Graydon Hoare
1b87dedc0e attempt to fix BSD breakage 2013-02-15 17:28:51 -08:00
Patrick Walton
bb833ca0f0 librustc: Stop parsing impl Type : Trait and fix several declarations that slipped through. r=tjc 2013-02-15 16:59:56 -08:00
bors
566bcf2225 auto merge of #4969 : nickdesaulniers/rust/issue3869, r=brson
Issue #3869
review? @nikomatsakis 

Convert all uses of vec::slice to vec::view Issue #3869
Rename const_view to const_slice
Renamed mut_view to mut_slice
Fix windows build error.  `buf` is borrowed by the call to
`as_mut_buf()` and so we must invoke `slice()` outside of that
call.
2013-02-15 13:54:49 -08:00
bors
0528329a4f auto merge of #4964 : luqmana/rust/demove, r=graydon
As per #4339/#3676 this pull removes all uses `move` and gets rid of parsing it in libsyntax.
So that's one more thing to cross off #4707
2013-02-15 12:09:15 -08:00
bors
690d038d0b auto merge of #4959 : thestinger/rust/map, r=graydon 2013-02-15 11:26:41 -08:00
bors
0a1fcadc90 auto merge of #4958 : cpeterso/rust/reseed-rng, r=graydon
For Issue #4709:

**c531506 rt: rand.rs expects `rust_next()` to return `uint32_t`, not `size_t`**

rand.rs expects `rustrt::rand_next()` to return `u32`, but the `rand_next()` C function returns `size_t`: ca71c6ec5b/src/libcore/rand.rs (L34)

**f4320b6 move isaac RNG utility functions to new rust_rng.cpp file**
**665e900 encapsulate isaac RNG in `rust_rng` struct**

Move isaac's `randctx` into a `rust_rng` struct to make names similar to `rand::Rng` function names and prepare for auto-reseeding in the next commit.

**9a78dc9 reseed `rust_rng` after generating 32KB**

Precedents from other languages:
* Haskell's `GenAutoReseed` generator reseeds itself after generating 32KB: http://hackage.haskell.org/packages/archive/DRBG/0.1.2/doc/html/Crypto-Random-DRBG.html#t:GenAutoReseed

* Go's RNG reseeds itself after generating 1MB: https://code.google.com/p/go/source/browse/src/pkg/crypto/rand/rand_unix.go?name=go1.0.3#94

**9a76d71 don't deplete RNG entropy when there is only one runnable task**

`rust_sched_loop::schedule_task()` unnecessarily calls `isaac_rand()` for the common case when there is only 1 runnable task, thus depleting RNG entropy and incurring unnecessary overhead.
2013-02-15 10:06:12 -08:00
Niko Matsakis
91af52784a Fix windows build error. buf is borrowed by the call to
`as_mut_buf()` and so we must invoke `slice()` outside of that
call.
2013-02-15 09:25:16 -08:00
Marvin Löbel
46736868df Removed has_* predicates from NumStrConv trait
Moved `is_*` predicates into standalone functions
2013-02-15 13:39:51 +01:00
Luqman Aden
5912b1448c libcore: Get rid of move. 2013-02-15 02:49:54 -08:00
Daniel Micay
1561661db8 add reserve_at_least method to LinearMap/LinearSet 2013-02-15 02:39:20 -05:00
bors
9727008ed0 auto merge of #4944 : catamorphism/rust/xxx-to-fixme, r=catamorphism 2013-02-14 23:11:13 -08:00
Chris Peterson
665e900ede encapsulate isaac RNG in rust_rng struct 2013-02-14 22:31:08 -08:00
Daniel Micay
1e809aad3a rm FIXME from LinearMap's to_bucket
There are no more poor hash functions left in the codebase, and it makes
sense to rely on there being a good hash function thanks to the
inclusion of SipHash and the ease of using it with custom types.

Closes #3041
2013-02-15 00:55:46 -05:00
Marvin Löbel
a0846d4f6a tidy 2013-02-15 06:11:06 +01:00
Marvin Löbel
3edc7c0b9c Removed generic infinity, NaN and negative zero functions
Removed Round impl for integers
2013-02-15 05:46:07 +01:00
Marvin Löbel
df36a8dfc9 Long lines, proper FIXME, inlining 2013-02-15 05:40:01 +01:00
Marvin Löbel
bd93a36d73 Made num <-> str conversion functions use NumStrConv trait
Removed hacky dependency on Round trait and generic infinity functions
Removed generic-runtime-failure-depending-on-type behavior
2013-02-15 05:20:36 +01:00
Marvin Löbel
26e0aafb88 Added NumStrConv trait and impls for the string conversion functions 2013-02-15 04:40:32 +01:00
bors
5a9da65dc9 auto merge of #4937 : luqmana/rust/remove-mut-addr-of, r=catamorphism 2013-02-14 19:16:07 -08:00
Luqman Aden
206757f868 libcore: replace mut_addr_of properly on mac 2013-02-14 18:36:10 -08:00
Luqman Aden
cc89029942 libcore: Remove ptr::mut_addr_of since &mut is coerced to *mut 2013-02-14 18:36:10 -08:00
Marvin Löbel
adac6cb5c6 Moved numeric string conversion functions into own module 2013-02-15 03:29:36 +01:00
bors
20fd0c53ed auto merge of #4938 : thestinger/rust/no_zero, r=brson
I removed the unused wrappers methods named `calloc` because they relied on the malloc wrapper having a `bool zero = true` default parameter (which resulted in some accidental zeroing). Perhaps wrapping the actual calloc function would be useful, but I don't know of an existing use case that could use it so I just removed these.

This gives an ~1% performance improvement for TreeMap, which does a lot of small allocations. Vectors use `realloc` which didn't zero before these changes so there's no measurable change in performance.
2013-02-14 18:27:54 -08:00
Tim Chevalier
dcb98f4097 core: Clean up XXXes 2013-02-14 18:17:56 -08:00
Nick Desaulniers
5d62a4a52e Convert all uses of vec::slice to vec::view Issue #3869
Rename const_view to const_slice
Renamed mut_view to mut_slice
2013-02-14 16:14:32 -08:00
bors
3c07d037cd auto merge of #4934 : nickdesaulniers/rust/issue4524cleanup, r=brson
review? @brson
Issue #4524
2013-02-14 15:37:48 -08:00
Patrick Walton
9143688197 librustc: Replace impl Type : Trait with impl Trait for Type. rs=implflipping 2013-02-14 14:44:12 -08:00
Nick Desaulniers
4699ac67c6 Remove all final references to die! 2013-02-14 13:09:09 -08:00
Daniel Micay
22e88d510f stop zeroing all exchange allocations 2013-02-14 15:59:15 -05:00
Patrick Walton
216e85fadf libcore: Move the numeric operations out of Num. r=brson
Sadly I could not use trait inheritance due to a type parameter substitution
bug.
2013-02-14 08:14:01 -08:00
Nick Desaulniers
4445b38df2 Remove die!, raplace invocations with fail! Issue #4524 pt 3 2013-02-13 17:01:32 -08:00
bors
d5bf3b85d1 auto merge of #4908 : bstrie/rust/rimov3, r=pcwalton
This patch finishes removing inner vector mutability from the vast majority of the compiler. Exceptions:

* core::dvec: ideally this entire type will be able to be replaced by `~[]`, but Niko asked me to hold off on removing Dvecs until he makes some fixes to borrowed pointers. 
* liveness: liveness.rs is an impenetrable neutron star of deprecated semantics.
* compile-fail: I'm not sure if a lot of these tests are testing inner mutability or mutability in general. I figure that RIMOVing this folder should wait until this syntax is removed from the parser.

I also took this chance to remove many of the inner-mutability-related functions from core::vec, or as many uses of those functions as possible where still necessary. consume_mut and append_mut have been axed. cast_to_mut and cast_from_mut are still needed in a few places.
2013-02-13 15:09:07 -08:00
Graydon Hoare
e5aa399e0d rustc and std: teach about #[bench], modernize to use quote_expr! some. 2013-02-13 11:46:25 -08:00
Graydon Hoare
73280b0472 core: add abs to num. 2013-02-13 11:46:25 -08:00
Graydon Hoare
389125aeb8 core: add min and max to cmp, re-export various places. 2013-02-13 11:46:25 -08:00
Ben Striegel
e6c82c0375 RIMOV core::vec
Also remove as many uses as possible of vec::cast_to_mut and
cast_from_mut
2013-02-13 12:48:24 -05:00
Ben Striegel
4de76aeb14 RIMOV core::hash 2013-02-13 12:47:44 -05:00
Ben Striegel
808ccd3349 RIMOV core::io 2013-02-13 12:47:44 -05:00
Ben Striegel
3a3f7b8e55 RIMOV core::rand 2013-02-13 12:47:44 -05:00
Ben Striegel
2d2ed075e3 RIMOV core::run 2013-02-13 12:47:43 -05:00
bors
6016214101 auto merge of #4900 : luqmana/rust/core_os_errors, r=graydon
Rewrote the last pull request (#4859) to not require on llvm for core.

Also fixes #2269.
2013-02-12 21:27:22 -08:00
bors
27b3e01377 auto merge of #4914 : nikomatsakis/rust/issue-4856, r=nikomatsakis
and then adjust code to match. rs=unsound (will review post-landing)

rs=unsound
2013-02-12 20:40:19 -08:00
Niko Matsakis
ab2534974c Adjust borrow checker algorithm to address #4856 unsoundness,
and then adjust code to match. rs=unsound (will review post-landing)
2013-02-12 20:10:50 -08:00
bors
6727c6fb56 auto merge of #4881 : bjz/rust/incoming, r=catamorphism 2013-02-12 16:22:58 -08:00
bors
91c59f5c9a auto merge of #4880 : erickt/rust/hashmap-cleanup, r=catamorphism 2013-02-12 15:24:42 -08:00
bors
bc2d147847 auto merge of #4858 : z0w0/rust/rm_weak_task_count, r=graydon 2013-02-12 14:36:33 -08:00
bors
210fa2d017 auto merge of #4874 : thestinger/rust/option, r=catamorphism 2013-02-12 10:35:12 -08:00
Luqman Aden
44b80ed0d6 Long lines. 2013-02-11 23:49:49 -05:00
Luqman Aden
70185fdcc2 rt: remove last_os_error and adjust tests. 2013-02-11 23:49:49 -05:00
Luqman Aden
625fac3c7e core: Rewrite last_os_error in Rust for windows as well. 2013-02-11 23:49:49 -05:00
Luqman Aden
9877d98b8f core: Rewrite last_os_error in Rust for unix and provide access to errno (unix) and GetLastError (windows). 2013-02-11 23:49:49 -05:00
Zack Corr
0db527e2f8 core: Fix dec/inc_kernel_live_count mixup 2013-02-12 12:27:19 +10:00
Zack Corr
33ae05871c core: Fix files that needed GenericChan/Port from prelude 2013-02-11 12:11:23 +10:00
Brendan Zabarauskas
48b2141b83 Add NumCast trait for generic numeric type casts 2013-02-11 12:33:05 +11:00
Erick Tryzelaar
4fb4a4b66d core: add LinearMap::find_or_insert{,_with}
This allows for inserting a new value into the map only if it doesn't
already exist in the map.
2013-02-10 15:51:25 -08:00
Erick Tryzelaar
849644b5bc core: rename hashmap test functions 2013-02-10 15:51:25 -08:00
Erick Tryzelaar
fed5df8f2e libcore: LinearMap doesn't need to pass around the bucket vec 2013-02-10 15:51:25 -08:00
Daniel Micay
99ff74c1bd make Option's iter method use a lifetime 2013-02-10 16:30:17 -05:00
Zack Corr
4f843763a1 core: Remove GenericChan/Port from prelude. Closes #4762 2013-02-10 18:10:09 +10:00
bors
d90abd5879 auto merge of #4848 : nikomatsakis/rust/issue-4821-bad-kind-computation, r=catamorphism
...ear

values to be copied.  Rewrite kind computation so that instead of directly
computing the kind it computes what kinds of values are present in the type,
and then derive kinds based on that. I find this easier to think about.

Fixes #4821.

r? @catamorphism
2013-02-09 10:20:55 -08:00
Zack Corr
ebd20b7944 Rename dec/inc_weak_task_count to inc/dec_live_count and remove register_task/unregister_task. Closes #4768 2013-02-09 19:19:31 +10:00
Niko Matsakis
a380df809c Fix subtle error in caching during kind computation that could cause linear
values to be copied.  Rewrite kind computation so that instead of directly
computing the kind it computes what kinds of values are present in the type,
and then derive kinds based on that. I find this easier to think about.

Fixes #4821.
2013-02-08 07:20:39 -08:00
bors
e5637226d8 auto merge of #4839 : catamorphism/rust/rm-structural-records, r=catamorphism 2013-02-07 23:16:42 -08:00
Tim Chevalier
3b8f1fa2b6 core: Remove structural records from the rest of core, except pipes
That will, sadly, require one more snapshot.
2013-02-07 22:48:57 -08:00
Daniel Micay
9599cc86f0 implement BaseIter for LinearMap 2013-02-07 22:28:58 -05:00
Daniel Micay
3e0a28c7da add a ReverseIter trait 2013-02-07 22:04:38 -05:00
Daniel Micay
e018244777 make Option's map and map_default use a lifetime 2013-02-07 22:04:38 -05:00
Daniel Micay
83270d2d79 rm each method from the Map trait
the map types should implement BaseIter instead
2013-02-07 22:04:35 -05:00
Tim Chevalier
9123c58526 core: Remove transitional code 2013-02-07 18:26:43 -08:00
Patrick Walton
472797b04a librustc: Lots of de-muting. rs=demuting 2013-02-07 16:17:39 -08:00
Brian Anderson
6e9298ab88 Merge pull request #4619 from brson/exchange
Some work on freestanding Rust: foreign calls, exchange allocator
2013-02-07 13:46:10 -08:00
Niko Matsakis
a32498d846 Make ~fn non-copyable, make &fn copyable, split barefn/closure types,
correct handling of moves for struct-record update.

Part of #3678.  Fixes #2828, #3904, #4719.
2013-02-07 05:53:30 -08:00
bors
951ad11d68 auto merge of #4815 : thestinger/rust/treemap, r=pcwalton
5283a8b reworks the TreeMap lazy iterator to use `&mut` again, which closes #4763. It gets the performance of the set methods back in the same ballpark that it was pre-INHTWAMA which is nice. These can be turned back into methods eventually.

e5b6334 removes the transitional smallintmap attributes which closes #4737.
2013-02-06 22:57:08 -08:00
bors
2df473dc69 auto merge of #4801 : z0w0/rust/randomtrait, r=graydon
Also adds Rng::gen() for generically generating any type that implements the Rand trait. There's no way to generate things with a length (for e.g. strings or vectors), because I can't think of an elegant way to do that. Maybe have a RandLen trait that inherits Rand?

This can be used for a quickcheck mechanism I'm working on.
2013-02-06 21:04:37 -08:00
Daniel Micay
b91a51daca remove issue #3148 workarounds (no longer needed) 2013-02-06 17:37:56 -05:00
Brian Anderson
e43c5bdc6b Rewrite the exchange allocator to work without an active scheduler. #4457 2013-02-06 14:27:36 -08:00
Tim Chevalier
33e2c979ce Merge branch 'incoming' into removing 2013-02-05 10:33:35 -08:00
Tim Chevalier
2dcb3ed745 Merge 2013-02-05 10:33:28 -08:00
bors
e72c917f71 auto merge of #4793 : brson/rust/ignore_exclusive_unwrap_conflict, r=brson 2013-02-05 05:21:28 -08:00
Zack Corr
abd29e5ead core: Add a rand::Rand trait that is implemented by types that can be
randomly generated
Also adds Rng::gen() for generating any type that implements the Rand
trait
2013-02-05 22:56:40 +10:00
bors
6e0f05b059 auto merge of #4790 : pcwalton/rust/at-readers, r=pcwalton 2013-02-05 02:09:29 -08:00
Tim Chevalier
2f46b763da core/syntax: Staging fixes 2013-02-04 17:42:19 -08:00
Tim Chevalier
e22aa029fb core/syntax: Add transitional code for pipes 2013-02-04 15:18:53 -08:00
Brian Anderson
8dfab498ef Ignore test exclusive_unwrap_conflict. #4689 2013-02-04 14:19:19 -08:00
bors
eb28ce01ed automated merge 2013-02-04 13:35:37 -08:00
Patrick Walton
7d5322cf09 libcore: Add @ to Readers 2013-02-04 13:33:17 -08:00
Erick Tryzelaar
159568eab5 core: Flesh out the either traits 2013-02-03 21:55:51 -08:00
Erick Tryzelaar
f4ed7d9b6e core: export either::{Either,Left,Right} from the prelude 2013-02-03 21:55:51 -08:00
Erick Tryzelaar
31404364e1 core: sort each prelude.rs section 2013-02-03 21:55:51 -08:00
Erick Tryzelaar
9adfa59d8e core: convert ToStr::to_str to take explicit &self 2013-02-03 20:47:26 -08:00
Marvin Löbel
eeb89c5012 Solved float, f32 and f64 to_str_radix() special value ambiguity.
Calling it on a special value now causes a failure, however `to_str_radix_special()` is provided which can be
used if those values are expected, and which returns a tupel to allow differentating them.
2013-02-03 15:37:25 -08:00
Marvin Löbel
974d5ac1e0 Fixed errors resulting from rebase. 2013-02-03 15:37:25 -08:00
Marvin Löbel
af4972f3ce Fixed fmt!, tests, doc-tests. 2013-02-03 15:37:25 -08:00
Marvin Löbel
98445d95d4 Removed wrong/wip doc 2013-02-03 15:37:25 -08:00
Marvin Löbel
a612e49a21 Converted the floating point types to the new string conversion functions.
Also fixed all conflicting calls of the old functions in the rest of the codebase.

The set of string conversion functions for each float type now consists of those items:
- to_str(), converts to number in base 10
- to_str_hex(), converts to number in base 16
- to_str_radix(), converts to number in given radix
- to_str_exact(), converts to number in base 10 with a exact number of trailing digits
- to_str_digits(), converts to number in base 10 with a maximum number of trailing digits
- implementations for to_str::ToStr and num::ToStrRadix
- from_str(), parses a string as number in base 10 including decimal exponent and special values
- from_str_hex(), parses a string as a number in base 16 including binary exponent and special values
- from_str_radix(), parses a string as a number in a given base excluding any exponent and special values
- implementations for from_str::FromStr and num::FromStrRadix
2013-02-03 15:37:24 -08:00
Marvin Löbel
7113fd150a Fixed tests still using old integer to_str
Fixed integer tests
2013-02-03 15:37:24 -08:00
Marvin Löbel
eb19462104 Converted libcore/uint-template.rs to the new string functions.
- Moved ToStr implementation of unsigned integers to uint-template.rs.
- Marked the `str()` function as deprecated.
- Forwarded all conversion functions to `core::num::to_str_common()`
  and `core::num::from_str_common()`.
- Fixed most places in the codebase where `to_str()` is being used.
- Added uint-template to_str and from_str overflow tests.
2013-02-03 15:37:24 -08:00
Marvin Löbel
26e72bf92b Converted libcore/int-template.rs to the new string functions.
- Moved ToStr implementation of integers to int-template.rs.
- Marked the `str()` function as deprecated.
- Forwarded all conversion functions to `core::num::to_str_common()`
  and `core::num::from_str_common()`.
- Fixed most places in the codebase where `to_str()` is being used.
- Added int-template to_str and from_str overflow tests.
2013-02-03 15:37:24 -08:00
Marvin Löbel
5b0335ec8e Added generic string <-> number conversion functions to core::num.
They unify the different implementations that exists in int-template.rs, uint-template.rs and float.rs into one pair of functions, which are also in principle usable for anything that implements the necessary numeric traits. Their usage is somewhat complex due to the large amount of arguments each one takes, but as they're not meant to be used directly that shouldn't be a problem.
2013-02-03 15:37:24 -08:00
Marvin Löbel
bb9c3ed876 Added some generic number functions to core::num
Also fixes previous commit not compiling due to not finding Option.
2013-02-03 15:37:24 -08:00
Marvin Löbel
05d83017ec Added char::from_digit(), char::is_digit_radix() and an argument check to char::to_digit(). 2013-02-03 15:37:24 -08:00
Marvin Löbel
d13b23f37e Added ToStrRadix and FromStrRadix traits 2013-02-03 15:37:24 -08:00
Marvin Löbel
96f0512a45 Added Round trait to core 2013-02-03 15:37:23 -08:00
Marvin Löbel
40f0b45f8e Moved all numeric modules in core into own directory
Reason: Better grouping of related modules, future-proving for a more extensive math library.
2013-02-03 15:37:23 -08:00
Brian Anderson
4f6516969e rt: Remove ports 2013-02-01 21:22:49 -08:00
Brian Anderson
542bf20414 core: Remove oldcomm 2013-02-01 21:22:49 -08:00
Nick Desaulniers
7868b6bf55 Remove fail keyword from lexer & parser and clean up remaining calls to
fail

Fix merge conflicts - Issue 4524
2013-02-01 00:15:42 -08:00
Nick Desaulniers
6fb4239bb3 Replace most invocations of fail keyword with die! macro 2013-01-31 22:25:12 -08:00
Nick Desaulniers
aee7929469 Replace most invocations of fail keyword with die! macro 2013-01-31 20:12:49 -08:00
Tim Chevalier
a9587b8fcd core: Remove transitional code 2013-01-31 19:35:57 -08:00
Tim Chevalier
845b06542e messing around with pipes and stages 2013-01-31 19:35:56 -08:00
Tim Chevalier
e0281d991c core: Stamp out XXXes (comments only) 2013-01-31 19:34:46 -08:00
Brian Anderson
5aacf791e8 Merge pull request #4706 from sanxiyn/cleanup-fixme
Cleanup FIXMEs (#3488)
2013-01-31 17:00:27 -08:00
Brian Anderson
c95c7c87b1 Merge pull request #4702 from aydinkim/patch-1
Delete unnecessary logs
2013-01-31 16:57:30 -08:00
Niko Matsakis
0682ad0eb9 Finalize moves-based-on-type implementation.
Changes:

- Refactor move mode computation
- Removes move mode arguments, unary move, capture clauses
  (though they still parse for backwards compatibility)
- Simplify how moves are handled in trans
- Fix a number of illegal copies that cropped up
- Workaround for bug involving def-ids in params
  (see details below)

Future work (I'll open bugs for these...):

- Improve error messages for moves that are due
  to bindings
- Add support for moving owned content like a.b.c
  to borrow check, test in trans (but I think it'll
  "just work")
- Proper fix for def-ids in params

Def ids in params:

Move captures into a map instead of recomputing.

This is a workaround for a larger bug having to do with the def-ids associated
with ty_params, which are not always properly preserved when inlining.  I am
not sure of my preferred fix for the larger bug yet.  This current fix removes
the only code in trans that I know of which relies on ty_param def-ids, but
feels fragile.
2013-01-31 12:09:00 -08:00
Seo Sanghyeon
7b268e8316 Cleanup FIXMEs (#3488) 2013-01-31 19:23:18 +09:00
Aydin Kim
6102d2abf2 Delete unnecessary logs 2013-01-31 15:47:44 +09:00
Patrick Walton
366812a5c3 librustc: Change self as a type to Self everywhere. r=brson 2013-01-30 19:52:45 -08:00
Graydon Hoare
4030aaff20 rustc: make integral type inference transactional, close #3211, close #4401, close #3398. 2013-01-30 16:21:19 -08:00
Tim Chevalier
77f2aac389 Merge pull request #4687 from alexcrichton/hashmap-speedup
Use task local random when initializing LinearMap
2013-01-30 14:48:49 -08:00
Cody Schroeder
b505504dc4 Add test for float::round 2013-01-30 01:28:04 -08:00
Alex Crichton
c75e59ac0f Use task local random when initializing maps 2013-01-30 02:49:58 -05:00
Patrick Walton
28ed9dc09e librustc: Long lines. rs=burning 2013-01-29 22:40:13 -08:00
Patrick Walton
0c1d9befb3 librustc: Speed up byte copy operations. r=nmatsakis 2013-01-29 22:15:06 -08:00
Patrick Walton
1b613ff9fc librustc: Strdup unique strings instead of copying in byte by byte. Shaves 2MB off librustc at -O0. 2013-01-29 22:14:08 -08:00
Tim Chevalier
4b8dfad5cd core tests: Add use vec; directive inside core::hashmap tests
This is probably to work around a bug.
2013-01-29 20:43:44 -08:00
Tim Chevalier
b927e48a26 Merge pull request #4682 from thestinger/treemap
Set trait improvements + minor treemap cleanup
2013-01-29 20:09:15 -08:00
Tim Chevalier
0aef28dd6d De-capitalize "note" to get rid of spurious tidy warnings 2013-01-29 19:26:55 -08:00
Daniel Micay
6b08683e15 add intersection and union to the Set trait 2013-01-29 22:24:00 -05:00
Daniel Micay
99eb4ddddd add difference and symmetric_difference to Set 2013-01-29 21:59:58 -05:00
Daniel Micay
42cafcee2c add is_disjoint to the Set trait 2013-01-29 21:30:55 -05:00
Daniel Micay
bfa9c9a00f add is_subset and is_superset to the Set trait 2013-01-29 21:30:55 -05:00
Patrick Walton
d0391c5b09 libcore: De-export libcore. rs=deexporting 2013-01-29 11:48:46 -08:00
Tim Chevalier
1b021d5868 Long line 2013-01-29 11:44:46 -08:00
Patrick Walton
226cd68f13 librustc: De-implicit-self the visitor. r=graydon 2013-01-29 10:43:12 -08:00
Patrick Walton
6ce74460e6 librustc: Disallow trait bounds in types, enumerations, and structure definitions. r=tjc 2013-01-29 10:42:58 -08:00
Patrick Walton
eb4d39e1fe libstd: Remove "dual impls" from the language and enforce coherence rules. r=brson
"Dual impls" are impls that are both type implementations and trait
implementations. They can lead to ambiguity and so this patch removes them
from the language.

This also enforces coherence rules. Without this patch, records can implement
traits not defined in the current crate. This patch fixes this, and updates
all of rustc to adhere to the new enforcement. Most of this patch is fixing
rustc to obey the coherence rules, which involves converting a bunch of records
to structs.
2013-01-29 10:42:45 -08:00
Alex Crichton
810eeef444 Fix the len() method on LinearMap during popping 2013-01-29 11:16:39 -05:00
Tim Chevalier
c5461e46ae core: Allow legacy records in in a few modules
Because of macros, #[allow(structural_records]] in
extfmt, gc, os, pipes, and run. Will need a snapshot.
2013-01-28 19:41:56 -08:00
Brian Anderson
a72aeef9f7 Revert readline optimization and add test 2013-01-28 19:32:02 -08:00
Michael Neumann
d38939c7e8 Slightly optimize read_line()
No need to allocate an additional vector. Instead directly push into the
string.
2013-01-28 14:40:11 -08:00
Michael Neumann
02de11c1e7 Fix example code 2013-01-28 14:40:11 -08:00
Daniel Micay
8eaf0737b7 get rid of LinearMap's find_copy method 2013-01-28 16:06:09 -05:00
Brian Anderson
83ca034d2e Merge remote-tracking branch 'brson/nocommupstream2' 2013-01-26 14:57:58 -08:00
Tim Chevalier
0743cec023 core: Remove structural records in library tests 2013-01-26 11:35:17 -08:00
Tyler Bindon
3a5d2cdbf3 Fix Option camel case in comments 2013-01-25 19:42:23 -07:00
Brian Anderson
1ef83945c1 Merge remote-tracking branch 'brson/nocommupstream'
Conflicts:
	src/libcore/private.rs
	src/libcore/task/mod.rs
	src/libcore/task/spawn.rs
	src/libstd/net_tcp.rs
	src/libstd/uv_global_loop.rs
	src/libstd/uv_iotask.rs
2013-01-25 18:06:30 -08:00
Tim Chevalier
85a34c2898 Merge pull request #4625 from thestinger/container
more little container improvements
2013-01-25 11:57:51 -08:00
Tim Chevalier
2d33e308ac core: Mop up Windows breakage 2013-01-24 20:39:09 -08:00
Daniel Micay
e4337a9def remove remaining is_not_empty functions/methods 2013-01-24 23:24:57 -05:00
Daniel Micay
ec3f6e1932 implement Mutable trait for vec 2013-01-24 23:10:14 -05:00
Daniel Micay
d95c9cbe38 replace ConstVector trait with the Container trait 2013-01-24 23:02:44 -05:00
Tim Chevalier
b73d926a7e Merge pull request #4623 from thestinger/map
clean up LinearMap implementation
2013-01-24 19:17:23 -08:00
Daniel Micay
5c14b91bad clean up LinearMap implementation 2013-01-24 22:04:16 -05:00
Erick Tryzelaar
11fd2beef9 Convert dlist records into structs 2013-01-24 16:24:31 -08:00
Erick Tryzelaar
339618a7f9 convert io wrapper records into structs 2013-01-24 16:24:31 -08:00
Erick Tryzelaar
9b17e7a777 Fix another typo 2013-01-24 16:24:31 -08:00
Erick Tryzelaar
5085eb3c28 Convert pipes::Buffer into a struct 2013-01-24 16:24:31 -08:00
Erick Tryzelaar
feab095d65 Convert core::pipes::{Packet,Chan_,Port_} into structs 2013-01-24 16:24:31 -08:00
Erick Tryzelaar
90734a0d33 Convert extfmt::rt::Conv into a struct 2013-01-24 16:24:31 -08:00
Erick Tryzelaar
79a9b23f4a Fix a typo 2013-01-24 16:24:31 -08:00
Erick Tryzelaar
c15facb5c0 Remove "unsafe" from run::start_program 2013-01-24 16:24:30 -08:00
Erick Tryzelaar
e22d2bc4bc core: convert io::Res over to the Drop trait 2013-01-24 16:24:30 -08:00
Erick Tryzelaar
e4d4a1499b convert most of libcore records into structs 2013-01-24 16:24:30 -08:00
Patrick Walton
ad25e208ee librustc: Allow &mut to be loaned; allow self to be loaned; make &mut loanable to &. r=nmatsakis 2013-01-24 13:52:22 -08:00
Patrick Walton
163b97b7bb librustc: Make C functions unsafe 2013-01-24 13:52:21 -08:00
Daniel Micay
dbfe21edda document LinearMap::new 2013-01-24 13:36:55 -05:00
Daniel Micay
acde90dc1c remove old LinearMap constructor 2013-01-24 13:36:04 -05:00
Graydon Hoare
07d0af151a core: fix windows breakage from 982cf90, r=burningtree. 2013-01-23 21:57:05 -08:00
Tim Chevalier
a202dcccca Merge pull request #4594 from thestinger/map
more work on the map trait and TreeMap/LinearMap
2013-01-23 20:10:47 -08:00
Tim Chevalier
982cf90dc6 Add a T_SIGNED type to uint template and eliminate step_down variant
Handle negative steps properly in range_step, fix order of arguments
in tests, and such.
2013-01-23 18:57:57 -08:00
Huon Wilson
1a6e1e2801 libcore: Correct behaviour of range_step for uint, tests for range* functions.
Splits the range_step function into the two directions (up, low -> high,
and down, high -> low) for the uint types, since there is no way to have
`step < 0` for a backwards range.
2013-01-23 18:56:41 -08:00
Huon Wilson
83e3c82d63 libcore: Add range_step and range_rev functions.
Closes #1817
2013-01-23 18:56:41 -08:00
Brian Anderson
bc0c5bb447 core: Stop using oldcomm 2013-01-23 17:35:35 -08:00
Brian Anderson
cc9ab2c033 Remove old comm-based weak task interface 2013-01-23 17:35:34 -08:00
Brian Anderson
a3e087cefa core: Remove private::chan_from_global_ptr. #3915 2013-01-23 17:35:34 -08:00
Brian Anderson
b9608fe423 std: Convert uv_global_loop to use pipes 2013-01-23 17:35:34 -08:00
Brian Anderson
fb9299346a core: Convert getenv/setenv to use a mutex
This much simpler implementation uses a global mutex
and eliminates the kernel environment channel.
2013-01-23 17:35:34 -08:00
Brian Anderson
8852279a9e core: Add new weak task API 2013-01-23 17:35:31 -08:00
Daniel Micay
7f0fa143bc switch LinearMap to current constructor convention 2013-01-23 18:01:24 -05:00
Patrick Walton
54b2cad8b3 libsyntax: Remove fn() unsafe { ... }. r=graydon 2013-01-23 14:41:08 -08:00
Tim Chevalier
10e8ae852d Merge pull request #4597 from Dretch/atvec-constructors
Oops - add the missing pubs!
2013-01-23 14:37:47 -08:00
gareth
ba2a3e8234 Oops - add the missing pubs! 2013-01-23 22:30:56 +00:00
Daniel Micay
591eefd740 improve hashmap/treemap documentation 2013-01-23 16:47:27 -05:00
Daniel Micay
988ce7180d rm unnecessary usage of 'unsafe' from hashmap 2013-01-23 16:39:09 -05:00
Daniel Micay
8bf9bae303 remove cautionary wording in the hashmap docstring
it's pretty solid, at least relative to most of the other modules
2013-01-23 16:29:38 -05:00
Patrick Walton
6dbfb5da0b libcore: Use LLVM intrinsics for floor; add a new Perlin noise benchmark. r=brson 2013-01-23 11:37:32 -08:00
Daniel Micay
dbeef1d657 remove the LinearMap get_copy method
This isn't simpler (or faster) than just doing the copy in the caller,
and it doesn't work for types that can be cloned but not copied.
2013-01-23 14:25:06 -05:00
Daniel Micay
45c9f6a099 add find method to the core::container::Map trait 2013-01-23 14:25:06 -05:00
Daniel Micay
ee0a8c68ab rename hashmap find_ref/get_ref -> find/get 2013-01-23 14:25:06 -05:00
Daniel Micay
203fcbd0f3 rename hashmap find/get -> find_copy/get_copy 2013-01-23 14:25:06 -05:00
Daniel Micay
b7ef28c33a rename send_map to hashmap
This makes the module much more discoverable, and is in line with the
'treemap' naming.
2013-01-23 14:25:01 -05:00
Trinick
9dc8e96c5f core: Rename to_mut and from_mut to cast_to_mut and cast_from_mut 2013-01-23 10:09:45 +00:00
Daniel Micay
8cff5c22c3 migrate task/spawn.rs to LinearSet 2013-01-22 21:28:28 -05:00
Daniel Micay
7de5e6c487 migrate gc.rs to LinearSet 2013-01-22 21:28:28 -05:00
gareth
9b27ec8684 Add more constructors for managed vectors (as proposed in issue #4553) 2013-01-22 22:52:20 +00:00
Tim Chevalier
e02449c41d Merge pull request #4571 from thestinger/container
more work on container traits
2013-01-22 10:57:26 -08:00
Daniel Micay
6f4d86ed90 add a base Container trait 2013-01-22 08:10:08 -05:00