5 @subsection Релиз 8.5.0
9 Исправлена работоспособность @command{nncp-bundle}.
12 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
16 Возможность переопределять внутренний timeout по умолчанию для протокола
17 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
18 полезно для каналов с очень большими задержками.
23 @subsection Релиз 8.4.0
27 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
28 @code{mcd-send} опции конфигурации) теперь являются регулярными
29 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
30 их теперь и прописывает @code{.*} имя интерфейса.
33 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
34 позволяющий дожидаться multicast сообщения об адресе ноды.
37 @command{nncp-file} команда пропускает всё что не является регулярным
38 файлом или директорией во время создания pax-архива.
43 @subsection Релиз 8.3.0
47 Исправлена возможность сборки на 32-бит системах.
52 @subsection Релиз 8.2.0
56 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
57 вместо голого μTP транспортного протокола, делая возможным работу в
58 качестве обычного TCP сервера внутри overlay сети.
61 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub...}
62 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
65 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
68 @command{nncp-daemon} может слушать одновременно и на TCP и на
69 Yggdrasil-управляемом сокетах.
72 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
73 опционально -- вы можете быть доступны и через связь с peer-ами.
78 @subsection Релиз 8.1.0
82 @command{nncp-cfgdir} команда не требует обязательного наличия
83 @code{self} секции конфигурационного файла.
86 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
87 используя online протокол поверх неё.
92 @subsection Релиз 8.0.2
96 Исправлена возможность отправки мультивещательных пакетов.
101 @subsection Релиз 8.0.1
105 Исправлено некорректное вычисление @code{freq.chunked} значения, при
106 отсутствии которого всё равно форсированно включалась chunked передача.
109 Исправлено некорректное вычисление значения полного размера файла в
115 @subsection Релиз 8.0.0
119 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
120 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
121 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
122 знания размеров заранее, без создания временного файла или буферизации в
126 Производится корректная проверка дополнения зашифрованного пакета. Это
127 не критичная проблема, но прежде ни размер, ни значение дополнения не
128 были аутентифицированы, позволяя циклично откусывать по байту с конца и
129 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
130 такого зашифрованного пакета.
133 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
134 совместимого с потоковой работой формата зашифрованных пакетов.
137 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
138 @option{-maxsize}, ограничивающая максимальный результирующий размер
139 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
140 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
145 @subsection Релиз 7.7.0
149 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
150 изменениях в spool директориях, для сокращения накладных расходов на их
154 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
155 поддиректориях теперь, дабы ускорить сканирование spool областей.
156 Необходима миграция текущих файлов:
159 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
161 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
164 find . -type f -name "*.seen" | while read fn ; do
165 mv $fn seen/$@{fn%.seen@}
169 $ find $NNCPSPOOL -type d -name area | while read area ; do
170 find $area -type f -name "*.seen" | while read fn ; do
179 @subsection Релиз 7.6.0
183 Журналирование может производиться в назначенный открытый файловый
184 дескриптор (@env{$NNCPLOG=FD:5} например).
185 Что дружелюбно к использованию под @command{daemontools}.
188 Добавлены дополнительные проверки наличия публичных ключей в
189 конфигурационном файле, предотвращающие падения некоторых команд.
194 @subsection Релиз 7.5.1
198 NNCP собирается на NetBSD.
203 @subsection Релиз 7.5.0
207 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
208 журнале будет присутствовать адрес удалённой системы (при запуске под
209 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
213 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
214 @option{-ucspi} опцию.
217 Не выходить если не получается слушать на каком-либо MCD сетевом
218 интерфейсе -- только предупреждать об ошибке.
223 @subsection Релиз 7.4.0
227 Исправлена работоспособность MCD при одновременном использовании
228 @command{nncp-daemon} и @command{nncp-caller}.
233 @subsection Релиз 7.3.2
237 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
242 @subsection Релиз 7.3.1
246 Исправлена проблема с возможно остающимся открытым файловым
247 дескриптором в online командах.
250 Существенно снижено потребление памяти MTH хэширования.
255 @subsection Релиз 7.3.0
259 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
262 Возможность использовать конфигурацию в виде директории с набором
263 файлов. Появилась команда @command{nncp-cfgdir}.
268 @subsection Релиз 7.2.1
272 Небольшие оптимизации в online командах.
277 @subsection Релиз 7.2.0
281 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
284 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
285 использовать его, а не игнорировать.
288 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
289 видящего свой собственный пакет.
292 Намного меньшее потребление памяти во время MTH хэширования когда
293 смещение равно нулю: когда пакет не является докачиванием, а например
294 проверяется @command{nncp-check} командой.
299 @subsection Релиз 7.1.1
303 Исправлено падение при fsync директорий после создания @file{.seen} файлов.
308 @subsection Релиз 7.1.0
312 Появилась возможность мультивещательной (multicast) рассылки пакетов.
313 Реализовано всего лишь дополнительным типом простых пакетов и изменением
314 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
317 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
318 команд использующих временный файл (stdin и @option{-use-tmp}).
321 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
324 Исправлено некорректное генерирование @file{.hdr} при использовании
328 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
332 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
333 проверку в бесконечный цикл.
336 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
339 @command{nncp-pkt} может парсить @file{.hdr} файлы.
344 @subsection Релиз 7.0.0
348 Минимальная требуемая версия Go 1.13.
351 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
352 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
353 изменение формата шифрованных файлов (всего что находится в spool
354 области) и формата @file{.meta} файла при chunked передаче.
356 Текущая реализация далека от оптимальной: в ней нет распараллеливания
357 вычислений и имеет повышенное потребление памяти: около 512 KiB на
358 каждый 1 GiB данных файла. Будущая оптимизация производительности и
359 потребления памяти не должна привести к изменению формата пакетов. Но
360 это всё равно в несколько раз быстрее BLAKE2b.
363 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
364 чтения с диска только предшествующей части, а не полностью всего файла,
368 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
371 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
372 уменьшая количество примитивов. А также заголовок шифрованного файла
373 теперь является ассоциированными данными при шифровании.
376 MultiCast Discovery использует
377 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
380 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
383 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
386 Обновлены зависимые библиотеки.
391 @subsection Релиз 6.6.0
395 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
396 ожидают завершения всех процессов фоновой проверки контрольных сумм,
397 после того как соединение закрыто.
400 Добавлена возможность определения адреса через multicast оповещение в
401 локальной сети, так называемый MCD (MultiCast Discovery).
406 @subsection Релиз 6.5.0
410 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
413 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
416 Исправлена гонка при закрытии файловых дескрипторов во время завершения
417 работы online протокола, которая могла привести к ошибке записи
418 принятого фрагмента пакета.
421 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
422 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
427 @subsection Релиз 6.4.0
431 Исправлена возможная гонка в online протоколе, приводящая к падению
437 @subsection Релиз 6.3.0
441 Исправлено возможное падение программы во время показа прогресса online
447 @subsection Релиз 6.2.1
451 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
456 @subsection Релиз 6.2.0
460 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
463 Очередной рефакторинг и упрощение системы журналирования.
464 Не должно быть видимых изменений для конечного пользователя.
469 @subsection Релиз 6.1.0
473 Оптимизация: большинство команд теперь не держат открытыми файловые
474 дескрипторы. Прежде вы легко могли выйти за пределы максимально
475 допустимого количества открытых файлов, если у вас было много пакетов в
479 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
480 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
483 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
484 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
485 online демоны не выполнят проверку целостности.
488 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
489 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
492 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
493 файлах, рядом с самими пакетами. Это может существенно повысить скорость
494 получения списка пакетов на файловых системах с большим размером блока.
499 @subsection Релиз 6.0.0
503 Журнал использует человеко-читаемый и легко обрабатываемый машиной
504 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
505 записей, вместо структурированных строчек RFC 3339. Старый формат
506 журналов не поддерживается @command{nncp-log}.
509 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
510 @command{nncp-daemon}.
513 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
514 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
515 выражением содержащим секунды, это можно использовать как возможность
516 вызова только при появлении исходящих пакетов.
519 @command{nncp-cronexpr} команда позволяет проверить корректность и
520 ожидаемый результат от указанного cron выражения.
525 @subsection Релиз 5.6.0
529 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
530 во время него ежесекундно.
533 В @option{calls} секции конфигурации появились опции
534 @option{autotoss}, @option{autotoss-doseen},
535 @option{autotoss-nofile}, @option{autotoss-nofreq},
536 @option{autotoss-noexec}, @option{autotoss-notrns}.
537 Вы можете настраивать опции автоматического tosser для каждого вызова.
540 Использовать vendoring вместо переопределения @env{$GOPATH} во время
541 установки tarball, так как текущая минимальная версия Go это 1.12,
542 поддерживающая модули.
547 @subsection Релиз 5.5.1
551 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
552 в @file{config} во время установки.
557 @subsection Релиз 5.5.0
561 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
562 @command{nncp-bundle}, @command{nncp-stat} командах.
565 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
568 У команды @command{nncp-exec} появились @option{-use-tmp} и
569 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
573 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
574 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
577 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
582 @subsection Релиз 5.4.1
586 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
591 @subsection Релиз 5.4.0
595 Обновлены зависимые библиотеки.
598 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
599 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
600 реализация @command{redo} включена в tarball.
605 @subsection Релиз 5.3.3
609 Больше различных проверок в коде на ошибки.
612 Обновлены зависимые библиотеки.
617 @subsection Релиз 5.3.2
621 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
622 котором соединение могло не учитывать факты прихода пакетов и обрывать
628 @subsection Релиз 5.3.1
632 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
633 использующими внешние команды (@verb{#"|somecmd"#}).
636 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
637 каждому пакету в spool.
642 @subsection Релиз 5.3.0
646 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
649 Исправлено не происходящее дополнение (padding) handshake сообщений.
652 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
655 SP протокол порождает меньше вызовов записей (соответственно, и TCP
659 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
660 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
663 Раз в минуту, если нет более никакого другого трафика, посылаются PING
664 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
665 более не работоспособно.
668 @command{nncp-toss} использует lock-file для предотвращения
669 одновременной обработки зашифрованных пакетов.
674 @subsection Релиз 5.2.1
678 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
683 @subsection Релиз 5.2.0
687 Большинство команд по умолчанию показывают однострочный прогресс
688 выполнения операции. Появились @option{-progress}, @option{-noprogress}
689 опции командной строки, @option{noprogress} опция конфигурационного
693 Исправлен некорректный код возврата @command{nncp-check} команды,
694 который возвращал ошибку когда всё хорошо.
697 Проверка свободного места для пакетов, во время выполнения
698 @command{nncp-bundle -rx}.
703 @subsection Релиз 5.1.2
707 Исправлена @strong{критичная} уязвимость: аутентификация online нод
708 могла приводить к некорректной идентификации удалённой стороны, позволяя
709 скачивать чужие зашифрованные пакеты.
712 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
713 публичный ключ Noise были поменяны местами, что приводило к
714 невозможности online аутентификации нод.
717 Явная синхронизация (fsync) директорий для гарантированного
718 переименования файлов.
723 @subsection Релиз 5.1.1
727 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
732 @subsection Релиз 5.1.0
736 @command{nncp-file} может отправлять директории, автоматически на лету
740 Во время создания исходящих сообщений проверяется наличие свободного
741 места на файловой системе.
744 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
745 конфигурационного файла заменены на структуру
746 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
749 Добавлена @option{freq.maxsize} опция конфигурационного файл,
750 запрещающая ответ на файловый запрос больше заданного размера.
753 Возможность оповещения об успешно выполненных командах (exec) через
754 @option{notify.exec} опцию конфигурационного файла.
759 @subsection Релиз 5.0.0
763 @strong{Несовместимое} изменение формата конфигурационного файла:
764 YAML заменён на Hjson, из-за его гораздо большей простоты, без
765 заметной потери функционала и удобства.
768 @strong{Несовместимое} изменение формата простых пакетов. Работа со
769 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
770 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
771 смотря на то, что версия библиотеки ещё не проверена временем.
774 Возможность соединяться с удалёнными нодами не только по TCP, но и через
775 pipe вызов сторонней команды.
778 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
779 комментариев. Можно использовать @option{-nocomments} опцию для старого
783 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
784 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
787 Возможность переопределить umask процесса через опцию конфигурационного
791 По умолчанию файлы и директории создаются с 666/777 правами доступа,
792 позволяя управлять ими @command{umask}-ом.
795 Обновлены зависимости.
798 Полное использование go модулей для управления зависимостями
799 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
802 Отмена автоматического использования более новых версий GNU GPL
803 (лицензия проекта GNU GPLv3-только).
808 @subsection Релиз 4.1
810 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
814 @subsection Релиз 4.0
818 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
819 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
820 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
821 отсылать дешифрованные данные внешней команде. Старые версии не
825 Проверка доступного места перед копированием во время работы
826 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
829 @command{nncp-call} имеет возможность только показывать список пакетов
830 на удалённой машине, без их передачи.
833 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
836 Восстановлена работоспособность @option{xxrate} настройки в
837 @option{calls} секции конфигурационного файла.
840 Зависимые библиотеки обновлены.
843 Небольшие исправления ошибок.
846 Начало использования @code{go.mod} подсистемы.
851 @subsection Релиз 3.4
853 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
857 @subsection Релиз 3.3
861 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
862 проверяют существование @file{.seen} файла и расценивают его как то, что
863 файл уже был скачан. Возможно передача данных была осуществлена
864 сторонним способом и удалённая сторона должна быть оповещена об этом.
867 Если более высокоприоритетный пакет попадает в спул, то
868 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
869 низкоприоритетные передачи.
872 К средствам связанным с online-соединениями (@command{nncp-daemon},
873 @command{nncp-call}, @command{nncp-caller}) добавлен простой
874 ограничитель скорости.
877 Возможность задания приоритета символьными обозначениями:
878 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
881 Изменены значения приоритетов по-умолчанию:
882 для @command{nncp-exec} с 64 на 96,
883 для @command{nncp-freq} с 64 на 160,
884 для @command{nncp-file} с 196 на 224.
889 @subsection Релиз 3.2
892 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
893 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
894 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
895 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
896 Явное добавление @file{NNCP/} директории в архив восстанавливает
897 работоспособность с корректными tar архивами.
901 @subsection Релиз 3.1
904 Возможность отключать пересылку через промежуточные ноды используя
905 @verb{|-via -|} опцию командной строки.
909 @subsection Релиз 3.0
913 @strong{Несовместимое} изменение формата простых пакетов. Работа со
914 старыми версиями не поддерживается.
917 Добавлена возможность удалённого исполнения команд, путём
918 конфигурирования @option{exec} опции конфигурационного файла и
919 использования команды @command{nncp-exec}:
922 Команда @command{nncp-mail} заменена более гибкой и широкой
923 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
924 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
926 @option{sendmail} опция конфигурационного файла заменена на более гибкую
927 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
932 Возможность переопределить @option{via} опцию конфигурации для целевого
933 узла через @option{-via} опцию командной строки для следующих команд:
934 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
937 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
941 Exec команды вызываются с дополнительными переменными окружения
942 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
945 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
946 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
947 аргументом @option{-replynice}.
950 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
951 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
952 @option{-noexec}, @option{-notrns}.
955 По-умолчанию @command{nncp-file} команда для
956 @option{-minsize}/@option{-chunked} опций использует
957 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
958 Это можно отключить указав нулевое значение.
963 @subsection Релиз 2.0
967 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
968 Работа со старыми версиями не поддерживается.
971 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
972 Одним криптографическим примитивом меньше.
975 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
976 криптографическим примитивом меньше (предполагая, что BLAKE2X
977 практически идентичен BLAKE2).
982 @subsection Релиз 1.0
986 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
987 со старыми версиями не поддерживается.
990 @command{nncp-bundle} команда может создавать потоки зашифрованных
991 пакетов или потреблять их. Это полезно когда речь идёт о
992 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
993 без создания промежуточного подготовленного ISO образа или работа с
994 ленточными накопителями).
997 @command{nncp-toss} команда может создавать @file{.seen} файлы,
998 предотвращая приём дублированных пакетов.
1001 В команде @command{nncp-call} разрешается иметь только одного
1002 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1003 входящих пакетов могут создать много горутин.
1006 Возможность переопределить путь до spool директории и файла журнала
1007 через аргумент командной строки или переменную окружения.
1010 @command{nncp-rm} команда может удалять все исходящие/входящие,
1011 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1016 @subsection Релиз 0.12
1018 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1022 @subsection Релиз 0.11
1024 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1028 @subsection Релиз 0.10
1031 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1032 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1036 @subsection Релиз 0.9
1039 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1040 команды. Они игнорировались.
1044 @subsection Релиз 0.8
1047 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1048 @option{-minsize} для передачи без разбиения на части была в байтах, а
1053 @subsection Релиз 0.7
1057 Возможность предоставлять данные для @command{nncp-file} через
1058 стандартный ввод, используя временный зашифрованный файл для этого.
1061 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1062 @command{nncp-reass} командой и @option{freqchunked} опцией
1063 конфигурационного файла. Полезно для передачи больших файлов через
1064 маленькие устройства хранения.
1067 @option{freqminsize} опция конфигурационного файла, аналогичная
1071 Опция @option{-force} команды @command{nncp-xfer} переименована в
1072 @option{-mkdir} для ясности.
1075 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1078 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1079 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1080 имели общий префикс и были сгруппированы для удобства.
1083 Появилась команда @command{nncp-cfgenc}, позволяющая
1084 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1085 без использования OpenPGP или других подобных инструментов.
1088 Обновлены зависимые криптографические библиотеки.
1093 @subsection Релиз 0.6
1095 @item Появилась небольшая команда @command{nncp-rm}.
1096 @item Обновлены зависимые криптографические библиотеки.
1100 @subsection Релиз 0.5
1103 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1104 @command{nncp-file} и @command{nncp-freq} командах.
1108 @subsection Релиз 0.4
1112 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1113 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1114 ошибкой (данные не терялись).
1117 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1118 это короче и удобнее для использования.
1121 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1122 позволяющая создать минималистичный урезанный конфигурационный файл без
1123 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1128 @subsection Релиз 0.3
1130 @item Исправлена совместимость с Go 1.6.
1134 @subsection Релиз 0.2
1138 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1139 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1142 @option{-minsize} опция даёт возможность автоматически дополнять
1143 исходящие пакеты до указанного минимального размера.
1146 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1147 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1148 Удалённая сторона сразу же оповещается об этом.
1151 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1152 неактивность в online соединении, когда оно должно быть отключено. Она
1153 может быть использована для сохранения соединения на долгое время.
1156 @option{-maxonlinetime} опция даёт возможность указания максимального
1157 возможного времени жизни соединения.
1160 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1164 @command{nncp-pkt} команда может разжимать данные.