]> Cypherpunks.ru repositories - nncp.git/blob - doc/news.texi
Generate ACKs during tossing
[nncp.git] / doc / news.texi
1 @node News
2 @cindex news
3 @unnumbered News
4
5 See also this page @ref{Новости, on russian}.
6
7 @node Release 8_9_0
8 @section Release 8.9.0
9 @itemize
10
11 @item
12 @command{nncp-toss} command has @option{-gen-ack} option.
13 @command{nncp-daemon}, @command{nncp-caller}, @command{nncp-call}
14 commands have @option{-autotoss-gen-ack} option. They automatically
15 generate ACK packets and store corresponding @file{spool/tx/ack/}
16 references to them, to be able to remove them after the transfer.
17
18 @item
19 @code{autotoss-gen-ack} appeared in call configuration.
20 @code{ack} section appeared in neighbour configuration.
21
22 @item
23 @command{nncp-rm} command has @option{-ack} option to remove packets
24 referenced by stored @file{spool/tx/ack/} files generated during tossing.
25
26 @item
27 Get rid of @command{redo} build system during installation, as there are
28 virtually none dependencies, just only compilation of the Go code.
29
30 @item
31 Updated some dependencies.
32
33 @end itemize
34
35 @node Release 8_8_3
36 @section Release 8.8.3
37 @itemize
38
39 @item
40 Fixed @command{nncp-reass} command, that incorrectly reported about
41 wrong last chunk's size if it is multiple of the chunk-size.
42
43 @item
44 Updated dependencies. Go 1.20+ is required now.
45
46 @end itemize
47
48 @node Release 8_8_2
49 @section Release 8.8.2
50 @itemize
51
52 @item
53 Updated Yggdrasil library, with several other ones.
54
55 @end itemize
56
57 @node Release 8_8_1
58 @section Release 8.8.1
59 @itemize
60
61 @item
62 Fixed @command{nncp-daemon} failing with unauthenticated connection and
63 enabled @option{-autotoss}.
64
65 @item
66 Updated dependencies.
67
68 @end itemize
69
70 @node Release 8_8_0
71 @section Release 8.8.0
72 @itemize
73
74 @item
75 Fixed buildability under Go 1.19.
76
77 @item
78 Minimal required Go version is 1.17.
79
80 @item
81 Updated dependencies.
82
83 @end itemize
84
85 @node Release 8_7_2
86 @section Release 8.7.2
87 @itemize
88
89 @item
90 More intuitive, clear and slightly more flexible behaviour of @command{nncp-rm}.
91
92 @item
93 @command{nncp-rm} also removes corresponding @file{hdr/} file for each
94 removed packet.
95
96 @end itemize
97
98 @node Release 8_7_1
99 @section Release 8.7.1
100 @itemize
101
102 @item
103 @command{nncp-xfer} now correctly checks for @file{seen/} files for
104 inbound packets.
105
106 @end itemize
107
108 @node Release 8_7_0
109 @section Release 8.7.0
110 @itemize
111
112 @item
113 @command{nncp-ack} does not acknowledge ACK-packets, preventing an
114 endless loop of ACKs.
115
116 @item
117 @command{nncp-ack} previously did not remove corresponding @file{hdr/} files.
118
119 @item
120 @command{nncp-rm} now takes list of packet from @code{stdin} when
121 @option{-pkt} option is used.
122
123 @item
124 @command{nncp-ack} now generates list of ACK packets it created, that
125 could be used as an input to @command{nncp-rm} to remove outbound ACK
126 packets.
127
128 @end itemize
129
130 @node Release 8_6_0
131 @section Release 8.6.0
132 @itemize
133
134 @item
135 @command{nncp-xfer} checks if locally copied packet's checksum differs
136 from the source's one.
137
138 @item
139 @command{nncp-call} has bad return code if its queues contain unfinished jobs.
140
141 @item
142 @command{nncp-ack} command appeared, that sends explicit packet receipt
143 acknowledgement (ACK packet). That acknowledgement deletes referenced
144 packet from the outbound spool.
145
146 @item
147 Ability to turn @code{fsync} operation off using @env{$NNCPNOSYNC=1}
148 environment variable.
149
150 @item
151 Added various indices in documentation, that should help searching in it.
152
153 @end itemize
154
155 @node Release 8_5_0
156 @section Release 8.5.0
157 @itemize
158
159 @item
160 Fixed @command{nncp-bundle} workability.
161
162 @item
163 Mistakenly @option{-mcd-wait} option was enabled by default in
164 @command{nncp-call}.
165
166 @item
167 Ability to override internal default timeout for online protocol through
168 @env{$NNCPDEADLINE} environment variable. Can be useful for very high
169 delay links.
170
171 @item
172 NNCP builds on OpenBSD.
173
174 @end itemize
175
176 @node Release 8_4_0
177 @section Release 8.4.0
178 @itemize
179
180 @item
181 Multicast related interface names (@code{mcd-listen} and @code{mcd-send}
182 configuration options) are now regular expressions. By default
183 @command{nncp-cfgnew} uncomments them now with @code{.*} interface name.
184
185 @item
186 @command{nncp-call} command has @option{-mcd-wait} option to wait for
187 multicast packet about node's address.
188
189 @item
190 @command{nncp-file} command skips everything that is neither regular
191 file nor directory during pax-archive creation.
192
193 @end itemize
194
195 @node Release 8_3_0
196 @section Release 8.3.0
197 @itemize
198
199 @item
200 Fixed building issues on 32-bit systems.
201
202 @end itemize
203
204 @node Release 8_2_0
205 @section Release 8.2.0
206 @itemize
207
208 @item
209 Yggdrasil uses pure-Go IPv6+TCP network stack, instead of naked μTP
210 transport protocol, making it able to work as an ordinary TCP server
211 inside overlay network.
212
213 @item
214 Yggdrasil's @code{prv;bind1,bind2;pub@dots{}}-like configuration strings are
215 replaced with URL-like ones (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
216
217 @item
218 Ability to pass multicast-related parameters to Yggdrasil configuration.
219
220 @item
221 @command{nncp-daemon} is able to listen on both TCP and Yggdrasil-driven
222 sockets simultaneously.
223
224 @item
225 @command{nncp-daemon}'s listening on peering endpoint socket is optional
226 -- you can be reached through the peers.
227
228 @end itemize
229
230 @node Release 8_1_0
231 @section Release 8.1.0
232 @itemize
233
234 @item
235 @command{nncp-cfgdir} does not require @code{self} section existence in
236 configuration file.
237
238 @item
239 Ability to act as Yggdrasil network client, using online protocol on top of it.
240
241 @end itemize
242
243 @node Release 8_0_2
244 @section Release 8.0.2
245 @itemize
246
247 @item
248 Fixed sending ability to areas.
249
250 @end itemize
251
252 @node Release 8_0_1
253 @section Release 8.0.1
254 @itemize
255
256 @item
257 Fixed incorrect @code{freq.chunked} value calculation. If it was missed,
258 then chunked transfer mode was forcefully turned on anyway.
259
260 @item
261 Fixed incorrect full file's size calculation in @file{.nncp.meta}.
262
263 @end itemize
264
265 @node Release 8_0_0
266 @section Release 8.0.0
267 @itemize
268
269 @item
270 @strong{Incompatible} encrypted packet format change: payload and pad
271 sizes are sent in-bound in the encrypted stream. That gives ability to
272 streamingly create encrypted packets, without knowing sizes in advance,
273 without creating temporary file or buffer data in memory.
274
275 @item
276 Proper encrypted packet padding verification is done now. This is not
277 critical issue, but previously neither padding value, nor its size were
278 authenticated, giving ability to iteratively strip trailing bytes and
279 determine payload's size by observing the reaction of the encrypted
280 packet processing.
281
282 @item
283 @command{nncp-exec} loses its @option{-use-tmp} option, because of
284 streaming-compatible encrypted packets format.
285
286 @item
287 @command{nncp-file} and @command{nncp-exec} commands have
288 @option{-maxsize} option, limiting maximal resulting encrypted packet's
289 maximal size (returning error if it is exceeded). Could be useful,
290 because no payload size could be known in advance.
291
292 @end itemize
293
294 @node Release 7_7_0
295 @section Release 7.7.0
296 @itemize
297
298 @item
299 Experimental @code{kqueue} and @code{inotify} based notifications
300 support about spool directory changes, for reducing their often reading
301 overhead.
302
303 @item
304 @file{.seen} and @file{.hdr} files moved to @file{seen/} and @file{hdr/}
305 subdirectories, for faster scanning of spool directories.
306 Current files migration required:
307
308 @example
309 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
310
311 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
312     cd $rx
313     mkdir -p seen
314     find . -type f -name "*.seen" | while read fn ; do
315         mv $fn seen/$@{fn%.seen@}
316     done
317 done
318
319 $ find $NNCPSPOOL -type d -name area | while read area ; do
320     find $area -type f -name "*.seen" | while read fn ; do
321         mv $fn $@{fn%.seen@}
322     done
323 done
324 @end example
325
326 @end itemize
327
328 @node Release 7_6_0
329 @section Release 7.6.0
330 @itemize
331
332 @item
333 Logging may be done to specified opened file descriptor
334 (@env{$NNCPLOG=FD:5} for example).
335 That is friendly to use under @command{daemontools}.
336
337 @item
338 Added additional checks of public keys existence in configuration file,
339 preventing some commands from failing.
340
341 @end itemize
342
343 @node Release 7_5_1
344 @section Release 7.5.1
345 @itemize
346
347 @item
348 NNCP builds on NetBSD.
349
350 @end itemize
351
352 @node Release 7_5_0
353 @section Release 7.5.0
354 @itemize
355
356 @item
357 @command{nncp-daemon} is compatible with UCSPI-TCP interface, so log
358 will contain remote side's address (when running under appropriate
359 utility). @option{-ucspi} option should be used instead of @option{-inetd}.
360
361 @item
362 @command{nncp-call} can be UCSPI-TCP client, using @option{-ucspi} option.
363
364 @item
365 Do not exit if some of MCD network interfaces can not be listened --
366 only warn about that.
367
368 @end itemize
369
370 @node Release 7_4_0
371 @section Release 7.4.0
372 @itemize
373
374 @item
375 Fixed simultaneous @command{nncp-daemon} and @command{nncp-caller} MCD work.
376
377 @end itemize
378
379 @node Release 7_3_2
380 @section Release 7.3.2
381 @itemize
382
383 @item
384 @command{hjson-cli} utility builds in vendor-mode now.
385
386 @end itemize
387
388 @node Release 7_3_1
389 @section Release 7.3.1
390 @itemize
391
392 @item
393 Fixed possibly left opened file descriptor in online commands.
394
395 @item
396 Severely decreased memory usage of MTH hashing.
397
398 @end itemize
399
400 @node Release 7_3_0
401 @section Release 7.3.0
402 @itemize
403
404 @item
405 Fixed some workability problems on 32-bit systems with big files.
406
407 @item
408 Ability to use directory with a bunch of files as a configuration.
409 @command{nncp-cfgdir} command appeared.
410
411 @end itemize
412
413 @node Release 7_2_1
414 @section Release 7.2.1
415 @itemize
416
417 @item
418 Small optimizations in online commands.
419
420 @end itemize
421
422 @node Release 7_2_0
423 @section Release 7.2.0
424 @itemize
425
426 @item
427 @command{nncp-trns} command appeared for manual transition packets creation.
428
429 @item
430 If destination node of transitional packet has non empty @option{via}
431 route, then do not ignore, but use it.
432
433 @item
434 Do not relay multicast packet to area message's originator, that
435 obviously has seen its own packet.
436
437 @item
438 Much less memory usage during MTH hashing when offset is zero: when
439 packet is not resumed, but for example checked with @command{nncp-check}
440 command.
441
442 @end itemize
443
444 @node Release 7_1_1
445 @section Release 7.1.1
446 @itemize
447
448 @item
449 Fixed failing directories @code{fsync} after @file{.seen} file creation.
450
451 @end itemize
452
453 @node Release 7_1_0
454 @section Release 7.1.0
455 @itemize
456
457 @item
458 Multicasting areas feature appeared. Implemented merely by an additional
459 plain packet type with @command{nncp-toss}, @command{nncp-file} and
460 @command{nncp-exec} commands modification.
461
462 @item
463 Fixed workability of @command{nncp-file} and @command{nncp-exec}
464 commands, that use temporary file (@code{stdin} and @option{-use-tmp}).
465
466 @item
467 Fixed disappearing bad return code in @command{nncp-exec} command.
468
469 @item
470 Fixed invalid @file{.hdr} generation when transitional packets are used.
471
472 @item
473 @option{-all} option appeared in @command{nncp-rm} command, applying to
474 all the nodes at once.
475
476 @item
477 @option{-cycle} option appeared in @command{nncp-check} command, looping
478 the check in infinite cycle.
479
480 @item
481 @command{nncp-rm} command can take node alias name.
482
483 @item
484 @command{nncp-pkt} can parse @file{.hdr} files.
485
486 @end itemize
487
488 @node Release 7_0_0
489 @section Release 7.0.0
490 @itemize
491
492 @item
493 Minimal required Go version is 1.13.
494
495 @item
496 Merkle Tree-based Hashing with BLAKE3 (MTH) is used instead of BLAKE2b.
497 Because of that, there are backward @strong{incompatible} changes of
498 encrypted files (everything laying in the spool directory) and
499 @file{.meta} files of chunked transfer.
500
501 Current implementation is far from being optimal: it lacks
502 parallelizable calculations and has higher memory consumption: nearly
503 512 KiB for each 1 GiB of file's data. Future performance and memory
504 size optimizations should not lead to packet's format change. But it is
505 still several times faster than BLAKE2b.
506
507 @item
508 Resumed online downloads, because of MTH, require reading only of the
509 preceding part of file, not the whole one as was before.
510
511 @item
512 @command{nncp-hash} utility appeared for calculating file's MTH hash.
513
514 @item
515 BLAKE2 KDF and XOF functions are replaced with BLAKE3 in encrypted
516 packets. Lowering number of used primitives. Also, its encrypted
517 packet's header is used as an associated data during encryption.
518
519 @item
520 MultiCast Discovery uses
521 @verb{|ff02::4e4e:4350|} address instead of @verb{|ff02::1|}.
522
523 @item
524 @command{nncp-cfgenc} mistakenly asked passphrase three times during encryption.
525
526 @item
527 @command{nncp-stat} reports about partly downloaded packets.
528
529 @item
530 Updated dependencies.
531
532 @end itemize
533
534 @node Release 6_6_0
535 @section Release 6.6.0
536 @itemize
537
538 @item
539 @command{nncp-daemon}, @command{nncp-call} and @command{nncp-caller}
540 commands wait for all background checksummers completion after
541 connection is finished.
542
543 @item
544 Added possibility of address determining through multicast announcement
545 in local area network, so called MCD (MultiCast Discovery).
546
547 @end itemize
548
549 @node Release 6_5_0
550 @section Release 6.5.0
551 @itemize
552
553 @item
554 Fixed segfault in @command{nncp-daemon} when SP handshake did not succeed.
555
556 @item
557 Fixed possible bad return code ignoring in automatic tosser.
558
559 @item
560 Fixed race during file descriptors closing when online protocol call is
561 finished, that could lead to write error of received packet fragment.
562
563 @item
564 Kill all packet transmission progress bars in @command{nncp-daemon},
565 @command{nncp-call} and @command{nncp-caller} when call is finished.
566
567 @end itemize
568
569 @node Release 6_4_0
570 @section Release 6.4.0
571 @itemize
572
573 @item
574 Fixed possible race in online protocol, that lead to panic.
575
576 @end itemize
577
578 @node Release 6_3_0
579 @section Release 6.3.0
580 @itemize
581
582 @item
583 Fixed possible panic while showing progress during online protocol.
584
585 @end itemize
586
587 @node Release 6_2_1
588 @section Release 6.2.1
589 @itemize
590
591 @item
592 Three places in logs contained excess @code{%s}.
593
594 @end itemize
595
596 @node Release 6_2_0
597 @section Release 6.2.0
598 @itemize
599
600 @item
601 Returned @command{nncp-caller}'s @option{-autotoss*} options workability.
602
603 @item
604 Yet another logging refactoring and simplification.
605 Should be no visible differences to the end user.
606
607 @end itemize
608
609 @node Release 6_1_0
610 @section Release 6.1.0
611 @itemize
612
613 @item
614 Optimization: most commands do not keep opened file descriptors now.
615 Previously you can exceed maximal number of opened files if you have got
616 many packets in the spool directory.
617
618 @item
619 Optimization: do not close file descriptor of the file we download
620 online. Previously each chunk lead to expensive open/close calls.
621
622 @item
623 Online downloaded files are saved with @file{.nock} (non-checksummed)
624 suffix, waiting either for @command{nncp-check}, or online daemons to
625 perform integrity check.
626
627 @item
628 Optimization: files, that are not resumed, are checksummed immediately
629 during the online download, skipping @file{.nock}-intermediate step.
630
631 @item
632 Ability to store encrypted packet's header in @file{.hdr} file, close to
633 the packet itself. That can greatly increase performance of packets
634 listing on filesystems with big block's size.
635
636 @end itemize
637
638 @node Release 6_0_0
639 @section Release 6.0.0
640 @itemize
641
642 @item
643 Log uses human readable and easy machine parseable
644 @url{https://www.gnu.org/software/recutils/, recfile} format for the
645 records, instead of structured RFC 3339 lines. Old logs are not readable
646 by @command{nncp-log} anymore.
647
648 @item
649 @option{-autotoss*} option workability with @command{nncp-daemon}'s
650 @option{-inetd} mode.
651
652 @item
653 Call's @option{when-tx-exists} allows to make a call only when outbound
654 packets exists. Combined with seconds-aware cron expression that can be
655 used as some kind of auto dialler.
656
657 @item
658 @command{nncp-cronexpr} command allows you to check validity and
659 expectations of specified cron expression.
660
661 @end itemize
662
663 @node Release 5_6_0
664 @section Release 5.6.0
665 @itemize
666
667 @item
668 @option{-autotoss*} option runs tosser not after the call, but every
669 second while it is active.
670
671 @item
672 @option{autotoss}, @option{autotoss-doseen},
673 @option{autotoss-nofile}, @option{autotoss-nofreq},
674 @option{autotoss-noexec}, @option{autotoss-notrns} options available in
675 @option{calls} configuration section. You can configure per-call
676 automatic tosser options.
677
678 @item
679 Use vendoring, instead of @env{$GOPATH} overriding during tarball
680 installation, because current minimal Go's version is 1.12 and it
681 supports modules.
682
683 @end itemize
684
685 @node Release 5_5_1
686 @section Release 5.5.1
687 @itemize
688
689 @item
690 Respect for @env{$BINDIR}, @env{$INFODIR} and @env{$DOCDIR} environment
691 variables in @file{config} during installation.
692
693 @end itemize
694
695 @node Release 5_5_0
696 @section Release 5.5.0
697 @itemize
698
699 @item
700 Bugfixes in @command{nncp-call(er)}/@command{nncp-daemon},
701 @command{nncp-bundle} and @command{nncp-stat}.
702
703 @item
704 @command{nncp-rm} has @option{-dryrun} and @option{-older} options now.
705
706 @item
707 @command{nncp-exec} has @option{-use-tmp} and @option{-nocompress}
708 options now. Uncompressed packets are not compatible with previous NNCP
709 versions.
710
711 @item
712 @command{nncp-call}, @command{nncp-caller} and @command{nncp-daemon} commands
713 have @option{-autotoss*} options for running tosser after call is ended.
714
715 @item
716 Updated dependencies. Minimal required Go version is 1.12.
717
718 @end itemize
719
720 @node Release 5_4_1
721 @section Release 5.4.1
722 @itemize
723
724 @item
725 Fixed @code{SENDMAIL} variable usage during the build.
726
727 @end itemize
728
729 @node Release 5_4_0
730 @section Release 5.4.0
731 @itemize
732
733 @item
734 Updated dependencies.
735
736 @item
737 Build system is moved from Makefiles to @url{http://cr.yp.to/redo.html, redo}.
738 This should not influence package maintainers, because minimal @command{redo}
739 implementation is included in tarball.
740
741 @end itemize
742
743 @node Release 5_3_3
744 @section Release 5.3.3
745 @itemize
746
747 @item
748 More various error checks.
749
750 @item
751 Updated dependencies.
752
753 @end itemize
754
755 @node Release 5_3_2
756 @section Release 5.3.2
757 @itemize
758
759 @item
760 Fixed incorrect logic of @option{onlinedeadline} timeout, where
761 connection won't take into account incoming packets events and will
762 forcefully disconnect.
763
764 @end itemize
765
766 @node Release 5_3_1
767 @section Release 5.3.1
768 @itemize
769
770 @item
771 Fixed @option{onlinedeadline} workability with call addresses that use
772 external commands (@verb{#"|somecmd"#}).
773
774 @item
775 @command{nncp-stat} has @option{-pkt} option displaying information
776 about each packet in the spool.
777
778 @end itemize
779
780 @node Release 5_3_0
781 @section Release 5.3.0
782 @itemize
783
784 @item
785 Progress messages contain prefix, describing the running action.
786
787 @item
788 Fixed not occurring handshake messages padding.
789
790 @item
791 Finish all SP protocol related goroutines, less memory leak.
792
793 @item
794 SP protocol generates less socket write calls, thus generating less TCP
795 packets.
796
797 @item
798 Check @option{onlinedeadline} and @option{maxonlinetime} options every
799 second, independently from socket reads (up to 10 seconds).
800
801 @item
802 Once per minute, if no other traffic exists, PING packets are sent in
803 SP-connection. That allows faster determining of connection unworkability.
804
805 @item
806 @command{nncp-toss} uses lock-file to prevent simultaneous tossing.
807
808 @end itemize
809
810 @node Release 5_2_1
811 @section Release 5.2.1
812 @itemize
813
814 @item
815 Fixed SP protocol error handling, sometimes causing program panic.
816
817 @end itemize
818
819 @node Release 5_2_0
820 @section Release 5.2.0
821 @itemize
822
823 @item
824 Most commands by default show oneline operations progress.
825 @option{-progress}, @option{-noprogress} command line options,
826 @option{noprogress} configuration file option appeared.
827
828 @item
829 Fixed incorrect @command{nncp-check} command return code, that returned
830 bad code when everything is good.
831
832 @item
833 Free disk space check during @command{nncp-bundle -rx} call.
834
835 @end itemize
836
837 @node Release 5_1_2
838 @section Release 5.1.2
839 @itemize
840
841 @item
842 @strong{Critical} vulnerability: remote peers authentication could lead
843 to incorrect identification of remote side, allowing foreign encrypted
844 packets downloading.
845
846 @item
847 Bugfix: private and public Noise keys were swapped in newly created
848 configuration files, that lead to inability to authenticate online peers.
849
850 @item
851 Explicit directories @code{fsync}-ing for guaranteed files renaming.
852
853 @end itemize
854
855 @node Release 5_1_1
856 @section Release 5.1.1
857 @itemize
858
859 @item
860 Fixed workability of @command{nncp-file} with @option{-chunked 0} option.
861
862 @end itemize
863
864 @node Release 5_1_0
865 @section Release 5.1.0
866 @itemize
867
868 @item
869 @command{nncp-file} can send directories, automatically creating pax
870 archive on the fly.
871
872 @item
873 Free disk space is checked during outbound packets creation.
874
875 @item
876 @option{freq}, @option{freqminsize}, @option{freqchunked} configuration
877 file options replaced with the structure:
878 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
879
880 @item
881 Added @option{freq.maxsize} configuration file option, forbidding of
882 freq sending larger than specified size.
883
884 @item
885 Ability to notify about successfully executed commands (exec) with
886 @option{notify.exec} configuration file option.
887
888 @end itemize
889
890 @node Release 5_0_0
891 @section Release 5.0.0
892 @itemize
893
894 @item
895 @strong{Incompatible} configuration file format change: YAML is
896 replaced with Hjson, due to its simplicity, without noticeable lack
897 of either functionality or convenience.
898
899 @item
900 @strong{Incompatible} plain packet format changes. Older versions are
901 not supported. @code{zlib} compression is replaced with
902 @code{Zstandard}, due to its speed and efficiency, despite library
903 version is not mature enough.
904
905 @item
906 Ability to call remote nodes via pipe call of external command, not only
907 through TCP.
908
909 @item
910 @command{nncp-cfgnew} generates configuration file with many
911 comments. @option{-nocomments} option can be used for an old
912 behaviour.
913
914 @item
915 Duplicate filenames have @file{.CTR} suffix, instead of @file{CTR}, to
916 avoid possible collisions with @file{.nncp.chunkCTR}.
917
918 @item
919 Ability to override process umask through configuration file option.
920
921 @item
922 Files and directories are created with 666/777 permissions by default,
923 allowing control with @command{umask}.
924
925 @item
926 Updated dependencies.
927
928 @item
929 Full usage of go modules for dependencies management
930 (@code{go.cypherpunks.ru/nncp/v5} namespace is used).
931
932 @item
933 Forbid any later GNU GPL version autousage
934 (project's licence now is GNU GPLv3-only).
935
936 @end itemize
937
938 @node Release 4_1
939 @section Release 4.1
940 @itemize
941 @item Workability on GNU/Linux systems and Go 1.10 is fixed.
942 @end itemize
943
944 @node Release 4_0
945 @section Release 4.0
946 @itemize
947
948 @item
949 @strong{Incompatible} encrypted and eblob packet format change: AEAD
950 encryption mode with 128 KiB blocks is used now, because previously
951 @command{nncp-toss} did not verify encrypted packet's MAC before feeding
952 decrypted data to external command. Older versions are not supported.
953
954 @item
955 Available free space checking before copying in @command{nncp-xfer},
956 @command{nncp-daemon}, @command{nncp-call(er)}.
957
958 @item
959 @command{nncp-call} has ability only to list packets on remote node,
960 without their transmission.
961
962 @item
963 @command{nncp-call} has ability to transfer only specified packets.
964
965 @item
966 Workability of @option{xxrate} preference in @option{calls}
967 configuration file section.
968
969 @item
970 Dependant libraries are updated.
971
972 @item
973 Minor bugfixes.
974
975 @item
976 Begin using of @code{go.mod} subsystem.
977
978 @end itemize
979
980 @node Release 3_4
981 @section Release 3.4
982 @itemize
983 @item @command{nncp-daemon} can be run as @command{inetd}-service.
984 @end itemize
985
986 @node Release 3_3
987 @section Release 3.3
988 @itemize
989
990 @item
991 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller} check
992 if @file{.seen} exists and treat it like file was already downloaded.
993 Possibly it was transferred out-of-bound and remote side needs to be
994 notifier about that.
995
996 @item
997 If higher priority packet is spooled, then @command{nncp-daemon} will
998 queue its sending first, interrupting lower priority transmissions.
999
1000 @item
1001 Simple packet rate limiter added to online-related tools
1002 (@command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}).
1003
1004 @item
1005 Ability to specify niceness with symbolic notation:
1006 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, etc.
1007
1008 @item
1009 Changed default niceness levels:
1010 for @command{nncp-exec} from 64 to 96,
1011 for @command{nncp-freq} from 64 to 160,
1012 for @command{nncp-file} from 196 to 224.
1013
1014 @end itemize
1015
1016 @node Release 3_2
1017 @section Release 3.2
1018 @itemize
1019 @item
1020 @strong{Incompatible} @emph{bundle} archive format changes and
1021 @command{nncp-bundle} workability with Go 1.10+. Bundles must be
1022 valid tar archives, but Go 1.9 made them invalid because of long paths
1023 inside. NNCP accidentally was dependant on that bug. Explicit adding of
1024 @file{NNCP/} directory in archive restores workability with valid tar
1025 archives.
1026 @end itemize
1027
1028 @node Release 3_1
1029 @section Release 3.1
1030 @itemize
1031 @item
1032 Ability to disable relaying at all using @verb{|-via -|} command line option.
1033 @end itemize
1034
1035 @node Release 3_0
1036 @section Release 3.0
1037 @itemize
1038
1039 @item
1040 @strong{Incompatible} plain packet format changes. Older versions are
1041 not supported.
1042
1043 @item
1044 Ability to queue remote command execution, by configuring @option{exec}
1045 option in configuration file and using @command{nncp-exec} command:
1046     @itemize
1047     @item
1048     @command{nncp-mail} command is replaced with more flexible
1049     @command{nncp-exec}. Instead of @verb{|nncp-mail NODE RECIPIENT|}
1050     you must use @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1051     @item
1052     @option{sendmail} configuration file option is replaced with
1053     @option{exec}. @code{sendmail: [@dots{}]} must be replaced with
1054     @code{exec: sendmail: [@dots{}]}.
1055     @end itemize
1056
1057 @item
1058 Ability to override @option{via} configuration option for destination
1059 node via @option{-via} command line option for following commands:
1060 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1061
1062 @item
1063 Chunked files, having size less than specified chunk size, will be sent
1064 as an ordinary single file.
1065
1066 @item
1067 Exec commands are invoked with additional @env{$NNCP_NICE} and
1068 @env{$NNCP_SELF} environment variables.
1069
1070 @item
1071 Files, that are sent as a reply to freq, have niceness level taken from
1072 the freq packet. You can set desired niceness during @command{nncp-freq}
1073 invocation using @option{-replynice} option.
1074
1075 @item
1076 @command{nncp-toss} command can ignore specified packet types during
1077 processing: @option{-nofile}, @option{-nofreq}, @option{-noexec},
1078 @option{-notrns}.
1079
1080 @item
1081 @command{nncp-file} command uses
1082 @option{FreqMinSize}/@option{FreqChunked} configuration file options
1083 for @option{-minsize}/@option{-chunked} by default. You can turn this
1084 off by specifying zero value.
1085
1086 @end itemize
1087
1088 @node Release 2_0
1089 @section Release 2.0
1090 @itemize
1091
1092 @item
1093 @strong{Incompatible} encrypted/eblob packet format changes. Older
1094 versions are not supported.
1095
1096 @item
1097 Twofish encryption algorithm is replaced with ChaCha20. It is much more
1098 faster. One cryptographic primitive less.
1099
1100 @item
1101 HKDF-BLAKE2b-256 KDF algorithm is replaced with BLAKE2Xb XOF. Yet
1102 another cryptographic primitive less (assuming that BLAKE2X is nearly
1103 identical to BLAKE2).
1104
1105 @end itemize
1106
1107 @node Release 1_0
1108 @section Release 1.0
1109 @itemize
1110
1111 @item
1112 @strong{Incompatible} encrypted packet format changes. Older versions
1113 are not supported.
1114
1115 @item
1116 @command{nncp-bundle} command can either create stream of encrypted
1117 packets, or digest it. It is useful when dealing with
1118 @code{stdin}/@code{stdout} based transmission methods (like writing to
1119 CD-ROM without intermediate prepared ISO image and working with tape
1120 drives).
1121
1122 @item
1123 @command{nncp-toss} is able to create @file{.seen} files preventing
1124 duplicate packets receiving.
1125
1126 @item
1127 Single background checksum verifier worker is allowed in
1128 @command{nncp-call}. This is helpful when thousands of small inbound
1129 packets could create many goroutines.
1130
1131 @item
1132 Ability to override path to spool directory and logfile through either
1133 command line argument, or environment variable.
1134
1135 @item
1136 @command{nncp-rm} is able to delete outbound/inbound, @file{.seen},
1137 @file{.part}, @file{.lock} and temporary files.
1138
1139 @end itemize
1140
1141 @node Release 0_12
1142 @section Release 0.12
1143 @itemize
1144 @item Sendmail command is called with @env{$NNCP_SENDER} environment variable.
1145 @end itemize
1146
1147 @node Release 0_11
1148 @section Release 0.11
1149 @itemize
1150 @item @command{nncp-stat}'s command output is sorted by node name.
1151 @end itemize
1152
1153 @node Release 0_10
1154 @section Release 0.10
1155 @itemize
1156 @item
1157 @command{nncp-freq}'s @file{DST} argument is optional now. Last
1158 @file{SRC} path's element will be used by default.
1159 @end itemize
1160
1161 @node Release 0_9
1162 @section Release 0.9
1163 @itemize
1164 @item
1165 Fix @option{-rx}/@option{-tx} arguments processing in
1166 @command{nncp-call} command. They were ignored.
1167 @end itemize
1168
1169 @node Release 0_8
1170 @section Release 0.8
1171 @itemize
1172 @item
1173 Little bugfix in @command{nncp-file} command, where @option{-minsize}
1174 option for unchunked transfer was not in KiBs, but in bytes.
1175 @end itemize
1176
1177 @node Release 0_7
1178 @section Release 0.7
1179 @itemize
1180
1181 @item
1182 Ability to feed @command{nncp-file} from @code{stdin}, that uses an
1183 encrypted temporary file for that.
1184
1185 @item
1186 Chunked files transmission appeared with corresponding
1187 @command{nncp-reass} command and @option{freqchunked} configuration file
1188 entry. Useful for transferring big files over small storage devices.
1189
1190 @item
1191 @option{freqminsize} configuration file option, analogue to
1192 @option{-minsize} one.
1193
1194 @item
1195 @command{nncp-xfer}'s @option{-force} option is renamed to
1196 @option{-mkdir} for clarity.
1197
1198 @item
1199 @option{-minsize} option is specified in KiBs, not bytes, for
1200 convenience.
1201
1202 @item
1203 @command{nncp-newcfg} command is renamed to @command{nncp-cfgnew},
1204 and @command{nncp-mincfg} to @command{nncp-cfgmin} -- now they have
1205 common prefix and are grouped together for convenience.
1206
1207 @item
1208 @command{nncp-cfgenc} command appeared, allowing configuration file
1209 encryption/decryption, for keeping it safe without any either OpenPGP or
1210 similar tools usage.
1211
1212 @item
1213 Cryptographic libraries (dependencies) are updated.
1214
1215 @end itemize
1216
1217 @node Release 0_6
1218 @section Release 0.6
1219 @itemize
1220 @item Small @command{nncp-rm} command appeared.
1221 @item Cryptographic libraries (dependencies) are updated.
1222 @end itemize
1223
1224 @node Release 0_5
1225 @section Release 0.5
1226 @itemize
1227 @item
1228 Trivial small fix in default niceness level of @command{nncp-file}
1229 and @command{nncp-freq} commands.
1230 @end itemize
1231
1232 @node Release 0_4
1233 @section Release 0.4
1234 @itemize
1235
1236 @item
1237 Small fix in @command{nncp-call}, @command{nncp-caller},
1238 @command{nncp-daemon}: they can segmentation fail sometimes (no data is
1239 lost).
1240
1241 @item
1242 @command{nncp-newnode} renamed to @command{nncp-newcfg} -- it is shorter
1243 and more convenient to use.
1244
1245 @item
1246 @command{nncp-mincfg} command appeared: helper allowing to create
1247 minimalistic stripped down configuration file without private keys, that
1248 is useful during @command{nncp-xfer} usage.
1249
1250 @end itemize
1251
1252 @node Release 0_3
1253 @section Release 0.3
1254 @itemize
1255 @item Fixed compatibility with Go 1.6.
1256 @end itemize
1257
1258 @node Release 0_2
1259 @section Release 0.2
1260 @itemize
1261
1262 @item
1263 @strong{Incompatible} packet's format change (magic number is changed
1264 too): size field is encrypted and is not send in plaintext anymore.
1265
1266 @item
1267 @option{-minsize} option gives ability to automatically pad outgoing
1268 packets to specified minimal size.
1269
1270 @item
1271 @command{nncp-daemon} and @command{nncp-call}/@command{nncp-caller}
1272 always check new @emph{tx} packets appearance in the background while
1273 connected. Remote side is immediately notified.
1274
1275 @item
1276 @option{-onlinedeadline} option gives ability to configure timeout of
1277 inactivity of online connection, when it could be disconnected. It could
1278 be used to keep connection alive for a long time.
1279
1280 @item
1281 @option{-maxonlinetime} option gives ability to set maximal allowable
1282 online connection aliveness time.
1283
1284 @item
1285 @command{nncp-caller} command appeared: cron-ed TCP daemon caller.
1286
1287 @item
1288 @command{nncp-pkt} command can decompress the data.
1289
1290 @end itemize