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