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