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 ("botsnack" (<- (actor-id irc-bot) 'send-line channel "Yippie! *does a dance!*")) ((or "hello" "hello!" "hello." "hi" "hi!") (<- (actor-id irc-bot) 'send-line channel (format #f "Oh hi ~a!" speaker))) (_ (<- (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!