index.xml 15.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
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
70
71
72
73
74
75
76
<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>

77
78
79
80
81
82
83
84
85
86
87
88
89
<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>

90
91
92
93
94
95
96
<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>
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<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>

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

126
127
128
<section title="2003, October 26th, Sunday: New addition to papers.">
<p>
If you want a simple and basic introduction to the theoretical foundations
129
130
of CDuce, there is a new entry in the <a href="papers.html">papers page</a>: <i>"A Gentle
Introduction to Semantic Subtyping"</i>.
131
132
133
134
</p>
<br/>
</section>

135
136
<section title="2003, October 17th, Friday: CVS publicly available.">
<p>
137
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.
138
139
140
141
</p>
<br/>
</section>

142

143
<section title="2003, September 23rd, Wednesday: Volunteers sought.">
144
<p>
145
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 
146
147
148
149
150
151
152
153
154
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
155
<code>:=</code> and <code>;</code>. It is available at the <a href="download.html">usual place</a>. Try this
156
157
<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
158
<a href="manual_expressions.html#ref">manual pages</a> for more
159
160
161
162
information.
</p>
<br/>
</section>
163
-->
164
</box>
165

166
167
168
<box title="What is CDuce ?" link="whatis">

<p> <b>CDuce</b> is modern programming language, adapted to the
169
170
171
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
172
173
174
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
175
176
177
178
179
180
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.
181
</p>
182

183
184
185
186
187
188
189
190
191
<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>
192
193

<p>
194
195
196
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>.
197
198
199
200
</p>

</section>

201
<section title="Online running prototype">
202
<p> To get a feeling of CDuce,
203
you can play with the <local href="proto">on-line prototype</local>,
204
205
try the examples and modify them. </p>
</section>
206

207
208
209
210
<section title="Download">
<p>
You can <local href="download">download</local> a beta
version of CDuce, or a snapshot from the working CVS repository.
211
</p>
212
</section>
213
214
</box>

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

221
222
<ul>
<li> <b>static verifications</b>
223
224
225
226
227
228
229
230
231
232
(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>
233
234
235
236
237
<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> 
238
239
</ul>

240
<p>
241
Some features particular to CDuce:
242
</p>
243
<ul>
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
<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>
263
264
</ul>

265
266
<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>,
267
268
269
<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>.
270
271
</p>

272
<p>
273
<local href="bench">Preliminary benchmarks</local> suggest that despite the
274
overhead for static type verification, a CDuce
275
276
277
278
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>
279

280
<p>
281
282
The name CDuce was coined by <a 
href="http://www.di.ens.fr/~zappa">Francesco Zappa Nardelli</a>.
283
</p>
284

285
286
<footnotes/>

287
288
</box>

289
290

<!--
291
<box title="Research directions" link="research">
292

293
294
<p>Our plans concerning the design of the core language
include:</p>
295
<ul>
296
297
298
299
300
301
302
303
304
 <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>
305
 <li>efficient evaluation strategies, high-level optimizations;</li> 
306
307
308
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
309
310
</ul>

311
312
313
314
315
316
317
318
319
320
<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>
321

322
<p>
323
We wrote several <local href="papers">technical papers</local> about
324
325
the language design and its theoretical foundations.
</p>
326
327
328

<footnotes/>

329
</box>
330
-->
331

332
333
<box title="XDuce and CDuce" link="xduce">
<p>
334

335
The starting point of our work on CDuce was the
336
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
337
338
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
339

340
341
342
343
344
345
346
347
348
349
</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>
350
</ul>
351
352
<p>
Of course, the work on XDuce continued during our, and they
353
developed nice ideas: mixed attribute-element types (same
354
355
356
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
357

358
359
</box>

360
361
362
363
364
365
366
367
368
<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">
369
<link url="http://www.w3.org/XML/"
370
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
371
<link url="http://www.research.avayalabs.com/user/wadler/xml/"
372
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
373
374
375
</box>

<box title="Related languages" link="lang">
376
377
378
379
<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>
380
381
<link url="http://www.comp.nus.edu.sg/~luzm/xhaskell/"
title="Xhaskell"> The XHaskell language. </link>
382
</box>
383
</page>
384
385
386
387
388
389
390
391
392

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

393
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
394
395
396
397
398
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

399
<a href="http://jigsaw.w3.org/css-validator/check/referer">
400
401
402
403
404
405
406
<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"
407
     src="img/symbENSmio.gif"
408
409
410
411
412
413
414
415
416
417
418
     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" 
419
     src="img/symbCNRSmio.gif" 
420
421
     alt="CNRS" title="CNRS"/>
</a>
422
423
424
425
426
<a href="http://www.inria.fr">
<img style="border:0" 
     src="img/inria.gif" 
     alt="INRIA" title="INRIA"/>
</a>
427
428
429
</p>
</meta>

430
<page name="img" new="">
431

432
<title>Pictures and Logos</title>
433
<include file="soutenance.xml"/>
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475

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

476
477
478
479
480
481
<section title="Alain's Ph.D defense (13th December 2004)">
<p>
<local href="soutenance"/>
</p>

</section>
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498

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

499
</page>