Commit graph

525 commits

Author SHA1 Message Date
Graydon Hoare
319156c8d1 Begin tidying up name-mangling rules. 2011-06-06 15:48:47 -07:00
Brian Anderson
53ea2a4751 stdlib: Use spans for #fmt errors originating in std
Issue #444
2011-06-04 19:48:19 -04:00
Patrick Walton
cb4c969ba6 rustc: Add a "smallintmap" implementation 2011-06-03 16:15:14 -07:00
Marijn Haverbeke
5144f790fe Fix and un-xfail vec-append test 2011-06-02 16:45:26 +02:00
Patrick Walton
8c3809afd0 stdlib: Add some functions to getopts to deal with optional arguments more easily 2011-06-01 18:32:05 -07:00
Paul Stansifer
9f5dddf08c Now imports are not re-exported unless 'export' is explicitly used. 2011-05-31 18:43:26 -07:00
Brian Anderson
ed0eb8f45a stdlib: Remove unneeded type params from alt patterns 2011-05-31 01:23:53 -04:00
Paul Stansifer
3375b8fba2 Add list function 'has'. 2011-05-27 02:42:33 +00:00
Paul Stansifer
22953f52fa Added filter_map. 2011-05-27 02:42:33 +00:00
Tim Chevalier
83cdb47a7c Add a list append function, which I didn't end up using, but why not add it? 2011-05-26 19:13:56 -07:00
Kelly Wilson
31de8e15c0 Add quick_sort3 function based on 'QuicksortIsOptimal.pdf' (see comments in file). Cleanup the quick_sort function a little, as well. Add test file. 2011-05-24 18:38:41 -04:00
Brian Anderson
8637c09cf9 stdlib: Make the bound vector an alias in std::deque
Workaround for issue #375
2011-05-23 19:45:51 -04:00
Brian Anderson
837dff9226 stdlib: Export match type from std::getopts 2011-05-22 16:41:06 -04:00
Brian Anderson
c1122a6707 stdlib: Use if/alt expressions in std::uint 2011-05-22 12:28:27 -04:00
Brian Anderson
1ecd6a82ab stdlib: Use if/alt expressions in std::str 2011-05-22 12:28:27 -04:00
Brian Anderson
443e1e4557 stdlib: Use if/alt expressions in std::option 2011-05-22 12:28:27 -04:00
Brian Anderson
820ccf4a13 stdlib: Do tail calls in std::map. Remove FIXMEs 2011-05-22 12:28:20 -04:00
Brian Anderson
2d17d9101d stdlib: Use if/alt expressions in std::map 2011-05-22 12:28:20 -04:00
Brian Anderson
f1c1887cab stdlib: Remove unneeded fail statements from std::list. Remove FIXMEs 2011-05-22 12:28:14 -04:00
Brian Anderson
f6beec6c43 stdlib: Do tail calls in std::list. Remove FIXMEs 2011-05-22 12:28:08 -04:00
Brian Anderson
b4c9f782e4 stdlib: Add list::from_vec 2011-05-22 02:10:10 -04:00
Brian Anderson
1e9aef828c stdlib: Reindent list.rs 2011-05-22 02:10:10 -04:00
Brian Anderson
d4f5f69930 stdlib: Use if/alt expressions in std::io 2011-05-22 02:10:10 -04:00
Brian Anderson
d4da3f5172 stdlib: Use if/alt expressions in std::int 2011-05-22 02:10:09 -04:00
Brian Anderson
d85447c4fb stdlib: Use initial caps for all error messages in std::getopts 2011-05-22 02:10:09 -04:00
Brian Anderson
3a2d64f044 stdlib: Use if/alt expressions in std::getopts 2011-05-22 02:10:09 -04:00
Brian Anderson
a0f855e488 stdlib: Report an error when getopts is given an argument to a flag option 2011-05-22 02:10:09 -04:00
Brian Anderson
c1a6c2e6c2 stdlib: Only export what's necessary from std::getopts 2011-05-22 02:10:09 -04:00
Brian Anderson
264c3b5be4 stdlib: Use if/alt expressions in std::generic_os 2011-05-22 02:10:09 -04:00
Brian Anderson
da0e961f61 stdlib: Use if/alt expressions in std::fs 2011-05-22 02:10:09 -04:00
Brian Anderson
85bcf75da1 stdlib: Add regression test for fs::connect and a FIXME 2011-05-22 02:10:09 -04:00
Brian Anderson
0755a30051 stdlib: Use if/alt expressions in std::deque 2011-05-22 02:10:08 -04:00
Brian Anderson
6432599c5d stdlib: Use if/alt expressions in std::bitv 2011-05-22 02:10:08 -04:00
Brian Anderson
90e6453f46 stdlib: Use if/alt expressions in std::extfmt 2011-05-22 02:10:08 -04:00
Brian Anderson
01c13a3878 stdlib: Add io::writer.write_line 2011-05-20 22:32:41 -04:00
Brian Anderson
fc8b9671bb stdlib: Export only what's needed from std::bitv 2011-05-20 22:12:57 -04:00
Brian Anderson
04ce99b83c stdlib: Export only what's needed from std::sort 2011-05-20 22:12:16 -04:00
Brian Anderson
7817824205 stdlib: export ptr_eq from box, but not rustrt 2011-05-20 21:32:57 -04:00
Patrick Walton
4eb476fc75 stdlib: Modify union-find to guarantee that root nodes are always less than or equal to leaf nodes; add a "prune" method 2011-05-20 15:50:43 -07:00
Eric Holk
5d09e12e15 Added two version of reverse and a swap function to the standard library. 2011-05-19 17:25:37 -07:00
Patrick Walton
6b95584df5 stdlib: Add vec growth functions that use a thunk to initialize elements 2011-05-19 16:07:12 -07:00
Tim Chevalier
e16b097599 Rewrite tstate.annotate to use walk instead of fold
and various other tidying in typestate
2011-05-19 11:40:16 -07:00
Tim Chevalier
ea1701de8c Add a set_all function in bitv that's the inverse of clear 2011-05-19 11:40:16 -07:00
Patrick Walton
6417610788 rustc: Generalize variable bindings so that we can use it for locals too 2011-05-19 11:14:44 -07:00
Patrick Walton
ace8058277 rustc: Have typechecking no longer rebuild the AST 2011-05-17 20:13:04 -07:00
Patrick Walton
df9801c9f0 rustc: Fix type mismatch in lib/sha1.rs constants 2011-05-17 20:13:03 -07:00
Marijn Haverbeke
09d8ef8d51 Finally rename std::_xxx to std::xxx
Except for _task, which is still a keyword.
2011-05-17 20:41:41 +02:00
Brian Anderson
63cf381ca1 stdlib: Remove transitional extfmt.RT module 2011-05-17 00:58:52 -04:00
Graydon Hoare
fbbc1a77d2 Rewrite everything to use [] instead of vec() in value position. 2011-05-16 18:21:22 -07:00
Marijn Haverbeke
57ffa2a487 Make the parser more careful about keywords
Keywords are now only recognized in contexts where they are valid. The
lexer no longer recognizes them, all words are lexed as IDENT tokens,
that get interpreted by the parser.
2011-05-13 22:00:13 +02:00
Brian Anderson
c124404d0e Fix naming of libc that was mangled by recent module changes
It doesn't appear that rustc makes use of these strings so it didn't actually
break anything yet.
2011-05-13 13:55:57 -04:00
Brian Anderson
02fdd2d2d9 Rename std.extfmt.CT to std.extfmt.RT to ct and rt
Temporarily duplicate the entire RT module, leaving it with the old name to
accomodate the stage0 compiler. Will be removed after the next snapshot.
2011-05-12 22:22:28 -04:00
Marijn Haverbeke
3816e57fd2 Downcase std modules again, move to :: for module dereferencing
This should be a snapshot transition.
2011-05-12 21:30:44 +02:00
Marijn Haverbeke
88621bc53c Remove a few more 'mutable' words
Didn't see these before because they live in non-Linux code.
2011-05-11 15:39:39 +02:00
Marijn Haverbeke
e9c12ab1d0 Rewrite comp/middle/resolve.rs
* Cleans up the algorithm
 * Move first pass to walk (second still folds)
 * Support part of a type/value namespace split
   (crate metadata and module indices still need to be taught about this)
 * Remove a few blatant inefficiencies (import tables being recreated for
   every lookup, most importantly)
