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.