index.xml 10.1 KB
Newer Older
1
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
2
<page name="index">
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="mailing.xml"/>
25
<include file="team.xml"/>
26
27
<include file="sitemap.xml"/>

28

29
<left>
30
31

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

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

46
</left>
47

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

55
<box title="Latest News" link="news">
56
57
58
59
60
61
62
63
<section title="2003, October 26th, Sunday: New addition to papers.">
<p>
If you want a simple and basic introduction to the theoretical foundations
of CDuce, there is a new entry in the <a href="papers.html">papers page</a>.
</p>
<br/>
</section>

64
65
<section title="2003, October 17th, Friday: CVS publicly available.">
<p>
66
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.
67
68
69
70
</p>
<br/>
</section>

71

72
<section title="2003, September 23rd, Wednesday: Volunteers sought.">
73
<p>
74
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 
75
76
77
78
79
80
81
82
83
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
84
<code>:=</code> and <code>;</code>. It is available at the <a href="download.html">usual place</a>. Try this
85
86
<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
87
<a href="manual_expressions.html#ref">manual pages</a> for more
88
89
90
91
92
93
information.
</p>
<br/>
</section>
</box>

94

95
96
97
<box title="What is CDuce ?" link="whatis">

<p> <b>CDuce</b> is modern programming language, adapted to the
98
manipulation of XML documents.  It is developed by the <a
99
100
101
102
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.
103
104
See also the <local href="team">CDuce team</local> page,
our <local href="papers">technical papers</local>.
105
</p>
106

107
108
109
<section title="Getting more information">

<p>
110
111
112
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>.
113
114
115
116
</p>

</section>

117
<section title="Online running prototype">
118
<p> To get a feeling of CDuce,
119
you can play with the <local href="proto">on-line prototype</local>,
120
121
try the examples and modify them. We also have some 
<local href="examples">larger examples</local>. </p>
122

123
124
125
<p>We are planning to distribute a stable release in the next
few weeks. To help us prepare this release, you can download a
<local href="download">beta version</local>, and send your comments.
126
127
</p>

128
</section>
129
130
</box>

131
<box title="Design and features" link="design">
132
133
<p> Our point of view and our guideline for the design of CDuce is
that a programming language for XML should take XML types (
134
DTD, XML Schema, Relax-NG, ...) seriously. The benefit are the following:</p>
135

136
137
<ul>
<li> <b>static verifications</b>
138
139
140
141
142
143
144
145
146
147
(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>
148
149
150
151
152
<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> 
153
154
</ul>

155
<p>
156
Some features particular to CDuce:
157
</p>
158
<ul>
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<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>
178
179
</ul>

180
181
182
183
184
185
186
<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>,
<a href="http://www.w3.org/TR/REC-xml-names/">Namespaces</a> are fully supported, partial support of <a href="http://www.w3.org/TR/xmlschema-1/">XML Schema</a> validation is
in alpha testing (and undocumented) while queries are being
implemented.
</p>

187
<p>
188
<local href="bench">Preliminary benchmarks</local> suggest that despite the
189
overhead for static type verification, a CDuce
190
191
192
193
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>
194

195

196
197
198
</box>

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

200
201
<p>Our plans concerning the design of the core language
include:</p>
202
<ul>
203
204
205
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
206
207
</ul>

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

219
<p>
220
We wrote several <local href="papers">technical papers</local> about
221
222
223
the language design and its theoretical foundations.
</p>
</box>
224

225
226
<box title="XDuce and CDuce" link="xduce">
<p>
227

228
The starting point of our work on CDuce was the
229
<a href="http://xduce.sourceforge.net/">XDuce</a> language developed
230
231
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
232

233
234
235
236
237
238
239
240
241
242
</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>
243
</ul>
244
245
<p>
Of course, the work on XDuce continued during our, and they
246
developed nice ideas: mixed attribute-element types (same
247
248
249
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
250

251
252
253
254
</box>

<box title="Related links" link="links">
<ul>
255
256
257
<li> <link url="http://www.w3.org/XML/"
title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
</li>
258
259
<li> <link url="http://www.research.avayalabs.com/user/wadler/xml/"
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
260
261
262
263
</li>
<li> <link url="http://xduce.sourceforge.net/"
title="XDuce"> XDuce home page. </link> </li>
</ul> </box>
264
265
266
267
268
269
270
271
272
273


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

274
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
275
276
277
278
279
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

280
<a href="http://jigsaw.w3.org/css-validator/">
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
<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>
305
<a href="mailto:Alain.Frisch@ens.fr">Webmaster</a> -
306
<local href="sitemap">Site map</local>
307
308
309
310
</p>
</meta>

</page>