First Version of Dendrite Flow-Based Programming System Released
eris
jvburnes at gmail.com
Thu Apr 1 15:38:23 PDT 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:
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
More information about the Digitalmars-d-announce
mailing list