Commit graph

24 commits

Author SHA1 Message Date
John Kåre Alsaker
70cef9474a Print stack overflow messages for Windows, Linux and OS X
Fixes #17562
2014-10-24 14:36:29 +02:00
Alex Crichton
dae48a07f3 Register new snapshots
Also convert a number of `static mut` to just a plain old `static` and remove
some unsafe blocks.
2014-10-10 22:09:49 -07:00
Steven Fackler
efbb15d59c Fix libgreen 2014-09-30 12:52:47 -07:00
Corey Richardson
21bd17fcc1 Stage #[repr(packed)] in std::rt 2014-08-20 21:02:24 -04:00
Corey Richardson
cf5d28083d libgreen: use FFI-safe types 2014-08-20 21:02:24 -04:00
Aaron Turon
68bde0a073 stabilize atomics (now atomic)
This commit stabilizes the `std::sync::atomics` module, renaming it to
`std::sync::atomic` to match library precedent elsewhere, and tightening
up behavior around incorrect memory ordering annotations.

The vast majority of the module is now `stable`. However, the
`AtomicOption` type has been deprecated, since it is essentially unused
and is not truly a primitive atomic type. It will eventually be replaced
by a higher-level abstraction like MVars.

Due to deprecations, this is a:

[breaking-change]
2014-08-04 16:03:21 -07:00
Michael Neumann
2e2f53fad2 Port Rust to DragonFlyBSD
Not included are two required patches:

* LLVM: segmented stack support for DragonFly [1]

* jemalloc: simple configure patches

[1]: http://reviews.llvm.org/D4705
2014-07-29 16:44:39 +02:00
Alex Crichton
fb02d54b97 std: Move MemoryMap fields to methods
If modified, you can safely unmap arbitrary memory. These fields are not
intended to be modified, so read-only accessors are the only ones that are
provided.

Closes #15478
2014-07-11 22:36:32 -07:00
Joseph Crail
e3fa23bcb6 Fix spelling errors. 2014-07-03 12:54:51 -07:00
Alex Crichton
0dfc90ab15 Rename all raw pointers as necessary 2014-06-28 11:53:58 -07:00
Daniel Micay
bb0a42745f fix signatures of mmap-related functions from libc 2014-06-18 01:27:42 -04:00
Alex Crichton
75014f7b17 libs: Fix miscellaneous fallout of librustrt 2014-06-06 23:00:01 -07:00
Alex Crichton
b53454e2e4 Move std::{reflect,repr,Poly} to a libdebug crate
This commit moves reflection (as well as the {:?} format modifier) to a new
libdebug crate, all of which is marked experimental.

This is a breaking change because it now requires the debug crate to be
explicitly linked if the :? format qualifier is used. This means that any code
using this feature will have to add `extern crate debug;` to the top of the
crate. Any code relying on reflection will also need to do this.

Closes #12019

[breaking-change]
2014-05-27 21:44:51 -07:00
Huon Wilson
8ec16e1e66 green: de-~[]. 2014-04-10 15:21:58 -07:00
Corey Richardson
0459ee77d0 Fix fallout from std::libc separation 2014-04-04 09:31:44 -07:00
Alex Crichton
b9b0ed521d green: Switch field privacy as necessary 2014-03-31 15:47:36 -07:00
Huon Wilson
16e635cdfb std: make .swap_remove return Option<T>.
This is one of the last raw "indexing" method on vectors that returns
`T` instead of the Option.
2014-02-24 21:22:26 -08:00
Alex Crichton
d5e0622f95 Fix a bug where cached stacks weren't re-used
The condition was the wrong direction and it also didn't take equality into
account. Tests were added for both cases.

For the small benchmark of `task::try(proc() {}).unwrap()`, this takes the
iteration time on OSX from 15119 ns/iter to 6179 ns/iter (timed with
RUST_THREADS=1)

cc #11389
2014-02-13 20:29:46 -08:00
Salem Talha
cc61fc0994 Removed all instances of XXX in preparation for relaxing of FIXME rule 2014-01-26 14:42:53 -05:00
Alex Crichton
8c43ce6d94 Bring in the line-length police 2014-01-26 00:49:23 -08:00
Corey Richardson
bf5152f486 Fix zero-sized memory mapping 2014-01-24 22:30:01 -08:00
Corey Richardson
dee7fa58dd Use mmap to map in task stacks and guard page
Also implement caching of stacks.
2014-01-24 22:30:00 -08:00
Brian Anderson
3b1862a82f Don't allow newtype structs to be dereferenced. #6246 2014-01-04 14:44:12 -08:00
Alex Crichton
51abdee5f1 green: Rip the bandaid off, introduce libgreen
This extracts everything related to green scheduling from libstd and introduces
a new libgreen crate. This mostly involves deleting most of std::rt and moving
it to libgreen.

Along with the movement of code, this commit rearchitects many functions in the
scheduler in order to adapt to the fact that Local::take now *only* works on a
Task, not a scheduler. This mostly just involved threading the current green
task through in a few locations, but there were one or two spots where things
got hairy.

There are a few repercussions of this commit:

* tube/rc have been removed (the runtime implementation of rc)
* There is no longer a "single threaded" spawning mode for tasks. This is now
  encompassed by 1:1 scheduling + communication. Convenience methods have been
  introduced that are specific to libgreen to assist in the spawning of pools of
  schedulers.
2013-12-24 19:59:52 -08:00
Renamed from src/libstd/rt/stack.rs (Browse further)