www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - First Version of Dendrite Flow-Based Programming System Released

The 0.9 Release of the D-Based, Flow-Based Programming System has been released.

FBP allows a developer to write simple, cooperative components that exchange 
messages via mailboxes to create pluggable, concurrent, modular applications.

FBP is useful for modeling:
    
    o  Streams
    o  Pipelines
    o  Concurrency
    o  Simulation
    o  Pluggable Workbenches

Dendrite was inspired by various FBP systems including the Unix command shell
and
the Python-based Axon system written by Michael Sparks of BBC Research

Notable Features:

    o  Messages can be any arbitrary object or primitive type
    o  Realtime app reconfiguration is possible because:
        - Components block on send when no destination available
        - When outbox *is* linked, blocked component resumes
    o  Components are Tango Fibers
    o  Since messages are objects, message methods can be called by
       components for pipeline polymorphism.
    o  The Dendrite backplane will also wait-block a component on
        - Read, when no messages waiting
        - Send, when the destination is full
    o  Message handles are moved, not content, so performance
       is relatively good (un-optimized at 12 million int msgs / sec   1Ghz)
    o  Tracing of messages and serialization to stdout can be enabled
    o  Pluggable scheduler
    o  Component Factory can create components by name, from runtime catalog
    o  Includes pluggable reactor OS interface, currently using libev
    o  Includes primitive console and session handlers (used in demo)
    o  Includes basic command line demo and batch capability
    o  Plenty of Room For Improvement (tm)

I'm building Dendrite for my own purposes, but I thought I'd share and see if
anyone else might like to have fun and pitch in.

It's covered by the zlib license, so you can use it for nearly any purpose as
long as you don't claim you wrote the original work.  If Dendrite breaks
(which it will eventually) you can't hold me liable.  That's it.

Please understand this is a first release, so it's a little rough around the
edges.  Extensive unit testing was performed on the original kernel, but was
removed recently in a code refactor.  I'm well aware of its limitations and 
have listed them in the README file.

Your comments and suggestions are, however, welcome.

Full source, including README, build instructions etc are available
at the BitBucket source repository here:

http://bitbucket.org/eris0xaa/dendrite/

BitBucket also supports a per-project Wiki which I'll be using to document
further Dendrite build instructions, use-cases, examples etc.  I'd be more
than happy to welcome anyone who would like to participate.

eris
Apr 01 2010