This NEWS file records noteworthy changes, very tersely.
See the manual for detailed information.

  Copyright 2019-2021 The poke authors.

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

 Version 1.3 (5 June 2021)
* User visible changes
  - The `dump' command now remembers and re-uses the last used offset
    per IO space.  Before it was a global offset used for all IO
    spaces, which was very confusing.
  - The text accompanying constraint violation exceptions now indicate
    the type and the field whose constraint failed.
  - libpoke.h is now compatible with C++.
  - printf "%v" now gives valid literals for strings in all cases,
    even if they contain non-printable characters.  It uses
    hexadecimal escape sequences \xNN in that case.
* Bug fixes
  - We were overflowing the Boehm GC roots capacity under certain
    circumstances.  This has been fixed in this release.
  - Avoid leaking slots in the exceptions stack.
  - Fix struct printers to skip absent fields.
  - Other bug fixes.

 Version 1.2 (18 April 2021)
* User visible changes
  - The .file dot-command now supports a /c flag for creating new,
    empty files.
  - A new compiler built-in `ioflags' is available, that returns
    the flags of some given IO space.
  - Certain operations now raise a E_perm exception, instead of the
    more generic E_io.
  - A new kind of IO device is now supported: the `zero' IOD.
    Opening "<zero>" will result in an IO space covering the full
    64-bit byte range, that always returns zero on reads and that
    ignores writes.
  - Function values (closures) can now be compared at language-level.
    They are compared by pointer.
  - The compiler now rejects casts from `any' to function types
    instead of ICEing.
  - The `dump' command now doesn't try to print anything if the
    current IOS is not readable.
  - The `dump' command now prints ?? for "unknown" bytes, i.e. for bytes
    in addresses that are not readable in the underlying IO space.
  - The standard function `ltos' now gets an additional optional
    argument `base', that defaults to 10.
  - The `big' and `little' annotations can now be used in any struct
    type field, regardless of its type.
* Bug fixes
  - A very nasty performance bottleneck in pvm_array_insert has been
    fixed.
  - Fix the opening mode of write-only files when the user doesn't
    specify explicit flags in `open'.
  - Avoid spurious EOF exceptions when writing weird integers past
    the end of an IOS.
  - Fix method `value' in leb128.pk
  - Fix ICE while compiling for-statements with several declarations.
  - Properly print > 2^32 addresses in `dump'
  - Other minor fixes.
* Other changes
  - The JSON MI machinery has been rewriten and much improved.
  - More tests in several areas.

 Version 1.1 (21 March 2021)
* User visible changes
  - The IOS_F_TRUNCATE `open' flag has been removed.
  - Constraint expressions and initializers can be now
    used together in struct fields.
* Bug fixes
  - The infamous bug preventing poke work on 32-bit systems is now
    fixed.
  - Better handling of open modes in the file IOD.
  - Improve some translatable strings.
  - poke won't raise an exception when starting if HOME
    is not defined in the environment.
  - The compiler now emits an error if it sees un-map-able
    fields in a struct type.
  - Properly handle the absence of current IOS in the map command.
  - Install Emacs modes.
  - Portability fixes for:
    + Mac OS X 10.5.
    + GNU/Hurd.
    + Solaris 11 OpenIndiana.
    + AIX.
    + mingw.
* Manual
  - Relicensed to GPLv3+.
  - Expand section on struct methods.
  - New section on data padding and alignment.
  - Document the Emacs modes provided by poke.
  - Provide a recommended pokerc configuration for beginners.
  - Other minor fixes based on user feedback.

 Version 1.0 (26 February 2021)
* Initial release!
