Changes from 0.2.6 to 0.2.7 (released 29/9/07)

* Full pattern matching in case expressions
* 'let' bindings with pattern matching as lvalues
* Read/execute/print loop, invoked with 'kaya' command.
* Prepared statement support in DB module (and all three supported databases)
* Significant changes to Curses module to fit interface conventions
* Can now use external files for the application secret key
* TLS can now verify server certificates
* Full API documentation except for a couple of 'contrib' modules
* Numerous bug fixes for 64-bit systems (webapps now work properly there!)
  and for compiling with GCC 4.2
* Fix for regression introduced (but not spotted) in 0.2.5 regarding for loop
  counters
* Various other minor additions and bug fixes

Changes from 0.2.5 to 0.2.6 (released 23/6/07)

* File is no longer a primitive type. This change will require some code
  to be rewritten - see http://kayalang.org/download/upgrading
* List comprehensions
* Added raw string literals (r"foo\\\bar" or R"foo\\bar") and raw
  character literals (r'\' or R'\')
* Call stack and value stack can no longer be overflowed.
* No more separate PDCurses module. Windows users can now just import
  Curses which is now compatible with both ncurses and pdcurses.
* XML parser is now considerably faster
* Assignment to an array index, type member or global variable is now
  much faster
* Added Multicore module, implementing threaded map and zipWith and
  threaded application, as well as syntactic sugar for evaluating
  function arguments concurrently: fun#(arg1,...argn) to run 'fun'
  with code computing arg1-argn executed concurrently.
* Cookie header generators for client and server in HTTP and WebCommon
  modules.
* Better array implementation (clearer, and no need for createArray)
  shift/unshift operations are now much faster
* Some String optimisations
* Optimisations to various parts of the run-time system (5-20%
  improvement on real applications, more in special cases)
* kayac now deals with a ulimit restricting the number of concurrent open files
  sensibly
* Data type change in SDL module
* Binary-safe networking functions
* Unix sockets module (on posix systems only)
* SCGI interface functions
* Much more API documentation
* Update rand() function to not be completely hopeless
* Fix bugs with -static option
* Various other minor additions and bug fixes

Changes from 0.2.4 to 0.2.5 (release 20/4/07)

* Deprecated functions can now be located and avoided using the
  -deprfail option.
* Copy propagation optimisation, eliminating redundant temporary
  numeric values.
* Basic (cross module) inlining optimisation and improved constant
  reduction and if/else reduction where values are statically known.
* Fixed bug where public functions leaked their public status onto
  private functions of the same name. (and also deprecated status,
  more seriously)
* Fixed some bugs with function overloading
* More stdlib API docs
* xml2man correctly handles the filename parameter (thanks to Boris
  Jakubith for the patch)
* 'TagSoup' parsing mode for making some sort of guess at the meaning
  of poor-quality HTML.
* Basic templating facility for HTML documents
* libpcre now no longer needs to support UTF-8 to use Kaya (although
  functionality is significantly reduced in this case)
* External function declarations for those rare cases a circular
  dependency is necessary.
* Foreign function interface optimisations
* webappName function to replace progName when used in webapps and CGI
  (thanks to Philip Cullen for reporting this)
* Introduced limited support for parts of the SDL input/output library
* Fix bug that prevented compiling with GCC 4.3 (thanks to Martin Michlmayr
  for finding this and providing the fix)
* Fix bug with statements such as "return Char(f+200);" where the new value
  was not placed on the heap properly.
* Bug with array assignment fixed.
* Various other minor improvements and bug fixes

Changes from 0.2.3 to 0.2.4 (released 30/1/07)

* kayac much faster
* Set.k module added to stdlib, containing Set and HashSet data structures.
* KayaDoc.k module added to stdlib, to process -xmldocs output
* New website.
* Much more documentation for the standard prelude and some stdlib modules
* The Uploaded data type for files uploaded to webapps/CGI is now declared
  'abstract' to prevent accidental modification of the contents.
* File uploads are no longer enabled in webapps/CGI by default.
* New exception syntax available, old style exceptions now declared by
  '%Exception', and are now deprecated.
* Fixes a bug where default arguments to functions could reference other
  function arguments.
* Fixes a bug with using Regex::replace and Global on a string
  containing multi-byte UTF-8 characters
* Fixes some bugs related to reading very long strings from files.

Changes from 0.2.2 to 0.2.3 (released 4/12/06)

* Serious typechecking bug fixed (wrongly generalising polymorphic
  local variables, leading to programs typechecking when they
  shouldn't.)
* Various other minor improvements and fixes.

Changes from 0.2.1 to 0.2.2 (released 26/11/06)

* Added Reflect.k, a reflection/reification library to allow generic 
  programming over arbitrary data structures.
* Added Pickle.k, a library for converting objects to strings which
  may be saved to e.g. disks or databases.
* UTF-8 reader fixed.

Changes from 0.2.0 to 0.2.1 (released 15/11/06)

* program, webapp and webprog no longer reserved words. Instead, an
  arbitrary identifier can be used, provided that there is an
  appropriate .ks file in the module path. 
* File upload support in web programs.
* webapp and webprog renamed to cgi and webapp respectively; stdlib
  modules renamed to CGI and Webapp
* Global variables can be initialised at the point of declaration.
* File uploads in CGI/webapp
* Moved GL/Glut libraries into main distribution
* Kayac compiling time considerably improved
* Better, more informative, error messages
* Bug fixes and small library updates

Changes from 0.1.24 to 0.2.0 (released 26/6/06)

* Huge efficiency gains (space and time).
* Added 'default' alternative to case expressions.
* Added backtraces.
* Added Compress.k interface to zlib.
* More IO functions in standard library.
* Function name overloading (ad-hoc polymorphism).
* Some standard library reorganisation, including interface
  conventions.
* #! notation now allowed at start of programs
* Some Int and String performance tuning.
* Case analysis on constants.
* var keyword added, to mark arguments which may change.
* 'print' changed to 'trace', and now implemented with write(2) system
  call.
* Signal.k module reinstated.
* Added 'pure' keyword.
* Can use tuples in case expressions.
* Tuple assignment (i.e. (x,y,z) = expression)
* Wide character support.
* Replaced LazyArray module with Lazy module.
* for x@i in xs { ... } syntax, which binds x to element at index i
  for each element of xs.
* Unit testing support, in Testing.k.
* Coercions.k, including function versions of coercion operations, for
  use in higher order functions or for further overloading.
* Queue data structure module, Queue.k.

Changes from 0.1.23 to 0.1.24 (Released 2/8/05)

* Complex.k added to contrib/
* Floating point arithmetic bugs fixed.
* Marshaling of closures; therefore webapps can now use anonymous functions as
  event handlers.
* man page added.
* various IO library functions added.
* Gcrypt.k module added for symmetric cryptography.
* Optimisation framework added
* for loop optimisation
* Performance improvements in type inference algorithm (by caching
  substitutions as we go).
* [EXPERIMENTAL] removed OpenSSL in favour of Gcrypt, and moved the
  implementation of encode/decode to Kaya. Please report any problems.
* 'finally' clauses added to try...catch blocks.

Changes from 0.1.22 to 0.1.23 (Released 20/5/05)

* New LazyArray.k module.
* for loops can iterate over lazy arrays.
* Added power operator, for Int and Float (**).
* Constant folding optimisation.
* Startup code now written in Kaya, not C++.
* PreContent() and PostContent() now optional in webapps.
* HTTP module added. Only one function, for simple url retrieval, so far.
* Removed dependency on libcgi.
* data type export bug fixed.
* Added 'contrib' directory for user contributions to the library, and
  non-essential libraries.
* Converted all libraries to new foreign function syntax, and removed
  old syntax.

Changes from 0.1.21 to 0.1.22 (Released 20/4/05)

* lambda notation, allowing definition of anonymous functions.
* Curses.k module, binding to libncurses.
* Backtick notation for functions - x `foo` y === foo(x,y), 
  in non-void context.
* Some marginally better parser error messages.
* New foreign function binding syntax.
* Single constructor data types can now be declared as 
  data Foo<params>(args).
* Memory leaks in Arrays, Unions and Closures plugged.

Changes from 0.1.20 to 0.1.21 (Released 13/4/05)

* Renamed to Kaya.
* Tests now run after just "make", no need to "make install" first.
* Logger.k module, providing simple logging facilities.
* No longer need brackets with throw.
* Partial application, using f@(args).

Changes from 0.1.19 to 0.1.20 (Released 23/3/05)

* Array module now imported by Prelude, as the functions are so useful.
* Namespace bug fixed - now not a name clash if using the same name as
  a private function in another module.
* VM speed improvements; better stack implementation.
* Image.dph library, using libgd for image creation.
* More internal changes.

Changes from 0.1.18 to 0.1.19 (Released 1/3/05)

* && and || are now Bool operators, & and | Int operators, for
  consistency with mainstream languages.
* Shortcut evaluation of && and || now work.
* Removed unnecessary bits from abstract syntax, and made size() and
  fnid() library functions (in Builtins.dph) rather than built-in expressions.
* [n..n'] and [n,m..n'] syntactic sugar for generating arrays of Int.
* do...while loops (as in C) added.
* Reorganised directory structure so that optional modules are not in stdlib.

Changes from 0.1.17 to 0.1.18 (Released 13/2/05)

* Type synonyms work properly! (Pending proper testing...)
* Module chasing; dcc foo.dph now also compiles modules used by
  foo.dph, provided they are in the current directory. Use -nochase
  for old behaviour.
* Distinction between public, abstract and private data structures.
* Recompilation checking; only compiles if the source file is newer
  that than target. Use -force for old behaviour.
* Check for repeated field names.
* DolphinAPI.h added, with nicer API for C access to Dolphin values.
* -seedkey option, to allow same secret key during development.
* Implicit coercions on infix binary operators.

Changes from 0.1.16 to 0.1.17 (Released 4/2/05)

* Documentation strings on functions and data types, and "-htmldocs"
  and "-xmldocs" compiler options to export HTML/XML descriptions of
  the API.
* Added documentation strings to standard library.
* Changed module system; now only functions marked as "public" are
  exported, and any attempt to use a non-public function externally is
  a compile-time error.
* Module imports now not exported by default, use "import public" for
  old behaviour.
* Basic low level threads library, Threads.dph, built on pthreads.
* Library for binary data, Binary.dph.
* Marginally better error reporting.

Changes from 0.1.15 to 0.1.16 (Released 23/1/05)

* All variables now must be initialised, enforced by making it a parse
  error to declare without initialising.
* Renamed 'Real' to 'Float' (because that's what it really means!)
* Pickler does circular/self-referential structures. Not properly tested!
* Added "public" and "private" keywords for function export.
* Bugfixes, numerous library tweaks and twiddles.

Changes from 0.1.14 to 0.1.15 (Released 8/12/04)

* Checking for repeated data type names.
* New Mail.dph module, with a sendmail function for sending mail and
  functions for talking SMTP.
* Really nasty bug in the typechecker fixed.

Changes from 0.1.13 to 0.1.14 (Released 30/11/04)

* Smaller executables generated, and runtime system is now a shared object.
* Half-baked module system - functions and constructors live in
  per-module namespaces, but types still all live in the global namespace.
* Signal.dph module, which doesn't work properly...
* Time limit of 30 seconds CPU time  on web apps (TODO: Make this configurable)
* VM made thread safe! Yay! (Yet to be properly tested, but no use of
  global variables in the VM to represent stacks).

Changes from 0.1.12 to 0.1.13 (Released 21/11/04)

* Slight change to case syntax - no braces on branches, since it's
  really in the same block.
* "repeat" keyword to execute a control structure (eg case/if) repeatedly.
* Syntactic sugar for tuples (up to 6-tuples)
* Changed primitives to begin with capital letters (is this good or not?)
* Parser improvements; else if construct allowed, empty blocks
  allowed, no braces needed on control structure blocks with only one 
  statement.
* 'return' can now return from void functions.
* '==' now calls built in "equal" function on non-primitive types.
* Web forms made more type safe
* Internal stuff - moves towards namespaces for modules.
* New -libdir option.

Changes from 0.1.11 to 0.1.12 (Released 15/11/04)

* Guarded definitions.
* Default arguments to functions (must be last arguments in argument list).
* Net module (Net.dph).
* DB module for a database independent API.
* Annoying pass by reference bug with ADTs fixed.
* Overlapping case bug fixed.
* Changed date/time representation in System.dph

Changes from 0.1.10 to 0.1.11 (Released 6/11/04):

* Small speed improvements in the library
* Linker improvement - now only link with things which are used. Also
  no need to give required .o files on the command line, since they
  are automatically located.
* No need for () on functions of no arguments. @foo used to quote
  names if evaluation of foo is not wanted immediately.
* Shorthand definitions for functions which only return a value.
* Line number in error reporting fixed (probably!)
* Tail recursion optimisation
* Command line options -dumptac, -dumptree, -dumpraw, -keepc, -showgcc, for
  dumping intermediate structures and files.

Changes from 0.1.9 to 0.1.10 (Released 4/11/04):

* New implementation of arrays due to major bug - resizing arrays
  should not cause data to move, since there may be references to that
  data.
* Dictionary module (Dict.dph), implementing hash tables.
* Real numbers fully implemented (by C's double type).
* Basic Postgres interface (Postgres.dph).
* Maths functions (Maths.dph, imported by Prelude.dph).
* Some memory allocation bugs fixed.

Changes from 0.1.8 to 0.1.9:

* Added Builtin.dph module, which implements builtin functions which
  work for all types. Namely: marshal, unmarshal, compare, equal,
  hash, copy.
* Symmetric key encryption (encode, decode)
* Usual minor changes

Changes from 0.1.7 to 0.1.8:

* Automatically included Prelude
* Regex module, some stdlib changes and additions
* Webapp module and implementation of "webapp".
* Numerous minor changes

Changes from 0.1.6 to 0.1.7:

* "exception" primitive and try...catch clauses added.
* per-module global variables added.
* Makefile problems fixed.
* Numerous other fixes.


