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