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