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