Downloading

The latest development version is located in the Boost sandbox. Released versions are located in the Boost Vault.

The Dataflow library has been tested using a recent version of the Boost trunk, as well as the 1.35 release. Tests and examples have been built successfuly on OS X (GCC 4.0, 4.2), Linux (GCC 4.2), and Windows (MSVC 8.0 and to some degree MinGW GCC 4.2).

Version 0.9.1 [available in the Boost vault]

  • Generic Dataflow layer
    • binary operations now propagate the return value
  • Dataflow.Signals
    • connect now returns the signals::connection object
    • added tracking_call_consumer example
    • added a GUI example using GLV
  • Added new Dataflow.Managed framework
    • added a gui example using GLV

Short term to-do list:

  • keep working on docs, tests
  • default mechanisms for operations should be specified by the framework Tag
  • propagate return values where they should be propagated
  • Key used for KeyedPorts should be overridable (not always the PortTraits)
  • binary_operation should take two Tag parameters
  • add support for cross-framework operations (tag_adapter?)
  • make dispatching possible on other than just the PortTraits
  • port_adapter should be renamed to adapter
  • Invocable should be a part of UnaryOperable

See the future_work section for more information on what is planned.

Version 0.9.0

Version 0.8.1

  • Started the Dataflow.Blueprint layer (runtime reflection and network modeling).
  • Expanding the Component concept (compile-time reflection of ports).
  • VTK example Jamfile now works work with Windows (not just Darwin+X11 VTK).
  • Provided an example using Boost.GIL.
  • The Mechanism concept is now limited to port-related operations. In the future, an additional tag template parameter might be added to all dataflow templates to allow specifying completely independent dataflow support layers over the same types (the original intent of the Mechanism parameter).

Version 0.8.0

  • post-GSoC version
  • generic dataflow support layer with tests and examples
  • Dataflow.Signals layer (fusion-based implementation) with tests and examples
  • VTK example
  • quickbook docs

Building

The library comes with Boost.Build Jamfiles for all examples, tests, and docs. As long as your BOOST_ROOT environment variable is set, you should be able to build each one of those by going to the appropriate directory and running bjam.

Warning

The Jamfile for the VTK examples currently only works for Darwin with VTK built for X11, and for MSVC.

The library itself is header only, and requires no linking. However, parts of it depend on boost libraries which do need to be built and linked (see the linking information below).

Linking

The generic Dataflow support layer is header-only, and relies only on other Boost header-only libraries.

The Dataflow.Signals layer is dependent on the Boost.Signals library, which must be built and linked. A few of the components ( socket_sender and socket_receiver) are also dependent on Boost.Asio, which depends on the System library which must also be built and linked. A few other components ( mutex and condition) are dependent on Boost.Thread, which has to be linked as well.

The VTK example requires VTK, and the GUI dataflow editor example requires FLTK2.