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