Adventures in Perl 6 Asynchrony
Events in a user interface. Incoming web requests in a web server, or responses for a web client. File change notifications. Work kicked off to a background thread getting done. Messages arriving from a message queue. What do they all have in common? They've sources of asynchronous data!
Our programming languages have traditionally been good at providing abstractions for synchronous programming. Indeed, subroutines and methods are centered around the notion of making a call and blocking until there's a result. And when there's many values, iterators are a common way of working our way through lines of a file, rows from a database, or pretty much anything else - but again, the caller always blocks until the next value is available.
In Perl 6, we're providing abstractions for asynchronous programming also: the Promise for single results produced asynchronously, and the Supply for streams of results produced asynchronously. These streams can be grepped, mapped, and zipped just like their synchronous cousins - except you're writing a map over data that will arrive in the future!
Join me for a deep dive into asynchronous programming in Perl 6, packed with examples and live demos!
Attended by: Nicholas Clark, steve mynott (itz), Jonathan Worthington (jnthn), osfameron, Thomas Klausner (domm), Dimitar Mitov, Gianni Ceccarelli (dakkar), Denis Kanchev, Paul Cochrane (ptc), Paul Evans (LeoNerd), Wolfgang Schemmel (Perleone), Mike Chamberlain, Mihai Safta (SDCM), Aaron Crane (arc), M W (diakopterXXX), Diego Kuperman (diegok), Elizabeth Mattijsen (liz), Daniel Brunkhorst, Michal Jurosz (mj41), Aristotle, Bernhard Schmalhofer (bernhard), Dagfinn Ilmari Mannsåker (ilmari), Jean-Baptiste Mazon, Radek Kotowicz, Alexander Hartmaier (abraxxa), Veroslav Cenov (gryzli), Herbert Breunung (lichtkind), Vasil Sakarov, Oana Raluca Rusu, Karl Rune Nilsen (krunen), Mihai Pop, Michael Bochkaryov (Rattler), David Schmidt (davewood), Abe Timmerman (abeltje), Ivan Baidakou (basiliscos), Andrew Nugged (nugged), Søren Lund (slu), bugsy, H.Merijn Brand (Tux), David Leadbeater (dg), Sue Spence (virtualsue), John Lightsey (J.D.), Petar Barzakov, Michal Josef Špaček (skim), Marc Egea i Sala (meis), Todor Petkov, Nikolaos-Digenis Karagiannis (Digenis), Thomas Reifenberger, Lukas Mai (mauke), stoian iovchev, Olivier Mengué (dolmen),