Abstract: Alternativtitel vielleicht sowas wie: AnyEvent: IPv6, DNS, SSL -
transparent und non-blocking - und das ist erst der Anfang
AnyEvent gab es schon vor einem Jahr, und versprach für Modulautoren
die Möglichkeit, Ereignissteuerung unabhängig von der verwendeten
Ereignisbibliothek (Glib, Tk, POE etc.) zu ermöglichen.
Seither hat sich einiges getan - den eigentlichen schlanken, pure-perl
AnyEvent-Kernel ohne externe Abhhängikeiten gibt es immer noch, jedoch
sind eine ganze menge Module dazugekommen:
AnyEvent::Util für portable Programmierung (mit vielen Win32-hacks :);
AnyEvent::Socket für extrem einfache Socket-Programmierung (tcp-,
sctp-
und ipv6-verbindungungen mit ein und demselben aufruf, natürlich unter
beachtung von SRV-records); AnyEvent::DNS - ein 100% non-blocking DNS
Resolver; AnyEvent::Handle - non-blocking socket/pipe/... und formatted
I/O
mit transparentem TLS/SSL support; und natürlich jede Menge
Hilfsfunktionen
damit man das ganze bequem nutzen kann, z.b. AnyEvent::Strict, daß
optional
parameter und callbacks auf gültigkeit überprüft.
Auch außerhalb der AnyEvent-Distribution hat sich einiges getan - es
gibt inzwischen jede Menge weitere Module auf CPAN - grundlegendes
wie AnyEvent::HTTP und AnyEvent::IRC, aber auch exoitischeres wie
AnyEvent::GPSD, AnyEvent::CouchDB, AnyEvent::AIO, AnyEvent::FastPing
uvm.
Der Vortrag erläutert kurz die grundlegende Funktionalität von
AnyEvent
und weshalb sie sich so viel besser für Module eignet als andere
Monokulturen, zeigt anhand von Benchmarks wie groß (bzw. klein) der
Overhead von AnyEvent ist, aber auch, wie performant die diversen
Backends
sind - vom superschnellen EV bis hin zum quälend langsamen POE - und
wie
gut die Pure-Perl-Event-Implementation abschneidet, gibt einen
Überblick über
die Socket-Funktionalität und endet mit einem kleinen Überblick über
weitere
CPAN-Module, die AnyEvent unterstützen oder es einfach nur benutzen
und damit
kompatibler mit dem Rest der Welt sind.