index.xml 17.1 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
<!--<external href="http://reglisse.ens.fr/cgi-bin/cduce" title="Online
demo" name="proto"/>-->
19
<external href="/cgi-bin/cduce" title="Online interpreter" 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
<include file="appli.xml"/>
27
28
<!-- <include file="hacking.xml"/> -->
<!-- Note: this is no longer relevant -->
29
<include file="tips.xml"/>
30
31
32
<include file="ocaml.xml"/>
<include file="stages.xml"/>
<include file="bench.xml"/>
33
<include file="contrib.xml"/>
34
<include file="team.xml"/>
35
<include file="funding.xml"/>
36
<include file="dtd2cduce.xml"/>
37
<include file="sitemap.xml"/>
38
39

<left>
40
41
<p>This site is automatically generated
by <a href="examples.html#site">a CDuce program</a>.
42
</p><p><img src="img/cducepower.jpg" alt="Powered by CDuce"/></p>
43
</left>
44

45
<box title="Latest News" link="news">
46
47
<section title="2005, May 27th, Friday: Two presentations on some aspects of  CDuce">
<p>
48
  Those who will spend their summer in Lisbon or Trondheim may be interested in knowing that Giuseppe Castagna will give a couple of presentations on some aspects of CDuce. In particular:
49
50
51
52
53
54
55
56
57
58
59
60
</p>
<ul>
<li>Wed the 13th of July I'll give a talk in Lisbon about the theoretical foundations of the type system of CDuce. See <a href="http://icalp05.di.fct.unl.pt/invited.html"> this page</a> for more information.</li>

<li>
Sun the 29th of August at 9.30 (date to be confirmed) I'll give a talk in Trondheim about the use of CDuce patterns and types for XML query languages. See <a href="http://research.microsoft.com/conferences/dbpl05/"> this page</a> for more info.</li>

</ul>
<p>
You are welcome to peep in.
</p>
</section>
61

62
63
64
65
66
67
68
69
70
<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
71
72
73
74
75
76
77
78
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>

79
<!--
80
81
<section title="2005, March 27th, Easter: PDF user manual">
<p>
82
PDF versions of the User manual and of the Tutorial are now available. See the <local href="documentation"/>.
83
84
85
</p>
</section>

86
87
88
89
90
91
92
<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>
93
94
GODI users can simply select the <tt>apps-cduce</tt> package. 
Another option is to use the
95
96
97
98
<tt>apps-cduce-cvs</tt> package to follow the development tree.
</p>
</section>

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

112
113
114
115
116
117
118
119
120
121
122
123
124
<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>

125
126
127
128
129
130
131
<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>
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<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>

147
148
149
150
151
152
153
154
155
156
157
158
159
<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>

160
161
162
<section title="2003, October 26th, Sunday: New addition to papers.">
<p>
If you want a simple and basic introduction to the theoretical foundations
163
164
of CDuce, there is a new entry in the <a href="papers.html">papers page</a>: <i>"A Gentle
Introduction to Semantic Subtyping"</i>.
165
166
167
168
</p>
<br/>
</section>

169
170
<section title="2003, October 17th, Friday: CVS publicly available.">
<p>
171
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.
172
173
174
175
</p>
<br/>
</section>

176

177
<section title="2003, September 23rd, Wednesday: Volunteers sought.">
178
<p>
179
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 
180
181
182
183
184
185
186
187
188
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
189
<code>:=</code> and <code>;</code>. It is available at the <a href="download.html">usual place</a>. Try this
190
191
<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
192
<a href="manual_expressions.html#ref">manual pages</a> for more
193
194
195
196
information.
</p>
<br/>
</section>
197
-->
198
</box>
199

200
201
<box title="What is CDuce ?" link="whatis">

202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<p> <b>CDuce</b> 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. </p>
<ul>
<li><local href="documentation">Online documentation</local>.</li>
<li>Some <local href="examples">examples</local> of CDuce programs.</li>
<li><local href="design_features"/>: background
information about the design of CDuce.</li>
<li><local href="appli"/>.</li>
<li><local href="contrib"/>.</li>
<li><local href="mailing"/>.</li>
<li><local href="download">How to get CDuce</local>: download sources, Debian
or GODI packages.</li>
</ul>

<section title="Trying CDuce online">
<ul>
<li><local href="proto">On-line prototype</local>:
try the examples and play with them in your web browser.</li>
<li>Interactive <local href="demo">demo page</local>
(used for the demonstration at PLAN-X 2005), requires
a Mozilla-derived browser.</li>
</ul>
</section>
227

228
229
230
<p>
For more information, you can contact
<a href="mailto:info@cduce.org">info@cduce.org</a>.
231
232
</p>

