Version 0.1.4 behavior is documented here. Thesupport record separates local verification frompublished MoonX behavior; moonx examples use registry releases.
-s/--separator selects a fixed separator and -b/--before placesseparators before records. Empty fixed separators mean NUL. Records retaintheir original adjoining separator, including a missing final separator.Ordered file operands insert no extra bytes; - consumes stdin. Read/openfailures retain completed output and later operands continue.
-r/--regex uses the frozen GNU Emacs byte syntax: bare +/?, escapedgroups/alternation, literal braces, line anchors and buffer assertions. Dotexcludes LF, and POSIX bracket-class syntax is disabled in this dialect.Search selects the rightmost start and longest end inside the precedinglogical prefix. Nullable patterns make backward progress; an empty regexrejects before input is opened. The matcher borrows prefixes without copyingthe complete remainder.
Fixed separators on regular files are searched backwards in 64 KiB blocks,including separator matches that cross block boundaries. Selected records arecopied in bounded blocks, so a very long record does not require a record-sizedbuffer. Memory is O(block size + separator length); file offsets are 64-bit.The file is opened once, but concurrent modification is not a snapshot guarantee.Regular pseudo files whose zero or nominal size disagrees with a positionalend probe are consumed through the stream spool before any output is written.
Standard input and nonregular files are first copied into an invocation-ownedtemporary file. Regex mode also uses this spool so matching and output use thesame bytes. Spools require temporary-directory write access and use exclusivecreation with owner-only permissions where supported. The input spool can growto the complete input size. No output is written before spooling succeeds;normal errors and observable cancellation close and remove owned temporarystorage. Process termination that cannot unwind, including SIGKILL, does notguarantee cleanup.
Regex mode preserves arbitrary-length separator matches. Its current matcherrequires a contiguous byte-view string with 32-bit string indices, retainingO(input) memory in addition to the disk spool; reversed output is streamedwithout a second input-sized output buffer. Bounded-memory arbitrary-span regexmatching requires a shared matcher API over a paged or seekable byte source,with anchor, overlap and nullable-separator regressions on both backends.An output error may retain an already written prefix; later operands continueafter an input error, as before.
Standalone --version prints exactly tac 0.1.4 followed by onenewline. Standalone --help starts with Usage: tac, lists bothmetadata options, and ends with a newline. Both write to stdout, leave stdinunread, and exit with status 0. Exact-version publication and verificationremain recorded separately in the support record.