5 @subsection Релиз 7.7.0
9 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
10 изменениях в spool директориях, для сокращения накладных расходов на их
16 @subsection Релиз 7.6.0
20 Журналирование может производиться в назначенный открытый файловый
21 дескриптор (@env{$NNCPLOG=FD:5} например).
22 Что дружелюбно к использованию под @command{daemontools}.
25 Добавлены дополнительные проверки наличия публичных ключей в
26 конфигурационном файле, предотвращающие падения некоторых команд.
31 @subsection Релиз 7.5.1
35 NNCP собирается на NetBSD.
40 @subsection Релиз 7.5.0
44 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
45 журнале будет присутствовать адрес удалённой системы (при запуске под
46 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
50 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
51 @option{-ucspi} опцию.
54 Не выходить если не получается слушать на каком-либо MCD сетевом
55 интерфейсе -- только предупреждать об ошибке.
60 @subsection Релиз 7.4.0
64 Исправлена работоспособность MCD при одновременном использовании
65 @command{nncp-daemon} и @command{nncp-caller}.
70 @subsection Релиз 7.3.2
74 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
79 @subsection Релиз 7.3.1
83 Исправлена проблема с возможно остающимся открытым файловым
84 дескриптором в online командах.
87 Существенно снижено потребление памяти MTH хэширования.
92 @subsection Релиз 7.3.0
96 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
99 Возможность использовать конфигурацию в виде директории с набором
100 файлов. Появилась команда @command{nncp-cfgdir}.
105 @subsection Релиз 7.2.1
109 Небольшие оптимизации в online командах.
114 @subsection Релиз 7.2.0
118 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
121 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
122 использовать его, а не игнорировать.
125 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
126 видящего свой собственный пакет.
129 Намного меньшее потребление памяти во время MTH хэширования когда
130 смещение равно нулю: когда пакет не является докачиванием, а например
131 проверяется @command{nncp-check} командой.
136 @subsection Релиз 7.1.1
140 Исправлено падение при fsync директорий после создания @file{.seen} файлов.
145 @subsection Релиз 7.1.0
149 Появилась возможность мультивещательной (multicast) рассылки пакетов.
150 Реализовано всего лишь дополнительным типом простых пакетов и изменением
151 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
154 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
155 команд использующих временный файл (stdin и @option{-use-tmp}).
158 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
161 Исправлено некорректное генерирование @file{.hdr} при использовании
165 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
169 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
170 проверку в бесконечный цикл.
173 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
176 @command{nncp-pkt} может парсить @file{.hdr} файлы.
181 @subsection Релиз 7.0.0
185 Минимальная требуемая версия Go 1.13.
188 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
189 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
190 изменение формата шифрованных файлов (всего что находится в spool
191 области) и формата @file{.meta} файла при chunked передаче.
193 Текущая реализация далека от оптимальной: в ней нет распараллеливания
194 вычислений и имеет повышенное потребление памяти: около 512 KiB на
195 каждый 1 GiB данных файла. Будущая оптимизация производительности и
196 потребления памяти не должна привести к изменению формата пакетов. Но
197 это всё равно в несколько раз быстрее BLAKE2b.
200 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
201 чтения с диска только предшествующей части, а не полностью всего файла,
205 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
208 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
209 уменьшая количество примитивов. А также заголовок шифрованного файла
210 теперь является ассоциированными данными при шифровании.
213 MultiCast Discovery использует
214 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
217 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
220 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
223 Обновлены зависимые библиотеки.
228 @subsection Релиз 6.6.0
232 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
233 ожидают завершения всех процессов фоновой проверки контрольных сумм,
234 после того как соединение закрыто.
237 Добавлена возможность определения адреса через multicast оповещение в
238 локальной сети, так называемый MCD (MultiCast Discovery).
243 @subsection Релиз 6.5.0
247 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
250 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
253 Исправлена гонка при закрытии файловых дескрипторов во время завершения
254 работы online протокола, которая могла привести к ошибке записи
255 принятого фрагмента пакета.
258 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
259 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
264 @subsection Релиз 6.4.0
268 Исправлена возможная гонка в online протоколе, приводящая к падению
274 @subsection Релиз 6.3.0
278 Исправлено возможное падение программы во время показа прогресса online
284 @subsection Релиз 6.2.1
288 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
293 @subsection Релиз 6.2.0
297 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
300 Очередной рефакторинг и упрощение системы журналирования.
301 Не должно быть видимых изменений для конечного пользователя.
306 @subsection Релиз 6.1.0
310 Оптимизация: большинство команд теперь не держат открытыми файловые
311 дескрипторы. Прежде вы легко могли выйти за пределы максимально
312 допустимого количества открытых файлов, если у вас было много пакетов в
316 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
317 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
320 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
321 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
322 online демоны не выполнят проверку целостности.
325 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
326 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
329 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
330 файлах, рядом с самими пакетами. Это может существенно повысить скорость
331 получения списка пакетов на файловых системах с большим размером блока.
336 @subsection Релиз 6.0.0
340 Журнал использует человеко-читаемый и легко обрабатываемый машиной
341 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
342 записей, вместо структурированных строчек RFC 3339. Старый формат
343 журналов не поддерживается @command{nncp-log}.
346 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
347 @command{nncp-daemon}.
350 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
351 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
352 выражением содержащим секунды, это можно использовать как возможность
353 вызова только при появлении исходящих пакетов.
356 @command{nncp-cronexpr} команда позволяет проверить корректность и
357 ожидаемый результат от указанного cron выражения.
362 @subsection Релиз 5.6.0
366 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
367 во время него ежесекундно.
370 В @option{calls} секции конфигурации появились опции
371 @option{autotoss}, @option{autotoss-doseen},
372 @option{autotoss-nofile}, @option{autotoss-nofreq},
373 @option{autotoss-noexec}, @option{autotoss-notrns}.
374 Вы можете настраивать опции автоматического tosser для каждого вызова.
377 Использовать vendoring вместо переопределения @env{$GOPATH} во время
378 установки tarball, так как текущая минимальная версия Go это 1.12,
379 поддерживающая модули.
384 @subsection Релиз 5.5.1
388 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
389 в @file{config} во время установки.
394 @subsection Релиз 5.5.0
398 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
399 @command{nncp-bundle}, @command{nncp-stat} командах.
402 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
405 У команды @command{nncp-exec} появились @option{-use-tmp} и
406 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
410 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
411 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
414 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
419 @subsection Релиз 5.4.1
423 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
428 @subsection Релиз 5.4.0
432 Обновлены зависимые библиотеки.
435 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
436 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
437 реализация @command{redo} включена в tarball.
442 @subsection Релиз 5.3.3
446 Больше различных проверок в коде на ошибки.
449 Обновлены зависимые библиотеки.
454 @subsection Релиз 5.3.2
458 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
459 котором соединение могло не учитывать факты прихода пакетов и обрывать
465 @subsection Релиз 5.3.1
469 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
470 использующими внешние команды (@verb{#"|somecmd"#}).
473 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
474 каждому пакету в spool.
479 @subsection Релиз 5.3.0
483 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
486 Исправлено не происходящее дополнение (padding) handshake сообщений.
489 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
492 SP протокол порождает меньше вызовов записей (соответственно, и TCP
496 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
497 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
500 Раз в минуту, если нет более никакого другого трафика, посылаются PING
501 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
502 более не работоспособно.
505 @command{nncp-toss} использует lock-file для предотвращения
506 одновременной обработки зашифрованных пакетов.
511 @subsection Релиз 5.2.1
515 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
520 @subsection Релиз 5.2.0
524 Большинство команд по умолчанию показывают однострочный прогресс
525 выполнения операции. Появились @option{-progress}, @option{-noprogress}
526 опции командной строки, @option{noprogress} опция конфигурационного
530 Исправлен некорректный код возврата @command{nncp-check} команды,
531 который возвращал ошибку когда всё хорошо.
534 Проверка свободного места для пакетов, во время выполнения
535 @command{nncp-bundle -rx}.
540 @subsection Релиз 5.1.2
544 Исправлена @strong{критичная} уязвимость: аутентификация online нод
545 могла приводить к некорректной идентификации удалённой стороны, позволяя
546 скачивать чужие зашифрованные пакеты.
549 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
550 публичный ключ Noise были поменяны местами, что приводило к
551 невозможности online аутентификации нод.
554 Явная синхронизация (fsync) директорий для гарантированного
555 переименования файлов.
560 @subsection Релиз 5.1.1
564 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
569 @subsection Релиз 5.1.0
573 @command{nncp-file} может отправлять директории, автоматически на лету
577 Во время создания исходящих сообщений проверяется наличие свободного
578 места на файловой системе.
581 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
582 конфигурационного файла заменены на структуру
583 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
586 Добавлена @option{freq.maxsize} опция конфигурационного файл,
587 запрещающая ответ на файловый запрос больше заданного размера.
590 Возможность оповещения об успешно выполненных командах (exec) через
591 @option{notify.exec} опцию конфигурационного файла.
596 @subsection Релиз 5.0.0
600 @strong{Несовместимое} изменение формата конфигурационного файла:
601 YAML заменён на Hjson, из-за его гораздо большей простоты, без
602 заметной потери функционала и удобства.
605 @strong{Несовместимое} изменение формата простых пакетов. Работа со
606 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
607 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
608 смотря на то, что версия библиотеки ещё не проверена временем.
611 Возможность соединяться с удалёнными нодами не только по TCP, но и через
612 pipe вызов сторонней команды.
615 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
616 комментариев. Можно использовать @option{-nocomments} опцию для старого
620 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
621 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
624 Возможность переопределить umask процесса через опцию конфигурационного
628 По умолчанию файлы и директории создаются с 666/777 правами доступа,
629 позволяя управлять ими @command{umask}-ом.
632 Обновлены зависимости.
635 Полное использование go модулей для управления зависимостями
636 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
639 Отмена автоматического использования более новых версий GNU GPL
640 (лицензия проекта GNU GPLv3-только).
645 @subsection Релиз 4.1
647 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
651 @subsection Релиз 4.0
655 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
656 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
657 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
658 отсылать дешифрованные данные внешней команде. Старые версии не
662 Проверка доступного места перед копированием во время работы
663 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
666 @command{nncp-call} имеет возможность только показывать список пакетов
667 на удалённой машине, без их передачи.
670 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
673 Восстановлена работоспособность @option{xxrate} настройки в
674 @option{calls} секции конфигурационного файла.
677 Зависимые библиотеки обновлены.
680 Небольшие исправления ошибок.
683 Начало использования @code{go.mod} подсистемы.
688 @subsection Релиз 3.4
690 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
694 @subsection Релиз 3.3
698 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
699 проверяют существование @file{.seen} файла и расценивают его как то, что
700 файл уже был скачан. Возможно передача данных была осуществлена
701 сторонним способом и удалённая сторона должна быть оповещена об этом.
704 Если более высокоприоритетный пакет попадает в спул, то
705 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
706 низкоприоритетные передачи.
709 К средствам связанным с online-соединениями (@command{nncp-daemon},
710 @command{nncp-call}, @command{nncp-caller}) добавлен простой
711 ограничитель скорости.
714 Возможность задания приоритета символьными обозначениями:
715 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
718 Изменены значения приоритетов по-умолчанию:
719 для @command{nncp-exec} с 64 на 96,
720 для @command{nncp-freq} с 64 на 160,
721 для @command{nncp-file} с 196 на 224.
726 @subsection Релиз 3.2
729 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
730 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
731 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
732 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
733 Явное добавление @file{NNCP/} директории в архив восстанавливает
734 работоспособность с корректными tar архивами.
738 @subsection Релиз 3.1
741 Возможность отключать пересылку через промежуточные ноды используя
742 @verb{|-via -|} опцию командной строки.
746 @subsection Релиз 3.0
750 @strong{Несовместимое} изменение формата простых пакетов. Работа со
751 старыми версиями не поддерживается.
754 Добавлена возможность удалённого исполнения команд, путём
755 конфигурирования @option{exec} опции конфигурационного файла и
756 использования команды @command{nncp-exec}:
759 Команда @command{nncp-mail} заменена более гибкой и широкой
760 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
761 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
763 @option{sendmail} опция конфигурационного файла заменена на более гибкую
764 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
769 Возможность переопределить @option{via} опцию конфигурации для целевого
770 узла через @option{-via} опцию командной строки для следующих команд:
771 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
774 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
778 Exec команды вызываются с дополнительными переменными окружения
779 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
782 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
783 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
784 аргументом @option{-replynice}.
787 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
788 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
789 @option{-noexec}, @option{-notrns}.
792 По-умолчанию @command{nncp-file} команда для
793 @option{-minsize}/@option{-chunked} опций использует
794 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
795 Это можно отключить указав нулевое значение.
800 @subsection Релиз 2.0
804 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
805 Работа со старыми версиями не поддерживается.
808 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
809 Одним криптографическим примитивом меньше.
812 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
813 криптографическим примитивом меньше (предполагая, что BLAKE2X
814 практически идентичен BLAKE2).
819 @subsection Релиз 1.0
823 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
824 со старыми версиями не поддерживается.
827 @command{nncp-bundle} команда может создавать потоки зашифрованных
828 пакетов или потреблять их. Это полезно когда речь идёт о
829 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
830 без создания промежуточного подготовленного ISO образа или работа с
831 ленточными накопителями).
834 @command{nncp-toss} команда может создавать @file{.seen} файлы,
835 предотвращая приём дублированных пакетов.
838 В команде @command{nncp-call} разрешается иметь только одного
839 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
840 входящих пакетов могут создать много горутин.
843 Возможность переопределить путь до spool директории и файла журнала
844 через аргумент командной строки или переменную окружения.
847 @command{nncp-rm} команда может удалять все исходящие/входящие,
848 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
853 @subsection Релиз 0.12
855 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
859 @subsection Релиз 0.11
861 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
865 @subsection Релиз 0.10
868 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
869 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
873 @subsection Релиз 0.9
876 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
877 команды. Они игнорировались.
881 @subsection Релиз 0.8
884 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
885 @option{-minsize} для передачи без разбиения на части была в байтах, а
890 @subsection Релиз 0.7
894 Возможность предоставлять данные для @command{nncp-file} через
895 стандартный ввод, используя временный зашифрованный файл для этого.
898 Появилась возможность передачи файлов разбитых на части, с сопутствующей
899 @command{nncp-reass} командой и @option{freqchunked} опцией
900 конфигурационного файла. Полезно для передачи больших файлов через
901 маленькие устройства хранения.
904 @option{freqminsize} опция конфигурационного файла, аналогичная
908 Опция @option{-force} команды @command{nncp-xfer} переименована в
909 @option{-mkdir} для ясности.
912 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
915 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
916 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
917 имели общий префикс и были сгруппированы для удобства.
920 Появилась команда @command{nncp-cfgenc}, позволяющая
921 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
922 без использования OpenPGP или других подобных инструментов.
925 Обновлены зависимые криптографические библиотеки.
930 @subsection Релиз 0.6
932 @item Появилась небольшая команда @command{nncp-rm}.
933 @item Обновлены зависимые криптографические библиотеки.
937 @subsection Релиз 0.5
940 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
941 @command{nncp-file} и @command{nncp-freq} командах.
945 @subsection Релиз 0.4
949 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
950 @command{nncp-daemon}: иногда они могли падать с segmentation fault
951 ошибкой (данные не терялись).
954 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
955 это короче и удобнее для использования.
958 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
959 позволяющая создать минималистичный урезанный конфигурационный файл без
960 приватных ключей, что полезно во время использования @command{nncp-xfer}.
965 @subsection Релиз 0.3
967 @item Исправлена совместимость с Go 1.6.
971 @subsection Релиз 0.2
975 @strong{Несовместимое} изменение формата пакета (магическое число тоже
976 изменено): поле размера пакета шифруется и не посылается в открытом виде.
979 @option{-minsize} опция даёт возможность автоматически дополнять
980 исходящие пакеты до указанного минимального размера.
983 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
984 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
985 Удалённая сторона сразу же оповещается об этом.
988 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
989 неактивность в online соединении, когда оно должно быть отключено. Она
990 может быть использована для сохранения соединения на долгое время.
993 @option{-maxonlinetime} опция даёт возможность указания максимального
994 возможного времени жизни соединения.
997 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1001 @command{nncp-pkt} команда может разжимать данные.