index.xml 13.3 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="tips.xml"/>
25
<include file="mailing.xml"/>
26
<include file="team.xml"/>
27
<include file="sitemap.xml"/>
28
<include file="funding.xml"/>
29

30

31
<left>
32
33

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

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

48
</left>
49

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

56
<box title="Latest News" link="news">
57

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

<!--
81
82
83
84
85
86
87
88
89
90
91
92
93
<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>

94
95
96
<section title="2003, October 26th, Sunday: New addition to papers.">
<p>
If you want a simple and basic introduction to the theoretical foundations
97
98
of CDuce, there is a new entry in the <a href="papers.html">papers page</a>: <i>"A Gentle
Introduction to Semantic Subtyping"</i>.
99
100
101
102
</p>
<br/>
</section>

103
104
<section title="2003, October 17th, Friday: CVS publicly available.">
<p>
105
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.
106
107
108
109
</p>
<br/>
</section>

110

111
<section title="2003, September 23rd, Wednesday: Volunteers sought.">
112
<p>
113
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 
114
115
116
117
118
119
120
121
122
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
123
<code>:=</code> and <code>;</code>. It is available at the <a href="download.html">usual place</a>. Try this
124
125
<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
126
<a href="manual_expressions.html#ref">manual pages</a> for more
127
128
129
130
information.
</p>
<br/>
</section>
131
-->
132
</box>
133

134
135
136
<box title="What is CDuce ?" link="whatis">

<p> <b>CDuce</b> is modern programming language, adapted to the
137
manipulation of XML documents.  It is developed by the <a
138
139
140
141
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.
142
See also the <local href="team">CDuce team</local> page,
143
and our <local href="papers">technical papers</local>.
144
</p>
145

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

<p>
157
158
159
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>.
160
161
162
163
</p>

</section>

164
<section title="Online running prototype">
165
<p> To get a feeling of CDuce,
166
you can play with the <local href="proto">on-line prototype</local>,
167
168
try the examples and modify them. </p>
</section>
169

170
171
172
173
<section title="Download">
<p>
You can <local href="download">download</local> a beta
version of CDuce, or a snapshot from the working CVS repository.
174
</p>
175
</section>
176
177
</box>

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

184
185
<ul>
<li> <b>static verifications</b>
186
187
188
189
190
191
192
193
194
195
(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>
196
197
198
199
200
<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> 
201
202
</ul>

203
<p>
204
Some features particular to CDuce:
205
</p>
206
<ul>
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<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>
226
227
</ul>

228
229
<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>,
230
231
232
<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>.
233
234
</p>

235
<p>
236
<local href="bench">Preliminary benchmarks</local> suggest that despite the
237
overhead for static type verification, a CDuce
238
239
240
241
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>
242

243
<p>
244
245
The name CDuce was coined by <a 
href="http://www.di.ens.fr/~zappa">Francesco Zappa Nardelli</a>.
246
</p>
247

248
249
<footnotes/>

250
251
252
</box>

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

254
255
<p>Our plans concerning the design of the core language
include:</p>
256
<ul>
257
258
259
260
261
262
263
264
265
 <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>
266
 <li>efficient evaluation strategies, high-level optimizations;</li> 
267
268
269
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
270
271
</ul>

272
273
274
275
276
277
278
279
280
281
<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>
282

283
<p>
284
We wrote several <local href="papers">technical papers</local> about
285
286
the language design and its theoretical foundations.
</p>
287
288
289

<footnotes/>

290
</box>
291

292
293
<box title="XDuce and CDuce" link="xduce">
<p>
294

295
The starting point of our work on CDuce was the
296
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
297
298
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
299

300
301
302
303
304
305
306
307
308
309
</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>
310
</ul>
311
312
<p>
Of course, the work on XDuce continued during our, and they
313
developed nice ideas: mixed attribute-element types (same
314
315
316
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
317

318
319
320
</box>

<box title="Related links" link="links">
321
<link url="http://www.w3.org/XML/"
322
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
323
<link url="http://www.research.avayalabs.com/user/wadler/xml/"
324
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
325
326
327
328
329
<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>
330
331
332
333
334
335
336
337
338
339


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

340
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
341
342
343
344
345
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

346
<a href="http://jigsaw.w3.org/css-validator/">
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
<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>
371
<a href="mailto:Alain.Frisch@ens.fr">Webmaster</a> -
372
<local href="sitemap">Site map</local>
373
374
375
</p>
</meta>

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
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437

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

438
</page>