5 @subsection Релиз 8.6.0
9 @command{nncp-xfer} проверяет сходится ли контрольная сумма
10 скопированного локально пакета и исходного.
13 Появилась возможность отключения @code{fsync} операции
14 @env{$NNCPNOSYNC=1} переменной окружения.
17 Добавлены разнообразные индексы в документации, что должно помочь при
23 @subsection Релиз 8.5.0
27 Исправлена работоспособность @command{nncp-bundle}.
30 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
34 Возможность переопределять внутренний timeout по умолчанию для протокола
35 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
36 полезно для каналов с очень большими задержками.
39 NNCP собирается на OpenBSD.
44 @subsection Релиз 8.4.0
48 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
49 @code{mcd-send} опции конфигурации) теперь являются регулярными
50 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
51 их теперь и прописывает @code{.*} имя интерфейса.
54 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
55 позволяющий дожидаться multicast сообщения об адресе ноды.
58 @command{nncp-file} команда пропускает всё что не является регулярным
59 файлом или директорией во время создания pax-архива.
64 @subsection Релиз 8.3.0
68 Исправлена возможность сборки на 32-бит системах.
73 @subsection Релиз 8.2.0
77 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
78 вместо голого μTP транспортного протокола, делая возможным работу в
79 качестве обычного TCP сервера внутри overlay сети.
82 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub...}
83 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
86 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
89 @command{nncp-daemon} может слушать одновременно и на TCP и на
90 Yggdrasil-управляемом сокетах.
93 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
94 опционально -- вы можете быть доступны и через связь с peer-ами.
99 @subsection Релиз 8.1.0
103 @command{nncp-cfgdir} команда не требует обязательного наличия
104 @code{self} секции конфигурационного файла.
107 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
108 используя online протокол поверх неё.
113 @subsection Релиз 8.0.2
117 Исправлена возможность отправки мультивещательных пакетов.
122 @subsection Релиз 8.0.1
126 Исправлено некорректное вычисление @code{freq.chunked} значения, при
127 отсутствии которого всё равно форсированно включалась chunked передача.
130 Исправлено некорректное вычисление значения полного размера файла в
136 @subsection Релиз 8.0.0
140 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
141 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
142 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
143 знания размеров заранее, без создания временного файла или буферизации в
147 Производится корректная проверка дополнения зашифрованного пакета. Это
148 не критичная проблема, но прежде ни размер, ни значение дополнения не
149 были аутентифицированы, позволяя циклично откусывать по байту с конца и
150 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
151 такого зашифрованного пакета.
154 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
155 совместимого с потоковой работой формата зашифрованных пакетов.
158 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
159 @option{-maxsize}, ограничивающая максимальный результирующий размер
160 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
161 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
166 @subsection Релиз 7.7.0
170 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
171 изменениях в spool директориях, для сокращения накладных расходов на их
175 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
176 поддиректориях теперь, дабы ускорить сканирование spool областей.
177 Необходима миграция текущих файлов:
180 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
182 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
185 find . -type f -name "*.seen" | while read fn ; do
186 mv $fn seen/$@{fn%.seen@}
190 $ find $NNCPSPOOL -type d -name area | while read area ; do
191 find $area -type f -name "*.seen" | while read fn ; do
200 @subsection Релиз 7.6.0
204 Журналирование может производиться в назначенный открытый файловый
205 дескриптор (@env{$NNCPLOG=FD:5} например).
206 Что дружелюбно к использованию под @command{daemontools}.
209 Добавлены дополнительные проверки наличия публичных ключей в
210 конфигурационном файле, предотвращающие падения некоторых команд.
215 @subsection Релиз 7.5.1
219 NNCP собирается на NetBSD.
224 @subsection Релиз 7.5.0
228 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
229 журнале будет присутствовать адрес удалённой системы (при запуске под
230 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
234 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
235 @option{-ucspi} опцию.
238 Не выходить если не получается слушать на каком-либо MCD сетевом
239 интерфейсе -- только предупреждать об ошибке.
244 @subsection Релиз 7.4.0
248 Исправлена работоспособность MCD при одновременном использовании
249 @command{nncp-daemon} и @command{nncp-caller}.
254 @subsection Релиз 7.3.2
258 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
263 @subsection Релиз 7.3.1
267 Исправлена проблема с возможно остающимся открытым файловым
268 дескриптором в online командах.
271 Существенно снижено потребление памяти MTH хэширования.
276 @subsection Релиз 7.3.0
280 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
283 Возможность использовать конфигурацию в виде директории с набором
284 файлов. Появилась команда @command{nncp-cfgdir}.
289 @subsection Релиз 7.2.1
293 Небольшие оптимизации в online командах.
298 @subsection Релиз 7.2.0
302 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
305 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
306 использовать его, а не игнорировать.
309 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
310 видящего свой собственный пакет.
313 Намного меньшее потребление памяти во время MTH хэширования когда
314 смещение равно нулю: когда пакет не является докачиванием, а например
315 проверяется @command{nncp-check} командой.
320 @subsection Релиз 7.1.1
324 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
329 @subsection Релиз 7.1.0
333 Появилась возможность мультивещательной (multicast) рассылки пакетов.
334 Реализовано всего лишь дополнительным типом простых пакетов и изменением
335 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
338 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
339 команд использующих временный файл (stdin и @option{-use-tmp}).
342 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
345 Исправлено некорректное генерирование @file{.hdr} при использовании
349 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
353 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
354 проверку в бесконечный цикл.
357 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
360 @command{nncp-pkt} может парсить @file{.hdr} файлы.
365 @subsection Релиз 7.0.0
369 Минимальная требуемая версия Go 1.13.
372 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
373 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
374 изменение формата шифрованных файлов (всего что находится в spool
375 области) и формата @file{.meta} файла при chunked передаче.
377 Текущая реализация далека от оптимальной: в ней нет распараллеливания
378 вычислений и имеет повышенное потребление памяти: около 512 KiB на
379 каждый 1 GiB данных файла. Будущая оптимизация производительности и
380 потребления памяти не должна привести к изменению формата пакетов. Но
381 это всё равно в несколько раз быстрее BLAKE2b.
384 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
385 чтения с диска только предшествующей части, а не полностью всего файла,
389 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
392 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
393 уменьшая количество примитивов. А также заголовок шифрованного файла
394 теперь является ассоциированными данными при шифровании.
397 MultiCast Discovery использует
398 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
401 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
404 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
407 Обновлены зависимые библиотеки.
412 @subsection Релиз 6.6.0
416 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
417 ожидают завершения всех процессов фоновой проверки контрольных сумм,
418 после того как соединение закрыто.
421 Добавлена возможность определения адреса через multicast оповещение в
422 локальной сети, так называемый MCD (MultiCast Discovery).
427 @subsection Релиз 6.5.0
431 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
434 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
437 Исправлена гонка при закрытии файловых дескрипторов во время завершения
438 работы online протокола, которая могла привести к ошибке записи
439 принятого фрагмента пакета.
442 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
443 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
448 @subsection Релиз 6.4.0
452 Исправлена возможная гонка в online протоколе, приводящая к падению
458 @subsection Релиз 6.3.0
462 Исправлено возможное падение программы во время показа прогресса online
468 @subsection Релиз 6.2.1
472 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
477 @subsection Релиз 6.2.0
481 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
484 Очередной рефакторинг и упрощение системы журналирования.
485 Не должно быть видимых изменений для конечного пользователя.
490 @subsection Релиз 6.1.0
494 Оптимизация: большинство команд теперь не держат открытыми файловые
495 дескрипторы. Прежде вы легко могли выйти за пределы максимально
496 допустимого количества открытых файлов, если у вас было много пакетов в
500 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
501 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
504 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
505 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
506 online демоны не выполнят проверку целостности.
509 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
510 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
513 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
514 файлах, рядом с самими пакетами. Это может существенно повысить скорость
515 получения списка пакетов на файловых системах с большим размером блока.
520 @subsection Релиз 6.0.0
524 Журнал использует человеко-читаемый и легко обрабатываемый машиной
525 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
526 записей, вместо структурированных строчек RFC 3339. Старый формат
527 журналов не поддерживается @command{nncp-log}.
530 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
531 @command{nncp-daemon}.
534 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
535 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
536 выражением содержащим секунды, это можно использовать как возможность
537 вызова только при появлении исходящих пакетов.
540 @command{nncp-cronexpr} команда позволяет проверить корректность и
541 ожидаемый результат от указанного cron выражения.
546 @subsection Релиз 5.6.0
550 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
551 во время него ежесекундно.
554 В @option{calls} секции конфигурации появились опции
555 @option{autotoss}, @option{autotoss-doseen},
556 @option{autotoss-nofile}, @option{autotoss-nofreq},
557 @option{autotoss-noexec}, @option{autotoss-notrns}.
558 Вы можете настраивать опции автоматического tosser для каждого вызова.
561 Использовать vendoring вместо переопределения @env{$GOPATH} во время
562 установки tarball, так как текущая минимальная версия Go это 1.12,
563 поддерживающая модули.
568 @subsection Релиз 5.5.1
572 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
573 в @file{config} во время установки.
578 @subsection Релиз 5.5.0
582 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
583 @command{nncp-bundle}, @command{nncp-stat} командах.
586 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
589 У команды @command{nncp-exec} появились @option{-use-tmp} и
590 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
594 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
595 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
598 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
603 @subsection Релиз 5.4.1
607 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
612 @subsection Релиз 5.4.0
616 Обновлены зависимые библиотеки.
619 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
620 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
621 реализация @command{redo} включена в tarball.
626 @subsection Релиз 5.3.3
630 Больше различных проверок в коде на ошибки.
633 Обновлены зависимые библиотеки.
638 @subsection Релиз 5.3.2
642 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
643 котором соединение могло не учитывать факты прихода пакетов и обрывать
649 @subsection Релиз 5.3.1
653 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
654 использующими внешние команды (@verb{#"|somecmd"#}).
657 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
658 каждому пакету в spool.
663 @subsection Релиз 5.3.0
667 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
670 Исправлено не происходящее дополнение (padding) handshake сообщений.
673 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
676 SP протокол порождает меньше вызовов записей (соответственно, и TCP
680 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
681 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
684 Раз в минуту, если нет более никакого другого трафика, посылаются PING
685 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
686 более не работоспособно.
689 @command{nncp-toss} использует lock-file для предотвращения
690 одновременной обработки зашифрованных пакетов.
695 @subsection Релиз 5.2.1
699 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
704 @subsection Релиз 5.2.0
708 Большинство команд по умолчанию показывают однострочный прогресс
709 выполнения операции. Появились @option{-progress}, @option{-noprogress}
710 опции командной строки, @option{noprogress} опция конфигурационного
714 Исправлен некорректный код возврата @command{nncp-check} команды,
715 который возвращал ошибку когда всё хорошо.
718 Проверка свободного места для пакетов, во время выполнения
719 @command{nncp-bundle -rx}.
724 @subsection Релиз 5.1.2
728 Исправлена @strong{критичная} уязвимость: аутентификация online нод
729 могла приводить к некорректной идентификации удалённой стороны, позволяя
730 скачивать чужие зашифрованные пакеты.
733 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
734 публичный ключ Noise были поменяны местами, что приводило к
735 невозможности online аутентификации нод.
738 Явная синхронизация (@code{fsync}) директорий для гарантированного
739 переименования файлов.
744 @subsection Релиз 5.1.1
748 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
753 @subsection Релиз 5.1.0
757 @command{nncp-file} может отправлять директории, автоматически на лету
761 Во время создания исходящих сообщений проверяется наличие свободного
762 места на файловой системе.
765 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
766 конфигурационного файла заменены на структуру
767 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
770 Добавлена @option{freq.maxsize} опция конфигурационного файл,
771 запрещающая ответ на файловый запрос больше заданного размера.
774 Возможность оповещения об успешно выполненных командах (exec) через
775 @option{notify.exec} опцию конфигурационного файла.
780 @subsection Релиз 5.0.0
784 @strong{Несовместимое} изменение формата конфигурационного файла:
785 YAML заменён на Hjson, из-за его гораздо большей простоты, без
786 заметной потери функционала и удобства.
789 @strong{Несовместимое} изменение формата простых пакетов. Работа со
790 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
791 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
792 смотря на то, что версия библиотеки ещё не проверена временем.
795 Возможность соединяться с удалёнными нодами не только по TCP, но и через
796 pipe вызов сторонней команды.
799 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
800 комментариев. Можно использовать @option{-nocomments} опцию для старого
804 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
805 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
808 Возможность переопределить umask процесса через опцию конфигурационного
812 По умолчанию файлы и директории создаются с 666/777 правами доступа,
813 позволяя управлять ими @command{umask}-ом.
816 Обновлены зависимости.
819 Полное использование go модулей для управления зависимостями
820 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
823 Отмена автоматического использования более новых версий GNU GPL
824 (лицензия проекта GNU GPLv3-только).
829 @subsection Релиз 4.1
831 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
835 @subsection Релиз 4.0
839 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
840 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
841 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
842 отсылать дешифрованные данные внешней команде. Старые версии не
846 Проверка доступного места перед копированием во время работы
847 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
850 @command{nncp-call} имеет возможность только показывать список пакетов
851 на удалённой машине, без их передачи.
854 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
857 Восстановлена работоспособность @option{xxrate} настройки в
858 @option{calls} секции конфигурационного файла.
861 Зависимые библиотеки обновлены.
864 Небольшие исправления ошибок.
867 Начало использования @code{go.mod} подсистемы.
872 @subsection Релиз 3.4
874 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
878 @subsection Релиз 3.3
882 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
883 проверяют существование @file{.seen} файла и расценивают его как то, что
884 файл уже был скачан. Возможно передача данных была осуществлена
885 сторонним способом и удалённая сторона должна быть оповещена об этом.
888 Если более высокоприоритетный пакет попадает в спул, то
889 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
890 низкоприоритетные передачи.
893 К средствам связанным с online-соединениями (@command{nncp-daemon},
894 @command{nncp-call}, @command{nncp-caller}) добавлен простой
895 ограничитель скорости.
898 Возможность задания приоритета символьными обозначениями:
899 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
902 Изменены значения приоритетов по-умолчанию:
903 для @command{nncp-exec} с 64 на 96,
904 для @command{nncp-freq} с 64 на 160,
905 для @command{nncp-file} с 196 на 224.
910 @subsection Релиз 3.2
913 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
914 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
915 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
916 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
917 Явное добавление @file{NNCP/} директории в архив восстанавливает
918 работоспособность с корректными tar архивами.
922 @subsection Релиз 3.1
925 Возможность отключать пересылку через промежуточные ноды используя
926 @verb{|-via -|} опцию командной строки.
930 @subsection Релиз 3.0
934 @strong{Несовместимое} изменение формата простых пакетов. Работа со
935 старыми версиями не поддерживается.
938 Добавлена возможность удалённого исполнения команд, путём
939 конфигурирования @option{exec} опции конфигурационного файла и
940 использования команды @command{nncp-exec}:
943 Команда @command{nncp-mail} заменена более гибкой и широкой
944 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
945 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
947 @option{sendmail} опция конфигурационного файла заменена на более гибкую
948 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
953 Возможность переопределить @option{via} опцию конфигурации для целевого
954 узла через @option{-via} опцию командной строки для следующих команд:
955 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
958 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
962 Exec команды вызываются с дополнительными переменными окружения
963 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
966 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
967 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
968 аргументом @option{-replynice}.
971 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
972 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
973 @option{-noexec}, @option{-notrns}.
976 По-умолчанию @command{nncp-file} команда для
977 @option{-minsize}/@option{-chunked} опций использует
978 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
979 Это можно отключить указав нулевое значение.
984 @subsection Релиз 2.0
988 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
989 Работа со старыми версиями не поддерживается.
992 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
993 Одним криптографическим примитивом меньше.
996 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
997 криптографическим примитивом меньше (предполагая, что BLAKE2X
998 практически идентичен BLAKE2).
1003 @subsection Релиз 1.0
1007 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1008 со старыми версиями не поддерживается.
1011 @command{nncp-bundle} команда может создавать потоки зашифрованных
1012 пакетов или потреблять их. Это полезно когда речь идёт о
1013 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1014 без создания промежуточного подготовленного ISO образа или работа с
1015 ленточными накопителями).
1018 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1019 предотвращая приём дублированных пакетов.
1022 В команде @command{nncp-call} разрешается иметь только одного
1023 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1024 входящих пакетов могут создать много горутин.
1027 Возможность переопределить путь до spool директории и файла журнала
1028 через аргумент командной строки или переменную окружения.
1031 @command{nncp-rm} команда может удалять все исходящие/входящие,
1032 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1037 @subsection Релиз 0.12
1039 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1043 @subsection Релиз 0.11
1045 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1049 @subsection Релиз 0.10
1052 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1053 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1057 @subsection Релиз 0.9
1060 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1061 команды. Они игнорировались.
1065 @subsection Релиз 0.8
1068 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1069 @option{-minsize} для передачи без разбиения на части была в байтах, а
1074 @subsection Релиз 0.7
1078 Возможность предоставлять данные для @command{nncp-file} через
1079 стандартный ввод, используя временный зашифрованный файл для этого.
1082 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1083 @command{nncp-reass} командой и @option{freqchunked} опцией
1084 конфигурационного файла. Полезно для передачи больших файлов через
1085 маленькие устройства хранения.
1088 @option{freqminsize} опция конфигурационного файла, аналогичная
1092 Опция @option{-force} команды @command{nncp-xfer} переименована в
1093 @option{-mkdir} для ясности.
1096 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1099 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1100 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1101 имели общий префикс и были сгруппированы для удобства.
1104 Появилась команда @command{nncp-cfgenc}, позволяющая
1105 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1106 без использования OpenPGP или других подобных инструментов.
1109 Обновлены зависимые криптографические библиотеки.
1114 @subsection Релиз 0.6
1116 @item Появилась небольшая команда @command{nncp-rm}.
1117 @item Обновлены зависимые криптографические библиотеки.
1121 @subsection Релиз 0.5
1124 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1125 @command{nncp-file} и @command{nncp-freq} командах.
1129 @subsection Релиз 0.4
1133 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1134 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1135 ошибкой (данные не терялись).
1138 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1139 это короче и удобнее для использования.
1142 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1143 позволяющая создать минималистичный урезанный конфигурационный файл без
1144 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1149 @subsection Релиз 0.3
1151 @item Исправлена совместимость с Go 1.6.
1155 @subsection Релиз 0.2
1159 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1160 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1163 @option{-minsize} опция даёт возможность автоматически дополнять
1164 исходящие пакеты до указанного минимального размера.
1167 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1168 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1169 Удалённая сторона сразу же оповещается об этом.
1172 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1173 неактивность в online соединении, когда оно должно быть отключено. Она
1174 может быть использована для сохранения соединения на долгое время.
1177 @option{-maxonlinetime} опция даёт возможность указания максимального
1178 возможного времени жизни соединения.
1181 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1185 @command{nncp-pkt} команда может разжимать данные.