8sync.git
3 years agodemos: botherbotherbother: Add missing newline.
Christopher Allan Webber [Fri, 29 Apr 2016 21:50:29 +0000 (16:50 -0500)]
demos: botherbotherbother: Add missing newline.

* demos/actors/botherbotherbother.scm (professor-be-bothered):
  Add missing newline.

3 years agoactors: mlambda, removing require-slot, GOOPS usage cleanup
Christopher Allan Webber [Fri, 29 Apr 2016 21:49:05 +0000 (16:49 -0500)]
actors: mlambda, removing require-slot, GOOPS usage cleanup

mlambda is a new nice sugar for passing in arguments, so add that.
Also, various problems found with GOOPS hackery in Guile 2.2.
Cleaning up.

* 8sync/systems/actors.scm (require-slot): Removed.  Doesn't work with
  Guile 2.2.
  (<actor>): Updated to drop usage of require-slot.
  (mlambda): New procedure allowing automatically pulling out message
  stuff from action method definitions.
  (%expand-action-item): Use mlambda.
  (<hive>): Remove redundant slot definition back to hive.  The actor
  already does this, and not re-supplying the accessor breaks GOOPS
  in Guile 2.2.

3 years agoactors: debug: hive-create-actor-gimmie*'s init should glob arguments.
Christopher Allan Webber [Fri, 29 Apr 2016 16:10:27 +0000 (11:10 -0500)]
actors: debug: hive-create-actor-gimmie*'s init should glob arguments.

* 8sync/systems/actors/debug.scm (hive-create-actor-gimmie*): init should
  grab the rest of the arguments.

3 years agoactors: Handle messages/coroutines in want of reply and errors.
Christopher Allan Webber [Wed, 27 Apr 2016 22:08:34 +0000 (17:08 -0500)]
actors: Handle messages/coroutines in want of reply and errors.

If we call another method and we're "waiting" on a reply, and an error
happens in the other function so that it can't continue, that shouldn't
leave our coroutine hanging around in the waiting-coroutines hashmap
forever.  Instead, we raise it and throw an error warning about that.

(More ideally, we'd like to raise this inside of the send-message type
methods but that seems to cause a SIGABRT.  Yikes!)

* 8sync/systems/actors.scm (hive-reply-with-error): New method.
  (hive-process-message): Update call-catching-coroutine to reply with
  an eror if an uncaught exception happens.
  Update resume-waiting-coroutine to recognize whether the message
  has a '*reply* action or not.  If not, remove the coroutine (we'll
  never get a reply) and throw an error.

3 years agoactors: Remove unnecessary let in hive-process-message.
Christopher Allan Webber [Wed, 27 Apr 2016 19:21:59 +0000 (14:21 -0500)]
actors: Remove unnecessary let in hive-process-message.

* 8sync/systems/actors.scm (hive-process-message): Removed unnecessary let.

3 years agodemos: robotscanner: Use new <- syntax.
Christopher Allan Webber [Wed, 27 Apr 2016 18:15:09 +0000 (13:15 -0500)]
demos: robotscanner: Use new <- syntax.

* demos/actors/robotscanner.scm (<overseer>, <warehouse-room>)
  (<droid>, <security-robot>): Update to using <- style send message
  aliases.

3 years agoactors: debug: Fixing hive-create-actor-gimmie, hive-create-actor-gimmie*.
Christopher Allan Webber [Wed, 27 Apr 2016 18:13:03 +0000 (13:13 -0500)]
actors: debug: Fixing hive-create-actor-gimmie, hive-create-actor-gimmie*.

* 8sync/systems/actors/debug.scm (hive-create-actor-gimmie)
  (hive-create-actor-gimmie*): Fix definitions.

3 years agoactors: Define "<-" type aliases for send-message and friends.
Christopher Allan Webber [Wed, 27 Apr 2016 13:24:28 +0000 (08:24 -0500)]
actors: Define "<-" type aliases for send-message and friends.

* 8sync/systems/actors.scm (<-, <-wait, <-reply, <-reply-wait): Aliases
  for send-message, send-message-wait, reply-message, reply-message-wait
  respectively.

3 years agoactors: Rename hive-bootstrap-message -> bootstrap-message.
Christopher Allan Webber [Wed, 27 Apr 2016 12:16:48 +0000 (07:16 -0500)]
actors: Rename hive-bootstrap-message -> bootstrap-message.

* 8sync/systems/actors.scm (bootstrap-message): Renamed from
  hive-bootstrap-message.
* demos/actors/botherbotherbother.scm (main):
* demos/actors/robotscanner.scm (main):
* demos/actors/simplest-possible.scm (main):
* tests/test-actors.scm: Rename references to bootstrap-message.

3 years agoactors: Remove <hive-proxy>; no longer export actor-hive.
Christopher Allan Webber [Wed, 27 Apr 2016 03:34:00 +0000 (22:34 -0500)]
actors: Remove <hive-proxy>; no longer export actor-hive.

