index.xml 15.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
<left>
<p>On this page:</p>
<boxes-toc/>
<p>Under this page:</p>
<pages-toc/>
</left>

17
18
19
<!--<external href="http://reglisse.ens.fr/cgi-bin/cduce" title="Online
demo" name="proto"/>-->
<external href="/cgi-bin/cduce" title="Online demo" name="proto"/>
20
<include file="demo.xml"/>
21
<include file="download.xml"/>
22
23
<include file="bench.xml"/>
<include file="papers.xml"/>
24
<include file="stages.xml"/>
25
<include file="documentation.xml"/>
26
<include file="examples.xml"/>
27
28
<!-- <include file="hacking.xml"/> -->
<!-- Note: this is no longer relevant -->
29
<include file="tips.xml"/>
30
<include file="contrib.xml"/>
31
<include file="mailing.xml"/>
32
<include file="team.xml"/>
33
<include file="funding.xml"/>
34
<include file="dtd2cduce.xml"/>
35
<include file="sitemap.xml"/>
36
37

<left>
38
39

<p> CDuce ("seduce") is a new typed functional language with
40
innovative features.</p>
41
42
43
44
45
46
47
48
49

<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 
50
51
<a href="http://www.w3.org/XML/Schema">XML Schema</a>.
XML types play a central role in CDuce.
52
  </p>
53

54
</left>
55

56
<left>
57
<p> All pages of this site were automatically generated from an XML description of
58
the content by <a href="examples.html#site">the following CDuce program</a>.
59
</p><p><img src="img/cducepower.jpg" alt="Powered by CDuce"/></p>
60
</left>
61

62
<box title="Latest News" link="news">
63

64
65
66
67
68
69
<section title="2005, March 27th, Easter: PDF user manual">
<p>
A PDF version of the User manual is available. See the <local href="documentation"/>.
</p>
</section>

70
71
72
73
74
75
76
77
78
79
80
81
82
<section title="2005, March 22th, Wednesday: CDuce 0.3.2">
<p>
See the <local href="download"/>
page for download information, or the <a href="CHANGES">CHANGES</a>
file to know what's new.
</p>
<p>
GODI users can simply select the <tt>apps-cduce</tt> package to
install CDuce 0.3.0. Another option is to use the
<tt>apps-cduce-cvs</tt> package to follow the development tree.
</p>
</section>

83
84
85
86
87
88
89
90
91
92
93
94
95
<section title="2005, March 9th, Wednesday: CDuce 0.3.0">
<p>
See the <local href="download"/>
page for download information, or the <a href="CHANGES">CHANGES</a>
file to know what's new.
</p>
<p>
GODI users can simply select the <tt>apps-cduce</tt> package to
install CDuce 0.3.0. Another option is to use the
<tt>apps-cduce-cvs</tt> package to follow the development tree.
</p>
</section>

96
97
98
99
100
101
102
103
104
105
106
107
108
<section title="2005, January 14th, Friday: CDuce 0.2.2">
<p>
See the <local href="download"/>
page for download information, or the <a href="CHANGES">CHANGES</a>
file to know what's new.
</p>
<p>
GODI users can simply select the <tt>apps-cduce</tt> package to
install CDuce 0.2.2. Another option is to use the
<tt>apps-cduce-cvs</tt> package to follow the development tree.
</p>
</section>

109
110
111
112
113
114
115
<section title="2004, September 13th, Monday: CDuce 0.2.1">
<p>
We added a string:// scheme for load_xml and load_html and load_file (it makes
the load function parse the string that follows the scheme) and the
the code was updated to OCaml 3.08.1, PXP 1.1.95.
</p>
</section>
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<section title="2004, July 5th, Monday: CDuce 0.2.0 is out !">
<p>
The long-awaited CDuce 0.2.0 is out. See the <local href="download"/>
page for download information, or the <a href="CHANGES">CHANGES</a>
file to know what's new.
</p>
<p>
GODI users can simply select the <tt>apps-cduce</tt> package to
install CDuce 0.2.0.
</p>
<p>
Enjoy !
</p>
</section>

<!--
132
133
134
135
136
137
138
139
140
141
142
143
144
<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>

145
146
147
<section title="2003, October 26th, Sunday: New addition to papers.">
<p>
If you want a simple and basic introduction to the theoretical foundations
148
149
of CDuce, there is a new entry in the <a href="papers.html">papers page</a>: <i>"A Gentle
Introduction to Semantic Subtyping"</i>.
150
151
152
153
</p>
<br/>
</section>

154
155
<section title="2003, October 17th, Friday: CVS publicly available.">
<p>
156
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.
157
158
159
160
</p>
<br/>
</section>

161

162
<section title="2003, September 23rd, Wednesday: Volunteers sought.">
163
<p>
164
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 
165
166
167
168
169
170
171
172
173
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
174
<code>:=</code> and <code>;</code>. It is available at the <a href="download.html">usual place</a>. Try this
175
176
<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
177
<a href="manual_expressions.html#ref">manual pages</a> for more
178
179
180
181
information.
</p>
<br/>
</section>
182
-->
183
</box>
184

