Home page CDuce

On this page:

Under this page:

This site is automatically generated by a CDuce program.

Powered by CDuce

Those who will spend their summer in Lisbon or Trondheim may be interested in knowing that Giuseppe Castagna will give a couple of presentations on some aspects of CDuce. In particular:

  • Wed the 13th of July I'll give a talk in Lisbon about the theoretical foundations of the type system of CDuce. See this page for more information.
  • Sun the 29th of August at 9.30 (date to be confirmed) I'll give a talk in Trondheim about the use of CDuce patterns and types for XML query languages. See this page for more info.

You are welcome to peep in.

Thanks to Thomas Petazzoni and Stefano Zacchiroli, CDuce 0.3.2 is now packaged and available in Debian testing. Just do apt-get install cduce.

A preliminary release of an extension of OCaml with CDuce types has been announced a few days ago on the cduce users mailing list. More information on the page .

CDuce is a modern XML-oriented functional language with innovative features. A compiler is available under the terms of an open-source license. CDuce is type-safe, efficient, and offer powerful constructions to work with XML documents.

  • Online documentation.
  • Some examples of CDuce programs.
  • : background information about the design of CDuce.
  • .
  • .
  • .
  • How to get CDuce: download sources, Debian or GODI packages.
  • On-line prototype: try the examples and play with them in your web browser.
  • Interactive demo page (used for the demonstration at PLAN-X 2005), requires a Mozilla-derived browser.

For more information, you can contact info@cduce.org.

The CDuce project is a spin-off of a research effort split amongst two CNRS labs (the Languages group of ENS in Paris and the Databases group of LRI in Orsay), and one INRIA project (the Cristal project).

  • .
  • .
  • .
  • : integrating CDuce features into OCaml.
  • .
  • .
  • An online tool to convert from DTD to CDuce types.
  • .
Design and features

See also:

Our point of view and our guideline for the design of CDuce is that a programming language for XML should take XML types ( DTD, XML Schema, Relax-NG, ...) seriously into account. The benefits are the following:

  • static verifications (e.g.: ensure that a transformation produces a valid document Valid with respect to validity constraints that can be expressed by the type system (thus typically excluding constraints like ID and IDREF). );
  • in particular, we aim at smooth and safe compositions of XML transformations, and incremental programming;
  • static optimizations and efficient execution model (knowing the type of a document is crucial to extract information efficiently).

Some features particular to CDuce:

  • XML objects can be manipulated as first-class citizen values: elements, sequences, tags, characters and strings, attribute sets; sequences of XML elements can be specified by regular expressions, which also apply to characters strings;
  • functions themselves are first-class values, they can be manipulated, stored in data structure, returned by a function,...
  • a powerful pattern matching operation can perform complex extractions from sequences of XML elements;
  • a rich type algebra, with recursive types and arbitrary boolean combinations (union, intersection, complement) allows precise definitions of data structures and XML types; general purpose types and types constructors are taken seriously (products, extensible records, arbitrary precision integers with interval constraints, Unicode characters);
  • polymorphism through a natural notion of subtyping, and overloaded functions with dynamic dispatch;
  • an highly-effective type-driven compilation schema.

CDuce is fast, functional, type-safe, and conforms to basic standards: Unicode, XML, DTD, Namespaces are fully supported, XML Schema is partially supported.

Preliminary benchmarks suggest that despite the overhead for static type verification, a CDuce program can run faster (30% to 60%) than an equivalent XSLT style-sheet (we performed benchmarks with the xsltproc tools from the Gnome libxslt library).

The name CDuce was coined by Francesco Zappa Nardelli.

The starting point of our work on CDuce was the XDuce language developed at the UPenn DB group. Many of CDuce features originate from XDuce. Some of our achievements:

  • integration of first-class and overloaded functions, arbitrary boolean connectives, and extensible (or not) records, to the semantic definition of subtyping;
  • a subtyping algorithm without backtracking;
  • extending pattern matching to capture non consecutive subsequences; removing tail condition for exact matching (they arrived independently to another solution);
  • efficient evaluation model that takes profit of static type information;

Of course, the work on XDuce continued during our, and they developed nice ideas: mixed attribute-element types (same expressive power as our records, but they can sometimes avoid exponential explosion where we cannot); powerful filter operation.

Links

See also:

The W3C page on XML. By Philip Wadler. XDuce home page. The Xtatic Project. The XHaskell language.

Powered by CDuce Valid XHTML 1.0! Valid CSS! ENS Paris 11 CNRS INRIA

Pictures and Logos

See also:

The CDuce and XDuce teams

From left to right: Véronique Benzaken, Haruo Hosoya (pretending to be an X-man), Cédric Miachon, Giuseppe Castagna, Alain Frisch, Marwan Burelle.

The CDuce and XDuce teams
Alain Frisch

It's all about hand-waving.

Giuseppe Castagna

Beppe cannot stay still for a photo.

Giuseppe Castagna

Beppe cannot stay still for a photo.

Feel free to use the following logos on your websites to make reference to CDuce.

CDuce banner
Powered by CDuce
Powered by CDuce