The goal of hive-proxy (in XUDD at least) was to prevent actors from
accessing their hive.  Since we're no longer exporting actor-hive
we've more or less achieved that though.

* 8sync/systems/actors.scm: No longer export actor-hive.
  (<message>): Adjust comment about deferred-reply.
  (<hive-proxy>, <debug-hive-proxy>): Removed.

3 years agoactors: debug: Expose more things via debug
Christopher Allan Webber [Wed, 27 Apr 2016 02:35:10 +0000 (21:35 -0500)]
actors: debug: Expose more things via debug

* 8sync/systems/actors/debug.scm (expose): New macro for easy exposing
  of things not normally exported from the actors module.
  (hive-resolve-local-actor): Switch to use "expose".
  (actor-hive): Expose/export.
  (hive-create-actor-gimmie*): Switch to be a procedure rather than a macro.

3 years agodemos: simplest-possible: Rename main function.
Christopher Allan Webber [Tue, 26 Apr 2016 21:27:57 +0000 (16:27 -0500)]
demos: simplest-possible: Rename main function.

* demos/actors/simplest-possible.scm (main): Renamed from run-demo.

3 years agodemos: simplest-possible: Adjust emo/proog dialogue to match film.
Christopher Allan Webber [Tue, 26 Apr 2016 21:23:06 +0000 (16:23 -0500)]
demos: simplest-possible: Adjust emo/proog dialogue to match film.

* 8sync/systems/actors.scm (<emo>, <proog>): Adjust what the characters say.

3 years agoactors: Switch hive-create-actor[*] to match create-actor[*]
Christopher Allan Webber [Tue, 26 Apr 2016 21:07:12 +0000 (16:07 -0500)]
actors: Switch hive-create-actor[*] to match create-actor[*]

* 8sync/systems/actors.scm (hive-create-actor, hive-create-actor*):
  Adjust syntax to match that of create-actor and create-actor*.
* demos/actors/botherbotherbother.scm (main):
* tests/test-actors.scm: Adjust to use.

3 years agoactors: Switch random-number-size to be 2^128.
Christopher Allan Webber [Tue, 26 Apr 2016 20:58:55 +0000 (15:58 -0500)]
actors: Switch random-number-size to be 2^128.

* 8sync/systems/actors.scm (random-number-size): Switch to 2^128.

3 years agodemos: actors: Update main functions to support arbitrary arguments.
Christopher Allan Webber [Tue, 26 Apr 2016 18:39:52 +0000 (13:39 -0500)]
demos: actors: Update main functions to support arbitrary arguments.

* demos/actors/robotscanner.scm (main):
* demos/actors/simplest-possible.scm (run-demo): Update to take
  arbitrary arguments.  This allows being more easily run by the
  command line.

3 years agoactors: Add debug module with useful utilities. wip-actors
Christopher Allan Webber [Tue, 26 Apr 2016 18:30:11 +0000 (13:30 -0500)]
actors: Add debug module with useful utilities.

* 8sync/systems/actors/debug.scm: New file.
* Makefile.am (SOURCES): Add it.

3 years agobuild: Add actors demos to EXTRA_DIST.
Christopher Allan Webber [Tue, 26 Apr 2016 18:29:47 +0000 (13:29 -0500)]
build: Add actors demos to EXTRA_DIST.

* Makefile.am (EXTRA_DIST): Add the actors demos botherbotherbother,
  simplest-possible, and robotscanner.

3 years agoagenda: Update copyright header.
Christopher Allan Webber [Tue, 26 Apr 2016 18:27:46 +0000 (13:27 -0500)]
agenda: Update copyright header.

* 8sync/agenda.scm: Update copyright header.

3 years agodemos: robotscanner: Add comment explaining what the demo does.
Christopher Allan Webber [Tue, 26 Apr 2016 18:27:05 +0000 (13:27 -0500)]
demos: robotscanner: Add comment explaining what the demo does.

* demos/actors/robotscanner.scm: New toplevel comment.

3 years agodemos: actors: Adding new robotscanner demo.
Christopher Allan Webber [Tue, 26 Apr 2016 18:24:12 +0000 (13:24 -0500)]
demos: actors: Adding new robotscanner demo.

* 8sync/actors/robotscanner.scm: New file.

3 years agoactors: Switch send-message and reply-message to use 8sync-nowait
Christopher Allan Webber [Tue, 26 Apr 2016 17:52:28 +0000 (12:52 -0500)]
actors: Switch send-message and reply-message to use 8sync-nowait

There's no reason to block on continuing our work if using just
send-message and reply-message, so, fix.

* 8sync/systems/actors.scm (send-message, reply-message):
  Switch to using 8sync-nowait instead of 8sync.

3 years agoagenda: Rename 8sync-immediate to 8sync-nowait and fix.
Christopher Allan Webber [Tue, 26 Apr 2016 17:51:08 +0000 (12:51 -0500)]
agenda: Rename 8sync-immediate to 8sync-nowait and fix.

