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} опции.
20 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
21 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
22 команды, чтобы удалить исходящие ACK пакеты.
27 @subsection Релиз 8.6.0
31 @command{nncp-xfer} проверяет сходится ли контрольная сумма
32 скопированного локально пакета и исходного.
35 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
36 отправку остаются незаконченные задания.
39 Появилась @command{nncp-ack} команда, которая отправляет явное
40 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
41 упомянутый пакет из исходящего spool-а.
44 Появилась возможность отключения @code{fsync} операции
45 @env{$NNCPNOSYNC=1} переменной окружения.
48 Добавлены разнообразные индексы в документации, что должно помочь при
54 @subsection Релиз 8.5.0
58 Исправлена работоспособность @command{nncp-bundle}.
61 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
65 Возможность переопределять внутренний timeout по умолчанию для протокола
66 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
67 полезно для каналов с очень большими задержками.
70 NNCP собирается на OpenBSD.
75 @subsection Релиз 8.4.0
79 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
80 @code{mcd-send} опции конфигурации) теперь являются регулярными
81 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
82 их теперь и прописывает @code{.*} имя интерфейса.
85 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
86 позволяющий дожидаться multicast сообщения об адресе ноды.
89 @command{nncp-file} команда пропускает всё что не является регулярным
90 файлом или директорией во время создания pax-архива.
95 @subsection Релиз 8.3.0
99 Исправлена возможность сборки на 32-бит системах.
104 @subsection Релиз 8.2.0
108 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
109 вместо голого μTP транспортного протокола, делая возможным работу в
110 качестве обычного TCP сервера внутри overlay сети.
113 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
114 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
117 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
120 @command{nncp-daemon} может слушать одновременно и на TCP и на
121 Yggdrasil-управляемом сокетах.
124 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
125 опционально -- вы можете быть доступны и через связь с peer-ами.
130 @subsection Релиз 8.1.0
134 @command{nncp-cfgdir} команда не требует обязательного наличия
135 @code{self} секции конфигурационного файла.
138 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
139 используя online протокол поверх неё.
144 @subsection Релиз 8.0.2
148 Исправлена возможность отправки мультивещательных пакетов.
153 @subsection Релиз 8.0.1
157 Исправлено некорректное вычисление @code{freq.chunked} значения, при
158 отсутствии которого всё равно форсированно включалась chunked передача.
161 Исправлено некорректное вычисление значения полного размера файла в
167 @subsection Релиз 8.0.0
171 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
172 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
173 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
174 знания размеров заранее, без создания временного файла или буферизации в
178 Производится корректная проверка дополнения зашифрованного пакета. Это
179 не критичная проблема, но прежде ни размер, ни значение дополнения не
180 были аутентифицированы, позволяя циклично откусывать по байту с конца и
181 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
182 такого зашифрованного пакета.
185 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
186 совместимого с потоковой работой формата зашифрованных пакетов.
189 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
190 @option{-maxsize}, ограничивающая максимальный результирующий размер
191 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
192 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
197 @subsection Релиз 7.7.0
201 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
202 изменениях в spool директориях, для сокращения накладных расходов на их
206 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
207 поддиректориях теперь, дабы ускорить сканирование spool областей.
208 Необходима миграция текущих файлов:
211 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
213 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
216 find . -type f -name "*.seen" | while read fn ; do
217 mv $fn seen/$@{fn%.seen@}
221 $ find $NNCPSPOOL -type d -name area | while read area ; do
222 find $area -type f -name "*.seen" | while read fn ; do
231 @subsection Релиз 7.6.0
235 Журналирование может производиться в назначенный открытый файловый
236 дескриптор (@env{$NNCPLOG=FD:5} например).
237 Что дружелюбно к использованию под @command{daemontools}.
240 Добавлены дополнительные проверки наличия публичных ключей в
241 конфигурационном файле, предотвращающие падения некоторых команд.
246 @subsection Релиз 7.5.1
250 NNCP собирается на NetBSD.
255 @subsection Релиз 7.5.0
259 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
260 журнале будет присутствовать адрес удалённой системы (при запуске под
261 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
265 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
266 @option{-ucspi} опцию.
269 Не выходить если не получается слушать на каком-либо MCD сетевом
270 интерфейсе -- только предупреждать об ошибке.
275 @subsection Релиз 7.4.0
279 Исправлена работоспособность MCD при одновременном использовании
280 @command{nncp-daemon} и @command{nncp-caller}.
285 @subsection Релиз 7.3.2
289 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
294 @subsection Релиз 7.3.1
298 Исправлена проблема с возможно остающимся открытым файловым
299 дескриптором в online командах.
302 Существенно снижено потребление памяти MTH хэширования.
307 @subsection Релиз 7.3.0
311 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
314 Возможность использовать конфигурацию в виде директории с набором
315 файлов. Появилась команда @command{nncp-cfgdir}.
320 @subsection Релиз 7.2.1
324 Небольшие оптимизации в online командах.
329 @subsection Релиз 7.2.0
333 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
336 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
337 использовать его, а не игнорировать.
340 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
341 видящего свой собственный пакет.
344 Намного меньшее потребление памяти во время MTH хэширования когда
345 смещение равно нулю: когда пакет не является докачиванием, а например
346 проверяется @command{nncp-check} командой.
351 @subsection Релиз 7.1.1
355 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
360 @subsection Релиз 7.1.0
364 Появилась возможность мультивещательной (multicast) рассылки пакетов.
365 Реализовано всего лишь дополнительным типом простых пакетов и изменением
366 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
369 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
370 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
373 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
376 Исправлено некорректное генерирование @file{.hdr} при использовании
380 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
384 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
385 проверку в бесконечный цикл.
388 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
391 @command{nncp-pkt} может парсить @file{.hdr} файлы.
396 @subsection Релиз 7.0.0
400 Минимальная требуемая версия Go 1.13.
403 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
404 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
405 изменение формата шифрованных файлов (всего что находится в spool
406 области) и формата @file{.meta} файла при chunked передаче.
408 Текущая реализация далека от оптимальной: в ней нет распараллеливания
409 вычислений и имеет повышенное потребление памяти: около 512 KiB на
410 каждый 1 GiB данных файла. Будущая оптимизация производительности и
411 потребления памяти не должна привести к изменению формата пакетов. Но
412 это всё равно в несколько раз быстрее BLAKE2b.
415 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
416 чтения с диска только предшествующей части, а не полностью всего файла,
420 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
423 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
424 уменьшая количество примитивов. А также заголовок шифрованного файла
425 теперь является ассоциированными данными при шифровании.
428 MultiCast Discovery использует
429 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
432 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
435 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
438 Обновлены зависимые библиотеки.
443 @subsection Релиз 6.6.0
447 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
448 ожидают завершения всех процессов фоновой проверки контрольных сумм,
449 после того как соединение закрыто.
452 Добавлена возможность определения адреса через multicast оповещение в
453 локальной сети, так называемый MCD (MultiCast Discovery).
458 @subsection Релиз 6.5.0
462 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
465 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
468 Исправлена гонка при закрытии файловых дескрипторов во время завершения
469 работы online протокола, которая могла привести к ошибке записи
470 принятого фрагмента пакета.
473 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
474 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
479 @subsection Релиз 6.4.0
483 Исправлена возможная гонка в online протоколе, приводящая к падению
489 @subsection Релиз 6.3.0
493 Исправлено возможное падение программы во время показа прогресса online
499 @subsection Релиз 6.2.1
503 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
508 @subsection Релиз 6.2.0
512 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
515 Очередной рефакторинг и упрощение системы журналирования.
516 Не должно быть видимых изменений для конечного пользователя.
521 @subsection Релиз 6.1.0
525 Оптимизация: большинство команд теперь не держат открытыми файловые
526 дескрипторы. Прежде вы легко могли выйти за пределы максимально
527 допустимого количества открытых файлов, если у вас было много пакетов в
531 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
532 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
535 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
536 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
537 online демоны не выполнят проверку целостности.
540 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
541 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
544 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
545 файлах, рядом с самими пакетами. Это может существенно повысить скорость
546 получения списка пакетов на файловых системах с большим размером блока.
551 @subsection Релиз 6.0.0
555 Журнал использует человеко-читаемый и легко обрабатываемый машиной
556 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
557 записей, вместо структурированных строчек RFC 3339. Старый формат
558 журналов не поддерживается @command{nncp-log}.
561 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
562 @command{nncp-daemon}.
565 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
566 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
567 выражением содержащим секунды, это можно использовать как возможность
568 вызова только при появлении исходящих пакетов.
571 @command{nncp-cronexpr} команда позволяет проверить корректность и
572 ожидаемый результат от указанного cron выражения.
577 @subsection Релиз 5.6.0
581 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
582 во время него ежесекундно.
585 В @option{calls} секции конфигурации появились опции
586 @option{autotoss}, @option{autotoss-doseen},
587 @option{autotoss-nofile}, @option{autotoss-nofreq},
588 @option{autotoss-noexec}, @option{autotoss-notrns}.
589 Вы можете настраивать опции автоматического tosser для каждого вызова.
592 Использовать vendoring вместо переопределения @env{$GOPATH} во время
593 установки tarball, так как текущая минимальная версия Go это 1.12,
594 поддерживающая модули.
599 @subsection Релиз 5.5.1
603 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
604 в @file{config} во время установки.
609 @subsection Релиз 5.5.0
613 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
614 @command{nncp-bundle}, @command{nncp-stat} командах.
617 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
620 У команды @command{nncp-exec} появились @option{-use-tmp} и
621 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
625 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
626 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
629 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
634 @subsection Релиз 5.4.1
638 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
643 @subsection Релиз 5.4.0
647 Обновлены зависимые библиотеки.
650 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
651 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
652 реализация @command{redo} включена в tarball.
657 @subsection Релиз 5.3.3
661 Больше различных проверок в коде на ошибки.
664 Обновлены зависимые библиотеки.
669 @subsection Релиз 5.3.2
673 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
674 котором соединение могло не учитывать факты прихода пакетов и обрывать
680 @subsection Релиз 5.3.1
684 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
685 использующими внешние команды (@verb{#"|somecmd"#}).
688 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
689 каждому пакету в spool.
694 @subsection Релиз 5.3.0
698 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
701 Исправлено не происходящее дополнение (padding) handshake сообщений.
704 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
707 SP протокол порождает меньше вызовов записей (соответственно, и TCP
711 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
712 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
715 Раз в минуту, если нет более никакого другого трафика, посылаются PING
716 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
717 более не работоспособно.
720 @command{nncp-toss} использует lock-file для предотвращения
721 одновременной обработки зашифрованных пакетов.
726 @subsection Релиз 5.2.1
730 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
735 @subsection Релиз 5.2.0
739 Большинство команд по умолчанию показывают однострочный прогресс
740 выполнения операции. Появились @option{-progress}, @option{-noprogress}
741 опции командной строки, @option{noprogress} опция конфигурационного
745 Исправлен некорректный код возврата @command{nncp-check} команды,
746 который возвращал ошибку когда всё хорошо.
749 Проверка свободного места для пакетов, во время выполнения
750 @command{nncp-bundle -rx}.
755 @subsection Релиз 5.1.2
759 Исправлена @strong{критичная} уязвимость: аутентификация online нод
760 могла приводить к некорректной идентификации удалённой стороны, позволяя
761 скачивать чужие зашифрованные пакеты.
764 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
765 публичный ключ Noise были поменяны местами, что приводило к
766 невозможности online аутентификации нод.
769 Явная синхронизация (@code{fsync}) директорий для гарантированного
770 переименования файлов.
775 @subsection Релиз 5.1.1
779 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
784 @subsection Релиз 5.1.0
788 @command{nncp-file} может отправлять директории, автоматически на лету
792 Во время создания исходящих сообщений проверяется наличие свободного
793 места на файловой системе.
796 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
797 конфигурационного файла заменены на структуру
798 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
801 Добавлена @option{freq.maxsize} опция конфигурационного файл,
802 запрещающая ответ на файловый запрос больше заданного размера.
805 Возможность оповещения об успешно выполненных командах (exec) через
806 @option{notify.exec} опцию конфигурационного файла.
811 @subsection Релиз 5.0.0
815 @strong{Несовместимое} изменение формата конфигурационного файла:
816 YAML заменён на Hjson, из-за его гораздо большей простоты, без
817 заметной потери функционала и удобства.
820 @strong{Несовместимое} изменение формата простых пакетов. Работа со
821 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
822 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
823 смотря на то, что версия библиотеки ещё не проверена временем.
826 Возможность соединяться с удалёнными нодами не только по TCP, но и через
827 pipe вызов сторонней команды.
830 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
831 комментариев. Можно использовать @option{-nocomments} опцию для старого
835 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
836 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
839 Возможность переопределить umask процесса через опцию конфигурационного
843 По умолчанию файлы и директории создаются с 666/777 правами доступа,
844 позволяя управлять ими @command{umask}-ом.
847 Обновлены зависимости.
850 Полное использование go модулей для управления зависимостями
851 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
854 Отмена автоматического использования более новых версий GNU GPL
855 (лицензия проекта GNU GPLv3-только).
860 @subsection Релиз 4.1
862 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
866 @subsection Релиз 4.0
870 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
871 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
872 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
873 отсылать дешифрованные данные внешней команде. Старые версии не
877 Проверка доступного места перед копированием во время работы
878 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
881 @command{nncp-call} имеет возможность только показывать список пакетов
882 на удалённой машине, без их передачи.
885 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
888 Восстановлена работоспособность @option{xxrate} настройки в
889 @option{calls} секции конфигурационного файла.
892 Зависимые библиотеки обновлены.
895 Небольшие исправления ошибок.
898 Начало использования @code{go.mod} подсистемы.
903 @subsection Релиз 3.4
905 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
909 @subsection Релиз 3.3
913 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
914 проверяют существование @file{.seen} файла и расценивают его как то, что
915 файл уже был скачан. Возможно передача данных была осуществлена
916 сторонним способом и удалённая сторона должна быть оповещена об этом.
919 Если более высокоприоритетный пакет попадает в спул, то
920 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
921 низкоприоритетные передачи.
924 К средствам связанным с online-соединениями (@command{nncp-daemon},
925 @command{nncp-call}, @command{nncp-caller}) добавлен простой
926 ограничитель скорости.
929 Возможность задания приоритета символьными обозначениями:
930 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
933 Изменены значения приоритетов по-умолчанию:
934 для @command{nncp-exec} с 64 на 96,
935 для @command{nncp-freq} с 64 на 160,
936 для @command{nncp-file} с 196 на 224.
941 @subsection Релиз 3.2
944 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
945 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
946 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
947 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
948 Явное добавление @file{NNCP/} директории в архив восстанавливает
949 работоспособность с корректными tar архивами.
953 @subsection Релиз 3.1
956 Возможность отключать пересылку через промежуточные ноды используя
957 @verb{|-via -|} опцию командной строки.
961 @subsection Релиз 3.0
965 @strong{Несовместимое} изменение формата простых пакетов. Работа со
966 старыми версиями не поддерживается.
969 Добавлена возможность удалённого исполнения команд, путём
970 конфигурирования @option{exec} опции конфигурационного файла и
971 использования команды @command{nncp-exec}:
974 Команда @command{nncp-mail} заменена более гибкой и широкой
975 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
976 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
978 @option{sendmail} опция конфигурационного файла заменена на более гибкую
979 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
980 @code{exec: sendmail: [@dots{}]}.
984 Возможность переопределить @option{via} опцию конфигурации для целевого
985 узла через @option{-via} опцию командной строки для следующих команд:
986 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
989 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
993 Exec команды вызываются с дополнительными переменными окружения
994 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
997 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
998 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
999 аргументом @option{-replynice}.
1002 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1003 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1004 @option{-noexec}, @option{-notrns}.
1007 По-умолчанию @command{nncp-file} команда для
1008 @option{-minsize}/@option{-chunked} опций использует
1009 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1010 Это можно отключить указав нулевое значение.
1015 @subsection Релиз 2.0
1019 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1020 Работа со старыми версиями не поддерживается.
1023 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1024 Одним криптографическим примитивом меньше.
1027 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1028 криптографическим примитивом меньше (предполагая, что BLAKE2X
1029 практически идентичен BLAKE2).
1034 @subsection Релиз 1.0
1038 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1039 со старыми версиями не поддерживается.
1042 @command{nncp-bundle} команда может создавать потоки зашифрованных
1043 пакетов или потреблять их. Это полезно когда речь идёт о
1044 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1045 без создания промежуточного подготовленного ISO образа или работа с
1046 ленточными накопителями).
1049 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1050 предотвращая приём дублированных пакетов.
1053 В команде @command{nncp-call} разрешается иметь только одного
1054 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1055 входящих пакетов могут создать много горутин.
1058 Возможность переопределить путь до spool директории и файла журнала
1059 через аргумент командной строки или переменную окружения.
1062 @command{nncp-rm} команда может удалять все исходящие/входящие,
1063 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1068 @subsection Релиз 0.12
1070 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1074 @subsection Релиз 0.11
1076 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1080 @subsection Релиз 0.10
1083 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1084 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1088 @subsection Релиз 0.9
1091 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1092 команды. Они игнорировались.
1096 @subsection Релиз 0.8
1099 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1100 @option{-minsize} для передачи без разбиения на части была в байтах, а
1105 @subsection Релиз 0.7
1109 Возможность предоставлять данные для @command{nncp-file} через
1110 стандартный ввод, используя временный зашифрованный файл для этого.
1113 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1114 @command{nncp-reass} командой и @option{freqchunked} опцией
1115 конфигурационного файла. Полезно для передачи больших файлов через
1116 маленькие устройства хранения.
1119 @option{freqminsize} опция конфигурационного файла, аналогичная
1123 Опция @option{-force} команды @command{nncp-xfer} переименована в
1124 @option{-mkdir} для ясности.
1127 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1130 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1131 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1132 имели общий префикс и были сгруппированы для удобства.
1135 Появилась команда @command{nncp-cfgenc}, позволяющая
1136 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1137 без использования OpenPGP или других подобных инструментов.
1140 Обновлены зависимые криптографические библиотеки.
1145 @subsection Релиз 0.6
1147 @item Появилась небольшая команда @command{nncp-rm}.
1148 @item Обновлены зависимые криптографические библиотеки.
1152 @subsection Релиз 0.5
1155 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1156 @command{nncp-file} и @command{nncp-freq} командах.
1160 @subsection Релиз 0.4
1164 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1165 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1166 ошибкой (данные не терялись).
1169 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1170 это короче и удобнее для использования.
1173 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1174 позволяющая создать минималистичный урезанный конфигурационный файл без
1175 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1180 @subsection Релиз 0.3
1182 @item Исправлена совместимость с Go 1.6.
1186 @subsection Релиз 0.2
1190 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1191 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1194 @option{-minsize} опция даёт возможность автоматически дополнять
1195 исходящие пакеты до указанного минимального размера.
1198 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1199 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1200 Удалённая сторона сразу же оповещается об этом.
1203 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1204 неактивность в online соединении, когда оно должно быть отключено. Она
1205 может быть использована для сохранения соединения на долгое время.
1208 @option{-maxonlinetime} опция даёт возможность указания максимального
1209 возможного времени жизни соединения.
1212 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1216 @command{nncp-pkt} команда может разжимать данные.