5 @subsection Релиз 8.8.1
9 Исправлено падение @command{nncp-daemon} при неопознанном подключении и
10 включённом @option{-autotoss}.
15 @subsection Релиз 8.8.0
19 Исправлена невозможность сборки под Go 1.19.
22 Минимальная требуемая версия Go 1.17.
25 Обновлены зависимые библиотеки.
30 @subsection Релиз 8.7.2
34 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
37 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
38 каждого удалённого пакета.
43 @subsection Релиз 8.7.1
47 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
48 файлов для входящих пакетов.
53 @subsection Релиз 8.7.0
57 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
61 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
64 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
65 использовании @option{-pkt} опции.
68 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
69 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
70 команды, чтобы удалить исходящие ACK пакеты.
75 @subsection Релиз 8.6.0
79 @command{nncp-xfer} проверяет сходится ли контрольная сумма
80 скопированного локально пакета и исходного.
83 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
84 отправку остаются незаконченные задания.
87 Появилась @command{nncp-ack} команда, которая отправляет явное
88 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
89 упомянутый пакет из исходящего spool-а.
92 Появилась возможность отключения @code{fsync} операции
93 @env{$NNCPNOSYNC=1} переменной окружения.
96 Добавлены разнообразные индексы в документации, что должно помочь при
102 @subsection Релиз 8.5.0
106 Исправлена работоспособность @command{nncp-bundle}.
109 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
113 Возможность переопределять внутренний timeout по умолчанию для протокола
114 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
115 полезно для каналов с очень большими задержками.
118 NNCP собирается на OpenBSD.
123 @subsection Релиз 8.4.0
127 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
128 @code{mcd-send} опции конфигурации) теперь являются регулярными
129 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
130 их теперь и прописывает @code{.*} имя интерфейса.
133 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
134 позволяющий дожидаться multicast сообщения об адресе ноды.
137 @command{nncp-file} команда пропускает всё что не является регулярным
138 файлом или директорией во время создания pax-архива.
143 @subsection Релиз 8.3.0
147 Исправлена возможность сборки на 32-бит системах.
152 @subsection Релиз 8.2.0
156 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
157 вместо голого μTP транспортного протокола, делая возможным работу в
158 качестве обычного TCP сервера внутри overlay сети.
161 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
162 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
165 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
168 @command{nncp-daemon} может слушать одновременно и на TCP и на
169 Yggdrasil-управляемом сокетах.
172 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
173 опционально -- вы можете быть доступны и через связь с peer-ами.
178 @subsection Релиз 8.1.0
182 @command{nncp-cfgdir} команда не требует обязательного наличия
183 @code{self} секции конфигурационного файла.
186 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
187 используя online протокол поверх неё.
192 @subsection Релиз 8.0.2
196 Исправлена возможность отправки мультивещательных пакетов.
201 @subsection Релиз 8.0.1
205 Исправлено некорректное вычисление @code{freq.chunked} значения, при
206 отсутствии которого всё равно форсированно включалась chunked передача.
209 Исправлено некорректное вычисление значения полного размера файла в
215 @subsection Релиз 8.0.0
219 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
220 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
221 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
222 знания размеров заранее, без создания временного файла или буферизации в
226 Производится корректная проверка дополнения зашифрованного пакета. Это
227 не критичная проблема, но прежде ни размер, ни значение дополнения не
228 были аутентифицированы, позволяя циклично откусывать по байту с конца и
229 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
230 такого зашифрованного пакета.
233 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
234 совместимого с потоковой работой формата зашифрованных пакетов.
237 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
238 @option{-maxsize}, ограничивающая максимальный результирующий размер
239 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
240 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
245 @subsection Релиз 7.7.0
249 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
250 изменениях в spool директориях, для сокращения накладных расходов на их
254 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
255 поддиректориях теперь, дабы ускорить сканирование spool областей.
256 Необходима миграция текущих файлов:
259 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
261 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
264 find . -type f -name "*.seen" | while read fn ; do
265 mv $fn seen/$@{fn%.seen@}
269 $ find $NNCPSPOOL -type d -name area | while read area ; do
270 find $area -type f -name "*.seen" | while read fn ; do
279 @subsection Релиз 7.6.0
283 Журналирование может производиться в назначенный открытый файловый
284 дескриптор (@env{$NNCPLOG=FD:5} например).
285 Что дружелюбно к использованию под @command{daemontools}.
288 Добавлены дополнительные проверки наличия публичных ключей в
289 конфигурационном файле, предотвращающие падения некоторых команд.
294 @subsection Релиз 7.5.1
298 NNCP собирается на NetBSD.
303 @subsection Релиз 7.5.0
307 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
308 журнале будет присутствовать адрес удалённой системы (при запуске под
309 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
313 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
314 @option{-ucspi} опцию.
317 Не выходить если не получается слушать на каком-либо MCD сетевом
318 интерфейсе -- только предупреждать об ошибке.
323 @subsection Релиз 7.4.0
327 Исправлена работоспособность MCD при одновременном использовании
328 @command{nncp-daemon} и @command{nncp-caller}.
333 @subsection Релиз 7.3.2
337 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
342 @subsection Релиз 7.3.1
346 Исправлена проблема с возможно остающимся открытым файловым
347 дескриптором в online командах.
350 Существенно снижено потребление памяти MTH хэширования.
355 @subsection Релиз 7.3.0
359 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
362 Возможность использовать конфигурацию в виде директории с набором
363 файлов. Появилась команда @command{nncp-cfgdir}.
368 @subsection Релиз 7.2.1
372 Небольшие оптимизации в online командах.
377 @subsection Релиз 7.2.0
381 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
384 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
385 использовать его, а не игнорировать.
388 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
389 видящего свой собственный пакет.
392 Намного меньшее потребление памяти во время MTH хэширования когда
393 смещение равно нулю: когда пакет не является докачиванием, а например
394 проверяется @command{nncp-check} командой.
399 @subsection Релиз 7.1.1
403 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
408 @subsection Релиз 7.1.0
412 Появилась возможность мультивещательной (multicast) рассылки пакетов.
413 Реализовано всего лишь дополнительным типом простых пакетов и изменением
414 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
417 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
418 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
421 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
424 Исправлено некорректное генерирование @file{.hdr} при использовании
428 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
432 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
433 проверку в бесконечный цикл.
436 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
439 @command{nncp-pkt} может парсить @file{.hdr} файлы.
444 @subsection Релиз 7.0.0
448 Минимальная требуемая версия Go 1.13.
451 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
452 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
453 изменение формата шифрованных файлов (всего что находится в spool
454 области) и формата @file{.meta} файла при chunked передаче.
456 Текущая реализация далека от оптимальной: в ней нет распараллеливания
457 вычислений и имеет повышенное потребление памяти: около 512 KiB на
458 каждый 1 GiB данных файла. Будущая оптимизация производительности и
459 потребления памяти не должна привести к изменению формата пакетов. Но
460 это всё равно в несколько раз быстрее BLAKE2b.
463 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
464 чтения с диска только предшествующей части, а не полностью всего файла,
468 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
471 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
472 уменьшая количество примитивов. А также заголовок шифрованного файла
473 теперь является ассоциированными данными при шифровании.
476 MultiCast Discovery использует
477 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
480 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
483 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
486 Обновлены зависимые библиотеки.
491 @subsection Релиз 6.6.0
495 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
496 ожидают завершения всех процессов фоновой проверки контрольных сумм,
497 после того как соединение закрыто.
500 Добавлена возможность определения адреса через multicast оповещение в
501 локальной сети, так называемый MCD (MultiCast Discovery).
506 @subsection Релиз 6.5.0
510 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
513 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
516 Исправлена гонка при закрытии файловых дескрипторов во время завершения
517 работы online протокола, которая могла привести к ошибке записи
518 принятого фрагмента пакета.
521 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
522 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
527 @subsection Релиз 6.4.0
531 Исправлена возможная гонка в online протоколе, приводящая к падению
537 @subsection Релиз 6.3.0
541 Исправлено возможное падение программы во время показа прогресса online
547 @subsection Релиз 6.2.1
551 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
556 @subsection Релиз 6.2.0
560 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
563 Очередной рефакторинг и упрощение системы журналирования.
564 Не должно быть видимых изменений для конечного пользователя.
569 @subsection Релиз 6.1.0
573 Оптимизация: большинство команд теперь не держат открытыми файловые
574 дескрипторы. Прежде вы легко могли выйти за пределы максимально
575 допустимого количества открытых файлов, если у вас было много пакетов в
579 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
580 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
583 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
584 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
585 online демоны не выполнят проверку целостности.
588 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
589 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
592 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
593 файлах, рядом с самими пакетами. Это может существенно повысить скорость
594 получения списка пакетов на файловых системах с большим размером блока.
599 @subsection Релиз 6.0.0
603 Журнал использует человеко-читаемый и легко обрабатываемый машиной
604 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
605 записей, вместо структурированных строчек RFC 3339. Старый формат
606 журналов не поддерживается @command{nncp-log}.
609 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
610 @command{nncp-daemon}.
613 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
614 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
615 выражением содержащим секунды, это можно использовать как возможность
616 вызова только при появлении исходящих пакетов.
619 @command{nncp-cronexpr} команда позволяет проверить корректность и
620 ожидаемый результат от указанного cron выражения.
625 @subsection Релиз 5.6.0
629 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
630 во время него ежесекундно.
633 В @option{calls} секции конфигурации появились опции
634 @option{autotoss}, @option{autotoss-doseen},
635 @option{autotoss-nofile}, @option{autotoss-nofreq},
636 @option{autotoss-noexec}, @option{autotoss-notrns}.
637 Вы можете настраивать опции автоматического tosser для каждого вызова.
640 Использовать vendoring вместо переопределения @env{$GOPATH} во время
641 установки tarball, так как текущая минимальная версия Go это 1.12,
642 поддерживающая модули.
647 @subsection Релиз 5.5.1
651 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
652 в @file{config} во время установки.
657 @subsection Релиз 5.5.0
661 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
662 @command{nncp-bundle}, @command{nncp-stat} командах.
665 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
668 У команды @command{nncp-exec} появились @option{-use-tmp} и
669 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
673 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
674 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
677 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
682 @subsection Релиз 5.4.1
686 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
691 @subsection Релиз 5.4.0
695 Обновлены зависимые библиотеки.
698 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
699 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
700 реализация @command{redo} включена в tarball.
705 @subsection Релиз 5.3.3
709 Больше различных проверок в коде на ошибки.
712 Обновлены зависимые библиотеки.
717 @subsection Релиз 5.3.2
721 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
722 котором соединение могло не учитывать факты прихода пакетов и обрывать
728 @subsection Релиз 5.3.1
732 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
733 использующими внешние команды (@verb{#"|somecmd"#}).
736 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
737 каждому пакету в spool.
742 @subsection Релиз 5.3.0
746 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
749 Исправлено не происходящее дополнение (padding) handshake сообщений.
752 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
755 SP протокол порождает меньше вызовов записей (соответственно, и TCP
759 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
760 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
763 Раз в минуту, если нет более никакого другого трафика, посылаются PING
764 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
765 более не работоспособно.
768 @command{nncp-toss} использует lock-file для предотвращения
769 одновременной обработки зашифрованных пакетов.
774 @subsection Релиз 5.2.1
778 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
783 @subsection Релиз 5.2.0
787 Большинство команд по умолчанию показывают однострочный прогресс
788 выполнения операции. Появились @option{-progress}, @option{-noprogress}
789 опции командной строки, @option{noprogress} опция конфигурационного
793 Исправлен некорректный код возврата @command{nncp-check} команды,
794 который возвращал ошибку когда всё хорошо.
797 Проверка свободного места для пакетов, во время выполнения
798 @command{nncp-bundle -rx}.
803 @subsection Релиз 5.1.2
807 Исправлена @strong{критичная} уязвимость: аутентификация online нод
808 могла приводить к некорректной идентификации удалённой стороны, позволяя
809 скачивать чужие зашифрованные пакеты.
812 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
813 публичный ключ Noise были поменяны местами, что приводило к
814 невозможности online аутентификации нод.
817 Явная синхронизация (@code{fsync}) директорий для гарантированного
818 переименования файлов.
823 @subsection Релиз 5.1.1
827 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
832 @subsection Релиз 5.1.0
836 @command{nncp-file} может отправлять директории, автоматически на лету
840 Во время создания исходящих сообщений проверяется наличие свободного
841 места на файловой системе.
844 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
845 конфигурационного файла заменены на структуру
846 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
849 Добавлена @option{freq.maxsize} опция конфигурационного файл,
850 запрещающая ответ на файловый запрос больше заданного размера.
853 Возможность оповещения об успешно выполненных командах (exec) через
854 @option{notify.exec} опцию конфигурационного файла.
859 @subsection Релиз 5.0.0
863 @strong{Несовместимое} изменение формата конфигурационного файла:
864 YAML заменён на Hjson, из-за его гораздо большей простоты, без
865 заметной потери функционала и удобства.
868 @strong{Несовместимое} изменение формата простых пакетов. Работа со
869 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
870 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
871 смотря на то, что версия библиотеки ещё не проверена временем.
874 Возможность соединяться с удалёнными нодами не только по TCP, но и через
875 pipe вызов сторонней команды.
878 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
879 комментариев. Можно использовать @option{-nocomments} опцию для старого
883 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
884 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
887 Возможность переопределить umask процесса через опцию конфигурационного
891 По умолчанию файлы и директории создаются с 666/777 правами доступа,
892 позволяя управлять ими @command{umask}-ом.
895 Обновлены зависимости.
898 Полное использование go модулей для управления зависимостями
899 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
902 Отмена автоматического использования более новых версий GNU GPL
903 (лицензия проекта GNU GPLv3-только).
908 @subsection Релиз 4.1
910 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
914 @subsection Релиз 4.0
918 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
919 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
920 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
921 отсылать дешифрованные данные внешней команде. Старые версии не
925 Проверка доступного места перед копированием во время работы
926 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
929 @command{nncp-call} имеет возможность только показывать список пакетов
930 на удалённой машине, без их передачи.
933 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
936 Восстановлена работоспособность @option{xxrate} настройки в
937 @option{calls} секции конфигурационного файла.
940 Зависимые библиотеки обновлены.
943 Небольшие исправления ошибок.
946 Начало использования @code{go.mod} подсистемы.
951 @subsection Релиз 3.4
953 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
957 @subsection Релиз 3.3
961 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
962 проверяют существование @file{.seen} файла и расценивают его как то, что
963 файл уже был скачан. Возможно передача данных была осуществлена
964 сторонним способом и удалённая сторона должна быть оповещена об этом.
967 Если более высокоприоритетный пакет попадает в спул, то
968 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
969 низкоприоритетные передачи.
972 К средствам связанным с online-соединениями (@command{nncp-daemon},
973 @command{nncp-call}, @command{nncp-caller}) добавлен простой
974 ограничитель скорости.
977 Возможность задания приоритета символьными обозначениями:
978 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
981 Изменены значения приоритетов по-умолчанию:
982 для @command{nncp-exec} с 64 на 96,
983 для @command{nncp-freq} с 64 на 160,
984 для @command{nncp-file} с 196 на 224.
989 @subsection Релиз 3.2
992 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
993 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
994 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
995 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
996 Явное добавление @file{NNCP/} директории в архив восстанавливает
997 работоспособность с корректными tar архивами.
1001 @subsection Релиз 3.1
1004 Возможность отключать пересылку через промежуточные ноды используя
1005 @verb{|-via -|} опцию командной строки.
1009 @subsection Релиз 3.0
1013 @strong{Несовместимое} изменение формата простых пакетов. Работа со
1014 старыми версиями не поддерживается.
1017 Добавлена возможность удалённого исполнения команд, путём
1018 конфигурирования @option{exec} опции конфигурационного файла и
1019 использования команды @command{nncp-exec}:
1022 Команда @command{nncp-mail} заменена более гибкой и широкой
1023 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
1024 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1026 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1027 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1028 @code{exec: sendmail: [@dots{}]}.
1032 Возможность переопределить @option{via} опцию конфигурации для целевого
1033 узла через @option{-via} опцию командной строки для следующих команд:
1034 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1037 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1038 в виде одного файла.
1041 Exec команды вызываются с дополнительными переменными окружения
1042 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1045 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1046 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1047 аргументом @option{-replynice}.
1050 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1051 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1052 @option{-noexec}, @option{-notrns}.
1055 По-умолчанию @command{nncp-file} команда для
1056 @option{-minsize}/@option{-chunked} опций использует
1057 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1058 Это можно отключить указав нулевое значение.
1063 @subsection Релиз 2.0
1067 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1068 Работа со старыми версиями не поддерживается.
1071 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1072 Одним криптографическим примитивом меньше.
1075 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1076 криптографическим примитивом меньше (предполагая, что BLAKE2X
1077 практически идентичен BLAKE2).
1082 @subsection Релиз 1.0
1086 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1087 со старыми версиями не поддерживается.
1090 @command{nncp-bundle} команда может создавать потоки зашифрованных
1091 пакетов или потреблять их. Это полезно когда речь идёт о
1092 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1093 без создания промежуточного подготовленного ISO образа или работа с
1094 ленточными накопителями).
1097 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1098 предотвращая приём дублированных пакетов.
1101 В команде @command{nncp-call} разрешается иметь только одного
1102 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1103 входящих пакетов могут создать много горутин.
1106 Возможность переопределить путь до spool директории и файла журнала
1107 через аргумент командной строки или переменную окружения.
1110 @command{nncp-rm} команда может удалять все исходящие/входящие,
1111 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1116 @subsection Релиз 0.12
1118 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1122 @subsection Релиз 0.11
1124 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1128 @subsection Релиз 0.10
1131 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1132 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1136 @subsection Релиз 0.9
1139 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1140 команды. Они игнорировались.
1144 @subsection Релиз 0.8
1147 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1148 @option{-minsize} для передачи без разбиения на части была в байтах, а
1153 @subsection Релиз 0.7
1157 Возможность предоставлять данные для @command{nncp-file} через
1158 стандартный ввод, используя временный зашифрованный файл для этого.
1161 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1162 @command{nncp-reass} командой и @option{freqchunked} опцией
1163 конфигурационного файла. Полезно для передачи больших файлов через
1164 маленькие устройства хранения.
1167 @option{freqminsize} опция конфигурационного файла, аналогичная
1171 Опция @option{-force} команды @command{nncp-xfer} переименована в
1172 @option{-mkdir} для ясности.
1175 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1178 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1179 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1180 имели общий префикс и были сгруппированы для удобства.
1183 Появилась команда @command{nncp-cfgenc}, позволяющая
1184 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1185 без использования OpenPGP или других подобных инструментов.
1188 Обновлены зависимые криптографические библиотеки.
1193 @subsection Релиз 0.6
1195 @item Появилась небольшая команда @command{nncp-rm}.
1196 @item Обновлены зависимые криптографические библиотеки.
1200 @subsection Релиз 0.5
1203 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1204 @command{nncp-file} и @command{nncp-freq} командах.
1208 @subsection Релиз 0.4
1212 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1213 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1214 ошибкой (данные не терялись).
1217 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1218 это короче и удобнее для использования.
1221 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1222 позволяющая создать минималистичный урезанный конфигурационный файл без
1223 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1228 @subsection Релиз 0.3
1230 @item Исправлена совместимость с Go 1.6.
1234 @subsection Релиз 0.2
1238 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1239 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1242 @option{-minsize} опция даёт возможность автоматически дополнять
1243 исходящие пакеты до указанного минимального размера.
1246 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1247 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1248 Удалённая сторона сразу же оповещается об этом.
1251 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1252 неактивность в online соединении, когда оно должно быть отключено. Она
1253 может быть использована для сохранения соединения на долгое время.
1256 @option{-maxonlinetime} опция даёт возможность указания максимального
1257 возможного времени жизни соединения.
1260 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1264 @command{nncp-pkt} команда может разжимать данные.