* 8sync/agenda.scm (8sync-nowait): Rename from 8sync-immediate.
  Fix so that it runs (needed to put body in lambda)

3 years agoactors: Fix self-destruct.
Christopher Allan Webber [Tue, 26 Apr 2016 15:46:21 +0000 (10:46 -0500)]
actors: Fix self-destruct.

* 8sync/systems/actors.scm (self-destruct): Fix call to hash-remove!,
  which had the wrong arguments passed to hash-remove!

3 years agoactors: Fix create-actor, create-actor*
Christopher Allan Webber [Tue, 26 Apr 2016 15:11:05 +0000 (10:11 -0500)]
actors: Fix create-actor, create-actor*

* 8sync/systems/actors.scm (create-actor, create-actor*):
  Fixed calls to %hive-create-actor, which were missing the actor class.

3 years agoactors: Add actor creation/destruction methods.
Christopher Allan Webber [Tue, 26 Apr 2016 15:07:52 +0000 (10:07 -0500)]
actors: Add actor creation/destruction methods.

* 8sync/systems/actors.scm (create-actor, create-actor*, self-destruct):
  New procedures.

3 years agotests: actors: Add autoreply tests.
Christopher Allan Webber [Mon, 25 Apr 2016 19:21:00 +0000 (14:21 -0500)]
tests: actors: Add autoreply tests.

* tests/test-actors.scm: Added autoreply tests.
  (%record-out, ~display, ~format): Tools to test the display output
  from tests.
  (<antsy-caller>, <diligent-rep>, <lazy-rep>): New classes for testing
  autoreply tools.

3 years agoactors: Properly autoreply to replies; make reply-message-wait work.
Christopher Allan Webber [Mon, 25 Apr 2016 18:47:29 +0000 (13:47 -0500)]
actors: Properly autoreply to replies; make reply-message-wait work.

* 8sync/systems/actors.scm (hive-process-message): Enable prompt even when
  resuming coroutines.
  Enable autoreply when resuming coroutines.
  (send-message-wait, reply-message-wait): Rename agenda-prompt variable to
  abort-to, which makes more sense.

3 years agoactors: Remove unnecessary "begin".
Christopher Allan Webber [Mon, 25 Apr 2016 18:15:04 +0000 (13:15 -0500)]
actors: Remove unnecessary "begin".

* 8sync/systems/actors.scm (hive-process-message): Remove "begin",
  which was only wrapping one thing.

3 years agoactors: Add autoreply support.
Christopher Allan Webber [Mon, 25 Apr 2016 18:12:11 +0000 (13:12 -0500)]
actors: Add autoreply support.

* 8sync/systems/actors.scm (message-needs-reply): New method.
  (hive-process-message): Add autoreply to process-local-message logic.
  Add comment about maybe clearing out old coroutines.

3 years agoactors: Fix resuming continuation when waiting on message.
Christopher Allan Webber [Mon, 25 Apr 2016 17:51:09 +0000 (12:51 -0500)]
actors: Fix resuming continuation when waiting on message.

Pattern matching was wrong.  Also added an error check.

* 8sync/systems/actors.scm (hive-process-message): Fix pattern match.
  Add error check that we're resuming to the correct actor.

3 years agoactors: Remove nesting of actions in define-simple-actor.
Christopher Allan Webber [Mon, 25 Apr 2016 16:59:31 +0000 (11:59 -0500)]
actors: Remove nesting of actions in define-simple-actor.

* 8sync/systems/actors.scm (define-simple-actor): Move actions out of
  the "final parenthesis".  Simple actors just have a class type and
  then the rest of the arguments are acitons.
* demos/actors/simplest-possible.scm: Remove unnecessary import
  of (ice-9 match).
  (<emo>, <proog>): Adjust to new syntax for define-simple-actor.

3 years agotests: test-agenda: Remove broken shebang.
Christopher Allan Webber [Mon, 25 Apr 2016 16:48:28 +0000 (11:48 -0500)]
tests: test-agenda: Remove broken shebang.

* tests/test-agenda.scm: Removed broken shebang.

3 years agotests: test-actors: Add copyright header.
Christopher Allan Webber [Mon, 25 Apr 2016 16:47:53 +0000 (11:47 -0500)]
tests: test-actors: Add copyright header.

* tests/test-actors.scm: Add copyright header.

3 years agodemos: botherbotherbother: Make executable from command line.
Christopher Allan Webber [Mon, 25 Apr 2016 16:44:55 +0000 (11:44 -0500)]
demos: botherbotherbother: Make executable from command line.

* demos/actors/botherbotherbother.scm: Make executable.
  Add shebang.
  (main): Allow arbitrary arguments from the command line or wherever.

3 years agoactors; Move message definitions earlier in the file.
Christopher Allan Webber [Mon, 25 Apr 2016 16:39:13 +0000 (11:39 -0500)]
actors; Move message definitions earlier in the file.

