Commit Graph

31 Commits

Author SHA1 Message Date
edef
df7f261ca6 Expose unsafe_unwrap
This at least ensures we don't have to needlessly leak generators in the
tests, and covers similar use cases for consumers of libfringe.
2017-03-16 22:40:20 +01:00
edef
277e786d3f Panic when an unfinished Generator is dropped 2017-03-16 22:40:20 +01:00
Amanieu d'Antras
fff625767c Clean up and simplify the implementation of generators 2016-09-09 10:59:35 -04:00
whitequark
4b32c18f70 Rename Yielder::generate to Yielder::suspend.
This makes more sense, because "generate" implies *running*
a generator, not *returning* from a generator. That name was
a vestige of the time when libfringe only really provided a .next()
implementation, which made marginally more sense together with
.generate(), but it doesn't anymore when we have .resume().
2016-08-30 12:20:34 -04:00
edef
f21b8dc936 Update the license headers for MIT/Apache 2016-08-20 23:45:01 +02:00
whitequark
ddbf9a5afe Reimplement Generator to pass both input and output values around. 2016-08-13 13:38:04 +02:00
edef
b1a6b17d0a Move the Context tests and benches into src/
This concludes preparations for making Context private again.
2016-08-13 13:38:04 +02:00
whitequark
7ffad26cfd Implement the safe Generator abstraction.
close #24
2016-07-17 13:55:56 -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
976b971436 get rid of the old Context::swap
The two-parameter version is the only necessary API.
2016-04-03 19:55:25 +02: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
2b23083455 get rid of some minor warnings 2016-03-22 07:35:25 +01:00
edef
418c53797e x86 support
ref #1
2015-04-16 13:15:46 -04:00
edef
77ffd6bc03 only build benches/kernel_swap on Linux 2015-04-16 10:03:13 -04:00
edef
f7fb5ae4e6 only build benches/swap when OsStack is available 2015-04-16 10:02:04 -04:00
edef
d627f0d725 big rename — we're libfringe now 2015-04-16 08:11:12 -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
bdb6e0bd8b let StackSource::get_stack take &mut self 2015-04-16 07:35:29 -04:00
edef
f24e8e7911 add license headers to every file 2015-04-16 06:08:44 -04:00
edef
b8211689fa return a Result from StackSource::get_stack with an associated Error
fix #7
2015-04-16 04:14:18 -04:00
edef
42db0ee5b1 loosen the lifetime bounds on Context
fix #6
ref #3
2015-04-16 04:01:02 -04:00
edef
c19fc4625a use a statically-allocated stack for Context::new benchmarking
Now it's an actual context creation benchmark, instead of benchmarking
our stack creation, which is swappable anyway.
2015-04-15 22:11:36 -04:00
edef
54b34383e3 parametrise Context on Stack 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
f7511dc2c1 add a context creation benchmark 2015-04-15 19:35:27 -04:00
edef
8515bf0fa1 closure syntax changed 2015-02-23 23:14:58 -05:00
edef
a54e573073 Rust updates 2015-02-02 14:17:23 -05: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
5cf3a35d65 move the benchmarks around a little 2015-01-14 07:01:43 +01:00
edef
e9d6146b5b initial commit 2014-12-23 04:27:28 +01:00