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