233
234
235
236
</box>

<box title="CDuce: the research project" link="research">

237
238
<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
239
240
241
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
242
Orsay), and one <a href="http://www.inria.fr">INRIA</a> project (the
243
<a href="http://cristal.inria.fr"><b>Cristal</b></a> project).
244
</p>
245
246
247
248
249
250
251
<ul>
<li><local href="team"/>.</li>
<li><local href="papers"/>.</li>
<li><local href="funding"/>.</li>
<li><local href="ocaml"/>: integrating
CDuce features into <a href="http://caml.inria.fr">OCaml</a>.</li>
</ul>
252

253
</box>
254

255
256
257
258
259
260
261
262
<box title="Other pages" link="misc">
<ul>
<li><local href="img"/>.</li>
<li><local href="soutenance"/>.</li>
<li>An online tool to <local href="dtd2cduce">convert from DTD to
CDuce types</local>.</li>
<li><local href="bench"/>.</li>
</ul>
263
264
</box>

265
266
267
268
269
270
271
272
<page name="design_features" new="">
<title>Design and features</title>
<left>
<boxes-toc/>
<p>See also:</p>
<local-links href="index,team,sitemap"/>
</left>

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

279
280
<ul>
<li> <b>static verifications</b>
281
282
283
284
285
286
287
288
289
290
(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>
291
292
293
294
295
<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> 
296
297
</ul>

298
<p>
299
Some features particular to CDuce:
300
</p>
301
<ul>
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
<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>
321
322
</ul>

323
324
<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>,
325
326
327
<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>.
328
329
</p>

330
<p>
331
<local href="bench">Preliminary benchmarks</local> suggest that despite the
332
overhead for static type verification, a CDuce
333
334
335
336
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>
337

338
<p>
339
340
The name CDuce was coined by <a 
href="http://www.di.ens.fr/~zappa">Francesco Zappa Nardelli</a>.
341
</p>
342

343
344
<footnotes/>

345
346
</box>

347
348

<!--
349
<box title="Research directions" link="research">
350

351
352
<p>Our plans concerning the design of the core language
include:</p>
353
<ul>
354
355
356
357
358
359
360
361
362
 <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>
363
 <li>efficient evaluation strategies, high-level optimizations;</li> 
364
365
366
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
367
368
</ul>

369
370
371
372
373
374
375
376
377
378
<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>
379

380
<p>
381
We wrote several <local href="papers">technical papers</local> about
382
383
the language design and its theoretical foundations.
</p>
384
385
386

<footnotes/>

387
</box>
388
-->
389

390
391
<box title="XDuce and CDuce" link="xduce">
<p>
392

393
The starting point of our work on CDuce was the
394
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
395
396
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
397

398
399
400
401
402
403
404
405
406
407
</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>
408
</ul>
409
410
<p>
Of course, the work on XDuce continued during our, and they
411
developed nice ideas: mixed attribute-element types (same
412
413
414
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
415

416
417
</box>

418
419
</page>

420
421
422
423
424
425
426
427
428
<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">
429
<link url="http://www.w3.org/XML/"
430
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
431
<link url="http://www.research.avayalabs.com/user/wadler/xml/"
432
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
433
434
435
</box>

<box title="Related languages" link="lang">
436
437
438
439
<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>
440
441
<link url="http://www.comp.nus.edu.sg/~luzm/xhaskell/"
title="Xhaskell"> The XHaskell language. </link>
442
</box>
443
</page>
444
445
446
447
448
449
450
451
452

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

453
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
454
455
456
457
458
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

459
<a href="http://jigsaw.w3.org/css-validator/check/referer">
460
461
462
463
464
465
466
<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"
467
     src="img/symbENSmio.gif"
468
469
470
471
472
473
474
475
476
477
478
     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" 
479
     src="img/symbCNRSmio.gif" 
480
481
     alt="CNRS" title="CNRS"/>
</a>
482
483
484
485
486
<a href="http://www.inria.fr">
<img style="border:0" 
     src="img/inria.gif" 
     alt="INRIA" title="INRIA"/>
</a>
487
<script type="text/javascript"  src="http://codice.shinystat.it/cgi-bin/getcod.cgi?USER=cducer"></script>
488
489
490
</p>
</meta>

491
<page name="img" new="">
492

493
<title>Pictures and Logos</title>
494
<include file="soutenance.xml"/>
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
524
525
526
527
528
529
530
531
532
533
534
535
536

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

537
538
539
540
541
542
<section title="Alain's Ph.D defense (13th December 2004)">
<p>
<local href="soutenance"/>
</p>

</section>
543
544
545
546
547
548
549
550
551
552
553
554
555
556

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

558
</box>
559
560


561
562
</page>

563
</page>