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