NAME
Flux - stream processing toolkit
VERSION
version 1.02
SYNOPSIS
use Flux::Simple qw( array_in array_out mapper );
my $in = array_in([ 5, 6, 7 ]); $in = $in | mapper { shift() * 2 };
my @result; my $out = array_out(\@result); $out = mapper { shift() * 3 } | mapper { shift() . "x" } | $out;
$out->write($in->read); $out->write($in->read); say for @result;
# Output: # 30x # 36x
DESCRIPTION
Flux is the stream processing framework.
Flux::*
module namespace includes:
groundwork for interoperable input and output stream classes;
various implementations of input and output streams and storages: in-memory, file-based, db-based and others;
tools for making these streams work together nicely: filters, data formatters, overloading syntax sugar, etc;
Flux::Catalog
module for the simple access to your collection of streams.
Flux is a framework, but you can use lower-level parts of it without higher-level parts. For example, you can read and write files with Flux::File
without declaring it in the Flux catalog.
INTERFACE STABILITY NOTICE
This distribution and other Flux-*
distributions on CPAN are the result of the refactoring of our in-house framework.
It should be stable. We used it in production for years. But remember that:
1) I'm rewriting this in Moo/Moose, and there can be bugs.
2) I can refactor some API aspects in the process.
3) Not all of the code is uploaded yet.
SIMILAR MODULES
Message::Passing is similar to Flux. Unlike Flux, it's asynchronous (Flux can be made asynchronous by using Coro, but its basic APIs are blocking). Unlike Flux, it doesn't support persistent data storing; Flux has fault-tolerance built in through explicit commit
.
IO::Pipeline syntax is similar to Flux filters.
I'm sure there're many others. Stream processing is reinvented often.
AUTHOR
Vyacheslav Matyukhin <me@berekuk.ru>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Yandex LLC.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.