Skip to content

0.13

Latest

Choose a tag to compare

@dd86k dd86k released this 01 Oct 16:03
· 9 commits to master since this release

New editor backend (piecev4), improved medium detection (disks officially
supported), redone character encoding module (and added "latin1" and win1252").

Warning

charsets "ebcdic" and "mac" are renamed "ebcdic037" and "macroman",
with one name per encoding rule (e.g. charset ebcdic037).

Added

  • New "piecev4" editor backend (DDHX_BACKEND=piecev4)
    Edits are ~3x faster than "piecev3", and saving in place is faster and
    keeps undo history without a 64 MiB memory spike.
  • utf8bom:, utf16bom:, and utf32bom: prefixes
    Same as utf8:/utf16:/utf32:, but with a BOM in front.
  • "latin1" (ISO 8859-1) and "win1252" (Windows-1252) character sets
  • Additional prefixes for registered charsets available to search with:
    "ebcdic037:", "latin1:", "win1252:", "macroman:", "ascii:", "cp437:"
  • --help-charsets switch: List available charsets.
  • Integer ranges in patterns, e.g. find u16:1..9 (inclusive, search only).

Improvements

  • Media detection: files, disks, devices, streams, and procfs-style files
    only offer what they support, e.g. a disk can't be resized or inserted into.
  • Windows: Disk reads are cached per 64 KiB for faster redraws and scrolling.
  • Views with many bookmarks draw much faster (100K: ~170 ms to ~0.5 ms).
  • A find result now pads view of one row when scrolled.

Fixed

  • refresh command now rereads the document.
  • Multi-byte data types (e.g. d32): the end of file was unreachable when the
    size is not a multiple of the element, scrolling moved by partial rows, and
    changing the data type or columns left rows starting mid-element.
  • An empty DDHX_LOG is now ignored.
  • cp437: <=> and LMN were displayed out of order, and 0xE1 as β (now ß).
  • Fix 32-bit Android and 32-bit musl builds
  • A failure to open the target printed a stack trace instead of an error.
  • Opening a named pipe (e.g. from mkfifo) with no writer hung forever, with
    nothing drawn and no way to quit. It is now refused as a stream, and a
    /dev/tty* target can no longer become the controlling terminal.
  • Streams (terminals, pipes, sockets, directories) are refused by name
    ("/dev/console: cannot edit a stream") rather than by errno
    ("lseek: Illegal seek").
  • Saving to a device could replace its node with a regular file. Devices are
    now saved in place.
  • procfs and sysfs files failed to open because they report no size.
  • Disk sizing ran a Linux-only ioctl on other platforms, and took Windows
    volumes for regular files.
  • Windows: Opening a disk (e.g. \\.\PhysicalDrive0) failed on the first read
    with "The parameter is incorrect".
  • Windows: A disk target was titled "\" instead of its device name.
  • Windows: Saving in place to a disk failed on writes not aligned to its
    sectors.
  • Saving in place after editing a large file or disk could run out of memory.
    With "piecev3", such a save now drops undo history.
  • skip-front (Ctrl+Right) now reaches the end of the document when the
    remaining data is shorter than the skipped element or selection.

Removed

  • "piecev2" backend removed.