index.xml 16.5 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
<include file="papers.xml"/>
23
<include file="documentation.xml"/>
24
<include file="mailing.xml"/>
25
<include file="examples.xml"/>
26
27
<!-- <include file="hacking.xml"/> -->
<!-- Note: this is no longer relevant -->
28
<include file="tips.xml"/>
29
30
31
<include file="ocaml.xml"/>
<include file="stages.xml"/>
<include file="bench.xml"/>
32
<include file="contrib.xml"/>
33
<include file="team.xml"/>
34
<include file="funding.xml"/>
35
<include file="dtd2cduce.xml"/>
36
<include file="sitemap.xml"/>
37
38

<left>
39
<p> All pages of this site were automatically generated from an XML description of
40
the content by <a href="examples.html#site">the following CDuce program</a>.
41
</p><p><img src="img/cducepower.jpg" alt="Powered by CDuce"/></p>
42
</left>
43

44
<box title="Latest News" link="news">
45

46
47
48
49
50
51
52
53
54
<section title="2005, May 3rd, Tuesday: CDuce enters Debian testing">
<p>
  Thanks to Thomas Petazzoni and Stefano Zacchiroli, CDuce 0.3.2 is
  now packaged and available in Debian testing. Just do
  <tt>apt-get install cduce</tt>.
</p>
</section>

<section title="2005, April 12th, Tuesday: GODI package for the
55
56
57
58
59
60
61
62
OCaml+CDuce extension">
<p>
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 <local href="ocaml"/>.
</p>
</section>

63
64
<section title="2005, March 27th, Easter: PDF user manual">
<p>
65
PDF versions of the User manual and of the Tutorial are now available. See the <local href="documentation"/>.
66
67
68
</p>
</section>

69
70
71
72
73
74
75
<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>
76
77
GODI users can simply select the <tt>apps-cduce</tt> package. 
Another option is to use the
78
79
80
81
<tt>apps-cduce-cvs</tt> package to follow the development tree.
</p>
</section>

82
83
<!--

84
85
86
87
88
89
90
91
92
93
94
95
96
<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>

97
98
99
100
101
102
103
104
105
106
107
108
109
<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>

110
111
112
113
114
115
116
<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>
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
<box title="What is CDuce ?" link="whatis">

187
188
189
190
191
192
193
194
195
196
197
198
<p> <b>CDuce</b> is a new typed functional language with
innovative features.</p>

<p> Although CDuce is a general programming language, it features
several characteristics that make it adapted to <a
href="http://www.w3.org/XML/">XML</a> type-safe documents
manipulation. The notion of XML types (usually expression in a DTD or
an XML Schema) plays a central role in CDuce.
</p>

<p> The CDuce project is a spin-off of a research effort split
amongst two <a href="http://www.cnrs.fr">CNRS</a> labs (the <a
199
200
201
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
202
203
204
205
206
207
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.
208
</p>
209

210
211
212
213
214
215
216
217
218
<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>
219

220
221
222
223
224
225
<p>
The page <local href="design_features"/> gives some background
information about the design of CDuce and its connection
to its ancestor XDuce.
</p>

226
<p>
227
If you want more information about CDuce you can send a mail to 
228
<a href="mailto:info@cduce.org">info@cduce.org</a> or
229
to the most appropriate <a href="mailing.html">CDuce mailing list</a>.
230
231
232
233
</p>

</section>

234
235
<section title="Trying CDuce online">
<p> To get a feeling of CDuce without installing it on your computer,
236
you can play with the <local href="proto">on-line prototype</local>,
237
try the examples and modify them. </p>
238
239
240
<p>There is also an interactive <local href="demo">demo page</local>
(used for the demonstration at PLAN-X 2005), which requires
a Mozilla-derived browser.</p>
241
</section>
242

243
244
<section title="Download">
<p>
245
246
247
You can <local href="download">download</local> the latest official
release of CDuce, or get a snapshot from the working CVS
repository. There are also packages for Debian and GODI.
248
</p>
249
</section>
250
251
</box>

252
253
254
255
256
257
258
259
<page name="design_features" new="">
<title>Design and features</title>
<left>
<boxes-toc/>
<p>See also:</p>
<local-links href="index,team,sitemap"/>
</left>

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

266
267
<ul>
<li> <b>static verifications</b>
268
269
270
271
272
273
274
275
276
277
(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>
278
279
280
281
282
<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> 
283
284
</ul>

285
<p>
286
Some features particular to CDuce:
287
</p>
288
<ul>
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
<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>
308
309
</ul>

310
311
<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>,
312
313
314
<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>.
315
316
</p>

317
<p>
318
<local href="bench">Preliminary benchmarks</local> suggest that despite the
319
overhead for static type verification, a CDuce
320
321
322
323
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>
324

325
<p>
326
327
The name CDuce was coined by <a 
href="http://www.di.ens.fr/~zappa">Francesco Zappa Nardelli</a>.
328
</p>
329

330
331
<footnotes/>

332
333
</box>

334
335

<!--
336
<box title="Research directions" link="research">
337

338
339
<p>Our plans concerning the design of the core language
include:</p>
340
<ul>
341
342
343
344
345
346
347
348
349
 <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>
350
 <li>efficient evaluation strategies, high-level optimizations;</li> 
351
352
353
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
354
355
</ul>

356
357
358
359
360
361
362
363
364
365
<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>
366

367
<p>
368
We wrote several <local href="papers">technical papers</local> about
369
370
the language design and its theoretical foundations.
</p>
371
372
373

<footnotes/>

374
</box>
375
-->
376

377
378
<box title="XDuce and CDuce" link="xduce">
<p>
379

380
The starting point of our work on CDuce was the
381
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
382
383
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
384

385
386
387
388
389
390
391
392
393
394
</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>
395
</ul>
396
397
<p>
Of course, the work on XDuce continued during our, and they
398
developed nice ideas: mixed attribute-element types (same
399
400
401
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
402

403
404
</box>

405
406
</page>

407
408
409
410
411
412
413
414
415
<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">
416
<link url="http://www.w3.org/XML/"
417
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
418
<link url="http://www.research.avayalabs.com/user/wadler/xml/"
419
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
420
421
422
</box>

<box title="Related languages" link="lang">
423
424
425
426
<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>
427
428
<link url="http://www.comp.nus.edu.sg/~luzm/xhaskell/"
title="Xhaskell"> The XHaskell language. </link>
429
</box>
430
</page>
431
432
433
434
435
436
437
438
439

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

440
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
441
442
443
444
445
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

446
<a href="http://jigsaw.w3.org/css-validator/check/referer">
447
448
449
450
451
452
453
<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"
454
     src="img/symbENSmio.gif"
455
456
457
458
459
460
461
462
463
464
465
     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" 
466
     src="img/symbCNRSmio.gif" 
467
468
     alt="CNRS" title="CNRS"/>
</a>
469
470
471
472
473
<a href="http://www.inria.fr">
<img style="border:0" 
     src="img/inria.gif" 
     alt="INRIA" title="INRIA"/>
</a>
474
<script type="text/javascript"  src="http://codice.shinystat.it/cgi-bin/getcod.cgi?USER=cducer"></script>
475
476
477
</p>
</meta>

478
<page name="img" new="">
479

480
<title>Pictures and Logos</title>
481
<include file="soutenance.xml"/>
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523

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

524
525
526
527
528
529
<section title="Alain's Ph.D defense (13th December 2004)">
<p>
<local href="soutenance"/>
</p>

</section>
530
531
532
533
534
535
536
537
538
539
540
541
542
543

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

545
</box>
546
547


548
549
</page>

550
</page>