Add missing attribution for 1.1pre10 to the NEWS file.
[tinc] / NEWS
1 Version 1.1pre10             February 7 2014
2
3  * Added a benchmark tool (sptps_speed) for the new protocol.
4
5  * Fixed a crash when using Name = $HOST while $HOST is not set.
6
7  * Use AES-256-GCM for the new protocol.
8
9  * Updated support for Solaris.
10
11  * Allow running tincd without a private ECDSA key present when
12    ExperimentalProtocol is not explicitly set.
13
14  * Enable various compiler hardening flags by default.
15
16  * Added support for a "conf.d" configuration directory.
17
18  * Fix tinc-gui on Windows, also allowing it to connect to a 32-bits tincd when
19    tinc-gui is run in a 64-bits Python environment.
20
21  * Added a "ListenAddress" option, which like BindToAddress adds more listening
22    address/ports, but doesn't bind to them for outgoing sockets.
23
24  * Make invitations work better when the "invite" and "join" commands are not
25    run interactively.
26
27  * When creating meta-connections to a node for which no Address statement is
28    specified, try to use addresses learned from other nodes.
29
30 Thanks to Dennis Joachimsthaler and Florent Clairambault for their contribution
31 to this version of tinc.
32
33 Version 1.1pre9              September 8 2013
34
35  * The UNIX socket is now created before tinc-up is called.
36
37  * Windows users can now use any extension that is in %PATHEXT% for scripts,
38    not only .bat.
39
40  * Outgoing sockets are bound to the address of the listening sockets again,
41    when there is no ambiguity.
42
43  * Added invitation-created and invitation-accepted scripts.
44
45  * Invited nodes now learn of the Mode and Broadcast settings of the VPN.
46
47  * Joining a VPN with an invitation now also works on Windows.
48
49  * The port number tincd is listening on is now always included in the
50    invitation URL.
51
52  * A running tincd is now correctly informed when a new invitation has been
53    generated.
54
55  * Several bug fixes for the new protocol.
56
57  * Added a test suite.
58
59 Thanks to Etienne Dechamps for his contribution to this version of tinc.
60
61 Version 1.1pre8              August 13 2013
62
63  * ExperimentalProtocol is now enabled by default.
64
65  * Added an invitation protocol that makes it easy to invite new nodes.
66
67  * Added the LocalDiscoveryAddress option to change the broadcast address used
68    to find local nodes.
69
70  * Limit the rate of incoming meta-connections.
71
72  * Many small bug fixes and code cleanups.
73
74 Thanks to Etienne Dechamps and Sven-Haegar Koch for their contributions to this
75 version of tinc.
76
77 Version 1.1pre7              April 22 2013
78
79  * Fixed large latencies on Windows.
80
81  * Renamed the tincctl tool to tinc.
82
83  * Simplified changing the configuration using the tinc tool.
84
85  * Added a full description of the ExperimentalProtocol to the manual.
86
87  * Drop packets forwarded via TCP if they are too big (CVE-2013-1428).
88
89 Thanks to Martin Schobert for auditing tinc and reporting the vulnerability.
90
91 Version 1.1pre6              February 20 2013
92
93  * Fixed tincd exitting immediately on Windows.
94
95  * Detect PMTU increases.
96
97  * Fixed crashes when using a SOCKS5 proxy.
98
99  * Fixed control connection when using a proxy.
100
101 Version 1.1pre5              January 20 2013
102
103  * Fixed long delays and possible hangs on Windows.
104
105  * Fixed support for the tunemu device on iOS, the UML and VDE devices.
106
107  * Small improvements to the documentation and error messages.
108
109  * Fixed broadcast packets not reaching the whole VPN.
110
111  * Tincctl now connects via a UNIX socket to the tincd on platforms that
112    support this.
113
114  * The PriorityInheritance option now also works in switch mode.
115
116 Version 1.1pre4              December  5 2012
117
118  * Added the "AutoConnect" option which will let tinc automatically select
119    which nodes to connect to.
120
121  * Improved performance of VLAN-tagged IP traffic inside the VPN.
122
123  * Ensured LocalDiscovery works with multiple BindToAddress statements and/or
124    IPv6-only LANs.
125
126  * Dropped dependency on libevent.
127
128  * Fixed Windows version not reading packets from the TAP adapter.
129
130 Version 1.1pre3              October 14 2012
131
132  * New experimental protocol:
133    * Uses 521 bit ECDSA keys for authentication.
134    * Uses AES-256-CTR and HMAC-SHA256.
135    * Always provides perfect forward secrecy.
136    * Used for both meta-connections and VPN packets.
137    * VPN packets are encrypted end-to-end.
138
139  * Many improvements to tincctl:
140    * "config" command shows/adds/changes configuration variables.
141    * "export" and "import" commands help exchange configuration files.
142    * "init" command sets up initial configuration files.
143    * "info" command shows details about a node, subnet or address.
144    * "log" command shows live log messages.
145    * Without a command it acts as a shell, with history and TAB completion.
146    * Improved starting/stopping tincd.
147    * Improved graph output.
148
149  * When trying to directly send UDP packets to a node for which multiple
150    addresses are known, all of them are tried.
151
152  * Many small fixes, code cleanups and documentation updates.
153
154 Version 1.1pre2              July 17 2011
155
156  * .cookie files are renamed to .pid files, which are compatible with 1.0.x.
157
158  * Experimental protocol enhancements that can be enabled with the option
159    ExperimentalProtocol = yes:
160
161    * Ephemeral ECDH key exchange will be used for both the meta protocol and
162      UDP session keys.
163    * Key exchanges are signed with ECDSA.
164    * ECDSA public keys are automatically exchanged after RSA authentication if
165      nodes do not know each other's ECDSA public key yet.
166
167 Version 1.1pre1              June 25 2011
168
169  * Control interface allows control of a running tinc daemon. Used by:
170    * tincctl, a commandline utility
171    * tinc-gui, a preliminary GUI implemented in Python/wxWidgets
172
173  * Code cleanups and reorganization.
174
175  * Repleacable cryptography backend, currently supports OpenSSL and libgcrypt.
176
177  * Use libevent to handle I/O events and timeouts.
178
179  * Use splay trees instead of AVL trees to manage internal datastructures.
180
181  Thanks to Scott Lamb and Sven-Haegar Koch for their contributions to this
182  version of tinc.
183
184 Version 1.0.22               August 13 2013
185
186  * Fixed the combination of Mode = router and DeviceType = tap.
187
188  * The $NAME variable is now set in subnet-up/down scripts.
189
190  * Tinc now gives an error when unknown options are given on the command line.
191
192  * Tinc now correctly handles a space between a short command line option and
193    an optional argument.
194
195 Thanks to Etienne Dechamps for his contribution to this version of tinc.
196
197 Version 1.0.21               April 22 2013
198
199  * Drop packets forwarded via TCP if they are too big (CVE-2013-1428).
200
201 Thanks to Martin Schobert for auditing tinc and reporting this vulnerability.
202
203 Version 1.0.20               March 03 2013
204
205  * Use /dev/tap0 by default on FreeBSD and NetBSD when using switch mode.
206
207  * Minor improvements and clarifications in the documentation.
208
209  * Allow tinc to be cross-compiled with Android's NDK.
210
211  * The discovered PMTU is now also applied to VLAN tagged traffic.
212
213  * The LocalDiscovery option now makes use of all addresses tinc is bound to.
214
215  * Fixed support for tunemu on iOS devices.
216
217  * The PriorityInheritance option now also works with switch mode.
218
219  * Fixed tinc crashing when using a SOCKS5 proxy.
220
221 Thanks to Mesar Hameed, Vilbrekin and Martin Schürrer for their contributions
222 to this version of tinc.
223
224 Version 1.0.19               June 25 2012
225
226  * Allow :: notation in IPv6 Subnets.
227
228  * Add support for systemd style socket activation.
229
230  * Allow environment variables to be used for the Name option.
231
232  * Add basic support for SOCKS proxies, HTTP proxies, and proxying through an
233    external command.
234
235 Version 1.0.18               March 25 2012
236
237  * Fixed IPv6 in switch mode by turning off DecrementTTL by default.
238
239  * Allow a port number to be specified in BindToAddress, which also allows tinc
240    to listen on multiple ports.
241
242  * Add support for multicast communication with UML/QEMU/KVM.
243
244 Version 1.0.17               March 10 2012
245
246  * The DeviceType option can now be used to select dummy, raw socket, UML and
247    VDE devices without needing to recompile tinc.
248
249  * Allow multiple BindToAddress statements.
250
251  * Decrement TTL value of IPv4 and IPv6 packets.
252
253  * Add LocalDiscovery option allowing tinc to detect peers that are behind the
254    same NAT.
255
256  * Accept Subnets passed with the -o option when StrictSubnets = yes.
257
258  * Disabling old RSA keys when generating new ones now also works properly on
259    Windows.
260
261 Version 1.0.16               July 23 2011
262
263  * Fixed a performance issue with TCP communication under Windows.
264
265  * Fixed code that, during network outages, would cause tinc to exit when it
266    thought two nodes with identical Names were on the VPN.
267
268 Version 1.0.15               June 24 2011
269
270  * Improved logging to file.
271
272  * Reduced amount of process wakeups on platforms which support pselect().
273
274  * Fixed ProcessPriority option under Windows.
275
276   Thanks to Loïc Grenié for his contribution to this version of tinc.
277
278 Version 1.0.14               May  8 2011
279
280  * Fixed reading configuration files that do not end with a newline. Again.
281
282  * Allow arbitrary configuration options being specified on the command line.
283
284  * Allow all options in both tinc.conf and the local host config file.
285
286  * Configurable replay window, UDP send and receive buffers for performance tuning.
287
288  * Try harder to get UDP communication back after falling back to TCP.
289
290  * Initial support for attaching tinc to a VDE switch.
291
292  * DragonFly BSD support.
293
294  * Allow linking with OpenSSL 1.0.0.
295
296  Thanks to Brandon Black, Julien Muchembled, Michael Tokarev, Rumko and Timothy
297  Redaelli for their contributions to this version of tinc.
298
299 Version 1.0.13               Apr 11 2010
300
301  * Allow building tinc without LZO and/or Zlib.
302
303  * Clamp MSS of TCP packets in both directions.
304
305  * Experimental StrictSubnets, Forwarding and DirectOnly options,
306    giving more control over information and packets received from/sent to other
307    nodes.
308
309  * Ensure tinc never sends symbolic names for ports over the wire.
310
311 Version 1.0.12               Feb  3 2010
312
313  * Really allow fast roaming of hosts to other nodes in a switched VPN.
314
315  * Fixes missing or incorrect environment variables when calling host-up/down
316    and subnet-up/down scripts in some cases.
317
318  * Allow port to be specified in Address statements.
319
320  * Clamp MSS of TCP packets to the discovered path MTU.
321
322  * Let two nodes behind NAT learn each others current UDP address and port via
323    a third node, potentially allowing direct communications in a similar way to
324    STUN.
325
326 Version 1.0.11               Nov  1 2009
327
328  * Fixed potential crash when the HUP signal is sent.
329
330  * Fixes handling of weighted Subnets in switch and hub modes, preventing
331    unnecessary broadcasts.
332
333  * Works around a MinGW bug that caused packets to Windows nodes to always be
334    sent via TCP.
335
336  * Improvements to the PMTU discovery code, especially on Windows.
337
338  * Use UDP again in certain cases where 1.0.10 was too conservative and fell
339    back to TCP unnecessarily.
340
341  * Allow fast roaming of hosts to other nodes in a switched VPN.
342
343 Version 1.0.10               Oct 18 2009
344
345  * Fixed potential crashes during shutdown and (in rare conditions) when other
346    nodes disconnected from the VPN.
347
348  * Improved NAT handling: tinc now copes with mangled port numbers, and will
349    automatically fall back to TCP if direct UDP connection between nodes is not
350    possible. The TCPOnly option should not have to be used anymore.
351
352  * Allow configuration files with CRLF line endings to be read on UNIX.
353
354  * Disable old RSA keys when generating new ones, and raise the default size of
355    new RSA keys to 2048 bits.
356
357  * Many fixes in the path MTU discovery code, especially when Compression is
358    being used.
359
360  * Tinc can now drop privileges and/or chroot itself.
361
362  * The TunnelServer code now just ignores information from clients instead of
363    disconnecting them.
364
365  * Improved performance on Windows by using the new ProcessPriority option and
366    by making the handling of packets received from the TAP-Win32 adapter more
367    efficient.
368
369  * Code cleanups: tinc now follows the C99 standard, copyright headers have
370    been updated to include patch authors, checkpoint tracing and localisation
371    features have been removed.
372
373  * Support for (jailbroken) iPhone and iPod Touch has been added.
374
375  Thanks to Florian Forster, Grzegorz Dymarek and especially Michael Tokarev for
376  their contributions to this version of tinc.
377
378 Version 1.0.9                Dec 26 2008
379
380  * Fixed tinc as a service under Windows 2003.
381
382  * Fixed reading configuration files that do not end with a newline.
383
384  * Fixed crashes in situations where hostnames could not be resolved or hosts
385    would disconnect at the same time as session keys were exchanged.
386
387  * Improved default settings of tun and tap devices on BSD platforms.
388
389  * Make IPv6 sockets bind only to IPv6 on Linux.
390
391  * Enable path MTU discovery by default.
392
393  * Fixed a memory leak that occured when connections were closed.
394
395  Thanks to Max Rijevski for his contributions to this version of tinc.
396
397 Version 1.0.8                May 16 2007
398
399  * Fixed some memory and resource leaks.
400
401  * Made network sockets non-blocking under Windows.
402
403  Thanks to Scott Lamb and "dnk" for their contributions to this version of tinc.
404
405 Version 1.0.7                Jan  5 2007
406
407  * Fixed a bug that caused slow network speeds on Windows.
408
409  * Fixed a bug that caused tinc unable to write packets to the tun device on
410    OpenBSD.
411
412 Version 1.0.6                Dec 18 2006
413
414  * More flexible detection of the LZO libraries when compiling.
415
416  * Fixed a bug where broadcasts in switch and hub modes sometimes would not
417    work anymore when part of the VPN had become disconnected from the rest.
418
419 Version 1.0.5                Nov 14 2006
420
421  * Lots of small fixes.
422
423  * Broadcast packets no longer grow in size with each hop. This should
424    fix switch mode (again).
425
426  * Generic host-up and host-down scripts.
427
428  * Optionally dump graph in graphviz format to a file or a script.
429
430  * Support LZO 2.0 and later.
431
432  Thanks to Scott Lamb for his contributions to this version of tinc.
433
434 Version 1.0.4                May  4 2005
435
436  * Fix switch and hub modes.
437
438  * Optionally start scripts when a Subnet becomes (un)reachable.
439
440 Version 1.0.3                Nov 11 2004
441
442  * Show error message when failing to write a PID file.
443
444  * Ignore spaces at end of lines in config files.
445
446  * Fix handling of late packets.
447
448  * Unify BSD tun/tap device handling. This allows IPv6 on tun devices and
449    anything on tap devices as long as the underlying OS supports it.
450
451  * Handle IPv6 on Solaris tun devices.
452
453  * Allow tinc to work properly under Windows XP SP2.
454
455  * Allow VLAN tagged Ethernet frames in switch and hub mode.
456
457  * Experimental PMTUDiscovery, TunnelServer and BlockingTCP options.
458
459 Version 1.0.2                Nov  8 2003
460
461  * Fix address and hostname resolving under Windows.
462
463  * Remove warnings about non-existing scripts and unsupported address families.
464
465  * Use the event logger under Windows.
466
467  * Fix quoting of filenames and command line arguments under Windows.
468
469  * Strict checks for length incoming network packets and return values of
470    cryptographic functions,
471
472  * Fix a bug in metadata handling that made the tinc daemon abort.
473
474 Version 1.0.1                Aug 14 2003
475
476  * Allow empty lines in config files.
477
478  * Fix handling of spaces and backslashes in filenames under native Windows.
479
480  * Allow scripts to be executed under native Windows.
481
482  * Update documentation, make it less Linux specific.
483
484 Version 1.0                  Aug  4 2003
485
486  * Lots of small bugfixes and code cleanups.
487
488  * Throughput doubled and latency reduced.
489
490  * Added support for LZO compression.
491
492  * No need to set MAC address or disable ARP anymore.
493
494  * Added support for Windows 2000 and XP, both natively and in a Cygwin
495    environment.
496
497 Version 1.0pre8              Sep 16 2002
498
499  * More fixes for subnets with prefixlength undivisible by 8.
500
501  * Added support for NetBSD and MacOS/X.
502
503  * Switched from undirected graphs to directed graphs to avoid certain race
504    conditions and improve scalability.
505
506  * Generalized broadcasting and forwarding of protocol messages.
507
508  * Cleanup of source code.
509
510 Version 1.0pre7              Apr  7 2002
511
512  * Don't do blocking read()s when getting a signal.
513
514  * Remove RSA key checking code, since it sometimes thinks perfectly good RSA
515    keys are bad.
516
517  * Fix handling of subnets when prefixlength isn't divisible by 8.
518
519 Version 1.0pre6              Mar 27 2002
520
521  * Improvement of redundant links:
522    * Non-blocking connects.
523    * Protocol broadcast messages can no longer go into an infinite loop.
524    * Graph algorithm updated to look harder for direct connections.
525
526  * Good support for routing IPv6 packets over the VPN. Works on Linux,
527    FreeBSD, possibly OpenBSD but not on Solaris.
528
529  * Support for tunnels over IPv6 networks. Works on all supported
530    operating systems.
531
532  * Optional compression of UDP connections using zlib.
533
534  * Optionally let UDP connections inherit TOS field of tunneled packets.
535
536  * Optionally start scripts when certain hosts become (un)reachable.
537
538 Version 1.0pre5              Feb  9 2002
539
540  * Security enhancements:
541    * Added sequence number and optional message authentication code to
542      the packets.
543    * Configurable encryption cipher and digest algorithms.
544
545  * More robust handling of dis- and reconnects.
546
547  * Added a "switch" and a "hub" mode to allow bridging setups.
548
549  * Preliminary support for routing of IPv6 packets.
550
551  * Supports Linux, FreeBSD, OpenBSD and Solaris.
552
553 Version 1.0pre4              Jan 17 2001
554
555  * Updated documentation; the documentation now reflects the
556    configuration as it is.
557
558  * Some internal changes to make tinc scale better for large
559    networks, such as using AVL trees instead of linked lists for the
560    connection list.
561
562  * RSA keys can be stored in separate files if needed.  See the
563    documentation for more information.
564
565  * Tinc has now been reported to run on Linux PowerPC and FreeBSD x86.
566
567 Version 1.0pre3              Oct 31 2000
568
569  * The protocol has been redesigned, and although some details are
570    still under discussion, this is secure.  Care has been taken to
571    resist most, if not all, attacks.
572
573  * Unfortunately this protocol is not compatible with earlier versions,
574    nor are earlier versions compatible with this version.  Because the
575    older protocol has huge security flaws, we feel that not
576    implementing backwards compatibility is justified.
577
578  * Some data about the protocol:
579    * It uses public/private RSA keys for authentication (this is the
580      actual fix for the security hole).
581    * All cryptographic functions have been taken out of tinc, instead
582      it uses the OpenSSL library functions.
583    * Offers support for multiple subnets per tinc daemon.
584
585  * New is also the support for the universal tun/tap device.  This
586    means better portability to FreeBSD and Solaris.
587
588  * Tinc is tested to compile on Solaris, Linux x86, Linux alpha.
589
590  * Tinc now uses the OpenSSL library for cryptographic operations.
591    More information on getting and installing OpenSSL is in the manual.
592    This also means that the GMP library is no longer required.
593
594  * Further, thanks to Enrique Zanardi, we have Spanish messages; Matias
595    Carrasco provided us with a Spanish translation of the manual.
596
597 Version 1.0pre2              May 31 2000
598
599  * This version has been internationalized; and a Dutch translation has
600    been included.
601
602  * Two configuration variables have been added:
603    * VpnMask - the IP network mask for the entire VPN, not just our
604      subnet (as given by MyVirtualIP).  The Redhat and Debian packages
605      use this variable in their system startup scripts, but it is
606      ignored by tinc.
607    * Hostnames - if set to `yes', look up the names of IP addresses
608      trying to connect to us.  Default set to `no', to prevent lockups
609      during lookups.
610
611  * The system startup scripts for Debian and Redhat use
612    /etc/tinc/nets.boot to find out which networks need to be started
613    during system boot.
614
615  * Fixes to prevent denial of service attacks by sending random data
616    after connecting (and even when the connection has been established),
617    either random garbage or just nonsensical protocol fields.
618
619  * Tinc will retry to connect upon startup, does not quit if it doesn't
620    work the first time.
621
622  * Hosts that are disconnected implicitly if we lose a connection get
623    deleted from the internal list, to prevent hogging eachother with
624    add and delete requests when the connection is restored.
625
626 Version 1.0pre1              May 12 2000
627
628  * New meta-protocol
629
630  * Various other bugfixes
631
632  * Documentation updates
633
634 Version 0.3.3                Feb  9 2000
635
636  * Fixed bug that made tinc stop working with latest kernels
637
638  * Updated the manual
639
640 Version 0.3.2                Nov 12 1999
641
642  * No more `Invalid filedescriptor' when working with multiple
643    connections.
644
645  * Forward unknown packets to uplink.
646
647 Version 0.3.1                Oct 20 1999
648
649  * Fixed a bug where tinc would exit without a trace.
650
651 Version 0.3                  Aug 20 1999
652
653  * Pings now work immediately.
654
655  * All packet sizes get transmitted correctly.
656
657 Version 0.2.26               Aug 15 1999
658
659  * Fixed some remaining bugs.
660
661  * --sysconfdir works with configure.
662
663  * Last version before 0.3.
664
665 Version 0.2.25               Aug  8 1999
666
667  * Improved stability, going towards 0.3 now.
668
669 Version 0.2.24               Aug  7 1999
670
671  * Added key aging, there's a new config variable, KeyExpire.
672
673  * Updated man and info pages.
674
675 Version 0.2.23               Aug  5 1999
676
677  * All known bugs fixed, this is a candidate for 0.3.
678
679 Version 0.2.22               Apr 11 1999
680
681  * Multiconnection thing is now working nearly perfect :)
682
683 Version 0.2.21               Apr 10 1999
684
685  * You shouldn't notice a thing, but a lot has changed wrt key
686 management - except that it refuses to talk to versions < 0.2.20
687
688 Version 0.2.19               Apr  3 1999
689
690  * Don't install a libcipher.so.
691
692 Version 0.2.18               Apr  3 1999
693
694  * Blowfish library dynamically loaded upon execution.
695
696  * Included Eric Young's IDEA library.
697
698 Version 0.2.17               Apr  1 1999
699
700  * Tincd now re-executes itself in case of a segmentation fault.
701
702 Version 0.2.16               Apr  1 1999
703
704  * Wrote tincd.conf(5) man page, which still needs a lot of work.
705
706  * Config file now accepts and tolerates spaces, and any integer base
707    for integer variables, and better error reporting. See
708    doc/tincd.conf.sample for an example.
709
710 Version 0.2.15               Mar 29 1999
711
712  * Fixed bugs.
713
714 Version 0.2.14               Feb 10 1999
715
716  * Added --timeout flag and PingTimeout configuration.
717  * Did some first syslog cleanup work.
718
719 Version 0.2.13               Jan 23 1999
720
721  * Bugfixes.
722
723 Version 0.2.12               Jan 23 1999
724
725  * Fixed nauseating bug so that it would crash whenever a connection
726    got lost.
727
728 Version 0.2.11               Jan 22 1999
729
730  * Framework for multiple connections has been done.
731
732  * Simple manpage for tincd.
733
734 Version 0.2.10               Jan 18 1999
735
736  * Passphrase support added.
737
738 Version 0.2.9                Jan 13 1999
739
740  * Bugs fixed.
741
742 Version 0.2.8                Jan 11 1999
743
744  * A reworked protocol version.
745
746  * A ping/pong system.
747
748  * More reliable networking code.
749
750  * Automatic reconnection.
751
752  * Still does not work with more than one connection :)
753
754  * Strips MAC addresses before sending, so there's less overhead, and
755    less redundancy.
756
757 Version 0.2.7                Jan  3 1999
758
759  * Several updates to make extending more easy.
760
761 Version 0.2.6                Dec 20 1998
762
763  * Point-to-Point connections have been established, including
764    Blowfish encryption and a secret key-exchange.
765
766 Version 0.2.5                Dec 16 1998
767
768  * Project renamed to tinc, in honour of TINC.
769
770 Version 0.2.4                Dec 16 1998
771
772  * Now it really does ;)
773
774 Version 0.2.3                Nov 24 1998
775
776  * It sort of works now.
777
778 Version 0.2.2                Nov 20 1998
779
780  * Uses GNU gmp.
781
782 Version 0.2.1                Nov 14 1998
783
784  * Bare version.