Ben Blum
af2d01e36b
Fix sys::refcount and remove dbg::refcount
2012-06-28 14:40:31 -04:00
Tim Chevalier
ad8280712f
Remove FIXME question
...
brson said the answer to the question is probably no... so I'm
going to be bold and remove this.
Closes #2685
2012-06-28 10:53:37 -07:00
Tim Chevalier
c79b76d499
Remove obsolete FIXME
...
brson said it's obsolete and I trust him.
Closes #2695
2012-06-28 10:51:14 -07:00
Brian Anderson
6f57c61ed0
Tidy fixes
2012-06-27 22:03:12 -07:00
Ben Blum
1ba3028d8b
rt: Add task_local_data and related builtin calls ( Closes #2680 )
2012-06-28 00:10:03 -04:00
Graydon Hoare
576f59a79b
Change 'upcall fail' to 'task failed at', close #2678 .
2012-06-27 13:30:49 -07:00
Graydon Hoare
d3c6119a7a
More keyword paring and migration in runtime, docs, code modes.
2012-06-27 13:30:49 -07:00
Tim Chevalier
6141f5ce5a
Fix shape::cmp::walk_res2
2012-06-26 11:14:39 -07:00
Brian Anderson
7adad4c6cb
rt: Fix exports
2012-06-25 16:30:42 -07:00
Brian Anderson
d29e8fc059
rt: Remove upcall_malloc/upcall_exchange_malloc. Issue #2681
2012-06-25 16:01:47 -07:00
Brian Anderson
3d0826b5fc
rt: Remove lock_free_queue. Unused. Issue #2701
2012-06-25 15:39:59 -07:00
Tim Chevalier
da470ff5b8
Merge
2012-06-25 13:29:41 -07:00
Tim Chevalier
25b8b35c57
Finish compare glue for classes
...
This tests == and !=. I don't know what <, >, etc. should do.
Closes #2601
2012-06-25 12:20:10 -07:00
Tim Chevalier
487cbf8e90
Remove resources
...
Also fixed shapes for classes with dtors, as well as handling
offsets for classes with dtors correctly in take glue.
Closes #2485
2012-06-24 15:09:57 -07:00
Eric Holk
26c11f7b50
Use must_have_lock instead of private functions. (Issue #2700 )
...
I hereby declare that messages sent from the same source arrive in order (Issue #2605 )
Removing FIXME, owned is the correct type here. (Issue #2704 )
Remove outdated FIXME (Issue #2703 )
Updating test for spawning native functions (Issue #2602 )
Removing bogus FIXME (Issue #2599 )
2012-06-22 15:14:42 -07:00
Graydon Hoare
312faf31df
Tag all remaining FIXMEs with bugs. Install rule in tidy script to enforce this.
2012-06-21 16:44:10 -07:00
Tim Chevalier
f149ea0c68
Remove unneeded field
2012-06-21 16:03:28 -07:00
Tim Chevalier
dc11396fda
Remove unneeded SHAPE_VEC const
2012-06-21 16:03:28 -07:00
Tim Chevalier
c814df0bd6
Comments only: annotate FIXMEs
2012-06-21 16:03:28 -07:00
Tim Chevalier
be8b09160b
Try removing code marked with "I don't think this is necessary"
2012-06-21 16:03:28 -07:00
Michael Sullivan
393f739990
Rename upcall_malloc_dyn to just upcall_malloc.
2012-06-21 10:47:45 -07:00
Eric Holk
ec0fbf526e
Fixed a compile error in runtime.
2012-06-19 12:26:58 -07:00
Eric Holk
dc718d97a6
Adding a lock/condition variable to libcore.
2012-06-19 10:31:12 -07:00
Ben Blum
ee9e5b9d20
Avoid extra get_current_task()s in many upcalls (performance)
2012-06-18 20:36:25 -04:00
Michael Sullivan
30dd32d4db
Fix generation of str/@. Closes #2638 .
2012-06-18 15:54:37 -07:00
Michael Sullivan
797856cbde
Use unboxed vecs for string shape glue.
2012-06-18 15:54:37 -07:00
Michael Sullivan
88ec259cee
Put type descriptors in strings created by the runtime. Progress on #2638 .
2012-06-18 15:54:37 -07:00
Michael Sullivan
b4484d51c1
Some cleanup in the runtime.
2012-06-18 15:54:37 -07:00
Tim Chevalier
3e2006a570
Revert "Adding a lock/condition variable to libcore."
...
This reverts commit e394ebda37
.
2012-06-16 15:34:15 -07:00
Eric Holk
e394ebda37
Adding a lock/condition variable to libcore.
2012-06-15 22:00:24 -04:00
Michael Sullivan
2b70cbc992
Remove some dead code from rust_shape
2012-06-15 17:42:48 -07:00
Michael Sullivan
999ab5418a
Make the shape interpreter actually advance past fixed length vectors. Closes #2613 .
2012-06-15 15:31:19 -07:00
Michael Sullivan
a72d469067
Add upcall_malloc_dyn to rustrt.def.in.
2012-06-13 18:36:58 -07:00
Michael Sullivan
591b2802ff
Make trans only generate calls to the _dyn malloc upcalls, so we can get rid of the non dyn ones.
2012-06-13 18:00:17 -07:00
Michael Sullivan
4c0d41cffa
Add a malloc_dyn upcall for dynamically sized allocations on the shared heap.
2012-06-13 17:59:21 -07:00
Michael Sullivan
e67b5b25a6
Introduce a SHAPE_UNBOXED_VEC shape in order to seperate out vector logic.
2012-06-12 17:01:13 -07:00
Michael Sullivan
665ba3531d
Clean up tydesc declaration to make it clear what is unused.
2012-06-11 12:29:04 -07:00
Michael Sullivan
b22620624c
Get rid of a bunch of dead shape code. Closes #2552 .
2012-06-11 12:19:40 -07:00
Michael Sullivan
70b79d1e32
Add emacs settings to some runtime files where they were missing.
2012-06-11 12:19:40 -07:00
Michael Sullivan
45cc95fa22
Remove a bunch of old "remove after snapshot" code.
2012-06-07 18:05:12 -07:00
Brian Anderson
89483b0b83
rt: Remove check_stack_alignment
...
This function does not do what it tries to do and it is expensive
2012-06-07 11:12:29 -07:00
Brian Anderson
c816eea000
std: Add debug::breakpoint
2012-06-06 23:39:55 -07:00
Brian Anderson
99d6807ee0
rt: Unique allocations have -1 ref count
2012-06-05 00:21:27 -07:00
Brian Anderson
78fe75a741
rt: Fix iaac_init using wrong type and not seeding correctly
...
This was a result of changing the vector representation to contain
a box header.
2012-06-05 00:21:19 -07:00
Brian Anderson
e04e9488ad
Revert "rt: Unique allocations have -1 ref count"
...
This reverts commit 422aec85d6
.
2012-06-04 22:58:15 -07:00
Brian Anderson
422aec85d6
rt: Unique allocations have -1 ref count
2012-06-04 22:45:46 -07:00
Arkaitz Jimenez
dad3007584
Moved log method into logger class better than scheduler fixes #2495
2012-06-04 01:53:24 +01:00
Brian Anderson
35aa8d86e1
rt: Add a FIXME about #2495
2012-06-03 14:47:04 -07:00
Arkaitz Jimenez
9a2b240c89
Show ellipsis sign when log line is truncated
2012-06-03 21:06:42 +01:00
Brian Anderson
94ac30c498
rt: Improve docs for main, kernel, scheduler, and task
2012-06-02 23:14:47 -07:00
Brian Anderson
4c8bc19ad2
rt: Refactor task failure to go through rust_task_fail
...
This is the place to but a breakpoint. We will raise SIGINT here
to break into the debugger.
2012-05-31 23:47:52 -07:00
Brian Anderson
b16bdd9ed0
rt: Don't zero the unique box header
2012-05-30 21:23:34 -07:00
Brian Anderson
a2bbdd3f52
rt: Remove upcall_shared_malloc/free/realloc
2012-05-30 21:23:34 -07:00
Brian Anderson
70ecfa686a
rt: Fix build errors on win
2012-05-30 21:23:34 -07:00
Brian Anderson
3f8223ffc2
rt: Fix vec_from_buf_shared for new vecs
2012-05-30 21:23:34 -07:00
Brian Anderson
ecd4318094
rt: Fix rust_list_files for new vecs
2012-05-30 21:23:34 -07:00
Brian Anderson
09a1b94907
Various changes for self-describing vecs
2012-05-30 21:23:34 -07:00
Brian Anderson
178c5cc4a3
rt: Add yet another allocating upcall
...
upcall_exchange_malloc_dyn, for allocating unique boxes for types that don't
have a fixed size.
2012-05-30 21:23:34 -07:00
Brian Anderson
654f7e3086
rustc: Make unique boxes self-describing
2012-05-30 21:23:34 -07:00
Brian Anderson
508ccca014
rt: Add upcall_exchange_malloc/free
2012-05-30 21:23:33 -07:00
Eric Holk
6fa1a084f7
A shareable atomically reference counted pointer wrapper.
...
Needs more tests to ensure safety, and probably some more work on usability too.
2012-05-23 14:58:16 -07:00
Jeff Olson
6c6a47bf22
std: splitting out tcp server API + tests
...
- we now have two interfaces for the TCP/IP server/listener workflow,
based on different user approaches surrounding how to deal with the
flow of accept a new tcp connection:
1. the "original" API closely mimics the low-level libuv API, in that we
have an on_connect_cb that the user provides *that is ran on the libuv
thread*. In this callback, the user can accept() a connection, turning it
into a tcp_socket.. of course, before accepting, they have the option
of passing it to a new task, provided they *make the cb block until
the accept is done* .. this is because, in libuv, you have to do the
uv_accept call in the span of that on_connect_cb callback that gets fired
when a new connection comes in. thems the breaks..
I wanted to just get rid of this API, because the general proposition of
users always running code on the libuv thread sounds like an invitation
for many future headaches. the API restriction to have to choose to
immediately accept a connection (and allow the user to block libuv as
needed) isn't too bad for power users who could conceive of circumstances
where they would drop an incoming TCP connection and know what they're
doing, in general.
but as a general API, I thought this was a bit cumbersome, so I ended up
devising..
2. an API that is initiated with a call to `net::tcp::new_listener()` ..
has a similar signature to `net::tcp::listen()`, except that is just
returns an object that sort of behaves like a `comm::port`. Users can
block on the `tcp_conn_port` to receive new connections, either in the
current task or in a new task, depending on which API route they take
(`net::tcp::conn_recv` or `net::tcp::conn_recv_spawn` respectively).. there
is also a `net::tcp::conn_peek` function that will do a peek on the
underlying port to see if there are pending connections.
The main difference, with this API, is that the low-level libuv glue is
going to *accept every connection attempt*, along with the overhead that
that brings. But, this is a much more hassle-free API for 95% of use
cases and will probably be the one that most users will want to reach for.
2012-05-22 22:29:17 -07:00
Jeff Olson
e9c6416df6
std: splitting out tcp server API WIP
2012-05-22 22:29:17 -07:00
Jeff Olson
8769409612
rt: adding rust_uv_* binding for kernel malloc and free'ing :/
...
I need these in the context of doing various malloc/free operations for
libuv structs that need to live in the heap, because of API workflow
(there's no stack to put them in). This has cropped up several times
when impl'ing the high-level API for things like timers, but I've decided
to take the plunge and use this approach for the net::tcp module.
Technically, this can be avoided by spawning a new
task that contains the needed memory structures on its stack and then
having it block for the duration of the time we need that memory to be
valid (this is what I did in std::timer). Exposing this API provides a
much lower overhead way to address
the issue, albeit with safety concerns. The main mitigation policy should
be to use malloc/free with libuv handles only when the handles, are then
associated with a resource or class-with-dtor. So we have a finite lifetime
for the object and can gaurantee a free(), barring a runtime crash (in
which case you have bigger problems!)
2012-05-22 22:29:16 -07:00
Brian Anderson
17dd5650f8
rt: Fix def of isaac_seed on windows
2012-05-21 17:42:32 -07:00
Gareth Daniel Smith
c9f8ae02bc
add a seeded random number generator so that sequences of random numbers can be easily reproduced (for https://github.com/mozilla/rust/issues/2379 )
2012-05-21 17:38:05 -07:00
Erick Tryzelaar
e7ca3e4db0
expose tzset
2012-05-19 10:08:43 -07:00
Niko Matsakis
f1a46914c4
add a new debugging aid--tracing
2012-05-18 19:07:19 -07:00
Brian Anderson
5d625af9f9
rt: Make task killing synchronization possibly more correct
...
I could not come up with a test but this looks better to me.
2012-05-15 16:13:42 -07:00
Brian Anderson
7277cd7198
core: Add task::unkillable
2012-05-15 16:13:42 -07:00
Niko Matsakis
adb61e3e99
get preservation of boxes working, at least in simple cases
2012-05-15 13:38:16 -07:00
Niko Matsakis
be48cd87dc
make poison-on-free work, disable copying if borrowck is enabled
2012-05-15 11:49:08 -07:00
Brian Anderson
f717100fc7
rt: Start tasks, ports and scheds at 1, assert when we see 0. Closes #2321
2012-05-07 14:32:36 -07:00
Brian Anderson
beb1a59f82
core: Add comm::recv_chan to receive from a channel
2012-05-03 16:38:16 -07:00
Graydon Hoare
6e5c8a7fb8
More shape fixes for evecs.
2012-05-03 14:11:54 -07:00
Graydon Hoare
11a5d10bf2
Implement better shape code for evec, estr.
2012-05-03 13:09:02 -07:00
Brian Anderson
1e410f6206
rt: Fix some record alignment issues on windows
2012-05-02 18:32:20 -07:00
Brian Anderson
e2910bf264
Revert "rt: Fix some record alignment issues on windows"
...
This reverts commit a2457f5864
.
2012-05-02 18:25:22 -07:00
Brian Anderson
a2457f5864
rt: Fix some record alignment issues on windows
2012-05-02 17:55:58 -07:00
Graydon Hoare
f32d9f4853
Remove unused sp_size arg passed through walk_vec{1,2} in shape code.
2012-05-02 14:36:04 -07:00
Graydon Hoare
dc6c3a8946
Make rust_shape.h agree with shape.rs about meaning of shape code #31 .
2012-05-02 14:36:04 -07:00
Brian Anderson
46cc11ea88
core: Serialize all access to the environment using a weak global task
2012-04-30 17:34:29 -07:00
Jeff Olson
caab57586a
rt/std: whitespace cleanup + work on hl/global_loop docs
2012-04-27 22:19:30 -07:00
Jeff Olson
577b888e4b
rt: remove unneccesary c++ functions and rust_kernel data, re: global loop
2012-04-27 22:19:30 -07:00
Jeff Olson
fbaba0f404
std: add ll::loop_refcount binding for uv_loop_refcount
2012-04-27 22:19:30 -07:00
Brian Anderson
bbc4a74dc6
rt: Fix shape alignment of 64-bit ints on x86. Issue #2303
2012-04-26 18:30:58 -07:00
Jeff Olson
a9db0c9efe
whitespace cleanup
2012-04-20 15:23:23 -07:00
Jeff Olson
a045e63639
std: get_monitor_task_gl() is global_loop::get() default
2012-04-20 15:23:23 -07:00
Jeff Olson
bea02ee351
adding missing binding to rustrt.def.in
2012-04-20 15:23:22 -07:00
Jeff Olson
253fad7788
replace impl of globa_async_handle with one using atomic compare-and-swap
2012-04-20 15:23:22 -07:00
Jeff Olson
d7a87aa0a1
remove rustrt.def.in entry for no-longer-existent c++ function
2012-04-20 15:23:22 -07:00
Jeff Olson
9a5d1974dc
don't use ::malloc for initializing the global_async_handle in rust_kernel
2012-04-20 15:23:22 -07:00
Jeff Olson
e0f110aa12
clean and trying the global loop test as two separate loop lifetimes..
...
.. seeing an occasional valgrind/barf spew on some invalid read/writes..
need to investigate further.. i think its related to my poor citizen
conduct, re: pointers stashed in rust_kernel..
2012-04-20 15:23:22 -07:00
Jeff Olson
12f2f4c15c
rt: whitespace cleanup for existing libuv integration
2012-04-20 15:23:22 -07:00
Jeff Olson
e604c15df1
bindings to get/set data field on uv_loop_t* and debug log cleanup
2012-04-20 15:23:21 -07:00
Jeff Olson
c6667c06c3
add needed fields for global libuv loop + bindings to manage from rust
...
adding two pointers fields to rust_kernel :(
.. have to do manual malloc/free for one of the fields, which feels wrong
2012-04-20 15:23:21 -07:00
Jeff Olson
bf99a3aa93
adding low-level uv_timer_* stuff to libuv bindings
2012-04-20 15:23:21 -07:00
Jeff Olson
3d004c6df8
making brson's req. cleanups in #2134 plus change printf to LOG in c++
2012-04-20 15:23:21 -07:00
Brian Anderson
53f5c0c623
rt: Delete some incorrect comments
2012-04-20 14:00:13 -07:00
Brian Anderson
4357e1fd60
rt: Take the weak_task_lock in end_weak_tasks
...
Don't remember why it's commented out. Probably an oversight.
2012-04-20 13:59:31 -07:00