index.xml 13 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
28
<include file="sitemap.xml"/>

29

30
<left>
31
32

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

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

47
</left>
48

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

55
<box title="Latest News" link="news">
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

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

<!--
73
74
75
76
77
78
79
80
81
82
83
84
85
<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>

86
87
88
<section title="2003, October 26th, Sunday: New addition to papers.">
<p>
If you want a simple and basic introduction to the theoretical foundations
89
90
of CDuce, there is a new entry in the <a href="papers.html">papers page</a>: <i>"A Gentle
Introduction to Semantic Subtyping"</i>.
91
92
93
94
</p>
<br/>
</section>

95
96
<section title="2003, October 17th, Friday: CVS publicly available.">
<p>
97
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.
98
99
100
101
</p>
<br/>
</section>

102

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

126
127
128
<box title="What is CDuce ?" link="whatis">

<p> <b>CDuce</b> is modern programming language, adapted to the
129
manipulation of XML documents.  It is developed by the <a
130
131
132
133
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.
134
See also the <local href="team">CDuce team</local> page,
135
and our <local href="papers">technical papers</local>.
136
</p>
137

138
139
140
141
142
143
144
145
146
<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>
147
148

<p>
149
150
151
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>.
152
153
154
155
</p>

</section>

156
<section title="Online running prototype">
157
<p> To get a feeling of CDuce,
158
you can play with the <local href="proto">on-line prototype</local>,
159
160
try the examples and modify them. </p>
</section>
161

162
163
164
165
<section title="Download">
<p>
You can <local href="download">download</local> a beta
version of CDuce, or a snapshot from the working CVS repository.
166
</p>
167
</section>
168
169
</box>

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

176
177
<ul>
<li> <b>static verifications</b>
178
179
180
181
182
183
184
185
186
187
(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>
188
189
190
191
192
<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> 
193
194
</ul>

195
<p>
196
Some features particular to CDuce:
197
</p>
198
<ul>
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<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>
218
219
</ul>

220
221
<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>,
222
223
224
<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>.
225
226
</p>

227
<p>
228
<local href="bench">Preliminary benchmarks</local> suggest that despite the
229
overhead for static type verification, a CDuce
230
231
232
233
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>
234

235
<p>
236
237
The name CDuce was coined by <a 
href="http://www.di.ens.fr/~zappa">Francesco Zappa Nardelli</a>.
238
</p>
239

240
241
<footnotes/>

242
243
244
</box>

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

246
247
<p>Our plans concerning the design of the core language
include:</p>
248
<ul>
249
250
251
252
253
254
255
256
257
 <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>
258
 <li>efficient evaluation strategies, high-level optimizations;</li> 
259
260
261
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
262
263
</ul>

264
265
266
267
268
269
270
271
272
273
<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>
274

275
<p>
276
We wrote several <local href="papers">technical papers</local> about
277
278
the language design and its theoretical foundations.
</p>
279
280
281

<footnotes/>

282
</box>
283

284
285
<box title="XDuce and CDuce" link="xduce">
<p>
286

287
The starting point of our work on CDuce was the
288
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
289
290
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
291

292
293
294
295
296
297
298
299
300
301
</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>
302
</ul>
303
304
<p>
Of course, the work on XDuce continued during our, and they
305
developed nice ideas: mixed attribute-element types (same
306
307
308
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
309

310
311
312
</box>

<box title="Related links" link="links">
313
<link url="http://www.w3.org/XML/"
314
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
315
<link url="http://www.research.avayalabs.com/user/wadler/xml/"
316
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
317
318
319
320
321
<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>
322
323
324
325
326
327
328
329
330
331


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

332
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
333
334
335
336
337
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

338
<a href="http://jigsaw.w3.org/css-validator/">
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
<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>
363
<a href="mailto:Alain.Frisch@ens.fr">Webmaster</a> -
364
<local href="sitemap">Site map</local>
365
366
367
</p>
</meta>

368
369
370
371
372
373
374
375
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

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

430
</page>