view CHANGELOG @ 1739:c414850f206f

Add support for -boot flag, which allows in-tree execution of Ur/Web The boot flag rewrites most hardcoded paths to point to the build directory, and also forces static compilation. This is convenient for developing Ur/Web, or if you cannot 'sudo make install' Ur/Web. The following changes were made: * Header files were moved to include/urweb instead of include; this lets FFI users point their C_INCLUDE_PATH at this directory at write <urweb/urweb.h>. For internal Ur/Web executables, we simply pass -I$PATH/include/urweb as normal. * Differentiate between LIB and SRCLIB; SRCLIB is Ur and JavaScript source files, while LIB is compiled products from libtool. For in-tree compilation these live in different places. * No longer reference Config for paths; instead use Settings; these settings can be changed dynamically by Compiler.enableBoot () (TODO: add a disableBoot function.) * config.h is now generated directly in include/urweb/config.h, for consistency's sake (especially since it gets installed along with the rest of the headers!) * All of the autotools build products got updated. * The linkStatic field in protocols now only contains the name of the build product, and not the absolute path. Future users have to be careful not to reference the Settings files to early, lest they get an old version (this was the source of two bugs during development of this patch.)
author Edward Z. Yang <ezyang@mit.edu>
date Wed, 02 May 2012 17:17:57 -0400
parents d29d39d93820
children 7afe63952fe6
line wrap: on
line source
========
20120329
========

- New JavaScript FFI function: setInnerHTML
- Bug fixes
- Documentation improvements

========
20120310
========

- 'ORDER BY RANDOM'
- New Basis members: diffInMilliseconds, toMilliseconds
- <radio> widget now returns 'option string' instead of 'string'
- '-dumpSource' command-line flag
- Bug fixes and optimization improvements

========
20120110
========

- Improvements to type inference and error messages
- New 'dynClass' pseudo-attribute for most HTML tags
- New 't.*' notation for selecting all columns of a table
- New SQL functions: 'lower' and 'upper'
- 'timeFormat' .urp directive
- Client-side 'debug' and 'naughtyDebug' calls use a browser debug console, if available
- Allow 'source' values to be returned by RPCs
- Change the HTML context classification scheme in 'Basis'
- Rename 'Top.id' to 'ident' to avoid clash with 'Basis.id'
- More client-side function implementations
- Some expanded reference manual sections
- Tweak to linker command line argument order (to prevent issues with new Ubuntu versions)
- Bug fixes

========
20111127
========

- Improvements to type inference and error messages
- New Basis members: ceil, float, null, round, trunc
- New SQL expression forms: 'IF..THEN..ELSE', 'COALESCE', and 'LIKE'
- Support for the full set of HTML character entities
- Client-side versions of some time-related functions
- New URWEB_PG_CON environment variable
- Allow arguments for 'con' signature items, not just declarations
- Bug fixes and performance improvements
- Tweaks for idiosyncrasies of OS X (like deprecated OpenSSL)

========
20110917
========

- Start of official tutorial
- Compiler support for generating nice tutorial HTML from literate source files
- New protocol 'static' for generating static pages
- Replace GCCARGS 'configure' variable with CCARGS
- Better support for compilation with Clang (including on OS X)
- Fancier 'configure' script with versioning
- Applications consult URWEB_STACK_SIZE environment variable to determine thread
  stack size
- HTML tag IDs now drawn from an abstract type
- New Basis functions: diffInSeconds, mkMonad, onClick, onDblclick, onKeydown,
  onKeypress, onKeyup, onMousedown, onMouseup, preventDefault, stopPropagation,
  toSeconds
- Add <image> tag
- Add 'target' attribute for <a>
- New compiler command-line option: -dumpTypes
- New syntactic sugar for computed ORDER BY clauses
- Bug fixes and optimization improvements

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