| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
* Makefile.am (fibers/config.scm): Fix rule.
|
| |
|
|
| |
* Makefile.am ($(GOBJECTS)): Depend on epoll.la.
|
| |
|
|
| |
* Makefile.am (BUILT_SOURCES): Mark fibers/config.scm as built.
|
| |
|
|
|
|
|
|
| |
* fibers.texi (Concurrent Web Server): New section.
* fibers/web/server.scm: Add web server that can run handlers
concurrently.
* examples/concurrent-web-hello.scm: New file.
* Makefile.am (SOURCES): Add (fibers web server).
|
| |
|
|
|
|
|
|
|
| |
* fibers/conditions.scm:
* tests/conditions.scm: New files.
* Makefile.am: Add new files.
* fibers.texi (Conditions): New section.
* fibers/timers.scm (sleep-operation): Rename from wait-operation.
* tests/foreign.scm: Adapt to sleep-operation change.
|
| |
|
|
|
|
|
| |
* fibers/config.scm.in: New file.
* Makefile.am: Wire up new file.
* env.in: Define FIBERS_BUILD_DIR.
* fibers/epoll.scm: Use (fibers config) to get dir for epoll extension.
|
| |
|
|
|
| |
* tests/speedup.scm: New file.
* Makefile.am (TESTS): Add new file.
|
| |
|
|
|
|
|
|
|
|
| |
* tests/foreign.scm: New file.
* Makefile.am: Add new file.
* fibers/operations.scm (perform-operation): Support blocking operations
from foreign threads (without a scheduler).
* fibers/timers.scm (timer-sched, *timer-sched*, timer-operation): Add
support for timeouts that use an auxiliary thread instead of relying
on the current scheduler.
|
| |
|
|
|
|
|
|
|
|
| |
* fibers/stack.scm: New file.
* Makefile.am: Add new file.
* fibers/internal.scm: Rework runqueue to have separate current and next
stacks. We want to expose the current runqueue so that remote
schedulers can steal work, but we also need to know when we flip the
next runqueue to the current runqueue so that we can pull in
additional wakeups from epoll and timers.
|
| |
|
|
|
|
|
|
|
|
| |
* fibers/interrupts.scm: New file.
* fibers/internal.scm (<scheduler>): Remove Hz field and adapt users.
(run-scheduler): Remove preemption; (fibers) handles this now.
(yield-current-fiber): New primitive.
* fibers.scm (run-fibers): Use interrupts module and wrap run-scheduler
in `with-interrupts'.
* Makefile.am: Add new file.
|
| |
|
|
|
| |
* fibers/posix-clocks.scm: New file.
* Makefile.am: Add new file.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile.am: Add new test.
* TODO.md: Remove stale TODO entries.
* fibers.scm (run-fibers): Add #:hz parameter.
* fibers.texi (Design): Mention that we support preemption.
(Using Fibers): Update for preemption.
* fibers/internal.scm (<scheduler>): Add hz field.
(make-scheduler): Add #:hz initarg.
(maybe-preemptive): New helper.
(run-scheduler): Use maybe-preemptive.
* tests/preemption.scm: New test.
|
| |
|
|
|
|
| |
* fibers.scm (spawn-fiber): Fibers inherit dynamic state of parent.
* tests/parameters.scm: New test.
* Makefile.am: Add new file.
|
| |
|
|
|
|
| |
* fibers/deque.scm: Factor out to helper module.
* Makefile.am: Add deque.scm.
* fibers/channels.scm: Use (fibers deque).
|
| |
|
|
|
|
|
| |
* fibers/timers.scm: New file.
* fibers/internal.scm (add-timer!): Take expiry as absolute time.
* fibers.scm (fibers): Re-export sleep from (fibers timers).
* Makefile.am: Adapt.
|
| |
|
|
|
|
|
|
| |
* fibers/operations.scm: New file.
* fibers/channels.scm: Reimplement in terms of operations (CML events).
* tests/basic.scm: Remove channels tests.
* tests/channels.scm: Add channels tests.
* Makefile.am: Update for new files.
|
| | |
|
| |
|
|
|
| |
* fibers/nameset.scm: New file.
* Makefile.am (SOURCES): Add new file.
|
| |
|
|
|
| |
* README.md: Change to markdown.
* Makefile.am: Update.
|
| |\
| |
| | |
Makefile.am: Use $(GUILE) for running tests
|
| | | |
|
| |/
|
|
|
|
|
|
| |
* fibers/psq.scm: New file, imported from Ian Price's PFDS
project (https://github.com/ijp/pfds).
* Makefile.am: Add new file.
* fibers/internal.scm: Use a PSQ for the sleepers set instead of the
list. Fixes N^2 badness, apparently.
|
| |
|
|
|
|
| |
* Makefile.am (TESTS, TESTS_ENVIRONMENT):
* configure.ac: Enable tests.
* tests/basic.scm: Add some tests.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* fibers/internal.scm: New file, factored out of (fibers).
* fibers.scm: Refactor to be just the public interface.
* fibers/channels.scm:
* web/server/fibers.scm:
* examples/memcached-client.scm:
* examples/memcached-server.scm:
* examples/ping-client.scm:
* examples/ping-server.scm: Adapt to interface changes.
* Makefile.am (SOURCES): Add (fibers internal).
|
| |
|
|
|
|
| |
* fibers/channels.scm: New file.
* fibers.scm: Add comment.
* Makefile.am: Add new file.
|
| |
|
|
|
| |
* fibers.texi: New file.
* Makefile.am: Add new file.
|
| |
|
|
|
|
| |
* web/server/fibers.scm: New file.
* examples/web-hello.scm: New file.
* Makefile.am: Build web/server/fibers.go.
|
| |
|
|
|
| |
* fibers.scm: New file.
* Makefile.am: Add new file.
|
| |
|
|
|
|
|
|
|
|
| |
* configure.ac: Add checks for sys/epoll.h, epoll_create, and
epoll_create1.
* epoll.c: New file.
* module/ice-9/epoll.scm: New file.
* module/Makefile.am: Build new files.
* env.in: Add to LTDL_LIBRARY_PATH.
* .gitignore: Add new built products.
|
| |
|