2011-05-11 12:32:37 +02:00
Brian Anderson
e4c3287367 Reuse a single work buffer every time the SHA1 message block is processed.
This finally allows the full lib-sha1 test to run in a reasonable amount of
time. Was 30s, now 3s. Trims a second or two from stage2/rustc. XFAIL lib-sha1
in stage0 since it will be very slow until the next snapshot.
2011-05-11 01:38:17 -04:00
Brian Anderson
7e7d134e3c Remove unnecessary array access from SHA1
Provides a very small speedup.
2011-05-11 01:38:17 -04:00
Brian Anderson
e35984b6c6 Introduce str_slice runtime function
This reduces the time to execute the new lib-str tests from 1:40ish to a few
seconds and will eventually allow the full lib-sha1 test to run in a
reasonable amount of time. XFAIL lib-str in stage0 - it will run very slowly
until the next snapshot.
2011-05-11 01:38:16 -04:00
Patrick Walton
869e9017eb rustc: Create mutable vectors in macos_OS.rs. Should put out Darwin tinderbox. 2011-05-10 17:50:39 -07:00
Graydon Hoare
4b5b96c511 Remove a couple more spurious 'mutable' value qualifiers from macos_OS.rs. 2011-05-10 17:04:41 -07:00
Patrick Walton
813636d52e stdlib: Remove Str.unsafe_from_mutable_bytes(). rustc now self-hosts 18 seconds faster. 2011-05-10 15:20:36 -07:00
Graydon Hoare
10a2093d37 Failure to re-stage changes strikes again. 2011-05-06 16:54:50 -07:00
Graydon Hoare
0f23bbac01 Fix GenericOS.getenv returning a raw str, return an Option.t[str] instead. 2011-05-06 16:30:39 -07:00
Marijn Haverbeke
a3ec0b1f64 Rename std modules to be camelcased
(Have fun mergining your stuff with this.)
2011-05-06 22:51:19 +02:00
Kelly Wilson
b4a0d891c0 Ge the host triple using LLVM. Fix a few 'mutable' warnings also. 2011-05-06 11:30:39 -07:00
Kelly Wilson
850dff486e Add quick sort function to the std lib. 2011-05-05 16:40:57 -07:00
Graydon Hoare
50ac893b00 Attempt to fix fs.dirname harder. 2011-05-05 14:31:45 -07:00
Graydon Hoare
2131f2bb6b Because good hackers at least check to see if the code compiles. 2011-05-05 13:53:57 -07:00
Graydon Hoare
c80255e510 Fix assumption that only os_fs.path_sep can separate paths, sigh. 2011-05-05 13:42:52 -07:00
Marijn Haverbeke
1f45dda9d2 Remove 'deprecated mutable...' from our code
This should make compilation a bit less noisy.
2011-05-05 20:19:43 +02:00
Patrick Walton
147a2d655f Un-revert "Use different syntax for checks that matter to typestate", fixing the problem.
This reverts commit d08b443fff.
2011-05-02 17:50:46 -07:00
Graydon Hoare
d08b443fff Revert "Use different syntax for checks that matter to typestate"
This reverts commit aa25f22f19. It broke stage2, not sure why yet.
2011-05-02 17:35:33 -07:00
Tim Chevalier
aa25f22f19 Use different syntax for checks that matter to typestate
This giant commit changes the syntax of Rust to use "assert" for
"check" expressions that didn't mean anything to the typestate
system, and continue using "check" for checks that are used as
part of typestate checking.

