
Copyright (C) 2022  Terence Kelly

=====================================================================

Changes  2022.08Aug.03.1659520468_Avon_7  ->  2022.10Oct.30.1667172241 (Avon 8)

Previous release ("Avon 7") was included in persistent memory gawk
(gawk 5.2) and thereby extensively tested on a wide range of hardware
and software platforms.  Testing turned up one genuine pma bug and
several portability/compatability issues; see the README file.

Re-wrote binary search in addrgap() function to fix unintended
wraparound of unsigned integer, which caused initialization to fail
on s390x-suse-linux, where mmap() succeeds for length values greater
than 2^63.  Thanks to Andreas Schwab for reporting this bug and
testing the fix.

Thanks also to gawk maintainer Arnold Robbins for preliminary tests
on several sub-species of BSD, which revealed two problems; see the
README file.  If you know about BSD and can spare time to look into
this, please contact me.

Hermann Peifer tested pm-gawk and identified several bugs.  Peifer
and Kevin O'Malley ran tests on MacOS/M1, discovering and confirming
that -no-pie is not obeyed on this platform.  Atul Prakash ran tests
on CIFS, and Corinna Vinschen ran tests on Cygwin.

= = = = = = = = = =

Future plans (not promises; subject to change):
* new interface to allow clients to msync heap file, possibly also
     snapshot as with gdbm
* new verbosity level 4:  TRC ("trace") for many current FYIs
* re-arrange integrity checking, expose in pma.h
* stand-alone heap integrity checker program
* enable assertions and/or integrity checks via envar
* backtrace within integrity checker, enable via envar
* alternative to get/set root:  return pointer to heap's root pointer

=====================================================================

Changes  2022.07Jul.19.1658299753_Avon_6  ->  2022.08Aug.03.1659520468_Avon_7

Only one relatively minor change:  Fix integrity check in pma_init to
avoid rare unwanted overheads when compiled in NDEBUG mode.

=====================================================================

Changes  2022.05May.01_Avon_5  ->  2022.07Jul.19.1658299753_Avon_6

This round of changes was largely motivated by persistent gawk.
Thanks to gawk maintainer Arnold Robbins and Corinna Vinschen for
helpful suggestions, to Nelson Beebe for access to machines for
testing, and to Haris Volos for conducting extensive correctness
and performance tests.

00_README:
* add notes on OS configuration and performance
* clarify 8-byte machine word requirement
* urge users to run tests with assertions enabled
* clarify (non-)portability of heap files
* update URLs to pma and pm-gawk publications
* add URLs for official gawk

pma.h: pma_init():
* encourage large sparse heap files
* clarify return value
* clarify rules & recommendations for persistent heap file
* integrity check may be slow

pma.c:
* accommodate older compilers that reject certain legal code (himask)
* modernize printf formats, e.g., "z" for size_t
* change some assertions to ERRs
* allow environment variable to over-ride pma_init verbosity
* enforce stricter alignment for memory mapping of heap file
* relax constraints on size of heap file

=====================================================================

