5 @subsection Релиз 8.5.0
9 Исправлена работоспособность @command{nncp-bundle}.
12 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
16 Возможность переопределять внутренний timeout по умолчанию для протокола
17 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
18 полезно для каналов с очень большими задержками.
21 NNCP собирается на OpenBSD.
26 @subsection Релиз 8.4.0
30 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
31 @code{mcd-send} опции конфигурации) теперь являются регулярными
32 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
33 их теперь и прописывает @code{.*} имя интерфейса.
36 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
37 позволяющий дожидаться multicast сообщения об адресе ноды.
40 @command{nncp-file} команда пропускает всё что не является регулярным
41 файлом или директорией во время создания pax-архива.
46 @subsection Релиз 8.3.0
50 Исправлена возможность сборки на 32-бит системах.
55 @subsection Релиз 8.2.0
59 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
60 вместо голого μTP транспортного протокола, делая возможным работу в
61 качестве обычного TCP сервера внутри overlay сети.
64 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub...}
65 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
68 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
71 @command{nncp-daemon} может слушать одновременно и на TCP и на
72 Yggdrasil-управляемом сокетах.
75 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
76 опционально -- вы можете быть доступны и через связь с peer-ами.
81 @subsection Релиз 8.1.0
85 @command{nncp-cfgdir} команда не требует обязательного наличия
86 @code{self} секции конфигурационного файла.
89 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
90 используя online протокол поверх неё.
95 @subsection Релиз 8.0.2
99 Исправлена возможность отправки мультивещательных пакетов.
104 @subsection Релиз 8.0.1
108 Исправлено некорректное вычисление @code{freq.chunked} значения, при
109 отсутствии которого всё равно форсированно включалась chunked передача.
112 Исправлено некорректное вычисление значения полного размера файла в
118 @subsection Релиз 8.0.0
122 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
123 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
124 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
125 знания размеров заранее, без создания временного файла или буферизации в
129 Производится корректная проверка дополнения зашифрованного пакета. Это
130 не критичная проблема, но прежде ни размер, ни значение дополнения не
131 были аутентифицированы, позволяя циклично откусывать по байту с конца и
132 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
133 такого зашифрованного пакета.
136 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
137 совместимого с потоковой работой формата зашифрованных пакетов.
140 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
141 @option{-maxsize}, ограничивающая максимальный результирующий размер
142 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
143 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
148 @subsection Релиз 7.7.0
152 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
153 изменениях в spool директориях, для сокращения накладных расходов на их
157 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
158 поддиректориях теперь, дабы ускорить сканирование spool областей.
159 Необходима миграция текущих файлов:
162 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
164 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
167 find . -type f -name "*.seen" | while read fn ; do
168 mv $fn seen/$@{fn%.seen@}
172 $ find $NNCPSPOOL -type d -name area | while read area ; do
173 find $area -type f -name "*.seen" | while read fn ; do
182 @subsection Релиз 7.6.0
186 Журналирование может производиться в назначенный открытый файловый
187 дескриптор (@env{$NNCPLOG=FD:5} например).
188 Что дружелюбно к использованию под @command{daemontools}.
191 Добавлены дополнительные проверки наличия публичных ключей в
192 конфигурационном файле, предотвращающие падения некоторых команд.
197 @subsection Релиз 7.5.1
201 NNCP собирается на NetBSD.
206 @subsection Релиз 7.5.0
210 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
211 журнале будет присутствовать адрес удалённой системы (при запуске под
212 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
216 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
217 @option{-ucspi} опцию.
220 Не выходить если не получается слушать на каком-либо MCD сетевом
221 интерфейсе -- только предупреждать об ошибке.
226 @subsection Релиз 7.4.0
230 Исправлена работоспособность MCD при одновременном использовании
231 @command{nncp-daemon} и @command{nncp-caller}.
236 @subsection Релиз 7.3.2
240 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
245 @subsection Релиз 7.3.1
249 Исправлена проблема с возможно остающимся открытым файловым
250 дескриптором в online командах.
253 Существенно снижено потребление памяти MTH хэширования.
258 @subsection Релиз 7.3.0
262 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
265 Возможность использовать конфигурацию в виде директории с набором
266 файлов. Появилась команда @command{nncp-cfgdir}.
271 @subsection Релиз 7.2.1
275 Небольшие оптимизации в online командах.
280 @subsection Релиз 7.2.0
284 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
287 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
288 использовать его, а не игнорировать.
291 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
292 видящего свой собственный пакет.
295 Намного меньшее потребление памяти во время MTH хэширования когда
296 смещение равно нулю: когда пакет не является докачиванием, а например
297 проверяется @command{nncp-check} командой.
302 @subsection Релиз 7.1.1
306 Исправлено падение при fsync директорий после создания @file{.seen} файлов.
311 @subsection Релиз 7.1.0
315 Появилась возможность мультивещательной (multicast) рассылки пакетов.
316 Реализовано всего лишь дополнительным типом простых пакетов и изменением
317 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
320 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
321 команд использующих временный файл (stdin и @option{-use-tmp}).
324 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
327 Исправлено некорректное генерирование @file{.hdr} при использовании
331 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
335 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
336 проверку в бесконечный цикл.
339 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
342 @command{nncp-pkt} может парсить @file{.hdr} файлы.
347 @subsection Релиз 7.0.0
351 Минимальная требуемая версия Go 1.13.
354 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
355 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
356 изменение формата шифрованных файлов (всего что находится в spool
357 области) и формата @file{.meta} файла при chunked передаче.
359 Текущая реализация далека от оптимальной: в ней нет распараллеливания
360 вычислений и имеет повышенное потребление памяти: около 512 KiB на
361 каждый 1 GiB данных файла. Будущая оптимизация производительности и
362 потребления памяти не должна привести к изменению формата пакетов. Но
363 это всё равно в несколько раз быстрее BLAKE2b.
366 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
367 чтения с диска только предшествующей части, а не полностью всего файла,
371 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
374 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
375 уменьшая количество примитивов. А также заголовок шифрованного файла
376 теперь является ассоциированными данными при шифровании.
379 MultiCast Discovery использует
380 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
383 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
386 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
389 Обновлены зависимые библиотеки.
394 @subsection Релиз 6.6.0
398 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
399 ожидают завершения всех процессов фоновой проверки контрольных сумм,
400 после того как соединение закрыто.
403 Добавлена возможность определения адреса через multicast оповещение в
404 локальной сети, так называемый MCD (MultiCast Discovery).
409 @subsection Релиз 6.5.0
413 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
416 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
419 Исправлена гонка при закрытии файловых дескрипторов во время завершения
420 работы online протокола, которая могла привести к ошибке записи
421 принятого фрагмента пакета.
424 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
425 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
430 @subsection Релиз 6.4.0
434 Исправлена возможная гонка в online протоколе, приводящая к падению
440 @subsection Релиз 6.3.0
444 Исправлено возможное падение программы во время показа прогресса online
450 @subsection Релиз 6.2.1
454 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
459 @subsection Релиз 6.2.0
463 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
466 Очередной рефакторинг и упрощение системы журналирования.
467 Не должно быть видимых изменений для конечного пользователя.
472 @subsection Релиз 6.1.0
476 Оптимизация: большинство команд теперь не держат открытыми файловые
477 дескрипторы. Прежде вы легко могли выйти за пределы максимально
478 допустимого количества открытых файлов, если у вас было много пакетов в
482 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
483 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
486 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
487 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
488 online демоны не выполнят проверку целостности.
491 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
492 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
495 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
496 файлах, рядом с самими пакетами. Это может существенно повысить скорость
497 получения списка пакетов на файловых системах с большим размером блока.
502 @subsection Релиз 6.0.0
506 Журнал использует человеко-читаемый и легко обрабатываемый машиной
507 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
508 записей, вместо структурированных строчек RFC 3339. Старый формат
509 журналов не поддерживается @command{nncp-log}.
512 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
513 @command{nncp-daemon}.
516 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
517 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
518 выражением содержащим секунды, это можно использовать как возможность
519 вызова только при появлении исходящих пакетов.
522 @command{nncp-cronexpr} команда позволяет проверить корректность и
523 ожидаемый результат от указанного cron выражения.
528 @subsection Релиз 5.6.0
532 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
533 во время него ежесекундно.
536 В @option{calls} секции конфигурации появились опции
537 @option{autotoss}, @option{autotoss-doseen},
538 @option{autotoss-nofile}, @option{autotoss-nofreq},
539 @option{autotoss-noexec}, @option{autotoss-notrns}.
540 Вы можете настраивать опции автоматического tosser для каждого вызова.
543 Использовать vendoring вместо переопределения @env{$GOPATH} во время
544 установки tarball, так как текущая минимальная версия Go это 1.12,
545 поддерживающая модули.
550 @subsection Релиз 5.5.1
554 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
555 в @file{config} во время установки.
560 @subsection Релиз 5.5.0
564 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
565 @command{nncp-bundle}, @command{nncp-stat} командах.
568 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
571 У команды @command{nncp-exec} появились @option{-use-tmp} и
572 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
576 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
577 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
580 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
585 @subsection Релиз 5.4.1
589 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
594 @subsection Релиз 5.4.0
598 Обновлены зависимые библиотеки.
601 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
602 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
603 реализация @command{redo} включена в tarball.
608 @subsection Релиз 5.3.3
612 Больше различных проверок в коде на ошибки.
615 Обновлены зависимые библиотеки.
620 @subsection Релиз 5.3.2
624 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
625 котором соединение могло не учитывать факты прихода пакетов и обрывать
631 @subsection Релиз 5.3.1
635 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
636 использующими внешние команды (@verb{#"|somecmd"#}).
639 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
640 каждому пакету в spool.
645 @subsection Релиз 5.3.0
649 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
652 Исправлено не происходящее дополнение (padding) handshake сообщений.
655 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
658 SP протокол порождает меньше вызовов записей (соответственно, и TCP
662 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
663 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
666 Раз в минуту, если нет более никакого другого трафика, посылаются PING
667 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
668 более не работоспособно.
671 @command{nncp-toss} использует lock-file для предотвращения
672 одновременной обработки зашифрованных пакетов.
677 @subsection Релиз 5.2.1
681 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
686 @subsection Релиз 5.2.0
690 Большинство команд по умолчанию показывают однострочный прогресс
691 выполнения операции. Появились @option{-progress}, @option{-noprogress}
692 опции командной строки, @option{noprogress} опция конфигурационного
696 Исправлен некорректный код возврата @command{nncp-check} команды,
697 который возвращал ошибку когда всё хорошо.
700 Проверка свободного места для пакетов, во время выполнения
701 @command{nncp-bundle -rx}.
706 @subsection Релиз 5.1.2
710 Исправлена @strong{критичная} уязвимость: аутентификация online нод
711 могла приводить к некорректной идентификации удалённой стороны, позволяя
712 скачивать чужие зашифрованные пакеты.
715 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
716 публичный ключ Noise были поменяны местами, что приводило к
717 невозможности online аутентификации нод.
720 Явная синхронизация (fsync) директорий для гарантированного
721 переименования файлов.
726 @subsection Релиз 5.1.1
730 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
735 @subsection Релиз 5.1.0
739 @command{nncp-file} может отправлять директории, автоматически на лету
743 Во время создания исходящих сообщений проверяется наличие свободного
744 места на файловой системе.
747 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
748 конфигурационного файла заменены на структуру
749 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
752 Добавлена @option{freq.maxsize} опция конфигурационного файл,
753 запрещающая ответ на файловый запрос больше заданного размера.
756 Возможность оповещения об успешно выполненных командах (exec) через
757 @option{notify.exec} опцию конфигурационного файла.
762 @subsection Релиз 5.0.0
766 @strong{Несовместимое} изменение формата конфигурационного файла:
767 YAML заменён на Hjson, из-за его гораздо большей простоты, без
768 заметной потери функционала и удобства.
771 @strong{Несовместимое} изменение формата простых пакетов. Работа со
772 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
773 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
774 смотря на то, что версия библиотеки ещё не проверена временем.
777 Возможность соединяться с удалёнными нодами не только по TCP, но и через
778 pipe вызов сторонней команды.
781 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
782 комментариев. Можно использовать @option{-nocomments} опцию для старого
786 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
787 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
790 Возможность переопределить umask процесса через опцию конфигурационного
794 По умолчанию файлы и директории создаются с 666/777 правами доступа,
795 позволяя управлять ими @command{umask}-ом.
798 Обновлены зависимости.
801 Полное использование go модулей для управления зависимостями
802 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
805 Отмена автоматического использования более новых версий GNU GPL
806 (лицензия проекта GNU GPLv3-только).
811 @subsection Релиз 4.1
813 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
817 @subsection Релиз 4.0
821 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
822 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
823 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
824 отсылать дешифрованные данные внешней команде. Старые версии не
828 Проверка доступного места перед копированием во время работы
829 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
832 @command{nncp-call} имеет возможность только показывать список пакетов
833 на удалённой машине, без их передачи.
836 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
839 Восстановлена работоспособность @option{xxrate} настройки в
840 @option{calls} секции конфигурационного файла.
843 Зависимые библиотеки обновлены.
846 Небольшие исправления ошибок.
849 Начало использования @code{go.mod} подсистемы.
854 @subsection Релиз 3.4
856 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
860 @subsection Релиз 3.3
864 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
865 проверяют существование @file{.seen} файла и расценивают его как то, что
866 файл уже был скачан. Возможно передача данных была осуществлена
867 сторонним способом и удалённая сторона должна быть оповещена об этом.
870 Если более высокоприоритетный пакет попадает в спул, то
871 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
872 низкоприоритетные передачи.
875 К средствам связанным с online-соединениями (@command{nncp-daemon},
876 @command{nncp-call}, @command{nncp-caller}) добавлен простой
877 ограничитель скорости.
880 Возможность задания приоритета символьными обозначениями:
881 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
884 Изменены значения приоритетов по-умолчанию:
885 для @command{nncp-exec} с 64 на 96,
886 для @command{nncp-freq} с 64 на 160,
887 для @command{nncp-file} с 196 на 224.
892 @subsection Релиз 3.2
895 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
896 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
897 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
898 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
899 Явное добавление @file{NNCP/} директории в архив восстанавливает
900 работоспособность с корректными tar архивами.
904 @subsection Релиз 3.1
907 Возможность отключать пересылку через промежуточные ноды используя
908 @verb{|-via -|} опцию командной строки.
912 @subsection Релиз 3.0
916 @strong{Несовместимое} изменение формата простых пакетов. Работа со
917 старыми версиями не поддерживается.
920 Добавлена возможность удалённого исполнения команд, путём
921 конфигурирования @option{exec} опции конфигурационного файла и
922 использования команды @command{nncp-exec}:
925 Команда @command{nncp-mail} заменена более гибкой и широкой
926 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
927 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
929 @option{sendmail} опция конфигурационного файла заменена на более гибкую
930 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
935 Возможность переопределить @option{via} опцию конфигурации для целевого
936 узла через @option{-via} опцию командной строки для следующих команд:
937 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
940 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
944 Exec команды вызываются с дополнительными переменными окружения
945 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
948 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
949 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
950 аргументом @option{-replynice}.
953 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
954 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
955 @option{-noexec}, @option{-notrns}.
958 По-умолчанию @command{nncp-file} команда для
959 @option{-minsize}/@option{-chunked} опций использует
960 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
961 Это можно отключить указав нулевое значение.
966 @subsection Релиз 2.0
970 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
971 Работа со старыми версиями не поддерживается.
974 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
975 Одним криптографическим примитивом меньше.
978 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
979 криптографическим примитивом меньше (предполагая, что BLAKE2X
980 практически идентичен BLAKE2).
985 @subsection Релиз 1.0
989 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
990 со старыми версиями не поддерживается.
993 @command{nncp-bundle} команда может создавать потоки зашифрованных
994 пакетов или потреблять их. Это полезно когда речь идёт о
995 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
996 без создания промежуточного подготовленного ISO образа или работа с
997 ленточными накопителями).
1000 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1001 предотвращая приём дублированных пакетов.
1004 В команде @command{nncp-call} разрешается иметь только одного
1005 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1006 входящих пакетов могут создать много горутин.
1009 Возможность переопределить путь до spool директории и файла журнала
1010 через аргумент командной строки или переменную окружения.
1013 @command{nncp-rm} команда может удалять все исходящие/входящие,
1014 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1019 @subsection Релиз 0.12
1021 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1025 @subsection Релиз 0.11
1027 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1031 @subsection Релиз 0.10
1034 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1035 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1039 @subsection Релиз 0.9
1042 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1043 команды. Они игнорировались.
1047 @subsection Релиз 0.8
1050 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1051 @option{-minsize} для передачи без разбиения на части была в байтах, а
1056 @subsection Релиз 0.7
1060 Возможность предоставлять данные для @command{nncp-file} через
1061 стандартный ввод, используя временный зашифрованный файл для этого.
1064 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1065 @command{nncp-reass} командой и @option{freqchunked} опцией
1066 конфигурационного файла. Полезно для передачи больших файлов через
1067 маленькие устройства хранения.
1070 @option{freqminsize} опция конфигурационного файла, аналогичная
1074 Опция @option{-force} команды @command{nncp-xfer} переименована в
1075 @option{-mkdir} для ясности.
1078 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1081 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1082 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1083 имели общий префикс и были сгруппированы для удобства.
1086 Появилась команда @command{nncp-cfgenc}, позволяющая
1087 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1088 без использования OpenPGP или других подобных инструментов.
1091 Обновлены зависимые криптографические библиотеки.
1096 @subsection Релиз 0.6
1098 @item Появилась небольшая команда @command{nncp-rm}.
1099 @item Обновлены зависимые криптографические библиотеки.
1103 @subsection Релиз 0.5
1106 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1107 @command{nncp-file} и @command{nncp-freq} командах.
1111 @subsection Релиз 0.4
1115 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1116 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1117 ошибкой (данные не терялись).
1120 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1121 это короче и удобнее для использования.
1124 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1125 позволяющая создать минималистичный урезанный конфигурационный файл без
1126 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1131 @subsection Релиз 0.3
1133 @item Исправлена совместимость с Go 1.6.
1137 @subsection Релиз 0.2
1141 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1142 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1145 @option{-minsize} опция даёт возможность автоматически дополнять
1146 исходящие пакеты до указанного минимального размера.
1149 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1150 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1151 Удалённая сторона сразу же оповещается об этом.
1154 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1155 неактивность в online соединении, когда оно должно быть отключено. Она
1156 может быть использована для сохранения соединения на долгое время.
1159 @option{-maxonlinetime} опция даёт возможность указания максимального
1160 возможного времени жизни соединения.
1163 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1167 @command{nncp-pkt} команда может разжимать данные.