5 @subsection Релиз 8.7.0
9 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
14 @subsection Релиз 8.6.0
18 @command{nncp-xfer} проверяет сходится ли контрольная сумма
19 скопированного локально пакета и исходного.
22 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
23 отправку остаются незаконченные задания.
26 Появилась @command{nncp-ack} команда, которая отправляет явное
27 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
28 упомянутый пакет из исходящего spool-а.
31 Появилась возможность отключения @code{fsync} операции
32 @env{$NNCPNOSYNC=1} переменной окружения.
35 Добавлены разнообразные индексы в документации, что должно помочь при
41 @subsection Релиз 8.5.0
45 Исправлена работоспособность @command{nncp-bundle}.
48 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
52 Возможность переопределять внутренний timeout по умолчанию для протокола
53 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
54 полезно для каналов с очень большими задержками.
57 NNCP собирается на OpenBSD.
62 @subsection Релиз 8.4.0
66 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
67 @code{mcd-send} опции конфигурации) теперь являются регулярными
68 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
69 их теперь и прописывает @code{.*} имя интерфейса.
72 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
73 позволяющий дожидаться multicast сообщения об адресе ноды.
76 @command{nncp-file} команда пропускает всё что не является регулярным
77 файлом или директорией во время создания pax-архива.
82 @subsection Релиз 8.3.0
86 Исправлена возможность сборки на 32-бит системах.
91 @subsection Релиз 8.2.0
95 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
96 вместо голого μTP транспортного протокола, делая возможным работу в
97 качестве обычного TCP сервера внутри overlay сети.
100 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
101 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
104 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
107 @command{nncp-daemon} может слушать одновременно и на TCP и на
108 Yggdrasil-управляемом сокетах.
111 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
112 опционально -- вы можете быть доступны и через связь с peer-ами.
117 @subsection Релиз 8.1.0
121 @command{nncp-cfgdir} команда не требует обязательного наличия
122 @code{self} секции конфигурационного файла.
125 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
126 используя online протокол поверх неё.
131 @subsection Релиз 8.0.2
135 Исправлена возможность отправки мультивещательных пакетов.
140 @subsection Релиз 8.0.1
144 Исправлено некорректное вычисление @code{freq.chunked} значения, при
145 отсутствии которого всё равно форсированно включалась chunked передача.
148 Исправлено некорректное вычисление значения полного размера файла в
154 @subsection Релиз 8.0.0
158 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
159 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
160 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
161 знания размеров заранее, без создания временного файла или буферизации в
165 Производится корректная проверка дополнения зашифрованного пакета. Это
166 не критичная проблема, но прежде ни размер, ни значение дополнения не
167 были аутентифицированы, позволяя циклично откусывать по байту с конца и
168 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
169 такого зашифрованного пакета.
172 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
173 совместимого с потоковой работой формата зашифрованных пакетов.
176 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
177 @option{-maxsize}, ограничивающая максимальный результирующий размер
178 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
179 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
184 @subsection Релиз 7.7.0
188 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
189 изменениях в spool директориях, для сокращения накладных расходов на их
193 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
194 поддиректориях теперь, дабы ускорить сканирование spool областей.
195 Необходима миграция текущих файлов:
198 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
200 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
203 find . -type f -name "*.seen" | while read fn ; do
204 mv $fn seen/$@{fn%.seen@}
208 $ find $NNCPSPOOL -type d -name area | while read area ; do
209 find $area -type f -name "*.seen" | while read fn ; do
218 @subsection Релиз 7.6.0
222 Журналирование может производиться в назначенный открытый файловый
223 дескриптор (@env{$NNCPLOG=FD:5} например).
224 Что дружелюбно к использованию под @command{daemontools}.
227 Добавлены дополнительные проверки наличия публичных ключей в
228 конфигурационном файле, предотвращающие падения некоторых команд.
233 @subsection Релиз 7.5.1
237 NNCP собирается на NetBSD.
242 @subsection Релиз 7.5.0
246 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
247 журнале будет присутствовать адрес удалённой системы (при запуске под
248 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
252 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
253 @option{-ucspi} опцию.
256 Не выходить если не получается слушать на каком-либо MCD сетевом
257 интерфейсе -- только предупреждать об ошибке.
262 @subsection Релиз 7.4.0
266 Исправлена работоспособность MCD при одновременном использовании
267 @command{nncp-daemon} и @command{nncp-caller}.
272 @subsection Релиз 7.3.2
276 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
281 @subsection Релиз 7.3.1
285 Исправлена проблема с возможно остающимся открытым файловым
286 дескриптором в online командах.
289 Существенно снижено потребление памяти MTH хэширования.
294 @subsection Релиз 7.3.0
298 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
301 Возможность использовать конфигурацию в виде директории с набором
302 файлов. Появилась команда @command{nncp-cfgdir}.
307 @subsection Релиз 7.2.1
311 Небольшие оптимизации в online командах.
316 @subsection Релиз 7.2.0
320 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
323 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
324 использовать его, а не игнорировать.
327 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
328 видящего свой собственный пакет.
331 Намного меньшее потребление памяти во время MTH хэширования когда
332 смещение равно нулю: когда пакет не является докачиванием, а например
333 проверяется @command{nncp-check} командой.
338 @subsection Релиз 7.1.1
342 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
347 @subsection Релиз 7.1.0
351 Появилась возможность мультивещательной (multicast) рассылки пакетов.
352 Реализовано всего лишь дополнительным типом простых пакетов и изменением
353 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
356 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
357 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
360 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
363 Исправлено некорректное генерирование @file{.hdr} при использовании
367 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
371 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
372 проверку в бесконечный цикл.
375 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
378 @command{nncp-pkt} может парсить @file{.hdr} файлы.
383 @subsection Релиз 7.0.0
387 Минимальная требуемая версия Go 1.13.
390 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
391 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
392 изменение формата шифрованных файлов (всего что находится в spool
393 области) и формата @file{.meta} файла при chunked передаче.
395 Текущая реализация далека от оптимальной: в ней нет распараллеливания
396 вычислений и имеет повышенное потребление памяти: около 512 KiB на
397 каждый 1 GiB данных файла. Будущая оптимизация производительности и
398 потребления памяти не должна привести к изменению формата пакетов. Но
399 это всё равно в несколько раз быстрее BLAKE2b.
402 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
403 чтения с диска только предшествующей части, а не полностью всего файла,
407 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
410 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
411 уменьшая количество примитивов. А также заголовок шифрованного файла
412 теперь является ассоциированными данными при шифровании.
415 MultiCast Discovery использует
416 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
419 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
422 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
425 Обновлены зависимые библиотеки.
430 @subsection Релиз 6.6.0
434 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
435 ожидают завершения всех процессов фоновой проверки контрольных сумм,
436 после того как соединение закрыто.
439 Добавлена возможность определения адреса через multicast оповещение в
440 локальной сети, так называемый MCD (MultiCast Discovery).
445 @subsection Релиз 6.5.0
449 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
452 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
455 Исправлена гонка при закрытии файловых дескрипторов во время завершения
456 работы online протокола, которая могла привести к ошибке записи
457 принятого фрагмента пакета.
460 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
461 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
466 @subsection Релиз 6.4.0
470 Исправлена возможная гонка в online протоколе, приводящая к падению
476 @subsection Релиз 6.3.0
480 Исправлено возможное падение программы во время показа прогресса online
486 @subsection Релиз 6.2.1
490 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
495 @subsection Релиз 6.2.0
499 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
502 Очередной рефакторинг и упрощение системы журналирования.
503 Не должно быть видимых изменений для конечного пользователя.
508 @subsection Релиз 6.1.0
512 Оптимизация: большинство команд теперь не держат открытыми файловые
513 дескрипторы. Прежде вы легко могли выйти за пределы максимально
514 допустимого количества открытых файлов, если у вас было много пакетов в
518 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
519 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
522 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
523 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
524 online демоны не выполнят проверку целостности.
527 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
528 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
531 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
532 файлах, рядом с самими пакетами. Это может существенно повысить скорость
533 получения списка пакетов на файловых системах с большим размером блока.
538 @subsection Релиз 6.0.0
542 Журнал использует человеко-читаемый и легко обрабатываемый машиной
543 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
544 записей, вместо структурированных строчек RFC 3339. Старый формат
545 журналов не поддерживается @command{nncp-log}.
548 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
549 @command{nncp-daemon}.
552 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
553 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
554 выражением содержащим секунды, это можно использовать как возможность
555 вызова только при появлении исходящих пакетов.
558 @command{nncp-cronexpr} команда позволяет проверить корректность и
559 ожидаемый результат от указанного cron выражения.
564 @subsection Релиз 5.6.0
568 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
569 во время него ежесекундно.
572 В @option{calls} секции конфигурации появились опции
573 @option{autotoss}, @option{autotoss-doseen},
574 @option{autotoss-nofile}, @option{autotoss-nofreq},
575 @option{autotoss-noexec}, @option{autotoss-notrns}.
576 Вы можете настраивать опции автоматического tosser для каждого вызова.
579 Использовать vendoring вместо переопределения @env{$GOPATH} во время
580 установки tarball, так как текущая минимальная версия Go это 1.12,
581 поддерживающая модули.
586 @subsection Релиз 5.5.1
590 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
591 в @file{config} во время установки.
596 @subsection Релиз 5.5.0
600 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
601 @command{nncp-bundle}, @command{nncp-stat} командах.
604 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
607 У команды @command{nncp-exec} появились @option{-use-tmp} и
608 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
612 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
613 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
616 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
621 @subsection Релиз 5.4.1
625 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
630 @subsection Релиз 5.4.0
634 Обновлены зависимые библиотеки.
637 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
638 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
639 реализация @command{redo} включена в tarball.
644 @subsection Релиз 5.3.3
648 Больше различных проверок в коде на ошибки.
651 Обновлены зависимые библиотеки.
656 @subsection Релиз 5.3.2
660 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
661 котором соединение могло не учитывать факты прихода пакетов и обрывать
667 @subsection Релиз 5.3.1
671 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
672 использующими внешние команды (@verb{#"|somecmd"#}).
675 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
676 каждому пакету в spool.
681 @subsection Релиз 5.3.0
685 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
688 Исправлено не происходящее дополнение (padding) handshake сообщений.
691 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
694 SP протокол порождает меньше вызовов записей (соответственно, и TCP
698 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
699 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
702 Раз в минуту, если нет более никакого другого трафика, посылаются PING
703 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
704 более не работоспособно.
707 @command{nncp-toss} использует lock-file для предотвращения
708 одновременной обработки зашифрованных пакетов.
713 @subsection Релиз 5.2.1
717 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
722 @subsection Релиз 5.2.0
726 Большинство команд по умолчанию показывают однострочный прогресс
727 выполнения операции. Появились @option{-progress}, @option{-noprogress}
728 опции командной строки, @option{noprogress} опция конфигурационного
732 Исправлен некорректный код возврата @command{nncp-check} команды,
733 который возвращал ошибку когда всё хорошо.
736 Проверка свободного места для пакетов, во время выполнения
737 @command{nncp-bundle -rx}.
742 @subsection Релиз 5.1.2
746 Исправлена @strong{критичная} уязвимость: аутентификация online нод
747 могла приводить к некорректной идентификации удалённой стороны, позволяя
748 скачивать чужие зашифрованные пакеты.
751 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
752 публичный ключ Noise были поменяны местами, что приводило к
753 невозможности online аутентификации нод.
756 Явная синхронизация (@code{fsync}) директорий для гарантированного
757 переименования файлов.
762 @subsection Релиз 5.1.1
766 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
771 @subsection Релиз 5.1.0
775 @command{nncp-file} может отправлять директории, автоматически на лету
779 Во время создания исходящих сообщений проверяется наличие свободного
780 места на файловой системе.
783 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
784 конфигурационного файла заменены на структуру
785 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
788 Добавлена @option{freq.maxsize} опция конфигурационного файл,
789 запрещающая ответ на файловый запрос больше заданного размера.
792 Возможность оповещения об успешно выполненных командах (exec) через
793 @option{notify.exec} опцию конфигурационного файла.
798 @subsection Релиз 5.0.0
802 @strong{Несовместимое} изменение формата конфигурационного файла:
803 YAML заменён на Hjson, из-за его гораздо большей простоты, без
804 заметной потери функционала и удобства.
807 @strong{Несовместимое} изменение формата простых пакетов. Работа со
808 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
809 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
810 смотря на то, что версия библиотеки ещё не проверена временем.
813 Возможность соединяться с удалёнными нодами не только по TCP, но и через
814 pipe вызов сторонней команды.
817 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
818 комментариев. Можно использовать @option{-nocomments} опцию для старого
822 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
823 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
826 Возможность переопределить umask процесса через опцию конфигурационного
830 По умолчанию файлы и директории создаются с 666/777 правами доступа,
831 позволяя управлять ими @command{umask}-ом.
834 Обновлены зависимости.
837 Полное использование go модулей для управления зависимостями
838 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
841 Отмена автоматического использования более новых версий GNU GPL
842 (лицензия проекта GNU GPLv3-только).
847 @subsection Релиз 4.1
849 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
853 @subsection Релиз 4.0
857 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
858 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
859 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
860 отсылать дешифрованные данные внешней команде. Старые версии не
864 Проверка доступного места перед копированием во время работы
865 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
868 @command{nncp-call} имеет возможность только показывать список пакетов
869 на удалённой машине, без их передачи.
872 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
875 Восстановлена работоспособность @option{xxrate} настройки в
876 @option{calls} секции конфигурационного файла.
879 Зависимые библиотеки обновлены.
882 Небольшие исправления ошибок.
885 Начало использования @code{go.mod} подсистемы.
890 @subsection Релиз 3.4
892 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
896 @subsection Релиз 3.3
900 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
901 проверяют существование @file{.seen} файла и расценивают его как то, что
902 файл уже был скачан. Возможно передача данных была осуществлена
903 сторонним способом и удалённая сторона должна быть оповещена об этом.
906 Если более высокоприоритетный пакет попадает в спул, то
907 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
908 низкоприоритетные передачи.
911 К средствам связанным с online-соединениями (@command{nncp-daemon},
912 @command{nncp-call}, @command{nncp-caller}) добавлен простой
913 ограничитель скорости.
916 Возможность задания приоритета символьными обозначениями:
917 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
920 Изменены значения приоритетов по-умолчанию:
921 для @command{nncp-exec} с 64 на 96,
922 для @command{nncp-freq} с 64 на 160,
923 для @command{nncp-file} с 196 на 224.
928 @subsection Релиз 3.2
931 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
932 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
933 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
934 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
935 Явное добавление @file{NNCP/} директории в архив восстанавливает
936 работоспособность с корректными tar архивами.
940 @subsection Релиз 3.1
943 Возможность отключать пересылку через промежуточные ноды используя
944 @verb{|-via -|} опцию командной строки.
948 @subsection Релиз 3.0
952 @strong{Несовместимое} изменение формата простых пакетов. Работа со
953 старыми версиями не поддерживается.
956 Добавлена возможность удалённого исполнения команд, путём
957 конфигурирования @option{exec} опции конфигурационного файла и
958 использования команды @command{nncp-exec}:
961 Команда @command{nncp-mail} заменена более гибкой и широкой
962 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
963 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
965 @option{sendmail} опция конфигурационного файла заменена на более гибкую
966 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
967 @code{exec: sendmail: [@dots{}]}.
971 Возможность переопределить @option{via} опцию конфигурации для целевого
972 узла через @option{-via} опцию командной строки для следующих команд:
973 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
976 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
980 Exec команды вызываются с дополнительными переменными окружения
981 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
984 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
985 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
986 аргументом @option{-replynice}.
989 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
990 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
991 @option{-noexec}, @option{-notrns}.
994 По-умолчанию @command{nncp-file} команда для
995 @option{-minsize}/@option{-chunked} опций использует
996 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
997 Это можно отключить указав нулевое значение.
1002 @subsection Релиз 2.0
1006 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1007 Работа со старыми версиями не поддерживается.
1010 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1011 Одним криптографическим примитивом меньше.
1014 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1015 криптографическим примитивом меньше (предполагая, что BLAKE2X
1016 практически идентичен BLAKE2).
1021 @subsection Релиз 1.0
1025 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1026 со старыми версиями не поддерживается.
1029 @command{nncp-bundle} команда может создавать потоки зашифрованных
1030 пакетов или потреблять их. Это полезно когда речь идёт о
1031 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1032 без создания промежуточного подготовленного ISO образа или работа с
1033 ленточными накопителями).
1036 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1037 предотвращая приём дублированных пакетов.
1040 В команде @command{nncp-call} разрешается иметь только одного
1041 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1042 входящих пакетов могут создать много горутин.
1045 Возможность переопределить путь до spool директории и файла журнала
1046 через аргумент командной строки или переменную окружения.
1049 @command{nncp-rm} команда может удалять все исходящие/входящие,
1050 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1055 @subsection Релиз 0.12
1057 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1061 @subsection Релиз 0.11
1063 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1067 @subsection Релиз 0.10
1070 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1071 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1075 @subsection Релиз 0.9
1078 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1079 команды. Они игнорировались.
1083 @subsection Релиз 0.8
1086 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1087 @option{-minsize} для передачи без разбиения на части была в байтах, а
1092 @subsection Релиз 0.7
1096 Возможность предоставлять данные для @command{nncp-file} через
1097 стандартный ввод, используя временный зашифрованный файл для этого.
1100 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1101 @command{nncp-reass} командой и @option{freqchunked} опцией
1102 конфигурационного файла. Полезно для передачи больших файлов через
1103 маленькие устройства хранения.
1106 @option{freqminsize} опция конфигурационного файла, аналогичная
1110 Опция @option{-force} команды @command{nncp-xfer} переименована в
1111 @option{-mkdir} для ясности.
1114 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1117 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1118 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1119 имели общий префикс и были сгруппированы для удобства.
1122 Появилась команда @command{nncp-cfgenc}, позволяющая
1123 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1124 без использования OpenPGP или других подобных инструментов.
1127 Обновлены зависимые криптографические библиотеки.
1132 @subsection Релиз 0.6
1134 @item Появилась небольшая команда @command{nncp-rm}.
1135 @item Обновлены зависимые криптографические библиотеки.
1139 @subsection Релиз 0.5
1142 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1143 @command{nncp-file} и @command{nncp-freq} командах.
1147 @subsection Релиз 0.4
1151 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1152 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1153 ошибкой (данные не терялись).
1156 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1157 это короче и удобнее для использования.
1160 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1161 позволяющая создать минималистичный урезанный конфигурационный файл без
1162 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1167 @subsection Релиз 0.3
1169 @item Исправлена совместимость с Go 1.6.
1173 @subsection Релиз 0.2
1177 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1178 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1181 @option{-minsize} опция даёт возможность автоматически дополнять
1182 исходящие пакеты до указанного минимального размера.
1185 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1186 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1187 Удалённая сторона сразу же оповещается об этом.
1190 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1191 неактивность в online соединении, когда оно должно быть отключено. Она
1192 может быть использована для сохранения соединения на долгое время.
1195 @option{-maxonlinetime} опция даёт возможность указания максимального
1196 возможного времени жизни соединения.
1199 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1203 @command{nncp-pkt} команда может разжимать данные.