5 @subsection Релиз 8.7.0
9 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
13 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
18 @subsection Релиз 8.6.0
22 @command{nncp-xfer} проверяет сходится ли контрольная сумма
23 скопированного локально пакета и исходного.
26 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
27 отправку остаются незаконченные задания.
30 Появилась @command{nncp-ack} команда, которая отправляет явное
31 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
32 упомянутый пакет из исходящего spool-а.
35 Появилась возможность отключения @code{fsync} операции
36 @env{$NNCPNOSYNC=1} переменной окружения.
39 Добавлены разнообразные индексы в документации, что должно помочь при
45 @subsection Релиз 8.5.0
49 Исправлена работоспособность @command{nncp-bundle}.
52 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
56 Возможность переопределять внутренний timeout по умолчанию для протокола
57 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
58 полезно для каналов с очень большими задержками.
61 NNCP собирается на OpenBSD.
66 @subsection Релиз 8.4.0
70 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
71 @code{mcd-send} опции конфигурации) теперь являются регулярными
72 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
73 их теперь и прописывает @code{.*} имя интерфейса.
76 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
77 позволяющий дожидаться multicast сообщения об адресе ноды.
80 @command{nncp-file} команда пропускает всё что не является регулярным
81 файлом или директорией во время создания pax-архива.
86 @subsection Релиз 8.3.0
90 Исправлена возможность сборки на 32-бит системах.
95 @subsection Релиз 8.2.0
99 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
100 вместо голого μTP транспортного протокола, делая возможным работу в
101 качестве обычного TCP сервера внутри overlay сети.
104 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
105 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
108 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
111 @command{nncp-daemon} может слушать одновременно и на TCP и на
112 Yggdrasil-управляемом сокетах.
115 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
116 опционально -- вы можете быть доступны и через связь с peer-ами.
121 @subsection Релиз 8.1.0
125 @command{nncp-cfgdir} команда не требует обязательного наличия
126 @code{self} секции конфигурационного файла.
129 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
130 используя online протокол поверх неё.
135 @subsection Релиз 8.0.2
139 Исправлена возможность отправки мультивещательных пакетов.
144 @subsection Релиз 8.0.1
148 Исправлено некорректное вычисление @code{freq.chunked} значения, при
149 отсутствии которого всё равно форсированно включалась chunked передача.
152 Исправлено некорректное вычисление значения полного размера файла в
158 @subsection Релиз 8.0.0
162 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
163 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
164 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
165 знания размеров заранее, без создания временного файла или буферизации в
169 Производится корректная проверка дополнения зашифрованного пакета. Это
170 не критичная проблема, но прежде ни размер, ни значение дополнения не
171 были аутентифицированы, позволяя циклично откусывать по байту с конца и
172 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
173 такого зашифрованного пакета.
176 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
177 совместимого с потоковой работой формата зашифрованных пакетов.
180 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
181 @option{-maxsize}, ограничивающая максимальный результирующий размер
182 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
183 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
188 @subsection Релиз 7.7.0
192 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
193 изменениях в spool директориях, для сокращения накладных расходов на их
197 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
198 поддиректориях теперь, дабы ускорить сканирование spool областей.
199 Необходима миграция текущих файлов:
202 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
204 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
207 find . -type f -name "*.seen" | while read fn ; do
208 mv $fn seen/$@{fn%.seen@}
212 $ find $NNCPSPOOL -type d -name area | while read area ; do
213 find $area -type f -name "*.seen" | while read fn ; do
222 @subsection Релиз 7.6.0
226 Журналирование может производиться в назначенный открытый файловый
227 дескриптор (@env{$NNCPLOG=FD:5} например).
228 Что дружелюбно к использованию под @command{daemontools}.
231 Добавлены дополнительные проверки наличия публичных ключей в
232 конфигурационном файле, предотвращающие падения некоторых команд.
237 @subsection Релиз 7.5.1
241 NNCP собирается на NetBSD.
246 @subsection Релиз 7.5.0
250 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
251 журнале будет присутствовать адрес удалённой системы (при запуске под
252 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
256 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
257 @option{-ucspi} опцию.
260 Не выходить если не получается слушать на каком-либо MCD сетевом
261 интерфейсе -- только предупреждать об ошибке.
266 @subsection Релиз 7.4.0
270 Исправлена работоспособность MCD при одновременном использовании
271 @command{nncp-daemon} и @command{nncp-caller}.
276 @subsection Релиз 7.3.2
280 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
285 @subsection Релиз 7.3.1
289 Исправлена проблема с возможно остающимся открытым файловым
290 дескриптором в online командах.
293 Существенно снижено потребление памяти MTH хэширования.
298 @subsection Релиз 7.3.0
302 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
305 Возможность использовать конфигурацию в виде директории с набором
306 файлов. Появилась команда @command{nncp-cfgdir}.
311 @subsection Релиз 7.2.1
315 Небольшие оптимизации в online командах.
320 @subsection Релиз 7.2.0
324 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
327 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
328 использовать его, а не игнорировать.
331 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
332 видящего свой собственный пакет.
335 Намного меньшее потребление памяти во время MTH хэширования когда
336 смещение равно нулю: когда пакет не является докачиванием, а например
337 проверяется @command{nncp-check} командой.
342 @subsection Релиз 7.1.1
346 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
351 @subsection Релиз 7.1.0
355 Появилась возможность мультивещательной (multicast) рассылки пакетов.
356 Реализовано всего лишь дополнительным типом простых пакетов и изменением
357 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
360 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
361 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
364 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
367 Исправлено некорректное генерирование @file{.hdr} при использовании
371 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
375 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
376 проверку в бесконечный цикл.
379 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
382 @command{nncp-pkt} может парсить @file{.hdr} файлы.
387 @subsection Релиз 7.0.0
391 Минимальная требуемая версия Go 1.13.
394 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
395 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
396 изменение формата шифрованных файлов (всего что находится в spool
397 области) и формата @file{.meta} файла при chunked передаче.
399 Текущая реализация далека от оптимальной: в ней нет распараллеливания
400 вычислений и имеет повышенное потребление памяти: около 512 KiB на
401 каждый 1 GiB данных файла. Будущая оптимизация производительности и
402 потребления памяти не должна привести к изменению формата пакетов. Но
403 это всё равно в несколько раз быстрее BLAKE2b.
406 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
407 чтения с диска только предшествующей части, а не полностью всего файла,
411 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
414 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
415 уменьшая количество примитивов. А также заголовок шифрованного файла
416 теперь является ассоциированными данными при шифровании.
419 MultiCast Discovery использует
420 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
423 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
426 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
429 Обновлены зависимые библиотеки.
434 @subsection Релиз 6.6.0
438 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
439 ожидают завершения всех процессов фоновой проверки контрольных сумм,
440 после того как соединение закрыто.
443 Добавлена возможность определения адреса через multicast оповещение в
444 локальной сети, так называемый MCD (MultiCast Discovery).
449 @subsection Релиз 6.5.0
453 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
456 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
459 Исправлена гонка при закрытии файловых дескрипторов во время завершения
460 работы online протокола, которая могла привести к ошибке записи
461 принятого фрагмента пакета.
464 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
465 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
470 @subsection Релиз 6.4.0
474 Исправлена возможная гонка в online протоколе, приводящая к падению
480 @subsection Релиз 6.3.0
484 Исправлено возможное падение программы во время показа прогресса online
490 @subsection Релиз 6.2.1
494 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
499 @subsection Релиз 6.2.0
503 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
506 Очередной рефакторинг и упрощение системы журналирования.
507 Не должно быть видимых изменений для конечного пользователя.
512 @subsection Релиз 6.1.0
516 Оптимизация: большинство команд теперь не держат открытыми файловые
517 дескрипторы. Прежде вы легко могли выйти за пределы максимально
518 допустимого количества открытых файлов, если у вас было много пакетов в
522 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
523 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
526 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
527 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
528 online демоны не выполнят проверку целостности.
531 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
532 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
535 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
536 файлах, рядом с самими пакетами. Это может существенно повысить скорость
537 получения списка пакетов на файловых системах с большим размером блока.
542 @subsection Релиз 6.0.0
546 Журнал использует человеко-читаемый и легко обрабатываемый машиной
547 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
548 записей, вместо структурированных строчек RFC 3339. Старый формат
549 журналов не поддерживается @command{nncp-log}.
552 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
553 @command{nncp-daemon}.
556 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
557 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
558 выражением содержащим секунды, это можно использовать как возможность
559 вызова только при появлении исходящих пакетов.
562 @command{nncp-cronexpr} команда позволяет проверить корректность и
563 ожидаемый результат от указанного cron выражения.
568 @subsection Релиз 5.6.0
572 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
573 во время него ежесекундно.
576 В @option{calls} секции конфигурации появились опции
577 @option{autotoss}, @option{autotoss-doseen},
578 @option{autotoss-nofile}, @option{autotoss-nofreq},
579 @option{autotoss-noexec}, @option{autotoss-notrns}.
580 Вы можете настраивать опции автоматического tosser для каждого вызова.
583 Использовать vendoring вместо переопределения @env{$GOPATH} во время
584 установки tarball, так как текущая минимальная версия Go это 1.12,
585 поддерживающая модули.
590 @subsection Релиз 5.5.1
594 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
595 в @file{config} во время установки.
600 @subsection Релиз 5.5.0
604 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
605 @command{nncp-bundle}, @command{nncp-stat} командах.
608 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
611 У команды @command{nncp-exec} появились @option{-use-tmp} и
612 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
616 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
617 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
620 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
625 @subsection Релиз 5.4.1
629 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
634 @subsection Релиз 5.4.0
638 Обновлены зависимые библиотеки.
641 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
642 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
643 реализация @command{redo} включена в tarball.
648 @subsection Релиз 5.3.3
652 Больше различных проверок в коде на ошибки.
655 Обновлены зависимые библиотеки.
660 @subsection Релиз 5.3.2
664 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
665 котором соединение могло не учитывать факты прихода пакетов и обрывать
671 @subsection Релиз 5.3.1
675 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
676 использующими внешние команды (@verb{#"|somecmd"#}).
679 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
680 каждому пакету в spool.
685 @subsection Релиз 5.3.0
689 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
692 Исправлено не происходящее дополнение (padding) handshake сообщений.
695 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
698 SP протокол порождает меньше вызовов записей (соответственно, и TCP
702 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
703 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
706 Раз в минуту, если нет более никакого другого трафика, посылаются PING
707 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
708 более не работоспособно.
711 @command{nncp-toss} использует lock-file для предотвращения
712 одновременной обработки зашифрованных пакетов.
717 @subsection Релиз 5.2.1
721 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
726 @subsection Релиз 5.2.0
730 Большинство команд по умолчанию показывают однострочный прогресс
731 выполнения операции. Появились @option{-progress}, @option{-noprogress}
732 опции командной строки, @option{noprogress} опция конфигурационного
736 Исправлен некорректный код возврата @command{nncp-check} команды,
737 который возвращал ошибку когда всё хорошо.
740 Проверка свободного места для пакетов, во время выполнения
741 @command{nncp-bundle -rx}.
746 @subsection Релиз 5.1.2
750 Исправлена @strong{критичная} уязвимость: аутентификация online нод
751 могла приводить к некорректной идентификации удалённой стороны, позволяя
752 скачивать чужие зашифрованные пакеты.
755 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
756 публичный ключ Noise были поменяны местами, что приводило к
757 невозможности online аутентификации нод.
760 Явная синхронизация (@code{fsync}) директорий для гарантированного
761 переименования файлов.
766 @subsection Релиз 5.1.1
770 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
775 @subsection Релиз 5.1.0
779 @command{nncp-file} может отправлять директории, автоматически на лету
783 Во время создания исходящих сообщений проверяется наличие свободного
784 места на файловой системе.
787 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
788 конфигурационного файла заменены на структуру
789 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
792 Добавлена @option{freq.maxsize} опция конфигурационного файл,
793 запрещающая ответ на файловый запрос больше заданного размера.
796 Возможность оповещения об успешно выполненных командах (exec) через
797 @option{notify.exec} опцию конфигурационного файла.
802 @subsection Релиз 5.0.0
806 @strong{Несовместимое} изменение формата конфигурационного файла:
807 YAML заменён на Hjson, из-за его гораздо большей простоты, без
808 заметной потери функционала и удобства.
811 @strong{Несовместимое} изменение формата простых пакетов. Работа со
812 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
813 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
814 смотря на то, что версия библиотеки ещё не проверена временем.
817 Возможность соединяться с удалёнными нодами не только по TCP, но и через
818 pipe вызов сторонней команды.
821 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
822 комментариев. Можно использовать @option{-nocomments} опцию для старого
826 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
827 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
830 Возможность переопределить umask процесса через опцию конфигурационного
834 По умолчанию файлы и директории создаются с 666/777 правами доступа,
835 позволяя управлять ими @command{umask}-ом.
838 Обновлены зависимости.
841 Полное использование go модулей для управления зависимостями
842 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
845 Отмена автоматического использования более новых версий GNU GPL
846 (лицензия проекта GNU GPLv3-только).
851 @subsection Релиз 4.1
853 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
857 @subsection Релиз 4.0
861 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
862 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
863 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
864 отсылать дешифрованные данные внешней команде. Старые версии не
868 Проверка доступного места перед копированием во время работы
869 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
872 @command{nncp-call} имеет возможность только показывать список пакетов
873 на удалённой машине, без их передачи.
876 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
879 Восстановлена работоспособность @option{xxrate} настройки в
880 @option{calls} секции конфигурационного файла.
883 Зависимые библиотеки обновлены.
886 Небольшие исправления ошибок.
889 Начало использования @code{go.mod} подсистемы.
894 @subsection Релиз 3.4
896 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
900 @subsection Релиз 3.3
904 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
905 проверяют существование @file{.seen} файла и расценивают его как то, что
906 файл уже был скачан. Возможно передача данных была осуществлена
907 сторонним способом и удалённая сторона должна быть оповещена об этом.
910 Если более высокоприоритетный пакет попадает в спул, то
911 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
912 низкоприоритетные передачи.
915 К средствам связанным с online-соединениями (@command{nncp-daemon},
916 @command{nncp-call}, @command{nncp-caller}) добавлен простой
917 ограничитель скорости.
920 Возможность задания приоритета символьными обозначениями:
921 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
924 Изменены значения приоритетов по-умолчанию:
925 для @command{nncp-exec} с 64 на 96,
926 для @command{nncp-freq} с 64 на 160,
927 для @command{nncp-file} с 196 на 224.
932 @subsection Релиз 3.2
935 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
936 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
937 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
938 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
939 Явное добавление @file{NNCP/} директории в архив восстанавливает
940 работоспособность с корректными tar архивами.
944 @subsection Релиз 3.1
947 Возможность отключать пересылку через промежуточные ноды используя
948 @verb{|-via -|} опцию командной строки.
952 @subsection Релиз 3.0
956 @strong{Несовместимое} изменение формата простых пакетов. Работа со
957 старыми версиями не поддерживается.
960 Добавлена возможность удалённого исполнения команд, путём
961 конфигурирования @option{exec} опции конфигурационного файла и
962 использования команды @command{nncp-exec}:
965 Команда @command{nncp-mail} заменена более гибкой и широкой
966 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
967 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
969 @option{sendmail} опция конфигурационного файла заменена на более гибкую
970 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
971 @code{exec: sendmail: [@dots{}]}.
975 Возможность переопределить @option{via} опцию конфигурации для целевого
976 узла через @option{-via} опцию командной строки для следующих команд:
977 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
980 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
984 Exec команды вызываются с дополнительными переменными окружения
985 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
988 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
989 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
990 аргументом @option{-replynice}.
993 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
994 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
995 @option{-noexec}, @option{-notrns}.
998 По-умолчанию @command{nncp-file} команда для
999 @option{-minsize}/@option{-chunked} опций использует
1000 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1001 Это можно отключить указав нулевое значение.
1006 @subsection Релиз 2.0
1010 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1011 Работа со старыми версиями не поддерживается.
1014 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1015 Одним криптографическим примитивом меньше.
1018 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1019 криптографическим примитивом меньше (предполагая, что BLAKE2X
1020 практически идентичен BLAKE2).
1025 @subsection Релиз 1.0
1029 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1030 со старыми версиями не поддерживается.
1033 @command{nncp-bundle} команда может создавать потоки зашифрованных
1034 пакетов или потреблять их. Это полезно когда речь идёт о
1035 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1036 без создания промежуточного подготовленного ISO образа или работа с
1037 ленточными накопителями).
1040 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1041 предотвращая приём дублированных пакетов.
1044 В команде @command{nncp-call} разрешается иметь только одного
1045 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1046 входящих пакетов могут создать много горутин.
1049 Возможность переопределить путь до spool директории и файла журнала
1050 через аргумент командной строки или переменную окружения.
1053 @command{nncp-rm} команда может удалять все исходящие/входящие,
1054 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1059 @subsection Релиз 0.12
1061 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1065 @subsection Релиз 0.11
1067 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1071 @subsection Релиз 0.10
1074 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1075 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1079 @subsection Релиз 0.9
1082 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1083 команды. Они игнорировались.
1087 @subsection Релиз 0.8
1090 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1091 @option{-minsize} для передачи без разбиения на части была в байтах, а
1096 @subsection Релиз 0.7
1100 Возможность предоставлять данные для @command{nncp-file} через
1101 стандартный ввод, используя временный зашифрованный файл для этого.
1104 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1105 @command{nncp-reass} командой и @option{freqchunked} опцией
1106 конфигурационного файла. Полезно для передачи больших файлов через
1107 маленькие устройства хранения.
1110 @option{freqminsize} опция конфигурационного файла, аналогичная
1114 Опция @option{-force} команды @command{nncp-xfer} переименована в
1115 @option{-mkdir} для ясности.
1118 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1121 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1122 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1123 имели общий префикс и были сгруппированы для удобства.
1126 Появилась команда @command{nncp-cfgenc}, позволяющая
1127 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1128 без использования OpenPGP или других подобных инструментов.
1131 Обновлены зависимые криптографические библиотеки.
1136 @subsection Релиз 0.6
1138 @item Появилась небольшая команда @command{nncp-rm}.
1139 @item Обновлены зависимые криптографические библиотеки.
1143 @subsection Релиз 0.5
1146 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1147 @command{nncp-file} и @command{nncp-freq} командах.
1151 @subsection Релиз 0.4
1155 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1156 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1157 ошибкой (данные не терялись).
1160 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1161 это короче и удобнее для использования.
1164 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1165 позволяющая создать минималистичный урезанный конфигурационный файл без
1166 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1171 @subsection Релиз 0.3
1173 @item Исправлена совместимость с Go 1.6.
1177 @subsection Релиз 0.2
1181 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1182 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1185 @option{-minsize} опция даёт возможность автоматически дополнять
1186 исходящие пакеты до указанного минимального размера.
1189 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1190 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1191 Удалённая сторона сразу же оповещается об этом.
1194 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1195 неактивность в online соединении, когда оно должно быть отключено. Она
1196 может быть использована для сохранения соединения на долгое время.
1199 @option{-maxonlinetime} опция даёт возможность указания максимального
1200 возможного времени жизни соединения.
1203 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1207 @command{nncp-pkt} команда может разжимать данные.