Commit 5b298189 authored by Pietro Abate's avatar Pietro Abate
Browse files

[r2003-03-16 21:54:11 by cvscast] Empty log message

Original author: cvscast
Date: 2003-03-16 21:54:11+00:00
parent e7599bbe
......@@ -24,6 +24,10 @@ This page briefly presents preliminary benchmarks on the CDuce prototype.
<main>
<box title="Methodology" link="meth">
<p>
<b>This page is under construction.</b>
</p>
<p>
The benchmarks were performed on a Linux box, Athlon 750, 128 Mb RAM.
</p>
......
......@@ -99,6 +99,14 @@ div.meta {
font-size: 80%;
font-family: sans-serif;
}
div.code {
background: #FFF9BF;
color: #000000;
margin: 4ex 0.5em 0 0.5em;
border: solid 2px #000000;
padding: 1ex;
font-family: sans-serif;
}
@media screen {
body {
background: #fcb333;
......
......@@ -15,6 +15,7 @@
<box>
<ul>
<li><a href="/cgi-bin/cduce">Online demo</a></li>
<li><a href="papers.html">Technical papers and talks</a></li>
<li><a href="team.html">CDuce team</a></li>
<li><a href="plan.html">Site map</a></li>
<li><a href="bench.html">Site map</a></li>
......@@ -24,19 +25,7 @@
<box>
<p> CDuce ("seduce") is a new typed functional language with
innovative features: </p>
<ul>
<li> a rich <b>type algebra</b>, with recursive types and arbitrary
boolean combinations (union, intersection, complement); </li>
<li> a natural notion of <b>subtyping</b>, which allows to use a value
of a given type where a value of a supertype is expected; </li>
<li> <b>overloaded functions</b> with late binding (dynamic dispatch);
</li>
<li> a powerful <b>pattern matching</b> operation, with dynamic
dispatch ontypes and recursive patterns. </li>
</ul>
innovative features.</p>
<p> Although CDuce is a general programming language, it features
several characteristics that make it adapted to XML documents
......@@ -46,35 +35,14 @@ documents).
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
<a href="http://www.w3.org/XML/Schema">XML Schema</a>. </p>
<p> Our point of view and our guideline for the design of CDuce is
that a programming language for XML should take XML types into account
to allow: </p>
<ul>
<li> <b>static verifications</b> of properties for the applications
(for instance, ensuring that a transformation produces a document of
the expected type);</li>
<li> good <b>integration in a general purpose typed programming
language</b>;</li>
<li> static <b>optimizations</b> of applications and storage (knowing
the type of a document seems important to store and extract
information efficiently).</li>
</ul>
</box>
<box>
<p> <b>CDuce</b> is developped by the
<a href="http://www.di.ens.fr/~castagna/EQUIPE"><b>Languages</b></a>
group of ENS in Paris and the
<a href="http://www.lri.fr/bd"><b>Databases</b></a> group of LRI in
Orsay, two <a href="http://www.cnrs.fr">CNRS</a> labs.
<a href="http://www.w3.org/XML/Schema">XML Schema</a>.
XML types play a central role in CDuce.
</p>
</box>
<box>
<p> This page was automatically generated from an XML description of
<p> This site was automatically generated from an XML description of
the content by a CDuce program.
<img src="img/cducepower2.jpg" alt="Powered by CDuce"/></p>
</box>
......@@ -88,7 +56,17 @@ the content by a CDuce program.
<main>
<box title="Give it a try!" link="proto">
<box title="What is CDuce ?" link="whatis">
<p> <b>CDuce</b> is modern programming language, adapted to the
manipulation of XML documents. It is developped by the <a
href="http://www.di.ens.fr/~castagna/EQUIPE"><b>Languages</b></a>
group of ENS in Paris and the <a
href="http://www.lri.fr/bd"><b>Databases</b></a> group of LRI in
Orsay, two <a href="http://www.cnrs.fr">CNRS</a> labs.
See also the <a href="team.html">CDuce team</a> page,
and our <a href="papers.html">technical papers</a>.
</p>
<section title="Online running prototype">
<p> The only available implementation of CDuce is an <a
......@@ -96,214 +74,117 @@ href="cgi-bin/cduce">online prototype</a>. To get a feeling of CDuce,
you can try the examples and play with them, or have a look at this <a
href="memento.html">memento</a> which briefly explains the syntax of
the language. </p>
</section>
<p>We are planning to distribute a first public release in the next
few weeks.</p>
</section>
</box>
<box title="Papers" link="papers">
<section title="Language Description">
<ul>
<box title="Design and features" link="whatis">
<p> 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. We expect the following
benefits:</p>
<li>
<paper file="papers/cduce-wp.ps.gz">
<title>CDuce: a white paper</title>
<author>V. Benzaken</author>
<author>G. Castagna</author>
<author>A. Frisch</author>
<comment>
A preliminary and abriged version of this work was presented at the workshop
<i>PLAN-X: Programming Language Technologies for XML</i>
Pittsburgh PA, Oct. 2002.
</comment>
<abstract> <p> In this paper, we present the functional language CDuce,
discuss some design issues, and show its adequacy for working with
XML documents. Peculiar features of CDuce are a powerful pattern
matching, first class functions, overloaded functions, a very rich
type system (arrows, sequences, pairs, records, intersections,
unions, differences), precise type inference and a natural
interpretation of types as sets of values. We also discuss how to add
constructs for programming XML queries in a declarative (and, thus,
optimizable) way and finally sketch a dispatch algorithm to
demonstrate how static type information can be used in efficient
compilation schemas. </p> </abstract>
</paper>
</li>
<ul>
<li> <b>static verifications</b>
(e.g.: ensure that a transformation produces a valid document);</li>
<li> in particular, we aim at <b>smooth and safe</b> compositions
of XML transformations, and incremental programming;</li>
<li> static <b>optimizations</b> and <b>efficient execution model</b>
(knowing the type of a document is crucial to extract information
efficiently).</li>
</ul>
</section>
<section title="Theoretical foundations">
<p>
Some of CDuce peculiar features:
</p>
<ul>
<li>
<paper file="papers/lics02.ps.gz">
<title>Semantic subtyping</title>
<author>A. Frisch</author>
<author>G. Castagna</author>
<author>V. Benzaken</author>
<comment> In <i>LICS 2002</i>. </comment>
<abstract> <p> Usually subtyping relations are defined either
syntactically by a formal system or semantically by an interpretation
of types in an untyped denotational model. In this work we show how
to define a subtyping relation semantically, for a language whose
<i>operational</i> semantics is <i>driven by types</i>; we consider a
rich type algebra, with product, arrow, recursive, intersection,
union and complement types. Our approach is to "bootstrap" the
subtyping relation through a notion of set-theoretic model <i>of the
type algebra</i>. </p>
<p> The advantages of the semantic approach are manifold. Foremost we
get "for free" many properties (e.g., the transitivity of subtyping)
that, with axiomatized subtyping, would require tedious and error
prone proofs. Equally important is that the semantic approach allows
one to <i>derive</i> complete algorithms for the subtyping relation
or the propagation of types through patterns. As the subtyping
relation has a natural (inasmuch as semantic) interpretation, the
type system can give informative error messages when static
type-checking fails. Last but not least the approach has an immediate
impact in the definition <i>and the implementation</i> of languages
manipulating XML documents, as this was our original motivation.
</p> </abstract>
</paper>
</li>
<li>
<paper file="papers/itrs02.ps.gz">
<title>The Relevance of Semantic Subtyping</title>
<author>M. Dezani-Ciancaglini</author>
<author>A. Frisch</author>
<author>E. Giovannetti</author>
<author>Y. Motohama</author>
<comment>
In <i>Electronic Notes in Theoretical Computer Science 70 No.1 (2002)</i>.
</comment>
<abstract> <p> We compare Meyer and Routley's minimal relevant logic
B+ with the recent semantics-based approach to subtyping introduced
by Frisch, Castagna and Benzaken in the definition of a type system
with intersection and union. We show that - for the functional core
of the system - such notion of subtyping, which is defined in purely
set-theoretical terms, coincides with the relevant entailment of the
logic B+. </p> </abstract>
</paper>
</li>
<li>
<paper file="papers/dea.ps.gz">
<title>Types récursifs, combinaisons booléennes et fonctions
surchargées: application au typage de XML</title>
<author>A. Frisch</author>
<comment>In french. Mémoire du DEA « Programmation: Sémantique,
Preuves et Langages » (Paris VII) </comment>
<abstract> <p> Nous étudions un lambda-calcul typé avec une opération
de filtrage qui permet d'exprimer des fonctions
surchargées. L'algèbre de types a des types de base, les types
produit et flèche, les types récursifs, les combinaisons booléennes
finies arbitraires. Nous considérons une notion de sous-typage
sémantique, issue de l'interprétation des types comme ensembles de
valeurs du langage. </p>
<p> Les caractéristiques présentes dans le calcul et l'algèbre de
types sont motivées par l'utilisation du calcul comme un noyau pour
un langage adapté à la manipulation de documents XML. </p>
<p> Nous utilisons une approche sémantique pour étudier l'algèbre de
types, tout en conservant une preuve syntaxique de préservation du
typage par réduction. </p> </abstract>
</paper>
</li>
<li> 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
<b>regular expressions</b>, which also apply to
characters strings; </li>
<li> functions themselves are <b>first-class</b> values, they
can be manipulated, stored in data structure, returned by
a function,...</li>
<li> a powerful <b>pattern matching</b> operation can perform
complex extractions from sequences of XML elements; </li>
<li> a rich <b>type algebra</b>, with recursive types and arbitrary
boolean combinations (union, intersection, complement) allows
precise definitions of data structures and XML types;
<b>general purpose types</b> and types constructors are taken seriously
(products, extensible records, arbitrary precision integers with interval
constraints, Unicode characters);</li>
<li> <b>polymorphism</b> through a natural notion of <b>subtyping</b>,
and <b>overloaded functions</b> with dynamic dispatch; </li>
<li> an highly-effective <b>type-driven compilation schema</b>. </li>
</ul>
</section>
<section title="Security">
<p>
<a href="bench.html">Preliminary benchmarks</a> suggest that 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).
</p>
</box>
<box title="Research directions" link="research">
<p>Our plans concerning the design of the core language
include:</p>
<ul>
<li>
<paper file="papers/sec.ps.gz">
<title>Security analysis for XML transformations</title>
<author>M. Burelle</author>
<author>V. Benzaken</author>
<author>G. Castagna</author>
<comment> <a href="http://www.myths.eu.org">MyThS</a> technical
report. </comment>
<abstract> <p> In this article we give a formal definition of
information flows in the context of XML transformations and, more
generally, in the presence of type dependent computations. We
formalize a sound technique to detect XML document transformations
that may leak private or confidential information. By defining
security annotations and by relating various kind of analyses to
different query scenarios, we also establish a general framework for
checking middleware-located information flows. </p> </abstract>
</paper>
</li>
<li>a module system to support incremental programming;</li>
<li>parametric polymorphism;</li>
<li>XML-friendly primitives, to mimic XSLT transformations.</li>
</ul>
</section>
</box>
<p>
Apart from the core language design and implementation,
our research projects include:
</p>
<ul>
<li> integration of a <b>query sub-language</b> into CDuce, using
types as a primary optimization strategy for request evaluation;</li>
<li> study of <b>security</b> (confidentiality, ...) properties in the
setting of XML transformations.</li>
</ul>
<p>
We wrote several <a href="papers.html">technical papers</a> about
the language design and its theoretical foundations.
</p>
</box>
<box title="Slides" link="slides">
<ul>
<box title="XDuce and CDuce" link="xduce">
<p>
<li>
<slides file="slides/lri02.pdf">
<title>Semantic Subtyping</title>
<author>A. Frisch</author>
<author>G. Castagna</author>
<author>V. Benzaken</author>
<comment>Slides of a presentation given at LRI Database Group (2002-12)</comment>
</slides>
</li>
<li>
<slides file="slides/planx2002.pdf.gz">
<title>CDuce: a white paper</title>
<author>V. Benzaken</author>
<author>G. Castagna</author>
<author>A. Frisch</author>
<comment>Slides of the presentation given at the PLANX 2002 Workshop
in Pittsburgh (2002-09)</comment>
</slides>
</li>
<li>
<slides
file="ftp://ftp.ens.fr/pub/di/users/castagna/SLIDES/cduce-wp-slides.pdf.gz">
<title>CDuce: a white paper</title>
<author>V. Benzaken</author>
<author>G. Castagna</author>
<author>A. Frisch</author>
<comment>Slides of the presentation given at MyThS meeting in
Bertinoro (2002-12) </comment>
</slides>
</li>
<li>
<slides file="ftp://ftp.ens.fr/pub/di/users/castagna/SLIDES/cduce-sec.ps.gz">
<title>CDuce: document security</title>
<author>V. Benzaken</author>
<author>M. Burelle</author>
<author>G. Castagna</author>
<comment>Slides of the presentation given at FOSAD school (september
2002) </comment>
</slides>
</li>
The starting point of our work on CDuce was the
<a href="http://xduce.sourceforge.net/">XDuce</a> language developped
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
</p>
<ul>
<li>integration of first-class and overloaded functions, arbitrary boolean
connectives, and extensible (or not) records, to the semantic
definition of subtyping;</li>
<li>a subtyping algorithm without backtracking;</li>
<li>extending pattern matching to capture non consecutive
subsequences; removing tail condition for exact matching
(they arrived independently to another solution);</li>
<li>efficient evaluation model that takes profit of static type information;</li>
</ul>
<p>
Of course, the work on XDuce continued during our, and they
developped 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.
</p>
</box>
<box title="Related links" link="links">
<ul>
<li> <link url="http://xduce.sourceforge.net/" title="XDuce"> The
starting point of our work on semantic subtyping and CDuce was XDuce.
CDuce extends XDuce with first-class and late-bound overloaded
functions, and generalizes the boolean connectives (explicit union,
intersection, negation types). </link> </li>
<li> <link url="http://www.research.avayalabs.com/user/wadler/xml/"
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
</li> </ul> </box>
......
include "xhtml-strict.cd";;
include "xhtml-categ.cd";;
include "xhtml-strict.cd";; (* XHTML 1 Strict DTD *)
include "xhtml-categ.cd";; (* Categories (Inline, ...) from this DTD *)
type SitePage =
<page {|input=String; output=String|}>[]
| <external {|href=String; title=String|}>[];;
type Site = <site>[ SitePage* ];;
type Page = <page>[
<title>String
<banner>[InlineText*]
<navig>[ NavigBox* ] <main>[ Box* ] ];;
type Page =
<page>[
<title>String
<banner>[InlineText*]
<navig>[ NavigBox* ] <main>[ Box* ] ];;
type Author = <author>String;;
type Paper =
<paper file=?String>[
<title>String
Author+
<comment>[InlineText*]
<abstract>Content ];;
<paper file=?String>[
<title>String
Author+
<comment>[InlineText*]
<abstract>Content ];;
type Slides =
<slides file=String>[
<title>String
Author+
<comment>[InlineText*]
];;
<slides file=String>[
<title>String
Author+
<comment>[InlineText*] ];;
type Link =
<link url=String; title=String>[InlineText*];;
<link url=String; title=String>[ InlineText* ];;
type Content =
[ ( <p {||}>[InlineText*]
| <ul {||}>[<li {||}>Content +]
| <section title=String>Content
| Xtable
| Paper | Slides | Link | InlineText )* ];;
| Paper | Slides | Link
| <include-verbatim file=String>[]
| InlineText )* ];;
type InlineText =
Char
| <(`b|`i) {||}>[InlineText*]
| <duce>[InlineText*]
| Xa
| Ximg | Xbr
;;
| Ximg | Xbr ;;
type Box = <box title=String; subtitle=?String; link=String>Content
| <meta>Content;;
......@@ -75,8 +76,16 @@ let fun content (t : Content) : Flow =
]
| <slides file=f>[ <title>tit aut::Author* <comment>com ] ->
[ <a href=f>tit '. ' !(authors aut) '. ' !(text com) ]
| <link url=url; title=title>com ->
[ <a href=url>title '. ' !(text com) ]
| <include-verbatim file=f>[] ->
let code = load_file f in
(* let code = transform code with
| '\n' -> [ '\n' <br>[] ]
| ' ' -> "\160"
| c -> [c] in *)
[
<div class="code">[ <pre>code ]
]
| <link url=url; title=title>com -> [ <a href=url>title '. ' !(text com) ]
| <ul>lis -> [ <ul>(map lis with <li>x -> <li>(content x)) ]
| Xtable & x -> [ x ]
| <p>x -> [ <p>(text x) ]
......
......@@ -4,5 +4,7 @@
<external href="cgi-bin/cduce" title="CDuce prototype"/>
<page input="memento.xml" output="memento.html"/>
<page input="bench.xml" output="bench.html"/>
<page input="papers.xml" output="papers.html"/>
<page input="examples.xml" output="examples.html"/>
<page input="team.xml" output="team.html"/>
</site>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment