index.xml 12.7 KB
Newer Older
1
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
2
<page name="index" url="/">
3

4
<title>Home page</title>
5
6
7
8
9
<banner>
  <img title="CDuce" src="img/cduce_logo.jpg" width="400" height="206"
       alt="CDuce"/>
</banner>

10
11
12
13
14
15
16
17
<left>
<p>On this page:</p>
<boxes-toc/>
<p>Under this page:</p>
<pages-toc/>
</left>

<external href="/cgi-bin/cduce" title="Online demo" name="proto"/>
18
<include file="download.xml"/>
19
20
<include file="bench.xml"/>
<include file="papers.xml"/>
21
<include file="documentation.xml"/>
22
<include file="examples.xml"/>
23
<include file="hacking.xml"/>
24
<include file="mailing.xml"/>
25
<include file="team.xml"/>
26
27
<include file="sitemap.xml"/>

28

29
<left>
30
31

<p> CDuce ("seduce") is a new typed functional language with
32
innovative features.</p>
33
34
35
36
37
38
39
40
41

<p> 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).  
<a href="http://www.w3.org/XML/">XML</a> 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 
42
43
<a href="http://www.w3.org/XML/Schema">XML Schema</a>.
XML types play a central role in CDuce.
44
  </p>
45

46
</left>
47

48
<left>
49
<p> All pages of this site were automatically generated from an XML description of
50
the content by <a href="examples.html#site">the following CDuce program</a>.
51
</p><p><img src="img/cducepower.jpg" alt="Powered by CDuce"/></p>
52
</left>
53

54
<!--
55
<box title="Latest News" link="news">
56
57
58
59
60
61
62
63
64
65
66
67
68
<section title="2003, December 8th, Monday: New addition to papers.">
<p>
A paper on the optimized implementation of pattern matching
in CDuce is now available online in the <a href="papers.html">papers page</a>:
<i>"Regular tree language recognition with static information"</i>.
Another paper, <i>"Greedy regular expression matching"</i>
is a preliminary step in an alternative implementation technique
(non-uniform representation of values). The two papers will be
presented in the PLAN-X 2004 workshop in January (Venice).
</p>
<br/>
</section>

69
70
71
<section title="2003, October 26th, Sunday: New addition to papers.">
<p>
If you want a simple and basic introduction to the theoretical foundations
72
73
of CDuce, there is a new entry in the <a href="papers.html">papers page</a>: <i>"A Gentle
Introduction to Semantic Subtyping"</i>.
74
75
76
77
</p>
<br/>
</section>

78
79
<section title="2003, October 17th, Friday: CVS publicly available.">
<p>
80
You can now download the development version directly from the cvs tree. See instructions at the <a href="download.html">usual place</a>. Be careful, it may not work, and many features are experimental and undocumented.
81
82
83
84
</p>
<br/>
</section>

85

86
<section title="2003, September 23rd, Wednesday: Volunteers sought.">
87
<p>
88
We look for volunteers to prepare an emacs mode for CDuce and to implement  a native Win32 or MinGW port. If your are interested please contact 
89
90
91
92
93
94
95
96
97
us.
</p>
<br/>
</section>


<section title="2003, August 16th, Saturday: Version 0.1.1 released.">
<p>
This version has several bug-fixes and encodes reference types. You can now use
98
<code>:=</code> and <code>;</code>. It is available at the <a href="download.html">usual place</a>. Try this
99
100
<a href="http://www.cduce.org/cgi-bin/cduce?example=reference">code</a> on
the on-line demo for an example on how to use them, and refer to the
101
<a href="manual_expressions.html#ref">manual pages</a> for more
102
103
104
105
106
information.
</p>
<br/>
</section>
</box>
107
-->
108

109
110
111
<box title="What is CDuce ?" link="whatis">

