-------------------- AmigaOS 3.1.4.(1) project -----------------------

Changes for release 45.2 (16.12.2016)

- Changed the puddle size of the memory pools such that an entire
multiple of the block size of the RAM allocated internal block storage
fits into them. A single puddle can now keep 64 RAM blocks.

NOTE: memory pools are probably not ideal for RAM-Handler usage anyhow,
and a smarter mechanism should be used instead in future releases.

- Updated ACTION_DISK_INFO to correctly return the total available
RAM and hence the correct fill state of RAM:. This avoids problems with
some programs that try to learn whether they have enough free storage on
the target medium for a particular operation. Note that this calculation
includes the safety margin added on the amount of ram the ram-handler does
not allocate for its purposes. Currently, this safety margin is 32K.

Changes for release 45.4 (2.8.2017)

- A link to a delete-protected file could still be deleted, even though its
  protection bits indicate that it cannot.
- Hard links can now have their own file note.
- ACTION_EXALL did not follow links to fill in protection information, file
  date and the file size, and hence reported wrong information for hard
  links.

Changes for release 45.5 (6.5.2018)

- ACTION_DISK_INFO no longer scans for the largest block, just for the size
  of memory available. This may still give somewhat misleading information,
  but at least better information than it did before.
- ACTION_DISK_INFO includes now the overhead of the data structure itself.  

----------------------------- AmigaOS 3.2 project --------------------

Changes for release 47.1 (24.4.2019):

- The RAM-Disk supports now "external links", that is, links going to other
  file systems. Whenever such a link is "resolved", the RAM-Disk either
  creates a directory within RAM: if such a directory exists on the link
  target, or pulls the target file into the RAM-Disk transparently. This
  allows RAM: to automatically mirror ENVARC: by the following simple line:
  "MakeLink RAM:ENV to ENVARC: Force"
  "Assign ENV: RAM:ENV"
  and all works transparently: RAM: will not copy all files in ENVARC:, but
  only the subset that is required by the system, as soon as it is required
  by the system.

Changes for release 47.2 (25.4.2019):

- The size of a temporary FileInfoBlock was allocated 4 bytes too small.

- In case creating the external link failed, a lock to the target object
  might have remained.

- The packet delegation function could still return ERROR_IS_SOFT_LINK which
  might trigger a non-supported softlink resolution from RAM: to its
  external link.

- Some minor optimizations.

Changes for release 47.3 (21.5.2019):

- In case resolving an external object failed, the lock to the external
  object was erroneously released.

- The file handler delegation function is now a bit more careful and also
  checks for a ZERO lock to external, upon which it fails instead of doing
  some nonsense.

- Lock now (silently) accepts anything but an EXCLUSIVE_LOCK as SHARED_LOCK,
  as some programs seem to fail to deliver the right mode.

- Reading a file released a lock twice.

- The special rule of truncating only the first block of a file has been
  extended to the last block as well, allowing to reduce the memory size
  the RAM disk requires for many files that are small, but not quite as small
  as a single block.

- In case an empty file was opened from a lock, a hit might have been created
  upon the next ACTION_READ or ACTION_WRITE.

- Regular sized blocks are now no longer taken from the memory pool. This is
  just more overhead without benefits.

- ACTION_SET_FILESIZE now fails if the file is write protected.

Changes for release 47.4 (6.6.2019):

- Some file systems delete the lock upon a FH_FROM_LOCK, hence the handler
  has to work with the original lock instead.

Changes for release 47.5 (30.11.2019):

- If the node currently examined is deleted and then ExNext() is called,
  RAM: could have accessed a stale pointer. Fixed.

Changes for release 47.6 (2.1.2020):

- The RAM-handler created a hit (or multiple) in an attempt to
  ExNext() or ExAll() the 0-lock.

Changes for release 47.7 (8.1.2020):

- A SetFileSize() that extended the size of a file left the file
  pointer at the end of the file instead of leaving it untouched.
