bors
0bc1ca4045
auto merge of #8631 : anasazi/rust/homing-io, r=brson
...
libuv handles are tied to the event loop that created them. In order to perform IO, the handle must be on the thread with its home event loop. Thus, when as task wants to do IO it must first go to the IO handle's home event loop and pin itself to the corresponding scheduler while the IO action is in flight. Once the IO action completes, the task is unpinned and either returns to its home scheduler if it is a pinned task, or otherwise stays on the current scheduler.
Making new blocking IO implementations (i.e. files) thread safe is rather simple. Add a home field to the IO handle's struct in uvio and implement the HomingIO trait. Wrap every IO call in the HomingIO.home_for_io method, which will take care of the scheduling.
I'm not sure if this remains thread safe in the presence of asynchronous IO at the libuv level. If we decide to do that, then this set up should be revisited.
2013-08-20 17:12:09 -07:00
bors
5034792c88
auto merge of #8584 : thestinger/rust/jemalloc, r=graydon
...
This reverts commit 371a316ec9
.
Closes #7217
2013-08-19 20:21:58 -07:00
Daniel Micay
ef436637ea
jemalloc: use $(AR), not ar
2013-08-19 20:53:02 -04:00
Graydon Hoare
517e611271
regenerate configure
2013-08-19 20:48:11 -04:00
Eric Reed
88f718341e
Instruct event loops to ignore SIGPIPE when constructed.
...
libuv does not always catch SIGPIPE.
2013-08-19 16:26:50 -07:00
Graydon Hoare
2c7164595f
rt: make jemalloc header conform to android signature.
2013-08-19 16:09:46 -07:00
bors
3bc6858428
auto merge of #8551 : huonw/rust/speling, r=alexcrichton
...
(This doesn't add/remove `u`s or change `ize` to `ise`, or anything like that.)
2013-08-18 05:11:58 -07:00
Brian Anderson
a4d171e009
rt: Remove unused uv helpers
2013-08-16 13:24:25 -07:00
Brian Anderson
5052773ad8
rt: Remove empty rust_upcall.h
2013-08-16 13:24:25 -07:00
Brian Anderson
450f16eb25
rt: Remove unused rust_clone_type_desc declaration
2013-08-16 13:24:25 -07:00
Brian Anderson
da7d79dfbe
rt: Remove rust_stack
2013-08-16 13:24:25 -07:00
Brian Anderson
8861ba6159
rt: Remove rust_refcount.h
2013-08-16 13:24:25 -07:00
Brian Anderson
cb89afc64e
rt: Remove unused parts of rust_log
2013-08-16 13:24:25 -07:00
Brian Anderson
085dc55e13
rt: Remove unused parts of rust_globals.h
2013-08-16 13:24:24 -07:00
Brian Anderson
1b6292aaea
rt: Remove rust_signal.h
2013-08-16 13:24:24 -07:00
Brian Anderson
5923cc3745
rt: Remove rust_env
2013-08-16 13:24:24 -07:00
Huon Wilson
72fd02d939
doc: convert remaining uses of core:: to std::.
2013-08-16 15:54:14 +10:00
Niko Matsakis
6fe59bf877
Add a field borrow_offset
to the type descriptor indicating
...
what amount a T* pointer must be adjusted to reach the contents
of the box. For `~T` types, this requires knowing the type `T`,
which is not known in the case of objects.
2013-08-11 13:59:45 -04:00
bors
60f5011005
auto merge of #8296 : erickt/rust/remove-str-trailing-nulls, r=erickt
...
This PR fixes #7235 and #3371 , which removes trailing nulls from `str` types. Instead, it replaces the creation of c strings with a new type, `std::c_str::CString`, which wraps a malloced byte array, and respects:
* No interior nulls
* Ends with a trailing null
2013-08-09 21:56:17 -07:00
Brian Anderson
b75915d0ca
Remove the C++ runtime. Sayonara
2013-08-09 16:45:50 -07:00
Erick Tryzelaar
8567611adf
Merge commit 'd89ff7eef969aee6b493bc846b64d68358fafbcd' into remove-str-trailing-nulls
2013-08-06 16:18:58 -07:00
Luqman Aden
9c39992021
Add support for vanilla linux on arm.
2013-08-04 19:28:06 -04:00
Erick Tryzelaar
3c94b5044c
Merge remote-tracking branch 'remotes/origin/master' into str-remove-null
2013-08-04 16:23:41 -07:00
Erick Tryzelaar
5865a7597b
Remove trailing null from strings
2013-08-04 15:45:16 -07:00
Brian Anderson
044fa35bf8
rt: Fix a corner-case in unwinding that leads to stack overflow
...
In some scenarios upcall_rust_stack_limit fails to record the stack
limit, leaving it 0, and allowing subsequent Rust code to run into
the red zone.
2013-08-03 23:40:25 -07:00
Brian Anderson
05eff5f731
extra: Remove dbg module and rt support code
...
This stuff is ancient, unused, and tied to oldsched
2013-07-31 18:51:57 -07:00
bors
9e857458d6
auto merge of #8145 : brson/rust/rttestfixes, r=pcwalton
...
Two commits here that fix test case dependencies on the old scheduler.
2013-07-31 07:34:24 -07:00
bors
5d409ccd30
auto merge of #8143 : brson/rust/change-dir-lock, r=luqmana
2013-07-31 05:46:21 -07:00
Brian Anderson
11fc1fd485
test: Use a test extern in various foreign fn tests
2013-07-30 21:13:55 -07:00
Brian Anderson
91f1ab4896
rt: Use the correct global change_dir lock
2013-07-30 21:06:02 -07:00
Brian Anderson
cb9ee7f5be
std: Remove ManualThreads spawn mode
2013-07-30 14:23:45 -07:00
Brian Anderson
0144c83213
std::rt: Change Thread interface to require an explicit join
...
Makes it more obvious what's going on
2013-07-30 14:23:44 -07:00
bors
6dc5e2c61f
auto merge of #8046 : kmcallister/rust/unused-log, r=pcwalton
2013-07-28 12:52:25 -07:00
bors
15310ba7c2
auto merge of #8040 : luqmana/rust/rtn, r=brson
...
Implements various missing tcp & udp methods.. Also fixes handling ipv4-mapped/compatible ipv6 addresses and addresses the XXX on `status_to_maybe_uv_error`.
r? @brson
2013-07-27 01:49:35 -07:00
Luqman Aden
037bf3757c
libstd: Implement some missing udp methods.
2013-07-25 22:21:46 -04:00
Keegan McAllister
d0f54a5cfb
Warn about unused RUST_LOG specs
2013-07-25 13:24:32 -07:00
Luqman Aden
61e741cf71
libstd: Implement {peer, socket}_name for new rt tcp & udp.
2013-07-25 05:57:52 -04:00
Daniel Micay
ce1db94647
rm unused upcall_exchange_free
2013-07-24 18:44:16 -04:00
bors
7f96eb58d2
auto merge of #7980 : graydon/rust/misc-benchmarks, r=catamorphism
...
Some machinery for enabling #[bench] benchmarks in std and some examples showing how to write them.
2013-07-23 22:46:39 -07:00
Graydon Hoare
bc2b78ca2c
rt: Fix child-iteration bug in crate map.
2013-07-22 16:56:10 -07:00
Brian Anderson
407bffb33e
std: Remove at_exit API. Unused
2013-07-22 14:17:09 -07:00
Brian Anderson
23b7ee2bda
std: Remove unstable::global. Unused
2013-07-22 14:16:52 -07:00
Brian Anderson
4beda4e582
std::rt: Stop using unstable::global in change_dir_locked
2013-07-22 14:16:52 -07:00
Brian Anderson
f8c4d99df6
std: Remove weak_task API. Unused
2013-07-22 14:16:52 -07:00
Daniel Micay
ed67cdb73c
new snapshot
2013-07-22 01:09:48 -04:00
bors
91ebfbb959
auto merge of #7859 : kmcallister/rust/rt-diag-messages, r=pcwalton
...
I added these while tracking down heap corruption in Servo.
2013-07-18 22:40:38 -07:00
bors
b70c045f38
auto merge of #7856 : brson/rust/no-thread-per-core, r=pcwalton
...
This doesn't make sense under the new scheduler.
2013-07-18 19:10:41 -07:00
Keegan McAllister
2d82d9364c
rt: Print alloc backtraces for bad release_alloc with RUSTRT_TRACK_ALLOCATIONS
...
Probably the env var should be renamed from DETAILED_LEAKS but I'm leaving
aside that breaking change for now.
2013-07-17 14:04:03 -07:00
Keegan McAllister
dfa5595628
rt: Diagnose bad alloc index in release_alloc with RUSTRT_TRACK_ALLOCATIONS
2013-07-17 14:03:59 -07:00
Daniel Micay
e118555ce6
remove headers from unique vectors
2013-07-15 23:57:27 -04:00
bors
d582eeb1ec
auto merge of #7734 : alexcrichton/rust/issue-3395, r=sanxiyn
...
Also ends up fixing one case in libstd.
Closes #3395
2013-07-12 21:40:36 -07:00
bors
4e1292ad6b
auto merge of #7728 : bcully/rust/largestack64, r=cmr
...
Just to get the ball rolling, this patch sets stacks to 4 MB on >32-bit architectures.
2013-07-12 09:40:36 -07:00
bors
07183ea6e7
auto merge of #7677 : alexcrichton/rust/tls-gc, r=pcwalton
...
cc #6004 and #3273
This is a rewrite of TLS to get towards not requiring `@` when using task local storage. Most of the rewrite is straightforward, although there are two caveats:
1. Changing `local_set` to not require `@` is blocked on #7673
2. The code in `local_pop` is some of the most unsafe code I've written. A second set of eyes should definitely scrutinize it...
The public-facing interface currently hasn't changed, although it will have to change because `local_data::get` cannot return `Option<T>`, nor can it return `Option<&T>` (the lifetime isn't known). This will have to be changed to be given a closure which yield `&T` (or as an Option). I didn't do this part of the api rewrite in this pull request as I figured that it could wait until when `@` is fully removed.
This also doesn't deal with the issue of using something other than functions as keys, but I'm looking into using static slices (as mentioned in the issues).
2013-07-11 19:52:37 -07:00
Alex Crichton
2cd9d7bc88
Expand ctypes warnings to warn about *int/*uint
...
Also ends up fixing one case in libstd
2013-07-11 19:45:25 -07:00
Brendan Cully
7910c72de5
Enable large stacks on 64-bit architectures
2013-07-11 15:40:16 -07:00
bors
41dcec2fe1
auto merge of #7265 : brson/rust/io-upstream, r=brson
...
r? @graydon, @nikomatsakis, @pcwalton, or @catamorphism
Sorry this is so huge, but it's been accumulating for about a month. There's lots of stuff here, mostly oriented toward enabling multithreaded scheduling and improving compatibility between the old and new runtimes. Adds task pinning so that we can create the 'platform thread' in servo.
[Here](e1555f9b56/src/libstd/rt/mod.rs (L201)
) is the current runtime setup code.
About half of this has already been reviewed.
2013-07-09 18:28:46 -07:00
Brian Anderson
1dbcc8b188
std: Remove ThreadPerCore spawn mode. Unused
2013-07-09 17:45:06 -07:00
Alex Crichton
a89af1fa4c
Use purely an owned vector for storing TLS data
2013-07-09 17:31:01 -07:00
Brian Anderson
2c1315719d
rt: Make the old rand builtins work with newsched
2013-07-09 15:05:43 -07:00
Brian Anderson
07e52eb7fc
std: Make os::set_exit_status work with newsched
2013-07-09 13:29:05 -07:00
Brian Anderson
fae3336769
Merge remote-tracking branch 'mozilla/master'
...
Conflicts:
src/libextra/test.rs
src/libstd/rt/global_heap.rs
src/libstd/unstable/lang.rs
src/libstd/vec.rs
2013-07-08 16:29:54 -07:00
Brian Anderson
b227583dad
Merge remote-tracking branch 'anasazi/io'
...
Conflicts:
src/libstd/rt/test.rs
2013-07-08 15:53:11 -07:00
Brian Anderson
4282539523
std::rt: Add a hack to allocate different test port ranges to different bots
2013-07-08 14:41:07 -07:00
Eric Reed
cf23292010
Merge remote-tracking branch 'upstream/io' into io
...
Conflicts:
src/libstd/rt/uvio.rs
2013-07-08 13:03:18 -07:00
Niko Matsakis
59083d2c6a
Address nits by @catamorphism
2013-07-08 13:55:10 -04:00
Niko Matsakis
af453a33cc
This assert does not necessarily hold; sometimes we temporarily increase ref-count
2013-07-08 13:55:10 -04:00
Luqman Aden
5007fb2d4d
Add x64 windows to platform.mk and mingw64 header fixes.
2013-07-03 23:33:59 -04:00
Brian Anderson
1098d6980b
Merge remote-tracking branch 'mozilla/master'
...
Conflicts:
src/libextra/test.rs
src/libstd/at_vec.rs
src/libstd/cleanup.rs
src/libstd/rt/comm.rs
src/libstd/rt/global_heap.rs
src/libstd/task/spawn.rs
src/libstd/unstable/lang.rs
src/libstd/vec.rs
src/rt/rustrt.def.in
src/test/run-pass/extern-pub.rs
2013-07-03 14:49:13 -07:00
Eric Reed
6a1a7819c9
Merge remote-tracking branch 'upstream/io' into io
...
Conflicts:
src/libstd/rt/test.rs
src/rt/rustrt.def.in
2013-07-02 16:55:56 -07:00
Eric Reed
e6c57793be
IPv6 support for UDP and TCP.
2013-07-02 16:40:57 -07:00
Brian Anderson
0e07c8d249
rt: Add global_args_lock functions to rustrt.def.in
2013-07-01 16:38:17 -07:00
Daniel Micay
b731d96b4f
vec: implement exchange vector reserve in Rust
2013-06-30 22:30:37 -04:00
Daniel Micay
b883d6a54c
simplify the exchange allocator
...
* stop using an atomic counter, this has a significant cost and
valgrind will already catch these leaks
* remove the extra layer of function calls
* remove the assert of non-null in free, freeing null is well defined
but throwing a failure from free will not be
* stop initializing the `prev`/`next` pointers
* abort on out-of-memory, failing won't necessarily work
2013-06-30 03:45:36 -04:00
bors
0bad3e62b4
auto merge of #7395 : yichoi/rust/android_dummy, r=brson
...
add android dummy functions which does not exist in boinic.
after #7257 , some mman related functions are needed for android.
2013-06-27 03:07:31 -07:00
Brian Anderson
8918461fc4
rt: Release big stacks immediately after use to avoid holding on to them through yields
...
This avoids the following pathological scenario that makes threadring OOM:
1) task calls C using fast_ffi, borrowing a big stack from the scheduler.
2) task returns from C and places the big stack on the task-local stack segment list
3) task calls further Rust functions that require growing the stack, and for this reuses the big stack
4) task yields, failing to return the big stack to the scheduler.
5) repeat 500+ times and OOM
Conflicts:
src/rt/rust_task.cpp
2013-06-26 15:18:36 -07:00
Young-il Choi
6a77273104
rt: add android dummy functions for mman related
2013-06-26 10:25:12 +09:00
Eric Reed
f202713b73
satisfy the formatting check
2013-06-25 14:40:36 -07:00
Eric Reed
4870dce3eb
Merge remote-tracking branch 'upstream/io' into io
...
Conflicts:
src/rt/rustrt.def.in
2013-06-25 11:45:44 -07:00
bors
7aee5da08d
auto merge of #7254 : Blei/rust/intrinsic-overhaul, r=cmr
...
This sets the `get_tydesc()` return type correctly and removes the intrinsic module. See #3730 , #3475 .
Update: this now also removes the unused shape fields in tydescs.
2013-06-25 04:38:06 -07:00
Brian Anderson
5e7c5d6c3d
std: Make box annihilator work with newsched
2013-06-24 17:07:03 -07:00
Brian Anderson
aa9210d25a
std: Rewrite vec_reserve_shared_actual in Rust
2013-06-24 17:07:01 -07:00
Alex Crichton
8fdc8f392c
Support foreign 'static mut' variables as well
2013-06-23 18:00:32 -07:00
Philipp Brüschweiler
e2f1049bd5
Remove unused TyDesc parameter from the glue functions
...
To remove the environment pointer, support for function pointers without
an environment argument is needed (i.e. a fixed version of #6661 ).
2013-06-23 13:02:00 +02:00
Philipp Brüschweiler
976c0b3dfb
Remove rust_call_tydesc_glue
...
Towards #4812 . Also includes some minor cleanups.
2013-06-23 12:49:16 +02:00
Philipp Brüschweiler
8bf0033345
Remove unused shape fields from typedescs
2013-06-23 12:49:16 +02:00
Brian Anderson
95eb01957b
std: Make console log off/on controls work with newsched
2013-06-21 16:52:07 -07:00
Brian Anderson
1b7c99655f
std::rt: Support os::args
2013-06-21 14:42:15 -07:00
bors
45f588e8fd
auto merge of #7200 : yichoi/rust/fix_je_mac_cross, r=brson
...
while cross-compiling, ar in cross toolchains are required.
linux is not sensitive so could not see errors.
2013-06-21 04:10:53 -07:00
Brian Anderson
357f087786
Merge remote-tracking branch 'brson/io' into io-upstream
...
Conflicts:
src/rt/rust_builtin.cpp
src/rt/rustrt.def.in
2013-06-20 12:17:00 -07:00
James Miller
3bc4d1a120
Remove all #[cfg(stage0)]-protected code
...
New snapshot means this can all go. Also removes places that have
comments that say they are workarounds for stage0 errors.
2013-06-21 02:43:02 +12:00
Brian Anderson
5086c0850e
std::rt: Update GC metadata in init
2013-06-19 16:08:07 -07:00
Brian Anderson
7f55fc33f0
std: Work around some failing 'run' tests when valgrinding. #7224
...
Under valgrind on 64->32 cross compiles the dynamic linker is emitting
some error messages on stderr, which interferes with the tests that
are checking stderr.
2013-06-18 19:52:05 -07:00
Eric Reed
35f3fa6383
Merge remote-tracking branch 'upstream/io' into io
...
Conflicts:
src/libstd/rt/uvio.rs
2013-06-17 12:45:40 -07:00
Young-il Choi
474bd60c1b
rt: fix jemalloc android cross-compile for mac
2013-06-17 20:20:24 +09:00
Brian Anderson
319cf6e465
Merge remote-tracking branch 'brson/io'
...
Conflicts:
src/libstd/rt/comm.rs
src/libstd/rt/mod.rs
src/libstd/rt/sched.rs
src/libstd/rt/task.rs
src/libstd/rt/test.rs
src/libstd/rt/tube.rs
src/libstd/rt/uv/uvio.rs
src/libstd/rt/uvio.rs
src/libstd/task/spawn.rs
2013-06-16 15:09:25 -07:00
Niko Matsakis
461a79a247
Partial fix for #7158 : Save EDX in morestack on x86-32
2013-06-16 12:46:51 -04:00
Eric Reed
74e7255193
Added a utility function to extract the udp handle from udp send requests.
2013-06-14 11:39:46 -07:00
Daniel Micay
ec27644870
automated whitespace fixes
2013-06-13 18:03:08 -04:00
Eric Reed
5393e43b53
Corrected libuv UDP bindings.
2013-06-13 12:51:32 -07:00
Daniel Micay
0685c657f0
update jemalloc to 3.4.0
2013-06-12 00:26:15 -04:00