summaryrefslogtreecommitdiff
path: root/Makefile.am (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Garbage collect synchronized items from channels put/get queues.Christopher Allan Webber2017-08-101-0/+1
| | | | | | | | | | | | | * 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.
* Rebase fibers on top of schedulers and tasksAndy Wingo2017-08-061-1/+1
| | | | | | | | | | 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.
* Fix fibers/config.scm ruleAndy Wingo2017-02-201-0/+1
| | | | * Makefile.am (fibers/config.scm): Fix rule.
* Fix make -j problemAndy Wingo2017-02-191-0/+1
| | | | * Makefile.am ($(GOBJECTS)): Depend on epoll.la.
* fibers/config.scm is built sourceAndy Wingo2017-02-151-0/+2
| | | | * Makefile.am (BUILT_SOURCES): Mark fibers/config.scm as built.
* Add concurrent web serverAndy Wingo2017-02-111-0/+1
| | | | | | | | * 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).
* Add condition variable implementationAndy Wingo2017-02-111-0/+2
| | | | | | | | | * 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.
* Better findability for epoll extension.Andy Wingo2017-01-191-0/+8
| | | | | | | * 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.
* Add test for parallel speedup.Andy Wingo2017-01-181-1/+2
| | | | | * tests/speedup.scm: New file. * Makefile.am (TESTS): Add new file.
* Add support for operations from foreign threadsAndy Wingo2017-01-051-0/+1
| | | | | | | | | | * 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.
* Rework runqueue as pair of stacksAndy Wingo2016-12-221-0/+1
| | | | | | | | | | * 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.
* Factor interrupt generation to separate facilityAndy Wingo2016-12-161-0/+1
| | | | | | | | | | * 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.
* Add posix-clocks.scmAndy Wingo2016-12-161-0/+1
| | | | | * fibers/posix-clocks.scm: New file. * Makefile.am: Add new file.
* Add support for preemptionAndy Wingo2016-12-121-1/+2
| | | | | | | | | | | | | * 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 inherit dynamic state of parent.Andy Wingo2016-12-121-1/+2
| | | | | | * fibers.scm (spawn-fiber): Fibers inherit dynamic state of parent. * tests/parameters.scm: New test. * Makefile.am: Add new file.
* Factor out deque implementationAndy Wingo2016-10-111-0/+1
| | | | | | * fibers/deque.scm: Factor out to helper module. * Makefile.am: Add deque.scm. * fibers/channels.scm: Use (fibers deque).
* Timeout CML operationsAndy Wingo2016-10-031-0/+1
| | | | | | | * 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.
* Reimplement in terms of Parallel Concurrent MLAndy Wingo2016-10-031-1/+4
| | | | | | | | * 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.
* Add ,fibers command.Andy Wingo2016-09-201-1/+2
|
* Add nameset to name fibers and schedulersAndy Wingo2016-09-191-0/+1
| | | | | * fibers/nameset.scm: New file. * Makefile.am (SOURCES): Add new file.
* README in markdown formAndy Wingo2016-09-111-0/+2
| | | | | * README.md: Change to markdown. * Makefile.am: Update.
* Merge pull request #3 from codemac/buildfixesAndy Wingo2016-09-111-1/+1
|\ | | | | Makefile.am: Use $(GUILE) for running tests
| * Makefile.am: Use $(GUILE) for running testsJeff Mickey2016-09-081-1/+1
| |
* | Use Ian Price's priority search queuesAndy Wingo2016-09-091-0/+1
|/ | | | | | | | * 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.
* Add testsAndy Wingo2016-09-081-2/+2
| | | | | | * Makefile.am (TESTS, TESTS_ENVIRONMENT): * configure.ac: Enable tests. * tests/basic.scm: Add some tests.
* Separate public and private fibers interfacesAndy Wingo2016-09-071-2/+3
| | | | | | | | | | | | * 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).
* Add channels implementationAndy Wingo2016-09-061-0/+1
| | | | | | * fibers/channels.scm: New file. * fibers.scm: Add comment. * Makefile.am: Add new file.
* Add fibers.texiAndy Wingo2016-09-041-0/+2
| | | | | * fibers.texi: New file. * Makefile.am: Add new file.
* Add fibers-based web server implementationv0.1.0Andy Wingo2016-07-031-1/+2
| | | | | | * web/server/fibers.scm: New file. * examples/web-hello.scm: New file. * Makefile.am: Build web/server/fibers.go.
* Add (fibers) moduleAndy Wingo2016-07-031-1/+3
| | | | | * fibers.scm: New file. * Makefile.am: Add new file.
* add (fibers epoll)Andy Wingo2016-07-031-5/+10
| | | | | | | | | | * 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.
* initial commitAndy Wingo2016-07-031-0/+39