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