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