summaryrefslogtreecommitdiff
path: root/CHANGELOG
blob: 99985fe8bcb4354829d2491daf2aa33f59118576 (plain)
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
========
Next
========

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