5 @subsection Релиз 8.6.0
9 Появилась возможность отключения @code{fsync} операции
10 @env{$NNCPNOSYNC=1} переменной окружения.
13 Добавлены разнообразные индексы в документации, что должно помочь при
19 @subsection Релиз 8.5.0
23 Исправлена работоспособность @command{nncp-bundle}.
26 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
30 Возможность переопределять внутренний timeout по умолчанию для протокола
31 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
32 полезно для каналов с очень большими задержками.
35 NNCP собирается на OpenBSD.
40 @subsection Релиз 8.4.0
44 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
45 @code{mcd-send} опции конфигурации) теперь являются регулярными
46 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
47 их теперь и прописывает @code{.*} имя интерфейса.
50 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
51 позволяющий дожидаться multicast сообщения об адресе ноды.
54 @command{nncp-file} команда пропускает всё что не является регулярным
55 файлом или директорией во время создания pax-архива.
60 @subsection Релиз 8.3.0
64 Исправлена возможность сборки на 32-бит системах.
69 @subsection Релиз 8.2.0
73 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
74 вместо голого μTP транспортного протокола, делая возможным работу в
75 качестве обычного TCP сервера внутри overlay сети.
78 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub...}
79 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
82 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
85 @command{nncp-daemon} может слушать одновременно и на TCP и на
86 Yggdrasil-управляемом сокетах.
89 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
90 опционально -- вы можете быть доступны и через связь с peer-ами.
95 @subsection Релиз 8.1.0
99 @command{nncp-cfgdir} команда не требует обязательного наличия
100 @code{self} секции конфигурационного файла.
103 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
104 используя online протокол поверх неё.
109 @subsection Релиз 8.0.2
113 Исправлена возможность отправки мультивещательных пакетов.
118 @subsection Релиз 8.0.1
122 Исправлено некорректное вычисление @code{freq.chunked} значения, при
123 отсутствии которого всё равно форсированно включалась chunked передача.
126 Исправлено некорректное вычисление значения полного размера файла в
132 @subsection Релиз 8.0.0
136 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
137 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
138 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
139 знания размеров заранее, без создания временного файла или буферизации в
143 Производится корректная проверка дополнения зашифрованного пакета. Это
144 не критичная проблема, но прежде ни размер, ни значение дополнения не
145 были аутентифицированы, позволяя циклично откусывать по байту с конца и
146 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
147 такого зашифрованного пакета.
150 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
151 совместимого с потоковой работой формата зашифрованных пакетов.
154 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
155 @option{-maxsize}, ограничивающая максимальный результирующий размер
156 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
157 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
162 @subsection Релиз 7.7.0
166 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
167 изменениях в spool директориях, для сокращения накладных расходов на их
171 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
172 поддиректориях теперь, дабы ускорить сканирование spool областей.
173 Необходима миграция текущих файлов:
176 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
178 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
181 find . -type f -name "*.seen" | while read fn ; do
182 mv $fn seen/$@{fn%.seen@}
186 $ find $NNCPSPOOL -type d -name area | while read area ; do
187 find $area -type f -name "*.seen" | while read fn ; do
196 @subsection Релиз 7.6.0
200 Журналирование может производиться в назначенный открытый файловый
201 дескриптор (@env{$NNCPLOG=FD:5} например).
202 Что дружелюбно к использованию под @command{daemontools}.
205 Добавлены дополнительные проверки наличия публичных ключей в
206 конфигурационном файле, предотвращающие падения некоторых команд.
211 @subsection Релиз 7.5.1
215 NNCP собирается на NetBSD.
220 @subsection Релиз 7.5.0
224 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
225 журнале будет присутствовать адрес удалённой системы (при запуске под
226 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
230 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
231 @option{-ucspi} опцию.
234 Не выходить если не получается слушать на каком-либо MCD сетевом
235 интерфейсе -- только предупреждать об ошибке.
240 @subsection Релиз 7.4.0
244 Исправлена работоспособность MCD при одновременном использовании
245 @command{nncp-daemon} и @command{nncp-caller}.
250 @subsection Релиз 7.3.2
254 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
259 @subsection Релиз 7.3.1
263 Исправлена проблема с возможно остающимся открытым файловым
264 дескриптором в online командах.
267 Существенно снижено потребление памяти MTH хэширования.
272 @subsection Релиз 7.3.0
276 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
279 Возможность использовать конфигурацию в виде директории с набором
280 файлов. Появилась команда @command{nncp-cfgdir}.
285 @subsection Релиз 7.2.1
289 Небольшие оптимизации в online командах.
294 @subsection Релиз 7.2.0
298 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
301 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
302 использовать его, а не игнорировать.
305 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
306 видящего свой собственный пакет.
309 Намного меньшее потребление памяти во время MTH хэширования когда
310 смещение равно нулю: когда пакет не является докачиванием, а например
311 проверяется @command{nncp-check} командой.
316 @subsection Релиз 7.1.1
320 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
325 @subsection Релиз 7.1.0
329 Появилась возможность мультивещательной (multicast) рассылки пакетов.
330 Реализовано всего лишь дополнительным типом простых пакетов и изменением
331 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
334 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
335 команд использующих временный файл (stdin и @option{-use-tmp}).
338 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
341 Исправлено некорректное генерирование @file{.hdr} при использовании
345 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
349 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
350 проверку в бесконечный цикл.
353 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
356 @command{nncp-pkt} может парсить @file{.hdr} файлы.
361 @subsection Релиз 7.0.0
365 Минимальная требуемая версия Go 1.13.
368 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
369 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
370 изменение формата шифрованных файлов (всего что находится в spool
371 области) и формата @file{.meta} файла при chunked передаче.
373 Текущая реализация далека от оптимальной: в ней нет распараллеливания
374 вычислений и имеет повышенное потребление памяти: около 512 KiB на
375 каждый 1 GiB данных файла. Будущая оптимизация производительности и
376 потребления памяти не должна привести к изменению формата пакетов. Но
377 это всё равно в несколько раз быстрее BLAKE2b.
380 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
381 чтения с диска только предшествующей части, а не полностью всего файла,
385 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
388 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
389 уменьшая количество примитивов. А также заголовок шифрованного файла
390 теперь является ассоциированными данными при шифровании.
393 MultiCast Discovery использует
394 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
397 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
400 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
403 Обновлены зависимые библиотеки.
408 @subsection Релиз 6.6.0
412 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
413 ожидают завершения всех процессов фоновой проверки контрольных сумм,
414 после того как соединение закрыто.
417 Добавлена возможность определения адреса через multicast оповещение в
418 локальной сети, так называемый MCD (MultiCast Discovery).
423 @subsection Релиз 6.5.0
427 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
430 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
433 Исправлена гонка при закрытии файловых дескрипторов во время завершения
434 работы online протокола, которая могла привести к ошибке записи
435 принятого фрагмента пакета.
438 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
439 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
444 @subsection Релиз 6.4.0
448 Исправлена возможная гонка в online протоколе, приводящая к падению
454 @subsection Релиз 6.3.0
458 Исправлено возможное падение программы во время показа прогресса online
464 @subsection Релиз 6.2.1
468 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
473 @subsection Релиз 6.2.0
477 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
480 Очередной рефакторинг и упрощение системы журналирования.
481 Не должно быть видимых изменений для конечного пользователя.
486 @subsection Релиз 6.1.0
490 Оптимизация: большинство команд теперь не держат открытыми файловые
491 дескрипторы. Прежде вы легко могли выйти за пределы максимально
492 допустимого количества открытых файлов, если у вас было много пакетов в
496 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
497 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
500 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
501 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
502 online демоны не выполнят проверку целостности.
505 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
506 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
509 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
510 файлах, рядом с самими пакетами. Это может существенно повысить скорость
511 получения списка пакетов на файловых системах с большим размером блока.
516 @subsection Релиз 6.0.0
520 Журнал использует человеко-читаемый и легко обрабатываемый машиной
521 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
522 записей, вместо структурированных строчек RFC 3339. Старый формат
523 журналов не поддерживается @command{nncp-log}.
526 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
527 @command{nncp-daemon}.
530 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
531 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
532 выражением содержащим секунды, это можно использовать как возможность
533 вызова только при появлении исходящих пакетов.
536 @command{nncp-cronexpr} команда позволяет проверить корректность и
537 ожидаемый результат от указанного cron выражения.
542 @subsection Релиз 5.6.0
546 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
547 во время него ежесекундно.
550 В @option{calls} секции конфигурации появились опции
551 @option{autotoss}, @option{autotoss-doseen},
552 @option{autotoss-nofile}, @option{autotoss-nofreq},
553 @option{autotoss-noexec}, @option{autotoss-notrns}.
554 Вы можете настраивать опции автоматического tosser для каждого вызова.
557 Использовать vendoring вместо переопределения @env{$GOPATH} во время
558 установки tarball, так как текущая минимальная версия Go это 1.12,
559 поддерживающая модули.
564 @subsection Релиз 5.5.1
568 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
569 в @file{config} во время установки.
574 @subsection Релиз 5.5.0
578 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
579 @command{nncp-bundle}, @command{nncp-stat} командах.
582 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
585 У команды @command{nncp-exec} появились @option{-use-tmp} и
586 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
590 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
591 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
594 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
599 @subsection Релиз 5.4.1
603 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
608 @subsection Релиз 5.4.0
612 Обновлены зависимые библиотеки.
615 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
616 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
617 реализация @command{redo} включена в tarball.
622 @subsection Релиз 5.3.3
626 Больше различных проверок в коде на ошибки.
629 Обновлены зависимые библиотеки.
634 @subsection Релиз 5.3.2
638 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
639 котором соединение могло не учитывать факты прихода пакетов и обрывать
645 @subsection Релиз 5.3.1
649 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
650 использующими внешние команды (@verb{#"|somecmd"#}).
653 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
654 каждому пакету в spool.
659 @subsection Релиз 5.3.0
663 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
666 Исправлено не происходящее дополнение (padding) handshake сообщений.
669 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
672 SP протокол порождает меньше вызовов записей (соответственно, и TCP
676 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
677 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
680 Раз в минуту, если нет более никакого другого трафика, посылаются PING
681 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
682 более не работоспособно.
685 @command{nncp-toss} использует lock-file для предотвращения
686 одновременной обработки зашифрованных пакетов.
691 @subsection Релиз 5.2.1
695 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
700 @subsection Релиз 5.2.0
704 Большинство команд по умолчанию показывают однострочный прогресс
705 выполнения операции. Появились @option{-progress}, @option{-noprogress}
706 опции командной строки, @option{noprogress} опция конфигурационного
710 Исправлен некорректный код возврата @command{nncp-check} команды,
711 который возвращал ошибку когда всё хорошо.
714 Проверка свободного места для пакетов, во время выполнения
715 @command{nncp-bundle -rx}.
720 @subsection Релиз 5.1.2
724 Исправлена @strong{критичная} уязвимость: аутентификация online нод
725 могла приводить к некорректной идентификации удалённой стороны, позволяя
726 скачивать чужие зашифрованные пакеты.
729 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
730 публичный ключ Noise были поменяны местами, что приводило к
731 невозможности online аутентификации нод.
734 Явная синхронизация (@code{fsync}) директорий для гарантированного
735 переименования файлов.
740 @subsection Релиз 5.1.1
744 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
749 @subsection Релиз 5.1.0
753 @command{nncp-file} может отправлять директории, автоматически на лету
757 Во время создания исходящих сообщений проверяется наличие свободного
758 места на файловой системе.
761 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
762 конфигурационного файла заменены на структуру
763 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
766 Добавлена @option{freq.maxsize} опция конфигурационного файл,
767 запрещающая ответ на файловый запрос больше заданного размера.
770 Возможность оповещения об успешно выполненных командах (exec) через
771 @option{notify.exec} опцию конфигурационного файла.
776 @subsection Релиз 5.0.0
780 @strong{Несовместимое} изменение формата конфигурационного файла:
781 YAML заменён на Hjson, из-за его гораздо большей простоты, без
782 заметной потери функционала и удобства.
785 @strong{Несовместимое} изменение формата простых пакетов. Работа со
786 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
787 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
788 смотря на то, что версия библиотеки ещё не проверена временем.
791 Возможность соединяться с удалёнными нодами не только по TCP, но и через
792 pipe вызов сторонней команды.
795 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
796 комментариев. Можно использовать @option{-nocomments} опцию для старого
800 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
801 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
804 Возможность переопределить umask процесса через опцию конфигурационного
808 По умолчанию файлы и директории создаются с 666/777 правами доступа,
809 позволяя управлять ими @command{umask}-ом.
812 Обновлены зависимости.
815 Полное использование go модулей для управления зависимостями
816 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
819 Отмена автоматического использования более новых версий GNU GPL
820 (лицензия проекта GNU GPLv3-только).
825 @subsection Релиз 4.1
827 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
831 @subsection Релиз 4.0
835 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
836 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
837 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
838 отсылать дешифрованные данные внешней команде. Старые версии не
842 Проверка доступного места перед копированием во время работы
843 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
846 @command{nncp-call} имеет возможность только показывать список пакетов
847 на удалённой машине, без их передачи.
850 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
853 Восстановлена работоспособность @option{xxrate} настройки в
854 @option{calls} секции конфигурационного файла.
857 Зависимые библиотеки обновлены.
860 Небольшие исправления ошибок.
863 Начало использования @code{go.mod} подсистемы.
868 @subsection Релиз 3.4
870 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
874 @subsection Релиз 3.3
878 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
879 проверяют существование @file{.seen} файла и расценивают его как то, что
880 файл уже был скачан. Возможно передача данных была осуществлена
881 сторонним способом и удалённая сторона должна быть оповещена об этом.
884 Если более высокоприоритетный пакет попадает в спул, то
885 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
886 низкоприоритетные передачи.
889 К средствам связанным с online-соединениями (@command{nncp-daemon},
890 @command{nncp-call}, @command{nncp-caller}) добавлен простой
891 ограничитель скорости.
894 Возможность задания приоритета символьными обозначениями:
895 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
898 Изменены значения приоритетов по-умолчанию:
899 для @command{nncp-exec} с 64 на 96,
900 для @command{nncp-freq} с 64 на 160,
901 для @command{nncp-file} с 196 на 224.
906 @subsection Релиз 3.2
909 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
910 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
911 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
912 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
913 Явное добавление @file{NNCP/} директории в архив восстанавливает
914 работоспособность с корректными tar архивами.
918 @subsection Релиз 3.1
921 Возможность отключать пересылку через промежуточные ноды используя
922 @verb{|-via -|} опцию командной строки.
926 @subsection Релиз 3.0
930 @strong{Несовместимое} изменение формата простых пакетов. Работа со
931 старыми версиями не поддерживается.
934 Добавлена возможность удалённого исполнения команд, путём
935 конфигурирования @option{exec} опции конфигурационного файла и
936 использования команды @command{nncp-exec}:
939 Команда @command{nncp-mail} заменена более гибкой и широкой
940 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
941 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
943 @option{sendmail} опция конфигурационного файла заменена на более гибкую
944 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
949 Возможность переопределить @option{via} опцию конфигурации для целевого
950 узла через @option{-via} опцию командной строки для следующих команд:
951 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
954 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
958 Exec команды вызываются с дополнительными переменными окружения
959 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
962 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
963 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
964 аргументом @option{-replynice}.
967 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
968 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
969 @option{-noexec}, @option{-notrns}.
972 По-умолчанию @command{nncp-file} команда для
973 @option{-minsize}/@option{-chunked} опций использует
974 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
975 Это можно отключить указав нулевое значение.
980 @subsection Релиз 2.0
984 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
985 Работа со старыми версиями не поддерживается.
988 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
989 Одним криптографическим примитивом меньше.
992 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
993 криптографическим примитивом меньше (предполагая, что BLAKE2X
994 практически идентичен BLAKE2).
999 @subsection Релиз 1.0
1003 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1004 со старыми версиями не поддерживается.
1007 @command{nncp-bundle} команда может создавать потоки зашифрованных
1008 пакетов или потреблять их. Это полезно когда речь идёт о
1009 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1010 без создания промежуточного подготовленного ISO образа или работа с
1011 ленточными накопителями).
1014 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1015 предотвращая приём дублированных пакетов.
1018 В команде @command{nncp-call} разрешается иметь только одного
1019 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1020 входящих пакетов могут создать много горутин.
1023 Возможность переопределить путь до spool директории и файла журнала
1024 через аргумент командной строки или переменную окружения.
1027 @command{nncp-rm} команда может удалять все исходящие/входящие,
1028 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1033 @subsection Релиз 0.12
1035 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1039 @subsection Релиз 0.11
1041 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1045 @subsection Релиз 0.10
1048 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1049 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1053 @subsection Релиз 0.9
1056 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1057 команды. Они игнорировались.
1061 @subsection Релиз 0.8
1064 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1065 @option{-minsize} для передачи без разбиения на части была в байтах, а
1070 @subsection Релиз 0.7
1074 Возможность предоставлять данные для @command{nncp-file} через
1075 стандартный ввод, используя временный зашифрованный файл для этого.
1078 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1079 @command{nncp-reass} командой и @option{freqchunked} опцией
1080 конфигурационного файла. Полезно для передачи больших файлов через
1081 маленькие устройства хранения.
1084 @option{freqminsize} опция конфигурационного файла, аналогичная
1088 Опция @option{-force} команды @command{nncp-xfer} переименована в
1089 @option{-mkdir} для ясности.
1092 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1095 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1096 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1097 имели общий префикс и были сгруппированы для удобства.
1100 Появилась команда @command{nncp-cfgenc}, позволяющая
1101 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1102 без использования OpenPGP или других подобных инструментов.
1105 Обновлены зависимые криптографические библиотеки.
1110 @subsection Релиз 0.6
1112 @item Появилась небольшая команда @command{nncp-rm}.
1113 @item Обновлены зависимые криптографические библиотеки.
1117 @subsection Релиз 0.5
1120 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1121 @command{nncp-file} и @command{nncp-freq} командах.
1125 @subsection Релиз 0.4
1129 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1130 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1131 ошибкой (данные не терялись).
1134 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1135 это короче и удобнее для использования.
1138 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1139 позволяющая создать минималистичный урезанный конфигурационный файл без
1140 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1145 @subsection Релиз 0.3
1147 @item Исправлена совместимость с Go 1.6.
1151 @subsection Релиз 0.2
1155 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1156 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1159 @option{-minsize} опция даёт возможность автоматически дополнять
1160 исходящие пакеты до указанного минимального размера.
1163 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1164 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1165 Удалённая сторона сразу же оповещается об этом.
1168 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1169 неактивность в online соединении, когда оно должно быть отключено. Она
1170 может быть использована для сохранения соединения на долгое время.
1173 @option{-maxonlinetime} опция даёт возможность указания максимального
1174 возможного времени жизни соединения.
1177 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1181 @command{nncp-pkt} команда может разжимать данные.