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