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!