Commit Graph

42 Commits

Author SHA1 Message Date
whitequark 7ffad26cfd Implement the safe Generator abstraction.
close #24
2016-07-17 13:55:56 -04:00
John Ericson 75ca6f66e1 Move x86 trampoline to naked function
Close #19
2016-07-16 16:39:19 -04:00
whitequark cbe136b762 Completely rework fringe::Context and fringe::arch.
The new design concerns itself with one thing and exactly one thing:
passing values back and forth with an extern "C" function.
This allows to simplify fringe::arch into a single primitive, swap.

Close #21
2016-07-16 15:04:15 -04:00
edef b986931817 remove copyright years
They're obnoxious to update, and I'm told they have no legal value.
2016-03-22 08:25:23 +01:00
edef bb2b92bf6b remove feature attributes for stable stuff 2016-03-16 00:14:09 +01:00
John Ericson 5411f10460 use Void to ensure closure diverges 2015-08-26 00:51:18 +02:00
edef e290a8bbaf remove `extern crate core` and prelude imports
the latest Rust nightly makes this unnecessary
2015-08-26 00:19:53 +02:00
edef 189edae3cf add #![feature(core_prelude)] 2015-07-20 20:54:41 -04:00
edef d0ee592ba1 use the libc crate from cargo 2015-04-23 01:14:01 +02:00
edef 0bebfae21d more docs! 2015-04-16 10:15:00 -04:00
edef d627f0d725 big rename — we're libfringe now 2015-04-16 08:11:12 -04:00
edef 2266da2f8d rejig lib.rs a little 2015-04-16 07:45:14 -04:00
edef fe490275fa move os::Stack behind the facade, to OsStack 2015-04-16 07:44:07 -04:00
edef ff25697444 remove StackSource
Nothing in this library took StackSources, and it's probably too
high-level a concept to include here. Maybe later.
2015-04-16 07:42:16 -04:00
edef cbfb62e62f only expose context and stack through the facade
It's fairly pointless to have submodules when there are only three
items.
2015-04-16 07:25:05 -04:00
edef 6f750ab484 move all OS-related code into src/os 2015-04-16 06:42:31 -04:00
edef 997a4a7765 move architecture specifics into arch directory 2015-04-16 06:17:03 -04:00
edef f24e8e7911 add license headers to every file 2015-04-16 06:08:44 -04:00
edef 52c0c92cd8 move OS specifics into sys 2015-04-16 05:49:34 -04:00
edef 2760a0a7aa move Valgrind handling into Context
fix #3
This takes all Valgrind functionality private again.
Valgrind stack registrations are now associated with a Context, not with
a Stack. This makes sense, since it's only actually a stack when a
Context is running on it. Perhaps Valgrind will even be able to detect
early stack frees now.
2015-04-16 02:59:58 -04:00
edef 7e0b126f42 separate all the libc interaction out per OS
We're now handling more of this ourselves, and leaving less to libstd.
Hopefully, we'll eventually break free of libstd, leaving a
highly-focused low-level library that retains all its conveniences in
freestanding environments.
2015-04-16 02:16:08 -04:00
edef db6a2ff89b factor Valgrind support out and expose it
Now other Stack / StackSource implementations can use the same Valgrind
code. Ref #3.
2015-04-15 22:25:52 -04:00
edef 31652d7b8f limit compilation of arch to x86_64
the current code only supports x86_64 (#1), and we want to fail hard on
any other architecture for now.
2015-04-15 21:52:08 -04:00
edef 6d56cc593e feature-flag os, but leave it enabled by default 2015-04-15 21:51:37 -04:00
edef 8dc53c3125 make Context::new take a stack, instead of creating one 2015-04-15 19:35:27 -04:00
edef 27318bc271 rename platform to os 2015-04-15 19:35:27 -04:00
edef 5ae54da9c2 make context public 2015-04-15 19:35:27 -04:00
edef 9855084890 make stack public 2015-04-15 19:35:27 -04:00
edef a39493d740 rewrite platform.rs to use mmap directly 2015-03-27 02:52:25 -04:00
edef b0dcc65304 Rust updates 2015-03-03 01:53:04 -05:00
edef e51cfa1b7b no_std is a feature flag now 2015-02-23 23:13:25 -05:00
edef a54e573073 Rust updates 2015-02-02 14:17:23 -05:00
edef 3f76c4baea use std in test configurations
this makes `cargo test` and `cargo bench` work cleanly, for one.
2015-01-14 11:27:43 +01:00
edef 299a0a5d98 complete rewrite!
featuring 7ns inlineable context switches, no more separately-built
assembly objects, and a vastly nicer interface.
incontext/outcontext are no more, context switch calls now take a single
context structure, which functions as both.
everything now also functions without any heap allocations -- for the
context setup, only an FnOnce() value is necessary.
2015-01-14 11:27:43 +01:00
edef 0729ca8648 yay, Rust beta… 2015-01-13 08:38:52 +01:00
edef fec3f2eaef Rust updates 2015-01-09 22:45:39 +01:00
edef 612e854acb move {get,set}_sp_limit into Rust-land 2014-12-25 12:24:02 +01:00
edef 59e723d099 free ourselves from the shackles of libstd 2014-12-24 07:28:21 +01:00
edef a94bc324fe move stack creation / destruction into platform 2014-12-24 07:07:25 +01:00
edef 5a06b04a6a factor macros out and generalise them 2014-12-24 06:44:03 +01:00
edef 791173fd97 refactoring! 2014-12-24 06:44:03 +01:00
edef e9d6146b5b initial commit 2014-12-23 04:27:28 +01:00