185
186
187
<box title="What is CDuce ?" link="whatis">

<p> <b>CDuce</b> is modern programming language, adapted to the
188
189
190
manipulation of XML documents. This project is a spin-off of a
research effort split amongst two <a
href="http://www.cnrs.fr">CNRS</a> labs (the <a
191
192
193
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
194
195
196
197
198
199
Orsay), and one <a href="http://www.inria.fr">INRIA</a> project (the
<a href="http://cristal.inria.fr"><b>Cristal</b></a> project).  Please
see the <local href="team">CDuce team</local> page for a list of
researchers contributing to this research effort. Some <local
href="papers">technical papers</local> present the theoretical
foundations of the language.
200
</p>
201

202
203
204
205
206
207
208
209
210
<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>
211
212

<p>
213
214
215
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>.
216
217
218
219
</p>

</section>

220
<section title="Online running prototype">
221
<p> To get a feeling of CDuce,
222
you can play with the <local href="proto">on-line prototype</local>,
223
224
try the examples and modify them. </p>
</section>
225

226
227
228
229
<section title="Download">
<p>
You can <local href="download">download</local> a beta
version of CDuce, or a snapshot from the working CVS repository.
230
</p>
231
</section>
232
233
</box>

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

240
241
<ul>
<li> <b>static verifications</b>
242
243
244
245
246
247
248
249
250
251
(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>
252
253
254
255
256
<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> 
257
258
</ul>

259
<p>
260
Some features particular to CDuce:
261
</p>
262
<ul>
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
<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>
282
283
</ul>

284
285
<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>,
286
287
288
<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>.
289
290
</p>

291
<p>
292
<local href="bench">Preliminary benchmarks</local> suggest that despite the
293
overhead for static type verification, a CDuce
294
295
296
297
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>
298

299
<p>
300
301
The name CDuce was coined by <a 
href="http://www.di.ens.fr/~zappa">Francesco Zappa Nardelli</a>.
302
</p>
303

304
305
<footnotes/>

306
307
</box>

308
309

<!--
310
<box title="Research directions" link="research">
311

312
313
<p>Our plans concerning the design of the core language
include:</p>
314
<ul>
315
316
317
318
319
320
321
322
323
 <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>
324
 <li>efficient evaluation strategies, high-level optimizations;</li> 
325
326
327
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
328
329
</ul>

330
331
332
333
334
335
336
337
338
339
<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>
340

341
<p>
342
We wrote several <local href="papers">technical papers</local> about
343
344
the language design and its theoretical foundations.
</p>
345
346
347

<footnotes/>

348
</box>
349
-->
350

351
352
<box title="XDuce and CDuce" link="xduce">
<p>
353

354
The starting point of our work on CDuce was the
355
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
356
357
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
358

359
360
361
362
363
364
365
366
367
368
</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>
369
</ul>
370
371
<p>
Of course, the work on XDuce continued during our, and they
372
developed nice ideas: mixed attribute-element types (same
373
374
375
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
376

377
378
</box>

379
380
381
382
383
384
385
386
387
<page name="links" new="">
<title>Links</title>
<left>
<boxes-toc/>
<p>See also:</p>
<local-links href="index,team,sitemap"/>
</left>

<box title="About XML" link="xml">
388
<link url="http://www.w3.org/XML/"
389
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
390
<link url="http://www.research.avayalabs.com/user/wadler/xml/"
391
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
392
393
394
</box>

<box title="Related languages" link="lang">
395
396
397
398
<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>
399
400
<link url="http://www.comp.nus.edu.sg/~luzm/xhaskell/"
title="Xhaskell"> The XHaskell language. </link>
401
</box>
402
</page>
403
404
405
406
407
408
409
410
411

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

412
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
413
414
415
416
417
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

418
<a href="http://jigsaw.w3.org/css-validator/check/referer">
419
420
421
422
423
424
425
<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"
426
     src="img/symbENSmio.gif"
427
428
429
430
431
432
433
434
435
436
437
     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" 
438
     src="img/symbCNRSmio.gif" 
439
440
     alt="CNRS" title="CNRS"/>
</a>
441
442
443
444
445
<a href="http://www.inria.fr">
<img style="border:0" 
     src="img/inria.gif" 
     alt="INRIA" title="INRIA"/>
</a>
446
<script type="text/javascript"  src="http://codice.shinystat.it/cgi-bin/getcod.cgi?USER=cducer"></script>
447
448
449
</p>
</meta>

450
<page name="img" new="">
451

452
<title>Pictures and Logos</title>
453
<include file="soutenance.xml"/>
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495

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

496
497
498
499
500
501
<section title="Alain's Ph.D defense (13th December 2004)">
<p>
<local href="soutenance"/>
</p>

</section>
502
503
504
505
506
507
508
509
510
511
512
513
514
515

</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>
516

517
</box>
518
519


520
521
</page>

522
</page>