5 @subsection Релиз 8.10.0
9 Обновлены зависимые библиотеки, включая Yggdrasil (его сеть начала
15 @subsection Релиз 8.9.0
19 @command{nncp-toss} команда имеет @option{-gen-ack} опцию.
20 @command{nncp-daemon}, @command{nncp-caller}, @command{nncp-call}
21 команды имеют @option{-autotoss-gen-ack} опцию. Они автоматически
22 генерируют ACK пакеты и сохраняют соответствующие @file{spoo/tx/ack/}
23 ссылки на них, чтобы их можно было удалить после передачи.
26 @code{autotoss-gen-ack} появился в конфигурации call.
27 @code{ack} секция появилась в конфигурации ноды.
30 @command{nncp-rm} команда имеет @option{-ack} опцию для удаления пакетов
31 на которые ссылаются @file{spool/tx/ack/} файлы созданные во время toss.
34 @command{redo} система сборки более не требуется при установке, так как
35 по сути нет зависимостей, только компиляция Go кода.
38 Обновлены некоторые зависимости.
43 @subsection Релиз 8.8.3
47 Исправлена @command{nncp-reass} команда, которая некорректно сообщала о
48 плохом размере последнего куска файла если он был кратен размеру chunk-а.
51 Обновлены зависимости. Теперь требуется Go 1.20+.
56 @subsection Релиз 8.8.2
60 Обновлена библиотека для работы с Yggdrasil, а также несколько других.
65 @subsection Релиз 8.8.1
69 Исправлено падение @command{nncp-daemon} при неопознанном подключении и
70 включённом @option{-autotoss}.
73 Обновлены зависимые библиотеки.
78 @subsection Релиз 8.8.0
82 Исправлена невозможность сборки под Go 1.19.
85 Минимальная требуемая версия Go 1.17.
88 Обновлены зависимые библиотеки.
93 @subsection Релиз 8.7.2
97 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
100 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
101 каждого удалённого пакета.
106 @subsection Релиз 8.7.1
110 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
111 файлов для входящих пакетов.
116 @subsection Релиз 8.7.0
120 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
124 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
127 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
128 использовании @option{-pkt} опции.
131 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
132 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
133 команды, чтобы удалить исходящие ACK пакеты.
138 @subsection Релиз 8.6.0
142 @command{nncp-xfer} проверяет сходится ли контрольная сумма
143 скопированного локально пакета и исходного.
146 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
147 отправку остаются незаконченные задания.
150 Появилась @command{nncp-ack} команда, которая отправляет явное
151 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
152 упомянутый пакет из исходящего spool-а.
155 Появилась возможность отключения @code{fsync} операции
156 @env{$NNCPNOSYNC=1} переменной окружения.
159 Добавлены разнообразные индексы в документации, что должно помочь при
165 @subsection Релиз 8.5.0
169 Исправлена работоспособность @command{nncp-bundle}.
172 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
176 Возможность переопределять внутренний timeout по умолчанию для протокола
177 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
178 полезно для каналов с очень большими задержками.
181 NNCP собирается на OpenBSD.
186 @subsection Релиз 8.4.0
190 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
191 @code{mcd-send} опции конфигурации) теперь являются регулярными
192 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
193 их теперь и прописывает @code{.*} имя интерфейса.
196 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
197 позволяющий дожидаться multicast сообщения об адресе ноды.
200 @command{nncp-file} команда пропускает всё что не является регулярным
201 файлом или директорией во время создания pax-архива.
206 @subsection Релиз 8.3.0
210 Исправлена возможность сборки на 32-бит системах.
215 @subsection Релиз 8.2.0
219 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
220 вместо голого μTP транспортного протокола, делая возможным работу в
221 качестве обычного TCP сервера внутри overlay сети.
224 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
225 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
228 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
231 @command{nncp-daemon} может слушать одновременно и на TCP и на
232 Yggdrasil-управляемом сокетах.
235 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
236 опционально -- вы можете быть доступны и через связь с peer-ами.
241 @subsection Релиз 8.1.0
245 @command{nncp-cfgdir} команда не требует обязательного наличия
246 @code{self} секции конфигурационного файла.
249 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
250 используя online протокол поверх неё.
255 @subsection Релиз 8.0.2
259 Исправлена возможность отправки мультивещательных пакетов.
264 @subsection Релиз 8.0.1
268 Исправлено некорректное вычисление @code{freq.chunked} значения, при
269 отсутствии которого всё равно форсированно включалась chunked передача.
272 Исправлено некорректное вычисление значения полного размера файла в
278 @subsection Релиз 8.0.0
282 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
283 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
284 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
285 знания размеров заранее, без создания временного файла или буферизации в
289 Производится корректная проверка дополнения зашифрованного пакета. Это
290 не критичная проблема, но прежде ни размер, ни значение дополнения не
291 были аутентифицированы, позволяя циклично откусывать по байту с конца и
292 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
293 такого зашифрованного пакета.
296 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
297 совместимого с потоковой работой формата зашифрованных пакетов.
300 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
301 @option{-maxsize}, ограничивающая максимальный результирующий размер
302 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
303 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
308 @subsection Релиз 7.7.0
312 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
313 изменениях в spool директориях, для сокращения накладных расходов на их
317 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
318 поддиректориях теперь, дабы ускорить сканирование spool областей.
319 Необходима миграция текущих файлов:
322 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
324 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
327 find . -type f -name "*.seen" | while read fn ; do
328 mv $fn seen/$@{fn%.seen@}
332 $ find $NNCPSPOOL -type d -name area | while read area ; do
333 find $area -type f -name "*.seen" | while read fn ; do
342 @subsection Релиз 7.6.0
346 Журналирование может производиться в назначенный открытый файловый
347 дескриптор (@env{$NNCPLOG=FD:5} например).
348 Что дружелюбно к использованию под @command{daemontools}.
351 Добавлены дополнительные проверки наличия публичных ключей в
352 конфигурационном файле, предотвращающие падения некоторых команд.
357 @subsection Релиз 7.5.1
361 NNCP собирается на NetBSD.
366 @subsection Релиз 7.5.0
370 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
371 журнале будет присутствовать адрес удалённой системы (при запуске под
372 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
376 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
377 @option{-ucspi} опцию.
380 Не выходить если не получается слушать на каком-либо MCD сетевом
381 интерфейсе -- только предупреждать об ошибке.
386 @subsection Релиз 7.4.0
390 Исправлена работоспособность MCD при одновременном использовании
391 @command{nncp-daemon} и @command{nncp-caller}.
396 @subsection Релиз 7.3.2
400 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
405 @subsection Релиз 7.3.1
409 Исправлена проблема с возможно остающимся открытым файловым
410 дескриптором в online командах.
413 Существенно снижено потребление памяти MTH хэширования.
418 @subsection Релиз 7.3.0
422 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
425 Возможность использовать конфигурацию в виде директории с набором
426 файлов. Появилась команда @command{nncp-cfgdir}.
431 @subsection Релиз 7.2.1
435 Небольшие оптимизации в online командах.
440 @subsection Релиз 7.2.0
444 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
447 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
448 использовать его, а не игнорировать.
451 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
452 видящего свой собственный пакет.
455 Намного меньшее потребление памяти во время MTH хэширования когда
456 смещение равно нулю: когда пакет не является докачиванием, а например
457 проверяется @command{nncp-check} командой.
462 @subsection Релиз 7.1.1
466 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
471 @subsection Релиз 7.1.0
475 Появилась возможность мультивещательной (multicast) рассылки пакетов.
476 Реализовано всего лишь дополнительным типом простых пакетов и изменением
477 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
480 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
481 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
484 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
487 Исправлено некорректное генерирование @file{.hdr} при использовании
491 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
495 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
496 проверку в бесконечный цикл.
499 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
502 @command{nncp-pkt} может парсить @file{.hdr} файлы.
507 @subsection Релиз 7.0.0
511 Минимальная требуемая версия Go 1.13.
514 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
515 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
516 изменение формата шифрованных файлов (всего что находится в spool
517 области) и формата @file{.meta} файла при chunked передаче.
519 Текущая реализация далека от оптимальной: в ней нет распараллеливания
520 вычислений и имеет повышенное потребление памяти: около 512 KiB на
521 каждый 1 GiB данных файла. Будущая оптимизация производительности и
522 потребления памяти не должна привести к изменению формата пакетов. Но
523 это всё равно в несколько раз быстрее BLAKE2b.
526 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
527 чтения с диска только предшествующей части, а не полностью всего файла,
531 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
534 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
535 уменьшая количество примитивов. А также заголовок шифрованного файла
536 теперь является ассоциированными данными при шифровании.
539 MultiCast Discovery использует
540 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
543 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
546 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
549 Обновлены зависимые библиотеки.
554 @subsection Релиз 6.6.0
558 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
559 ожидают завершения всех процессов фоновой проверки контрольных сумм,
560 после того как соединение закрыто.
563 Добавлена возможность определения адреса через multicast оповещение в
564 локальной сети, так называемый MCD (MultiCast Discovery).
569 @subsection Релиз 6.5.0
573 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
576 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
579 Исправлена гонка при закрытии файловых дескрипторов во время завершения
580 работы online протокола, которая могла привести к ошибке записи
581 принятого фрагмента пакета.
584 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
585 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
590 @subsection Релиз 6.4.0
594 Исправлена возможная гонка в online протоколе, приводящая к падению
600 @subsection Релиз 6.3.0
604 Исправлено возможное падение программы во время показа прогресса online
610 @subsection Релиз 6.2.1
614 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
619 @subsection Релиз 6.2.0
623 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
626 Очередной рефакторинг и упрощение системы журналирования.
627 Не должно быть видимых изменений для конечного пользователя.
632 @subsection Релиз 6.1.0
636 Оптимизация: большинство команд теперь не держат открытыми файловые
637 дескрипторы. Прежде вы легко могли выйти за пределы максимально
638 допустимого количества открытых файлов, если у вас было много пакетов в
642 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
643 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
646 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
647 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
648 online демоны не выполнят проверку целостности.
651 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
652 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
655 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
656 файлах, рядом с самими пакетами. Это может существенно повысить скорость
657 получения списка пакетов на файловых системах с большим размером блока.
662 @subsection Релиз 6.0.0
666 Журнал использует человеко-читаемый и легко обрабатываемый машиной
667 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
668 записей, вместо структурированных строчек RFC 3339. Старый формат
669 журналов не поддерживается @command{nncp-log}.
672 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
673 @command{nncp-daemon}.
676 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
677 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
678 выражением содержащим секунды, это можно использовать как возможность
679 вызова только при появлении исходящих пакетов.
682 @command{nncp-cronexpr} команда позволяет проверить корректность и
683 ожидаемый результат от указанного cron выражения.
688 @subsection Релиз 5.6.0
692 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
693 во время него ежесекундно.
696 В @option{calls} секции конфигурации появились опции
697 @option{autotoss}, @option{autotoss-doseen},
698 @option{autotoss-nofile}, @option{autotoss-nofreq},
699 @option{autotoss-noexec}, @option{autotoss-notrns}.
700 Вы можете настраивать опции автоматического tosser для каждого вызова.
703 Использовать vendoring вместо переопределения @env{$GOPATH} во время
704 установки tarball, так как текущая минимальная версия Go это 1.12,
705 поддерживающая модули.
710 @subsection Релиз 5.5.1
714 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
715 в @file{config} во время установки.
720 @subsection Релиз 5.5.0
724 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
725 @command{nncp-bundle}, @command{nncp-stat} командах.
728 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
731 У команды @command{nncp-exec} появились @option{-use-tmp} и
732 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
736 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
737 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
740 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
745 @subsection Релиз 5.4.1
749 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
754 @subsection Релиз 5.4.0
758 Обновлены зависимые библиотеки.
761 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
762 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
763 реализация @command{redo} включена в tarball.
768 @subsection Релиз 5.3.3
772 Больше различных проверок в коде на ошибки.
775 Обновлены зависимые библиотеки.
780 @subsection Релиз 5.3.2
784 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
785 котором соединение могло не учитывать факты прихода пакетов и обрывать
791 @subsection Релиз 5.3.1
795 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
796 использующими внешние команды (@verb{#"|somecmd"#}).
799 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
800 каждому пакету в spool.
805 @subsection Релиз 5.3.0
809 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
812 Исправлено не происходящее дополнение (padding) handshake сообщений.
815 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
818 SP протокол порождает меньше вызовов записей (соответственно, и TCP
822 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
823 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
826 Раз в минуту, если нет более никакого другого трафика, посылаются PING
827 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
828 более не работоспособно.
831 @command{nncp-toss} использует lock-file для предотвращения
832 одновременной обработки зашифрованных пакетов.
837 @subsection Релиз 5.2.1
841 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
846 @subsection Релиз 5.2.0
850 Большинство команд по умолчанию показывают однострочный прогресс
851 выполнения операции. Появились @option{-progress}, @option{-noprogress}
852 опции командной строки, @option{noprogress} опция конфигурационного
856 Исправлен некорректный код возврата @command{nncp-check} команды,
857 который возвращал ошибку когда всё хорошо.
860 Проверка свободного места для пакетов, во время выполнения
861 @command{nncp-bundle -rx}.
866 @subsection Релиз 5.1.2
870 Исправлена @strong{критичная} уязвимость: аутентификация online нод
871 могла приводить к некорректной идентификации удалённой стороны, позволяя
872 скачивать чужие зашифрованные пакеты.
875 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
876 публичный ключ Noise были поменяны местами, что приводило к
877 невозможности online аутентификации нод.
880 Явная синхронизация (@code{fsync}) директорий для гарантированного
881 переименования файлов.
886 @subsection Релиз 5.1.1
890 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
895 @subsection Релиз 5.1.0
899 @command{nncp-file} может отправлять директории, автоматически на лету
903 Во время создания исходящих сообщений проверяется наличие свободного
904 места на файловой системе.
907 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
908 конфигурационного файла заменены на структуру
909 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
912 Добавлена @option{freq.maxsize} опция конфигурационного файл,
913 запрещающая ответ на файловый запрос больше заданного размера.
916 Возможность оповещения об успешно выполненных командах (exec) через
917 @option{notify.exec} опцию конфигурационного файла.
922 @subsection Релиз 5.0.0
926 @strong{Несовместимое} изменение формата конфигурационного файла:
927 YAML заменён на Hjson, из-за его гораздо большей простоты, без
928 заметной потери функционала и удобства.
931 @strong{Несовместимое} изменение формата простых пакетов. Работа со
932 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
933 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
934 смотря на то, что версия библиотеки ещё не проверена временем.
937 Возможность соединяться с удалёнными нодами не только по TCP, но и через
938 pipe вызов сторонней команды.
941 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
942 комментариев. Можно использовать @option{-nocomments} опцию для старого
946 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
947 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
950 Возможность переопределить umask процесса через опцию конфигурационного
954 По умолчанию файлы и директории создаются с 666/777 правами доступа,
955 позволяя управлять ими @command{umask}-ом.
958 Обновлены зависимости.
961 Полное использование go модулей для управления зависимостями
962 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
965 Отмена автоматического использования более новых версий GNU GPL
966 (лицензия проекта GNU GPLv3-только).
971 @subsection Релиз 4.1
973 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
977 @subsection Релиз 4.0
981 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
982 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
983 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
984 отсылать дешифрованные данные внешней команде. Старые версии не
988 Проверка доступного места перед копированием во время работы
989 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
992 @command{nncp-call} имеет возможность только показывать список пакетов
993 на удалённой машине, без их передачи.
996 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
999 Восстановлена работоспособность @option{xxrate} настройки в
1000 @option{calls} секции конфигурационного файла.
1003 Зависимые библиотеки обновлены.
1006 Небольшие исправления ошибок.
1009 Начало использования @code{go.mod} подсистемы.
1014 @subsection Релиз 3.4
1016 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
1020 @subsection Релиз 3.3
1024 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
1025 проверяют существование @file{.seen} файла и расценивают его как то, что
1026 файл уже был скачан. Возможно передача данных была осуществлена
1027 сторонним способом и удалённая сторона должна быть оповещена об этом.
1030 Если более высокоприоритетный пакет попадает в спул, то
1031 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
1032 низкоприоритетные передачи.
1035 К средствам связанным с online-соединениями (@command{nncp-daemon},
1036 @command{nncp-call}, @command{nncp-caller}) добавлен простой
1037 ограничитель скорости.
1040 Возможность задания приоритета символьными обозначениями:
1041 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
1044 Изменены значения приоритетов по-умолчанию:
1045 для @command{nncp-exec} с 64 на 96,
1046 для @command{nncp-freq} с 64 на 160,
1047 для @command{nncp-file} с 196 на 224.
1052 @subsection Релиз 3.2
1055 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
1056 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
1057 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
1058 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
1059 Явное добавление @file{NNCP/} директории в архив восстанавливает
1060 работоспособность с корректными tar архивами.
1064 @subsection Релиз 3.1
1067 Возможность отключать пересылку через промежуточные ноды используя
1068 @verb{|-via -|} опцию командной строки.
1072 @subsection Релиз 3.0
1076 @strong{Несовместимое} изменение формата простых пакетов. Работа со
1077 старыми версиями не поддерживается.
1080 Добавлена возможность удалённого исполнения команд, путём
1081 конфигурирования @option{exec} опции конфигурационного файла и
1082 использования команды @command{nncp-exec}:
1085 Команда @command{nncp-mail} заменена более гибкой и широкой
1086 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
1087 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1089 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1090 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1091 @code{exec: sendmail: [@dots{}]}.
1095 Возможность переопределить @option{via} опцию конфигурации для целевого
1096 узла через @option{-via} опцию командной строки для следующих команд:
1097 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1100 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1101 в виде одного файла.
1104 Exec команды вызываются с дополнительными переменными окружения
1105 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1108 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1109 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1110 аргументом @option{-replynice}.
1113 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1114 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1115 @option{-noexec}, @option{-notrns}.
1118 По-умолчанию @command{nncp-file} команда для
1119 @option{-minsize}/@option{-chunked} опций использует
1120 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1121 Это можно отключить указав нулевое значение.
1126 @subsection Релиз 2.0
1130 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1131 Работа со старыми версиями не поддерживается.
1134 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1135 Одним криптографическим примитивом меньше.
1138 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1139 криптографическим примитивом меньше (предполагая, что BLAKE2X
1140 практически идентичен BLAKE2).
1145 @subsection Релиз 1.0
1149 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1150 со старыми версиями не поддерживается.
1153 @command{nncp-bundle} команда может создавать потоки зашифрованных
1154 пакетов или потреблять их. Это полезно когда речь идёт о
1155 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1156 без создания промежуточного подготовленного ISO образа или работа с
1157 ленточными накопителями).
1160 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1161 предотвращая приём дублированных пакетов.
1164 В команде @command{nncp-call} разрешается иметь только одного
1165 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1166 входящих пакетов могут создать много горутин.
1169 Возможность переопределить путь до spool директории и файла журнала
1170 через аргумент командной строки или переменную окружения.
1173 @command{nncp-rm} команда может удалять все исходящие/входящие,
1174 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1179 @subsection Релиз 0.12
1181 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1185 @subsection Релиз 0.11
1187 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1191 @subsection Релиз 0.10
1194 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1195 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1199 @subsection Релиз 0.9
1202 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1203 команды. Они игнорировались.
1207 @subsection Релиз 0.8
1210 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1211 @option{-minsize} для передачи без разбиения на части была в байтах, а
1216 @subsection Релиз 0.7
1220 Возможность предоставлять данные для @command{nncp-file} через
1221 стандартный ввод, используя временный зашифрованный файл для этого.
1224 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1225 @command{nncp-reass} командой и @option{freqchunked} опцией
1226 конфигурационного файла. Полезно для передачи больших файлов через
1227 маленькие устройства хранения.
1230 @option{freqminsize} опция конфигурационного файла, аналогичная
1234 Опция @option{-force} команды @command{nncp-xfer} переименована в
1235 @option{-mkdir} для ясности.
1238 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1241 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1242 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1243 имели общий префикс и были сгруппированы для удобства.
1246 Появилась команда @command{nncp-cfgenc}, позволяющая
1247 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1248 без использования OpenPGP или других подобных инструментов.
1251 Обновлены зависимые криптографические библиотеки.
1256 @subsection Релиз 0.6
1258 @item Появилась небольшая команда @command{nncp-rm}.
1259 @item Обновлены зависимые криптографические библиотеки.
1263 @subsection Релиз 0.5
1266 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1267 @command{nncp-file} и @command{nncp-freq} командах.
1271 @subsection Релиз 0.4
1275 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1276 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1277 ошибкой (данные не терялись).
1280 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1281 это короче и удобнее для использования.
1284 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1285 позволяющая создать минималистичный урезанный конфигурационный файл без
1286 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1291 @subsection Релиз 0.3
1293 @item Исправлена совместимость с Go 1.6.
1297 @subsection Релиз 0.2
1301 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1302 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1305 @option{-minsize} опция даёт возможность автоматически дополнять
1306 исходящие пакеты до указанного минимального размера.
1309 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1310 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1311 Удалённая сторона сразу же оповещается об этом.
1314 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1315 неактивность в online соединении, когда оно должно быть отключено. Она
1316 может быть использована для сохранения соединения на долгое время.
1319 @option{-maxonlinetime} опция даёт возможность указания максимального
1320 возможного времени жизни соединения.
1323 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1327 @command{nncp-pkt} команда может разжимать данные.