5 @subsection Релиз 7.7.0
9 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
10 изменениях в spool директориях, для сокращения накладных расходов на их
14 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
15 поддиректориях теперь, дабы ускорить сканирование spool областей.
16 Необходима миграция текущих файлов:
19 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
21 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
24 find . -type f -name "*.seen" | while read fn ; do
25 mv $fn seen/$@{fn%.seen@}
29 $ find $NNCPSPOOL -type d -name area | while read area ; do
30 find $area -type f -name "*.seen" | while read fn ; do
39 @subsection Релиз 7.6.0
43 Журналирование может производиться в назначенный открытый файловый
44 дескриптор (@env{$NNCPLOG=FD:5} например).
45 Что дружелюбно к использованию под @command{daemontools}.
48 Добавлены дополнительные проверки наличия публичных ключей в
49 конфигурационном файле, предотвращающие падения некоторых команд.
54 @subsection Релиз 7.5.1
58 NNCP собирается на NetBSD.
63 @subsection Релиз 7.5.0
67 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
68 журнале будет присутствовать адрес удалённой системы (при запуске под
69 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
73 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
74 @option{-ucspi} опцию.
77 Не выходить если не получается слушать на каком-либо MCD сетевом
78 интерфейсе -- только предупреждать об ошибке.
83 @subsection Релиз 7.4.0
87 Исправлена работоспособность MCD при одновременном использовании
88 @command{nncp-daemon} и @command{nncp-caller}.
93 @subsection Релиз 7.3.2
97 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
102 @subsection Релиз 7.3.1
106 Исправлена проблема с возможно остающимся открытым файловым
107 дескриптором в online командах.
110 Существенно снижено потребление памяти MTH хэширования.
115 @subsection Релиз 7.3.0
119 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
122 Возможность использовать конфигурацию в виде директории с набором
123 файлов. Появилась команда @command{nncp-cfgdir}.
128 @subsection Релиз 7.2.1
132 Небольшие оптимизации в online командах.
137 @subsection Релиз 7.2.0
141 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
144 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
145 использовать его, а не игнорировать.
148 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
149 видящего свой собственный пакет.
152 Намного меньшее потребление памяти во время MTH хэширования когда
153 смещение равно нулю: когда пакет не является докачиванием, а например
154 проверяется @command{nncp-check} командой.
159 @subsection Релиз 7.1.1
163 Исправлено падение при fsync директорий после создания @file{.seen} файлов.
168 @subsection Релиз 7.1.0
172 Появилась возможность мультивещательной (multicast) рассылки пакетов.
173 Реализовано всего лишь дополнительным типом простых пакетов и изменением
174 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
177 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
178 команд использующих временный файл (stdin и @option{-use-tmp}).
181 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
184 Исправлено некорректное генерирование @file{.hdr} при использовании
188 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
192 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
193 проверку в бесконечный цикл.
196 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
199 @command{nncp-pkt} может парсить @file{.hdr} файлы.
204 @subsection Релиз 7.0.0
208 Минимальная требуемая версия Go 1.13.
211 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
212 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
213 изменение формата шифрованных файлов (всего что находится в spool
214 области) и формата @file{.meta} файла при chunked передаче.
216 Текущая реализация далека от оптимальной: в ней нет распараллеливания
217 вычислений и имеет повышенное потребление памяти: около 512 KiB на
218 каждый 1 GiB данных файла. Будущая оптимизация производительности и
219 потребления памяти не должна привести к изменению формата пакетов. Но
220 это всё равно в несколько раз быстрее BLAKE2b.
223 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
224 чтения с диска только предшествующей части, а не полностью всего файла,
228 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
231 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
232 уменьшая количество примитивов. А также заголовок шифрованного файла
233 теперь является ассоциированными данными при шифровании.
236 MultiCast Discovery использует
237 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
240 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
243 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
246 Обновлены зависимые библиотеки.
251 @subsection Релиз 6.6.0
255 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
256 ожидают завершения всех процессов фоновой проверки контрольных сумм,
257 после того как соединение закрыто.
260 Добавлена возможность определения адреса через multicast оповещение в
261 локальной сети, так называемый MCD (MultiCast Discovery).
266 @subsection Релиз 6.5.0
270 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
273 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
276 Исправлена гонка при закрытии файловых дескрипторов во время завершения
277 работы online протокола, которая могла привести к ошибке записи
278 принятого фрагмента пакета.
281 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
282 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
287 @subsection Релиз 6.4.0
291 Исправлена возможная гонка в online протоколе, приводящая к падению
297 @subsection Релиз 6.3.0
301 Исправлено возможное падение программы во время показа прогресса online
307 @subsection Релиз 6.2.1
311 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
316 @subsection Релиз 6.2.0
320 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
323 Очередной рефакторинг и упрощение системы журналирования.
324 Не должно быть видимых изменений для конечного пользователя.
329 @subsection Релиз 6.1.0
333 Оптимизация: большинство команд теперь не держат открытыми файловые
334 дескрипторы. Прежде вы легко могли выйти за пределы максимально
335 допустимого количества открытых файлов, если у вас было много пакетов в
339 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
340 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
343 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
344 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
345 online демоны не выполнят проверку целостности.
348 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
349 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
352 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
353 файлах, рядом с самими пакетами. Это может существенно повысить скорость
354 получения списка пакетов на файловых системах с большим размером блока.
359 @subsection Релиз 6.0.0
363 Журнал использует человеко-читаемый и легко обрабатываемый машиной
364 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
365 записей, вместо структурированных строчек RFC 3339. Старый формат
366 журналов не поддерживается @command{nncp-log}.
369 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
370 @command{nncp-daemon}.
373 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
374 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
375 выражением содержащим секунды, это можно использовать как возможность
376 вызова только при появлении исходящих пакетов.
379 @command{nncp-cronexpr} команда позволяет проверить корректность и
380 ожидаемый результат от указанного cron выражения.
385 @subsection Релиз 5.6.0
389 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
390 во время него ежесекундно.
393 В @option{calls} секции конфигурации появились опции
394 @option{autotoss}, @option{autotoss-doseen},
395 @option{autotoss-nofile}, @option{autotoss-nofreq},
396 @option{autotoss-noexec}, @option{autotoss-notrns}.
397 Вы можете настраивать опции автоматического tosser для каждого вызова.
400 Использовать vendoring вместо переопределения @env{$GOPATH} во время
401 установки tarball, так как текущая минимальная версия Go это 1.12,
402 поддерживающая модули.
407 @subsection Релиз 5.5.1
411 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
412 в @file{config} во время установки.
417 @subsection Релиз 5.5.0
421 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
422 @command{nncp-bundle}, @command{nncp-stat} командах.
425 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
428 У команды @command{nncp-exec} появились @option{-use-tmp} и
429 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
433 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
434 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
437 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
442 @subsection Релиз 5.4.1
446 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
451 @subsection Релиз 5.4.0
455 Обновлены зависимые библиотеки.
458 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
459 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
460 реализация @command{redo} включена в tarball.
465 @subsection Релиз 5.3.3
469 Больше различных проверок в коде на ошибки.
472 Обновлены зависимые библиотеки.
477 @subsection Релиз 5.3.2
481 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
482 котором соединение могло не учитывать факты прихода пакетов и обрывать
488 @subsection Релиз 5.3.1
492 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
493 использующими внешние команды (@verb{#"|somecmd"#}).
496 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
497 каждому пакету в spool.
502 @subsection Релиз 5.3.0
506 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
509 Исправлено не происходящее дополнение (padding) handshake сообщений.
512 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
515 SP протокол порождает меньше вызовов записей (соответственно, и TCP
519 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
520 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
523 Раз в минуту, если нет более никакого другого трафика, посылаются PING
524 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
525 более не работоспособно.
528 @command{nncp-toss} использует lock-file для предотвращения
529 одновременной обработки зашифрованных пакетов.
534 @subsection Релиз 5.2.1
538 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
543 @subsection Релиз 5.2.0
547 Большинство команд по умолчанию показывают однострочный прогресс
548 выполнения операции. Появились @option{-progress}, @option{-noprogress}
549 опции командной строки, @option{noprogress} опция конфигурационного
553 Исправлен некорректный код возврата @command{nncp-check} команды,
554 который возвращал ошибку когда всё хорошо.
557 Проверка свободного места для пакетов, во время выполнения
558 @command{nncp-bundle -rx}.
563 @subsection Релиз 5.1.2
567 Исправлена @strong{критичная} уязвимость: аутентификация online нод
568 могла приводить к некорректной идентификации удалённой стороны, позволяя
569 скачивать чужие зашифрованные пакеты.
572 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
573 публичный ключ Noise были поменяны местами, что приводило к
574 невозможности online аутентификации нод.
577 Явная синхронизация (fsync) директорий для гарантированного
578 переименования файлов.
583 @subsection Релиз 5.1.1
587 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
592 @subsection Релиз 5.1.0
596 @command{nncp-file} может отправлять директории, автоматически на лету
600 Во время создания исходящих сообщений проверяется наличие свободного
601 места на файловой системе.
604 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
605 конфигурационного файла заменены на структуру
606 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
609 Добавлена @option{freq.maxsize} опция конфигурационного файл,
610 запрещающая ответ на файловый запрос больше заданного размера.
613 Возможность оповещения об успешно выполненных командах (exec) через
614 @option{notify.exec} опцию конфигурационного файла.
619 @subsection Релиз 5.0.0
623 @strong{Несовместимое} изменение формата конфигурационного файла:
624 YAML заменён на Hjson, из-за его гораздо большей простоты, без
625 заметной потери функционала и удобства.
628 @strong{Несовместимое} изменение формата простых пакетов. Работа со
629 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
630 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
631 смотря на то, что версия библиотеки ещё не проверена временем.
634 Возможность соединяться с удалёнными нодами не только по TCP, но и через
635 pipe вызов сторонней команды.
638 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
639 комментариев. Можно использовать @option{-nocomments} опцию для старого
643 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
644 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
647 Возможность переопределить umask процесса через опцию конфигурационного
651 По умолчанию файлы и директории создаются с 666/777 правами доступа,
652 позволяя управлять ими @command{umask}-ом.
655 Обновлены зависимости.
658 Полное использование go модулей для управления зависимостями
659 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
662 Отмена автоматического использования более новых версий GNU GPL
663 (лицензия проекта GNU GPLv3-только).
668 @subsection Релиз 4.1
670 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
674 @subsection Релиз 4.0
678 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
679 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
680 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
681 отсылать дешифрованные данные внешней команде. Старые версии не
685 Проверка доступного места перед копированием во время работы
686 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
689 @command{nncp-call} имеет возможность только показывать список пакетов
690 на удалённой машине, без их передачи.
693 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
696 Восстановлена работоспособность @option{xxrate} настройки в
697 @option{calls} секции конфигурационного файла.
700 Зависимые библиотеки обновлены.
703 Небольшие исправления ошибок.
706 Начало использования @code{go.mod} подсистемы.
711 @subsection Релиз 3.4
713 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
717 @subsection Релиз 3.3
721 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
722 проверяют существование @file{.seen} файла и расценивают его как то, что
723 файл уже был скачан. Возможно передача данных была осуществлена
724 сторонним способом и удалённая сторона должна быть оповещена об этом.
727 Если более высокоприоритетный пакет попадает в спул, то
728 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
729 низкоприоритетные передачи.
732 К средствам связанным с online-соединениями (@command{nncp-daemon},
733 @command{nncp-call}, @command{nncp-caller}) добавлен простой
734 ограничитель скорости.
737 Возможность задания приоритета символьными обозначениями:
738 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
741 Изменены значения приоритетов по-умолчанию:
742 для @command{nncp-exec} с 64 на 96,
743 для @command{nncp-freq} с 64 на 160,
744 для @command{nncp-file} с 196 на 224.
749 @subsection Релиз 3.2
752 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
753 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
754 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
755 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
756 Явное добавление @file{NNCP/} директории в архив восстанавливает
757 работоспособность с корректными tar архивами.
761 @subsection Релиз 3.1
764 Возможность отключать пересылку через промежуточные ноды используя
765 @verb{|-via -|} опцию командной строки.
769 @subsection Релиз 3.0
773 @strong{Несовместимое} изменение формата простых пакетов. Работа со
774 старыми версиями не поддерживается.
777 Добавлена возможность удалённого исполнения команд, путём
778 конфигурирования @option{exec} опции конфигурационного файла и
779 использования команды @command{nncp-exec}:
782 Команда @command{nncp-mail} заменена более гибкой и широкой
783 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
784 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
786 @option{sendmail} опция конфигурационного файла заменена на более гибкую
787 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
792 Возможность переопределить @option{via} опцию конфигурации для целевого
793 узла через @option{-via} опцию командной строки для следующих команд:
794 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
797 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
801 Exec команды вызываются с дополнительными переменными окружения
802 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
805 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
806 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
807 аргументом @option{-replynice}.
810 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
811 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
812 @option{-noexec}, @option{-notrns}.
815 По-умолчанию @command{nncp-file} команда для
816 @option{-minsize}/@option{-chunked} опций использует
817 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
818 Это можно отключить указав нулевое значение.
823 @subsection Релиз 2.0
827 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
828 Работа со старыми версиями не поддерживается.
831 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
832 Одним криптографическим примитивом меньше.
835 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
836 криптографическим примитивом меньше (предполагая, что BLAKE2X
837 практически идентичен BLAKE2).
842 @subsection Релиз 1.0
846 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
847 со старыми версиями не поддерживается.
850 @command{nncp-bundle} команда может создавать потоки зашифрованных
851 пакетов или потреблять их. Это полезно когда речь идёт о
852 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
853 без создания промежуточного подготовленного ISO образа или работа с
854 ленточными накопителями).
857 @command{nncp-toss} команда может создавать @file{.seen} файлы,
858 предотвращая приём дублированных пакетов.
861 В команде @command{nncp-call} разрешается иметь только одного
862 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
863 входящих пакетов могут создать много горутин.
866 Возможность переопределить путь до spool директории и файла журнала
867 через аргумент командной строки или переменную окружения.
870 @command{nncp-rm} команда может удалять все исходящие/входящие,
871 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
876 @subsection Релиз 0.12
878 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
882 @subsection Релиз 0.11
884 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
888 @subsection Релиз 0.10
891 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
892 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
896 @subsection Релиз 0.9
899 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
900 команды. Они игнорировались.
904 @subsection Релиз 0.8
907 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
908 @option{-minsize} для передачи без разбиения на части была в байтах, а
913 @subsection Релиз 0.7
917 Возможность предоставлять данные для @command{nncp-file} через
918 стандартный ввод, используя временный зашифрованный файл для этого.
921 Появилась возможность передачи файлов разбитых на части, с сопутствующей
922 @command{nncp-reass} командой и @option{freqchunked} опцией
923 конфигурационного файла. Полезно для передачи больших файлов через
924 маленькие устройства хранения.
927 @option{freqminsize} опция конфигурационного файла, аналогичная
931 Опция @option{-force} команды @command{nncp-xfer} переименована в
932 @option{-mkdir} для ясности.
935 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
938 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
939 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
940 имели общий префикс и были сгруппированы для удобства.
943 Появилась команда @command{nncp-cfgenc}, позволяющая
944 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
945 без использования OpenPGP или других подобных инструментов.
948 Обновлены зависимые криптографические библиотеки.
953 @subsection Релиз 0.6
955 @item Появилась небольшая команда @command{nncp-rm}.
956 @item Обновлены зависимые криптографические библиотеки.
960 @subsection Релиз 0.5
963 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
964 @command{nncp-file} и @command{nncp-freq} командах.
968 @subsection Релиз 0.4
972 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
973 @command{nncp-daemon}: иногда они могли падать с segmentation fault
974 ошибкой (данные не терялись).
977 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
978 это короче и удобнее для использования.
981 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
982 позволяющая создать минималистичный урезанный конфигурационный файл без
983 приватных ключей, что полезно во время использования @command{nncp-xfer}.
988 @subsection Релиз 0.3
990 @item Исправлена совместимость с Go 1.6.
994 @subsection Релиз 0.2
998 @strong{Несовместимое} изменение формата пакета (магическое число тоже
999 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1002 @option{-minsize} опция даёт возможность автоматически дополнять
1003 исходящие пакеты до указанного минимального размера.
1006 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1007 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1008 Удалённая сторона сразу же оповещается об этом.
1011 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1012 неактивность в online соединении, когда оно должно быть отключено. Она
1013 может быть использована для сохранения соединения на долгое время.
1016 @option{-maxonlinetime} опция даёт возможность указания максимального
1017 возможного времени жизни соединения.
1020 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1024 @command{nncp-pkt} команда может разжимать данные.