summaryrefslogtreecommitdiff
Commit message (Expand)AuthorAgeFilesLines
* Merge pull request #14 from craigmaloney/master•••Substitute @math for @sub, typo fixesHEADmasterAndy Wingo2017-08-171-4/+4
|\
| * Substitute @math for @sub, typo fixesCraig Maloney2017-08-161-4/+4
|/
* Garbage collect synchronized items from channels put/get queues.•••* fibers/conditions.scm (make-counter, %steps-till-gc, counter-decrement!) (counter-reset!): Moved to new module, counter.scm. * fibers/counter.scm: New file. Rename `%steps-till-gc' to `%countdown-steps'. * Makefile.am: Add counter.scm. * fibers/channels.scm (<channel>, make-channel): Add new slots `getq-gc-counter' and `putq-gc-counter'. (put-operation, get-operation): Garbage collect synchronized items from queues. * fibers/deque.scm (dequeue-filter, dequeue-filter!): New procedures. Christopher Allan Webber2017-08-105-35/+91
* Update copyright headers, adding Chris Webber where appropriate.•••* fibers/conditions.scm: * fibers/stack.scm: Update copyright headers. Christopher Allan Webber2017-08-102-0/+2
* Add guix.scm file for easy development environments.•••`guix environment -l guix.scm' and go! You can also do `guix build -f guix.scm' to test that the package builds. * guix.scm: New file. Christopher Allan Webber2017-08-061-0/+77
* Removing accidental inclusion of example's previous timing.•••* fibers.texi: Removing previous timing output. Christopher Allan Webber2017-08-061-4/+0
* Update speed measurement for ping-pong testAndy Wingo2017-08-061-2/+6
* Fix concurrency bug in memcached serverAndy Wingo2017-08-061-1/+3
* Lighten up fibers by installing "catch" in scheduler•••This takes the load off of each fiber and speeds things up. Andy Wingo2017-08-062-36/+37
* Fix typo in schedule-task-when-fd-writableAndy Wingo2017-08-061-1/+1
* Rebase fibers on top of schedulers and tasks•••This commit refactors fibers to be based on lighter-weight "tasks", and makes the scheduler API more orthogonal. Now there are no more fiber objects (although the fibers layer could re-add them if they are useful), and fibers no longer have names (although again this could be re-added at an upper layer). Also it's the current scheduler that's bound by a parameter, not the current fiber, and as it's a thread-safe parameter it doesn't need to be bound in each fiber. Andy Wingo2017-08-0611-708/+583
* Garbage collect old condition waiters.•••* fibers/stack.scm (stack-filter!): New variable. * fibers/conditions.scm (make-counter, counter-increment!) (counter-reset!, %steps-till-gc): New variables. (<condition>, make-condition): Update to take gc-step argument. (wait-operation): Occasionally garbage collect old condition waiters. Christopher Allan Webber2017-07-312-5/+56
* Merge pull request #10 from cwebber/document-signal-condition•••Document signal-condition!Andy Wingo2017-07-311-0/+5
|\
| * Document signal-condition!•••* fibers.texi (Conditions): Document signal-condition! Christopher Allan Webber2017-07-301-0/+5
|/
* Add local ping-pong benchmarkAndy Wingo2017-06-182-1/+44
* Fix diagonal benchmarkAndy Wingo2017-06-171-1/+1
* Remove dep on local dev setupAndy Wingo2017-06-171-5/+5
* Add makefile for collecting dataAndy Wingo2017-06-172-0/+25
* Add scale-bench file.•••* benchmarks/scale-bench: New file. Andy Wingo2017-06-171-0/+36
* Add parallel ping-pong benchmarkAndy Wingo2017-06-161-0/+40
* Remove sieve printoutAndy Wingo2017-06-161-1/+1
* Fix sieve bugAndy Wingo2017-06-161-2/+2
* Add false sieve-of-erastothenes benchmarkAndy Wingo2017-06-161-0/+51
* Add benchmarks.Andy Wingo2017-06-163-0/+176
* Support compiling against Guile 3.0.Andy Wingo2017-06-162-18/+67
* Fibers 1.0.0.•••* configure.ac: Bump version. v1.0.0Andy Wingo2017-02-201-1/+1
* Fix fibers/config.scm rule•••* Makefile.am (fibers/config.scm): Fix rule. Andy Wingo2017-02-201-0/+1
* Fibers 1.0.0 documentation.•••* fibers.texi: Update for 1.0.0. Andy Wingo2017-02-201-13/+11
* Add gitignore•••* .gitignore: Add fibers/config.scm. Andy Wingo2017-02-201-0/+1
* Update examples in manual•••* fibers.texi: Update examples and example timings. Andy Wingo2017-02-201-18/+15
* Update examples•••* examples/memcached-client.scm: * examples/memcached-server.scm: * examples/ping-client.scm: * examples/ping-server.scm: Update for newest run-fibers. Andy Wingo2017-02-204-39/+31
* Add block-asyncs in fiber->thread resume path•••* fibers/operations.scm (perform-operation): Block asyncs in resume callback; otherwise the fiber doing the resuming could be scheduled away. Andy Wingo2017-02-201-4/+6
* Update (web server fibers)•••* web/server/fibers.scm: Update for new-style nonblocking management. Andy Wingo2017-02-201-12/+7
* Add new channels test.•••* tests/channels.scm (pingpong): New test. Andy Wingo2017-02-201-0/+22
* Fix deprecation warning in (fibers operations)•••* fibers/operations.scm: Use (ice-9 threads). Andy Wingo2017-02-201-0/+5
* Fix epoll wakeup•••* fibers/epoll.scm (epoll): Like a complete idiot, I broke epoll wakeup. Fixed by calling expiry->timeout while epoll-state is waiting. Andy Wingo2017-02-201-5/+7
* Update REPL support for run-fibers changes.•••* fibers/repl.scm (fibers): Update for new run-fibers changes. Andy Wingo2017-02-201-11/+26
* Update documentation.•••* fibers.texi (Internals): Document scheduler-work-pending?. Andy Wingo2017-02-201-0/+5
* run-fibers returns when initial fiber finishes•••* epoll.c (scm_primitive_epoll_wait): Accept timeout in internal time units instead of milliseconds. Avoid some overhead if the timeout is zero. * fibers/epoll.scm (epoll): Adapt to primitive-epoll-wait chance. Change get-timeout callback to an "expiry" argument and an update-expiry last-minute function. Tighten the window around the "waiting" epoll-state. * fibers.scm (%run-fibers): Remove current-read-waiter / current-write-waiter parameterization, given that fibers individually each have this parameterization. (run-fibers): Add #:drain? argument. * fibers/internal.scm (schedule-runnables-for-next-turn): Simplify a bit, inlining scheduler-poll-timeout and adapting to epoll change. (scheduler-work-pending?): New function. (run-scheduler): Simplify finish? logic. * tests/basic.scm: * tests/speedup.scm: Update to drain where needed. * fibers.texi: Update for new run-fibers termination condition. Andy Wingo2017-02-197-126/+148
* Fix make -j problem•••* Makefile.am ($(GOBJECTS)): Depend on epoll.la. Andy Wingo2017-02-191-0/+1
* Minor documentation update•••* fibers.texi: Bump version and date. Add words about scalability. Andy Wingo2017-02-191-2/+26
* Require Guile 2.1.7•••* README.md (Download): Update required Guile version. Andy Wingo2017-02-181-1/+1
* Lower preemption overhead•••* fibers/interrupts.scm (with-interrupts/sigprof): (with-interrupts/thread-cputime, with-interrupts): Separate predicate from interrupt routine, so that predicate can run off-thread. * fibers.scm (%run-fibers): Adapt. Andy Wingo2017-02-172-11/+14
* Prevent spurious preemption•••* fibers/internal.scm (<scheduler>, make-scheduler): (scheduler-runcount, run-scheduler): Maintain a count of run fibers. * fibers.scm (%run-fibers): Only cause the current fiber to suspend if the runcount isn't advancing. Andy Wingo2017-02-172-3/+21
* Add allocation speedup test•••* tests/speedup.scm: Add allocation speedup test. Andy Wingo2017-02-171-0/+13
* Take advantage of accept4 interface.•••* fibers/web/server.scm (client-loop): Setvbuf here. (socket-loop): Use new accept4 interface. Andy Wingo2017-02-151-2/+2
* Tweak fibers web socket options•••* fibers/web/server.scm (client-loop): Move NODELAY things here and actually enable NODELAY (before we were... disabling it???). (socket-loop): Remove SNDBUF munging; let's assume it doesn't matter rather than the reverse. Andy Wingo2017-02-151-7/+4
* Fix epoll-modify logic•••Because this case wasn't being hit before, there were bugs. * fibers/internal.scm (<scheduler>): Remove active fd count; we'll add a #:forever? option to run-fibers instead. Simplify sources. (make-scheduler): Adapt. (schedule-fibers-for-fd): Use resume callbacks, to allow for other kinds of callbacks. (scheduler-poll-timeout): Don't wait for active fd count to go to zero. (finalize-fd): Avoid mucking with hash tables from this potentially-gc callback. (add-fd-event-waiter): New function. (resume-on-fd-events): Call new function. Andy Wingo2017-02-151-66/+52
* Add epoll-add*!•••* fibers/epoll.scm (epoll-add*!): New function, tries an epoll-modify! then falls back to epoll-add!. Andy Wingo2017-02-151-1/+8
* fibers/config.scm is built source•••* Makefile.am (BUILT_SOURCES): Mark fibers/config.scm as built. Andy Wingo2017-02-151-0/+2