The original positioning would mean that sometimes the accessors would
break in some of the actor/hive methods.  Defining the messages before
any methods make use of them seems to fix the problem.

* 8sync/systems/actors.scm (<message>, message?, make-message-intern)
  (message-id, message-to message-from, message-action, message-body)
  (message-in-reply-to, message-replied, set-message-replied!)
  (message-deferred-reply, set-message-deferred-reply!, make-message)
  (%nothing-provided, message-ref, kwarg-list-to-alist, send-message)
  (send-message-wait, reply-message, reply-message-wait):
  Moved location to earlier in file.

3 years agotests: actors: Fix test-end in test-actors.scm.
Christopher Allan Webber [Mon, 25 Apr 2016 14:43:14 +0000 (09:43 -0500)]
tests: actors: Fix test-end in test-actors.scm.

* tests/test-actors.scm: Fix test-end, which previously pointed at test-agenda.

3 years agobuild: Add actors.scm to SOURCES
Christopher Allan Webber [Sat, 23 Apr 2016 15:57:45 +0000 (10:57 -0500)]
build: Add actors.scm to SOURCES

* Makefile.am (SOURCES): Add 8sync/systems/actors.scm.

3 years agobuild: Add test-actors.scm to tests.
Christopher Allan Webber [Fri, 22 Apr 2016 19:04:13 +0000 (14:04 -0500)]
build: Add test-actors.scm to tests.

* Makefile.am (TESTS): Add tests/test-actors.scm.

3 years agotests: actors: Test serialization / deserialization of messages
Christopher Allan Webber [Fri, 22 Apr 2016 19:03:18 +0000 (14:03 -0500)]
tests: actors: Test serialization / deserialization of messages

* tests/test-actors.scm: Add message write/read tests.

3 years agoactors: Switch comment header
Christopher Allan Webber [Fri, 22 Apr 2016 16:19:03 +0000 (11:19 -0500)]
actors: Switch comment header

* 8sync/systems/actors: Switch "Convenience procedures" comment header
  to "Basic readers / writers".

3 years agoactors: Fix serialize-message to not use address->string
Christopher Allan Webber [Fri, 22 Apr 2016 15:46:58 +0000 (10:46 -0500)]
actors: Fix serialize-message to not use address->string

If we use address->string, read/write are no longer symmetric.

* 8sync/systems/actors.scm (serialize-message): Switch address
  serialization to not use address->string.

3 years agoactors: Fix export of pprint-message
Christopher Allan Webber [Fri, 22 Apr 2016 15:42:34 +0000 (10:42 -0500)]
actors: Fix export of pprint-message

* 8sync/systems/actors.scm: Fix export.  Previously said pprint-mesage.

3 years agotests: actors: Fix check for a missing key on message-ref
Christopher Allan Webber [Fri, 22 Apr 2016 15:36:03 +0000 (10:36 -0500)]
tests: actors: Fix check for a missing key on message-ref

* tests/test-actors.scm: Update test for message-ref with missing key.
  It used to be that the default was to return #f.
  Now the default is to throw an error if no default provided.

3 years agoactors: message-ref: Throw a better error on missing key
Christopher Allan Webber [Fri, 22 Apr 2016 15:31:25 +0000 (10:31 -0500)]
actors: message-ref: Throw a better error on missing key

* 8sync/systems/actors (message-ref): Throw 'message-missing-key
  on errors now.

3 years agoactors: Export read/write methods on messages.
Christopher Allan Webber [Fri, 22 Apr 2016 15:26:03 +0000 (10:26 -0500)]
actors: Export read/write methods on messages.

* 8sync/systems/actors.scm (serialize-message, write-message)
  (serialize-message-pretty pprint-mesage read-message)
  (read-message-from-string): Export methods.

3 years agoactors: `message-ref' now errors if no dflt provided and key not found
Christopher Allan Webber [Fri, 22 Apr 2016 15:10:27 +0000 (10:10 -0500)]
actors: `message-ref' now errors if no dflt provided and key not found

Thanks to David Thompson for guidance on the best way to construct
%nothing-provided.

* 8sync/systems/actors.scm (message-ref): Adjust to error if no dflt
  provided and key isn't found.
  (%nothing-provided): New unique, immutable value for checking
  if dflt provided to message-ref.

3 years agoactors: New read-message procedures, touch up write-message procedures
Christopher Allan Webber [Fri, 22 Apr 2016 15:03:08 +0000 (10:03 -0500)]
actors: New read-message procedures, touch up write-message procedures

* 8sync/systems/actors.scm (read-message, read-message-from-string):
  New procedures for reading in a serialized message.
  (write-message): Supply a default port (current-output-port) if none
  is provided.
  (serialize-message, serialize-message-pretty): Write out message-wants-reply,
  which we accidentally left out earlier.

3 years agoactors: Switch out address objects for more-easily-serialized cons cells
Christopher Allan Webber [Fri, 22 Apr 2016 14:34:57 +0000 (09:34 -0500)]
actors: Switch out address objects for more-easily-serialized cons cells

This is maybe temporary.  If we ever have canonical sexps as the
general serialization format, or something like that, we might revert
to a nicer structure.

* 8sync/systems/actors.scm (<address>): Commented out.

3 years agoactors: Added docstrings to some message write procedures
Christopher Allan Webber [Fri, 22 Apr 2016 14:24:44 +0000 (09:24 -0500)]
actors: Added docstrings to some message write procedures

* 8sync/systems/actors.scm (write-message, serialize-message-pretty)
  (pprint-message): Add docstrings.

3 years agoactors: Write/pretty-print procedures for messages
Christopher Allan Webber [Fri, 22 Apr 2016 14:17:44 +0000 (09:17 -0500)]
actors: Write/pretty-print procedures for messages

* 8sync/systems/actors.scm (serialize-message, write-message):
  New procedures for writing out messages.
  (serialize-message-pretty, pprint-message): New procedures
  for pretty printing.
  (<address>): Update printer to look a little bit nicer.

3 years agoactors: Rename function deferred-reply -> message-deferred-reply
Christopher Allan Webber [Fri, 22 Apr 2016 13:47:59 +0000 (08:47 -0500)]
actors: Rename function deferred-reply -> message-deferred-reply

* 8sync/systems/actors.scm (deferred-reply, message-deferred-reply):
  Renamed former to latter.

3 years agotests: test-actors: Start testing the actor model
Christopher Allan Webber [Fri, 22 Apr 2016 03:46:59 +0000 (22:46 -0500)]
tests: test-actors: Start testing the actor model

There's not much here yet.

* tests/test-actors.scm: New file.

3 years agodemos: actors: A couple of simple actor model demos.
Christopher Allan Webber [Fri, 22 Apr 2016 03:44:47 +0000 (22:44 -0500)]
demos: actors: A couple of simple actor model demos.

* demos/actors/simplest-possible.scm: New file.
  Simplest possible demo: Two actors say hello to each other.
* demos/actors/botherbotherbother.scm: New file.
  A little bit more complex; multiple actors interact with each
  other.  Ensures that actors don't clobber each other unexpectedly.

3 years agosystems: actors: New actor model system.
Christopher Allan Webber [Sat, 16 Apr 2016 22:17:28 +0000 (17:17 -0500)]
systems: actors: New actor model system.

* 8sync/systems/actors.scm: New file, containing actor model system.

3 years agoagenda: Make agendas run with "easier" default arguments
Christopher Allan Webber [Sun, 24 Apr 2016 19:18:56 +0000 (14:18 -0500)]
agenda: Make agendas run with "easier" default arguments

* 8sync/agenda.scm (make-agenda): Set #:pre-unwind-handler to
  print-error-and-continue.  This makes it so that by default,
  exceptions get printed to the shell in which the agenda was spawned.
  (start-agenda): Set #:stop-condition to stop-on-nothing-to-do.  This
  is a bit heavier than maybe desirable but is a good "default" stop
  condition, and prevents the agenda from entering into a busy-loop
  when computation has finished.

3 years agobuild: Ignore .sig, .directive, .asc files.
Christopher Allan Webber [Fri, 22 Apr 2016 22:13:25 +0000 (17:13 -0500)]
build: Ignore .sig, .directive, .asc files.

* .gitignore: Add ignore rules for .sig, .directive, .asc files.

3 years agobuild: Bump version number. v0.1.0
Christopher Allan Webber [Fri, 22 Apr 2016 19:34:13 +0000 (14:34 -0500)]
build: Bump version number.

* configure.ac: Change version to 0.1.0.

3 years agoREADME: Mention COPYING
Christopher Allan Webber [Fri, 22 Apr 2016 19:31:47 +0000 (14:31 -0500)]
README: Mention COPYING

* README: Mention COPYING file.

3 years agoMention INSTALL in the README file.
Christopher Allan Webber [Fri, 15 Apr 2016 18:15:25 +0000 (13:15 -0500)]
Mention INSTALL in the README file.

* README: Mention INSTALL file.

3 years agoAdd generic GNU style INSTALL file
Christopher Allan Webber [Fri, 15 Apr 2016 18:14:48 +0000 (13:14 -0500)]
Add generic GNU style INSTALL file

* INSTALL: New file.

3 years agoMove README.md to README
Christopher Allan Webber [Fri, 15 Apr 2016 18:14:14 +0000 (13:14 -0500)]
Move README.md to README

* README: Renamed from README.md.

3 years agobuild: Add COPYING-gplv3 to EXTRA_DIST
Christopher Allan Webber [Fri, 15 Apr 2016 18:09:16 +0000 (13:09 -0500)]
build: Add COPYING-gplv3 to EXTRA_DIST

* Makefile.am (EXTRA_DIST): add COPYING-GPLv3.txt

