annotate CHANGELOG @ 1768:a613cae954ca

Some standard library additions from Edward Z. Yang
author Adam Chlipala <adam@chlipala.net>
date Sat, 19 May 2012 11:32:12 -0400
parents 7afe63952fe6
children 4cca386e5766
rev   line source
adam@1758 1 ========
adam@1758 2 20120512
adam@1758 3 ========
adam@1758 4
adam@1758 5 - New support for CSS style code embedded in Ur/Web programs.
adam@1758 6 Two recommended usage methods:
adam@1758 7 1. Use 'style' attributes with normal CSS syntax inside string literals.
adam@1758 8 2. Generate styles programmatically with the Style module of the Gui library
adam@1758 9 (distributed separately).
adam@1758 10 - 'dynStyle' attribute, which is to 'style' as 'dynClass' is to 'class'
adam@1758 11 - Parsing of standard syntax for 'class' attributes, via specially interpreted
adam@1758 12 string literals
adam@1758 13 - New optional suffix for 'rewrite' in .urp files: [-]
adam@1758 14 - Compiler error message improvements, including simplification of types
adam@1758 15 - New command line parameters: '-boot', '-dumpTypesOnError', '-unifyMore'
adam@1758 16 - New .urp directives: 'linker'
adam@1758 17 - Support for speeding up compilation by caching type inference results:
adam@1758 18 Run 'urweb daemon start' to spawn a background process,
adam@1758 19 'urweb daemon stop' to kill it.
adam@1758 20 - Enforcement of uniqueness of top-level module names across a project
adam@1758 21 - Adjust error message format to match Emacs compilation mode defaults
adam@1758 22 - More HTML attributes added
adam@1758 23 - New antiquote syntax for 'PRIMARY KEY'
adam@1758 24 - Bug fixes and improvements to type inference and platform compatibility
adam@1758 25
adam@1705 26 ========
adam@1705 27 20120329
adam@1705 28 ========
adam@1705 29
adam@1705 30 - New JavaScript FFI function: setInnerHTML
adam@1705 31 - Bug fixes
adam@1705 32 - Documentation improvements
adam@1705 33
adam@1693 34 ========
adam@1693 35 20120310
adam@1693 36 ========
adam@1693 37
adam@1693 38 - 'ORDER BY RANDOM'
adam@1693 39 - New Basis members: diffInMilliseconds, toMilliseconds
adam@1693 40 - <radio> widget now returns 'option string' instead of 'string'
adam@1693 41 - '-dumpSource' command-line flag
adam@1693 42 - Bug fixes and optimization improvements
adam@1693 43
adam@1669 44 ========
adam@1669 45 20120110
adam@1669 46 ========
adam@1669 47
adam@1669 48 - Improvements to type inference and error messages
adam@1669 49 - New 'dynClass' pseudo-attribute for most HTML tags
adam@1669 50 - New 't.*' notation for selecting all columns of a table
adam@1669 51 - New SQL functions: 'lower' and 'upper'
adam@1669 52 - 'timeFormat' .urp directive
adam@1669 53 - Client-side 'debug' and 'naughtyDebug' calls use a browser debug console, if available
adam@1669 54 - Allow 'source' values to be returned by RPCs
adam@1669 55 - Change the HTML context classification scheme in 'Basis'
adam@1669 56 - Rename 'Top.id' to 'ident' to avoid clash with 'Basis.id'
adam@1669 57 - More client-side function implementations
adam@1669 58 - Some expanded reference manual sections
adam@1669 59 - Tweak to linker command line argument order (to prevent issues with new Ubuntu versions)
adam@1669 60 - Bug fixes
adam@1669 61
adam@1616 62 ========
adam@1616 63 20111127
adam@1616 64 ========
adam@1616 65
adam@1616 66 - Improvements to type inference and error messages
adam@1616 67 - New Basis members: ceil, float, null, round, trunc
adam@1616 68 - New SQL expression forms: 'IF..THEN..ELSE', 'COALESCE', and 'LIKE'
adam@1616 69 - Support for the full set of HTML character entities
adam@1616 70 - Client-side versions of some time-related functions
adam@1616 71 - New URWEB_PG_CON environment variable
adam@1616 72 - Allow arguments for 'con' signature items, not just declarations
adam@1616 73 - Bug fixes and performance improvements
adam@1616 74 - Tweaks for idiosyncrasies of OS X (like deprecated OpenSSL)
adam@1616 75
adam@1509 76 ========
adam@1561 77 20110917
adam@1509 78 ========
adam@1509 79
adam@1509 80 - Start of official tutorial
adam@1509 81 - Compiler support for generating nice tutorial HTML from literate source files
adam@1509 82 - New protocol 'static' for generating static pages
adam@1561 83 - Replace GCCARGS 'configure' variable with CCARGS
adam@1561 84 - Better support for compilation with Clang (including on OS X)
adam@1561 85 - Fancier 'configure' script with versioning
adam@1523 86 - Applications consult URWEB_STACK_SIZE environment variable to determine thread
adam@1523 87 stack size
adam@1561 88 - HTML tag IDs now drawn from an abstract type
adam@1561 89 - New Basis functions: diffInSeconds, mkMonad, onClick, onDblclick, onKeydown,
adam@1561 90 onKeypress, onKeyup, onMousedown, onMouseup, preventDefault, stopPropagation,
adam@1561 91 toSeconds
adam@1561 92 - Add <image> tag
adam@1561 93 - Add 'target' attribute for <a>
adam@1561 94 - New compiler command-line option: -dumpTypes
adam@1561 95 - New syntactic sugar for computed ORDER BY clauses
adam@1561 96 - Bug fixes and optimization improvements
adam@1509 97
adam@1492 98 ========
adam@1492 99 20110715
adam@1492 100 ========
adam@1492 101
adam@1492 102 - Treat local variables the same as module-level variables, for the purpose of
adam@1492 103 implicit argument insertion
adam@1492 104 - New 'noXsrfProtection' directive for .urp files
adam@1492 105 - Non-debug builds omit source location information in error messages shown to
adam@1492 106 the user (but keep that information in log entries)
adam@1492 107 - Basis.getHeader and Basis.setHeader
adam@1492 108 - Basis.show_css_class
adam@1492 109 - Basis.currentUrlHasQueryString
adam@1492 110 - Make Basis.rand cryptographically secure
adam@1492 111 - Client-side versions of Basis.now and Basis.show_time
adam@1492 112 - Bug fixes
adam@1492 113 - Improvements to auto-configuration and build process (now builds with LLVM's
adam@1492 114 Clang!)
adam@1492 115 - Clarifications in the manual
adam@1492 116
adam@1458 117 ========
adam@1460 118 20110517
adam@1458 119 ========
adam@1458 120
adam@1458 121 - Cygwin compatibility
adam@1458 122 - Compatibility with Gentoo packaging process, including a .ebuild file
adam@1458 123 - Change typing of SQL subqueries, to indicate that they may always return NULL
adam@1458 124 (for no rows)
adam@1458 125 - Syntactic sugar for GROUP BY with variable numbers of columns
adam@1458 126 (using 'tab.{{c}}', where 'c :: {Type}')
adam@1458 127 - 'ALL' for SQL relational operators
adam@1458 128 - Add nullable types to the class for valid operands for SQL arithmetic
adam@1458 129 - 'alt' attribute for <img>
adam@1458 130 - <sup> and <sub> HTML tags
adam@1458 131 - Allow 'debug' and 'naughtyDebug' in client-side code, implemented with 'alert'
adam@1458 132 - Bug fixes and optimization improvements
adam@1458 133
adam@1400 134 ========
adam@1414 135 20110123
adam@1400 136 ========
adam@1400 137
adam@1400 138 - Changes to encoding of SQL aggregate functions: nullable types may be
adam@1400 139 aggregated, and non-COUNT aggregates return nullable results.
adam@1400 140 - SQL subqueries may apply aggregate functions to columns bound in enclosing
adam@1400 141 queries.
adam@1400 142 - Switch from libmhash to OpenSSL.
adam@1400 143 - 'cdataChar', for injecting arbitrary character codes into XML
adam@1400 144 - 'crypt', for access to the standard UNIX password encryption routine
adam@1400 145 - 'readUtc', for parsing time strings in the UTC time zone
adam@1400 146 - Built-in 'time' type now stores microseconds (which for now are only used in
adam@1400 147 connection with Postgres timestamps).
adam@1400 148 - Client-side URL blessing and redirection
adam@1400 149 - 'currentUrlHasPost' function
adam@1400 150 - Transactional 'free' functions now passed an argument indicating whether the
adam@1400 151 runtime system expects to retry the transaction.
adam@1400 152 - Change tasks to allow task kind-specific inputs
adam@1400 153 - Add 'clientLeaves' and 'periodic' task kinds
adam@1400 154 - Support for externally-callable pages, via the 'postBody' and 'queryString'
adam@1400 155 types and the 'effectfulUrl' function
adam@1400 156 - 'minHeap' and 'alwaysInline' .urp options
adam@1400 157 - '-prefix' command-line option
adam@1400 158 - Comments in .urp files (lines starting with '#')
adam@1400 159 - Miscellaneous additions to the standard library
adam@1400 160 - Bug fixes and improvements to type inference and optimization
adam@1400 161
adam@1287 162 ========
adam@1315 163 20101102
adam@1287 164 ========
adam@1287 165
adam@1287 166 - Polymorphic variants (see Basis.variant)
adam@1297 167 - New 'onError' directive for .urp files
adam@1287 168 - (* *) and <!-- --> comments in XML
adam@1297 169 - Basis.classes, Basis.confirm, and Basis.tryDml
adam@1309 170 - New notations ::_ and :::_, for constructor parameters of unknown kind
adam@1297 171 - Invocations like 'urweb foo' will compile foo.ur as a single-file project,
adam@1297 172 even if no foo.urp exists
adam@1309 173 - '-limit' command-line flag and 'limit' .urp directive
adam@1297 174 - Bug fixes and optimization improvements
adam@1287 175
adamc@1259 176 ========
adamc@1273 177 20100603
adamc@1259 178 ========
adamc@1259 179
adamc@1259 180 - Changed URL escaping convention, to avoid confusing proxies.
adamc@1259 181 The new convention is like the normal one, but with '.' instead of '%'.
adamc@1261 182 - Changed JavaScript compilation of recursive functions to use thunks.
adamc@1261 183 This change avoids most costs of functions not referenced on particular
adamc@1261 184 pages, reducing loading time dramatically.
adamc@1273 185 - Support HTTP caching of application-specific JavaScript code
adamc@1273 186 - Bug fixes
adamc@1259 187
adamc@1255 188 ========
adamc@1255 189 20100506
adamc@1255 190 ========
adamc@1255 191
adamc@1255 192 - New experimental checker for information flow and access control policies
adamc@1255 193 (See demo at http://www.impredicative.com/ur/scdv/)
adamc@1255 194
adamc@1197 195 ========
adamc@1197 196 20100401
adamc@1197 197 ========
adamc@1197 198
adamc@1197 199 - Subquery expressions and FROM items
adamc@1197 200 - Low-level support for SELECT with no FROM clause
adamc@1197 201 - Fixes for DBMS-portability of relational operators
adamc@1197 202
adamc@1183 203 ========
adamc@1190 204 20100325
adamc@1183 205 ========
adamc@1183 206
adamc@1188 207 - -verbose flag
adamc@1188 208 - COUNT(col) SQL aggregate function
adamc@1188 209 - 'benignEffectful' and 'safeGet' .urp commands
adamc@1188 210 - Remove Basis.getRequestHeader, since it can be used to circumvent cookie
adamc@1188 211 security
adamc@1190 212 - Rename Top.foldR*X to map*X
adamc@1188 213 - Bug fixes and optimization improvements
adamc@1183 214
adamc@1166 215 ========
adamc@1166 216 20100213
adamc@1166 217 ========
adamc@1166 218
adamc@1166 219 - Improvements to 'configure'; should now fail if any uncommon but required
adamc@1166 220 package is missing
adamc@1166 221 - Other fixes to configuration, build system, and C code portability
adamc@1166 222 - sigfile .urp directive & -sigfile command-line option
adamc@1166 223 - .urp files with no directives no longer need to begin with blank lines.
adamc@1166 224 - Other bug fixes
adamc@1166 225
adamc@1137 226 ========
adamc@1137 227 20100130
adamc@1137 228 ========
adamc@1137 229
adamc@1137 230 - Conversion to an Automake-based build system, for greater portability in
adamc@1137 231 building shared libraries
adamc@1137 232 - -path and -root command-line flags
adamc@1137 233 - Exported page handling functions (i.e., those page-generating functions
adamc@1137 234 appearing in the main module's signature) may now take any number of
adamc@1137 235 arguments, including 0.
adamc@1137 236
adamc@1123 237 ========
adamc@1123 238 20100112
adamc@1123 239 ========
adamc@1123 240
adamc@1123 241 - Basis.serialized type family, for storing more types in the database
adamc@1123 242 - Basis.textBlob, for building blobs from strings
adamc@1123 243 - Basis.debug function, for server-side debug printing
adamc@1123 244 - Bug fixes & optimization improvements
adamc@1123 245
adamc@1065 246 ========
adamc@1103 247 20091230
adamc@1065 248 ========
adamc@1065 249
adamc@1093 250 - Automatic insertion of implicit arguments in more positions
adamc@1065 251 - Reifying expressions as URLs and redirecting to them explicitly
adamc@1070 252 - More syntactic sugar for SQL
adamc@1070 253 - Typing of SQL queries no longer exposes which tables were used in joins but
adamc@1070 254 had none of their fields projected
adamc@1075 255 - Tasks
adamc@1095 256 - Dynamic linking of the runtime system
adamc@1077 257 - Optimization improvements
adamc@1103 258 - Bug fixes
adamc@1065 259
adamc@1050 260 ========
adamc@1056 261 20091203
adamc@1050 262 ========
adamc@1050 263
adamc@1050 264 - Extended cookie interface (breaks backward compatibility for 'setCookie')
adamc@1050 265 - Bug fixes
adamc@1056 266 - Extended UTF-8 characters in HTML
adamc@1050 267
adamc@1043 268 ========
adamc@1043 269 20091124
adamc@1043 270 ========
adamc@1043 271
adamc@1043 272 - Improved Internet Explorer compatibility
adamc@1043 273
adamc@1020 274 ========
adamc@1033 275 20091108
adamc@1020 276 ========
adamc@1020 277
adamc@1020 278 - Bug fixes
adamc@1020 279 - Optimization improvements
adamc@1021 280 - Removed a restriction that prevented some RPCs and calls to sleep or recv
adamc@1021 281 from compiling
adamc@1020 282
adamc@999 283 ========
adamc@999 284 20091012
adamc@999 285 ========
adamc@999 286
adamc@999 287 - Small bug fixes affecting MySQL and SQLite
adamc@999 288
adamc@988 289 ========
adamc@997 290 20091009
adamc@988 291 ========
adamc@988 292
adamc@988 293 - Bug fixes
adamc@988 294 - Improvement to choice of line number to cite in record unification error
adamc@988 295 messages
adamc@994 296 - SELECT DISTINCT
adamc@996 297 - New extra demos: orm1 and versioned1
adamc@988 298
adamc@985 299 ========
adamc@985 300 20090926
adamc@985 301 ========
adamc@985 302
adamc@985 303 - Reimplemented client-side code generation to use an interpreter, rather than
adamc@985 304 compilation to JavaScript; this avoids common browser flaws: lack of
adamc@985 305 optimization of tail calls and occasional bugs in closure handling.
adamc@985 306 - Bug fixes
adamc@985 307
adamc@968 308 ========
adamc@968 309 20090919
adamc@968 310 ========
adamc@968 311
adamc@968 312 - Bug fixes
adamc@968 313 - Optimization improvements
adamc@968 314 - Expanded grid demo in demo/more: optional columns, sorting, filtering,
adamc@968 315 paging, selecting rows, aggregate row
adamc@968 316
adamc@929 317 ========
adamc@929 318 20090912
adamc@929 319 ========
adamc@929 320
adamc@929 321 - Bug fixes
adamc@929 322 - Optimization improvements
adamc@929 323 - New set of extra demos in demo/more
adamc@929 324
adamc@914 325 ========
adamc@914 326 20090825
adamc@914 327 ========
adamc@914 328
adamc@914 329 - Many bug fixes
adamc@914 330 - Remote procedure calls must be marked with the new 'rpc' function.
adamc@914 331 - Some tweaks to enable usage on OSX (suggested by Paul Snively)
adamc@914 332
adamc@897 333 ========
adamc@897 334 20090718
adamc@897 335 ========
adamc@897 336
adamc@897 337 - New application protocols: CGI and FastCGI
adamc@897 338 - New database backends: MySQL and SQLite
adamc@897 339 - More JavaScript events added to tags in standard library
adamc@897 340 - New manual section on using the foreign function interface (FFI)
adamc@897 341
adamc@852 342 ========
adamc@852 343 20090623
adamc@852 344 ========
adamc@852 345
adamc@852 346 - Many bug fixes
adamc@852 347 - Mutually-recursive datatypes
adamc@852 348 - SML-style pattern-matching syntax for "fun", "fn", and local "val"
adamc@852 349 - Backwards-incompatible change to syntax of formal constructor parameters to
adamc@852 350 value-level functions, to support the previous change
adamc@852 351 - Path map support inspired by SML/NJ CM and MLton ML Basis
adamc@852 352 - Start of some new standard library modules
adamc@852 353 - Some improvements to JavaScript runtime, including better error handling
adamc@852 354
adamc@716 355 ========
adamc@790 356 20090505
adamc@716 357 ========
adamc@716 358
adamc@716 359 - Reimplement constructor class resolution to be more general and Prolog-like
adamc@716 360 - SQL table constraints
adamc@770 361 - URLs
adamc@736 362 - Client-side error handling callbacks
adamc@736 363 - CSS
adamc@736 364 - Signing cookie values cryptographically to thwart cross site request forgery
adamc@744 365 - Blobs and HTTP file upload
adamc@752 366 - SQL outer joins
adamc@755 367 - SQL views
adamc@756 368 - Subforms
adamc@768 369 - C and JavaScript FFI
adamc@768 370 - Path rewriting
adamc@716 371
adamc@702 372 ========
adamc@702 373 20090405
adamc@702 374 ========
adamc@702 375
adamc@702 376 - Asynchronous message-passing and the associated server-side client
adamc@702 377 bookkeeping
adamc@702 378 - Reimplement parts of the client-side runtime system to avoid space leaks
adamc@702 379 - spawn and sleep
adamc@702 380 - Expand the constructor class instance rule format
adamc@702 381
adamc@663 382 ========
adamc@663 383 20090312
adamc@663 384 ========
adamc@663 385
adamc@663 386 - Replace type-level "fold" with "map"
adamc@663 387 - Replace expression-level "fold" with folders, defined in Top and
adamc@663 388 supported by some special compiler inference
adamc@663 389 - Replace guarded constructors with guarded types, introduced only by
adamc@663 390 guarded expression abstraction, and with a new explicit application form
adamc@663 391 - Kind polymorphism
adamc@663 392 - Generalize type classes to constructor classes
adamc@663 393 - Initial compilation of client-side code to JavaScript
adamc@663 394 - Initial support for mixed client- and server-side programming (i.e., "AJAX")
adamc@665 395 - src/coq: Coq formalization of a core Ur-like calculus
adamc@663 396
adamc@506 397 ========
adamc@561 398 20081209
adamc@506 399 ========
adamc@506 400
adamc@506 401 - Optimization: Fusing page writes with calls to recursive functions
adamc@523 402 - Optimization of bottleneck compiler phases
adamc@561 403 - Reference manual
adamc@561 404 - SQL arithmetic operators
adamc@506 405
adamc@504 406 ========
adamc@504 407 20081120
adamc@504 408 ========
adamc@504 409
adamc@504 410 - Fix bug that sometimes led to omission of initial "<html>" in pages
adamc@504 411 - Take advantage of nested functions in some demos
adamc@504 412 - "profile" option that may appear in .urp files, to enable gprof profiling
adamc@663 413 - "-guided-demo" option that works like "-demo" but uses less screen space for
adamc@663 414 prose
adamc@504 415
adamc@467 416 ========
adamc@497 417 20081118
adamc@467 418 ========
adamc@467 419
adamc@467 420 - Nested function definitions
adamc@467 421 - Primitive "time" type
adamc@467 422 - Nullable SQL columns (via "option")
adamc@467 423 - Cookies
adamc@663 424 - Compiler: Specialization of functions to known arguments (especially of
adamc@663 425 function type)
adamc@467 426
adamc@435 427 ========
adamc@435 428 20081028
adamc@435 429 ========
adamc@435 430
adamc@435 431 - Add GCCARGS configure option
adamc@435 432
adamc@433 433 ========
adamc@433 434 20081027
adamc@433 435 ========
adamc@433 436
adamc@433 437 - On missing inputs, print an error message, but don't exit the web server.
adamc@434 438 - Remove need for "() <-" notation.
adamc@433 439
adamc@433 440 ========
adamc@433 441 20081026
adamc@433 442 ========
adamc@433 443
adamc@433 444 - Change 'sed' call to work on OSX.
adamc@433 445 - Avoid including or linking libpq files on apps that don't use SQL.