<p> <b>CDuce</b> is modern programming language, adapted to the
112
manipulation of XML documents.  It is developed by the <a
113
114
115
116
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.
117
See also the <local href="team">CDuce team</local> page,
118
and our <local href="papers">technical papers</local>.
119
</p>
120

121
122
123
124
125
126
127
128
129
<section title="Getting information">

<p>
The online <local href="documentation">documentation</local>
contains a <local href="tutorial"/> and a <local href="manual"/>.
You can also have a look at some <local
href="examples">examples</local>
of CDuce programs.
</p>
130
131

<p>
132
133
134
If you want more information about CDuce you can send a mail to 
<tt>info_at_cduce.org</tt> (replace <tt>_at_</tt> with <tt>@</tt>), or
to the most appropriate <a href="mailing.html">CDuce mailing list</a>.
135
136
137
138
</p>

</section>

139
<section title="Online running prototype">
140
<p> To get a feeling of CDuce,
141
you can play with the <local href="proto">on-line prototype</local>,
142
143
try the examples and modify them. </p>
</section>
144

145
146
147
148
<section title="Download">
<p>
You can <local href="download">download</local> a beta
version of CDuce, or a snapshot from the working CVS repository.
149
</p>
150
</section>
151
152
</box>

153
<box title="Design and features" link="design">
154
155
<p> Our point of view and our guideline for the design of CDuce is
that a programming language for XML should take XML types (
156
DTD, XML Schema, Relax-NG, ...) seriously into account. 
157
The benefits are the following:</p>
158

159
160
<ul>
<li> <b>static verifications</b>
161
162
163
164
165
166
167
168
169
170
(e.g.: ensure that a transformation produces a valid document 
  <footnote>

Valid with respect to validity constraints
that can be expressed by the type system (thus typically excluding 
constraints like <a
href="http://www.w3.org/TR/REC-xml#sec-attribute-types">ID</a> and
<a href="http://www.w3.org/TR/REC-xml#sec-attribute-types">IDREF</a>).

  </footnote>);</li>
171
172
173
174
175
<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> 
176
177
</ul>

178
<p>
179
Some features particular to CDuce:
180
</p>
181
<ul>
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<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>
201
202
</ul>

203
204
<p>CDuce is fast, functional,
type-safe, and <b>conforms to basic standards</b>: <a href="http://www.unicode.org">Unicode</a>, <a href="http://www.w3.org/XML/">XML</a>, <a href="http://www.w3.org/TR/REC-xml#dt-doctype">DTD</a>,
205
206
207
<a href="http://www.w3.org/TR/REC-xml-names/">Namespaces</a> are fully
supported, <a href="http://www.w3.org/TR/xmlschema-1/">XML Schema</a>
is partially <local href="manual_schema">supported</local>.
208
209
</p>

210
<p>
211
<local href="bench">Preliminary benchmarks</local> suggest that despite the
212
overhead for static type verification, a CDuce
213
214
215
216
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>
217

218
<p>
219
220
The name CDuce was coined by <a 
href="http://www.di.ens.fr/~zappa">Francesco Zappa Nardelli</a>.
221
</p>
222

223
224
<footnotes/>

225
226
227
</box>

<box title="Research directions" link="research">
228

229
230
<p>Our plans concerning the design of the core language
include:</p>
231
<ul>
232
233
234
235
236
237
238
239
240
 <li>interface with other languages and type systems
<footnote>
An <local href="manual_interfacewithocaml">
interface between CDuce and OCaml
</local> is currently being
implemented.
</footnote>
 ;
 </li>
241
 <li>efficient evaluation strategies, high-level optimizations;</li> 
242
243
244
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
245
246
</ul>

247
248
249
250
251
252
253
254
255
256
<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>
257

258
<p>
259
We wrote several <local href="papers">technical papers</local> about
260
261
the language design and its theoretical foundations.
</p>
262
263
264

<footnotes/>

265
</box>
266

267
268
<box title="XDuce and CDuce" link="xduce">
<p>
269