3 years agoUpdate %8sync -> 8sync in NEWS and README.md
Christopher Allan Webber [Fri, 15 Apr 2016 15:20:33 +0000 (10:20 -0500)]
Update %8sync -> 8sync in NEWS and README.md

* NEWS:
* README.md: Update references from %8sync -> 8sync.

3 years agoagenda: Rename %8sync (and %8sync-*) to 8sync (and 8sync-*)
Christopher Allan Webber [Fri, 15 Apr 2016 15:05:02 +0000 (10:05 -0500)]
agenda: Rename %8sync (and %8sync-*) to 8sync (and 8sync-*)

* 8sync/agenda.scm (%8sync, %8sync-delay, %8sync-run, %8sync-run-at)
  (%8sync-run-delay, %8sync-port, %8sync-port-remove, catch-%8sync):
  Rename, removing % sign.  Rename all references to other %8sync-foo
  in definitions and comments as well.
  (catch-8sync): Removed aliased version.
  (make-async-request, setup-async-request): Rename references of
  %8sync-foo to 8sync-foo.

* 8sync/systems/irc.scm (make-basic-irc-handler):
* 8sync/systems/web.scm (receive-http-conn):
* tests/test-agenda.scm: Rename all %8sync-foo to 8sync-foo.

3 years agosystems: web: Re-enable co-op repl with simple http server
Christopher Allan Webber [Thu, 14 Apr 2016 22:03:53 +0000 (17:03 -0500)]
systems: web: Re-enable co-op repl with simple http server

* 8sync/systems/web.scm (run-simple-webserver): Uncomment enabling
  the coop-repl.

3 years agodoc: Add scaffolding for new chapters
Christopher Allan Webber [Sat, 9 Apr 2016 18:48:49 +0000 (13:48 -0500)]
doc: Add scaffolding for new chapters

* doc/8sync.texi (Installation, Getting started, API Reference, Contributing):
  New chapter scaffolding added.

3 years agoAdd guix package.
Jan Nieuwenhuizen [Tue, 1 Mar 2016 07:10:59 +0000 (08:10 +0100)]
Add guix package.

* package.scm: New file.

3 years agoUpdate texinfo menus so that info documentation builds.
Jan Nieuwenhuizen [Mon, 29 Feb 2016 18:38:44 +0000 (19:38 +0100)]
Update texinfo menus so that info documentation builds.

* 8sync.texi: Run texinfo-all-menus-update.

3 years agoPut in a warning that 8sync has an unstable API.
Christopher Allan Webber [Wed, 10 Feb 2016 00:38:29 +0000 (16:38 -0800)]
Put in a warning that 8sync has an unstable API.

* README.md: New text.

3 years agoWe're GNU 8sync now!
Christopher Allan Webber [Wed, 10 Feb 2016 00:31:07 +0000 (16:31 -0800)]
We're GNU 8sync now!

* README.md: Updated text to reflect GNU status

3 years agodoc: More tweaks to the comments on copyleft section
Christopher Allan Webber [Wed, 30 Dec 2015 17:04:28 +0000 (11:04 -0600)]
doc: More tweaks to the comments on copyleft section

* doc/8sync.texi: Tweaked documentation and added a new paragraph

3 years agodoc:Updating indentation for consistency
Christopher Allan Webber [Fri, 18 Dec 2015 16:21:44 +0000 (10:21 -0600)]
doc:Updating indentation for consistency

doc/8sync.texi: Minor indentation tweak.

3 years agodoc: Removing a sentence which made things tricky
Christopher Allan Webber [Fri, 18 Dec 2015 16:21:16 +0000 (10:21 -0600)]
doc: Removing a sentence which made things tricky

doc/8sync.texi: Removed text.

3 years agoAlso mention requirement of permitting linking to modified versions of 8sync
Christopher Allan Webber [Fri, 18 Dec 2015 16:15:34 +0000 (10:15 -0600)]
Also mention requirement of permitting linking to modified versions of 8sync

* doc/8sync.texi: New text in 8sync license section.

3 years agoReformatting documentation for easier revision control handling
Christopher Allan Webber [Fri, 18 Dec 2015 16:10:11 +0000 (10:10 -0600)]
Reformatting documentation for easier revision control handling

See also:
  http://dustycloud.org/blog/vcs-friendly-patchable-document-line-wrapping/

* doc/8sync.texi: Reformatting/indenting text

3 years agodoc: Add section: "8sync's license and general comments on copyleft"
Christopher Allan Webber [Thu, 17 Dec 2015 15:48:23 +0000 (09:48 -0600)]
doc: Add section: "8sync's license and general comments on copyleft"

* doc/8sync.texi: New section.

3 years agoAdding absolute basic webdev environment
Christopher Allan Webber [Sat, 12 Dec 2015 02:10:30 +0000 (20:10 -0600)]
Adding absolute basic webdev environment

Incomplete, but running

* 8sync/system/web.scm: New file
* demos/hello-web.scm: New demo file
* Makefile.am: Adding files

