5 @subsection Релиз 8.6.0
9 @command{nncp-xfer} проверяет сходится ли контрольная сумма
10 скопированного локально пакета и исходного.
13 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
14 отправку остаются незаконченные задания.
17 Появилась @command{nncp-ack} команда, которая отправляет явное
18 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
19 упомянутый пакет из исходящего spool-а.
22 Появилась возможность отключения @code{fsync} операции
23 @env{$NNCPNOSYNC=1} переменной окружения.
26 Добавлены разнообразные индексы в документации, что должно помочь при
32 @subsection Релиз 8.5.0
36 Исправлена работоспособность @command{nncp-bundle}.
39 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
43 Возможность переопределять внутренний timeout по умолчанию для протокола
44 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
45 полезно для каналов с очень большими задержками.
48 NNCP собирается на OpenBSD.
53 @subsection Релиз 8.4.0
57 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
58 @code{mcd-send} опции конфигурации) теперь являются регулярными
59 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
60 их теперь и прописывает @code{.*} имя интерфейса.
63 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
64 позволяющий дожидаться multicast сообщения об адресе ноды.
67 @command{nncp-file} команда пропускает всё что не является регулярным
68 файлом или директорией во время создания pax-архива.
73 @subsection Релиз 8.3.0
77 Исправлена возможность сборки на 32-бит системах.
82 @subsection Релиз 8.2.0
86 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
87 вместо голого μTP транспортного протокола, делая возможным работу в
88 качестве обычного TCP сервера внутри overlay сети.
91 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
92 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
95 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
98 @command{nncp-daemon} может слушать одновременно и на TCP и на
99 Yggdrasil-управляемом сокетах.
102 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
103 опционально -- вы можете быть доступны и через связь с peer-ами.
108 @subsection Релиз 8.1.0
112 @command{nncp-cfgdir} команда не требует обязательного наличия
113 @code{self} секции конфигурационного файла.
116 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
117 используя online протокол поверх неё.
122 @subsection Релиз 8.0.2
126 Исправлена возможность отправки мультивещательных пакетов.
131 @subsection Релиз 8.0.1
135 Исправлено некорректное вычисление @code{freq.chunked} значения, при
136 отсутствии которого всё равно форсированно включалась chunked передача.
139 Исправлено некорректное вычисление значения полного размера файла в
145 @subsection Релиз 8.0.0
149 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
150 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
151 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
152 знания размеров заранее, без создания временного файла или буферизации в
156 Производится корректная проверка дополнения зашифрованного пакета. Это
157 не критичная проблема, но прежде ни размер, ни значение дополнения не
158 были аутентифицированы, позволяя циклично откусывать по байту с конца и
159 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
160 такого зашифрованного пакета.
163 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
164 совместимого с потоковой работой формата зашифрованных пакетов.
167 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
168 @option{-maxsize}, ограничивающая максимальный результирующий размер
169 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
170 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
175 @subsection Релиз 7.7.0
179 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
180 изменениях в spool директориях, для сокращения накладных расходов на их
184 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
185 поддиректориях теперь, дабы ускорить сканирование spool областей.
186 Необходима миграция текущих файлов:
189 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
191 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
194 find . -type f -name "*.seen" | while read fn ; do
195 mv $fn seen/$@{fn%.seen@}
199 $ find $NNCPSPOOL -type d -name area | while read area ; do
200 find $area -type f -name "*.seen" | while read fn ; do
209 @subsection Релиз 7.6.0
213 Журналирование может производиться в назначенный открытый файловый
214 дескриптор (@env{$NNCPLOG=FD:5} например).
215 Что дружелюбно к использованию под @command{daemontools}.
218 Добавлены дополнительные проверки наличия публичных ключей в
219 конфигурационном файле, предотвращающие падения некоторых команд.
224 @subsection Релиз 7.5.1
228 NNCP собирается на NetBSD.
233 @subsection Релиз 7.5.0
237 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
238 журнале будет присутствовать адрес удалённой системы (при запуске под
239 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
243 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
244 @option{-ucspi} опцию.
247 Не выходить если не получается слушать на каком-либо MCD сетевом
248 интерфейсе -- только предупреждать об ошибке.
253 @subsection Релиз 7.4.0
257 Исправлена работоспособность MCD при одновременном использовании
258 @command{nncp-daemon} и @command{nncp-caller}.
263 @subsection Релиз 7.3.2
267 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
272 @subsection Релиз 7.3.1
276 Исправлена проблема с возможно остающимся открытым файловым
277 дескриптором в online командах.
280 Существенно снижено потребление памяти MTH хэширования.
285 @subsection Релиз 7.3.0
289 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
292 Возможность использовать конфигурацию в виде директории с набором
293 файлов. Появилась команда @command{nncp-cfgdir}.
298 @subsection Релиз 7.2.1
302 Небольшие оптимизации в online командах.
307 @subsection Релиз 7.2.0
311 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
314 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
315 использовать его, а не игнорировать.
318 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
319 видящего свой собственный пакет.
322 Намного меньшее потребление памяти во время MTH хэширования когда
323 смещение равно нулю: когда пакет не является докачиванием, а например
324 проверяется @command{nncp-check} командой.
329 @subsection Релиз 7.1.1
333 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
338 @subsection Релиз 7.1.0
342 Появилась возможность мультивещательной (multicast) рассылки пакетов.
343 Реализовано всего лишь дополнительным типом простых пакетов и изменением
344 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
347 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
348 команд использующих временный файл (stdin и @option{-use-tmp}).
351 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
354 Исправлено некорректное генерирование @file{.hdr} при использовании
358 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
362 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
363 проверку в бесконечный цикл.
366 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
369 @command{nncp-pkt} может парсить @file{.hdr} файлы.
374 @subsection Релиз 7.0.0
378 Минимальная требуемая версия Go 1.13.
381 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
382 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
383 изменение формата шифрованных файлов (всего что находится в spool
384 области) и формата @file{.meta} файла при chunked передаче.
386 Текущая реализация далека от оптимальной: в ней нет распараллеливания
387 вычислений и имеет повышенное потребление памяти: около 512 KiB на
388 каждый 1 GiB данных файла. Будущая оптимизация производительности и
389 потребления памяти не должна привести к изменению формата пакетов. Но
390 это всё равно в несколько раз быстрее BLAKE2b.
393 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
394 чтения с диска только предшествующей части, а не полностью всего файла,
398 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
401 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
402 уменьшая количество примитивов. А также заголовок шифрованного файла
403 теперь является ассоциированными данными при шифровании.
406 MultiCast Discovery использует
407 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
410 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
413 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
416 Обновлены зависимые библиотеки.
421 @subsection Релиз 6.6.0
425 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
426 ожидают завершения всех процессов фоновой проверки контрольных сумм,
427 после того как соединение закрыто.
430 Добавлена возможность определения адреса через multicast оповещение в
431 локальной сети, так называемый MCD (MultiCast Discovery).
436 @subsection Релиз 6.5.0
440 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
443 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
446 Исправлена гонка при закрытии файловых дескрипторов во время завершения
447 работы online протокола, которая могла привести к ошибке записи
448 принятого фрагмента пакета.
451 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
452 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
457 @subsection Релиз 6.4.0
461 Исправлена возможная гонка в online протоколе, приводящая к падению
467 @subsection Релиз 6.3.0
471 Исправлено возможное падение программы во время показа прогресса online
477 @subsection Релиз 6.2.1
481 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
486 @subsection Релиз 6.2.0
490 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
493 Очередной рефакторинг и упрощение системы журналирования.
494 Не должно быть видимых изменений для конечного пользователя.
499 @subsection Релиз 6.1.0
503 Оптимизация: большинство команд теперь не держат открытыми файловые
504 дескрипторы. Прежде вы легко могли выйти за пределы максимально
505 допустимого количества открытых файлов, если у вас было много пакетов в
509 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
510 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
513 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
514 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
515 online демоны не выполнят проверку целостности.
518 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
519 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
522 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
523 файлах, рядом с самими пакетами. Это может существенно повысить скорость
524 получения списка пакетов на файловых системах с большим размером блока.
529 @subsection Релиз 6.0.0
533 Журнал использует человеко-читаемый и легко обрабатываемый машиной
534 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
535 записей, вместо структурированных строчек RFC 3339. Старый формат
536 журналов не поддерживается @command{nncp-log}.
539 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
540 @command{nncp-daemon}.
543 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
544 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
545 выражением содержащим секунды, это можно использовать как возможность
546 вызова только при появлении исходящих пакетов.
549 @command{nncp-cronexpr} команда позволяет проверить корректность и
550 ожидаемый результат от указанного cron выражения.
555 @subsection Релиз 5.6.0
559 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
560 во время него ежесекундно.
563 В @option{calls} секции конфигурации появились опции
564 @option{autotoss}, @option{autotoss-doseen},
565 @option{autotoss-nofile}, @option{autotoss-nofreq},
566 @option{autotoss-noexec}, @option{autotoss-notrns}.
567 Вы можете настраивать опции автоматического tosser для каждого вызова.
570 Использовать vendoring вместо переопределения @env{$GOPATH} во время
571 установки tarball, так как текущая минимальная версия Go это 1.12,
572 поддерживающая модули.
577 @subsection Релиз 5.5.1
581 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
582 в @file{config} во время установки.
587 @subsection Релиз 5.5.0
591 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
592 @command{nncp-bundle}, @command{nncp-stat} командах.
595 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
598 У команды @command{nncp-exec} появились @option{-use-tmp} и
599 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
603 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
604 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
607 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
612 @subsection Релиз 5.4.1
616 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
621 @subsection Релиз 5.4.0
625 Обновлены зависимые библиотеки.
628 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
629 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
630 реализация @command{redo} включена в tarball.
635 @subsection Релиз 5.3.3
639 Больше различных проверок в коде на ошибки.
642 Обновлены зависимые библиотеки.
647 @subsection Релиз 5.3.2
651 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
652 котором соединение могло не учитывать факты прихода пакетов и обрывать
658 @subsection Релиз 5.3.1
662 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
663 использующими внешние команды (@verb{#"|somecmd"#}).
666 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
667 каждому пакету в spool.
672 @subsection Релиз 5.3.0
676 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
679 Исправлено не происходящее дополнение (padding) handshake сообщений.
682 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
685 SP протокол порождает меньше вызовов записей (соответственно, и TCP
689 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
690 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
693 Раз в минуту, если нет более никакого другого трафика, посылаются PING
694 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
695 более не работоспособно.
698 @command{nncp-toss} использует lock-file для предотвращения
699 одновременной обработки зашифрованных пакетов.
704 @subsection Релиз 5.2.1
708 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
713 @subsection Релиз 5.2.0
717 Большинство команд по умолчанию показывают однострочный прогресс
718 выполнения операции. Появились @option{-progress}, @option{-noprogress}
719 опции командной строки, @option{noprogress} опция конфигурационного
723 Исправлен некорректный код возврата @command{nncp-check} команды,
724 который возвращал ошибку когда всё хорошо.
727 Проверка свободного места для пакетов, во время выполнения
728 @command{nncp-bundle -rx}.
733 @subsection Релиз 5.1.2
737 Исправлена @strong{критичная} уязвимость: аутентификация online нод
738 могла приводить к некорректной идентификации удалённой стороны, позволяя
739 скачивать чужие зашифрованные пакеты.
742 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
743 публичный ключ Noise были поменяны местами, что приводило к
744 невозможности online аутентификации нод.
747 Явная синхронизация (@code{fsync}) директорий для гарантированного
748 переименования файлов.
753 @subsection Релиз 5.1.1
757 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
762 @subsection Релиз 5.1.0
766 @command{nncp-file} может отправлять директории, автоматически на лету
770 Во время создания исходящих сообщений проверяется наличие свободного
771 места на файловой системе.
774 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
775 конфигурационного файла заменены на структуру
776 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
779 Добавлена @option{freq.maxsize} опция конфигурационного файл,
780 запрещающая ответ на файловый запрос больше заданного размера.
783 Возможность оповещения об успешно выполненных командах (exec) через
784 @option{notify.exec} опцию конфигурационного файла.
789 @subsection Релиз 5.0.0
793 @strong{Несовместимое} изменение формата конфигурационного файла:
794 YAML заменён на Hjson, из-за его гораздо большей простоты, без
795 заметной потери функционала и удобства.
798 @strong{Несовместимое} изменение формата простых пакетов. Работа со
799 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
800 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
801 смотря на то, что версия библиотеки ещё не проверена временем.
804 Возможность соединяться с удалёнными нодами не только по TCP, но и через
805 pipe вызов сторонней команды.
808 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
809 комментариев. Можно использовать @option{-nocomments} опцию для старого
813 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
814 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
817 Возможность переопределить umask процесса через опцию конфигурационного
821 По умолчанию файлы и директории создаются с 666/777 правами доступа,
822 позволяя управлять ими @command{umask}-ом.
825 Обновлены зависимости.
828 Полное использование go модулей для управления зависимостями
829 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
832 Отмена автоматического использования более новых версий GNU GPL
833 (лицензия проекта GNU GPLv3-только).
838 @subsection Релиз 4.1
840 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
844 @subsection Релиз 4.0
848 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
849 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
850 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
851 отсылать дешифрованные данные внешней команде. Старые версии не
855 Проверка доступного места перед копированием во время работы
856 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
859 @command{nncp-call} имеет возможность только показывать список пакетов
860 на удалённой машине, без их передачи.
863 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
866 Восстановлена работоспособность @option{xxrate} настройки в
867 @option{calls} секции конфигурационного файла.
870 Зависимые библиотеки обновлены.
873 Небольшие исправления ошибок.
876 Начало использования @code{go.mod} подсистемы.
881 @subsection Релиз 3.4
883 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
887 @subsection Релиз 3.3
891 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
892 проверяют существование @file{.seen} файла и расценивают его как то, что
893 файл уже был скачан. Возможно передача данных была осуществлена
894 сторонним способом и удалённая сторона должна быть оповещена об этом.
897 Если более высокоприоритетный пакет попадает в спул, то
898 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
899 низкоприоритетные передачи.
902 К средствам связанным с online-соединениями (@command{nncp-daemon},
903 @command{nncp-call}, @command{nncp-caller}) добавлен простой
904 ограничитель скорости.
907 Возможность задания приоритета символьными обозначениями:
908 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
911 Изменены значения приоритетов по-умолчанию:
912 для @command{nncp-exec} с 64 на 96,
913 для @command{nncp-freq} с 64 на 160,
914 для @command{nncp-file} с 196 на 224.
919 @subsection Релиз 3.2
922 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
923 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
924 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
925 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
926 Явное добавление @file{NNCP/} директории в архив восстанавливает
927 работоспособность с корректными tar архивами.
931 @subsection Релиз 3.1
934 Возможность отключать пересылку через промежуточные ноды используя
935 @verb{|-via -|} опцию командной строки.
939 @subsection Релиз 3.0
943 @strong{Несовместимое} изменение формата простых пакетов. Работа со
944 старыми версиями не поддерживается.
947 Добавлена возможность удалённого исполнения команд, путём
948 конфигурирования @option{exec} опции конфигурационного файла и
949 использования команды @command{nncp-exec}:
952 Команда @command{nncp-mail} заменена более гибкой и широкой
953 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
954 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
956 @option{sendmail} опция конфигурационного файла заменена на более гибкую
957 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
958 @code{exec: sendmail: [@dots{}]}.
962 Возможность переопределить @option{via} опцию конфигурации для целевого
963 узла через @option{-via} опцию командной строки для следующих команд:
964 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
967 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
971 Exec команды вызываются с дополнительными переменными окружения
972 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
975 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
976 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
977 аргументом @option{-replynice}.
980 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
981 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
982 @option{-noexec}, @option{-notrns}.
985 По-умолчанию @command{nncp-file} команда для
986 @option{-minsize}/@option{-chunked} опций использует
987 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
988 Это можно отключить указав нулевое значение.
993 @subsection Релиз 2.0
997 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
998 Работа со старыми версиями не поддерживается.
1001 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1002 Одним криптографическим примитивом меньше.
1005 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1006 криптографическим примитивом меньше (предполагая, что BLAKE2X
1007 практически идентичен BLAKE2).
1012 @subsection Релиз 1.0
1016 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1017 со старыми версиями не поддерживается.
1020 @command{nncp-bundle} команда может создавать потоки зашифрованных
1021 пакетов или потреблять их. Это полезно когда речь идёт о
1022 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1023 без создания промежуточного подготовленного ISO образа или работа с
1024 ленточными накопителями).
1027 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1028 предотвращая приём дублированных пакетов.
1031 В команде @command{nncp-call} разрешается иметь только одного
1032 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1033 входящих пакетов могут создать много горутин.
1036 Возможность переопределить путь до spool директории и файла журнала
1037 через аргумент командной строки или переменную окружения.
1040 @command{nncp-rm} команда может удалять все исходящие/входящие,
1041 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1046 @subsection Релиз 0.12
1048 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1052 @subsection Релиз 0.11
1054 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1058 @subsection Релиз 0.10
1061 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1062 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1066 @subsection Релиз 0.9
1069 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1070 команды. Они игнорировались.
1074 @subsection Релиз 0.8
1077 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1078 @option{-minsize} для передачи без разбиения на части была в байтах, а
1083 @subsection Релиз 0.7
1087 Возможность предоставлять данные для @command{nncp-file} через
1088 стандартный ввод, используя временный зашифрованный файл для этого.
1091 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1092 @command{nncp-reass} командой и @option{freqchunked} опцией
1093 конфигурационного файла. Полезно для передачи больших файлов через
1094 маленькие устройства хранения.
1097 @option{freqminsize} опция конфигурационного файла, аналогичная
1101 Опция @option{-force} команды @command{nncp-xfer} переименована в
1102 @option{-mkdir} для ясности.
1105 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1108 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1109 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1110 имели общий префикс и были сгруппированы для удобства.
1113 Появилась команда @command{nncp-cfgenc}, позволяющая
1114 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1115 без использования OpenPGP или других подобных инструментов.
1118 Обновлены зависимые криптографические библиотеки.
1123 @subsection Релиз 0.6
1125 @item Появилась небольшая команда @command{nncp-rm}.
1126 @item Обновлены зависимые криптографические библиотеки.
1130 @subsection Релиз 0.5
1133 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1134 @command{nncp-file} и @command{nncp-freq} командах.
1138 @subsection Релиз 0.4
1142 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1143 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1144 ошибкой (данные не терялись).
1147 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1148 это короче и удобнее для использования.
1151 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1152 позволяющая создать минималистичный урезанный конфигурационный файл без
1153 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1158 @subsection Релиз 0.3
1160 @item Исправлена совместимость с Go 1.6.
1164 @subsection Релиз 0.2
1168 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1169 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1172 @option{-minsize} опция даёт возможность автоматически дополнять
1173 исходящие пакеты до указанного минимального размера.
1176 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1177 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1178 Удалённая сторона сразу же оповещается об этом.
1181 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1182 неактивность в online соединении, когда оно должно быть отключено. Она
1183 может быть использована для сохранения соединения на долгое время.
1186 @option{-maxonlinetime} опция даёт возможность указания максимального
1187 возможного времени жизни соединения.
1190 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1194 @command{nncp-pkt} команда может разжимать данные.