Most of the changes are just replacing "check" with "assert" in test
cases and rustc.
2011-05-02 12:16:29 -07:00
Patrick Walton
5d3e553141 stdlib: Add a Time module to the standard library 2011-04-29 11:54:06 -07:00
Patrick Walton
66e5dfbde6 stdlib: Provide "array" as a friendlier shorthand for "vec[mutable? T]" 2011-04-28 17:15:32 -07:00
Patrick Walton
660c742902 stdlib: Add a color_supported() function to Term 2011-04-28 14:54:00 -07:00
Patrick Walton
5f60937318 stdlib: Add getenv(3) to win32_os. 2011-04-28 14:35:22 -07:00
Tim Chevalier
7c4f8cb459 Further work on typestate_check
Lots of work on typestate_check, seems to get a lot of the way
through checking the standard library.

* Added for, for_each, assign_op, bind, cast, put, check, break,
and cont. (I'm not sure break and cont are actually handled correctly.)

* Fixed side-effect bug in seq_preconds so that unioning the
preconditions of a sequence of statements or expressions
is handled correctly.

* Pass poststate correctly through a stmt_decl.

* Handle expr_ret and expr_fail properly (after execution of a ret
or fail, everything is true -- this is needed to handle ifs and alts
where one branch is a ret or fail)

* Fixed bug in set_prestate_ann where a thing that needed to be
mutated wasn't getting passed as an alias

* Fixed bug in how expr_alt was treated (zero is not the identity
for intersect, who knew, right?)

* Update logging to reflect log_err vs. log

* Fixed find_locals so as to return all local decls and exclude
function arguments.

* Make union_postconds work on an empty vector (needed to handle
empty blocks correctly)

* Added _vec.cat_options, which takes a list of option[T] to a list
of T, ignoring any Nones

* Added two test cases.
2011-04-28 13:26:19 -07:00
Patrick Walton
616ae95f6b stdlib: Use an unsafe cast to speed up the memory writer 2011-04-27 18:18:28 -07:00
Patrick Walton
180a389832 stdlib/rt: Add an unsafe function to cast immutable vectors to mutable ones 2011-04-27 18:14:56 -07:00
Graydon Hoare
4c7886de80 Fix _str.bytes to trivial version. 2011-04-27 13:06:19 -07:00
Patrick Walton
fef8314c2e stdlib: Real fix for _uint.parse_buf(). 2011-04-27 11:59:22 -07:00
Patrick Walton
73044b3455 stdlib: Fix a crazy underflow bug in _uint.parse_buf. Oops. 2011-04-27 11:49:06 -07:00
Brian Anderson
8216b5fc10 Fix the interaction between various flags in #fmt 2011-04-26 20:49:03 -04:00
Brian Anderson
2e12fbfc06 Support octal #fmt conversions 2011-04-26 20:20:17 -04:00
Brian Anderson
66b59e4b05 Make #fmt char conversions behave like printf 2011-04-26 20:20:17 -04:00
Patrick Walton
79d27ccb58 stdlib: Add a silly ANSI color library 2011-04-26 13:08:48 -07:00
Marijn Haverbeke
74c7457131 Add GetOpts module to std 2011-04-26 20:30:44 +02:00
Marijn Haverbeke
d0ed2e384a Add _str.slice to std lib 2011-04-26 17:38:14 +02:00
Graydon Hoare
5fe21b5af0 Skip likely-zero initial probe, speed up map.rs. 2011-04-25 04:12:33 +00:00
Graydon Hoare
d3eb3b42aa Minimize calls to hash function in map.rs 2011-04-22 01:06:20 -07:00
Patrick Walton
735435bf96 stdlib: Add a pointer equality function to the standard library and a test case 2011-04-21 16:44:17 -07:00
Tim Chevalier
b7dd75c904 Handle nested items correctly in typestate_check
Summary says it all. Actually, only nested objects and functions
are handled, but that's better than before. The fold that I was using
before to traverse a crate wasn't working correctly, because annotations
have to reflect the number of local variables of the nearest enclosing
function (in turn, because annotations are represented as bit vectors).
The fold was traversing the AST in the wrong order, first filling in
the annotations correctly, but then re-traversing them with the bit
vector length for any outer nested functions, and so on.

Remedying this required writing a lot of tedious boilerplate code
because I scrapped the idea of using a fold altogether.

I also made typestate_check handle unary, field, alt, and fail.

Also, some miscellaneous changes:
* added annotations to blocks in typeck
* fix pprust so it can handle spawn
* added more logging functions in util.common
* fixed _vec.or
* added maybe and from_maybe in option
* removed fold_block field from ast_fold, since it was never used
2011-04-19 14:56:28 -07:00
Graydon Hoare
3d9cf15d0b Remove half-baked 'opacity' layer qualifier. 2011-04-19 14:00:04 -07:00
Graydon Hoare
d2bd07dcb0 Remove effect system from src. 2011-04-19 13:35:49 -07:00
Marijn Haverbeke
6511d471ba replace error logging with log_err in stdlib and rustc 2011-04-19 16:57:13 +02:00
Brian Anderson
7f90000ab6 Precision overrides 0-padding in #fmt 2011-04-18 22:53:26 -04:00
Brian Anderson
59d5267936 Rearrange ExtFmt.RT.pad to recover some horizontal space 2011-04-18 21:36:04 -04:00
Brian Anderson
869b28e393 Left-justification overrides 0-padding in #fmt 2011-04-18 21:36:04 -04:00
Brian Anderson
d4f1a48111 Support 0 flag in #fmt 2011-04-18 21:36:04 -04:00
Brian Anderson
9976bb93d6 Support the space flag in #fmt 2011-04-17 19:50:58 -04:00
Brian Anderson
86a43c24d6 Support + flag in #fmt 2011-04-17 18:19:26 -04:00
Brian Anderson
1bec738c56 Support #fmt precision for bools, with same rules as strings
Not totally confident this is desirable. The alternative would be to make it a
compile error.
2011-04-17 17:24:17 -04:00
Brian Anderson
685e820465 Treat char #fmt conversions just like str conversions
Add missing tests
2011-04-17 17:06:55 -04:00
Brian Anderson
8f6603f58e Support #fmt precision for signed types 2011-04-17 16:51:17 -04:00
Brian Anderson
4c0aea69da Support #fmt precision for unsigned types 2011-04-17 16:18:25 -04:00
Brian Anderson
c7edcb3a72 Support #fmt precision for string types 2011-04-17 13:10:02 -04:00
Brian Anderson
96e3e29e88 Support left-justification in #fmt conversions 2011-04-16 19:43:29 -04:00
Brian Anderson
dcfdb02fab Make #fmt support explicit conversion widths 2011-04-16 18:01:17 -04:00
Patrick Walton
3e922e2ecf stdlib: Add some vector functions: empty, empty_mut, grow_set, and freeze. Change _vec.grow to use uint arguments. 2011-04-15 17:46:16 -07:00
Patrick Walton
ec5a60d5e2 rustc: Use union-find for variable substitution 2011-04-14 11:24:25 -07:00
Brian Anderson
99a697b56a Add support for upper-case hex and binary output to #fmt.
Only works for uints at present. Necessitated the addition of _str.to_upper.
2011-04-13 22:14:54 -04:00
Brian Anderson
5c0f4c1939 Add more commentary about ExtFmt 2011-04-13 22:14:40 -04:00
Brian Anderson
4844e1c08a Add support for printing uints as lower-case hex to ExtFmt.
Begin passing an ExtFmt.RT.conv parsed format description to each of the
ExtFmt.RT.conv* functions.
2011-04-13 22:14:24 -04:00
Brian Anderson
aebdef0cd6 Move #fmt conversion model into ExtFmt.CT namespace 2011-04-13 22:13:21 -04:00
Tim Chevalier
7c6e6fc5d4 Make expr_while work in typestate_check
Also did some refactoring in typestate_check. All test cases in
compile-fail that involve uninitialized vars now fail correctly!
(All eight of them, that is.)
2011-04-13 15:50:34 -07:00
Graydon Hoare
80a4b1ba53 Slight updates to match API drift in io, lib-io.rs passes. 2011-04-13 12:05:15 -07:00
Tim Chevalier
d7e8818414 Further work on typestate. Handles expr_rec and expr_assign now.
Also changed the ts_ann field on statements to be an ann instead,
which explains most of the changes.

As well, got rid of the "warning: no type for expression" error
by filling in annotations for local decls in typeck (not sure whether
this was my fault or not).

Finally, in bitv, added a clone() function to copy a bit vector,
and fixed is_true, is_false, and to_str to not be nonsense.
2011-04-12 14:31:46 -07:00
Brian Anderson
73eecbd0ca Factor out creation of calls into ExtFmt.RT 2011-04-11 21:55:03 -04:00
Brian Anderson
bba245f3e6 Add support for bool, char to extfmt.
XFAIL syntax-extension-fmt in rustboot.
2011-04-11 21:54:03 -04:00
Brian Anderson
37f87161cc Move ExtFmt compile-time functions into their own module 2011-04-11 21:51:23 -04:00
Brian Anderson
c41796f2ca Use correct indentation for ExtFmt.rs 2011-04-11 21:51:23 -04:00
Brian Anderson
ce85b9eb7b Make ExtFmt call its own functions instead of others defined in std 2011-04-11 21:51:23 -04:00
Brian Anderson
d4d0144bcf Move extfmt parsing into standard library 2011-04-11 21:51:23 -04:00
Brian Anderson
5a36786634 Move the extfmt data model into the standard library. 2011-04-11 21:51:23 -04:00
Marijn Haverbeke
094d31f5e4 Make lexer buffer the whole file
This way, it won't have to go through a bunch of calls for each
byte fetched.
2011-04-09 01:05:18 +02:00
Tim Chevalier
9c001af07c Implemented computing prestates and poststates for a few expression forms.
The typestate checker (if it's uncommented) now correctly rejects a
trivial example program that has an uninitialized variable.
2011-04-08 17:46:46 +00:00
Patrick Walton
afa6d85d61 stdlib: Add a simple union-find data structure 2011-04-07 18:02:01 -07:00
Marijn Haverbeke
53cc673db1 Re-add a read_byte() method to buf_reader objs
This was removed because of the repetition, but doing single-byte
reads in terms of read_bytes (which allocates a vec) is needlessly
slow. This change speeds up parsing by 22%.

(Eventually, we won't be able to escape handling the buffering in the
stdlib itself.)
2011-04-08 02:23:14 +02:00
Marijn Haverbeke
ac3026412b Revise EBML reader API
New one is less stateful, easier to work with.
2011-04-07 14:19:16 -07:00
Tim Chevalier
2e90bd94de Continued sketching out code for checking states against preconditions.
It's still sketchy. I added a typestate annotation field to statements
tagged stmt_decl or stmt_expr, because a stmt_decl statement has a typestate
that's different from that of its child node. This necessitated trivial
changes to a bunch of other files all over to the compiler. I also added a
few small standard library functions, some of which I didn't actually end
up using but which I thought might be useful anyway.
2011-04-06 17:58:18 -07:00
Tim Chevalier
3130348ee1 Started adding support for typestate checking.
I added a new field to the ast "ann" type for typestate information.
Currently, the field contains a record of a precondition bit vector and
postcondition vector, but I tried to structure things so as to make
it easy to change the representation of the typestate annotation type.
I also had to add annotations to some syntactic forms that didn't have
them before (fail, ret, be...), with all the boilerplate changes
that that would imply.

The main call to the typestate_check entry point is commented out and
the actual pre-postcondition algorithm only has a few cases
implemented, though the overall AST traversal is there. The rest of
the typestate algorithm isn't implemented yet.
2011-04-01 11:27:32 -07:00
Patrick Walton
3c1de96cda rustc: Use the crate index to look up defs 2011-03-31 14:37:44 -07:00
Patrick Walton
dec92d392e stdlib: Add a write_be_uint() function to writers 2011-03-31 11:54:52 -07:00
Graydon Hoare
e99feabf47 Add a result_str method to std.sha1.sha1. 2011-03-26 17:36:08 -07:00
Patrick Walton
24a75eeccc rustc: Parse definition IDs from crates; add a function to parse unsigned ints to the standard library 2011-03-25 18:35:30 -07:00
Patrick Walton
94c19a18ae rustc: Look up names in "use"d crates 2011-03-25 17:54:48 -07:00
Patrick Walton
864e2ab24e stdlib: Implement a memory buffer reader, untested at the moment 2011-03-25 15:01:21 -07:00
Patrick Walton
739c4aedf1 stdlib: Separate basic I/O reading functionality into a separate buf_reader object, like writing 2011-03-25 14:06:18 -07:00
Marijn Haverbeke
a045514477 Start making the standard-lib utf-8 aware
Finally implements _str.is_utf8, adds from_chars, from_char, to_chars,
char_at, char_len, (push|pop|shift|unshift)_char. Also, proper
character I/O for streams.
2011-03-25 08:22:52 -07:00
Patrick Walton
af3d0d1848 rustc: Open "use"d crates; add a _vec.vec_from_buf() method along the way; XFAIL use-import-export.rs in rustc 2011-03-24 17:22:07 -07:00
Patrick Walton
c1bc0101ca stdlib: Provide a function to extract the underlying buf_writer from a writer 2011-03-22 17:53:43 -07:00
Patrick Walton
d56971d5b4 stdlib: Add EBML writing functionality 2011-03-22 17:29:23 -07:00
Patrick Walton
e890383db1 stdlib: Add a convenience method for opening paths as a FILE 2011-03-22 17:29:23 -07:00
Patrick Walton
b33f0df152 stdlib: Make writers seekable; switch file writers to the C FILE interface to make this work 2011-03-22 16:40:22 -07:00
Patrick Walton
bcf04e253f Revert "Remove usages of case(_) { fail; } since the compiler does this automatically". When we have exhaustiveness checking, "case(_) { fail; }" will be useful to silence warnings.
This reverts commit 92a716d862.
2011-03-22 14:02:52 -07:00
Patrick Walton
6623597c18 lib: Add an EBML reader module 2011-03-22 14:00:27 -07:00
Brian Anderson
92a716d862 Remove usages of case(_) { fail; } since the compiler does this automatically 2011-03-22 08:11:34 -07:00
Patrick Walton
e56a1720e4 Add a "last" function to return the last element of a vector to the standard library 2011-03-21 17:21:35 -07:00
Patrick Walton
71de17d38e Add a binding to ftell() 2011-03-21 16:41:18 -07:00
Graydon Hoare
0c7545c1ce Switch win32 path_sep to '/', add comment explaining a bit. 2011-03-20 19:43:43 -07:00
Graydon Hoare
460d89156f Add slightly nicer failure message to io.rs when it can't open a file. 2011-03-20 19:43:41 -07:00
Patrick Walton
9ad9d3783d rustc: Fix list.foldl() to pass its second argument by alias 2011-03-18 15:19:32 -07:00
Patrick Walton
47d650e25b rustc: Box the tuples returned by hashmap.items() for now since we don't have alias iterators yet 2011-03-18 15:18:45 -07:00
Patrick Walton
a9ba76d52a Fix bug in string comparison. std.rc typechecks now. 2011-03-18 14:15:27 -07:00
Patrick Walton
0cf16e77ca Add "mutable?" to _vec in the standard library; fix callers 2011-03-18 14:01:03 -07:00
Patrick Walton
368eb4bab6 Add some mutable variants of vector functions to the standard library 2011-03-18 13:53:49 -07:00
Patrick Walton
8aa946ff5e Make some standard library pieces no longer dependent on mutable parameters, which rustc doesn't support 2011-03-18 13:32:15 -07:00
Patrick Walton
84321d1f59 Add an option.is_none() method 2011-03-17 11:21:11 -07:00
Patrick Walton
ea7197e2cf rustc: Add str_from_cstr() and str_from_buf() functions to the standard library, as well as a test case 2011-03-16 18:42:08 -07:00
Graydon Hoare
6a6a30b792 Remove uses of 'break' in std lib; rustc doesn't support it yet, this is easier for now. 2011-03-16 16:47:27 -07:00
Graydon Hoare
54587bdccb Switch all vases of vec += elt to vec += vec. Prohibit former in rustboot. Tweak std lib vec fns in process. 2011-03-16 14:58:02 -07:00
Patrick Walton
1a3f533d28 Typo: FIXE -> FIXME 2011-03-15 17:13:19 -07:00
Patrick Walton
6d5379cdcb Add a fs.connect() function to join paths 2011-03-15 17:11:55 -07:00
Patrick Walton
a8d8ea3cf3 Add an OS-specific dylib_filename() function to the standard library 2011-03-15 16:56:59 -07:00
Graydon Hoare
45f7955261 Put out darwin fire. 2011-03-14 16:14:17 -07:00
Brian Anderson
922f69387d Add _int.pow 2011-03-14 15:52:48 -07:00
Marijn Haverbeke
ea5dc54c3f Add functionality for running external programs to the std lib
See lib/run_program.rs.
2011-03-14 14:57:13 -07:00
Marijn Haverbeke
441697ab35 Extend stream functionality
Writer and reader streams now come with methods to write and read
little-endian numbers. Whether that is the right place for such
methods is debatable, but for now, that's where they live.
2011-03-14 14:57:13 -07:00
Marijn Haverbeke
c731d625fe Add basic file-system functionality
std.fs.list_dir will list the files in a directory, std.fs.file_is_dir
will, given a pathname, determine whether it is a directory or not.
2011-03-14 14:57:13 -07:00
Graydon Hoare
11a10c7a7b Remove redundant imports in lib (rustc doesn't like 'std' as a synonym for root within std.rc anyway) 2011-03-09 17:29:18 -08:00
Marijn Haverbeke
aed40fbcd8 Have the pretty-printer take a writer stream as argument
It now uses a string writer to also fill in for
middle.ty.ast_ty_to_str
2011-03-09 16:15:55 -08:00
Marijn Haverbeke
dddd7d8f44 Add stdout_writer and string_writer to std.io
For use by pretty-printer. string_writer API is a bit silly
right now, feel free to suggest a cleaner way to do this.
2011-03-09 16:15:52 -08:00
Marijn Haverbeke
0624f9db4a Add a pretty-printer
Adds a -pp option to the compiler which will cause it to simply
pretty-print the given file.
2011-03-07 12:58:08 -08:00
Brian Anderson
bed457d3a7 Change io.fileflag to a tag type. Remove FIXME 2011-03-06 15:13:30 -08:00
Brian Anderson
330c9c6c35 Make _str.bytes use _vec.init_fn. Remove FIXME. 2011-03-06 15:13:28 -08:00
Brian Anderson
3b7e9dc393 Rustify some comments lifted directly from the sha-1 reference implementation 2011-02-22 21:52:23 -05:00
Brian Anderson
c4df39609c Rename std._io to std.io since 'io' is no longer a keyword 2011-02-22 21:52:23 -05:00
Brian Anderson
cbe8d222a8 Implement sha-1 in standard library. Closes #228 2011-02-21 01:00:43 -05:00
Graydon Hoare
11cbbcf79e Add std.path module for pathname manipulations. 2011-01-10 18:17:24 -08:00
Graydon Hoare
b000bfeedc Fail in new_stdio_reader when libc.fopen fails. 2011-01-10 18:16:57 -08:00
Graydon Hoare
001d7bfa17 Add _str.starts_with and ends_with. 2011-01-03 20:39:33 -08:00
Graydon Hoare
c0d4e88428 Add std.dbg.trap(str msg) for help debugging. 2010-12-31 10:35:39 -08:00
Graydon Hoare
3504f4a4bf Sort methods in object types. 2010-12-21 16:43:28 -08:00
Graydon Hoare
6443179bca Add std.sort, with a simple mergesort. 2010-12-21 00:44:06 -08:00
Patrick Walton
77ff12c435 rustboot: Don't use walk to traverse statements in type.ml; fixes redundant checking, improves diagnostics. Also report untyped slots. 2010-11-18 14:19:06 -08:00
Graydon Hoare
a404e54261 Teach rustc about const tag value, begin work on trans_copy_ty, make uint's to_str routine less clever and thereby resist overflow. 2010-11-09 17:50:31 -08:00
Patrick Walton
3e482d5f69 Implement a map2() function in std._vec 2010-11-09 15:38:42 -08:00
Graydon Hoare
89946609f2 Support a special const-value refcount, use it for const strings. 2010-11-09 14:15:07 -08:00
Graydon Hoare
3e9be14757 Add a check for binding an alias. Good thing, as we had two instances in our library. 2010-11-08 15:45:30 -08:00
Patrick Walton
adb1754e4d Move the option type to its own module 2010-11-05 11:18:40 -07:00
Patrick Walton
2fcf81cc4b Revert "Move the option type to its own module" 2010-11-05 10:41:23 -07:00
Patrick Walton
1d214b4df3 Move the option type to its own module 2010-11-05 10:23:22 -07:00
Graydon Hoare
7abf6eb7c6 Shift obj, type, param decls to have strata rather than effects. 2010-11-02 17:20:57 -07:00
Graydon Hoare
7db115834f Split out stratum-checking pass, implement more-strict (overly aggressive) impure-effect checking. 2010-11-02 15:24:46 -07:00
Graydon Hoare
da13c508d8 First pass on splitting stratum and opacity off of effects. WIP. 2010-11-02 11:11:58 -07:00
Patrick Walton
67bcc70754 rustboot: Emit an error instead of asserting in trans when a T is passed by value 2010-10-28 15:07:05 -07:00
Patrick Walton
b914e0e74c Revert "rustboot: Emit an error instead of asserting in trans when a T is passed by value" due to test failures
This reverts commit ee901858a2.
2010-10-28 15:04:48 -07:00
Patrick Walton
ee901858a2 rustboot: Emit an error instead of asserting in trans when a T is passed by value 2010-10-28 15:02:00 -07:00
Patrick Walton
05a3c5c0f3 rustc: Add an "_" prefix to assembler-generated symbols on Mac 2010-10-22 16:16:02 -07:00
Graydon Hoare
dd0d255737 Add some filename helpers to os. 2010-10-22 11:46:33 -07:00
Graydon Hoare
05c9d885dd Change vec slice to use uint, add push/pop/shift/unshift. 2010-10-22 11:46:04 -07:00
Dave Herman
6421c13157 eliminated bitv.test, which now lives in test/run-pass 2010-10-21 13:34:16 -07:00
Dave Herman
dbe27199b8 line length police; moved comp.util.bits to std.bitv 2010-10-21 11:39:53 -07:00
Graydon Hoare
23a00fd092 Disable use of parametric tail call in map.rs, they don't presently work. 2010-10-18 16:04:47 -07:00
Graydon Hoare
68321b0de8 Make list.find return an option of different type than the list element. 2010-10-18 16:02:59 -07:00
Graydon Hoare
783be711f5 Flesh out the std.list module a touch. 2010-10-18 14:35:44 -07:00
Graydon Hoare
57c7e94c8f Encode and decode tag types in dwarf properly. Add list module to std. Shift rustc to use std.util.option. Fix various dependent bugs. Closes #73. 2010-10-15 22:09:09 -07:00
Graydon Hoare
b970563fe3 Patchwork of attempted fixes to effect system and gc system; eventually give up and disable it entirely in the runtime. Will need extensive reworking. 2010-09-29 17:22:13 -07:00
Graydon Hoare
4d17283371 Add 'items' iter to hashmap. 2010-09-22 17:04:08 -07:00
Graydon Hoare
2880ecd73f Reformat standard library; no code changes. 2010-09-22 15:44:13 -07:00
Graydon Hoare
e0f682e5fb Add some basic string functions: index, rindes, find, substr, split, concat, connect. 2010-09-22 15:27:40 -07:00
Graydon Hoare
b549721a2e Tighten pattern parsing on 0-ary constructors. 2010-09-21 16:18:47 -07:00
Graydon Hoare
c5f4789d5b Bind pattern slots with ?, drop parens from 0-ary tag constructors, translate 0-ary constructors as constants. Rustc loses ~300kb. 2010-09-20 23:56:43 -07:00
Graydon Hoare
a9e2327a18 Switch tags to purely nominal, removing TY_iso and TY_idx. Seems to mostly work, possibly a little bumpy. Changes a lot. 2010-09-09 15:59:29 -07:00
Roy Frostig
cf62b54028 Add a little pointer-cast helper to dbg. 2010-09-06 23:24:01 -07:00
Roy Frostig
974092c526 Test multi-ref'ed vec growth more seriously than before. 2010-09-03 16:25:56 -07:00
Roy Frostig
66b5b9567c Test the hashmap more, exercising hash collision, element removal, and a forced rehashing that actually causes elements to change buckets. In the process, find a bug in hashmap's remove() and fix it. 2010-08-26 19:44:38 -07:00
Graydon Hoare
7cfa7bdd23 Make vreg constrs per-quad, regfence on nontrivial constrs, back out workaround to _uint, add regression test. Closes #152. 2010-08-26 16:27:47 -07:00
Roy Frostig
c3c5e6c773 Workaround issue #152 in _uint.next_power_of_two 2010-08-26 11:57:48 -07:00
Roy Frostig
c40fed5804 Actually switch to using the bigger hashmap once a it finishes growing and rehashing. 2010-08-25 17:42:36 -07:00
Graydon Hoare
c2b6c27d65 Fix edge case in uint->string conversion. 2010-08-25 13:54:27 -07:00
Roy Frostig
d9fe885ba5 Comment on env var required for std.dbg to do any logging. 2010-08-24 19:55:45 -07:00
Roy Frostig
7ccdb88374 Add support in dbg.debug_obj for printing the obj body. 2010-08-24 19:49:39 -07:00
Roy Frostig
d9e3fb2c5d Add std.dbg module for inspecting rust values in memory. 2010-08-24 18:37:42 -07:00
Graydon Hoare
e846643d23 Fix mod-bug in std.map, work around bug in closure typaram capture, enable insert-tests in lib-map.rs. 2010-08-24 17:23:09 -07:00
Graydon Hoare
47501f1659 Make _str.eq suitable for map.hashmap; add _str.hash that does simple djb-hash. 2010-08-24 09:59:02 -07:00
Graydon Hoare
a2bd79a6ac Redo _uint.to_str to work with chars and only one tmp str, built left-to-right. 2010-08-20 15:37:20 -07:00
Roy Frostig
2da4fecacd Test the buffered reader and writer in _io. 2010-08-20 12:57:38 -07:00
Graydon Hoare
1db0cb208d Add ungetc and re-indent _io.rs. 2010-08-20 12:12:11 -07:00
Graydon Hoare
9fc4fc6692 Add _uint module to std, move some code around. 2010-08-20 11:42:44 -07:00
Roy Frostig
4a7aa75b5d Make _io.buf_reader read more than 0 bytes at a time. 2010-08-19 17:37:22 -07:00
Graydon Hoare
f0d4e6c511 Add stdio_reader to io, just use FILE* values for now. We have things to do. 2010-08-18 15:41:24 -07:00
Roy Frostig
6bce296d9f Address FIXME in _vec waiting on closed issue #108. 2010-08-12 13:18:10 -07:00
Roy Frostig
445d3fe39c Add vec debugging utility to _vec module. 2010-08-12 13:11:49 -07:00
Michael Bebenita
988695a96c Added support for task sleeping in the scheduler. 2010-08-11 21:24:04 -07:00
Roy Frostig
f307688bf4 Add native vec[u8] to str converter. Put in workaround for leak in str to vec[u8] converter. Add testcase exercising both. Drive-by fix a potential array-out-of-bounds write on rust_str buffers. 2010-08-11 16:06:45 -07:00
Roy Frostig
8e02a2bcb5 Fix reverse-indexing bug in _vec.init_fn. 2010-08-11 15:56:19 -07:00
Roy Frostig
75e46cc4d0 Fix a deque size bookkeeping bug. 2010-08-10 11:40:33 -07:00
Jeffrey Yasskin
3f6e8ffe64 Implement _str.len() to return the number of bytes, rename it to byte_len(),
and add a test.
2010-08-06 17:29:21 -07:00
Jeffrey Yasskin
581a95a804 Add an int->str conversion function.
The test currently fails because string equality isn't implemented.
2010-08-06 17:25:27 -07:00
Roy Frostig
80a1cd3d1e Redo yesterday's buf_writer-wrapper in a less silly and convoluted way. Add integer stringifying functions to _int module. 2010-08-06 15:48:23 -07:00
Graydon Hoare
935b4347e2 Mop up workarounds in stdlib no longer required as issue #93 is closed. 2010-08-05 10:10:39 -07:00
Roy Frostig
718c0b5963 Add to std._io some formatter/type-specific-writer mechanism. Make a few type-specific buffered writers as wrappers of buf_writer. 2010-08-04 23:09:33 -07:00
Roy Frostig
c17ea956a2 Add per-platform file-open flags to std.os. Open buffers as desired in std._io. 2010-08-04 17:14:17 -07:00
Roy Frostig
1a8d609e89 Add a buffered writer to stdlib _io module. 2010-08-04 12:59:48 -07:00
Roy Frostig
b9075c23c0 Address _io.new_buf FIXME now that issue #93 is closed. 2010-08-04 11:24:09 -07:00
Roy Frostig
299657550e Have hashmap's insert method overwrite on existing-key insertion and return true iff overwrite did not occur. 2010-08-03 18:57:54 -07:00
Roy Frostig
6277b462e9 More stdlib hashmap work. Add a simple test and XFAIL it due to a valgrind-spotted UMR. 2010-08-03 18:43:57 -07:00
Roy Frostig
5b2451c231 Address _vec.map allocation FIXME. Add test. 2010-08-03 18:18:19 -07:00
Roy Frostig
5796ebb1e7 Address _vec.grow FIXME, as issue #89 has been closed. 2010-08-03 18:10:18 -07:00
Roy Frostig
d5fd81174e Pass parametric types by-alias in various stdlib spots. 2010-08-03 18:06:31 -07:00
Roy Frostig
085790a73a More stdlib hashmap bits (plus some drive-by extras). 2010-08-03 17:52:35 -07:00
Roy Frostig
237b9d4a64 Test the deque more and fix uncovered off-by-one bug. 2010-07-28 16:34:22 -07:00
Roy Frostig
596d19e2ea Test the deque a bit. Give it a get-by-index method. Fix two uncovered state-calculation bugs --- one decently, the other with an ugly hack. Bug on the latter coming right up. 2010-07-28 14:00:44 -07:00
Graydon Hoare
8030757624 Switch machine-type lexemes to use suffixes. Remove support for foo(bar) as a cast notation. Closes #129. 2010-07-27 19:21:51 -07:00
Roy Frostig
5b6e714d05 Expose an RNG (the one used by our runtime) to Rust via std. 2010-07-25 21:45:09 -07:00
Roy Frostig
1730d2e037 Notify copy glue of dst-initialization and fix _vec.alloc issues in lib and runtime. Closes #109. 2010-07-22 17:47:32 -07:00
Roy Frostig
1ae13b3fdd Source FIXME annotations for issue #81 and a correction to STMT_bind fmt. 2010-07-22 12:45:58 -07:00
Roy Frostig
9c81889ad2 Add a (coarse, first-pass) deque implementation to stdlib. 2010-07-20 18:03:09 -07:00
Roy Frostig
fb68286700 Add incomplete hashmap implementation to stdlib. 2010-07-16 18:14:52 -07:00
Patrick Walton
1ac01e16cf Ensure that functions that should return a value do; issue 41 2010-07-16 15:34:25 -07:00
Patrick Walton
c96f0bf738 Implement the "simple typechecker", which avoids HM inference 2010-07-15 18:27:09 -07:00
Jeffrey Yasskin
765a2b3ecf Add a _vec.slice function that'll hold us over until .(a,b) syntax is
implemented.  This could actually replace .(a,b) syntax if the language grows
optional function parameters.
2010-07-16 08:13:08 +08:00
Graydon Hoare
15ef6c12d9 Modify _io's fd_buf_reader to do something slightly more useful: produce multiple buffers on demand. 2010-07-13 14:24:47 -07:00
Graydon Hoare
40d6aacb82 Add differently-typed refcount synonyms to _str and _vec. 2010-07-13 14:23:49 -07:00
Graydon Hoare
b1eeb9b825 Change from 'spawner' to 'supervisor' in rust_task, and add an unsupervise call. 2010-07-05 14:43:40 -07:00
Graydon Hoare
f360d222c8 Uint-ify various bits of _str and _vec, enrich _vec a bit. 2010-07-05 14:42:12 -07:00
Graydon Hoare
b0aba6510a Teach the dwarf readers to handle udata, so we can link with util.option; add util.rs to std.rc. 2010-07-05 14:38:02 -07:00
Graydon Hoare
ad61f02d36 Rename some stuff in lib/util.rs. 2010-07-05 14:36:39 -07:00
Roy Frostig
49656f68b8 Gut the box[m][o] family from util. 2010-07-02 11:03:33 -07:00
Roy Frostig
023e5af639 The few and proud isolated bits from stdlib-work so far that don't break everything. Note util.rs hasn't yet been declared mod in the std crate. Don't do that yet, as it breaks make check. 2010-06-28 23:18:51 -07:00
Graydon Hoare
1316312c0c Only translate or dwarf-emit items or stubs locally defined or used. Avoids instantiating O(sizeof(standard-library)) worth of imports stubs on each 'use std'. Closes issue 13. 2010-06-27 20:48:28 -07:00
Graydon Hoare
7ea416f4c3 Add callable gc method exposed to user code, use it in mlist-cycle.rs test (still not quite working; some memory corruption in the recursive tag constructors, not the GC) 2010-06-25 23:57:30 -07:00
Graydon Hoare
d6b7c96c3e Populate tree. 2010-06-23 21:03:09 -07:00