5 @subsection Релиз 8.7.0
9 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
13 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
16 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
17 использовании @option{-pkt} опции.
22 @subsection Релиз 8.6.0
26 @command{nncp-xfer} проверяет сходится ли контрольная сумма
27 скопированного локально пакета и исходного.
30 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
31 отправку остаются незаконченные задания.
34 Появилась @command{nncp-ack} команда, которая отправляет явное
35 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
36 упомянутый пакет из исходящего spool-а.
39 Появилась возможность отключения @code{fsync} операции
40 @env{$NNCPNOSYNC=1} переменной окружения.
43 Добавлены разнообразные индексы в документации, что должно помочь при
49 @subsection Релиз 8.5.0
53 Исправлена работоспособность @command{nncp-bundle}.
56 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
60 Возможность переопределять внутренний timeout по умолчанию для протокола
61 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
62 полезно для каналов с очень большими задержками.
65 NNCP собирается на OpenBSD.
70 @subsection Релиз 8.4.0
74 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
75 @code{mcd-send} опции конфигурации) теперь являются регулярными
76 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
77 их теперь и прописывает @code{.*} имя интерфейса.
80 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
81 позволяющий дожидаться multicast сообщения об адресе ноды.
84 @command{nncp-file} команда пропускает всё что не является регулярным
85 файлом или директорией во время создания pax-архива.
90 @subsection Релиз 8.3.0
94 Исправлена возможность сборки на 32-бит системах.
99 @subsection Релиз 8.2.0
103 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
104 вместо голого μTP транспортного протокола, делая возможным работу в
105 качестве обычного TCP сервера внутри overlay сети.
108 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
109 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
112 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
115 @command{nncp-daemon} может слушать одновременно и на TCP и на
116 Yggdrasil-управляемом сокетах.
119 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
120 опционально -- вы можете быть доступны и через связь с peer-ами.
125 @subsection Релиз 8.1.0
129 @command{nncp-cfgdir} команда не требует обязательного наличия
130 @code{self} секции конфигурационного файла.
133 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
134 используя online протокол поверх неё.
139 @subsection Релиз 8.0.2
143 Исправлена возможность отправки мультивещательных пакетов.
148 @subsection Релиз 8.0.1
152 Исправлено некорректное вычисление @code{freq.chunked} значения, при
153 отсутствии которого всё равно форсированно включалась chunked передача.
156 Исправлено некорректное вычисление значения полного размера файла в
162 @subsection Релиз 8.0.0
166 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
167 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
168 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
169 знания размеров заранее, без создания временного файла или буферизации в
173 Производится корректная проверка дополнения зашифрованного пакета. Это
174 не критичная проблема, но прежде ни размер, ни значение дополнения не
175 были аутентифицированы, позволяя циклично откусывать по байту с конца и
176 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
177 такого зашифрованного пакета.
180 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
181 совместимого с потоковой работой формата зашифрованных пакетов.
184 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
185 @option{-maxsize}, ограничивающая максимальный результирующий размер
186 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
187 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
192 @subsection Релиз 7.7.0
196 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
197 изменениях в spool директориях, для сокращения накладных расходов на их
201 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
202 поддиректориях теперь, дабы ускорить сканирование spool областей.
203 Необходима миграция текущих файлов:
206 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
208 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
211 find . -type f -name "*.seen" | while read fn ; do
212 mv $fn seen/$@{fn%.seen@}
216 $ find $NNCPSPOOL -type d -name area | while read area ; do
217 find $area -type f -name "*.seen" | while read fn ; do
226 @subsection Релиз 7.6.0
230 Журналирование может производиться в назначенный открытый файловый
231 дескриптор (@env{$NNCPLOG=FD:5} например).
232 Что дружелюбно к использованию под @command{daemontools}.
235 Добавлены дополнительные проверки наличия публичных ключей в
236 конфигурационном файле, предотвращающие падения некоторых команд.
241 @subsection Релиз 7.5.1
245 NNCP собирается на NetBSD.
250 @subsection Релиз 7.5.0
254 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
255 журнале будет присутствовать адрес удалённой системы (при запуске под
256 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
260 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
261 @option{-ucspi} опцию.
264 Не выходить если не получается слушать на каком-либо MCD сетевом
265 интерфейсе -- только предупреждать об ошибке.
270 @subsection Релиз 7.4.0
274 Исправлена работоспособность MCD при одновременном использовании
275 @command{nncp-daemon} и @command{nncp-caller}.
280 @subsection Релиз 7.3.2
284 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
289 @subsection Релиз 7.3.1
293 Исправлена проблема с возможно остающимся открытым файловым
294 дескриптором в online командах.
297 Существенно снижено потребление памяти MTH хэширования.
302 @subsection Релиз 7.3.0
306 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
309 Возможность использовать конфигурацию в виде директории с набором
310 файлов. Появилась команда @command{nncp-cfgdir}.
315 @subsection Релиз 7.2.1
319 Небольшие оптимизации в online командах.
324 @subsection Релиз 7.2.0
328 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
331 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
332 использовать его, а не игнорировать.
335 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
336 видящего свой собственный пакет.
339 Намного меньшее потребление памяти во время MTH хэширования когда
340 смещение равно нулю: когда пакет не является докачиванием, а например
341 проверяется @command{nncp-check} командой.
346 @subsection Релиз 7.1.1
350 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
355 @subsection Релиз 7.1.0
359 Появилась возможность мультивещательной (multicast) рассылки пакетов.
360 Реализовано всего лишь дополнительным типом простых пакетов и изменением
361 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
364 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
365 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
368 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
371 Исправлено некорректное генерирование @file{.hdr} при использовании
375 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
379 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
380 проверку в бесконечный цикл.
383 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
386 @command{nncp-pkt} может парсить @file{.hdr} файлы.
391 @subsection Релиз 7.0.0
395 Минимальная требуемая версия Go 1.13.
398 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
399 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
400 изменение формата шифрованных файлов (всего что находится в spool
401 области) и формата @file{.meta} файла при chunked передаче.
403 Текущая реализация далека от оптимальной: в ней нет распараллеливания
404 вычислений и имеет повышенное потребление памяти: около 512 KiB на
405 каждый 1 GiB данных файла. Будущая оптимизация производительности и
406 потребления памяти не должна привести к изменению формата пакетов. Но
407 это всё равно в несколько раз быстрее BLAKE2b.
410 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
411 чтения с диска только предшествующей части, а не полностью всего файла,
415 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
418 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
419 уменьшая количество примитивов. А также заголовок шифрованного файла
420 теперь является ассоциированными данными при шифровании.
423 MultiCast Discovery использует
424 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
427 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
430 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
433 Обновлены зависимые библиотеки.
438 @subsection Релиз 6.6.0
442 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
443 ожидают завершения всех процессов фоновой проверки контрольных сумм,
444 после того как соединение закрыто.
447 Добавлена возможность определения адреса через multicast оповещение в
448 локальной сети, так называемый MCD (MultiCast Discovery).
453 @subsection Релиз 6.5.0
457 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
460 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
463 Исправлена гонка при закрытии файловых дескрипторов во время завершения
464 работы online протокола, которая могла привести к ошибке записи
465 принятого фрагмента пакета.
468 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
469 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
474 @subsection Релиз 6.4.0
478 Исправлена возможная гонка в online протоколе, приводящая к падению
484 @subsection Релиз 6.3.0
488 Исправлено возможное падение программы во время показа прогресса online
494 @subsection Релиз 6.2.1
498 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
503 @subsection Релиз 6.2.0
507 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
510 Очередной рефакторинг и упрощение системы журналирования.
511 Не должно быть видимых изменений для конечного пользователя.
516 @subsection Релиз 6.1.0
520 Оптимизация: большинство команд теперь не держат открытыми файловые
521 дескрипторы. Прежде вы легко могли выйти за пределы максимально
522 допустимого количества открытых файлов, если у вас было много пакетов в
526 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
527 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
530 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
531 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
532 online демоны не выполнят проверку целостности.
535 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
536 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
539 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
540 файлах, рядом с самими пакетами. Это может существенно повысить скорость
541 получения списка пакетов на файловых системах с большим размером блока.
546 @subsection Релиз 6.0.0
550 Журнал использует человеко-читаемый и легко обрабатываемый машиной
551 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
552 записей, вместо структурированных строчек RFC 3339. Старый формат
553 журналов не поддерживается @command{nncp-log}.
556 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
557 @command{nncp-daemon}.
560 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
561 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
562 выражением содержащим секунды, это можно использовать как возможность
563 вызова только при появлении исходящих пакетов.
566 @command{nncp-cronexpr} команда позволяет проверить корректность и
567 ожидаемый результат от указанного cron выражения.
572 @subsection Релиз 5.6.0
576 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
577 во время него ежесекундно.
580 В @option{calls} секции конфигурации появились опции
581 @option{autotoss}, @option{autotoss-doseen},
582 @option{autotoss-nofile}, @option{autotoss-nofreq},
583 @option{autotoss-noexec}, @option{autotoss-notrns}.
584 Вы можете настраивать опции автоматического tosser для каждого вызова.
587 Использовать vendoring вместо переопределения @env{$GOPATH} во время
588 установки tarball, так как текущая минимальная версия Go это 1.12,
589 поддерживающая модули.
594 @subsection Релиз 5.5.1
598 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
599 в @file{config} во время установки.
604 @subsection Релиз 5.5.0
608 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
609 @command{nncp-bundle}, @command{nncp-stat} командах.
612 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
615 У команды @command{nncp-exec} появились @option{-use-tmp} и
616 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
620 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
621 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
624 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
629 @subsection Релиз 5.4.1
633 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
638 @subsection Релиз 5.4.0
642 Обновлены зависимые библиотеки.
645 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
646 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
647 реализация @command{redo} включена в tarball.
652 @subsection Релиз 5.3.3
656 Больше различных проверок в коде на ошибки.
659 Обновлены зависимые библиотеки.
664 @subsection Релиз 5.3.2
668 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
669 котором соединение могло не учитывать факты прихода пакетов и обрывать
675 @subsection Релиз 5.3.1
679 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
680 использующими внешние команды (@verb{#"|somecmd"#}).
683 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
684 каждому пакету в spool.
689 @subsection Релиз 5.3.0
693 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
696 Исправлено не происходящее дополнение (padding) handshake сообщений.
699 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
702 SP протокол порождает меньше вызовов записей (соответственно, и TCP
706 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
707 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
710 Раз в минуту, если нет более никакого другого трафика, посылаются PING
711 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
712 более не работоспособно.
715 @command{nncp-toss} использует lock-file для предотвращения
716 одновременной обработки зашифрованных пакетов.
721 @subsection Релиз 5.2.1
725 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
730 @subsection Релиз 5.2.0
734 Большинство команд по умолчанию показывают однострочный прогресс
735 выполнения операции. Появились @option{-progress}, @option{-noprogress}
736 опции командной строки, @option{noprogress} опция конфигурационного
740 Исправлен некорректный код возврата @command{nncp-check} команды,
741 который возвращал ошибку когда всё хорошо.
744 Проверка свободного места для пакетов, во время выполнения
745 @command{nncp-bundle -rx}.
750 @subsection Релиз 5.1.2
754 Исправлена @strong{критичная} уязвимость: аутентификация online нод
755 могла приводить к некорректной идентификации удалённой стороны, позволяя
756 скачивать чужие зашифрованные пакеты.
759 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
760 публичный ключ Noise были поменяны местами, что приводило к
761 невозможности online аутентификации нод.
764 Явная синхронизация (@code{fsync}) директорий для гарантированного
765 переименования файлов.
770 @subsection Релиз 5.1.1
774 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
779 @subsection Релиз 5.1.0
783 @command{nncp-file} может отправлять директории, автоматически на лету
787 Во время создания исходящих сообщений проверяется наличие свободного
788 места на файловой системе.
791 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
792 конфигурационного файла заменены на структуру
793 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
796 Добавлена @option{freq.maxsize} опция конфигурационного файл,
797 запрещающая ответ на файловый запрос больше заданного размера.
800 Возможность оповещения об успешно выполненных командах (exec) через
801 @option{notify.exec} опцию конфигурационного файла.
806 @subsection Релиз 5.0.0
810 @strong{Несовместимое} изменение формата конфигурационного файла:
811 YAML заменён на Hjson, из-за его гораздо большей простоты, без
812 заметной потери функционала и удобства.
815 @strong{Несовместимое} изменение формата простых пакетов. Работа со
816 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
817 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
818 смотря на то, что версия библиотеки ещё не проверена временем.
821 Возможность соединяться с удалёнными нодами не только по TCP, но и через
822 pipe вызов сторонней команды.
825 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
826 комментариев. Можно использовать @option{-nocomments} опцию для старого
830 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
831 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
834 Возможность переопределить umask процесса через опцию конфигурационного
838 По умолчанию файлы и директории создаются с 666/777 правами доступа,
839 позволяя управлять ими @command{umask}-ом.
842 Обновлены зависимости.
845 Полное использование go модулей для управления зависимостями
846 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
849 Отмена автоматического использования более новых версий GNU GPL
850 (лицензия проекта GNU GPLv3-только).
855 @subsection Релиз 4.1
857 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
861 @subsection Релиз 4.0
865 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
866 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
867 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
868 отсылать дешифрованные данные внешней команде. Старые версии не
872 Проверка доступного места перед копированием во время работы
873 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
876 @command{nncp-call} имеет возможность только показывать список пакетов
877 на удалённой машине, без их передачи.
880 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
883 Восстановлена работоспособность @option{xxrate} настройки в
884 @option{calls} секции конфигурационного файла.
887 Зависимые библиотеки обновлены.
890 Небольшие исправления ошибок.
893 Начало использования @code{go.mod} подсистемы.
898 @subsection Релиз 3.4
900 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
904 @subsection Релиз 3.3
908 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
909 проверяют существование @file{.seen} файла и расценивают его как то, что
910 файл уже был скачан. Возможно передача данных была осуществлена
911 сторонним способом и удалённая сторона должна быть оповещена об этом.
914 Если более высокоприоритетный пакет попадает в спул, то
915 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
916 низкоприоритетные передачи.
919 К средствам связанным с online-соединениями (@command{nncp-daemon},
920 @command{nncp-call}, @command{nncp-caller}) добавлен простой
921 ограничитель скорости.
924 Возможность задания приоритета символьными обозначениями:
925 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
928 Изменены значения приоритетов по-умолчанию:
929 для @command{nncp-exec} с 64 на 96,
930 для @command{nncp-freq} с 64 на 160,
931 для @command{nncp-file} с 196 на 224.
936 @subsection Релиз 3.2
939 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
940 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
941 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
942 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
943 Явное добавление @file{NNCP/} директории в архив восстанавливает
944 работоспособность с корректными tar архивами.
948 @subsection Релиз 3.1
951 Возможность отключать пересылку через промежуточные ноды используя
952 @verb{|-via -|} опцию командной строки.
956 @subsection Релиз 3.0
960 @strong{Несовместимое} изменение формата простых пакетов. Работа со
961 старыми версиями не поддерживается.
964 Добавлена возможность удалённого исполнения команд, путём
965 конфигурирования @option{exec} опции конфигурационного файла и
966 использования команды @command{nncp-exec}:
969 Команда @command{nncp-mail} заменена более гибкой и широкой
970 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
971 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
973 @option{sendmail} опция конфигурационного файла заменена на более гибкую
974 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
975 @code{exec: sendmail: [@dots{}]}.
979 Возможность переопределить @option{via} опцию конфигурации для целевого
980 узла через @option{-via} опцию командной строки для следующих команд:
981 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
984 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
988 Exec команды вызываются с дополнительными переменными окружения
989 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
992 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
993 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
994 аргументом @option{-replynice}.
997 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
998 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
999 @option{-noexec}, @option{-notrns}.
1002 По-умолчанию @command{nncp-file} команда для
1003 @option{-minsize}/@option{-chunked} опций использует
1004 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1005 Это можно отключить указав нулевое значение.
1010 @subsection Релиз 2.0
1014 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1015 Работа со старыми версиями не поддерживается.
1018 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1019 Одним криптографическим примитивом меньше.
1022 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1023 криптографическим примитивом меньше (предполагая, что BLAKE2X
1024 практически идентичен BLAKE2).
1029 @subsection Релиз 1.0
1033 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1034 со старыми версиями не поддерживается.
1037 @command{nncp-bundle} команда может создавать потоки зашифрованных
1038 пакетов или потреблять их. Это полезно когда речь идёт о
1039 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1040 без создания промежуточного подготовленного ISO образа или работа с
1041 ленточными накопителями).
1044 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1045 предотвращая приём дублированных пакетов.
1048 В команде @command{nncp-call} разрешается иметь только одного
1049 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1050 входящих пакетов могут создать много горутин.
1053 Возможность переопределить путь до spool директории и файла журнала
1054 через аргумент командной строки или переменную окружения.
1057 @command{nncp-rm} команда может удалять все исходящие/входящие,
1058 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1063 @subsection Релиз 0.12
1065 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1069 @subsection Релиз 0.11
1071 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1075 @subsection Релиз 0.10
1078 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1079 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1083 @subsection Релиз 0.9
1086 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1087 команды. Они игнорировались.
1091 @subsection Релиз 0.8
1094 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1095 @option{-minsize} для передачи без разбиения на части была в байтах, а
1100 @subsection Релиз 0.7
1104 Возможность предоставлять данные для @command{nncp-file} через
1105 стандартный ввод, используя временный зашифрованный файл для этого.
1108 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1109 @command{nncp-reass} командой и @option{freqchunked} опцией
1110 конфигурационного файла. Полезно для передачи больших файлов через
1111 маленькие устройства хранения.
1114 @option{freqminsize} опция конфигурационного файла, аналогичная
1118 Опция @option{-force} команды @command{nncp-xfer} переименована в
1119 @option{-mkdir} для ясности.
1122 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1125 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1126 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1127 имели общий префикс и были сгруппированы для удобства.
1130 Появилась команда @command{nncp-cfgenc}, позволяющая
1131 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1132 без использования OpenPGP или других подобных инструментов.
1135 Обновлены зависимые криптографические библиотеки.
1140 @subsection Релиз 0.6
1142 @item Появилась небольшая команда @command{nncp-rm}.
1143 @item Обновлены зависимые криптографические библиотеки.
1147 @subsection Релиз 0.5
1150 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1151 @command{nncp-file} и @command{nncp-freq} командах.
1155 @subsection Релиз 0.4
1159 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1160 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1161 ошибкой (данные не терялись).
1164 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1165 это короче и удобнее для использования.
1168 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1169 позволяющая создать минималистичный урезанный конфигурационный файл без
1170 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1175 @subsection Релиз 0.3
1177 @item Исправлена совместимость с Go 1.6.
1181 @subsection Релиз 0.2
1185 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1186 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1189 @option{-minsize} опция даёт возможность автоматически дополнять
1190 исходящие пакеты до указанного минимального размера.
1193 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1194 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1195 Удалённая сторона сразу же оповещается об этом.
1198 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1199 неактивность в online соединении, когда оно должно быть отключено. Она
1200 может быть использована для сохранения соединения на долгое время.
1203 @option{-maxonlinetime} опция даёт возможность указания максимального
1204 возможного времени жизни соединения.
1207 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1211 @command{nncp-pkt} команда может разжимать данные.