Board: [WWIVnet] General Chat Subject: Re: New SEXYZ From: Utopian Galt (11:1/230)@8304.WWIVnet-FTN Date: Fri Aug 28, 2026 18:52 To.......... Diamond Dave #1@131.Wwivnet DD> Just bug fixes or any new features? here is the changes: # SEXYZ Changes Changes since **v3.1**, the last released binary archive (September 2025). Component versions in this release: `sexyz.c` **3.5**, `zmodem.c` **2.6**, `xmodem.c` **2.0**. `sexyz v` prints all three. ## Speed - Much faster ZMODEM streaming sends. The send path now buffers its output instead of feeding the transmit ring one byte at a time, roughly a 10x throughput increase on fast/local links and far less CPU, with no change on slower links where the connection speed dominates anyway. Windowed (`-w`) and segmented (`-s`) sends are unchanged (issue #1195) - Every file sent used to stall for one second before its data started. The sender purged its receive buffer after accepting the ZRPOS that answers each ZFILE, using a one-second read timeout, so with nothing to discard it waited out the timeout once per file. The cost was per file rather than per byte, so it hurt small files and slow links worst: five short files over a 115200 bps line spent more time asleep than transferring - ZMODEM send-path speedups shared with SyncTERM: table-driven byte classification, slicing-by-4 CRC-32, an inlined common transmit path, and a buffered whole-file CRC - The transmit ring no longer signals its empty/data events on every byte written, only when the ring actually changes state. Those are kernel calls on Windows and condition-variable operations elsewhere, and the send path was paying two or three of them per byte ## Transfers - Fixed a hang on windowed (`-w`) sends of files larger than 2 GB, where the transmit-window and ACK positions were signed 32-bit and went negative past 2 GB (issue #1196). Validated to 2.36 GB; 4 GB remains a hard ZMODEM protocol limit - Fixed a crash (divide-by-zero) at the start of any send where the transmit window is smaller than four times the block size, e.g. `-8 -w8192` or a comparable `MaxWindowSize` in `sexyz.ini` (issue #1197) - `-w` now reduces the block size to a quarter of the window when needed, the way `lsz`/`sz` do, so a window at or below the block size no longer stalls the transfer (issue #1197) - Fixed file sizes being truncated to 32 bits in three comparisons on the receive side, which misjudged files larger than 2 GB - The sender no longer retransmits its ZFILE when the receiver's opening ZRINIT arrives after it. Both copies were answered, and the spare ZRPOS left on the back-channel could be read mid-stream and restart the file - Hex headers terminated with parity-set CR/LF (`\x8D\x8A`) are accepted - The `OO` that follows a ZFIN is now flushed, rather than waiting behind the buffer for a session that has already ended - `zmodem_recv_bin32_header()` reported success after a receive error; the CRC check caught it in practice, but the result was still wrong - X/YMODEM transfers now notice a local cancellation promptly instead of waiting out the current protocol read ## Messages - The file offset shown in the receiver's progress and error messages was always 0. Only the sending side maintained it; the receiver now reports its real position - "Finishing Session (Sending ZFIN)" is no longer prefixed with a file offset. It ends a session rather than a file, so no offset applied in either direction, and on the sending side it printed the last file's final position ## Behavior - `poll()` is used instead of `select()` on Unix-like systems - Wildcards in a specified transmit path or filename are no longer expanded (issue #1044) - `-s` (segmented) is documented as affecting both directions. It is consulted when receiving too, where it asks the remote sender to go block-at-a-time; only `-w` is genuinely send-side ## Source and license - sexyz now ships as a stand-alone source release that builds on Unix-like systems and on Windows with MSVC, needing nothing else from Synchronet. See `COMPILING.md` - `zmodem.c` and `zmodem.h` are now under a 2-clause BSD license. The rest of the source set is GPL or LGPL; see the License section of `COMPILING.md` + KO6GVD - Ontario, California - Winserver and WWIV BBS Operator --- Mystic BBS v1.12 A49 2024/05/29 (Linux/64) * Origin: 2o fOr beeRS bbS>>20ForBeers.com:1337 (11:1/230) .