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