3 years agoReturn a value to the continuations from various %8sync-* calls
Christopher Allan Webber [Sat, 12 Dec 2015 02:03:53 +0000 (20:03 -0600)]
Return a value to the continuations from various %8sync-* calls

Just doing (kont) would result in an error at times.

* 8sync/agenda.scm (%8sync-port, %8sync-port-remove, %8sync-immediate):
  Updated with fix.

3 years agoSwitch from (%8sync (%run)) to just (%8sync) or (%8sync-run)
Christopher Allan Webber [Sat, 12 Dec 2015 00:41:15 +0000 (18:41 -0600)]
Switch from (%8sync (%run)) to just (%8sync) or (%8sync-run)

This is a major overhaul inspired by the fact that (%8sync-port) never
worked (or at least not since error propagation), because the error
resolution code in (%8sync) was specific to (%run).

* 8sync/agenda.scm (%run, %run-at, %run-delay, %port-request)
  (%port-remove-request): Removed variables.
  (%8sync, %8sync-run, %8sync-run-at, %8sync-run-delay)
  (%8sync-port, %8sync-port-remove): Updated to new pattern.
  (%run-with-return, %8sync-immediate): Rename.
* 8sync/systems/irc.scm (make-basic-irc-handler):
  Update from %8sync-run to %8sync
* tests/test-agenda.scm (run-in-fake-agenda): new helper macro
  (test-%run-and-friends): Updated to work with run-in-fake-agenda,
    and upated several calls
  (talk-about-the-zoo, indirection-remote-func-breaks): Updated

4 years agoFix %port-request and %port-remove-request
Christopher Allan Webber [Mon, 7 Dec 2015 03:01:51 +0000 (21:01 -0600)]
Fix %port-request and %port-remove-request

Both of these need to have their continuation wrapped with (wrap).
I'm honestly a bit fuzzy on why this fixes things but it does.

* 8sync/agenda.scm (%port-request, %port-remove-request):
  Adjusted to wrap kont with `wrap' macro.

4 years agoagenda: Various %port-foo enhancements
Christopher Allan Webber [Mon, 7 Dec 2015 00:26:09 +0000 (18:26 -0600)]
agenda: Various %port-foo enhancements

Export port-remove stuff, add %8sync-port-remove, and fix
%port-request and %port-remove-request

* 8sync/agenda.scm (%8sync-port-remove): new variable
  (%port-remove-request, %8sync-port-remove): exported
  (%port-request, %port-remove-request): Fixed calls to make-run-request

4 years agoFail configure when GUILE_PROGS cannot be found
Mike Gerwitz [Thu, 3 Dec 2015 02:51:41 +0000 (21:51 -0500)]
Fail configure when GUILE_PROGS cannot be found

Available in $prefix/share/aclocal/guile.m4

4 years agoirc: shut down properly when the server does too
Christopher Allan Webber [Tue, 1 Dec 2015 15:36:08 +0000 (09:36 -0600)]
irc: shut down properly when the server does too

Formerly things would busyloop on irc disconnect; changed to prevent
that situation.

* 8sync/systems/irc.scm (make-basic-irc-handler): remove ports
  and don't break when the connection closes.

4 years agoPort removal, stop-on-nothing-to-do, and select when sleeping
Christopher Allan Webber [Tue, 1 Dec 2015 15:31:49 +0000 (09:31 -0600)]
Port removal, stop-on-nothing-to-do, and select when sleeping

The aligned goal here is to allow for removing ports, not busy-looping
when there's no ports but something to wait on, and allow for stopping
when nothing is remaining.  Accomplishing the latter requires all
of the former.

* 8sync/agenda.scm (<make-port-request>, make-port-remove-request)
  (port-remove-request port-remove-request?, stop-on-nothing-to-do):
  New variables.

  (update-agenda-from-select!): Sleep (via select, currently) when
  there's no ports in the queue but we still have things scheduled.

  (start-agenda): New comments

4 years agoAdd <port-remove-request> and friends
Christopher Allan Webber [Tue, 1 Dec 2015 04:59:51 +0000 (22:59 -0600)]
Add <port-remove-request> and friends

* 8sync/agenda.scm (<port-remove-request>, make-port-remove-request)
  (port-remove-request?, port-remove-request-port, port-remove-request)
  (%port-remove-request, agenda-handle-port-remove-request!): New variables
* 8sync/agenda.scm (%port-request): Original syntax of this probably
  never worked; fixed.
* 8sync/agenda.scm (agenda-run-once): Updated for port-remove-request

4 years agoSwitch irc.scm to use %8sync-run
Christopher Allan Webber [Tue, 1 Dec 2015 03:59:52 +0000 (21:59 -0600)]
Switch irc.scm to use %8sync-run

* 8sync/systems/irc.scm (make-basic-irc-handler): Update to use %8sync-run

4 years agotests: update to use make-q* instead of manually mutating a queue
Christopher Allan Webber [Tue, 1 Dec 2015 00:18:08 +0000 (18:18 -0600)]
tests: update to use make-q* instead of manually mutating a queue

* tests/test-agenda.scm: Adjust agenda queue calls to use (make-q*)

4 years agodoc: 8sync code *does* use coroutines, but not generator style
Christopher Allan Webber [Sun, 29 Nov 2015 19:45:08 +0000 (13:45 -0600)]
doc: 8sync code *does* use coroutines, but not generator style

* doc/8sync.texi: Make several clarifications between generator style
  coroutines and 8sync delimited continuation style, and clarify that
  8sync style *are* coroutines.

4 years agoFix tests to check for equality
Christopher Allan Webber [Sun, 29 Nov 2015 18:17:33 +0000 (12:17 -0600)]
Fix tests to check for equality

* tests/test-agenda.scm: Tests were checking for test-assert
  where they should have been checking for test-equal.

4 years agoMake use of %8sync-run in tests
Christopher Allan Webber [Sun, 29 Nov 2015 18:15:48 +0000 (12:15 -0600)]
Make use of %8sync-run in tests

* tests/test-agenda.scm (local-func-gets-break):
  Switched from `(%8sync (run foo))' to `(%8sync-run foo)'

