What's 8sync?
8sync (pronounced "eight-sync") is an asynchronous programming library for GNU Guile. Based on the actor model, it makes use of delimited continuations to avoid a mess of callbacks resulting in clean, easy to read non-blocking code.
8sync also aims to be batteries included. Ever wanted to make your own IRC bot? Here's a real example taken straight from the tutorial.
(define-class <my-irc-bot> (<irc-bot>))
(define-method (handle-line (irc-bot <my-irc-bot>) message
speaker channel line emote?)
(define my-name (irc-bot-username irc-bot))
(define (looks-like-me? str)
(or (equal? str my-name)
(equal? str (string-concatenate (list my-name ":")))))
(match (string-split line #\space)
(((? looks-like-me? _) action action-args ...)
(match action
;; The classic botsnack!
("botsnack"
(<- (actor-id irc-bot) 'send-line channel
"Yippie! *does a dance!*"))
;; Return greeting
((or "hello" "hello!" "hello." "hi" "hi!")
(<- (actor-id irc-bot) 'send-line channel
(format #f "Oh hi ~a!" speaker)))
;; Default
(_
(<- (actor-id irc-bot) 'send-line channel
"*stupid puppy look*"))))))
8sync is alpha software, but with a promising future. Read more on 8sync's core ideas. Now's a great time to get involved in shaping the future of 8sync. Join us!
Watch 8sync in action through live hacking a multiplayer game! Or watch the FOSDEM edition of this talk!
News!
- 8sync 0.4.2 "FOSDEM Edition" released, plus videos!Sat 18 March 2017
- guile-8sync now available in Guix!Mon 09 January 2017
- 8sync 0.4.1 bugfix releasedSun 08 January 2017
- 8sync 0.4 releasedSun 08 January 2017
- 8sync and Fibers, together at last!Sun 08 January 2017
- 8sync 0.3 releasedMon 19 December 2016
- 8sync 0.2 released, and the future of 8syncMon 05 December 2016
- 8sync participates in the Lisp Game Jam with MudsyncWed 11 May 2016
- 8sync 0.1 releasedFri 22 April 2016
- (display "Hello, World!")Tue 12 April 2016