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