websockets: Initial and not totally working websocket code. * 8sync/contrib/base64.scm: * 8sync/contrib/sha-1.scm: * 8sync/ports.scm: * 8sync/systems/websocket.scm: * 8sync/systems/websocket/client.scm: * 8sync/systems/websocket/frame.scm: * 8sync/systems/websocket/server.scm: * 8sync/systems/websocket/utils.scm: New files. * Makefile.am (SOURCES): Add them.
actors: Don't reply to a message when the messsage doesn't need a reply. * 8sync/actors.scm (<-reply, <-reply*, <-reply-wait, <-reply-wait*): Only reply to messages if they're waiting on a reply still. This avoids the challenges of actors never having requested a reply in the first place resulting in trying to resume a waiting coroutine that doesn't exist, as well as maybe the bonus one of not replying multiple times to a message.
repl: Publish notification about repl updates to subscribers. * 8sync/repl.scm (<repl-manager>): Convert to use define-class. Switch all getters accessors from `repl-manager-' prefix to dot-prefix. Add subscribers slot. Add action handlers for add-subscriber and remove-subscriber. (repl-manager-cleanup, repl-manager-init): Use dot-prefix getters/accessors. (repl-manager-init): Update to inform subscribers after every time we poll the REPL. (repl-manager-add-subscriber, repl-manager-remove-subscriber): New procedures.
web: Rename getters / accessors to use dot prefix. * 8sync/systems/web.scm (<web-server>, .host, .family, .port-num) (.addr, .socket, .http-handler): Rename getters/accessors from web-server- prefix to dot prefix. (web-server-socket-loop, web-server-handle-request, web-server-cleanup): Update callers.
Update copyrights. * 8sync/actors.scm: * 8sync/agenda.scm: * 8sync/debug.scm: * 8sync/repl.scm: * 8sync/systems/irc.scm: * 8sync/systems/web.scm: * Makefile.am: * demos/actors/botherbotherbother.scm: * demos/actors/robotscanner.scm: * demos/actors/simplest-possible.scm: * demos/ircbot.scm: Update copyright lines.
packaging: Updating guix.scm to GPLv3+, setting source to checkout. I talked to Jan Nieuwenhuizen, who agreed to license their contributions to this file under GPLv3+, simplifying the licensing. The rest of 8sync is still LGPLv3+... this just applies to the Guix packaging. We also borrow some code from guile-sdl2 to set our source to be from the package itself, making testing the package from guix.scm easier. * guix.scm: Switch license to GPLv3+. Switch source to be from the local directory, borrowed from guile-sdl2.