Brian Anderson
53df58a177
Purge vecs from the std::test interface
2011-08-17 09:55:55 -07:00
Eric Holk
fc616af820
Updating to new type parameter syntax.
2011-08-16 16:52:52 -07:00
Eric Holk
8686645aad
New channel-based task status notifications.
2011-08-16 16:47:40 -07:00
Erick Tryzelaar
d9327a61bb
Port the stdlib to the expr foo::<T> syntax.
2011-08-16 15:05:56 -07:00
Erick Tryzelaar
4c9049c50c
Port the stdlib to the decl foo<T> syntax.
2011-08-16 15:05:56 -07:00
Erick Tryzelaar
f764f9a8cf
Port the stdlib to the typaram foo<T> syntax.
2011-08-16 15:05:56 -07:00
Brian Anderson
f05a91a0dc
Rename std::ivec to std::vec
2011-08-16 10:36:19 -07:00
Brian Anderson
38c2363c45
Replace std::ufind with std::ufindivec. Remove std::ufindivec
2011-08-16 10:29:09 -07:00
Brian Anderson
df402a5029
Rename bitv::to_ivec to to_vec
2011-08-16 10:29:09 -07:00
Brian Anderson
bab29af449
Continue migrating the std #fmt interface to ivecs
...
Only thing left is to remove some duplicate interfaces in std::extfmt::rt
after the next snapshot
2011-08-16 10:29:09 -07:00
Brian Anderson
184eac90ab
Add and use an ivec interface to std::test
2011-08-16 10:29:08 -07:00
Eric Holk
88a47020cf
Updating sio tests.
2011-08-16 09:45:55 -07:00
Eric Holk
cf2def46c1
Removed trans_comm.rs from the compiler. Updating aio/sio to work with the new chan and port system, started on a networking module for the standard library.
2011-08-16 09:36:29 -07:00
Marijn Haverbeke
92719e438c
Clean up zip and unzip in std::ivec
2011-08-16 13:45:41 +02:00
Lindsey Kuper
f91351aaf6
The wonky for...in... whitespace was bothering me. Sorry!
2011-08-15 22:19:50 -07:00
Graydon Hoare
814bf41d89
Add operator 'copy', translates as fall-through.
2011-08-15 15:44:41 -07:00
Eric Holk
d63f8340a5
Properly ref counting to fix valgrind issues on linux.
2011-08-15 09:26:52 -07:00
Eric Holk
be7325073a
Removed spawn and task from the parser. Updated all the tests except for the benchmarks.
2011-08-15 09:26:52 -07:00
Eric Holk
cc353aa17a
Removed old object-based chans.
2011-08-15 09:26:51 -07:00
Eric Holk
b9f1f77622
Fixed memory accounting and task stack creation bugs.
2011-08-15 09:26:51 -07:00
Eric Holk
2f23405a60
Working on more spawn test cases.
2011-08-15 09:26:51 -07:00
Eric Holk
b2dad8af31
Added a library version of spawn. Before long, we can remove the old version.
2011-08-15 09:26:51 -07:00
Eric Holk
871d1317e5
Move mode for lib comm, converted a few tests.
2011-08-15 09:26:51 -07:00
Eric Holk
39b16077bb
Port ID-based channels.
2011-08-15 09:26:51 -07:00
Brian Anderson
34abbde694
Remove std::ivec::to_vec
...
Nobody needs to create vecs now
2011-08-12 16:13:14 -07:00
Brian Anderson
12b03dd3d4
Add an ivec interface to the #fmt library functions
...
It will take a snapshot to finish the ivec conversion for #fmt
2011-08-12 16:13:13 -07:00
Brian Anderson
4e62c0d6cb
Remove std::vec
2011-08-12 12:14:07 -07:00
Brian Anderson
4fc0848a49
Rename rust_list_files_ivec to rust_list_files
2011-08-12 12:14:07 -07:00
Brian Anderson
8561f7654c
Remove rust_list_files from std and rt
2011-08-12 12:14:07 -07:00
Brian Anderson
d1b3ed8c3f
Remove runtime vector builtins
2011-08-12 12:14:07 -07:00
Brian Anderson
533becef2f
Don't export anything from std::vec
2011-08-12 12:14:07 -07:00
Brian Anderson
3d1634db15
Remove all usages of std::vec::vbuf
2011-08-12 12:14:07 -07:00
Brian Anderson
f9db0390f9
Remove last use of vec:buf
2011-08-12 12:14:07 -07:00
Brian Anderson
f9623f0056
Remove vecs from std::sha1
2011-08-12 12:14:07 -07:00
Brian Anderson
12cd11ecda
Remove last uses of vec::len
2011-08-12 12:14:07 -07:00
Brian Anderson
544bdf05c5
Convert uint::parse_buf to ivecs
2011-08-12 12:14:07 -07:00
Brian Anderson
5f71a204d3
Remove vecs from std::getopts
2011-08-12 12:14:07 -07:00
Brian Anderson
8840fab822
Remove unused functions from std::vec
2011-08-12 12:14:07 -07:00
Brian Anderson
784884cc07
Remove more exports from std::vec
2011-08-12 12:14:06 -07:00
Brian Anderson
f323aeed17
Remove more vectors from std
2011-08-12 12:14:06 -07:00
Brian Anderson
0fed53921f
Remove ebmlivec module
2011-08-12 12:14:06 -07:00
Brian Anderson
674fb0911c
Rename std::termivec to std::term
2011-08-12 12:14:06 -07:00
Brian Anderson
495b0bf65e
Remove std::term
2011-08-12 12:14:06 -07:00
Brian Anderson
7625ed52ee
Remove vecs from std::sort
2011-08-12 12:14:06 -07:00
Brian Anderson
abf41e15ea
Remove usages of vec:print_debug_info
2011-08-12 12:11:12 -07:00
Brian Anderson
13439dc870
Convert std::run to ivecs
2011-08-12 12:11:12 -07:00
Brian Anderson
5c042a02cd
Remove vecs from std::bitv
2011-08-12 12:11:12 -07:00
Brian Anderson
72773e6d4d
Hide even more exports from std::vec
2011-08-12 12:11:12 -07:00
Brian Anderson
5ed5ae8918
Remove a bunch of exports from std::vec
2011-08-12 12:11:12 -07:00
Brian Anderson
4dec0f6d96
Add reverse and reversed to std::ivec
...
Modify tests to use the ivec version
2011-08-12 12:11:11 -07:00
Brian Anderson
ae4c17e267
Add some of stdtest::vec into stdtest::ivec
...
Add missing functions to std::ivec as needed
2011-08-12 12:10:25 -07:00
Brian Anderson
9638f522bd
Don't export vec::alloc, vec::refcount
2011-08-12 12:08:28 -07:00
Brian Anderson
a679ea5c3c
Limit the exports from std::vec
2011-08-12 12:08:27 -07:00
Brian Anderson
7d05da96f7
Rename std::ioivec to std::io
2011-08-12 12:08:27 -07:00
Brian Anderson
0b71d1d445
Remove std::io
2011-08-12 12:08:27 -07:00
Brian Anderson
82b1e3f5cc
Convert all uses of std::io to std::ioivec
2011-08-12 12:08:27 -07:00
Brian Anderson
c0846525e8
Remove a vbuf import from std::str
2011-08-12 12:08:27 -07:00
Brian Anderson
119f43e0c7
Rename str::connect_ivec to str::connect
2011-08-12 12:08:27 -07:00
Brian Anderson
21693db2a7
Remove str::connect
2011-08-12 12:08:27 -07:00
Brian Anderson
09cc957030
Convert str::concat to ivecs
2011-08-12 12:08:27 -07:00
Brian Anderson
1e397eee2a
Rename str::split_ivec to str::split
2011-08-12 12:08:27 -07:00
Brian Anderson
e3e9811b7f
Remove str::split
2011-08-12 12:08:27 -07:00
Brian Anderson
cfb9cba19f
Convert str::from_chars, to_chars to ivecs
2011-08-12 12:08:27 -07:00
Brian Anderson
878fbac278
Remove str_from_vec runtime function
2011-08-12 12:08:27 -07:00
Brian Anderson
740196987e
Rename std::str::unsafe_from_bytes_ivec to unsafe_from_bytes
2011-08-12 12:08:27 -07:00
Brian Anderson
6050e1d4f6
Remove std::str::unsafe_from_bytes
2011-08-12 12:08:27 -07:00
Brian Anderson
a9ce342fa3
Convert all uses of unsafe_from_bytes to unsafe_from_bytes_ivec
2011-08-12 12:08:26 -07:00
Brian Anderson
49b80f9bf7
Remove str::from_bytes
...
This is exactly the same as str::unsafe_from_bytes
2011-08-12 12:08:26 -07:00
Brian Anderson
7e255335d2
Convert str::is_utf8 to ivecs
2011-08-12 12:08:26 -07:00
Brian Anderson
2e7e58812b
Remove vec version of str::bytes, rename bytes_ivec to str::bytes
2011-08-12 12:08:26 -07:00
Brian Anderson
4caeba9178
Remove vecs from the rustc driver
2011-08-12 12:08:26 -07:00
Brian Anderson
f195814df3
Begin removing vecs from #fmt
2011-08-12 12:08:26 -07:00
Michael Sullivan
8a9766000e
Change a bunch of places in the stdlib to use blocks.
2011-08-12 11:47:44 -07:00
Michael Sullivan
5adaa6f956
Do some cleanup in stdlib.
2011-08-09 17:53:52 -07:00
Erick Tryzelaar
50f97cb368
Port the stdlib to the ivec type [T] syntax.
2011-08-09 15:53:26 -07:00
Erick Tryzelaar
bf7b516bdb
Add newlines to the end of some files.
2011-08-09 11:29:36 -07:00
Patrick Walton
3dda9aabf2
stdlib: std::ebmlivec and std::ebml are now synonyms
2011-08-08 15:30:37 -07:00
Eric Holk
d9b84a546c
Converted the rest of the task-comm-* tests over. Also fixed some
...
channel lifecycle bugs.
2011-08-08 08:57:52 -07:00
Eric Holk
86babab2fe
Added an unsafe way to pass libchans over spawn and chans, and converted task-comm-0 to use libcomm.
2011-08-08 08:57:52 -07:00
Eric Holk
f9fd785cf5
Removing an invalid operation in the attempt to restore valgrind cleanness.
2011-08-05 17:01:06 -07:00
Eric Holk
200bbcf91b
Rewrote receive to return a value. This lets us initialize variables by receiving them.
2011-08-05 15:27:27 -07:00
Rob Arnold
f4b87c749f
Basic async IO module using libuv
2011-08-05 11:57:06 -07:00
Patrick Walton
d4fe1b3127
stdlib: Pass getopt matches by alias
2011-08-04 17:11:50 -07:00
Brian Anderson
4ae6c835cb
Add some hacks to get stdin piping working more correctly in windows
...
The way pipes work in windows is not the same as unix, though I'm not
entirely clear on the differences. This patch changes the windows pipe
method to return non-inheritable fds, and the windows rust_run_program
method to duplicate them before spawning the new process.
This allows make-check-pretty to work on windows.
2011-08-03 15:09:00 -07:00
Graydon Hoare
bc11cd5ca5
Fix majority of valgrind-purity bugs observed in a rustc run (LLVM still appears to leak some of its own memory).
2011-08-02 15:00:51 -07:00
Brian Anderson
a1a25969a0
Add ioivec::read_whole_file/read_whole_file_str
2011-08-02 10:39:14 -07:00
Brian Anderson
67b8f8b13a
Display the name of the test being waited for before the result is in
...
So the test runner displays the name of the test, then waits for it to finish,
then displays the result. It worked this way before things were parallelized
and it's just much friendlier this way.
2011-08-02 10:39:13 -07:00
Brian Anderson
ce8cac5d9a
Use color to report the final test result, even when running in parallel
...
After the tests are run there is no more parallelism, so it should be less
likely that the control characters will introduce wierd artifacts.
2011-08-02 10:39:13 -07:00
Brian Anderson
c9b16ac4c2
Add std::str::is_whitespace
2011-08-01 18:55:51 -07:00
Brian Anderson
1ad68eafd2
Add std::str::trim/trim_left/trim_right
2011-08-01 18:55:51 -07:00
Brian Anderson
598e25e091
Add std::char_slice
2011-08-01 18:55:51 -07:00
Brian Anderson
0c7a95fde5
Add std::char::is_whitespace
2011-08-01 18:55:51 -07:00
Brian Anderson
6f8f00d1af
Add std::char module
2011-08-01 18:55:51 -07:00
Eric Holk
939bca0d84
Added send and receive to comm library.
2011-08-01 15:58:39 -07:00
Eric Holk
b3d9d9b73c
Objectified library chans and ports.
2011-08-01 15:58:30 -07:00
Eric Holk
5a673cc2c9
Started working on a library-based comm system. Creating and deleting ports work.
2011-08-01 15:58:30 -07:00
Marijn Haverbeke
985c32ef4c
Partially implement destructuring locals
...
You can now say
let {bcx, val} = some_result_returner();
Similar for loop variables. Assigning to such variables is not safe
yet. Function arguments also remain a TODO.
2011-08-01 17:51:37 +02:00
Brian Anderson
96a629d2fa
Base test concurrency on the number of scheduler threads.
...
Ideally we would just spawn every test and collect the results but I'm not
entirely comfortable doing that yet for reasons that I'm too tired to remember
right now. Urgh.
2011-07-29 21:07:03 -07:00
Brian Anderson
b8c209cba1
Refactor std::test
...
Separate the console output from the running of tests
2011-07-29 19:54:05 -07:00
Graydon Hoare
0c9b749d20
Enable kind checking on typarams, fix kind constraints in library and comp.
2011-07-29 18:48:15 -07:00
Brian Anderson
f3df9f50ea
Add ivec::from_vec and ivec::to_vec
2011-07-29 14:05:04 -07:00
Graydon Hoare
f3c05b9fae
Turn on kind propagation for typarams. Annotate a bunch of typarams in rustc and libstd.
2011-07-29 12:58:52 -07:00
Marijn Haverbeke
aa3b89610e
Track failures in typeck, assign proper type to failing blocks
...
(and warn for unreachable statements)
Closes #727
2011-07-29 20:54:44 +02:00
Marijn Haverbeke
30d2e358be
Replace obj dtors with resources in stdlib and rustc
2011-07-29 14:03:24 +02:00
Marijn Haverbeke
0ba34d873d
Beginning of replacing drop with resources
2011-07-29 12:18:49 +02:00
Jesse Ruderman
56d680ab79
Make program_output also return stderr
2011-07-29 10:39:14 +02:00
Eric Holk
3d7016ae95
Updating to work on Windows.
2011-07-28 10:47:29 -07:00
Eric Holk
e697a52359
Adding a function to stdlib to set the min stack size, for programs
...
that absolutely will not succeed with a large default stack. This
should be removed once we have stack grown working.
Also updated word-count to succeed under the new test framework.
2011-07-28 10:47:28 -07:00
Brian Anderson
54c1c07ab1
Add std::io::stderr
2011-07-27 19:04:57 -07:00
Brian Anderson
e81d6d28e7
Don't stop at first test failure
...
Since compiletest is setting up its own test tasks it needs to configure them
the correct way, which means allowing them to leak.
2011-07-27 19:04:57 -07:00
Brian Anderson
90a79b9951
Print a newline before displaying test output
2011-07-27 19:04:56 -07:00
Brian Anderson
92e9382193
Remove task::worker
...
It was too unsafe to live. It already apeared to be causing problems with
eholk's incoming task changes, so I'm killing it now before it can spread.
2011-07-27 15:53:47 -07:00
Marijn Haverbeke
f379c97913
Don't allow globals or immutable locals to be passed by mut alias
...
Closes #747
2011-07-27 17:19:46 +02:00
Marijn Haverbeke
8365a79c7c
Some more obj dtor reformatting
2011-07-27 17:05:34 +02:00
Marijn Haverbeke
2593c50e75
Re-format some obj dtors that were messed up by the pretty-printer
2011-07-27 16:52:49 +02:00
Marijn Haverbeke
6e2a7bff7f
Fix damage done by the pretty-printer
2011-07-27 15:54:33 +02:00
Marijn Haverbeke
df7f21db09
Reformat for new syntax
2011-07-27 15:54:33 +02:00
Brian Anderson
bcb5c4d54f
Run compile tests in a way that's safe in a multithreaded environment
...
In theory. There's still something leaking but I hope it's no longer due to
the test runner doing unsafe things.
This is a pretty nasty patch, working around limitations in the type and task
systems, and it makes the std::test API a little uglier.
2011-07-26 18:39:55 -07:00
Brian Anderson
067cb6d537
Run test process from a dedicated task
...
This avoids a race wherein test tasks could run processes that stole the
environment of other tasks's processes.
2011-07-26 11:12:20 -07:00
Marijn Haverbeke
41d27ddcc2
Fix win tinderbox breaking typo
2011-07-26 15:39:18 +02:00
Marijn Haverbeke
aea537779e
Remove all uses of tuples from the compiler and stdlib
2011-07-26 14:06:02 +02:00
Brian Anderson
ac2424dd22
Run test tasks in parallel according to RUST_THREADS. Issue #734
2011-07-25 16:36:38 -07:00
Graydon Hoare
5749a2deac
Fix signature and add string_reader to ioivec.
2011-07-25 14:04:49 -07:00
Marijn Haverbeke
e949aab10a
Remove some rustboot-isms
...
Closes #464
2011-07-25 15:07:48 +02:00
Brian Anderson
bd81adabff
Add task::send and task::recv
2011-07-24 16:18:31 -07:00
Brian Anderson
73fed01108
Add task::worker. Spawns a task and returns a channel to it
...
It takes a lot of boilerplate to create a task and establish a way to talk to
it. This function simplifies that, allowing you to write something like
'worker(f).chan <| start'. Implementation is very unsafe and only works for a
few types of channels, but something like this is very useful.
2011-07-24 16:18:05 -07:00
Brian Anderson
2573fe7026
The Big Test Suite Overhaul
...
This replaces the make-based test runner with a set of Rust-based test
runners. I believe that all existing functionality has been
preserved. The primary objective is to dogfood the Rust test
framework.
A few main things happen here:
1) The run-pass/lib-* tests are all moved into src/test/stdtest. This
is a standalone test crate intended for all standard library tests. It
compiles to build/test/stdtest.stageN.
2) rustc now compiles into yet another build artifact, this one a test
runner that runs any tests contained directly in the rustc crate. This
allows much more fine-grained unit testing of the compiler. It
compiles to build/test/rustctest.stageN.
3) There is a new custom test runner crate at src/test/compiletest
that reproduces all the functionality for running the compile-fail,
run-fail, run-pass and bench tests while integrating with Rust's test
framework. It compiles to build/test/compiletest.stageN.
4) The build rules have been completely changed to use the new test
runners, while also being less redundant, following the example of the
recent stageN.mk rewrite.
It adds two new features to the cfail/rfail/rpass/bench tests:
1) Tests can specify multiple 'error-pattern' directives which must be
satisfied in order.
2) Tests can specify a 'compile-flags' directive which will make the
test runner provide additional command line arguments to rustc.
There are some downsides, the primary being that Rust has to be
functioning pretty well just to run _any_ tests, which I imagine will
be the source of some frustration when the entire test suite
breaks. Will also cause some headaches during porting.
Not having individual make rules, each rpass, etc test no longer
remembers between runs whether it completed successfully. As a result,
it's not possible to incrementally fix multiple tests by just running
'make check', fixing a test, and repeating without re-running all the
tests contained in the test runner. Instead you can filter just the
tests you want to run by using the TESTNAME environment variable.
This also dispenses with the ability to run stage0 tests, but they
tended to be broken more often than not anyway.
2011-07-24 15:34:34 -07:00
Eric Holk
8878b128ba
More work on word-count.
...
Updated the MapReduce protocol so that it's correct more often. It's
still not perfect, but the bugs repro less often now.
Also found a race condition in channel sending. The problem is that
send and receive both need to refer to the _unread field in
circular_buffer. For now I just grabbed the port lock to send. We can
probably get around this by using atomics instead.
2011-07-22 18:45:34 -07:00
Brian Anderson
e891e0b992
Print a list of test failures in the test summary. Issue #428
2011-07-22 10:18:28 -07:00
Brian Anderson
06a6005447
Use correct win file open constants, per MinGW
2011-07-21 18:23:15 -07:00
Michael Sullivan
4b59ae0aa9
Add some support for using a map like a set.
2011-07-21 18:14:39 -07:00
Patrick Walton
45748a3be4
rustc: Implement ptr_eq in Rust. Shaves 4 s off compile time.
2011-07-20 19:34:52 -07:00
Brian Anderson
a467e8e4e6
Add a huge hack to allow the test runner to continue if a single task leaks
...
This is just until unwinding works. Adds a flag to the runtime to turn
the memory leak checks on task destruction into warnings instead of fatal
errors. I am so sorry.
Issue #428
2011-07-20 10:22:18 -07:00
Brian Anderson
3fb33008ce
Test runner should fail if any tests fail. Issue #428
2011-07-20 10:19:22 -07:00
Brian Anderson
c51f5f18dd
Fix color term detection in std::termivec
...
Pretty error messages to be restored
2011-07-19 15:02:18 -07:00
Brian Anderson
a14e5e7046
Avoid double-closing pipes in std::run::start_program
...
Linux and mac seem fine with it, Windows does not
2011-07-19 14:01:21 -07:00
Brian Anderson
b022dde587
Refactor std::run
2011-07-19 10:15:16 -07:00
Brian Anderson
fb9a117743
Fix an invalid memory access in run_program and friends
2011-07-19 10:15:16 -07:00
Brian Anderson
7e55061def
Add str::replace
2011-07-18 16:16:48 -07:00
Brian Anderson
689f5f487c
Add str::is_empty, is_not_empty preds
2011-07-18 16:16:48 -07:00
Michael Sullivan
71909a64bc
Fix qsort to not skip the right side when the pivot element gets put at index 0.
...
Closes #705 .
2011-07-18 15:03:31 -07:00
Brian Anderson
cc7ae32ba1
Add setenv to standard library
2011-07-18 13:56:19 -07:00
Brian Anderson
20a3adbc08
Revert "Add setenv to standard library"
...
This reverts commit 6fb168b3db
.
2011-07-17 19:16:18 -07:00
Brian Anderson
6fb168b3db
Add setenv to standard library
2011-07-17 18:50:01 -07:00
Brian Anderson
64d43be647
Sort tests before running them. Issue #428
2011-07-16 17:58:32 -07:00
Brian Anderson
f010f79a61
Add std::ivec::to_mut, from_mut
2011-07-16 17:36:11 -07:00
Brian Anderson
8c4f1652ec
Add ivec::zip/unzip
2011-07-16 17:36:11 -07:00
Brian Anderson
47052ce19e
Refactor std::test
2011-07-15 10:07:32 -07:00
Brian Anderson
4a347760ed
Run test functions in isolated tasks. Issue #428
...
Each test is run in its own task so that the failure can be trapped and the
test runner can continue. The easiest way to get the test functions into tasks
currently is by treating them as unsafe pointers.
2011-07-15 10:07:32 -07:00
Brian Anderson
7d475530a0
Remove task_unsupervise from rt builtin functions
...
This was an exact duplicate of the unsupervise function
2011-07-15 10:07:32 -07:00