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