4 years agoAdd %8sync-run sugar and friends
Christopher Allan Webber [Sun, 29 Nov 2015 18:14:51 +0000 (12:14 -0600)]
Add %8sync-run sugar and friends

* 8sync/agenda.scm (%8sync-run, %8sync-run-at): New variables
  (%8sync-run-delay, %8sync-port): New variables

4 years agoAdded a TODO for myself to write (%run-immediately)
Christopher Allan Webber [Sun, 29 Nov 2015 18:06:39 +0000 (12:06 -0600)]
Added a TODO for myself to write (%run-immediately)

8sync/agenda.scm: new comment

4 years agobuild: Add demos/run-demo.sh and demos/ircbot.scm to EXTRA_DIST
Christopher Allan Webber [Sun, 29 Nov 2015 17:51:53 +0000 (11:51 -0600)]
build: Add demos/run-demo.sh and demos/ircbot.scm to EXTRA_DIST

* Makefile.am (EXTRA_DIST): Added `demos/run_demo.sh' and `demos/ircbot.scm'

4 years agoAdd ./run-demo.sh script
Christopher Allan Webber [Sun, 29 Nov 2015 17:50:31 +0000 (11:50 -0600)]
Add ./run-demo.sh script

This script lets you run demos in this directory no matter where
`guile' is installed on your system.

* demos/run-demo.sh: New file

4 years agoRenaming `eightsync' to `8sync' everywhere in the code
Christopher Allan Webber [Sun, 29 Nov 2015 16:32:04 +0000 (10:32 -0600)]
Renaming `eightsync' to `8sync' everywhere in the code

* eightsync/agenda.scm, 8sync/agenda.scm: Renamed
* eightsync/repl.scm, 8sync/repl.scm: Renamed
* eightsync/systems/irc.scm, 8sync/systems/irc.scm: Renamed
* demos/ircbot.scm: Changed module import to 8sync
* tests/test-agenda.scm: Changed module import to 8sync
* Makefile.am: Updated to reference new file naming

4 years agodoc: Filled out Introduction and Acknowledgement sections
Christopher Allan Webber [Sun, 29 Nov 2015 16:12:47 +0000 (10:12 -0600)]
doc: Filled out Introduction and Acknowledgement sections

* doc/8sync.texi: Updated docs

4 years agoUpdating copyright headers to be more "modern"
Christopher Allan Webber [Sun, 29 Nov 2015 15:20:23 +0000 (09:20 -0600)]
Updating copyright headers to be more "modern"

In other words, change from physical addresses to retrieve licenses to
HTTP URIs.

* demos/ircbot.scm: Updated header
* eightsync/agenda.scm: Updated header
* eightsync/repl.scm: Updated header
* eightsync/systems/irc.scm: Updated header
* tests/test-agenda.scm: Updated header
* tests/utils.scm: Updated header

4 years agodoc: Adding clarification of dual license under LGPLv3+
Christopher Allan Webber [Sun, 29 Nov 2015 15:08:44 +0000 (09:08 -0600)]
doc: Adding clarification of dual license under LGPLv3+

* doc/8sync.texi: Add clarification

4 years agoSuccessfully build doc/8sync.texi skeleton manual
Christopher Allan Webber [Sun, 29 Nov 2015 15:04:12 +0000 (09:04 -0600)]
Successfully build doc/8sync.texi skeleton manual

* doc/Makefile.am: Removed file
* Makefile.am: Added commands to build texinfo files
  (info_TEXINFOS, 8sync_TEXINFOS, dvi-local): New variables.
* .gitignore: Ignore *.info and texinfo.tex files
* doc/8sync.texi: Fixed @ escaping and removed unused `@end'