adam@1458: ========
adam@1460: 20110517
adam@1458: ========
adam@1458:
adam@1458: - Cygwin compatibility
adam@1458: - Compatibility with Gentoo packaging process, including a .ebuild file
adam@1458: - Change typing of SQL subqueries, to indicate that they may always return NULL
adam@1458: (for no rows)
adam@1458: - Syntactic sugar for GROUP BY with variable numbers of columns
adam@1458: (using 'tab.{{c}}', where 'c :: {Type}')
adam@1458: - 'ALL' for SQL relational operators
adam@1458: - Add nullable types to the class for valid operands for SQL arithmetic
adam@1458: - 'alt' attribute for
adam@1458: - and HTML tags
adam@1458: - Allow 'debug' and 'naughtyDebug' in client-side code, implemented with 'alert'
adam@1458: - Bug fixes and optimization improvements
adam@1458:
adam@1400: ========
adam@1414: 20110123
adam@1400: ========
adam@1400:
adam@1400: - Changes to encoding of SQL aggregate functions: nullable types may be
adam@1400: aggregated, and non-COUNT aggregates return nullable results.
adam@1400: - SQL subqueries may apply aggregate functions to columns bound in enclosing
adam@1400: queries.
adam@1400: - Switch from libmhash to OpenSSL.
adam@1400: - 'cdataChar', for injecting arbitrary character codes into XML
adam@1400: - 'crypt', for access to the standard UNIX password encryption routine
adam@1400: - 'readUtc', for parsing time strings in the UTC time zone
adam@1400: - Built-in 'time' type now stores microseconds (which for now are only used in
adam@1400: connection with Postgres timestamps).
adam@1400: - Client-side URL blessing and redirection
adam@1400: - 'currentUrlHasPost' function
adam@1400: - Transactional 'free' functions now passed an argument indicating whether the
adam@1400: runtime system expects to retry the transaction.
adam@1400: - Change tasks to allow task kind-specific inputs
adam@1400: - Add 'clientLeaves' and 'periodic' task kinds
adam@1400: - Support for externally-callable pages, via the 'postBody' and 'queryString'
adam@1400: types and the 'effectfulUrl' function
adam@1400: - 'minHeap' and 'alwaysInline' .urp options
adam@1400: - '-prefix' command-line option
adam@1400: - Comments in .urp files (lines starting with '#')
adam@1400: - Miscellaneous additions to the standard library
adam@1400: - Bug fixes and improvements to type inference and optimization
adam@1400:
adam@1287: ========
adam@1315: 20101102
adam@1287: ========
adam@1287:
adam@1287: - Polymorphic variants (see Basis.variant)
adam@1297: - New 'onError' directive for .urp files
adam@1287: - (* *) and comments in XML
adam@1297: - Basis.classes, Basis.confirm, and Basis.tryDml
adam@1309: - New notations ::_ and :::_, for constructor parameters of unknown kind
adam@1297: - Invocations like 'urweb foo' will compile foo.ur as a single-file project,
adam@1297: even if no foo.urp exists
adam@1309: - '-limit' command-line flag and 'limit' .urp directive
adam@1297: - Bug fixes and optimization improvements
adam@1287:
adamc@1259: ========
adamc@1273: 20100603
adamc@1259: ========
adamc@1259:
adamc@1259: - Changed URL escaping convention, to avoid confusing proxies.
adamc@1259: The new convention is like the normal one, but with '.' instead of '%'.
adamc@1261: - Changed JavaScript compilation of recursive functions to use thunks.
adamc@1261: This change avoids most costs of functions not referenced on particular
adamc@1261: pages, reducing loading time dramatically.
adamc@1273: - Support HTTP caching of application-specific JavaScript code
adamc@1273: - Bug fixes
adamc@1259:
adamc@1255: ========
adamc@1255: 20100506
adamc@1255: ========
adamc@1255:
adamc@1255: - New experimental checker for information flow and access control policies
adamc@1255: (See demo at http://www.impredicative.com/ur/scdv/)
adamc@1255:
adamc@1197: ========
adamc@1197: 20100401
adamc@1197: ========
adamc@1197:
adamc@1197: - Subquery expressions and FROM items
adamc@1197: - Low-level support for SELECT with no FROM clause
adamc@1197: - Fixes for DBMS-portability of relational operators
adamc@1197:
adamc@1183: ========
adamc@1190: 20100325
adamc@1183: ========
adamc@1183:
adamc@1188: - -verbose flag
adamc@1188: - COUNT(col) SQL aggregate function
adamc@1188: - 'benignEffectful' and 'safeGet' .urp commands
adamc@1188: - Remove Basis.getRequestHeader, since it can be used to circumvent cookie
adamc@1188: security
adamc@1190: - Rename Top.foldR*X to map*X
adamc@1188: - Bug fixes and optimization improvements
adamc@1183:
adamc@1166: ========
adamc@1166: 20100213
adamc@1166: ========
adamc@1166:
adamc@1166: - Improvements to 'configure'; should now fail if any uncommon but required
adamc@1166: package is missing
adamc@1166: - Other fixes to configuration, build system, and C code portability
adamc@1166: - sigfile .urp directive & -sigfile command-line option
adamc@1166: - .urp files with no directives no longer need to begin with blank lines.
adamc@1166: - Other bug fixes
adamc@1166:
adamc@1137: ========
adamc@1137: 20100130
adamc@1137: ========
adamc@1137:
adamc@1137: - Conversion to an Automake-based build system, for greater portability in
adamc@1137: building shared libraries
adamc@1137: - -path and -root command-line flags
adamc@1137: - Exported page handling functions (i.e., those page-generating functions
adamc@1137: appearing in the main module's signature) may now take any number of
adamc@1137: arguments, including 0.
adamc@1137:
adamc@1123: ========
adamc@1123: 20100112
adamc@1123: ========
adamc@1123:
adamc@1123: - Basis.serialized type family, for storing more types in the database
adamc@1123: - Basis.textBlob, for building blobs from strings
adamc@1123: - Basis.debug function, for server-side debug printing
adamc@1123: - Bug fixes & optimization improvements
adamc@1123:
adamc@1065: ========
adamc@1103: 20091230
adamc@1065: ========
adamc@1065:
adamc@1093: - Automatic insertion of implicit arguments in more positions
adamc@1065: - Reifying expressions as URLs and redirecting to them explicitly
adamc@1070: - More syntactic sugar for SQL
adamc@1070: - Typing of SQL queries no longer exposes which tables were used in joins but
adamc@1070: had none of their fields projected
adamc@1075: - Tasks
adamc@1095: - Dynamic linking of the runtime system
adamc@1077: - Optimization improvements
adamc@1103: - Bug fixes
adamc@1065:
adamc@1050: ========
adamc@1056: 20091203
adamc@1050: ========
adamc@1050:
adamc@1050: - Extended cookie interface (breaks backward compatibility for 'setCookie')
adamc@1050: - Bug fixes
adamc@1056: - Extended UTF-8 characters in HTML
adamc@1050:
adamc@1043: ========
adamc@1043: 20091124
adamc@1043: ========
adamc@1043:
adamc@1043: - Improved Internet Explorer compatibility
adamc@1043:
adamc@1020: ========
adamc@1033: 20091108
adamc@1020: ========
adamc@1020:
adamc@1020: - Bug fixes
adamc@1020: - Optimization improvements
adamc@1021: - Removed a restriction that prevented some RPCs and calls to sleep or recv
adamc@1021: from compiling
adamc@1020:
adamc@999: ========
adamc@999: 20091012
adamc@999: ========
adamc@999:
adamc@999: - Small bug fixes affecting MySQL and SQLite
adamc@999:
adamc@988: ========
adamc@997: 20091009
adamc@988: ========
adamc@988:
adamc@988: - Bug fixes
adamc@988: - Improvement to choice of line number to cite in record unification error
adamc@988: messages
adamc@994: - SELECT DISTINCT
adamc@996: - New extra demos: orm1 and versioned1
adamc@988:
adamc@985: ========
adamc@985: 20090926
adamc@985: ========
adamc@985:
adamc@985: - Reimplemented client-side code generation to use an interpreter, rather than
adamc@985: compilation to JavaScript; this avoids common browser flaws: lack of
adamc@985: optimization of tail calls and occasional bugs in closure handling.
adamc@985: - Bug fixes
adamc@985:
adamc@968: ========
adamc@968: 20090919
adamc@968: ========
adamc@968:
adamc@968: - Bug fixes
adamc@968: - Optimization improvements
adamc@968: - Expanded grid demo in demo/more: optional columns, sorting, filtering,
adamc@968: paging, selecting rows, aggregate row
adamc@968:
adamc@929: ========
adamc@929: 20090912
adamc@929: ========
adamc@929:
adamc@929: - Bug fixes
adamc@929: - Optimization improvements
adamc@929: - New set of extra demos in demo/more
adamc@929:
adamc@914: ========
adamc@914: 20090825
adamc@914: ========
adamc@914:
adamc@914: - Many bug fixes
adamc@914: - Remote procedure calls must be marked with the new 'rpc' function.
adamc@914: - Some tweaks to enable usage on OSX (suggested by Paul Snively)
adamc@914:
adamc@897: ========
adamc@897: 20090718
adamc@897: ========
adamc@897:
adamc@897: - New application protocols: CGI and FastCGI
adamc@897: - New database backends: MySQL and SQLite
adamc@897: - More JavaScript events added to tags in standard library
adamc@897: - New manual section on using the foreign function interface (FFI)
adamc@897:
adamc@852: ========
adamc@852: 20090623
adamc@852: ========
adamc@852:
adamc@852: - Many bug fixes
adamc@852: - Mutually-recursive datatypes
adamc@852: - SML-style pattern-matching syntax for "fun", "fn", and local "val"
adamc@852: - Backwards-incompatible change to syntax of formal constructor parameters to
adamc@852: value-level functions, to support the previous change
adamc@852: - Path map support inspired by SML/NJ CM and MLton ML Basis
adamc@852: - Start of some new standard library modules
adamc@852: - Some improvements to JavaScript runtime, including better error handling
adamc@852:
adamc@716: ========
adamc@790: 20090505
adamc@716: ========
adamc@716:
adamc@716: - Reimplement constructor class resolution to be more general and Prolog-like
adamc@716: - SQL table constraints
adamc@770: - URLs
adamc@736: - Client-side error handling callbacks
adamc@736: - CSS
adamc@736: - Signing cookie values cryptographically to thwart cross site request forgery
adamc@744: - Blobs and HTTP file upload
adamc@752: - SQL outer joins
adamc@755: - SQL views
adamc@756: - Subforms
adamc@768: - C and JavaScript FFI
adamc@768: - Path rewriting
adamc@716:
adamc@702: ========
adamc@702: 20090405
adamc@702: ========
adamc@702:
adamc@702: - Asynchronous message-passing and the associated server-side client
adamc@702: bookkeeping
adamc@702: - Reimplement parts of the client-side runtime system to avoid space leaks
adamc@702: - spawn and sleep
adamc@702: - Expand the constructor class instance rule format
adamc@702:
adamc@663: ========
adamc@663: 20090312
adamc@663: ========
adamc@663:
adamc@663: - Replace type-level "fold" with "map"
adamc@663: - Replace expression-level "fold" with folders, defined in Top and
adamc@663: supported by some special compiler inference
adamc@663: - Replace guarded constructors with guarded types, introduced only by
adamc@663: guarded expression abstraction, and with a new explicit application form
adamc@663: - Kind polymorphism
adamc@663: - Generalize type classes to constructor classes
adamc@663: - Initial compilation of client-side code to JavaScript
adamc@663: - Initial support for mixed client- and server-side programming (i.e., "AJAX")
adamc@665: - src/coq: Coq formalization of a core Ur-like calculus
adamc@663:
adamc@506: ========
adamc@561: 20081209
adamc@506: ========
adamc@506:
adamc@506: - Optimization: Fusing page writes with calls to recursive functions
adamc@523: - Optimization of bottleneck compiler phases
adamc@561: - Reference manual
adamc@561: - SQL arithmetic operators
adamc@506:
adamc@504: ========
adamc@504: 20081120
adamc@504: ========
adamc@504:
adamc@504: - Fix bug that sometimes led to omission of initial "" in pages
adamc@504: - Take advantage of nested functions in some demos
adamc@504: - "profile" option that may appear in .urp files, to enable gprof profiling
adamc@663: - "-guided-demo" option that works like "-demo" but uses less screen space for
adamc@663: prose
adamc@504:
adamc@467: ========
adamc@497: 20081118
adamc@467: ========
adamc@467:
adamc@467: - Nested function definitions
adamc@467: - Primitive "time" type
adamc@467: - Nullable SQL columns (via "option")
adamc@467: - Cookies
adamc@663: - Compiler: Specialization of functions to known arguments (especially of
adamc@663: function type)
adamc@467:
adamc@435: ========
adamc@435: 20081028
adamc@435: ========
adamc@435:
adamc@435: - Add GCCARGS configure option
adamc@435:
adamc@433: ========
adamc@433: 20081027
adamc@433: ========
adamc@433:
adamc@433: - On missing inputs, print an error message, but don't exit the web server.
adamc@434: - Remove need for "() <-" notation.
adamc@433:
adamc@433: ========
adamc@433: 20081026
adamc@433: ========
adamc@433:
adamc@433: - Change 'sed' call to work on OSX.
adamc@433: - Avoid including or linking libpq files on apps that don't use SQL.