5 @subsection Релиз 8.9.0
9 @command{nncp-toss} команда имеет @option{-gen-ack} опцию.
10 @command{nncp-daemon}, @command{nncp-caller}, @command{nncp-call}
11 команды имеют @option{-autotoss-gen-ack} опцию. Они автоматически
12 генерируют ACK пакеты и сохраняют соответствующие @file{spoo/tx/ack/}
13 ссылки на них, чтобы их можно было удалить после передачи.
16 @code{autotoss-gen-ack} появился в конфигурации call.
17 @code{ack} секция появилась в конфигурации ноды.
20 @command{nncp-rm} команда имеет @option{-ack} опцию для удаления пакетов
21 на которые ссылаются @file{spool/tx/ack/} файлы созданные во время toss.
24 @command{redo} система сборки более не требуется при установке, так как
25 по сути нет зависимостей, только компиляция Go кода.
28 Обновлены некоторые зависимости.
33 @subsection Релиз 8.8.3
37 Исправлена @command{nncp-reass} команда, которая некорректно сообщала о
38 плохом размере последнего куска файла если он был кратен размеру chunk-а.
41 Обновлены зависимости. Теперь требуется Go 1.20+.
46 @subsection Релиз 8.8.2
50 Обновлена библиотека для работы с Yggdrasil, а также несколько других.
55 @subsection Релиз 8.8.1
59 Исправлено падение @command{nncp-daemon} при неопознанном подключении и
60 включённом @option{-autotoss}.
63 Обновлены зависимые библиотеки.
68 @subsection Релиз 8.8.0
72 Исправлена невозможность сборки под Go 1.19.
75 Минимальная требуемая версия Go 1.17.
78 Обновлены зависимые библиотеки.
83 @subsection Релиз 8.7.2
87 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
90 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
91 каждого удалённого пакета.
96 @subsection Релиз 8.7.1
100 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
101 файлов для входящих пакетов.
106 @subsection Релиз 8.7.0
110 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
114 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
117 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
118 использовании @option{-pkt} опции.
121 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
122 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
123 команды, чтобы удалить исходящие ACK пакеты.
128 @subsection Релиз 8.6.0
132 @command{nncp-xfer} проверяет сходится ли контрольная сумма
133 скопированного локально пакета и исходного.
136 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
137 отправку остаются незаконченные задания.
140 Появилась @command{nncp-ack} команда, которая отправляет явное
141 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
142 упомянутый пакет из исходящего spool-а.
145 Появилась возможность отключения @code{fsync} операции
146 @env{$NNCPNOSYNC=1} переменной окружения.
149 Добавлены разнообразные индексы в документации, что должно помочь при
155 @subsection Релиз 8.5.0
159 Исправлена работоспособность @command{nncp-bundle}.
162 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
166 Возможность переопределять внутренний timeout по умолчанию для протокола
167 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
168 полезно для каналов с очень большими задержками.
171 NNCP собирается на OpenBSD.
176 @subsection Релиз 8.4.0
180 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
181 @code{mcd-send} опции конфигурации) теперь являются регулярными
182 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
183 их теперь и прописывает @code{.*} имя интерфейса.
186 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
187 позволяющий дожидаться multicast сообщения об адресе ноды.
190 @command{nncp-file} команда пропускает всё что не является регулярным
191 файлом или директорией во время создания pax-архива.
196 @subsection Релиз 8.3.0
200 Исправлена возможность сборки на 32-бит системах.
205 @subsection Релиз 8.2.0
209 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
210 вместо голого μTP транспортного протокола, делая возможным работу в
211 качестве обычного TCP сервера внутри overlay сети.
214 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
215 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
218 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
221 @command{nncp-daemon} может слушать одновременно и на TCP и на
222 Yggdrasil-управляемом сокетах.
225 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
226 опционально -- вы можете быть доступны и через связь с peer-ами.
231 @subsection Релиз 8.1.0
235 @command{nncp-cfgdir} команда не требует обязательного наличия
236 @code{self} секции конфигурационного файла.
239 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
240 используя online протокол поверх неё.
245 @subsection Релиз 8.0.2
249 Исправлена возможность отправки мультивещательных пакетов.
254 @subsection Релиз 8.0.1
258 Исправлено некорректное вычисление @code{freq.chunked} значения, при
259 отсутствии которого всё равно форсированно включалась chunked передача.
262 Исправлено некорректное вычисление значения полного размера файла в
268 @subsection Релиз 8.0.0
272 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
273 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
274 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
275 знания размеров заранее, без создания временного файла или буферизации в
279 Производится корректная проверка дополнения зашифрованного пакета. Это
280 не критичная проблема, но прежде ни размер, ни значение дополнения не
281 были аутентифицированы, позволяя циклично откусывать по байту с конца и
282 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
283 такого зашифрованного пакета.
286 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
287 совместимого с потоковой работой формата зашифрованных пакетов.
290 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
291 @option{-maxsize}, ограничивающая максимальный результирующий размер
292 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
293 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
298 @subsection Релиз 7.7.0
302 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
303 изменениях в spool директориях, для сокращения накладных расходов на их
307 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
308 поддиректориях теперь, дабы ускорить сканирование spool областей.
309 Необходима миграция текущих файлов:
312 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
314 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
317 find . -type f -name "*.seen" | while read fn ; do
318 mv $fn seen/$@{fn%.seen@}
322 $ find $NNCPSPOOL -type d -name area | while read area ; do
323 find $area -type f -name "*.seen" | while read fn ; do
332 @subsection Релиз 7.6.0
336 Журналирование может производиться в назначенный открытый файловый
337 дескриптор (@env{$NNCPLOG=FD:5} например).
338 Что дружелюбно к использованию под @command{daemontools}.
341 Добавлены дополнительные проверки наличия публичных ключей в
342 конфигурационном файле, предотвращающие падения некоторых команд.
347 @subsection Релиз 7.5.1
351 NNCP собирается на NetBSD.
356 @subsection Релиз 7.5.0
360 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
361 журнале будет присутствовать адрес удалённой системы (при запуске под
362 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
366 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
367 @option{-ucspi} опцию.
370 Не выходить если не получается слушать на каком-либо MCD сетевом
371 интерфейсе -- только предупреждать об ошибке.
376 @subsection Релиз 7.4.0
380 Исправлена работоспособность MCD при одновременном использовании
381 @command{nncp-daemon} и @command{nncp-caller}.
386 @subsection Релиз 7.3.2
390 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
395 @subsection Релиз 7.3.1
399 Исправлена проблема с возможно остающимся открытым файловым
400 дескриптором в online командах.
403 Существенно снижено потребление памяти MTH хэширования.
408 @subsection Релиз 7.3.0
412 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
415 Возможность использовать конфигурацию в виде директории с набором
416 файлов. Появилась команда @command{nncp-cfgdir}.
421 @subsection Релиз 7.2.1
425 Небольшие оптимизации в online командах.
430 @subsection Релиз 7.2.0
434 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
437 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
438 использовать его, а не игнорировать.
441 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
442 видящего свой собственный пакет.
445 Намного меньшее потребление памяти во время MTH хэширования когда
446 смещение равно нулю: когда пакет не является докачиванием, а например
447 проверяется @command{nncp-check} командой.
452 @subsection Релиз 7.1.1
456 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
461 @subsection Релиз 7.1.0
465 Появилась возможность мультивещательной (multicast) рассылки пакетов.
466 Реализовано всего лишь дополнительным типом простых пакетов и изменением
467 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
470 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
471 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
474 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
477 Исправлено некорректное генерирование @file{.hdr} при использовании
481 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
485 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
486 проверку в бесконечный цикл.
489 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
492 @command{nncp-pkt} может парсить @file{.hdr} файлы.
497 @subsection Релиз 7.0.0
501 Минимальная требуемая версия Go 1.13.
504 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
505 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
506 изменение формата шифрованных файлов (всего что находится в spool
507 области) и формата @file{.meta} файла при chunked передаче.
509 Текущая реализация далека от оптимальной: в ней нет распараллеливания
510 вычислений и имеет повышенное потребление памяти: около 512 KiB на
511 каждый 1 GiB данных файла. Будущая оптимизация производительности и
512 потребления памяти не должна привести к изменению формата пакетов. Но
513 это всё равно в несколько раз быстрее BLAKE2b.
516 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
517 чтения с диска только предшествующей части, а не полностью всего файла,
521 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
524 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
525 уменьшая количество примитивов. А также заголовок шифрованного файла
526 теперь является ассоциированными данными при шифровании.
529 MultiCast Discovery использует
530 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
533 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
536 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
539 Обновлены зависимые библиотеки.
544 @subsection Релиз 6.6.0
548 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
549 ожидают завершения всех процессов фоновой проверки контрольных сумм,
550 после того как соединение закрыто.
553 Добавлена возможность определения адреса через multicast оповещение в
554 локальной сети, так называемый MCD (MultiCast Discovery).
559 @subsection Релиз 6.5.0
563 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
566 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
569 Исправлена гонка при закрытии файловых дескрипторов во время завершения
570 работы online протокола, которая могла привести к ошибке записи
571 принятого фрагмента пакета.
574 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
575 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
580 @subsection Релиз 6.4.0
584 Исправлена возможная гонка в online протоколе, приводящая к падению
590 @subsection Релиз 6.3.0
594 Исправлено возможное падение программы во время показа прогресса online
600 @subsection Релиз 6.2.1
604 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
609 @subsection Релиз 6.2.0
613 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
616 Очередной рефакторинг и упрощение системы журналирования.
617 Не должно быть видимых изменений для конечного пользователя.
622 @subsection Релиз 6.1.0
626 Оптимизация: большинство команд теперь не держат открытыми файловые
627 дескрипторы. Прежде вы легко могли выйти за пределы максимально
628 допустимого количества открытых файлов, если у вас было много пакетов в
632 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
633 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
636 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
637 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
638 online демоны не выполнят проверку целостности.
641 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
642 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
645 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
646 файлах, рядом с самими пакетами. Это может существенно повысить скорость
647 получения списка пакетов на файловых системах с большим размером блока.
652 @subsection Релиз 6.0.0
656 Журнал использует человеко-читаемый и легко обрабатываемый машиной
657 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
658 записей, вместо структурированных строчек RFC 3339. Старый формат
659 журналов не поддерживается @command{nncp-log}.
662 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
663 @command{nncp-daemon}.
666 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
667 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
668 выражением содержащим секунды, это можно использовать как возможность
669 вызова только при появлении исходящих пакетов.
672 @command{nncp-cronexpr} команда позволяет проверить корректность и
673 ожидаемый результат от указанного cron выражения.
678 @subsection Релиз 5.6.0
682 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
683 во время него ежесекундно.
686 В @option{calls} секции конфигурации появились опции
687 @option{autotoss}, @option{autotoss-doseen},
688 @option{autotoss-nofile}, @option{autotoss-nofreq},
689 @option{autotoss-noexec}, @option{autotoss-notrns}.
690 Вы можете настраивать опции автоматического tosser для каждого вызова.
693 Использовать vendoring вместо переопределения @env{$GOPATH} во время
694 установки tarball, так как текущая минимальная версия Go это 1.12,
695 поддерживающая модули.
700 @subsection Релиз 5.5.1
704 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
705 в @file{config} во время установки.
710 @subsection Релиз 5.5.0
714 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
715 @command{nncp-bundle}, @command{nncp-stat} командах.
718 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
721 У команды @command{nncp-exec} появились @option{-use-tmp} и
722 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
726 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
727 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
730 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
735 @subsection Релиз 5.4.1
739 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
744 @subsection Релиз 5.4.0
748 Обновлены зависимые библиотеки.
751 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
752 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
753 реализация @command{redo} включена в tarball.
758 @subsection Релиз 5.3.3
762 Больше различных проверок в коде на ошибки.
765 Обновлены зависимые библиотеки.
770 @subsection Релиз 5.3.2
774 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
775 котором соединение могло не учитывать факты прихода пакетов и обрывать
781 @subsection Релиз 5.3.1
785 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
786 использующими внешние команды (@verb{#"|somecmd"#}).
789 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
790 каждому пакету в spool.
795 @subsection Релиз 5.3.0
799 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
802 Исправлено не происходящее дополнение (padding) handshake сообщений.
805 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
808 SP протокол порождает меньше вызовов записей (соответственно, и TCP
812 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
813 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
816 Раз в минуту, если нет более никакого другого трафика, посылаются PING
817 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
818 более не работоспособно.
821 @command{nncp-toss} использует lock-file для предотвращения
822 одновременной обработки зашифрованных пакетов.
827 @subsection Релиз 5.2.1
831 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
836 @subsection Релиз 5.2.0
840 Большинство команд по умолчанию показывают однострочный прогресс
841 выполнения операции. Появились @option{-progress}, @option{-noprogress}
842 опции командной строки, @option{noprogress} опция конфигурационного
846 Исправлен некорректный код возврата @command{nncp-check} команды,
847 который возвращал ошибку когда всё хорошо.
850 Проверка свободного места для пакетов, во время выполнения
851 @command{nncp-bundle -rx}.
856 @subsection Релиз 5.1.2
860 Исправлена @strong{критичная} уязвимость: аутентификация online нод
861 могла приводить к некорректной идентификации удалённой стороны, позволяя
862 скачивать чужие зашифрованные пакеты.
865 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
866 публичный ключ Noise были поменяны местами, что приводило к
867 невозможности online аутентификации нод.
870 Явная синхронизация (@code{fsync}) директорий для гарантированного
871 переименования файлов.
876 @subsection Релиз 5.1.1
880 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
885 @subsection Релиз 5.1.0
889 @command{nncp-file} может отправлять директории, автоматически на лету
893 Во время создания исходящих сообщений проверяется наличие свободного
894 места на файловой системе.
897 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
898 конфигурационного файла заменены на структуру
899 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
902 Добавлена @option{freq.maxsize} опция конфигурационного файл,
903 запрещающая ответ на файловый запрос больше заданного размера.
906 Возможность оповещения об успешно выполненных командах (exec) через
907 @option{notify.exec} опцию конфигурационного файла.
912 @subsection Релиз 5.0.0
916 @strong{Несовместимое} изменение формата конфигурационного файла:
917 YAML заменён на Hjson, из-за его гораздо большей простоты, без
918 заметной потери функционала и удобства.
921 @strong{Несовместимое} изменение формата простых пакетов. Работа со
922 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
923 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
924 смотря на то, что версия библиотеки ещё не проверена временем.
927 Возможность соединяться с удалёнными нодами не только по TCP, но и через
928 pipe вызов сторонней команды.
931 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
932 комментариев. Можно использовать @option{-nocomments} опцию для старого
936 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
937 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
940 Возможность переопределить umask процесса через опцию конфигурационного
944 По умолчанию файлы и директории создаются с 666/777 правами доступа,
945 позволяя управлять ими @command{umask}-ом.
948 Обновлены зависимости.
951 Полное использование go модулей для управления зависимостями
952 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
955 Отмена автоматического использования более новых версий GNU GPL
956 (лицензия проекта GNU GPLv3-только).
961 @subsection Релиз 4.1
963 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
967 @subsection Релиз 4.0
971 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
972 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
973 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
974 отсылать дешифрованные данные внешней команде. Старые версии не
978 Проверка доступного места перед копированием во время работы
979 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
982 @command{nncp-call} имеет возможность только показывать список пакетов
983 на удалённой машине, без их передачи.
986 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
989 Восстановлена работоспособность @option{xxrate} настройки в
990 @option{calls} секции конфигурационного файла.
993 Зависимые библиотеки обновлены.
996 Небольшие исправления ошибок.
999 Начало использования @code{go.mod} подсистемы.
1004 @subsection Релиз 3.4
1006 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
1010 @subsection Релиз 3.3
1014 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
1015 проверяют существование @file{.seen} файла и расценивают его как то, что
1016 файл уже был скачан. Возможно передача данных была осуществлена
1017 сторонним способом и удалённая сторона должна быть оповещена об этом.
1020 Если более высокоприоритетный пакет попадает в спул, то
1021 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
1022 низкоприоритетные передачи.
1025 К средствам связанным с online-соединениями (@command{nncp-daemon},
1026 @command{nncp-call}, @command{nncp-caller}) добавлен простой
1027 ограничитель скорости.
1030 Возможность задания приоритета символьными обозначениями:
1031 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
1034 Изменены значения приоритетов по-умолчанию:
1035 для @command{nncp-exec} с 64 на 96,
1036 для @command{nncp-freq} с 64 на 160,
1037 для @command{nncp-file} с 196 на 224.
1042 @subsection Релиз 3.2
1045 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
1046 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
1047 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
1048 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
1049 Явное добавление @file{NNCP/} директории в архив восстанавливает
1050 работоспособность с корректными tar архивами.
1054 @subsection Релиз 3.1
1057 Возможность отключать пересылку через промежуточные ноды используя
1058 @verb{|-via -|} опцию командной строки.
1062 @subsection Релиз 3.0
1066 @strong{Несовместимое} изменение формата простых пакетов. Работа со
1067 старыми версиями не поддерживается.
1070 Добавлена возможность удалённого исполнения команд, путём
1071 конфигурирования @option{exec} опции конфигурационного файла и
1072 использования команды @command{nncp-exec}:
1075 Команда @command{nncp-mail} заменена более гибкой и широкой
1076 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
1077 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1079 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1080 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1081 @code{exec: sendmail: [@dots{}]}.
1085 Возможность переопределить @option{via} опцию конфигурации для целевого
1086 узла через @option{-via} опцию командной строки для следующих команд:
1087 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1090 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1091 в виде одного файла.
1094 Exec команды вызываются с дополнительными переменными окружения
1095 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1098 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1099 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1100 аргументом @option{-replynice}.
1103 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1104 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1105 @option{-noexec}, @option{-notrns}.
1108 По-умолчанию @command{nncp-file} команда для
1109 @option{-minsize}/@option{-chunked} опций использует
1110 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1111 Это можно отключить указав нулевое значение.
1116 @subsection Релиз 2.0
1120 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1121 Работа со старыми версиями не поддерживается.
1124 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1125 Одним криптографическим примитивом меньше.
1128 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1129 криптографическим примитивом меньше (предполагая, что BLAKE2X
1130 практически идентичен BLAKE2).
1135 @subsection Релиз 1.0
1139 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1140 со старыми версиями не поддерживается.
1143 @command{nncp-bundle} команда может создавать потоки зашифрованных
1144 пакетов или потреблять их. Это полезно когда речь идёт о
1145 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1146 без создания промежуточного подготовленного ISO образа или работа с
1147 ленточными накопителями).
1150 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1151 предотвращая приём дублированных пакетов.
1154 В команде @command{nncp-call} разрешается иметь только одного
1155 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1156 входящих пакетов могут создать много горутин.
1159 Возможность переопределить путь до spool директории и файла журнала
1160 через аргумент командной строки или переменную окружения.
1163 @command{nncp-rm} команда может удалять все исходящие/входящие,
1164 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1169 @subsection Релиз 0.12
1171 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1175 @subsection Релиз 0.11
1177 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1181 @subsection Релиз 0.10
1184 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1185 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1189 @subsection Релиз 0.9
1192 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1193 команды. Они игнорировались.
1197 @subsection Релиз 0.8
1200 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1201 @option{-minsize} для передачи без разбиения на части была в байтах, а
1206 @subsection Релиз 0.7
1210 Возможность предоставлять данные для @command{nncp-file} через
1211 стандартный ввод, используя временный зашифрованный файл для этого.
1214 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1215 @command{nncp-reass} командой и @option{freqchunked} опцией
1216 конфигурационного файла. Полезно для передачи больших файлов через
1217 маленькие устройства хранения.
1220 @option{freqminsize} опция конфигурационного файла, аналогичная
1224 Опция @option{-force} команды @command{nncp-xfer} переименована в
1225 @option{-mkdir} для ясности.
1228 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1231 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1232 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1233 имели общий префикс и были сгруппированы для удобства.
1236 Появилась команда @command{nncp-cfgenc}, позволяющая
1237 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1238 без использования OpenPGP или других подобных инструментов.
1241 Обновлены зависимые криптографические библиотеки.
1246 @subsection Релиз 0.6
1248 @item Появилась небольшая команда @command{nncp-rm}.
1249 @item Обновлены зависимые криптографические библиотеки.
1253 @subsection Релиз 0.5
1256 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1257 @command{nncp-file} и @command{nncp-freq} командах.
1261 @subsection Релиз 0.4
1265 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1266 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1267 ошибкой (данные не терялись).
1270 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1271 это короче и удобнее для использования.
1274 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1275 позволяющая создать минималистичный урезанный конфигурационный файл без
1276 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1281 @subsection Релиз 0.3
1283 @item Исправлена совместимость с Go 1.6.
1287 @subsection Релиз 0.2
1291 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1292 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1295 @option{-minsize} опция даёт возможность автоматически дополнять
1296 исходящие пакеты до указанного минимального размера.
1299 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1300 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1301 Удалённая сторона сразу же оповещается об этом.
1304 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1305 неактивность в online соединении, когда оно должно быть отключено. Она
1306 может быть использована для сохранения соединения на долгое время.
1309 @option{-maxonlinetime} опция даёт возможность указания максимального
1310 возможного времени жизни соединения.
1313 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1317 @command{nncp-pkt} команда может разжимать данные.