April 01, 2010
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:


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.