| Commit message (Collapse) | Author | Age | Files | Lines |
| |\
| |
| | |
Substitute @math for @sub, typo fixes
|
| |/ |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
| |
* fibers/conditions.scm:
* fibers/stack.scm: Update copyright headers.
|
| |
|
|
|
|
|
| |
`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.
|
| |
|
|
| |
* fibers.texi: Removing previous timing output.
|
| | |
|
| | |
|
| |
|
|
| |
This takes the load off of each fiber and speeds things up.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
* 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.
|
| |\
| |
| | |
Document signal-condition!
|
| |/
|
|
| |
* fibers.texi (Conditions): Document signal-condition!
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
* benchmarks/scale-bench: New file.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
* configure.ac: Bump version.
|
| |
|
|
| |
* Makefile.am (fibers/config.scm): Fix rule.
|
| |
|
|
| |
* fibers.texi: Update for 1.0.0.
|
| |
|
|
| |
* .gitignore: Add fibers/config.scm.
|
| |
|
|
| |
* fibers.texi: Update examples and example timings.
|
| |
|
|
|
|
|
| |
* examples/memcached-client.scm:
* examples/memcached-server.scm:
* examples/ping-client.scm:
* examples/ping-server.scm: Update for newest run-fibers.
|
| |
|
|
|
|
| |
* fibers/operations.scm (perform-operation): Block asyncs in resume
callback; otherwise the fiber doing the resuming could be scheduled
away.
|
| |
|
|
| |
* web/server/fibers.scm: Update for new-style nonblocking management.
|
| |
|
|
| |
* tests/channels.scm (pingpong): New test.
|
| |
|
|
| |
* fibers/operations.scm: Use (ice-9 threads).
|
| |
|
|
|
|
| |
* fibers/epoll.scm (epoll): Like a complete idiot, I broke epoll
wakeup. Fixed by calling expiry->timeout while epoll-state is
waiting.
|
| |
|
|
| |
* fibers/repl.scm (fibers): Update for new run-fibers changes.
|
| |
|
|
| |
* fibers.texi (Internals): Document scheduler-work-pending?.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| |
|
|
| |
* Makefile.am ($(GOBJECTS)): Depend on epoll.la.
|
| |
|
|
| |
* fibers.texi: Bump version and date. Add words about scalability.
|
| |
|
|
| |
* README.md (Download): Update required Guile version.
|
| |
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
|
| |
* 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.
|
| |
|
|
| |
* tests/speedup.scm: Add allocation speedup test.
|
| |
|
|
|
| |
* fibers/web/server.scm (client-loop): Setvbuf here.
(socket-loop): Use new accept4 interface.
|
| |
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
* fibers/epoll.scm (epoll-add*!): New function, tries an epoll-modify!
then falls back to epoll-add!.
|
| |
|
|
| |
* Makefile.am (BUILT_SOURCES): Mark fibers/config.scm as built.
|