270
The starting point of our work on CDuce was the
271
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
272
273
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
274

275
276
277
278
279
280
281
282
283
284
</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>
285
</ul>
286
287
<p>
Of course, the work on XDuce continued during our, and they
288
developed nice ideas: mixed attribute-element types (same
289
290
291
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
292

293
294
295
</box>

<box title="Related links" link="links">
296
<link url="http://www.w3.org/XML/"
297
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
298
<link url="http://www.research.avayalabs.com/user/wadler/xml/"
299
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
300
301
302
303
304
<link url="http://xduce.sourceforge.net/"
title="XDuce"> XDuce home page. </link>
<link url="http://www.cis.upenn.edu/~bcpierce/xtatic/"
title="Xtatic"> The Xtatic Project. </link>
</box>
305
306
307
308
309
310
311
312
313
314


<meta>
<p>
<a href="comeon.htm">
<img style="border:0;width:88px;height:31px"
     src="img/cducepower3.png" 
     alt="Powered by CDuce"/>
</a>

315
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
316
317
318
319
320
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

321
<a href="http://jigsaw.w3.org/css-validator/">
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
<img style="border:0;width:88px;height:31px"
     src="http://jigsaw.w3.org/css-validator/images/vcss" 
     alt="Valid CSS!"/>
</a>

<a href="http://www.ens.fr">
<img style="border:0"
     src="img//symbENSmio.gif"
     alt="ENS" title="ENS"/>
</a>

<a href="http://www.u-psud.fr">
<img style="border:0" 
     src="img//symbP11mio.gif" 
     alt="Paris 11" title="Paris 11"/>
</a>

<a href="http://www.cnrs.fr">
<img style="border:0" 
     src="img//symbCNRSmio.gif" 
     alt="CNRS" title="CNRS"/>
</a>
</p>
<p>
346
<a href="mailto:Alain.Frisch@ens.fr">Webmaster</a> -
347
<local href="sitemap">Site map</local>
348
349
350
</p>
</meta>

351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412

<page name="img" new="">
<title>Pictures and Logos</title>

<left>
<boxes-toc/>
<p>See also:</p>
<local-links href="index,team,sitemap"/>
</left>

<box title="Pictures" link="pictures">
<section title="The CDuce team (January 2004 - Venice)">
<img src="img/seducers.jpg" alt="The CDuce and XDuce teams"/>
<p>
From left to right:
Véronique Benzaken, 
Haruo Hosoya (pretending to be an X-man),
Cédric Miachon,
Giuseppe Castagna,
Alain Frisch,
Marwan Burelle.
</p>
</section>
<section title="The CDuce and XDuce teams (January 2004 - Venice)">
<img src="img/C+X.jpg" alt="The CDuce and XDuce teams"/>
</section>
<section title="Alain (February 2004 - Hakone)">
<img src="img/frisch_psd_talk.jpg" alt="Alain Frisch"/>
<p>
It's all about hand-waving.
</p>
</section>
<section title="Giuseppe (February 2004 - Hakone)">
<img src="img/beppe_whiteboard.jpg" alt="Giuseppe Castagna"/>
<p>
Beppe cannot stay still for a photo.
</p>
</section>
<section title="Giuseppe (February 2004 - Hakone)">
<img src="img/beppe_whiteboard2.jpg" alt="Giuseppe Castagna"/>
<p>
Beppe cannot stay still for a photo.
</p>
</section>


</box>
<box title="Logos" link="logos">
<p>
Feel free to use the following logos on your websites to make
reference to CDuce.
</p>
<p>
<img src="img/cduce_logo.jpg" alt="CDuce banner"/>
<br/>
<img src="img/cducepower.jpg" alt="Powered by CDuce"/>
<br/>
<img src="img/cducepower2.jpg" alt="Powered by CDuce"/>
</p>
</box>
</page>

413
</page>