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.