]> Cypherpunks.ru repositories - nncp.git/blob - doc/news.ru.texi
Fixed freq.chunked calculation
[nncp.git] / doc / news.ru.texi
1 @node Новости
2 @section Новости
3
4 @node Релиз 8.0.1
5 @subsection Релиз 8.0.1
6 @itemize
7
8 @item
9 Исправлено некорректное вычисление @code{freq.chunked} значения, при
10 отсутствии которого всё равно форсированно включалась chunked передача.
11
12 @end itemize
13
14 @node Релиз 8.0.0
15 @subsection Релиз 8.0.0
16 @itemize
17
18 @item
19 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
20 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
21 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
22 знания размеров заранее, без создания временного файла или буферизации в
23 памяти.
24
25 @item
26 Производится корректная проверка дополнения зашифрованного пакета. Это
27 не критичная проблема, но прежде ни размер, ни значение дополнения не
28 были аутентифицированы, позволяя циклично откусывать по байту с конца и
29 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
30 такого зашифрованного пакета.
31
32 @item
33 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
34 совместимого с потоковой работой формата зашифрованных пакетов.
35
36 @item
37 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
38 @option{-maxsize}, ограничивающая максимальный результирующий размер
39 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
40 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
41
42 @end itemize
43
44 @node Релиз 7.7.0
45 @subsection Релиз 7.7.0
46 @itemize
47
48 @item
49 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
50 изменениях в spool директориях, для сокращения накладных расходов на их
51 частое чтение.
52
53 @item
54 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
55 поддиректориях теперь, дабы ускорить сканирование spool областей.
56 Необходима миграция текущих файлов:
57
58 @example
59 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
60
61 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
62     cd $rx
63     mkdir -p seen
64     find . -type f -name "*.seen" | while read fn ; do
65         mv $fn seen/$@{fn%.seen@}
66     done
67 done
68
69 $ find $NNCPSPOOL -type d -name area | while read area ; do
70     find $area -type f -name "*.seen" | while read fn ; do
71         mv $fn $@{fn%.seen@}
72     done
73 done
74 @end example
75
76 @end itemize
77
78 @node Релиз 7.6.0
79 @subsection Релиз 7.6.0
80 @itemize
81
82 @item
83 Журналирование может производиться в назначенный открытый файловый
84 дескриптор (@env{$NNCPLOG=FD:5} например).
85 Что дружелюбно к использованию под @command{daemontools}.
86
87 @item
88 Добавлены дополнительные проверки наличия публичных ключей в
89 конфигурационном файле, предотвращающие падения некоторых команд.
90
91 @end itemize
92
93 @node Релиз 7.5.1
94 @subsection Релиз 7.5.1
95 @itemize
96
97 @item
98 NNCP собирается на NetBSD.
99
100 @end itemize
101
102 @node Релиз 7.5.0
103 @subsection Релиз 7.5.0
104 @itemize
105
106 @item
107 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
108 журнале будет присутствовать адрес удалённой системы (при запуске под
109 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
110 @option{-inetd}.
111
112 @item
113 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
114 @option{-ucspi} опцию.
115
116 @item
117 Не выходить если не получается слушать на каком-либо MCD сетевом
118 интерфейсе -- только предупреждать об ошибке.
119
120 @end itemize
121
122 @node Релиз 7.4.0
123 @subsection Релиз 7.4.0
124 @itemize
125
126 @item
127 Исправлена работоспособность MCD при одновременном использовании
128 @command{nncp-daemon} и @command{nncp-caller}.
129
130 @end itemize
131
132 @node Релиз 7.3.2
133 @subsection Релиз 7.3.2
134 @itemize
135
136 @item
137 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
138
139 @end itemize
140
141 @node Релиз 7.3.1
142 @subsection Релиз 7.3.1
143 @itemize
144
145 @item
146 Исправлена проблема с возможно остающимся открытым файловым
147 дескриптором в online командах.
148
149 @item
150 Существенно снижено потребление памяти MTH хэширования.
151
152 @end itemize
153
154 @node Релиз 7.3.0
155 @subsection Релиз 7.3.0
156 @itemize
157
158 @item
159 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
160
161 @item
162 Возможность использовать конфигурацию в виде директории с набором
163 файлов. Появилась команда @command{nncp-cfgdir}.
164
165 @end itemize
166
167 @node Релиз 7.2.1
168 @subsection Релиз 7.2.1
169 @itemize
170
171 @item
172 Небольшие оптимизации в online командах.
173
174 @end itemize
175
176 @node Релиз 7.2.0
177 @subsection Релиз 7.2.0
178 @itemize
179
180 @item
181 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
182
183 @item
184 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
185 использовать его, а не игнорировать.
186
187 @item
188 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
189 видящего свой собственный пакет.
190
191 @item
192 Намного меньшее потребление памяти во время MTH хэширования когда
193 смещение равно нулю: когда пакет не является докачиванием, а например
194 проверяется @command{nncp-check} командой.
195
196 @end itemize
197
198 @node Релиз 7.1.1
199 @subsection Релиз 7.1.1
200 @itemize
201
202 @item
203 Исправлено падение при fsync директорий после создания @file{.seen} файлов.
204
205 @end itemize
206
207 @node Релиз 7.1.0
208 @subsection Релиз 7.1.0
209 @itemize
210
211 @item
212 Появилась возможность мультивещательной (multicast) рассылки пакетов.
213 Реализовано всего лишь дополнительным типом простых пакетов и изменением
214 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
215
216 @item
217 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
218 команд использующих временный файл (stdin и @option{-use-tmp}).
219
220 @item
221 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
222
223 @item
224 Исправлено некорректное генерирование @file{.hdr} при использовании
225 транзитных пакетов.
226
227 @item
228 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
229 ко всем нодам сразу.
230
231 @item
232 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
233 проверку в бесконечный цикл.
234
235 @item
236 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
237
238 @item
239 @command{nncp-pkt} может парсить @file{.hdr} файлы.
240
241 @end itemize
242
243 @node Релиз 7.0.0
244 @subsection Релиз 7.0.0
245 @itemize
246
247 @item
248 Минимальная требуемая версия Go 1.13.
249
250 @item
251 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
252 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
253 изменение формата шифрованных файлов (всего что находится в spool
254 области) и формата @file{.meta} файла при chunked передаче.
255
256 Текущая реализация далека от оптимальной: в ней нет распараллеливания
257 вычислений и имеет повышенное потребление памяти: около 512 KiB на
258 каждый 1 GiB данных файла. Будущая оптимизация производительности и
259 потребления памяти не должна привести к изменению формата пакетов. Но
260 это всё равно в несколько раз быстрее BLAKE2b.
261
262 @item
263 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
264 чтения с диска только предшествующей части, а не полностью всего файла,
265 как было прежде.
266
267 @item
268 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
269
270 @item
271 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
272 уменьшая количество примитивов. А также заголовок шифрованного файла
273 теперь является ассоциированными данными при шифровании.
274
275 @item
276 MultiCast Discovery использует
277 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
278
279 @item
280 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
281
282 @item
283 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
284
285 @item
286 Обновлены зависимые библиотеки.
287
288 @end itemize
289
290 @node Релиз 6.6.0
291 @subsection Релиз 6.6.0
292 @itemize
293
294 @item
295 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
296 ожидают завершения всех процессов фоновой проверки контрольных сумм,
297 после того как соединение закрыто.
298
299 @item
300 Добавлена возможность определения адреса через multicast оповещение в
301 локальной сети, так называемый MCD (MultiCast Discovery).
302
303 @end itemize
304
305 @node Релиз 6.5.0
306 @subsection Релиз 6.5.0
307 @itemize
308
309 @item
310 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
311
312 @item
313 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
314
315 @item
316 Исправлена гонка при закрытии файловых дескрипторов во время завершения
317 работы online протокола, которая могла привести к ошибке записи
318 принятого фрагмента пакета.
319
320 @item
321 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
322 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
323
324 @end itemize
325
326 @node Релиз 6.4.0
327 @subsection Релиз 6.4.0
328 @itemize
329
330 @item
331 Исправлена возможная гонка в online протоколе, приводящая к падению
332 программы.
333
334 @end itemize
335
336 @node Релиз 6.3.0
337 @subsection Релиз 6.3.0
338 @itemize
339
340 @item
341 Исправлено возможное падение программы во время показа прогресса online
342 протокола.
343
344 @end itemize
345
346 @node Релиз 6.2.1
347 @subsection Релиз 6.2.1
348 @itemize
349
350 @item
351 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
352
353 @end itemize
354
355 @node Релиз 6.2.0
356 @subsection Релиз 6.2.0
357 @itemize
358
359 @item
360 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
361
362 @item
363 Очередной рефакторинг и упрощение системы журналирования.
364 Не должно быть видимых изменений для конечного пользователя.
365
366 @end itemize
367
368 @node Релиз 6.1.0
369 @subsection Релиз 6.1.0
370 @itemize
371
372 @item
373 Оптимизация: большинство команд теперь не держат открытыми файловые
374 дескрипторы. Прежде вы легко могли выйти за пределы максимально
375 допустимого количества открытых файлов, если у вас было много пакетов в
376 spool директории.
377
378 @item
379 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
380 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
381
382 @item
383 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
384 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
385 online демоны не выполнят проверку целостности.
386
387 @item
388 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
389 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
390
391 @item
392 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
393 файлах, рядом с самими пакетами. Это может существенно повысить скорость
394 получения списка пакетов на файловых системах с большим размером блока.
395
396 @end itemize
397
398 @node Релиз 6.0.0
399 @subsection Релиз 6.0.0
400 @itemize
401
402 @item
403 Журнал использует человеко-читаемый и легко обрабатываемый машиной
404 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
405 записей, вместо структурированных строчек RFC 3339. Старый формат
406 журналов не поддерживается @command{nncp-log}.
407
408 @item
409 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
410 @command{nncp-daemon}.
411
412 @item
413 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
414 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
415 выражением содержащим секунды, это можно использовать как возможность
416 вызова только при появлении исходящих пакетов.
417
418 @item
419 @command{nncp-cronexpr} команда позволяет проверить корректность и
420 ожидаемый результат от указанного cron выражения.
421
422 @end itemize
423
424 @node Релиз 5.6.0
425 @subsection Релиз 5.6.0
426 @itemize
427
428 @item
429 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
430 во время него ежесекундно.
431
432 @item
433 В @option{calls} секции конфигурации появились опции
434 @option{autotoss}, @option{autotoss-doseen},
435 @option{autotoss-nofile}, @option{autotoss-nofreq},
436 @option{autotoss-noexec}, @option{autotoss-notrns}.
437 Вы можете настраивать опции автоматического tosser для каждого вызова.
438
439 @item
440 Использовать vendoring вместо переопределения @env{$GOPATH} во время
441 установки tarball, так как текущая минимальная версия Go это 1.12,
442 поддерживающая модули.
443
444 @end itemize
445
446 @node Релиз 5.5.1
447 @subsection Релиз 5.5.1
448 @itemize
449
450 @item
451 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
452 в @file{config} во время установки.
453
454 @end itemize
455
456 @node Релиз 5.5.0
457 @subsection Релиз 5.5.0
458 @itemize
459
460 @item
461 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
462 @command{nncp-bundle}, @command{nncp-stat} командах.
463
464 @item
465 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
466
467 @item
468 У команды @command{nncp-exec} появились @option{-use-tmp} и
469 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
470 версиями NNCP.
471
472 @item
473 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
474 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
475
476 @item
477 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
478
479 @end itemize
480
481 @node Релиз 5.4.1
482 @subsection Релиз 5.4.1
483 @itemize
484
485 @item
486 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
487
488 @end itemize
489
490 @node Релиз 5.4.0
491 @subsection Релиз 5.4.0
492 @itemize
493
494 @item
495 Обновлены зависимые библиотеки.
496
497 @item
498 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
499 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
500 реализация @command{redo} включена в tarball.
501
502 @end itemize
503
504 @node Релиз 5.3.3
505 @subsection Релиз 5.3.3
506 @itemize
507
508 @item
509 Больше различных проверок в коде на ошибки.
510
511 @item
512 Обновлены зависимые библиотеки.
513
514 @end itemize
515
516 @node Релиз 5.3.2
517 @subsection Релиз 5.3.2
518 @itemize
519
520 @item
521 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
522 котором соединение могло не учитывать факты прихода пакетов и обрывать
523 связь.
524
525 @end itemize
526
527 @node Релиз 5.3.1
528 @subsection Релиз 5.3.1
529 @itemize
530
531 @item
532 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
533 использующими внешние команды (@verb{#"|somecmd"#}).
534
535 @item
536 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
537 каждому пакету в spool.
538
539 @end itemize
540
541 @node Релиз 5.3.0
542 @subsection Релиз 5.3.0
543 @itemize
544
545 @item
546 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
547
548 @item
549 Исправлено не происходящее дополнение (padding) handshake сообщений.
550
551 @item
552 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
553
554 @item
555 SP протокол порождает меньше вызовов записей (соответственно, и TCP
556 пакетов) в сокет.
557
558 @item
559 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
560 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
561
562 @item
563 Раз в минуту, если нет более никакого другого трафика, посылаются PING
564 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
565 более не работоспособно.
566
567 @item
568 @command{nncp-toss} использует lock-file для предотвращения
569 одновременной обработки зашифрованных пакетов.
570
571 @end itemize
572
573 @node Релиз 5.2.1
574 @subsection Релиз 5.2.1
575 @itemize
576
577 @item
578 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
579
580 @end itemize
581
582 @node Релиз 5.2.0
583 @subsection Релиз 5.2.0
584 @itemize
585
586 @item
587 Большинство команд по умолчанию показывают однострочный прогресс
588 выполнения операции. Появились @option{-progress}, @option{-noprogress}
589 опции командной строки, @option{noprogress} опция конфигурационного
590 файла.
591
592 @item
593 Исправлен некорректный код возврата @command{nncp-check} команды,
594 который возвращал ошибку когда всё хорошо.
595
596 @item
597 Проверка свободного места для пакетов, во время выполнения
598 @command{nncp-bundle -rx}.
599
600 @end itemize
601
602 @node Релиз 5.1.2
603 @subsection Релиз 5.1.2
604 @itemize
605
606 @item
607 Исправлена @strong{критичная} уязвимость: аутентификация online нод
608 могла приводить к некорректной идентификации удалённой стороны, позволяя
609 скачивать чужие зашифрованные пакеты.
610
611 @item
612 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
613 публичный ключ Noise были поменяны местами, что приводило к
614 невозможности online аутентификации нод.
615
616 @item
617 Явная синхронизация (fsync) директорий для гарантированного
618 переименования файлов.
619
620 @end itemize
621
622 @node Релиз 5.1.1
623 @subsection Релиз 5.1.1
624 @itemize
625
626 @item
627 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
628
629 @end itemize
630
631 @node Релиз 5.1.0
632 @subsection Релиз 5.1.0
633 @itemize
634
635 @item
636 @command{nncp-file} может отправлять директории, автоматически на лету
637 создавая pax архив.
638
639 @item
640 Во время создания исходящих сообщений проверяется наличие свободного
641 места на файловой системе.
642
643 @item
644 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
645 конфигурационного файла заменены на структуру
646 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
647
648 @item
649 Добавлена @option{freq.maxsize} опция конфигурационного файл,
650 запрещающая ответ на файловый запрос больше заданного размера.
651
652 @item
653 Возможность оповещения об успешно выполненных командах (exec) через
654 @option{notify.exec} опцию конфигурационного файла.
655
656 @end itemize
657
658 @node Релиз 5.0.0
659 @subsection Релиз 5.0.0
660 @itemize
661
662 @item
663 @strong{Несовместимое} изменение формата конфигурационного файла:
664 YAML заменён на Hjson, из-за его гораздо большей простоты, без
665 заметной потери функционала и удобства.
666
667 @item
668 @strong{Несовместимое} изменение формата простых пакетов. Работа со
669 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
670 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
671 смотря на то, что версия библиотеки ещё не проверена временем.
672
673 @item
674 Возможность соединяться с удалёнными нодами не только по TCP, но и через
675 pipe вызов сторонней команды.
676
677 @item
678 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
679 комментариев. Можно использовать @option{-nocomments} опцию для старого
680 поведения.
681
682 @item
683 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
684 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
685
686 @item
687 Возможность переопределить umask процесса через опцию конфигурационного
688 файла.
689
690 @item
691 По умолчанию файлы и директории создаются с 666/777 правами доступа,
692 позволяя управлять ими @command{umask}-ом.
693
694 @item
695 Обновлены зависимости.
696
697 @item
698 Полное использование go модулей для управления зависимостями
699 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
700
701 @item
702 Отмена автоматического использования более новых версий GNU GPL
703 (лицензия проекта GNU GPLv3-только).
704
705 @end itemize
706
707 @node Релиз 4.1
708 @subsection Релиз 4.1
709 @itemize
710 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
711 @end itemize
712
713 @node Релиз 4.0
714 @subsection Релиз 4.0
715 @itemize
716
717 @item
718 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
719 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
720 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
721 отсылать дешифрованные данные внешней команде. Старые версии не
722 поддерживаются.
723
724 @item
725 Проверка доступного места перед копированием во время работы
726 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
727
728 @item
729 @command{nncp-call} имеет возможность только показывать список пакетов
730 на удалённой машине, без их передачи.
731
732 @item
733 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
734
735 @item
736 Восстановлена работоспособность @option{xxrate} настройки в
737 @option{calls} секции конфигурационного файла.
738
739 @item
740 Зависимые библиотеки обновлены.
741
742 @item
743 Небольшие исправления ошибок.
744
745 @item
746 Начало использования @code{go.mod} подсистемы.
747
748 @end itemize
749
750 @node Релиз 3.4
751 @subsection Релиз 3.4
752 @itemize
753 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
754 @end itemize
755
756 @node Релиз 3.3
757 @subsection Релиз 3.3
758 @itemize
759
760 @item
761 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
762 проверяют существование @file{.seen} файла и расценивают его как то, что
763 файл уже был скачан. Возможно передача данных была осуществлена
764 сторонним способом и удалённая сторона должна быть оповещена об этом.
765
766 @item
767 Если более высокоприоритетный пакет попадает в спул, то
768 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
769 низкоприоритетные передачи.
770
771 @item
772 К средствам связанным с online-соединениями (@command{nncp-daemon},
773 @command{nncp-call}, @command{nncp-caller}) добавлен простой
774 ограничитель скорости.
775
776 @item
777 Возможность задания приоритета символьными обозначениями:
778 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
779
780 @item
781 Изменены значения приоритетов по-умолчанию:
782 для @command{nncp-exec} с 64 на 96,
783 для @command{nncp-freq} с 64 на 160,
784 для @command{nncp-file} с 196 на 224.
785
786 @end itemize
787
788 @node Релиз 3.2
789 @subsection Релиз 3.2
790 @itemize
791 @item
792 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
793 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
794 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
795 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
796 Явное добавление @file{NNCP/} директории в архив восстанавливает
797 работоспособность с корректными tar архивами.
798 @end itemize
799
800 @node Релиз 3.1
801 @subsection Релиз 3.1
802 @itemize
803 @item
804 Возможность отключать пересылку через промежуточные ноды используя
805 @verb{|-via -|} опцию командной строки.
806 @end itemize
807
808 @node Релиз 3.0
809 @subsection Релиз 3.0
810 @itemize
811
812 @item
813 @strong{Несовместимое} изменение формата простых пакетов. Работа со
814 старыми версиями не поддерживается.
815
816 @item
817 Добавлена возможность удалённого исполнения команд, путём
818 конфигурирования @option{exec} опции конфигурационного файла и
819 использования команды @command{nncp-exec}:
820     @itemize
821     @item
822     Команда @command{nncp-mail} заменена более гибкой и широкой
823     @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
824     нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
825     @item
826     @option{sendmail} опция конфигурационного файла заменена на более гибкую
827     @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
828     sendmail: [...]|}.
829     @end itemize
830
831 @item
832 Возможность переопределить @option{via} опцию конфигурации для целевого
833 узла через @option{-via} опцию командной строки для следующих команд:
834 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
835
836 @item
837 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
838 в виде одного файла.
839
840 @item
841 Exec команды вызываются с дополнительными переменными окружения
842 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
843
844 @item
845 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
846 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
847 аргументом @option{-replynice}.
848
849 @item
850 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
851 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
852 @option{-noexec}, @option{-notrns}.
853
854 @item
855 По-умолчанию @command{nncp-file} команда для
856 @option{-minsize}/@option{-chunked} опций использует
857 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
858 Это можно отключить указав нулевое значение.
859
860 @end itemize
861
862 @node Релиз 2.0
863 @subsection Релиз 2.0
864 @itemize
865
866 @item
867 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
868 Работа со старыми версиями не поддерживается.
869
870 @item
871 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
872 Одним криптографическим примитивом меньше.
873
874 @item
875 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
876 криптографическим примитивом меньше (предполагая, что BLAKE2X
877 практически идентичен BLAKE2).
878
879 @end itemize
880
881 @node Релиз 1.0
882 @subsection Релиз 1.0
883 @itemize
884
885 @item
886 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
887 со старыми версиями не поддерживается.
888
889 @item
890 @command{nncp-bundle} команда может создавать потоки зашифрованных
891 пакетов или потреблять их. Это полезно когда речь идёт о
892 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
893 без создания промежуточного подготовленного ISO образа или работа с
894 ленточными накопителями).
895
896 @item
897 @command{nncp-toss} команда может создавать @file{.seen} файлы,
898 предотвращая приём дублированных пакетов.
899
900 @item
901 В команде @command{nncp-call} разрешается иметь только одного
902 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
903 входящих пакетов могут создать много горутин.
904
905 @item
906 Возможность переопределить путь до spool директории и файла журнала
907 через аргумент командной строки или переменную окружения.
908
909 @item
910 @command{nncp-rm} команда может удалять все исходящие/входящие,
911 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
912
913 @end itemize
914
915 @node Релиз 0.12
916 @subsection Релиз 0.12
917 @itemize
918 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
919 @end itemize
920
921 @node Релиз 0.11
922 @subsection Релиз 0.11
923 @itemize
924 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
925 @end itemize
926
927 @node Релиз 0.10
928 @subsection Релиз 0.10
929 @itemize
930 @item
931 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
932 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
933 @end itemize
934
935 @node Релиз 0.9
936 @subsection Релиз 0.9
937 @itemize
938 @item
939 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
940 команды. Они игнорировались.
941 @end itemize
942
943 @node Релиз 0.8
944 @subsection Релиз 0.8
945 @itemize
946 @item
947 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
948 @option{-minsize} для передачи без разбиения на части была в байтах, а
949 не KiB-ах.
950 @end itemize
951
952 @node Релиз 0.7
953 @subsection Релиз 0.7
954 @itemize
955
956 @item
957 Возможность предоставлять данные для @command{nncp-file} через
958 стандартный ввод, используя временный зашифрованный файл для этого.
959
960 @item
961 Появилась возможность передачи файлов разбитых на части, с сопутствующей
962 @command{nncp-reass} командой и @option{freqchunked} опцией
963 конфигурационного файла. Полезно для передачи больших файлов через
964 маленькие устройства хранения.
965
966 @item
967 @option{freqminsize} опция конфигурационного файла, аналогичная
968 @option{-minsize}.
969
970 @item
971 Опция @option{-force} команды @command{nncp-xfer} переименована в
972 @option{-mkdir} для ясности.
973
974 @item
975 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
976
977 @item
978 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
979 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
980 имели общий префикс и были сгруппированы для удобства.
981
982 @item
983 Появилась команда @command{nncp-cfgenc}, позволяющая
984 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
985 без использования OpenPGP или других подобных инструментов.
986
987 @item
988 Обновлены зависимые криптографические библиотеки.
989
990 @end itemize
991
992 @node Релиз 0.6
993 @subsection Релиз 0.6
994 @itemize
995 @item Появилась небольшая команда @command{nncp-rm}.
996 @item Обновлены зависимые криптографические библиотеки.
997 @end itemize
998
999 @node Релиз 0.5
1000 @subsection Релиз 0.5
1001 @itemize
1002 @item
1003 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1004 @command{nncp-file} и @command{nncp-freq} командах.
1005 @end itemize
1006
1007 @node Релиз 0.4
1008 @subsection Релиз 0.4
1009 @itemize
1010
1011 @item
1012 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1013 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1014 ошибкой (данные не терялись).
1015
1016 @item
1017 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1018 это короче и удобнее для использования.
1019
1020 @item
1021 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1022 позволяющая создать минималистичный урезанный конфигурационный файл без
1023 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1024
1025 @end itemize
1026
1027 @node Релиз 0.3
1028 @subsection Релиз 0.3
1029 @itemize
1030 @item Исправлена совместимость с Go 1.6.
1031 @end itemize
1032
1033 @node Релиз 0.2
1034 @subsection Релиз 0.2
1035 @itemize
1036
1037 @item
1038 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1039 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1040
1041 @item
1042 @option{-minsize} опция даёт возможность автоматически дополнять
1043 исходящие пакеты до указанного минимального размера.
1044
1045 @item
1046 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1047 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1048 Удалённая сторона сразу же оповещается об этом.
1049
1050 @item
1051 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1052 неактивность в online соединении, когда оно должно быть отключено. Она
1053 может быть использована для сохранения соединения на долгое время.
1054
1055 @item
1056 @option{-maxonlinetime} опция даёт возможность указания максимального
1057 возможного времени жизни соединения.
1058
1059 @item
1060 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1061 cron-у.
1062
1063 @item
1064 @command{nncp-pkt} команда может разжимать данные.
1065
1066 @end itemize