--- web/index.xml 2007/07/10 18:15:50 987 +++ cduce/trunk/web/index.xml 2007/07/11 13:01:15 1956 @@ -1,11 +1,13 @@ - + -Home page +CDuce +

On this page:

@@ -14,44 +16,211 @@
- - - + - - - - + + + + + + + - +

This site is automatically generated +by a CDuce program. +

Powered by CDuce

+
-

CDuce ("seduce") is a new typed functional language with -innovative features.

+ -

Although CDuce is a general programming language, it features -several characteristics that make it adapted to XML documents -manipulation (transformation, extraction of information, creation of -documents). -XML is a syntax to -describe tree-like documents (aka semi-structured data), and XML -documents often come with a description of their type. The type is -expressed in a system like DTD, or -XML Schema. -XML types play a central role in CDuce. -

+

2007, Jun 12th: CDuce 0.5.0 is out!
+See the +page for download information, or the CHANGES +file to know what's new. +

+

+GODI users can simply update their apps-cduce package. +

- +

2007, May 23rd: CDuce 0.4.2 is out!
+See the +page for download information, or the CHANGES +file to know what's new. +

+

+GODI users can simply update their apps-cduce package. +

- -

All pages of this site were automatically generated from an XML description of -the content by the following CDuce program. -

Powered by CDuce

-
+

2007, May 11th: AADL parser in OCaml, with OCamlDuce +
+Erwan Jahier and Louis Mandel used OCamlDuce to implement +AADL4OCaml, +a parser for AADL (Architecture Analysis & Design Language). +

+ +

2006, Nov 24th: SOAP servers in OCaml, with +OCamlDuce +
+Stefan Lampe used OCamlDuce to implement +SOSS, +a SOAP server for OCaml, designed to allow +a service, developed in OCaml, to be made available as a SOAP service +with minimal effort. +

+ + + +
- -

CDuce is modern programming language, adapted to the -manipulation of XML documents. It is developed by the Languages -group of ENS in Paris and the Databases group of LRI in -Orsay, two CNRS labs. -See also the CDuce team page, -our technical papers. -

- -
- -

-If you want more information about CDuce you can send a mail to -info_at_cduce.org (replace _at_ with @), or -to the most appropriate CDuce mailing list. -

- -
- -
-

To get a feeling of CDuce, -you can play with the on-line prototype, -try the examples and modify them. We also have some -larger examples.

- -

We are planning to distribute a stable release in the next -few weeks. To help us prepare this release, you can download a -beta version, and send your comments. -

- -
-
- - -

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. The benefit are the following:

- +

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.

    -
  • 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).
  • +
  • Documentation
  • +
  • Some examples of CDuce programs
  • +
  • : background +information about the design of CDuce
  • +
  • +
  • +
  • +
  • How to get CDuce: download sources, Debian +or GODI packages
-

-Some features particular to CDuce: -

+

Trying CDuce online:

    -
  • 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.
  • +
  • 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.
-

CDuce is fast, functional, -type-safe, and conforms to basic standards: Unicode, XML, DTD, -Namespaces are fully supported, partial support of XML Schema validation is -in alpha testing (and undocumented) while queries are being -implemented. -

-

-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. +For more information, you can contact +info@cduce.org.

- + -

Our plans concerning the design of the core language -include:

-
    -
  • interface with other languages and type systems;
  • -
  • efficient evaluation strategies, high-level optimizations;
  • -
  • a module system to support incremental programming;
  • -
  • parametric polymorphism;
  • -
  • XML-friendly primitives, to mimic XSLT transformations.
  • -
- -

-Apart from the core language design and implementation, -our research projects include: +

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 +Gallium project).

    -
  • integration of a query sub-language into CDuce, using - types as a primary optimization strategy for request evaluation;
  • -
  • study of security (confidentiality, ...) properties in the - setting of XML transformations.
  • +
  • +
  • +
  • : integrating +CDuce features into OCaml
  • +
  • XStream: + streaming for XML transformations
-

-We wrote several technical papers about -the language design and its theoretical foundations. -

- -

- -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;
  • +
  • .
  • +
  • .
  • +
  • .
  • +
  • An online tool to convert from DTD to +CDuce types.
  • +
  • .
-

-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. -

+ + +
+
+ + + +
+ +Google + + + + +
+ + WWW + http://www.cduce.org + +
+
+
+
+
- -
    -
  • +Links + + + The W3C page on XML. -
  • -
  • By Philip Wadler. -
  • -
  • XDuce home page.
  • -
+
+ + XDuce home page. + The Xtatic Project. + The XHaskell language. + +
+-->

@@ -296,7 +403,7 @@ alt="Valid XHTML 1.0!"/> - + Valid CSS! @@ -304,7 +411,7 @@ ENS @@ -316,13 +423,15 @@ CNRS -

-

-Webmaster - -Site map + +INRIA + +