Dryverl - Home Page

The Dryverl Project

Dryverl logo


Dryverl is an Erlang-to-C binding “assembly language”. An Erlang-to-C binding is a set of Erlang functions in an Erlang module, which implementations are in C. Dryverl lets you specify and control in details all the steps of a Erlang-to-C function call, while hiding implementation details and making it much easier to implement a binding than writing it by hand. The Dryverl “compiler” is implemented as a set of XSLT stylesheets that generate the Erlang and C source code that implements a binding, given a specification of the binding in the Dryverl XML language. The two objectives of Dryverl are:

  • to provide a maximum flexibility for the specification of bindings;
  • to generate the most efficient binding implementations possible.

For instance, Dryverl currently generates implementations of bindings in the form of Erlang C port drivers, i.e. as dynamic libraries that are loaded and linked at runtime to the Erlang emulator, since this is the most efficient way to implement bindings in Erlang. However, other forms of bindings (C port programs and C nodes) will be supported in the future: any form of binding implementation can be generated from a Dryverl binding specification, since the Dryverl language is independent from such implementation details.

The project workplan gives the big picture of Dryverl's design and future directions.

Dryverl is the continuation of a previous project from Scott Lystig Fritchie: EDTK (Erlang Driver Toolkit) 1.1. Although Dryverl reuses many ideas from EDTK, Dryverl is a complete rewrite of EDTK to meet different objectives, as detailed in the comparison between Dryverl and EDTK 1.1.

The Dryverl XML language is extensively specified and documented in the Dryverl XML Schema. Read the documentation for getting started with Dryverl.

Feedback and contributions

We appreciate any form of feedback about Dryverl. Bug reports and patches are especially welcome.

Copyright © 1999-2005, ObjectWeb Consortium | contact | webmaster | Last modified at 2008-01-26T10:18+09:00