5 @subsection Релиз 8.2.0
9 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
10 вместо голого μTP транспортного протокола, делая возможным работу в
11 качестве обычного TCP сервера внутри overlay сети.
14 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub...}
15 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
18 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
21 @command{nncp-daemon} может слушать одновременно и на TCP и на
22 Yggdrasil-управляемом сокетах.
25 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
26 опционально -- вы можете быть доступны и через связь с peer-ами.
31 @subsection Релиз 8.1.0
35 @command{nncp-cfgdir} команда не требует обязательного наличия
36 @code{self} секции конфигурационного файла.
39 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
40 используя online протокол поверх неё.
45 @subsection Релиз 8.0.2
49 Исправлена возможность отправки мультивещательных пакетов.
54 @subsection Релиз 8.0.1
58 Исправлено некорректное вычисление @code{freq.chunked} значения, при
59 отсутствии которого всё равно форсированно включалась chunked передача.
62 Исправлено некорректное вычисление значения полного размера файла в
68 @subsection Релиз 8.0.0
72 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
73 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
74 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
75 знания размеров заранее, без создания временного файла или буферизации в
79 Производится корректная проверка дополнения зашифрованного пакета. Это
80 не критичная проблема, но прежде ни размер, ни значение дополнения не
81 были аутентифицированы, позволяя циклично откусывать по байту с конца и
82 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
83 такого зашифрованного пакета.
86 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
87 совместимого с потоковой работой формата зашифрованных пакетов.
90 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
91 @option{-maxsize}, ограничивающая максимальный результирующий размер
92 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
93 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
98 @subsection Релиз 7.7.0
102 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
103 изменениях в spool директориях, для сокращения накладных расходов на их
107 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
108 поддиректориях теперь, дабы ускорить сканирование spool областей.
109 Необходима миграция текущих файлов:
112 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
114 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
117 find . -type f -name "*.seen" | while read fn ; do
118 mv $fn seen/$@{fn%.seen@}
122 $ find $NNCPSPOOL -type d -name area | while read area ; do
123 find $area -type f -name "*.seen" | while read fn ; do
132 @subsection Релиз 7.6.0
136 Журналирование может производиться в назначенный открытый файловый
137 дескриптор (@env{$NNCPLOG=FD:5} например).
138 Что дружелюбно к использованию под @command{daemontools}.
141 Добавлены дополнительные проверки наличия публичных ключей в
142 конфигурационном файле, предотвращающие падения некоторых команд.
147 @subsection Релиз 7.5.1
151 NNCP собирается на NetBSD.
156 @subsection Релиз 7.5.0
160 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
161 журнале будет присутствовать адрес удалённой системы (при запуске под
162 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
166 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
167 @option{-ucspi} опцию.
170 Не выходить если не получается слушать на каком-либо MCD сетевом
171 интерфейсе -- только предупреждать об ошибке.
176 @subsection Релиз 7.4.0
180 Исправлена работоспособность MCD при одновременном использовании
181 @command{nncp-daemon} и @command{nncp-caller}.
186 @subsection Релиз 7.3.2
190 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
195 @subsection Релиз 7.3.1
199 Исправлена проблема с возможно остающимся открытым файловым
200 дескриптором в online командах.
203 Существенно снижено потребление памяти MTH хэширования.
208 @subsection Релиз 7.3.0
212 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
215 Возможность использовать конфигурацию в виде директории с набором
216 файлов. Появилась команда @command{nncp-cfgdir}.
221 @subsection Релиз 7.2.1
225 Небольшие оптимизации в online командах.
230 @subsection Релиз 7.2.0
234 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
237 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
238 использовать его, а не игнорировать.
241 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
242 видящего свой собственный пакет.
245 Намного меньшее потребление памяти во время MTH хэширования когда
246 смещение равно нулю: когда пакет не является докачиванием, а например
247 проверяется @command{nncp-check} командой.
252 @subsection Релиз 7.1.1
256 Исправлено падение при fsync директорий после создания @file{.seen} файлов.
261 @subsection Релиз 7.1.0
265 Появилась возможность мультивещательной (multicast) рассылки пакетов.
266 Реализовано всего лишь дополнительным типом простых пакетов и изменением
267 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
270 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
271 команд использующих временный файл (stdin и @option{-use-tmp}).
274 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
277 Исправлено некорректное генерирование @file{.hdr} при использовании
281 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
285 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
286 проверку в бесконечный цикл.
289 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
292 @command{nncp-pkt} может парсить @file{.hdr} файлы.
297 @subsection Релиз 7.0.0
301 Минимальная требуемая версия Go 1.13.
304 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
305 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
306 изменение формата шифрованных файлов (всего что находится в spool
307 области) и формата @file{.meta} файла при chunked передаче.
309 Текущая реализация далека от оптимальной: в ней нет распараллеливания
310 вычислений и имеет повышенное потребление памяти: около 512 KiB на
311 каждый 1 GiB данных файла. Будущая оптимизация производительности и
312 потребления памяти не должна привести к изменению формата пакетов. Но
313 это всё равно в несколько раз быстрее BLAKE2b.
316 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
317 чтения с диска только предшествующей части, а не полностью всего файла,
321 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
324 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
325 уменьшая количество примитивов. А также заголовок шифрованного файла
326 теперь является ассоциированными данными при шифровании.
329 MultiCast Discovery использует
330 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
333 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
336 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
339 Обновлены зависимые библиотеки.
344 @subsection Релиз 6.6.0
348 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
349 ожидают завершения всех процессов фоновой проверки контрольных сумм,
350 после того как соединение закрыто.
353 Добавлена возможность определения адреса через multicast оповещение в
354 локальной сети, так называемый MCD (MultiCast Discovery).
359 @subsection Релиз 6.5.0
363 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
366 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
369 Исправлена гонка при закрытии файловых дескрипторов во время завершения
370 работы online протокола, которая могла привести к ошибке записи
371 принятого фрагмента пакета.
374 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
375 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
380 @subsection Релиз 6.4.0
384 Исправлена возможная гонка в online протоколе, приводящая к падению
390 @subsection Релиз 6.3.0
394 Исправлено возможное падение программы во время показа прогресса online
400 @subsection Релиз 6.2.1
404 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
409 @subsection Релиз 6.2.0
413 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
416 Очередной рефакторинг и упрощение системы журналирования.
417 Не должно быть видимых изменений для конечного пользователя.
422 @subsection Релиз 6.1.0
426 Оптимизация: большинство команд теперь не держат открытыми файловые
427 дескрипторы. Прежде вы легко могли выйти за пределы максимально
428 допустимого количества открытых файлов, если у вас было много пакетов в
432 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
433 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
436 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
437 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
438 online демоны не выполнят проверку целостности.
441 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
442 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
445 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
446 файлах, рядом с самими пакетами. Это может существенно повысить скорость
447 получения списка пакетов на файловых системах с большим размером блока.
452 @subsection Релиз 6.0.0
456 Журнал использует человеко-читаемый и легко обрабатываемый машиной
457 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
458 записей, вместо структурированных строчек RFC 3339. Старый формат
459 журналов не поддерживается @command{nncp-log}.
462 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
463 @command{nncp-daemon}.
466 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
467 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
468 выражением содержащим секунды, это можно использовать как возможность
469 вызова только при появлении исходящих пакетов.
472 @command{nncp-cronexpr} команда позволяет проверить корректность и
473 ожидаемый результат от указанного cron выражения.
478 @subsection Релиз 5.6.0
482 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
483 во время него ежесекундно.
486 В @option{calls} секции конфигурации появились опции
487 @option{autotoss}, @option{autotoss-doseen},
488 @option{autotoss-nofile}, @option{autotoss-nofreq},
489 @option{autotoss-noexec}, @option{autotoss-notrns}.
490 Вы можете настраивать опции автоматического tosser для каждого вызова.
493 Использовать vendoring вместо переопределения @env{$GOPATH} во время
494 установки tarball, так как текущая минимальная версия Go это 1.12,
495 поддерживающая модули.
500 @subsection Релиз 5.5.1
504 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
505 в @file{config} во время установки.
510 @subsection Релиз 5.5.0
514 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
515 @command{nncp-bundle}, @command{nncp-stat} командах.
518 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
521 У команды @command{nncp-exec} появились @option{-use-tmp} и
522 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
526 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
527 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
530 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
535 @subsection Релиз 5.4.1
539 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
544 @subsection Релиз 5.4.0
548 Обновлены зависимые библиотеки.
551 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
552 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
553 реализация @command{redo} включена в tarball.
558 @subsection Релиз 5.3.3
562 Больше различных проверок в коде на ошибки.
565 Обновлены зависимые библиотеки.
570 @subsection Релиз 5.3.2
574 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
575 котором соединение могло не учитывать факты прихода пакетов и обрывать
581 @subsection Релиз 5.3.1
585 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
586 использующими внешние команды (@verb{#"|somecmd"#}).
589 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
590 каждому пакету в spool.
595 @subsection Релиз 5.3.0
599 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
602 Исправлено не происходящее дополнение (padding) handshake сообщений.
605 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
608 SP протокол порождает меньше вызовов записей (соответственно, и TCP
612 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
613 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
616 Раз в минуту, если нет более никакого другого трафика, посылаются PING
617 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
618 более не работоспособно.
621 @command{nncp-toss} использует lock-file для предотвращения
622 одновременной обработки зашифрованных пакетов.
627 @subsection Релиз 5.2.1
631 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
636 @subsection Релиз 5.2.0
640 Большинство команд по умолчанию показывают однострочный прогресс
641 выполнения операции. Появились @option{-progress}, @option{-noprogress}
642 опции командной строки, @option{noprogress} опция конфигурационного
646 Исправлен некорректный код возврата @command{nncp-check} команды,
647 который возвращал ошибку когда всё хорошо.
650 Проверка свободного места для пакетов, во время выполнения
651 @command{nncp-bundle -rx}.
656 @subsection Релиз 5.1.2
660 Исправлена @strong{критичная} уязвимость: аутентификация online нод
661 могла приводить к некорректной идентификации удалённой стороны, позволяя
662 скачивать чужие зашифрованные пакеты.
665 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
666 публичный ключ Noise были поменяны местами, что приводило к
667 невозможности online аутентификации нод.
670 Явная синхронизация (fsync) директорий для гарантированного
671 переименования файлов.
676 @subsection Релиз 5.1.1
680 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
685 @subsection Релиз 5.1.0
689 @command{nncp-file} может отправлять директории, автоматически на лету
693 Во время создания исходящих сообщений проверяется наличие свободного
694 места на файловой системе.
697 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
698 конфигурационного файла заменены на структуру
699 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
702 Добавлена @option{freq.maxsize} опция конфигурационного файл,
703 запрещающая ответ на файловый запрос больше заданного размера.
706 Возможность оповещения об успешно выполненных командах (exec) через
707 @option{notify.exec} опцию конфигурационного файла.
712 @subsection Релиз 5.0.0
716 @strong{Несовместимое} изменение формата конфигурационного файла:
717 YAML заменён на Hjson, из-за его гораздо большей простоты, без
718 заметной потери функционала и удобства.
721 @strong{Несовместимое} изменение формата простых пакетов. Работа со
722 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
723 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
724 смотря на то, что версия библиотеки ещё не проверена временем.
727 Возможность соединяться с удалёнными нодами не только по TCP, но и через
728 pipe вызов сторонней команды.
731 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
732 комментариев. Можно использовать @option{-nocomments} опцию для старого
736 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
737 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
740 Возможность переопределить umask процесса через опцию конфигурационного
744 По умолчанию файлы и директории создаются с 666/777 правами доступа,
745 позволяя управлять ими @command{umask}-ом.
748 Обновлены зависимости.
751 Полное использование go модулей для управления зависимостями
752 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
755 Отмена автоматического использования более новых версий GNU GPL
756 (лицензия проекта GNU GPLv3-только).
761 @subsection Релиз 4.1
763 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
767 @subsection Релиз 4.0
771 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
772 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
773 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
774 отсылать дешифрованные данные внешней команде. Старые версии не
778 Проверка доступного места перед копированием во время работы
779 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
782 @command{nncp-call} имеет возможность только показывать список пакетов
783 на удалённой машине, без их передачи.
786 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
789 Восстановлена работоспособность @option{xxrate} настройки в
790 @option{calls} секции конфигурационного файла.
793 Зависимые библиотеки обновлены.
796 Небольшие исправления ошибок.
799 Начало использования @code{go.mod} подсистемы.
804 @subsection Релиз 3.4
806 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
810 @subsection Релиз 3.3
814 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
815 проверяют существование @file{.seen} файла и расценивают его как то, что
816 файл уже был скачан. Возможно передача данных была осуществлена
817 сторонним способом и удалённая сторона должна быть оповещена об этом.
820 Если более высокоприоритетный пакет попадает в спул, то
821 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
822 низкоприоритетные передачи.
825 К средствам связанным с online-соединениями (@command{nncp-daemon},
826 @command{nncp-call}, @command{nncp-caller}) добавлен простой
827 ограничитель скорости.
830 Возможность задания приоритета символьными обозначениями:
831 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
834 Изменены значения приоритетов по-умолчанию:
835 для @command{nncp-exec} с 64 на 96,
836 для @command{nncp-freq} с 64 на 160,
837 для @command{nncp-file} с 196 на 224.
842 @subsection Релиз 3.2
845 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
846 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
847 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
848 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
849 Явное добавление @file{NNCP/} директории в архив восстанавливает
850 работоспособность с корректными tar архивами.
854 @subsection Релиз 3.1
857 Возможность отключать пересылку через промежуточные ноды используя
858 @verb{|-via -|} опцию командной строки.
862 @subsection Релиз 3.0
866 @strong{Несовместимое} изменение формата простых пакетов. Работа со
867 старыми версиями не поддерживается.
870 Добавлена возможность удалённого исполнения команд, путём
871 конфигурирования @option{exec} опции конфигурационного файла и
872 использования команды @command{nncp-exec}:
875 Команда @command{nncp-mail} заменена более гибкой и широкой
876 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
877 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
879 @option{sendmail} опция конфигурационного файла заменена на более гибкую
880 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
885 Возможность переопределить @option{via} опцию конфигурации для целевого
886 узла через @option{-via} опцию командной строки для следующих команд:
887 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
890 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
894 Exec команды вызываются с дополнительными переменными окружения
895 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
898 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
899 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
900 аргументом @option{-replynice}.
903 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
904 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
905 @option{-noexec}, @option{-notrns}.
908 По-умолчанию @command{nncp-file} команда для
909 @option{-minsize}/@option{-chunked} опций использует
910 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
911 Это можно отключить указав нулевое значение.
916 @subsection Релиз 2.0
920 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
921 Работа со старыми версиями не поддерживается.
924 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
925 Одним криптографическим примитивом меньше.
928 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
929 криптографическим примитивом меньше (предполагая, что BLAKE2X
930 практически идентичен BLAKE2).
935 @subsection Релиз 1.0
939 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
940 со старыми версиями не поддерживается.
943 @command{nncp-bundle} команда может создавать потоки зашифрованных
944 пакетов или потреблять их. Это полезно когда речь идёт о
945 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
946 без создания промежуточного подготовленного ISO образа или работа с
947 ленточными накопителями).
950 @command{nncp-toss} команда может создавать @file{.seen} файлы,
951 предотвращая приём дублированных пакетов.
954 В команде @command{nncp-call} разрешается иметь только одного
955 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
956 входящих пакетов могут создать много горутин.
959 Возможность переопределить путь до spool директории и файла журнала
960 через аргумент командной строки или переменную окружения.
963 @command{nncp-rm} команда может удалять все исходящие/входящие,
964 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
969 @subsection Релиз 0.12
971 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
975 @subsection Релиз 0.11
977 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
981 @subsection Релиз 0.10
984 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
985 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
989 @subsection Релиз 0.9
992 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
993 команды. Они игнорировались.
997 @subsection Релиз 0.8
1000 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1001 @option{-minsize} для передачи без разбиения на части была в байтах, а
1006 @subsection Релиз 0.7
1010 Возможность предоставлять данные для @command{nncp-file} через
1011 стандартный ввод, используя временный зашифрованный файл для этого.
1014 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1015 @command{nncp-reass} командой и @option{freqchunked} опцией
1016 конфигурационного файла. Полезно для передачи больших файлов через
1017 маленькие устройства хранения.
1020 @option{freqminsize} опция конфигурационного файла, аналогичная
1024 Опция @option{-force} команды @command{nncp-xfer} переименована в
1025 @option{-mkdir} для ясности.
1028 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1031 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1032 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1033 имели общий префикс и были сгруппированы для удобства.
1036 Появилась команда @command{nncp-cfgenc}, позволяющая
1037 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1038 без использования OpenPGP или других подобных инструментов.
1041 Обновлены зависимые криптографические библиотеки.
1046 @subsection Релиз 0.6
1048 @item Появилась небольшая команда @command{nncp-rm}.
1049 @item Обновлены зависимые криптографические библиотеки.
1053 @subsection Релиз 0.5
1056 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1057 @command{nncp-file} и @command{nncp-freq} командах.
1061 @subsection Релиз 0.4
1065 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1066 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1067 ошибкой (данные не терялись).
1070 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1071 это короче и удобнее для использования.
1074 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1075 позволяющая создать минималистичный урезанный конфигурационный файл без
1076 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1081 @subsection Релиз 0.3
1083 @item Исправлена совместимость с Go 1.6.
1087 @subsection Релиз 0.2
1091 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1092 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1095 @option{-minsize} опция даёт возможность автоматически дополнять
1096 исходящие пакеты до указанного минимального размера.
1099 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1100 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1101 Удалённая сторона сразу же оповещается об этом.
1104 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1105 неактивность в online соединении, когда оно должно быть отключено. Она
1106 может быть использована для сохранения соединения на долгое время.
1109 @option{-maxonlinetime} опция даёт возможность указания максимального
1110 возможного времени жизни соединения.
1113 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1117 @command{nncp-pkt} команда может разжимать данные.