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