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