adam@1826: ======== adam@1826: 20120925 adam@1826: ======== adam@1826: adam@1826: - Changes to optimization/compilation strategy that can speed up compilation and adam@1826: reduce code size dramatically adam@1826: - New .urp directives: 'coreInline' and 'monoInline' adam@1826: - 'show' instance for 'sql_query' adam@1826: - Improvements to compiler error messages adam@1826: - Bug fixes and optimization improvements adam@1826: adam@1806: ======== adam@1806: 20120807 adam@1806: ======== adam@1806: adam@1806: - Client-side mouse and keyboard event handlers are now functions over records. adam@1806: - More flexibility in local type class instances adam@1806: - Remove 'class' declaration; use 'con' instead now. adam@1806: - SQL window functions adam@1806: - New HTML pseudo-tag: adam@1806: - New Basis members: getenv (and associated functions), giveFocus adam@1806: - New Top member: postFields (to process POST form data when called by some external script) adam@1806: - HTTP daemons take '-a' option to set IP address to listen on adam@1806: - More global mouse event hooks adam@1806: - Bug fixes and performance improvements adam@1806: adam@1771: ======== adam@1771: 20120519 adam@1771: ======== adam@1771: adam@1771: - Compatibility fixes for new Automake and GCC versions adam@1771: - Allow synchronous RPC's in 'onunload' code adam@1771: - Start of special cases for parsing CSS class names: interpret "table" as identifier 'tabl' adam@1771: (since 'table' is an Ur/Web keyword) adam@1771: - Bug fixes and improvements to type inference and optimization adam@1771: adam@1758: ======== adam@1758: 20120512 adam@1758: ======== adam@1758: adam@1758: - New support for CSS style code embedded in Ur/Web programs. adam@1758: Two recommended usage methods: adam@1758: 1. Use 'style' attributes with normal CSS syntax inside string literals. adam@1758: 2. Generate styles programmatically with the Style module of the Gui library adam@1758: (distributed separately). adam@1758: - 'dynStyle' attribute, which is to 'style' as 'dynClass' is to 'class' adam@1758: - Parsing of standard syntax for 'class' attributes, via specially interpreted adam@1758: string literals adam@1758: - New optional suffix for 'rewrite' in .urp files: [-] adam@1758: - Compiler error message improvements, including simplification of types adam@1758: - New command line parameters: '-boot', '-dumpTypesOnError', '-unifyMore' adam@1758: - New .urp directives: 'linker' adam@1758: - Support for speeding up compilation by caching type inference results: adam@1758: Run 'urweb daemon start' to spawn a background process, adam@1758: 'urweb daemon stop' to kill it. adam@1758: - Enforcement of uniqueness of top-level module names across a project adam@1758: - Adjust error message format to match Emacs compilation mode defaults adam@1758: - More HTML attributes added adam@1758: - New antiquote syntax for 'PRIMARY KEY' adam@1758: - Bug fixes and improvements to type inference and platform compatibility adam@1758: adam@1705: ======== adam@1705: 20120329 adam@1705: ======== adam@1705: adam@1705: - New JavaScript FFI function: setInnerHTML adam@1705: - Bug fixes adam@1705: - Documentation improvements adam@1705: adam@1693: ======== adam@1693: 20120310 adam@1693: ======== adam@1693: adam@1693: - 'ORDER BY RANDOM' adam@1693: - New Basis members: diffInMilliseconds, toMilliseconds adam@1693: - widget now returns 'option string' instead of 'string' adam@1693: - '-dumpSource' command-line flag adam@1693: - Bug fixes and optimization improvements adam@1693: adam@1669: ======== adam@1669: 20120110 adam@1669: ======== adam@1669: adam@1669: - Improvements to type inference and error messages adam@1669: - New 'dynClass' pseudo-attribute for most HTML tags adam@1669: - New 't.*' notation for selecting all columns of a table adam@1669: - New SQL functions: 'lower' and 'upper' adam@1669: - 'timeFormat' .urp directive adam@1669: - Client-side 'debug' and 'naughtyDebug' calls use a browser debug console, if available adam@1669: - Allow 'source' values to be returned by RPCs adam@1669: - Change the HTML context classification scheme in 'Basis' adam@1669: - Rename 'Top.id' to 'ident' to avoid clash with 'Basis.id' adam@1669: - More client-side function implementations adam@1669: - Some expanded reference manual sections adam@1669: - Tweak to linker command line argument order (to prevent issues with new Ubuntu versions) adam@1669: - Bug fixes adam@1669: adam@1616: ======== adam@1616: 20111127 adam@1616: ======== adam@1616: adam@1616: - Improvements to type inference and error messages adam@1616: - New Basis members: ceil, float, null, round, trunc adam@1616: - New SQL expression forms: 'IF..THEN..ELSE', 'COALESCE', and 'LIKE' adam@1616: - Support for the full set of HTML character entities adam@1616: - Client-side versions of some time-related functions adam@1616: - New URWEB_PG_CON environment variable adam@1616: - Allow arguments for 'con' signature items, not just declarations adam@1616: - Bug fixes and performance improvements adam@1616: - Tweaks for idiosyncrasies of OS X (like deprecated OpenSSL) adam@1616: adam@1509: ======== adam@1561: 20110917 adam@1509: ======== adam@1509: adam@1509: - Start of official tutorial adam@1509: - Compiler support for generating nice tutorial HTML from literate source files adam@1509: - New protocol 'static' for generating static pages adam@1561: - Replace GCCARGS 'configure' variable with CCARGS adam@1561: - Better support for compilation with Clang (including on OS X) adam@1561: - Fancier 'configure' script with versioning adam@1523: - Applications consult URWEB_STACK_SIZE environment variable to determine thread adam@1523: stack size adam@1561: - HTML tag IDs now drawn from an abstract type adam@1561: - New Basis functions: diffInSeconds, mkMonad, onClick, onDblclick, onKeydown, adam@1561: onKeypress, onKeyup, onMousedown, onMouseup, preventDefault, stopPropagation, adam@1561: toSeconds adam@1561: - Add tag adam@1561: - Add 'target' attribute for adam@1561: - New compiler command-line option: -dumpTypes adam@1561: - New syntactic sugar for computed ORDER BY clauses adam@1561: - Bug fixes and optimization improvements adam@1509: adam@1492: ======== adam@1492: 20110715 adam@1492: ======== adam@1492: adam@1492: - Treat local variables the same as module-level variables, for the purpose of adam@1492: implicit argument insertion adam@1492: - New 'noXsrfProtection' directive for .urp files adam@1492: - Non-debug builds omit source location information in error messages shown to adam@1492: the user (but keep that information in log entries) adam@1492: - Basis.getHeader and Basis.setHeader adam@1492: - Basis.show_css_class adam@1492: - Basis.currentUrlHasQueryString adam@1492: - Make Basis.rand cryptographically secure adam@1492: - Client-side versions of Basis.now and Basis.show_time adam@1492: - Bug fixes adam@1492: - Improvements to auto-configuration and build process (now builds with LLVM's adam@1492: Clang!) adam@1492: - Clarifications in the manual adam@1492: 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.