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