Patrick Walton
deca79f372
Merge pull request #634 from robarnold/upstream-stable
...
Allocate ivecs out of the kernel pool
2011-07-07 15:18:07 -07:00
Marijn Haverbeke
3bdbf74d47
Make moving of temporaries do the right thing, use it to optimize
...
This adds support for dropping cleanups for temporary values when they
are moved somewhere else. It then adds wraps most copy operations
(return, put in data structure, box, etc) in a way that will fall back
to a move when it is safe.
This saves a lot of taking/dropping, shaving over a megabyte off the
stage2/rustc binary size.
In some cases, most notably function returns, we could detect that the
returned value is a local variable, and can thus be safely moved even
though it is not a temporary. This will require putting some more
information in lvals.
I did not yet handle function arguments, since the logic for passing
them looked too convoluted to touch. I'll probably try that in the
near future, since it's bound to be a big win.
2011-07-07 15:54:01 +02:00
Rob Arnold
f6117173c9
Allocate rust_ivec buffers out of the kernel pool
...
The duplication of upcalls is due to the fact that the runtime is
shared between stage0/rustc and stage1/rustc. Once snapshots are
updated, they should be de-duplicated.
2011-07-06 20:41:24 -07:00
Patrick Walton
1bba585044
stdlib: Implement ivec::foldl
2011-07-05 18:29:47 -07:00
Patrick Walton
8261d2e6fb
stdlib: Add filter_map to ivec
2011-07-05 17:22:02 -07:00
Patrick Walton
ee5d7bbc86
stdlib: Don't have ivec::map take a mutable alias
2011-07-05 16:28:07 -07:00
Patrick Walton
1980a2db53
stdlib: Add str::connect_ivec() temporarily
2011-07-05 16:02:02 -07:00
Patrick Walton
219cd4b21f
stdlib: Change ivec::rustrt::ivec_on_heap() to use a 32-bit return value
2011-07-05 15:34:50 -07:00
Marijn Haverbeke
6fd6fdea93
Move everything syntax-related to syntax/, break deps on rest of compiler
...
src/comp/syntax is currently just a sub-module of rustc, but it will,
in the near future, be its own crate. This includes:
- The AST data structure
- The parser
- The pretty-printer
- Visit, walk, and fold
- The syntax extension system
- Some utility stuff that should be in the stdlib*
*) Stdlib extensions currently require a snapshot before they can be
used, and the win build is very broken right now. This is temporary
and will be cleaned up when one of those problems goes away.
A lot of code was moved by this patch, mostly towards a more organized
layout. Some package paths did get longer, and I guess the new layout
will take some getting used to. Sorry about that!
Please try not to re-introduce any dependencies in syntax/ on any of
the other src/comp/ subdirs.
2011-07-05 15:57:21 +02:00
Patrick Walton
001397da3c
stdlib: Add ivec::any() and ivec::all(); put out burning tinderbox
2011-07-04 23:52:47 -07:00
Patrick Walton
f71c8dd918
stdlib: Implement interior vector map
2011-07-04 22:48:42 -07:00
Patrick Walton
d3a4102bc1
stdlib: Add an inefficient implementation of ivec::pop
2011-07-04 21:20:18 -07:00
Patrick Walton
b4465aca5a
stdlib: Fix long line in sort.rs
2011-06-30 22:21:30 -07:00
Patrick Walton
4c76bfdc1f
stdlib: Add an interior vector version of sort and a test case
2011-06-30 19:09:52 -07:00
Brian Anderson
64d6081429
Use attributes for conditional compilation in std.rc
2011-06-30 14:13:49 -07:00
Tim Chevalier
a0cdb23892
Get rid of an unused variable
2011-06-30 12:37:30 -07:00
Eric Holk
b4a145e60f
Added a nanosecond timer to time.rs, support for some floating point casts, and a commandline-driven mode for pfib.rs
2011-06-30 11:32:10 -07:00
Eric Holk
63dcd325b9
Adding support for pinning tasks to the currently running thread. Closes #598 .
2011-06-29 18:47:47 -07:00
Lindsey Kuper
9155544a5a
Comments.
2011-06-28 18:54:56 -07:00
Graydon Hoare
d79330de26
Fix logic bug in std::fs::dirname.
2011-06-28 17:24:30 -07:00
Brian Anderson
a83b64d15d
Rework how linkage attributes are determined
...
The meta items within a crate's link attribute are used in linkage:
#[link(name = "std",
vers = "1.0",
custom = "whatever")];
Name and vers are treated specially, and everything else is hashed together
into the crate meta hash.
Issue #487
2011-06-28 15:25:47 -07:00
Patrick Walton
7554423423
stdlib: Remove old botch from ufind
2011-06-28 14:16:09 -07:00
Paul Stansifer
c3901cdf8e
Add simple syntax extension (#simplext)
2011-06-28 15:02:12 +00:00
Rafael Ávila de Espíndola
ecc080ed0b
Use "" in the native_name as an indication that no extra options have to
...
be passed to the "linker". Use that for libc.
2011-06-28 08:21:13 -04:00
Rafael Ávila de Espíndola
ac081c30be
Record and link with used native libraries.
2011-06-27 15:24:44 -04:00
Tim Chevalier
582e1f13f0
Invalidate constraints correctly after an assignment expression
...
Modified typestate to throw away any constraints mentioning a
variable on the LHS of an assignment, recv, assign_op, or on
either side of a swap.
Some code cleanup as well.
2011-06-24 22:36:53 -07:00
Marijn Haverbeke
d507d5fe91
Remove res idents from stdlib
2011-06-24 21:13:26 +02:00
Tim Chevalier
7fb35ecf84
Serialize constraints in types (literal arguments still not supported)
...
This involved, in part, changing the ast::def type so that a def_fn
has a "purity" field. This lets the typechecker determine whether
functions defined in other crates are pure.
It also required updating some error messages in tests. As a test
for cross-crate constrained functions, I added a safe_slice function
to std::str (slice(), with one of the asserts replaced with a
function precondition) and some test cases (various versions of
fn-constraint.rs) that call it. Also, I changed "fn" to "pred" for
some of the boolean functions in std::uint.
2011-06-21 14:37:33 -07:00
Brian Anderson
200dbe4c4f
Remove various rustboot workarounds
2011-06-19 20:48:20 -07:00
Patrick Walton
3f7380ccec
rustc: Change smallintmap to use an ivec and use it for the node type table. 3x typechecking speedup.
2011-06-19 18:03:19 -07:00
Brian Anderson
f58de2d687
Replace unexported meta tags with attributes
...
Issue #487
2011-06-18 20:23:05 -07:00
Patrick Walton
ca2ff9c50d
stdlib: Add ivec::grow_set()
2011-06-18 16:41:09 -07:00
Patrick Walton
5d90b1df4b
stdlib: Add ivec::grow() and ivec::grow_fn()
2011-06-18 16:29:45 -07:00
Patrick Walton
b2bcafe6fd
stdlib: Add some more ivec functions, untested as of yet
2011-06-17 19:16:26 -07:00
unknown
8c6354ceb9
Made sure getcwd and friends work well on Windows.
2011-06-17 15:53:21 -07:00
Eric Holk
a40116b398
stdlib: added getcwd and a convenience function to make relative paths absolute. This will be helpful for #441 .
2011-06-17 15:53:19 -07:00
Brian Anderson
6e6bc5076c
rustc: Support both meta tags and attributes for crate metadata
...
This is a transitional patch for converting from 'meta' to attributes.
Issue #487
2011-06-17 15:07:34 -07:00
Patrick Walton
d47101703e
stdlib: Sketch out ivec::init_fn, currently segfaulting
2011-06-16 17:48:59 -07:00
Patrick Walton
40746fa447
rustc: Implement conversions from interior vector data to unsafe pointers and vice-versa
2011-06-16 17:07:02 -07:00
Graydon Hoare
b84fffaa4e
Reformat a bunch of recent churn.
2011-06-16 16:55:46 -07:00
Patrick Walton
050f62983d
stdlib: Introduce an ivec module into the standard library; add a minimal test case
2011-06-16 16:08:26 -07:00
Brian Anderson
0efd7fac8a
stdlib: Add option::is_some
2011-06-16 14:21:42 -07:00
Eric Holk
c4f9bd9470
Re-enabled join.
2011-06-15 18:16:59 -07:00
Michael Sullivan
a91d301b31
Add xterm to the term lib's list of supported terms.
2011-06-15 17:33:37 -07:00
Brian Anderson
f50fd6d8ae
stdlib: Add color support for GNU screen
2011-06-15 16:38:17 -07:00
Brian Anderson
c19a026f46
stdlib: Add emacs variables to term.rs
2011-06-15 16:28:14 -07:00
Brian Anderson
b8a5440b2d
stdlib: Add an either module
...
Like Haskell's, with left and right tags, various conversion functions
2011-06-15 15:45:41 -07:00
Marijn Haverbeke
b2b8002fd3
Fix unsafe uses of aliases in tail calls
2011-06-15 21:39:27 +02:00
Graydon Hoare
766d54df93
Fix a bunch of compile-command lines to use RBUILD
2011-06-15 12:01:19 -07:00
Graydon Hoare
7e806c5e87
Attempt to put out windows tinderbox.
2011-06-15 11:39:31 -07:00
Graydon Hoare
ce72993488
Reformat source tree (minus a couple tests that are still grumpy).
2011-06-15 11:19:50 -07:00
Marijn Haverbeke
5fb518abc9
Fix assignments to immutable fields throughout the code
2011-06-15 14:10:07 +02:00
Eric Holk
d1857d30fc
This is the mega-ucontext commit. It replaces the task switching mechanism with a new one inspired by ucontext. It works under Linux, OS X and Windows, and is Valgrind clean on Linux and OS X (provided the runtime is built with gcc).
...
This commit also moves yield and join to the standard library, as requested in #42 . Join is currently a no-op though.
2011-06-13 18:14:13 -07:00
Brian Anderson
10a4ecbd96
stdlib: Remove a FIXME for issue #452
2011-06-11 00:42:52 +00:00
Graydon Hoare
52c4c9014f
Encode meta tags in the crate and start sketching enhanced logic for resolving crate "use" directives.
...
Now with extra "works on OSX" kludging.
2011-06-10 12:57:29 -07:00
Patrick Walton
dfdd6dbc54
rustc: Remove the bitwise not operator
2011-06-10 10:47:33 -07:00
Marijn Haverbeke
f28796ed99
Fix unsafe uses of mutable references
2011-06-10 16:44:32 +02:00
Marijn Haverbeke
798bbd2e22
Fix all occurrences of writing to immutable aliases
...
You'd be surprised.
2011-06-10 12:15:28 +02:00
Tim Chevalier
17ff2a0d79
Further support for predicate constraints
...
Changed function types to include a list of constraints. Added
code for parsing and pretty-printing constraints. This necessitated
splitting pprust into two files (pprust and ppaux) to break a
circulate dependency, as ty_to_str now needs to print out constraints,
which may include literals, but pprust depended on ty.
2011-06-09 11:37:52 -07:00
Patrick Walton
80f86d1e9b
stdlib: Make union-find not create loops when unifying two already-unified sets
2011-06-09 10:51:51 -07:00
Marijn Haverbeke
537d879dc1
Properly handle lifetime of aliases in nested blocks
...
There was a bug that would cause the alias analyser to allow you to
invalidate an alias that was no longer directly referred to, even if
another alias was rooted in it. It now properly tracks dependencies
between live aliases.
Required another case of copying values in map.rs.
2011-06-09 14:19:13 +02:00
Marijn Haverbeke
43fbb07126
Add vec::member
2011-06-09 13:11:28 +02:00
Marijn Haverbeke
77c1b9650f
Some more workarounds to please the alias checker
...
Some of the vec utilities now only work on immutable vecs, since they
would have to be rewritten to do a lot more copying to be alias-safe.
Some forced copying was added to map.rs, showing a weakness in the
alias checker (or maybe the alias system): when fn args are passed
into a function, calling them must assume all aliases that are not
immutably rooted (directly connected to a local or temporary without
any mutable edges) become invalid. This will be a drag on functional
programming in Rust.
Work around alias issues in the stdlib
2011-06-09 13:08:39 +02:00
Graydon Hoare
8691a1a1e5
Tidy up 'export meta' situation now that snapshot understands it.
2011-06-08 15:58:03 -07:00
Patrick Walton
ddec6b5f47
rustc: Use a set-based approach to unification; remove ty_bound_param and ty_local.
...
Sorry, big perf regression; will fix soon.
2011-06-07 19:33:18 -07:00
Graydon Hoare
721c5bbee8
More work on proper linkage name-mangling. Almost right, aside from version numbers.
2011-06-07 18:08:17 -07:00
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