1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
|
========
20110917
========
- Start of official tutorial
- Compiler support for generating nice tutorial HTML from literate source files
- New protocol 'static' for generating static pages
- Replace GCCARGS 'configure' variable with CCARGS
- Better support for compilation with Clang (including on OS X)
- Fancier 'configure' script with versioning
- Applications consult URWEB_STACK_SIZE environment variable to determine thread
stack size
- HTML tag IDs now drawn from an abstract type
- New Basis functions: diffInSeconds, mkMonad, onClick, onDblclick, onKeydown,
onKeypress, onKeyup, onMousedown, onMouseup, preventDefault, stopPropagation,
toSeconds
- Add <image> tag
- Add 'target' attribute for <a>
- New compiler command-line option: -dumpTypes
- New syntactic sugar for computed ORDER BY clauses
- Bug fixes and optimization improvements
========
20110715
========
- Treat local variables the same as module-level variables, for the purpose of
implicit argument insertion
- New 'noXsrfProtection' directive for .urp files
- Non-debug builds omit source location information in error messages shown to
the user (but keep that information in log entries)
- Basis.getHeader and Basis.setHeader
- Basis.show_css_class
- Basis.currentUrlHasQueryString
- Make Basis.rand cryptographically secure
- Client-side versions of Basis.now and Basis.show_time
- Bug fixes
- Improvements to auto-configuration and build process (now builds with LLVM's
Clang!)
- Clarifications in the manual
========
20110517
========
- Cygwin compatibility
- Compatibility with Gentoo packaging process, including a .ebuild file
- Change typing of SQL subqueries, to indicate that they may always return NULL
(for no rows)
- Syntactic sugar for GROUP BY with variable numbers of columns
(using 'tab.{{c}}', where 'c :: {Type}')
- 'ALL' for SQL relational operators
- Add nullable types to the class for valid operands for SQL arithmetic
- 'alt' attribute for <img>
- <sup> and <sub> HTML tags
- Allow 'debug' and 'naughtyDebug' in client-side code, implemented with 'alert'
- Bug fixes and optimization improvements
========
20110123
========
- Changes to encoding of SQL aggregate functions: nullable types may be
aggregated, and non-COUNT aggregates return nullable results.
- SQL subqueries may apply aggregate functions to columns bound in enclosing
queries.
- Switch from libmhash to OpenSSL.
- 'cdataChar', for injecting arbitrary character codes into XML
- 'crypt', for access to the standard UNIX password encryption routine
- 'readUtc', for parsing time strings in the UTC time zone
- Built-in 'time' type now stores microseconds (which for now are only used in
connection with Postgres timestamps).
- Client-side URL blessing and redirection
- 'currentUrlHasPost' function
- Transactional 'free' functions now passed an argument indicating whether the
runtime system expects to retry the transaction.
- Change tasks to allow task kind-specific inputs
- Add 'clientLeaves' and 'periodic' task kinds
- Support for externally-callable pages, via the 'postBody' and 'queryString'
types and the 'effectfulUrl' function
- 'minHeap' and 'alwaysInline' .urp options
- '-prefix' command-line option
- Comments in .urp files (lines starting with '#')
- Miscellaneous additions to the standard library
- Bug fixes and improvements to type inference and optimization
========
20101102
========
- Polymorphic variants (see Basis.variant)
- New 'onError' directive for .urp files
- (* *) and <!-- --> comments in XML
- Basis.classes, Basis.confirm, and Basis.tryDml
- New notations ::_ and :::_, for constructor parameters of unknown kind
- Invocations like 'urweb foo' will compile foo.ur as a single-file project,
even if no foo.urp exists
- '-limit' command-line flag and 'limit' .urp directive
- Bug fixes and optimization improvements
========
20100603
========
- Changed URL escaping convention, to avoid confusing proxies.
The new convention is like the normal one, but with '.' instead of '%'.
- Changed JavaScript compilation of recursive functions to use thunks.
This change avoids most costs of functions not referenced on particular
pages, reducing loading time dramatically.
- Support HTTP caching of application-specific JavaScript code
- Bug fixes
========
20100506
========
- New experimental checker for information flow and access control policies
(See demo at http://www.impredicative.com/ur/scdv/)
========
20100401
========
- Subquery expressions and FROM items
- Low-level support for SELECT with no FROM clause
- Fixes for DBMS-portability of relational operators
========
20100325
========
- -verbose flag
- COUNT(col) SQL aggregate function
- 'benignEffectful' and 'safeGet' .urp commands
- Remove Basis.getRequestHeader, since it can be used to circumvent cookie
security
- Rename Top.foldR*X to map*X
- Bug fixes and optimization improvements
========
20100213
========
- Improvements to 'configure'; should now fail if any uncommon but required
package is missing
- Other fixes to configuration, build system, and C code portability
- sigfile .urp directive & -sigfile command-line option
- .urp files with no directives no longer need to begin with blank lines.
- Other bug fixes
========
20100130
========
- Conversion to an Automake-based build system, for greater portability in
building shared libraries
- -path and -root command-line flags
- Exported page handling functions (i.e., those page-generating functions
appearing in the main module's signature) may now take any number of
arguments, including 0.
========
20100112
========
- Basis.serialized type family, for storing more types in the database
- Basis.textBlob, for building blobs from strings
- Basis.debug function, for server-side debug printing
- Bug fixes & optimization improvements
========
20091230
========
- Automatic insertion of implicit arguments in more positions
- Reifying expressions as URLs and redirecting to them explicitly
- More syntactic sugar for SQL
- Typing of SQL queries no longer exposes which tables were used in joins but
had none of their fields projected
- Tasks
- Dynamic linking of the runtime system
- Optimization improvements
- Bug fixes
========
20091203
========
- Extended cookie interface (breaks backward compatibility for 'setCookie')
- Bug fixes
- Extended UTF-8 characters in HTML
========
20091124
========
- Improved Internet Explorer compatibility
========
20091108
========
- Bug fixes
- Optimization improvements
- Removed a restriction that prevented some RPCs and calls to sleep or recv
from compiling
========
20091012
========
- Small bug fixes affecting MySQL and SQLite
========
20091009
========
- Bug fixes
- Improvement to choice of line number to cite in record unification error
messages
- SELECT DISTINCT
- New extra demos: orm1 and versioned1
========
20090926
========
- Reimplemented client-side code generation to use an interpreter, rather than
compilation to JavaScript; this avoids common browser flaws: lack of
optimization of tail calls and occasional bugs in closure handling.
- Bug fixes
========
20090919
========
- Bug fixes
- Optimization improvements
- Expanded grid demo in demo/more: optional columns, sorting, filtering,
paging, selecting rows, aggregate row
========
20090912
========
- Bug fixes
- Optimization improvements
- New set of extra demos in demo/more
========
20090825
========
- Many bug fixes
- Remote procedure calls must be marked with the new 'rpc' function.
- Some tweaks to enable usage on OSX (suggested by Paul Snively)
========
20090718
========
- New application protocols: CGI and FastCGI
- New database backends: MySQL and SQLite
- More JavaScript events added to tags in standard library
- New manual section on using the foreign function interface (FFI)
========
20090623
========
- Many bug fixes
- Mutually-recursive datatypes
- SML-style pattern-matching syntax for "fun", "fn", and local "val"
- Backwards-incompatible change to syntax of formal constructor parameters to
value-level functions, to support the previous change
- Path map support inspired by SML/NJ CM and MLton ML Basis
- Start of some new standard library modules
- Some improvements to JavaScript runtime, including better error handling
========
20090505
========
- Reimplement constructor class resolution to be more general and Prolog-like
- SQL table constraints
- URLs
- Client-side error handling callbacks
- CSS
- Signing cookie values cryptographically to thwart cross site request forgery
- Blobs and HTTP file upload
- SQL outer joins
- SQL views
- Subforms
- C and JavaScript FFI
- Path rewriting
========
20090405
========
- Asynchronous message-passing and the associated server-side client
bookkeeping
- Reimplement parts of the client-side runtime system to avoid space leaks
- spawn and sleep
- Expand the constructor class instance rule format
========
20090312
========
- Replace type-level "fold" with "map"
- Replace expression-level "fold" with folders, defined in Top and
supported by some special compiler inference
- Replace guarded constructors with guarded types, introduced only by
guarded expression abstraction, and with a new explicit application form
- Kind polymorphism
- Generalize type classes to constructor classes
- Initial compilation of client-side code to JavaScript
- Initial support for mixed client- and server-side programming (i.e., "AJAX")
- src/coq: Coq formalization of a core Ur-like calculus
========
20081209
========
- Optimization: Fusing page writes with calls to recursive functions
- Optimization of bottleneck compiler phases
- Reference manual
- SQL arithmetic operators
========
20081120
========
- Fix bug that sometimes led to omission of initial "<html>" in pages
- Take advantage of nested functions in some demos
- "profile" option that may appear in .urp files, to enable gprof profiling
- "-guided-demo" option that works like "-demo" but uses less screen space for
prose
========
20081118
========
- Nested function definitions
- Primitive "time" type
- Nullable SQL columns (via "option")
- Cookies
- Compiler: Specialization of functions to known arguments (especially of
function type)
========
20081028
========
- Add GCCARGS configure option
========
20081027
========
- On missing inputs, print an error message, but don't exit the web server.
- Remove need for "() <-" notation.
========
20081026
========
- Change 'sed' call to work on OSX.
- Avoid including or linking libpq files on apps that don't use SQL.
|