| 1 | .. -*- coding: utf-8-with-signature -*- |
|---|
| 2 | |
|---|
| 3 | ================================== |
|---|
| 4 | User-Visible Changes in Tahoe-LAFS |
|---|
| 5 | ================================== |
|---|
| 6 | |
|---|
| 7 | .. towncrier start line |
|---|
| 8 | Release 1.190 (2024-01-04) |
|---|
| 9 | '''''''''''''''''''''''''' |
|---|
| 10 | |
|---|
| 11 | Features |
|---|
| 12 | -------- |
|---|
| 13 | |
|---|
| 14 | - Tahoe-LAFS now includes a new "Grid Manager" specification and implementation adding more options to control which storage servers a client will use for uploads. (`#2916 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2916>`_) |
|---|
| 15 | - Added support for Python 3.12, and work with Eliot 1.15 (`#3072 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3072>`_) |
|---|
| 16 | - `tahoe run ...` will now exit when its stdin is closed. |
|---|
| 17 | |
|---|
| 18 | This facilitates subprocess management, specifically cleanup. |
|---|
| 19 | When a parent process is running tahoe and exits without time to do "proper" cleanup at least the stdin descriptor will be closed. |
|---|
| 20 | Subsequently "tahoe run" notices this and exits. (`#3921 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3921>`_) |
|---|
| 21 | - Mutable objects can now be created with a pre-determined "signature key" using the ``tahoe put`` CLI or the HTTP API. This enables deterministic creation of mutable capabilities. This feature must be used with care to preserve the normal security and reliability properties. (`#3962 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3962>`_) |
|---|
| 22 | - Added support for Python 3.11. (`#3982 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3982>`_) |
|---|
| 23 | - tahoe run now accepts --allow-stdin-close to mean "keep running if stdin closes" (`#4036 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4036>`_) |
|---|
| 24 | - The storage server and client now support a new, HTTPS-based protocol. (`#4041 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4041>`_) |
|---|
| 25 | - Started work on a new end-to-end benchmarking framework. (`#4060 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4060>`_) |
|---|
| 26 | - Some operations now run in threads, improving the responsiveness of Tahoe nodes. (`#4068 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4068>`_) |
|---|
| 27 | - Logs are now written in a thread, which should make the application more responsive under load. (`#4804 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4804>`_) |
|---|
| 28 | |
|---|
| 29 | |
|---|
| 30 | Bug Fixes |
|---|
| 31 | --------- |
|---|
| 32 | |
|---|
| 33 | - Provide better feedback from plugin configuration errors |
|---|
| 34 | |
|---|
| 35 | Local errors now print a useful message and exit. |
|---|
| 36 | Announcements that only contain invalid / unusable plugins now show a message in the Welcome page. (`#3899 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3899>`_) |
|---|
| 37 | - Work with (and require) newer versions of pycddl. (`#3938 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3938>`_) |
|---|
| 38 | - Uploading immutables will now better use available bandwidth, which should allow for faster uploads in many cases. (`#3939 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3939>`_) |
|---|
| 39 | - Downloads of large immutables should now finish much faster. (`#3946 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3946>`_) |
|---|
| 40 | - Fix incompatibility with transitive dependency charset_normalizer >= 3 when using PyInstaller. (`#3966 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3966>`_) |
|---|
| 41 | - A bug where Introducer nodes configured to listen on Tor or I2P would not actually do so has been fixed. (`#3999 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3999>`_) |
|---|
| 42 | - The (still off-by-default) HTTP storage client will now use Tor when Tor-based client-side anonymity was requested. |
|---|
| 43 | Previously it would use normal TCP connections and not be anonymous. (`#4029 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4029>`_) |
|---|
| 44 | - Provide our own copy of attrs' "provides()" validator |
|---|
| 45 | |
|---|
| 46 | This validator is deprecated and slated for removal; that project's suggestion is to copy the code to our project. (`#4056 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4056>`_) |
|---|
| 47 | - Fix a race condition with SegmentFetcher (`#4078 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4078>`_) |
|---|
| 48 | |
|---|
| 49 | |
|---|
| 50 | Dependency/Installation Changes |
|---|
| 51 | ------------------------------- |
|---|
| 52 | |
|---|
| 53 | - tenacity is no longer a dependency. (`#3989 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3989>`_) |
|---|
| 54 | |
|---|
| 55 | |
|---|
| 56 | Documentation Changes |
|---|
| 57 | --------------------- |
|---|
| 58 | |
|---|
| 59 | - Several minor errors in the Great Black Swamp proposed specification document have been fixed. (`#3922 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3922>`_) |
|---|
| 60 | - Document the ``force_foolscap`` configuration options for ``[storage]`` and ``[client]``. (`#4039 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4039>`_) |
|---|
| 61 | |
|---|
| 62 | |
|---|
| 63 | Removed Features |
|---|
| 64 | ---------------- |
|---|
| 65 | |
|---|
| 66 | - Python 3.7 is no longer supported, and Debian 10 and Ubuntu 18.04 are no longer tested. (`#3964 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3964>`_) |
|---|
| 67 | |
|---|
| 68 | |
|---|
| 69 | Other Changes |
|---|
| 70 | ------------- |
|---|
| 71 | |
|---|
| 72 | - The integration test suite now includes a set of capability test vectors (``integration/vectors/test_vectors.yaml``) which can be used to verify compatibility between Tahoe-LAFS and other implementations. (`#3961 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3961>`_) |
|---|
| 73 | |
|---|
| 74 | |
|---|
| 75 | Misc/Other |
|---|
| 76 | ---------- |
|---|
| 77 | |
|---|
| 78 | - `#3508 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3508>`_, `#3622 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3622>`_, `#3783 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3783>`_, `#3870 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3870>`_, `#3874 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3874>`_, `#3880 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3880>`_, `#3904 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3904>`_, `#3910 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3910>`_, `#3914 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3914>`_, `#3917 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3917>`_, `#3927 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3927>`_, `#3928 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3928>`_, `#3935 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3935>`_, `#3936 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3936>`_, `#3937 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3937>`_, `#3940 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3940>`_, `#3942 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3942>`_, `#3944 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3944>`_, `#3947 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3947>`_, `#3950 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3950>`_, `#3952 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3952>`_, `#3953 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3953>`_, `#3954 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3954>`_, `#3956 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3956>`_, `#3958 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3958>`_, `#3959 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3959>`_, `#3960 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3960>`_, `#3965 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3965>`_, `#3967 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3967>`_, `#3968 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3968>`_, `#3969 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3969>`_, `#3970 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3970>`_, `#3971 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3971>`_, `#3974 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3974>`_, `#3975 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3975>`_, `#3976 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3976>`_, `#3978 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3978>`_, `#3987 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3987>`_, `#3988 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3988>`_, `#3991 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3991>`_, `#3993 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3993>`_, `#3994 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3994>`_, `#3996 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3996>`_, `#3998 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3998>`_, `#4000 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4000>`_, `#4001 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4001>`_, `#4002 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4002>`_, `#4003 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4003>`_, `#4004 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4004>`_, `#4005 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4005>`_, `#4006 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4006>`_, `#4009 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4009>`_, `#4010 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4010>`_, `#4012 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4012>`_, `#4014 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4014>`_, `#4015 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4015>`_, `#4016 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4016>`_, `#4018 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4018>`_, `#4019 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4019>`_, `#4020 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4020>`_, `#4022 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4022>`_, `#4023 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4023>`_, `#4024 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4024>`_, `#4026 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4026>`_, `#4027 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4027>`_, `#4028 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4028>`_, `#4035 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4035>`_, `#4038 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4038>`_, `#4040 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4040>`_, `#4042 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4042>`_, `#4044 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4044>`_, `#4046 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4046>`_, `#4047 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4047>`_, `#4049 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4049>`_, `#4050 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4050>`_, `#4051 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4051>`_, `#4052 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4052>`_, `#4055 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4055>`_, `#4059 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4059>`_, `#4061 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4061>`_, `#4062 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4062>`_, `#4063 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4063>`_, `#4065 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4065>`_, `#4066 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4066>`_, `#4070 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4070>`_, `#4074 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4074>`_, `#4075 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4075>`_ |
|---|
| 79 | |
|---|
| 80 | |
|---|
| 81 | Release 1.18.0 (2022-10-02) |
|---|
| 82 | ''''''''''''''''''''''''''' |
|---|
| 83 | |
|---|
| 84 | Backwards Incompatible Changes |
|---|
| 85 | ------------------------------ |
|---|
| 86 | |
|---|
| 87 | - Python 3.6 is no longer supported, as it has reached end-of-life and is no longer receiving security updates. (`#3865 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3865>`_) |
|---|
| 88 | - Python 3.7 or later is now required; Python 2 is no longer supported. (`#3873 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3873>`_) |
|---|
| 89 | - Share corruption reports stored on disk are now always encoded in UTF-8. (`#3879 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3879>`_) |
|---|
| 90 | - Record both the PID and the process creation-time: |
|---|
| 91 | |
|---|
| 92 | a new kind of pidfile in `running.process` records both |
|---|
| 93 | the PID and the creation-time of the process. This facilitates |
|---|
| 94 | automatic discovery of a "stale" pidfile that points to a |
|---|
| 95 | currently-running process. If the recorded creation-time matches |
|---|
| 96 | the creation-time of the running process, then it is a still-running |
|---|
| 97 | `tahoe run` process. Otherwise, the file is stale. |
|---|
| 98 | |
|---|
| 99 | The `twistd.pid` file is no longer present. (`#3926 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3926>`_) |
|---|
| 100 | |
|---|
| 101 | |
|---|
| 102 | Features |
|---|
| 103 | -------- |
|---|
| 104 | |
|---|
| 105 | - The implementation of SDMF and MDMF (mutables) now requires RSA keys to be exactly 2048 bits, aligning them with the specification. |
|---|
| 106 | |
|---|
| 107 | Some code existed to allow tests to shorten this and it's |
|---|
| 108 | conceptually possible a modified client produced mutables |
|---|
| 109 | with different key-sizes. However, the spec says that they |
|---|
| 110 | must be 2048 bits. If you happen to have a capability with |
|---|
| 111 | a key-size different from 2048 you may use 1.17.1 or earlier |
|---|
| 112 | to read the content. (`#3828 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3828>`_) |
|---|
| 113 | - "make" based release automation (`#3846 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3846>`_) |
|---|
| 114 | |
|---|
| 115 | |
|---|
| 116 | Misc/Other |
|---|
| 117 | ---------- |
|---|
| 118 | |
|---|
| 119 | - `#3327 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3327>`_, `#3526 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3526>`_, `#3697 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3697>`_, `#3709 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3709>`_, `#3786 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3786>`_, `#3788 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3788>`_, `#3802 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3802>`_, `#3816 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3816>`_, `#3855 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3855>`_, `#3858 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3858>`_, `#3859 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3859>`_, `#3860 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3860>`_, `#3867 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3867>`_, `#3868 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3868>`_, `#3871 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3871>`_, `#3872 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3872>`_, `#3875 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3875>`_, `#3876 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3876>`_, `#3877 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3877>`_, `#3881 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3881>`_, `#3882 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3882>`_, `#3883 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3883>`_, `#3889 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3889>`_, `#3890 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3890>`_, `#3891 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3891>`_, `#3893 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3893>`_, `#3895 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3895>`_, `#3896 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3896>`_, `#3898 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3898>`_, `#3900 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3900>`_, `#3909 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3909>`_, `#3913 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3913>`_, `#3915 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3915>`_, `#3916 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3916>`_ |
|---|
| 120 | |
|---|
| 121 | |
|---|
| 122 | Release 1.17.1 (2022-01-07) |
|---|
| 123 | ''''''''''''''''''''''''''' |
|---|
| 124 | |
|---|
| 125 | Bug Fixes |
|---|
| 126 | --------- |
|---|
| 127 | |
|---|
| 128 | - Fixed regression on Python 3 causing the JSON version of the Welcome page to sometimes produce a 500 error (`#3852 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3852>`_) |
|---|
| 129 | - Fixed regression on Python 3 where JSON HTTP POSTs failed to be processed. (`#3854 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3854>`_) |
|---|
| 130 | |
|---|
| 131 | |
|---|
| 132 | Misc/Other |
|---|
| 133 | ---------- |
|---|
| 134 | |
|---|
| 135 | - `#3848 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3848>`_, `#3849 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3849>`_, `#3850 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3850>`_, `#3856 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3856>`_ |
|---|
| 136 | |
|---|
| 137 | |
|---|
| 138 | Release 1.17.0 (2021-12-06) |
|---|
| 139 | ''''''''''''''''''''''''''' |
|---|
| 140 | |
|---|
| 141 | Security-related Changes |
|---|
| 142 | ------------------------ |
|---|
| 143 | |
|---|
| 144 | - The introducer server no longer writes the sensitive introducer fURL value to its log at startup time. Instead it writes the well-known path of the file from which this value can be read. (`#3819 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3819>`_) |
|---|
| 145 | - The storage protocol operation ``add_lease`` now safely rejects an attempt to add a 4,294,967,296th lease to an immutable share. |
|---|
| 146 | Previously this failed with an error after recording the new lease in the share file, resulting in the share file losing track of a one previous lease. (`#3821 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3821>`_) |
|---|
| 147 | - The storage protocol operation ``readv`` now safely rejects attempts to read negative lengths. |
|---|
| 148 | Previously these read requests were satisfied with the complete contents of the share file (including trailing metadata) starting from the specified offset. (`#3822 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3822>`_) |
|---|
| 149 | - The storage server implementation now respects the ``reserved_space`` configuration value when writing lease information and recording corruption advisories. |
|---|
| 150 | Previously, new leases could be created and written to disk even when the storage server had less remaining space than the configured reserve space value. |
|---|
| 151 | Now this operation will fail with an exception and the lease will not be created. |
|---|
| 152 | Similarly, if there is no space available, corruption advisories will be logged but not written to disk. (`#3823 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3823>`_) |
|---|
| 153 | - The storage server implementation no longer records corruption advisories about storage indexes for which it holds no shares. (`#3824 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3824>`_) |
|---|
| 154 | - The lease-checker now uses JSON instead of pickle to serialize its state. |
|---|
| 155 | |
|---|
| 156 | tahoe will now refuse to run until you either delete all pickle files or |
|---|
| 157 | migrate them using the new command:: |
|---|
| 158 | |
|---|
| 159 | tahoe admin migrate-crawler |
|---|
| 160 | |
|---|
| 161 | This will migrate all crawler-related pickle files. (`#3825 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3825>`_) |
|---|
| 162 | - The SFTP server no longer accepts password-based credentials for authentication. |
|---|
| 163 | Public/private key-based credentials are now the only supported authentication type. |
|---|
| 164 | This removes plaintext password storage from the SFTP credentials file. |
|---|
| 165 | It also removes a possible timing side-channel vulnerability which might have allowed attackers to discover an account's plaintext password. (`#3827 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3827>`_) |
|---|
| 166 | - The storage server now keeps hashes of lease renew and cancel secrets for immutable share files instead of keeping the original secrets. (`#3839 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3839>`_) |
|---|
| 167 | - The storage server now keeps hashes of lease renew and cancel secrets for mutable share files instead of keeping the original secrets. (`#3841 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3841>`_) |
|---|
| 168 | |
|---|
| 169 | |
|---|
| 170 | Features |
|---|
| 171 | -------- |
|---|
| 172 | |
|---|
| 173 | - Tahoe-LAFS releases now have just a .tar.gz source release and a (universal) wheel (`#3735 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3735>`_) |
|---|
| 174 | - tahoe-lafs now provides its statistics also in OpenMetrics format (for Prometheus et. al.) at `/statistics?t=openmetrics`. (`#3786 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3786>`_) |
|---|
| 175 | - If uploading an immutable hasn't had a write for 30 minutes, the storage server will abort the upload. (`#3807 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3807>`_) |
|---|
| 176 | |
|---|
| 177 | |
|---|
| 178 | Bug Fixes |
|---|
| 179 | --------- |
|---|
| 180 | |
|---|
| 181 | - When uploading an immutable, overlapping writes that include conflicting data are rejected. In practice, this likely didn't happen in real-world usage. (`#3801 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3801>`_) |
|---|
| 182 | |
|---|
| 183 | |
|---|
| 184 | Dependency/Installation Changes |
|---|
| 185 | ------------------------------- |
|---|
| 186 | |
|---|
| 187 | - Tahoe-LAFS now supports running on NixOS 21.05 with Python 3. (`#3808 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3808>`_) |
|---|
| 188 | |
|---|
| 189 | |
|---|
| 190 | Documentation Changes |
|---|
| 191 | --------------------- |
|---|
| 192 | |
|---|
| 193 | - The news file for future releases will include a section for changes with a security impact. (`#3815 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3815>`_) |
|---|
| 194 | |
|---|
| 195 | |
|---|
| 196 | Removed Features |
|---|
| 197 | ---------------- |
|---|
| 198 | |
|---|
| 199 | - The little-used "control port" has been removed from all node types. (`#3814 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3814>`_) |
|---|
| 200 | |
|---|
| 201 | |
|---|
| 202 | Other Changes |
|---|
| 203 | ------------- |
|---|
| 204 | |
|---|
| 205 | - Tahoe-LAFS no longer runs its Tor integration test suite on Python 2 due to the increased complexity of obtaining compatible versions of necessary dependencies. (`#3837 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3837>`_) |
|---|
| 206 | |
|---|
| 207 | |
|---|
| 208 | Misc/Other |
|---|
| 209 | ---------- |
|---|
| 210 | |
|---|
| 211 | - `#3525 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3525>`_, `#3527 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3527>`_, `#3754 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3754>`_, `#3758 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3758>`_, `#3784 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3784>`_, `#3792 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3792>`_, `#3793 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3793>`_, `#3795 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3795>`_, `#3797 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3797>`_, `#3798 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3798>`_, `#3799 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3799>`_, `#3800 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3800>`_, `#3805 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3805>`_, `#3806 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3806>`_, `#3810 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3810>`_, `#3812 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3812>`_, `#3820 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3820>`_, `#3829 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3829>`_, `#3830 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3830>`_, `#3831 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3831>`_, `#3832 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3832>`_, `#3833 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3833>`_, `#3834 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3834>`_, `#3835 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3835>`_, `#3836 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3836>`_, `#3838 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3838>`_, `#3842 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3842>`_, `#3843 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3843>`_, `#3847 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3847>`_ |
|---|
| 212 | |
|---|
| 213 | |
|---|
| 214 | Release 1.16.0 (2021-09-17) |
|---|
| 215 | ''''''''''''''''''''''''''' |
|---|
| 216 | |
|---|
| 217 | Backwards Incompatible Changes |
|---|
| 218 | ------------------------------ |
|---|
| 219 | |
|---|
| 220 | - The Tahoe command line now always uses UTF-8 to decode its arguments, regardless of locale. (`#3588 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3588>`_) |
|---|
| 221 | - tahoe backup's --exclude-from has been renamed to --exclude-from-utf-8, and correspondingly requires the file to be UTF-8 encoded. (`#3716 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3716>`_) |
|---|
| 222 | |
|---|
| 223 | |
|---|
| 224 | Features |
|---|
| 225 | -------- |
|---|
| 226 | |
|---|
| 227 | - Added 'typechecks' environment for tox running mypy and performing static typechecks. (`#3399 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3399>`_) |
|---|
| 228 | - The NixOS-packaged Tahoe-LAFS now knows its own version. (`#3629 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3629>`_) |
|---|
| 229 | |
|---|
| 230 | |
|---|
| 231 | Bug Fixes |
|---|
| 232 | --------- |
|---|
| 233 | |
|---|
| 234 | - Fix regression that broke flogtool results on Python 2. (`#3509 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3509>`_) |
|---|
| 235 | - Fix a logging regression on Python 2 involving unicode strings. (`#3510 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3510>`_) |
|---|
| 236 | - Certain implementation-internal weakref KeyErrors are now handled and should no longer cause user-initiated operations to fail. (`#3539 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3539>`_) |
|---|
| 237 | - SFTP public key auth likely works more consistently, and SFTP in general was previously broken. (`#3584 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3584>`_) |
|---|
| 238 | - Fixed issue where redirecting old-style URIs (/uri/?uri=...) didn't work. (`#3590 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3590>`_) |
|---|
| 239 | - ``tahoe invite`` will now read share encoding/placement configuration values from a Tahoe client node configuration file if they are not given on the command line, instead of raising an unhandled exception. (`#3650 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3650>`_) |
|---|
| 240 | - Fix regression where uploading files with non-ASCII names failed. (`#3738 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3738>`_) |
|---|
| 241 | - Fixed annoying UnicodeWarning message on Python 2 when running CLI tools. (`#3739 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3739>`_) |
|---|
| 242 | - Fixed bug where share corruption events were not logged on storage servers running on Windows. (`#3779 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3779>`_) |
|---|
| 243 | |
|---|
| 244 | |
|---|
| 245 | Dependency/Installation Changes |
|---|
| 246 | ------------------------------- |
|---|
| 247 | |
|---|
| 248 | - Tahoe-LAFS now requires Twisted 19.10.0 or newer. As a result, it now has a transitive dependency on bcrypt. (`#1549 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1549>`_) |
|---|
| 249 | - Debian 8 support has been replaced with Debian 10 support. (`#3326 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3326>`_) |
|---|
| 250 | - Tahoe-LAFS no longer depends on Nevow. (`#3433 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3433>`_) |
|---|
| 251 | - Tahoe-LAFS now requires the `netifaces` Python package and no longer requires the external `ip`, `ifconfig`, or `route.exe` executables. (`#3486 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3486>`_) |
|---|
| 252 | - The Tahoe-LAFS project no longer commits to maintaining binary packages for all dependencies at <https://tahoe-lafs.org/deps>. Please use PyPI instead. (`#3497 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3497>`_) |
|---|
| 253 | - Tahoe-LAFS now uses a forked version of txi2p (named txi2p-tahoe) with Python 3 support. (`#3633 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3633>`_) |
|---|
| 254 | - The Nix package now includes correct version information. (`#3712 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3712>`_) |
|---|
| 255 | - Use netifaces 0.11.0 wheel package from PyPI.org if you use 64-bit Python 2.7 on Windows. VCPython27 downloads are no longer available at Microsoft's website, which has made building Python 2.7 wheel packages of Python libraries with C extensions (such as netifaces) on Windows difficult. (`#3733 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3733>`_) |
|---|
| 256 | |
|---|
| 257 | |
|---|
| 258 | Configuration Changes |
|---|
| 259 | --------------------- |
|---|
| 260 | |
|---|
| 261 | - The ``[client]introducer.furl`` configuration item is now deprecated in favor of the ``private/introducers.yaml`` file. (`#3504 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3504>`_) |
|---|
| 262 | |
|---|
| 263 | |
|---|
| 264 | Documentation Changes |
|---|
| 265 | --------------------- |
|---|
| 266 | |
|---|
| 267 | - Documentation now has its own towncrier category. (`#3664 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3664>`_) |
|---|
| 268 | - `tox -e docs` will treat warnings about docs as errors. (`#3666 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3666>`_) |
|---|
| 269 | - The visibility of the Tahoe-LAFS logo has been improved for "dark" themed viewing. (`#3677 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3677>`_) |
|---|
| 270 | - A cheatsheet-style document for contributors was created at CONTRIBUTORS.rst (`#3682 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3682>`_) |
|---|
| 271 | - Our IRC channel, #tahoe-lafs, has been moved to irc.libera.chat. (`#3721 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3721>`_) |
|---|
| 272 | - Tahoe-LAFS project is now registered with Libera.Chat IRC network. (`#3726 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3726>`_) |
|---|
| 273 | - Rewriting the installation guide for Tahoe-LAFS. (`#3747 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3747>`_) |
|---|
| 274 | - Documentation and installation links in the README have been fixed. (`#3749 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3749>`_) |
|---|
| 275 | - The Great Black Swamp proposed specification now includes sample interactions to demonstrate expected usage patterns. (`#3764 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3764>`_) |
|---|
| 276 | - The Great Black Swamp proposed specification now includes a glossary. (`#3765 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3765>`_) |
|---|
| 277 | - The Great Black Swamp specification now allows parallel upload of immutable share data. (`#3769 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3769>`_) |
|---|
| 278 | - There is now a specification for the scheme which Tahoe-LAFS storage clients use to derive their lease renewal secrets. (`#3774 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3774>`_) |
|---|
| 279 | - The Great Black Swamp proposed specification now has a simplified interface for reading data from immutable shares. (`#3777 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3777>`_) |
|---|
| 280 | - tahoe-dev mailing list is now at tahoe-dev@lists.tahoe-lafs.org. (`#3782 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3782>`_) |
|---|
| 281 | - The Great Black Swamp specification now describes the required authorization scheme. (`#3785 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3785>`_) |
|---|
| 282 | - The "Great Black Swamp" proposed specification has been expanded to include two lease management APIs. (`#3037 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3037>`_) |
|---|
| 283 | - The specification section of the Tahoe-LAFS documentation now includes explicit discussion of the security properties of Foolscap "fURLs" on which it depends. (`#3503 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3503>`_) |
|---|
| 284 | - The README, revised by Viktoriia with feedback from the team, is now more focused on the developer community and provides more information about Tahoe-LAFS, why it's important, and how someone can use it or start contributing to it. (`#3545 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3545>`_) |
|---|
| 285 | - The "Great Black Swamp" proposed specification has been changed use ``v=1`` as the URL version identifier. (`#3644 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3644>`_) |
|---|
| 286 | - You can run `make livehtml` in docs directory to invoke sphinx-autobuild. (`#3663 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3663>`_) |
|---|
| 287 | |
|---|
| 288 | |
|---|
| 289 | Removed Features |
|---|
| 290 | ---------------- |
|---|
| 291 | |
|---|
| 292 | - Announcements delivered through the introducer system are no longer automatically annotated with copious information about the Tahoe-LAFS software version nor the versions of its dependencies. (`#3518 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3518>`_) |
|---|
| 293 | - The stats gatherer, broken since at least Tahoe-LAFS 1.13.0, has been removed. The ``[client]stats_gatherer.furl`` configuration item in ``tahoe.cfg`` is no longer allowed. The Tahoe-LAFS project recommends using a third-party metrics aggregation tool instead. (`#3549 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3549>`_) |
|---|
| 294 | - The deprecated ``tahoe`` start, restart, stop, and daemonize sub-commands have been removed. (`#3550 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3550>`_) |
|---|
| 295 | - FTP is no longer supported by Tahoe-LAFS. Please use the SFTP support instead. (`#3583 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3583>`_) |
|---|
| 296 | - Removed support for the Account Server frontend authentication type. (`#3652 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3652>`_) |
|---|
| 297 | |
|---|
| 298 | |
|---|
| 299 | Other Changes |
|---|
| 300 | ------------- |
|---|
| 301 | |
|---|
| 302 | - Refactored test_introducer in web tests to use custom base test cases (`#3757 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3757>`_) |
|---|
| 303 | |
|---|
| 304 | |
|---|
| 305 | Misc/Other |
|---|
| 306 | ---------- |
|---|
| 307 | |
|---|
| 308 | - `#2928 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2928>`_, `#3283 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3283>`_, `#3314 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3314>`_, `#3384 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3384>`_, `#3385 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3385>`_, `#3390 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3390>`_, `#3404 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3404>`_, `#3428 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3428>`_, `#3432 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3432>`_, `#3434 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3434>`_, `#3435 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3435>`_, `#3454 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3454>`_, `#3459 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3459>`_, `#3460 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3460>`_, `#3465 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3465>`_, `#3466 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3466>`_, `#3467 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3467>`_, `#3468 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3468>`_, `#3470 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3470>`_, `#3471 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3471>`_, `#3472 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3472>`_, `#3473 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3473>`_, `#3474 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3474>`_, `#3475 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3475>`_, `#3477 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3477>`_, `#3478 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3478>`_, `#3479 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3479>`_, `#3481 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3481>`_, `#3482 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3482>`_, `#3483 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3483>`_, `#3485 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3485>`_, `#3488 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3488>`_, `#3490 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3490>`_, `#3491 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3491>`_, `#3492 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3492>`_, `#3493 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3493>`_, `#3496 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3496>`_, `#3499 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3499>`_, `#3500 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3500>`_, `#3501 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3501>`_, `#3502 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3502>`_, `#3511 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3511>`_, `#3513 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3513>`_, `#3514 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3514>`_, `#3515 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3515>`_, `#3517 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3517>`_, `#3520 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3520>`_, `#3521 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3521>`_, `#3522 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3522>`_, `#3523 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3523>`_, `#3524 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3524>`_, `#3528 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3528>`_, `#3529 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3529>`_, `#3532 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3532>`_, `#3533 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3533>`_, `#3534 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3534>`_, `#3536 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3536>`_, `#3537 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3537>`_, `#3542 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3542>`_, `#3544 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3544>`_, `#3546 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3546>`_, `#3547 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3547>`_, `#3551 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3551>`_, `#3552 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3552>`_, `#3553 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3553>`_, `#3555 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3555>`_, `#3557 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3557>`_, `#3558 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3558>`_, `#3560 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3560>`_, `#3563 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3563>`_, `#3564 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3564>`_, `#3565 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3565>`_, `#3566 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3566>`_, `#3567 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3567>`_, `#3568 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3568>`_, `#3572 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3572>`_, `#3574 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3574>`_, `#3575 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3575>`_, `#3576 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3576>`_, `#3577 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3577>`_, `#3578 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3578>`_, `#3579 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3579>`_, `#3580 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3580>`_, `#3582 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3582>`_, `#3587 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3587>`_, `#3588 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3588>`_, `#3589 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3589>`_, `#3591 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3591>`_, `#3592 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3592>`_, `#3593 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3593>`_, `#3594 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3594>`_, `#3595 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3595>`_, `#3596 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3596>`_, `#3599 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3599>`_, `#3600 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3600>`_, `#3603 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3603>`_, `#3605 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3605>`_, `#3606 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3606>`_, `#3607 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3607>`_, `#3608 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3608>`_, `#3611 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3611>`_, `#3612 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3612>`_, `#3613 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3613>`_, `#3615 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3615>`_, `#3616 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3616>`_, `#3617 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3617>`_, `#3618 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3618>`_, `#3619 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3619>`_, `#3620 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3620>`_, `#3621 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3621>`_, `#3623 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3623>`_, `#3624 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3624>`_, `#3625 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3625>`_, `#3626 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3626>`_, `#3628 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3628>`_, `#3630 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3630>`_, `#3631 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3631>`_, `#3632 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3632>`_, `#3634 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3634>`_, `#3635 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3635>`_, `#3637 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3637>`_, `#3638 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3638>`_, `#3640 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3640>`_, `#3642 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3642>`_, `#3645 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3645>`_, `#3646 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3646>`_, `#3647 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3647>`_, `#3648 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3648>`_, `#3649 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3649>`_, `#3651 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3651>`_, `#3653 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3653>`_, `#3654 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3654>`_, `#3655 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3655>`_, `#3656 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3656>`_, `#3657 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3657>`_, `#3658 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3658>`_, `#3662 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3662>`_, `#3667 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3667>`_, `#3669 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3669>`_, `#3670 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3670>`_, `#3671 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3671>`_, `#3672 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3672>`_, `#3674 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3674>`_, `#3675 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3675>`_, `#3676 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3676>`_, `#3678 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3678>`_, `#3679 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3679>`_, `#3681 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3681>`_, `#3683 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3683>`_, `#3686 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3686>`_, `#3687 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3687>`_, `#3691 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3691>`_, `#3692 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3692>`_, `#3699 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3699>`_, `#3700 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3700>`_, `#3701 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3701>`_, `#3702 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3702>`_, `#3703 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3703>`_, `#3704 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3704>`_, `#3705 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3705>`_, `#3707 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3707>`_, `#3708 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3708>`_, `#3709 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3709>`_, `#3711 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3711>`_, `#3713 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3713>`_, `#3714 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3714>`_, `#3715 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3715>`_, `#3717 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3717>`_, `#3718 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3718>`_, `#3722 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3722>`_, `#3723 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3723>`_, `#3727 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3727>`_, `#3728 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3728>`_, `#3729 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3729>`_, `#3730 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3730>`_, `#3731 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3731>`_, `#3732 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3732>`_, `#3734 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3734>`_, `#3735 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3735>`_, `#3736 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3736>`_, `#3741 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3741>`_, `#3743 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3743>`_, `#3744 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3744>`_, `#3745 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3745>`_, `#3746 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3746>`_, `#3751 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3751>`_, `#3759 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3759>`_, `#3760 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3760>`_, `#3763 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3763>`_, `#3773 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3773>`_, `#3781 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3781>`_ |
|---|
| 309 | |
|---|
| 310 | |
|---|
| 311 | Release 1.15.1 |
|---|
| 312 | '''''''''''''' |
|---|
| 313 | |
|---|
| 314 | Misc/Other |
|---|
| 315 | ---------- |
|---|
| 316 | |
|---|
| 317 | - `#3469 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3469>`_, `#3608 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3608>`_ |
|---|
| 318 | |
|---|
| 319 | |
|---|
| 320 | Release 1.15.0 (2020-10-13) |
|---|
| 321 | ''''''''''''''''''''''''''' |
|---|
| 322 | |
|---|
| 323 | Features |
|---|
| 324 | -------- |
|---|
| 325 | |
|---|
| 326 | - PyPy is now a supported platform. (`#1792 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1792>`_) |
|---|
| 327 | - allmydata.testing.web, a new module, now offers a supported Python API for testing Tahoe-LAFS web API clients. (`#3317 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3317>`_) |
|---|
| 328 | |
|---|
| 329 | |
|---|
| 330 | Bug Fixes |
|---|
| 331 | --------- |
|---|
| 332 | |
|---|
| 333 | - Make directory page links work. (`#3312 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3312>`_) |
|---|
| 334 | - Use last known revision of Chutney that is known to work with Python 2 for Tor integration tests. (`#3348 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3348>`_) |
|---|
| 335 | - Mutable files now use RSA exponent 65537 (`#3349 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3349>`_) |
|---|
| 336 | |
|---|
| 337 | |
|---|
| 338 | Dependency/Installation Changes |
|---|
| 339 | ------------------------------- |
|---|
| 340 | |
|---|
| 341 | - Tahoe-LAFS now supports CentOS 8 and no longer supports CentOS 7. (`#3296 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3296>`_) |
|---|
| 342 | - Tahoe-LAFS now supports Ubuntu 20.04. (`#3328 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3328>`_) |
|---|
| 343 | |
|---|
| 344 | |
|---|
| 345 | Removed Features |
|---|
| 346 | ---------------- |
|---|
| 347 | |
|---|
| 348 | - The Magic Folder frontend has been split out into a stand-alone project. The functionality is no longer part of Tahoe-LAFS itself. Learn more at <https://github.com/LeastAuthority/magic-folder>. (`#3284 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3284>`_) |
|---|
| 349 | - Slackware 14.2 is no longer a Tahoe-LAFS supported platform. (`#3323 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3323>`_) |
|---|
| 350 | |
|---|
| 351 | |
|---|
| 352 | Other Changes |
|---|
| 353 | ------------- |
|---|
| 354 | |
|---|
| 355 | - The Tahoe-LAFS project has adopted a formal code of conduct. (`#2755 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2755>`_) |
|---|
| 356 | - (`#3263 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3263>`_, `#3324 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3324>`_) |
|---|
| 357 | - The "coverage" tox environment has been replaced by the "py27-coverage" and "py36-coverage" environments. (`#3355 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3355>`_) |
|---|
| 358 | |
|---|
| 359 | |
|---|
| 360 | Misc/Other |
|---|
| 361 | ---------- |
|---|
| 362 | |
|---|
| 363 | - `#3247 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3247>`_, `#3254 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3254>`_, `#3277 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3277>`_, `#3278 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3278>`_, `#3287 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3287>`_, `#3288 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3288>`_, `#3289 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3289>`_, `#3290 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3290>`_, `#3291 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3291>`_, `#3292 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3292>`_, `#3293 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3293>`_, `#3294 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3294>`_, `#3297 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3297>`_, `#3298 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3298>`_, `#3299 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3299>`_, `#3300 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3300>`_, `#3302 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3302>`_, `#3303 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3303>`_, `#3304 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3304>`_, `#3305 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3305>`_, `#3306 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3306>`_, `#3308 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3308>`_, `#3309 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3309>`_, `#3313 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3313>`_, `#3315 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3315>`_, `#3316 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3316>`_, `#3320 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3320>`_, `#3325 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3325>`_, `#3326 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3326>`_, `#3329 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3329>`_, `#3330 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3330>`_, `#3331 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3331>`_, `#3332 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3332>`_, `#3333 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3333>`_, `#3334 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3334>`_, `#3335 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3335>`_, `#3336 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3336>`_, `#3338 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3338>`_, `#3339 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3339>`_, `#3340 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3340>`_, `#3341 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3341>`_, `#3342 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3342>`_, `#3343 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3343>`_, `#3344 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3344>`_, `#3346 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3346>`_, `#3351 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3351>`_, `#3353 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3353>`_, `#3354 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3354>`_, `#3356 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3356>`_, `#3357 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3357>`_, `#3358 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3358>`_, `#3359 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3359>`_, `#3361 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3361>`_, `#3364 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3364>`_, `#3365 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3365>`_, `#3366 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3366>`_, `#3367 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3367>`_, `#3368 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3368>`_, `#3370 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3370>`_, `#3372 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3372>`_, `#3373 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3373>`_, `#3374 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3374>`_, `#3375 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3375>`_, `#3376 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3376>`_, `#3377 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3377>`_, `#3378 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3378>`_, `#3380 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3380>`_, `#3381 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3381>`_, `#3382 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3382>`_, `#3383 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3383>`_, `#3386 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3386>`_, `#3387 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3387>`_, `#3388 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3388>`_, `#3389 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3389>`_, `#3391 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3391>`_, `#3392 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3392>`_, `#3393 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3393>`_, `#3394 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3394>`_, `#3395 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3395>`_, `#3396 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3396>`_, `#3397 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3397>`_, `#3398 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3398>`_, `#3401 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3401>`_, `#3403 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3403>`_, `#3406 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3406>`_, `#3408 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3408>`_, `#3409 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3409>`_, `#3411 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3411>`_, `#3415 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3415>`_, `#3416 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3416>`_, `#3417 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3417>`_, `#3421 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3421>`_, `#3422 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3422>`_, `#3423 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3423>`_, `#3424 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3424>`_, `#3425 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3425>`_, `#3426 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3426>`_, `#3427 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3427>`_, `#3429 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3429>`_, `#3430 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3430>`_, `#3431 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3431>`_, `#3436 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3436>`_, `#3437 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3437>`_, `#3438 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3438>`_, `#3439 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3439>`_, `#3440 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3440>`_, `#3442 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3442>`_, `#3443 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3443>`_, `#3446 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3446>`_, `#3448 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3448>`_, `#3449 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3449>`_, `#3450 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3450>`_, `#3451 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3451>`_, `#3452 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3452>`_, `#3453 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3453>`_, `#3455 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3455>`_, `#3456 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3456>`_, `#3458 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3458>`_, `#3462 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3462>`_, `#3463 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3463>`_, `#3464 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3464>`_ |
|---|
| 364 | |
|---|
| 365 | |
|---|
| 366 | Release 1.14.0 (2020-03-11) |
|---|
| 367 | ''''''''''''''''''''''''''' |
|---|
| 368 | |
|---|
| 369 | Features |
|---|
| 370 | -------- |
|---|
| 371 | |
|---|
| 372 | - Magic-Folders are now supported on macOS. (`#1432 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1432>`_) |
|---|
| 373 | - Add a "tox -e draftnews" which runs towncrier in draft mode (`#2942 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2942>`_) |
|---|
| 374 | - Fedora 29 is now tested as part of the project's continuous integration system. (`#2955 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2955>`_) |
|---|
| 375 | - The Magic-Folder frontend now emits structured, causal logs. This makes it easier for developers to make sense of its behavior and for users to submit useful debugging information alongside problem reports. (`#2972 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2972>`_) |
|---|
| 376 | - The `tahoe` CLI now accepts arguments for configuring structured logging messages which Tahoe-LAFS is being converted to emit. This change does not introduce any new defaults for on-filesystem logging. (`#2975 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2975>`_) |
|---|
| 377 | - The web API now publishes streaming Eliot logs via a token-protected WebSocket at /private/logs/v1. (`#3006 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3006>`_) |
|---|
| 378 | - End-to-end in-memory tests for websocket features (`#3041 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3041>`_) |
|---|
| 379 | - allmydata.interfaces.IFoolscapStoragePlugin has been introduced, an extension point for customizing the storage protocol. (`#3049 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3049>`_) |
|---|
| 380 | - Static storage server "announcements" in ``private/servers.yaml`` are now individually logged and ignored if they cannot be interpreted. (`#3051 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3051>`_) |
|---|
| 381 | - Storage servers can now be configured to load plugins for allmydata.interfaces.IFoolscapStoragePlugin and offer them to clients. (`#3053 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3053>`_) |
|---|
| 382 | - Storage clients can now be configured to load plugins for allmydata.interfaces.IFoolscapStoragePlugin and use them to negotiate with servers. (`#3054 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3054>`_) |
|---|
| 383 | - The [storage] configuration section now accepts a boolean *anonymous* item to enable or disable anonymous storage access. The default behavior remains unchanged. (`#3184 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3184>`_) |
|---|
| 384 | - Enable the helper when creating a node with `tahoe create-node --helper` (`#3235 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3235>`_) |
|---|
| 385 | |
|---|
| 386 | |
|---|
| 387 | Bug Fixes |
|---|
| 388 | --------- |
|---|
| 389 | |
|---|
| 390 | - refactor initialization code to be more async-friendly (`#2870 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2870>`_) |
|---|
| 391 | - Configuration-checking code wasn't being called due to indenting (`#2935 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2935>`_) |
|---|
| 392 | - refactor configuration handling out of Node into _Config (`#2936 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2936>`_) |
|---|
| 393 | - "tox -e codechecks" no longer dirties the working tree. (`#2941 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2941>`_) |
|---|
| 394 | - Updated the Tor release key, used by the integration tests. (`#2944 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2944>`_) |
|---|
| 395 | - `tahoe backup` no longer fails with an unhandled exception when it encounters a special file (device, fifo) in the backup source. (`#2950 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2950>`_) |
|---|
| 396 | - Magic-Folders now creates spurious conflict files in fewer cases. In particular, if files are added to the folder while a client is offline, that client will not create conflict files for all those new files when it starts up. (`#2965 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2965>`_) |
|---|
| 397 | - The confusing and misplaced sub-command group headings in `tahoe --help` output have been removed. (`#2976 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2976>`_) |
|---|
| 398 | - The Magic-Folder frontend is now more responsive to subtree changes on Windows. (`#2997 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2997>`_) |
|---|
| 399 | - remove ancient bundled jquery and d3, and the "dowload timeline" feature they support (`#3228 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3228>`_) |
|---|
| 400 | |
|---|
| 401 | |
|---|
| 402 | Dependency/Installation Changes |
|---|
| 403 | ------------------------------- |
|---|
| 404 | |
|---|
| 405 | - Tahoe-LAFS no longer makes start-up time assertions about the versions of its dependencies. It is the responsibility of the administrator of the installation to ensure the correct version of dependencies are supplied. (`#2749 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2749>`_) |
|---|
| 406 | - Tahoe-LAFS now depends on Twisted 16.6 or newer. (`#2957 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2957>`_) |
|---|
| 407 | |
|---|
| 408 | |
|---|
| 409 | Removed Features |
|---|
| 410 | ---------------- |
|---|
| 411 | |
|---|
| 412 | - "tahoe rm", an old alias for "tahoe unlink", has been removed. (`#1827 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1827>`_) |
|---|
| 413 | - The direct dependencies on pyutil and zbase32 have been removed. (`#2098 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2098>`_) |
|---|
| 414 | - Untested and unmaintained code for running Tahoe-LAFS as a Windows service has been removed. (`#2239 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2239>`_) |
|---|
| 415 | - The redundant "pypywin32" dependency has been removed. (`#2392 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2392>`_) |
|---|
| 416 | - Fedora 27 is no longer tested as part of the project's continuous integration system. (`#2955 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2955>`_) |
|---|
| 417 | - "tahoe start", "tahoe daemonize", "tahoe restart", and "tahoe stop" are now deprecated in favor of using "tahoe run", possibly with a third-party process manager. (`#3273 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3273>`_) |
|---|
| 418 | |
|---|
| 419 | |
|---|
| 420 | Other Changes |
|---|
| 421 | ------------- |
|---|
| 422 | |
|---|
| 423 | - Tahoe-LAFS now tests for PyPy compatibility on CI. (`#2479 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2479>`_) |
|---|
| 424 | - Tahoe-LAFS now requires Twisted 18.4.0 or newer. (`#2771 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2771>`_) |
|---|
| 425 | - Tahoe-LAFS now uses towncrier to maintain the NEWS file. (`#2908 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2908>`_) |
|---|
| 426 | - The release process document has been updated. (`#2920 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2920>`_) |
|---|
| 427 | - allmydata.test.test_system.SystemTest is now more reliable with respect to bound address collisions. (`#2933 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2933>`_) |
|---|
| 428 | - The Tox configuration has been fixed to work around a problem on Windows CI. (`#2956 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2956>`_) |
|---|
| 429 | - The PyInstaller CI job now works around a pip/pyinstaller incompatibility. (`#2958 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2958>`_) |
|---|
| 430 | - Some CI jobs for integration tests have been moved from TravisCI to CircleCI. (`#2959 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2959>`_) |
|---|
| 431 | - Several warnings from a new release of pyflakes have been fixed. (`#2960 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2960>`_) |
|---|
| 432 | - Some Slackware 14.2 continuous integration problems have been resolved. (`#2961 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2961>`_) |
|---|
| 433 | - Some macOS continuous integration failures have been fixed. (`#2962 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2962>`_) |
|---|
| 434 | - The NoNetworkGrid implementation has been somewhat improved. (`#2966 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2966>`_) |
|---|
| 435 | - A bug in the test suite for the create-alias command has been fixed. (`#2967 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2967>`_) |
|---|
| 436 | - The integration test suite has been updated to use pytest-twisted instead of deprecated pytest APIs. (`#2968 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2968>`_) |
|---|
| 437 | - The magic-folder integration test suite now performs more aggressive cleanup of the processes it launches. (`#2969 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2969>`_) |
|---|
| 438 | - The integration tests now correctly document the `--keep-tempdir` option. (`#2970 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2970>`_) |
|---|
| 439 | - A misuse of super() in the integration tests has been fixed. (`#2971 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2971>`_) |
|---|
| 440 | - Several utilities to facilitate the use of the Eliot causal logging library have been introduced. (`#2973 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2973>`_) |
|---|
| 441 | - The Windows CI configuration has been tweaked. (`#2974 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2974>`_) |
|---|
| 442 | - The Magic-Folder frontend has had additional logging improvements. (`#2977 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2977>`_) |
|---|
| 443 | - (`#2981 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2981>`_, `#2982 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2982>`_) |
|---|
| 444 | - Added a simple sytax checker so that once a file has reached python3 compatibility, it will not regress. (`#3001 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3001>`_) |
|---|
| 445 | - Converted all uses of the print statement to the print function in the ./misc/ directory. (`#3002 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3002>`_) |
|---|
| 446 | - The contributor guidelines are now linked from the GitHub pull request creation page. (`#3003 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3003>`_) |
|---|
| 447 | - Updated the testing code to use the print function instead of the print statement. (`#3008 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3008>`_) |
|---|
| 448 | - Replaced print statement with print fuction for all tahoe_* scripts. (`#3009 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3009>`_) |
|---|
| 449 | - Replaced all remaining instances of the print statement with the print function. (`#3010 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3010>`_) |
|---|
| 450 | - Replace StringIO imports with six.moves. (`#3011 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3011>`_) |
|---|
| 451 | - Updated all Python files to use PEP-3110 exception syntax for Python3 compatibility. (`#3013 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3013>`_) |
|---|
| 452 | - Update raise syntax for Python3 compatibility. (`#3014 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3014>`_) |
|---|
| 453 | - Updated instances of octal literals to use the format 0o123 for Python3 compatibility. (`#3015 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3015>`_) |
|---|
| 454 | - allmydata.test.no_network, allmydata.test.test_system, and allmydata.test.web.test_introducer are now more reliable with respect to bound address collisions. (`#3016 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3016>`_) |
|---|
| 455 | - Removed tuple unpacking from function and lambda definitions for Python3 compatibility. (`#3019 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3019>`_) |
|---|
| 456 | - Updated Python2 long numeric literals for Python3 compatibility. (`#3020 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3020>`_) |
|---|
| 457 | - CircleCI jobs are now faster as a result of pre-building configured Docker images for the CI jobs. (`#3024 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3024>`_) |
|---|
| 458 | - Removed used of backticks for "repr" for Python3 compatibility. (`#3027 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3027>`_) |
|---|
| 459 | - Updated string literal syntax for Python3 compatibility. (`#3028 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3028>`_) |
|---|
| 460 | - Updated CI to enforce Python3 syntax for entire repo. (`#3030 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3030>`_) |
|---|
| 461 | - Replaced pycryptopp with cryptography. (`#3031 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3031>`_) |
|---|
| 462 | - All old-style classes ported to new-style. (`#3042 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3042>`_) |
|---|
| 463 | - Whitelisted "/bin/mv" as command for codechecks performed by tox. This fixes a current warning and prevents future errors (for tox 4). (`#3043 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3043>`_) |
|---|
| 464 | - Progress towards Python 3 compatibility is now visible at <https://tahoe-lafs.github.io/tahoe-depgraph/>. (`#3152 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3152>`_) |
|---|
| 465 | - Collect coverage information from integration tests (`#3234 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3234>`_) |
|---|
| 466 | - NixOS is now a supported Tahoe-LAFS platform. (`#3266 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3266>`_) |
|---|
| 467 | |
|---|
| 468 | |
|---|
| 469 | Misc/Other |
|---|
| 470 | ---------- |
|---|
| 471 | |
|---|
| 472 | - `#1893 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1893>`_, `#2266 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2266>`_, `#2283 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2283>`_, `#2766 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2766>`_, `#2980 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2980>`_, `#2985 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2985>`_, `#2986 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2986>`_, `#2987 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2987>`_, `#2988 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2988>`_, `#2989 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2989>`_, `#2990 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2990>`_, `#2991 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2991>`_, `#2992 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2992>`_, `#2995 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2995>`_, `#3000 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3000>`_, `#3004 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3004>`_, `#3005 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3005>`_, `#3007 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3007>`_, `#3012 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3012>`_, `#3017 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3017>`_, `#3021 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3021>`_, `#3023 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3023>`_, `#3025 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3025>`_, `#3026 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3026>`_, `#3029 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3029>`_, `#3036 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3036>`_, `#3038 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3038>`_, `#3048 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3048>`_, `#3086 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3086>`_, `#3097 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3097>`_, `#3111 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3111>`_, `#3118 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3118>`_, `#3119 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3119>`_, `#3227 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3227>`_, `#3229 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3229>`_, `#3232 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3232>`_, `#3233 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3233>`_, `#3237 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3237>`_, `#3238 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3238>`_, `#3239 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3239>`_, `#3240 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3240>`_, `#3242 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3242>`_, `#3243 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3243>`_, `#3245 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3245>`_, `#3246 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3246>`_, `#3248 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3248>`_, `#3250 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3250>`_, `#3252 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3252>`_, `#3255 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3255>`_, `#3256 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3256>`_, `#3259 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3259>`_, `#3261 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3261>`_, `#3262 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3262>`_, `#3263 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3263>`_, `#3264 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3264>`_, `#3265 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3265>`_, `#3267 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3267>`_, `#3268 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3268>`_, `#3271 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3271>`_, `#3272 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3272>`_, `#3274 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3274>`_, `#3275 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3275>`_, `#3276 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3276>`_, `#3279 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3279>`_, `#3281 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3281>`_, `#3282 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3282>`_, `#3285 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3285>`_ |
|---|
| 473 | |
|---|
| 474 | |
|---|
| 475 | Release 1.13.0 (05-August-2018) |
|---|
| 476 | ''''''''''''''''''''''''''''''' |
|---|
| 477 | |
|---|
| 478 | New Features |
|---|
| 479 | ------------ |
|---|
| 480 | |
|---|
| 481 | The ``tahoe list-aliases`` command gained the ``--readonly-uri`` |
|---|
| 482 | option in `PR400`_, which lists read-only capabilities (the default |
|---|
| 483 | shows read/write capabilities if available). This command also gained |
|---|
| 484 | a ``--json`` option in `PR452`_, providing machine-readable output. |
|---|
| 485 | |
|---|
| 486 | A new command ``tahoe status`` is added, showing some statistics and |
|---|
| 487 | currently active operations (similar to the ``/status`` page in the |
|---|
| 488 | Web UI). See also `PR502`_. |
|---|
| 489 | |
|---|
| 490 | Immutable uploads now use the "servers of happiness" algorithm for |
|---|
| 491 | uploading shares. This means better placement of shares on available |
|---|
| 492 | servers. See `PR416`_. |
|---|
| 493 | |
|---|
| 494 | To join a new client to a grid, the command ``tahoe invite`` was |
|---|
| 495 | added. This uses `magic wormhole`_ to connect two computers and |
|---|
| 496 | exchange the required information to start the client. The "client |
|---|
| 497 | side" of this command is the also new option ``tahoe |
|---|
| 498 | create-client --join=``. Together, this provides a way to provision a |
|---|
| 499 | new client without having to securely transmit the fURL and other |
|---|
| 500 | details. `PR418`_ |
|---|
| 501 | |
|---|
| 502 | ``tahoe backup`` now reports progress. `PR474`_ |
|---|
| 503 | |
|---|
| 504 | The ``tub.port=`` option can now accept ``listen:i2p`` or |
|---|
| 505 | ``listen:tor`` options to use popular anonymity networks with storage |
|---|
| 506 | servers. See `PR437`_ |
|---|
| 507 | |
|---|
| 508 | The place where storage servers put shares (the "storage path") is now |
|---|
| 509 | configurable (`PR472`_). |
|---|
| 510 | |
|---|
| 511 | A PyInstaller-based build is now available (`PR421`_). A "Docker |
|---|
| 512 | compose" setup for development purposes is now available (`PR445`_). |
|---|
| 513 | |
|---|
| 514 | There is now a recommended workflow for Zcash-based donations to support |
|---|
| 515 | storage server operators (`PR506`_). |
|---|
| 516 | |
|---|
| 517 | Bug Fixes in Core |
|---|
| 518 | ----------------- |
|---|
| 519 | |
|---|
| 520 | Some bugs with pidfile handling were fixed (`PR440`_ and `PR450`_) |
|---|
| 521 | meaning invalid pidfiles are now deleted. Error-messages related to |
|---|
| 522 | ``tahoe.cfg`` now include the full path to the file. `PR501`_ fixes |
|---|
| 523 | "address already in use" test failures. `PR502`_ fixes ticket #2926 |
|---|
| 524 | ("tahoe status" failures). `PR487`_ fixes ticket #1455 (setting |
|---|
| 525 | ``X-Frame-Options: DENY``) |
|---|
| 526 | |
|---|
| 527 | |
|---|
| 528 | Web UI Changes |
|---|
| 529 | -------------- |
|---|
| 530 | |
|---|
| 531 | We set the "Referrer-Policy: no-referrer" header on all requests. The |
|---|
| 532 | Welcome page now understands the JSON option (`PR430`_) and OPTIONS |
|---|
| 533 | requests are handled (`PR447`_). |
|---|
| 534 | |
|---|
| 535 | |
|---|
| 536 | Magic Folder Changes |
|---|
| 537 | -------------------- |
|---|
| 538 | |
|---|
| 539 | Multiple magic-folders in a single Tahoe client are now |
|---|
| 540 | supported. Bugs with ``.backup`` files have been fixed, meaning |
|---|
| 541 | spurious ``.backup`` files will be produced less often (`PR448`_, |
|---|
| 542 | `PR475`_). Handling of default umask on new magic-folder files is |
|---|
| 543 | fixed in `PR458`_. The user mtime value is now correctly preserved |
|---|
| 544 | (`PR457`_). |
|---|
| 545 | |
|---|
| 546 | A bug in ``tahoe magic-folder status`` causing active operations to |
|---|
| 547 | sometimes not show up is fixed (`PR461`_). If a directory is missing, |
|---|
| 548 | it is created (`PR492`_). |
|---|
| 549 | |
|---|
| 550 | |
|---|
| 551 | Raw Pull Requests |
|---|
| 552 | ----------------- |
|---|
| 553 | |
|---|
| 554 | In total, 50 Pull Requests were merged for this release, including |
|---|
| 555 | contributions of code or review from 15 different GitHub users. Thanks |
|---|
| 556 | everyone! A complete list of these PRs and contributions: |
|---|
| 557 | |
|---|
| 558 | `PR380`_: `daira`_ |
|---|
| 559 | `PR400`_: `meejah`_ (with `warner`_) |
|---|
| 560 | `PR403`_: `meejah`_ |
|---|
| 561 | `PR405`_: `meejah`_ (with `warner`_) |
|---|
| 562 | `PR406`_: `meejah`_ (with `warner`_) |
|---|
| 563 | `PR407`_: `david415`_ (with `meejah`_, `warner`_) |
|---|
| 564 | `PR409`_: `str4d`_ (with `warner`_) |
|---|
| 565 | `PR410`_: `tpltnt`_ (with `warner`_) |
|---|
| 566 | `PR411`_: `tpltnt`_ (with `warner`_, `meejah`_) |
|---|
| 567 | `PR412`_: `tpltnt`_ (with `warner`_) |
|---|
| 568 | `PR414`_: `tpltnt`_ (with `meejah`_, `warner`_) |
|---|
| 569 | `PR416`_: `david415`_, `meejah`_, `markberger`_, `warner`_ |
|---|
| 570 | `PR417`_: `meejah`_ (with `pataquets`_, `warner`_) |
|---|
| 571 | `PR418`_: `meejah`_ (with `crwood`_, `exarkun`_, `warner`_) |
|---|
| 572 | `PR419`_: `tpltnt`_ (with `warner`_) |
|---|
| 573 | `PR420`_: `ValdikSS`_ (with `warner`_) |
|---|
| 574 | `PR421`_: `crwood`_ (with `meejah`_, `warner`_) |
|---|
| 575 | `PR423`_: `warner`_ |
|---|
| 576 | `PR428`_: `warner`_ |
|---|
| 577 | `PR429`_: `exarkun`_ (with `warner`_) |
|---|
| 578 | `PR430`_: `david415`_, `exarkun`_ (with `warner`_) |
|---|
| 579 | `PR432`_: `exarkun`_ (with `meejah`_) |
|---|
| 580 | `PR433`_: `exarkun`_ (with `warner`_) |
|---|
| 581 | `PR434`_: `exarkun`_ (with `warner`_) |
|---|
| 582 | `PR437`_: `warner`_ |
|---|
| 583 | `PR438`_: `warner`_ (with `meejah`_) |
|---|
| 584 | `PR440`_: `exarkun`_, `lpirl`_ (with `meejah`_) |
|---|
| 585 | `PR444`_: `AnBuKu`_ (with `warner`_) |
|---|
| 586 | `PR445`_: `bookchin`_ (with `warner`_) |
|---|
| 587 | `PR447`_: `meejah`_ (with `tpltnt`_, `meejah`_) |
|---|
| 588 | `PR448`_: `meejah`_ (with `warner`_) |
|---|
| 589 | `PR450`_: `exarkun`_, `meejah`_, `lpirl`_ |
|---|
| 590 | `PR452`_: `meejah`_ (with `tpltnt`_) |
|---|
| 591 | `PR453`_: `meejah`_ |
|---|
| 592 | `PR454`_: `meejah`_ (with `tpltnt`_, `meejah`_, `warner`_) |
|---|
| 593 | `PR455`_: `tpltnt`_ (with `meejah`_) |
|---|
| 594 | `PR456`_: `meejah`_ (with `meejah`_) |
|---|
| 595 | `PR457`_: `meejah`_ (with `crwood`_, `tpltnt`_) |
|---|
| 596 | `PR458`_: `meejah`_ (with `tpltnt`_) |
|---|
| 597 | `PR460`_: `tpltnt`_ (with `exarkun`_, `meejah`_) |
|---|
| 598 | `PR462`_: `meejah`_ (with `crwood`_) |
|---|
| 599 | `PR464`_: `meejah`_ |
|---|
| 600 | `PR470`_: `meejah`_ (with `exarkun`_, `tpltnt`_, `warner`_) |
|---|
| 601 | `PR472`_: `exarkun`_, `meskio`_ |
|---|
| 602 | `PR474`_: `exarkun`_ |
|---|
| 603 | `PR475`_: `meejah`_ (with `exarkun`_) |
|---|
| 604 | `PR482`_: `crwood`_ (with `warner`_) |
|---|
| 605 | `PR485`_: `warner`_ |
|---|
| 606 | `PR486`_: `exarkun`_ (with `warner`_) |
|---|
| 607 | `PR487`_: `exarkun`_ (with `tpltnt`_) |
|---|
| 608 | `PR489`_: `exarkun`_ |
|---|
| 609 | `PR490`_: `exarkun`_ |
|---|
| 610 | `PR491`_: `exarkun`_ (with `meejah`_) |
|---|
| 611 | `PR492`_: `exarkun`_ (with `meejah`_, `tpltnt`_) |
|---|
| 612 | `PR493`_: `exarkun`_ (with `meejah`_) |
|---|
| 613 | `PR494`_: `exarkun`_ (with `meejah`_) |
|---|
| 614 | `PR497`_: `meejah`_ (with `multikatt`_, `exarkun`_) |
|---|
| 615 | `PR499`_: `exarkun`_ (with `meejah`_) |
|---|
| 616 | `PR501`_: `exarkun`_ (with `meejah`_) |
|---|
| 617 | `PR502`_: `exarkun`_ (with `meejah`_) |
|---|
| 618 | `PR506`_: `exarkun`_ (with `crwood`_, `nejucomo`_) |
|---|
| 619 | |
|---|
| 620 | |
|---|
| 621 | Developer and Internal Changes |
|---|
| 622 | ------------------------------ |
|---|
| 623 | |
|---|
| 624 | People hacking on Tahoe-LAFS code will be interested in some internal |
|---|
| 625 | improvements which shouldn't have any user-visible effects: |
|---|
| 626 | |
|---|
| 627 | * internal: skip some unicode tests on non-unicode platforms #2912 |
|---|
| 628 | * internal: tox: pre-install Incremental to workaround setuptools bug #2913 |
|---|
| 629 | * internal: fix PyInstaller builds `PR482`_ |
|---|
| 630 | * internal: use @implementer instead of implements `PR406`_ |
|---|
| 631 | * internal: improve happiness integration test #2895 `PR432`_ |
|---|
| 632 | * web internal: refactor response-format (?t=) logic #2893 `PR429`_ |
|---|
| 633 | * internal: fix pyflakes issues #2898 `PR434`_ |
|---|
| 634 | * internal: setup.py use find_packages #2897 `PR433`_ |
|---|
| 635 | * internal: ValueOrderedDict fixes #2891 |
|---|
| 636 | * internal: remove unnused NumDict #2891 `PR438`_ |
|---|
| 637 | * internal: setup.py use python_requires= so tox3 works #2876 |
|---|
| 638 | * internal: rewrite tahoe stop/start/daemonize refs #1148 #275 #1121 #1377 #2149 #719 `PR417`_ |
|---|
| 639 | * internal: add docs links to RFCs/etc `PR456`_ |
|---|
| 640 | * internal: magic-folder test improvement `PR453`_ |
|---|
| 641 | * internal: pytest changes `PR462`_ |
|---|
| 642 | * internal: upload appveyor generated wheels as artifacts #2903 |
|---|
| 643 | * internal: fix tox-vs-setuptools-upgrade #2910 |
|---|
| 644 | * deps: require txi2p>=0.3.2 to work around TLS who-is-client issue #2861 `PR409`_ |
|---|
| 645 | * deps: now need libyaml-dev from system before build `PR420`_ |
|---|
| 646 | * deps: twisted>=16.4.0 for "python -m twisted.trial" `PR454`_ |
|---|
| 647 | * deps: pin pypiwin32 to 219 until upstream bug resolved `PR464`_ |
|---|
| 648 | * deps: setuptools >=28.8.0 for something `PR470`_ |
|---|
| 649 | * deps: use stdlib "json" instead of external "simplejson" #2766 `PR405`_ |
|---|
| 650 | * complain more loudly in setup.py under py3 `PR414`_ |
|---|
| 651 | * rename "filesystem" to "file store" #2345 `PR380`_ |
|---|
| 652 | * replace deprecated twisted.web.client with treq #2857 `PR428`_ |
|---|
| 653 | * improve/stablize some test coverage #2891 |
|---|
| 654 | * TODO: can we remove this now? pypiwin32 is now at 223 |
|---|
| 655 | * use secure mkstemp() `PR460`_ |
|---|
| 656 | * test "tahoe list-aliases --readonly-uri" #2863 `PR403`_ |
|---|
| 657 | * #455: remove outdated comment |
|---|
| 658 | * `PR407`_ fix stopService calls |
|---|
| 659 | * `PR410`_ explicit python2.7 virtualenv |
|---|
| 660 | * `PR419`_ fix list of supported OSes |
|---|
| 661 | * `PR423`_ switch travis to a supported Ubuntu |
|---|
| 662 | * deps: no longer declare a PyCrypto dependency (actual use vanished long ago) `PR514`_ |
|---|
| 663 | |
|---|
| 664 | |
|---|
| 665 | |
|---|
| 666 | .. _PR380: https://github.com/tahoe-lafs/tahoe-lafs/pull/380 |
|---|
| 667 | .. _PR400: https://github.com/tahoe-lafs/tahoe-lafs/pull/400 |
|---|
| 668 | .. _PR403: https://github.com/tahoe-lafs/tahoe-lafs/pull/403 |
|---|
| 669 | .. _PR405: https://github.com/tahoe-lafs/tahoe-lafs/pull/405 |
|---|
| 670 | .. _PR406: https://github.com/tahoe-lafs/tahoe-lafs/pull/406 |
|---|
| 671 | .. _PR407: https://github.com/tahoe-lafs/tahoe-lafs/pull/407 |
|---|
| 672 | .. _PR409: https://github.com/tahoe-lafs/tahoe-lafs/pull/409 |
|---|
| 673 | .. _PR410: https://github.com/tahoe-lafs/tahoe-lafs/pull/410 |
|---|
| 674 | .. _PR412: https://github.com/tahoe-lafs/tahoe-lafs/pull/412 |
|---|
| 675 | .. _PR414: https://github.com/tahoe-lafs/tahoe-lafs/pull/414 |
|---|
| 676 | .. _PR416: https://github.com/tahoe-lafs/tahoe-lafs/pull/416 |
|---|
| 677 | .. _PR417: https://github.com/tahoe-lafs/tahoe-lafs/pull/417 |
|---|
| 678 | .. _PR418: https://github.com/tahoe-lafs/tahoe-lafs/pull/418 |
|---|
| 679 | .. _PR419: https://github.com/tahoe-lafs/tahoe-lafs/pull/419 |
|---|
| 680 | .. _PR420: https://github.com/tahoe-lafs/tahoe-lafs/pull/420 |
|---|
| 681 | .. _PR421: https://github.com/tahoe-lafs/tahoe-lafs/pull/421 |
|---|
| 682 | .. _PR423: https://github.com/tahoe-lafs/tahoe-lafs/pull/423 |
|---|
| 683 | .. _PR428: https://github.com/tahoe-lafs/tahoe-lafs/pull/428 |
|---|
| 684 | .. _PR429: https://github.com/tahoe-lafs/tahoe-lafs/pull/429 |
|---|
| 685 | .. _PR430: https://github.com/tahoe-lafs/tahoe-lafs/pull/430 |
|---|
| 686 | .. _PR432: https://github.com/tahoe-lafs/tahoe-lafs/pull/432 |
|---|
| 687 | .. _PR433: https://github.com/tahoe-lafs/tahoe-lafs/pull/433 |
|---|
| 688 | .. _PR434: https://github.com/tahoe-lafs/tahoe-lafs/pull/434 |
|---|
| 689 | .. _PR437: https://github.com/tahoe-lafs/tahoe-lafs/pull/437 |
|---|
| 690 | .. _PR438: https://github.com/tahoe-lafs/tahoe-lafs/pull/438 |
|---|
| 691 | .. _PR440: https://github.com/tahoe-lafs/tahoe-lafs/pull/440 |
|---|
| 692 | .. _PR444: https://github.com/tahoe-lafs/tahoe-lafs/pull/444 |
|---|
| 693 | .. _PR445: https://github.com/tahoe-lafs/tahoe-lafs/pull/445 |
|---|
| 694 | .. _PR447: https://github.com/tahoe-lafs/tahoe-lafs/pull/447 |
|---|
| 695 | .. _PR448: https://github.com/tahoe-lafs/tahoe-lafs/pull/448 |
|---|
| 696 | .. _PR450: https://github.com/tahoe-lafs/tahoe-lafs/pull/450 |
|---|
| 697 | .. _PR452: https://github.com/tahoe-lafs/tahoe-lafs/pull/452 |
|---|
| 698 | .. _PR453: https://github.com/tahoe-lafs/tahoe-lafs/pull/453 |
|---|
| 699 | .. _PR454: https://github.com/tahoe-lafs/tahoe-lafs/pull/454 |
|---|
| 700 | .. _PR456: https://github.com/tahoe-lafs/tahoe-lafs/pull/456 |
|---|
| 701 | .. _PR457: https://github.com/tahoe-lafs/tahoe-lafs/pull/457 |
|---|
| 702 | .. _PR458: https://github.com/tahoe-lafs/tahoe-lafs/pull/458 |
|---|
| 703 | .. _PR460: https://github.com/tahoe-lafs/tahoe-lafs/pull/460 |
|---|
| 704 | .. _PR462: https://github.com/tahoe-lafs/tahoe-lafs/pull/462 |
|---|
| 705 | .. _PR464: https://github.com/tahoe-lafs/tahoe-lafs/pull/464 |
|---|
| 706 | .. _PR470: https://github.com/tahoe-lafs/tahoe-lafs/pull/470 |
|---|
| 707 | .. _PR472: https://github.com/tahoe-lafs/tahoe-lafs/pull/472 |
|---|
| 708 | .. _PR474: https://github.com/tahoe-lafs/tahoe-lafs/pull/474 |
|---|
| 709 | .. _PR482: https://github.com/tahoe-lafs/tahoe-lafs/pull/482 |
|---|
| 710 | .. _PR502: https://github.com/tahoe-lafs/tahoe-lafs/pull/502 |
|---|
| 711 | .. _PR506: https://github.com/tahoe-lafs/tahoe-lafs/pull/506 |
|---|
| 712 | .. _PR514: https://github.com/tahoe-lafs/tahoe-lafs/pull/514 |
|---|
| 713 | .. _AnBuKu: https://github.com/AnBuKu |
|---|
| 714 | .. _ValdikSS: https://github.com/ValdikSS |
|---|
| 715 | .. _bookchin: https://github.com/bookchin |
|---|
| 716 | .. _crwood: https://github.com/crwood |
|---|
| 717 | .. _nejucomo: https://github.com/nejucomo |
|---|
| 718 | .. _daira: https://github.com/daira |
|---|
| 719 | .. _david415: https://github.com/david415 |
|---|
| 720 | .. _exarkun: https://github.com/exarkun |
|---|
| 721 | .. _lpirl: https://github.com/lpirl |
|---|
| 722 | .. _markberger: https://github.com/markberger |
|---|
| 723 | .. _meejah: https://github.com/meejah |
|---|
| 724 | .. _meskio: https://github.com/meskio |
|---|
| 725 | .. _multikatt: https://github.com/multikatt |
|---|
| 726 | .. _pataquets: https://github.com/pataquets |
|---|
| 727 | .. _str4d: https://github.com/str4d |
|---|
| 728 | .. _tpltnt: https://github.com/tpltnt |
|---|
| 729 | .. _warner: https://github.com/warner |
|---|
| 730 | |
|---|
| 731 | |
|---|
| 732 | |
|---|
| 733 | |
|---|
| 734 | Release 1.12.1 (18-Jan-2017) |
|---|
| 735 | '''''''''''''''''''''''''''' |
|---|
| 736 | |
|---|
| 737 | This fixes a few small problems discovered just after 1.12.0 was released. |
|---|
| 738 | |
|---|
| 739 | * ``introducers.yaml`` was entirely broken (due to a unicode-vs-ascii |
|---|
| 740 | problem), and the documentation recommended an invalid syntax. Both have |
|---|
| 741 | been fixed. (#2862) |
|---|
| 742 | * Creating a node with ``--hide-ip`` shouldn't set ``tcp = tor`` if txtorcon |
|---|
| 743 | is unavailable. I2P-only systems should get ``tcp = disabled``. (#2860) |
|---|
| 744 | * As a result, we now require foolscap-0.12.6 . |
|---|
| 745 | * setup.py now creates identical wheels on win32 and unix. Previously wheels |
|---|
| 746 | created on windows got an unconditional dependency upon ``pypiwin32``, |
|---|
| 747 | making them uninstallable on unix. Now that dependency is marked as |
|---|
| 748 | ``sys_platform=win32`` only. (#2763) |
|---|
| 749 | |
|---|
| 750 | Some other small changes include: |
|---|
| 751 | |
|---|
| 752 | * The deep-stats t=json response now includes an "api-version" field, |
|---|
| 753 | currently set to 1. (#567) |
|---|
| 754 | * WUI Directory listings use ``rel=noreferrer`` to avoid leaking the dircap |
|---|
| 755 | to the JS contents of the target file. (#151, #378) |
|---|
| 756 | * Remove the dependency on ``shutilwhich`` (#2856) |
|---|
| 757 | |
|---|
| 758 | |
|---|
| 759 | Release 1.12.0 (17-Dec-2016) |
|---|
| 760 | '''''''''''''''''''''''''''' |
|---|
| 761 | |
|---|
| 762 | New Features |
|---|
| 763 | ------------ |
|---|
| 764 | |
|---|
| 765 | This release features improved Tor/I2P integration. It is now easy to:: |
|---|
| 766 | |
|---|
| 767 | * use Tor to hide your IP address during external network activity |
|---|
| 768 | * connect to Tor/I2P-based storage servers |
|---|
| 769 | * run an Introducer or a storage node as a Tor "onion service" |
|---|
| 770 | |
|---|
| 771 | See docs/anonymity-configuration.rst for instructions and new node-creation |
|---|
| 772 | arguments (--hide-ip, --listen=tor), which include ways to use SOCKS servers |
|---|
| 773 | for outbound connections. Tor/I2P/Socks support requires extra python |
|---|
| 774 | libraries to be installed (e.g. 'pip install tahoe-lafs[tor]'), as well as |
|---|
| 775 | matching (non-python) daemons available on the host system. (tickets #517, |
|---|
| 776 | #2490, #2838) |
|---|
| 777 | |
|---|
| 778 | Nodes can use multiple introducers by adding entries to a new |
|---|
| 779 | ``private/introducers.yaml`` file, or stop using introduction entirely by |
|---|
| 780 | omitting the ``introducer.furl`` key from tahoe.cfg (introducerless clients |
|---|
| 781 | will need static servers configured to connect anywhere). Server |
|---|
| 782 | announcements are sent to all connected Introducers, and clients merge all |
|---|
| 783 | announcements they see, which can improve grid reliability. (#68) |
|---|
| 784 | |
|---|
| 785 | In addition, nodes now cache the announcements they receive in a YAML file, |
|---|
| 786 | and use their cached information at startup until the Introducer connection |
|---|
| 787 | is re-established. This makes nodes more tolerant of Introducers that are |
|---|
| 788 | temporarily offline. Nodes admins can copy text from the cache into a new |
|---|
| 789 | ``private/servers.yaml`` file to add "static servers", which augment/override |
|---|
| 790 | what the Introducer offers. This can modify aspects of the server, or use |
|---|
| 791 | servers that were never announced in the first place. (#2788) |
|---|
| 792 | |
|---|
| 793 | Nodes now use a separate Foolscap "Tub" for each server connection, so |
|---|
| 794 | ``servers.yaml`` can override the connection rules (Tor vs direct-TCP) for |
|---|
| 795 | each one independently. This offers a slight privacy improvement, but slows |
|---|
| 796 | down connections slightly (perhaps 75ms per server), and breaks an obscure |
|---|
| 797 | NAT-bypass trick which enabled storage servers to run behind NAT boxes (but |
|---|
| 798 | only when all the *clients* of the storage server had public IP addresses, |
|---|
| 799 | and were also configured as servers). (#2759, #517) |
|---|
| 800 | |
|---|
| 801 | "Magic Folders" is an experimental two-way directory synchronization tool, |
|---|
| 802 | contributed by Least Authority Enterprises, which replaces the previous |
|---|
| 803 | experimental (one-way) "drop-upload" feature. This allows multiple users to |
|---|
| 804 | keep a single directory in-sync, using Tahoe as the backing store. See |
|---|
| 805 | docs/frontends/magic-folder.rst for details and configuration instructions. |
|---|
| 806 | |
|---|
| 807 | Compatibility Issues |
|---|
| 808 | -------------------- |
|---|
| 809 | |
|---|
| 810 | The old version-1 Introducer protocol has been removed. Tahoe has used the |
|---|
| 811 | version-2 protocol since 1.10 (released in 2013), but all nodes (clients, |
|---|
| 812 | servers, and the Introducer itself) provided backwards-compatibility |
|---|
| 813 | translations when encountering older peers. These translations were finally |
|---|
| 814 | removed, so Tahoe nodes at 1.12 or later will not be able to interact with |
|---|
| 815 | nodes at 1.9 or older. (#2784) |
|---|
| 816 | |
|---|
| 817 | The versions of Tahoe (1.11.0) and Foolscap (0.6.5) that shipped in |
|---|
| 818 | Debian/Jesse (the most recent stable release, as of December 2016) are |
|---|
| 819 | regrettably not forwards-compatible with this new version. Nodes running |
|---|
| 820 | Jesse will not be able to connect to servers or introducers created with this |
|---|
| 821 | release because they cannot parse the new ``tcp:HOST:PORT`` hint syntax (this |
|---|
| 822 | syntax has been around for a while, but this is the first Tahoe release to |
|---|
| 823 | automatically generate such hints). If you need to work around this, then |
|---|
| 824 | after creating your new node, edit the tahoe.cfg of your new |
|---|
| 825 | server/introducer: in ``[node] tub.location``, make each connection hint look |
|---|
| 826 | like ``HOST:PORT`` instead of ``tcp:HOST:PORT``. If your grid only has nodes |
|---|
| 827 | with Foolscap-0.7.0 or later, you will not need this workaround. (#2831) |
|---|
| 828 | |
|---|
| 829 | Nodes now use an Ed25519 public key as a serverid, instead of a Foolscap "tub |
|---|
| 830 | id", so status displays will report a different serverid after upgrade. For |
|---|
| 831 | the most part this should be self-consistent, however if you have an old |
|---|
| 832 | (1.11) client talking to a new (1.12) Helper, then the client's upload |
|---|
| 833 | results (on the "Recent Uploads And Downloads" web page) will show unusual |
|---|
| 834 | server ids. (#1363) |
|---|
| 835 | |
|---|
| 836 | Dependency/Installation changes |
|---|
| 837 | ------------------------------- |
|---|
| 838 | |
|---|
| 839 | Tahoe now requires Twisted >= 16.1.0, so ensure that unit tests do not fail |
|---|
| 840 | because of uncancelled timers left running by HostnameEndpoint. It also |
|---|
| 841 | requires the Tor/I2P supporting code from Foolscap >= 0.12.5 . (#2781) |
|---|
| 842 | |
|---|
| 843 | Configuration Changes |
|---|
| 844 | --------------------- |
|---|
| 845 | |
|---|
| 846 | Some small changes were made to the way Tahoe-LAFS is configured, via |
|---|
| 847 | ``tahoe.cfg`` and other files. In general, node behavior should now be more |
|---|
| 848 | predictable, and errors should be surfaced earlier. |
|---|
| 849 | |
|---|
| 850 | * ``tub.port`` is now an Endpoint server specification string (which is |
|---|
| 851 | pretty much just like a strports string, but can be extended by plugins). |
|---|
| 852 | It now rejects "tcp:0" and "0". The tahoe.cfg value overrides anything |
|---|
| 853 | stored on disk (in client.port). This should have no effect on most old |
|---|
| 854 | nodes (which did not set tub.port in tahoe.cfg, and which wrote an |
|---|
| 855 | allocated port number to client.port the first time they launched). Folks |
|---|
| 856 | who want to listen on a specific port number typically set tub.port to |
|---|
| 857 | "tcp:12345" or "12345", not "0". (ticket #2491) |
|---|
| 858 | * This should enable IPv6 on servers, either via AAAA records or colon-hex |
|---|
| 859 | addresses. (#2827) |
|---|
| 860 | * The "portnumfile" (e.g. NODEDIR/client.port) is written as soon as the port |
|---|
| 861 | is allocated, before the tub is created, and only if "tub.port" was empty. |
|---|
| 862 | The old code wrote to it unconditionally, and after Tub startup. So if the |
|---|
| 863 | user allows NODEDIR/client.port to be written, then later modifies |
|---|
| 864 | tahoe.cfg to set "tub.port" to a different value, this difference will |
|---|
| 865 | persist (and the node will honor tahoe.cfg "tub.port" exclusively). |
|---|
| 866 | * We now encourage static allocation of tub.port, and pre-configuration of |
|---|
| 867 | the node's externally-reachable IP address or hostname (by setting |
|---|
| 868 | tub.location). Automatic IP-address detection is deprecated. Automatic port |
|---|
| 869 | allocation is discouraged. Both are managed by the new arguments to "tahoe |
|---|
| 870 | create-node". |
|---|
| 871 | * "tahoe start" now creates the Tub, and all primary software components, |
|---|
| 872 | before the child process daemonizes. Many configuration errors which would |
|---|
| 873 | previously have been reported in a logfile (after node startup), will now |
|---|
| 874 | be signalled immediately, via stderr. In these cases, the "tahoe start" |
|---|
| 875 | process will exit with a non-zero return code. (#2491) |
|---|
| 876 | * Unrecognized tahoe.cfg options are rejected at startup, not ignored (#2809) |
|---|
| 877 | * ``tub.port`` can take multple (comma-separated) endpoints, to listen on |
|---|
| 878 | multiple ports at the same time, useful for dual IPv4+IPv6 servers. (#867) |
|---|
| 879 | * An empty ``tub.port`` means don't listen at all, which is appropriate for |
|---|
| 880 | client-only nodes (#2816) |
|---|
| 881 | * A new setting, ``reveal-ip-address = false``, acts as a safety belt, |
|---|
| 882 | causing an error to be thrown if any other setting might reveal the node's |
|---|
| 883 | IP address (i.e. it requires Tor or I2P to be used, rather than direct TCP |
|---|
| 884 | connections). This is set automatically by ``tahoe create-client |
|---|
| 885 | --hide-ip``. (#1010) |
|---|
| 886 | |
|---|
| 887 | Server-like nodes (Storage Servers and Introducers), created with ``tahoe |
|---|
| 888 | create-node`` and ``tahoe create-introducer``, now accept new arguments to |
|---|
| 889 | control how they listen for connections, and how they advertise themselves to |
|---|
| 890 | other nodes. You can use ``--listen=tcp`` and ``--hostname=`` to choose a |
|---|
| 891 | port automatically, or ``--listen=tor`` / ``--listen=i2p`` to use Tor/I2P |
|---|
| 892 | hidden services instead. You can also use ``--port=`` and ``--location=`` to |
|---|
| 893 | explicitly control the listener and the advertised location. (#2773, #2490) |
|---|
| 894 | |
|---|
| 895 | The "stats-gatherer", used by enterprise deployments to collect runtime |
|---|
| 896 | statistics from a fleet of Tahoe storage servers, must now be assigned a |
|---|
| 897 | hostname, or location+port pair, at creation time. It will no longer attempt |
|---|
| 898 | to guess its location (with /sbin/ifconfig). The "tahoe |
|---|
| 899 | create-stats-gatherer" command requires either "--hostname=", or both |
|---|
| 900 | "--location=" and "--port". (#2773) |
|---|
| 901 | |
|---|
| 902 | To keep your old stats-gatherers working, with their original FURL, you must |
|---|
| 903 | determine a suitable --location and --port, and write their values into |
|---|
| 904 | NODEDIR/location and NODEDIR/port, respectively. Or you could simply rebuild |
|---|
| 905 | it by re-running "tahoe create-stats-gatherer" with the new arguments. |
|---|
| 906 | |
|---|
| 907 | The stats gatherer now updates a JSON file named "stats.json", instead of a |
|---|
| 908 | Pickle named "stats.pickle". The munin plugins in |
|---|
| 909 | misc/operations_helpers/munin/ have been updated to match, and must be |
|---|
| 910 | re-installed and re-configured if you use munin. |
|---|
| 911 | |
|---|
| 912 | Removed Features |
|---|
| 913 | ---------------- |
|---|
| 914 | |
|---|
| 915 | The "key-generator" node type has been removed. This was a standalone process |
|---|
| 916 | that maintained a queue of RSA keys, and clients could offload their |
|---|
| 917 | key-generation work by adding "key_generator.furl=" in their tahoe.cfg files, |
|---|
| 918 | to create mutable files and directories faster. This seemed important back in |
|---|
| 919 | 2006, but these days computers are faster and RSA key generation only takes |
|---|
| 920 | about 90ms. This removes the "tahoe create-key-generator" command. Any |
|---|
| 921 | "key_generator.furl" settings in tahoe.cfg will log a warning and are |
|---|
| 922 | otherwise ignored. Attempts to "tahoe start" a previously-generated |
|---|
| 923 | key-generator node will result in an error. (#2783) |
|---|
| 924 | |
|---|
| 925 | Tahoe's HTTP Web-API (aka "the WAPI") had an endpoint named "/file/". This |
|---|
| 926 | has been deprecated, and applications should use "/named/" instead. (#1903) |
|---|
| 927 | |
|---|
| 928 | The little-used "manhole" debugging feature has been removed. This allowed |
|---|
| 929 | you to SSH or Telnet "into" a Tahoe node, providing an interactive |
|---|
| 930 | Read-Eval-Print-Loop (REPL) that executed inside the context of the running |
|---|
| 931 | process. (#2367) |
|---|
| 932 | |
|---|
| 933 | The "tahoe debug trial" and "tahoe debug repl" CLI commands were removed, as |
|---|
| 934 | "tox" is now the preferred way to run tests. (#2735) |
|---|
| 935 | |
|---|
| 936 | One of the "recent uploads and downloads" status pages was using a |
|---|
| 937 | Google-hosted API to draw a timing chart of the "mapupdate" operation. This |
|---|
| 938 | has been removed, both for privacy (to avoid revealing the serverids to |
|---|
| 939 | Google) and because the API was deprecated several years ago. (#1942) |
|---|
| 940 | |
|---|
| 941 | The "_appname.py" feature was removed. Early in Tahoe's history (at |
|---|
| 942 | AllMyData), this file allowed the "tahoe" executable to be given a different |
|---|
| 943 | name depending upon which Darcs patches were included in the particular |
|---|
| 944 | source tree (one for production, another for development, etc). We haven't |
|---|
| 945 | needed this for a long time, so it was removed. (#2754) |
|---|
| 946 | |
|---|
| 947 | Other Changes |
|---|
| 948 | ------------- |
|---|
| 949 | |
|---|
| 950 | Documentation is now hosted at http://tahoe-lafs.readthedocs.io/ (not .org). |
|---|
| 951 | |
|---|
| 952 | Tahoe's testing-only dependencies can now be installed by asking for the |
|---|
| 953 | [test] extra, so if you want to set up a virtualenv for testing, use "pip |
|---|
| 954 | install -e .[test]" instead just of "pip install -e ." . This includes "tox", |
|---|
| 955 | "coverage", "pyflakes", "mock", and all the Tor/I2P extras. Most developer |
|---|
| 956 | tooling (code-checks, documentation builds, deprecation warnings, etc) have |
|---|
| 957 | been moved from a Makefile into tox environments. (#2776) |
|---|
| 958 | |
|---|
| 959 | The "Welcome" (web) page now shows more detail about the introducer and |
|---|
| 960 | storage-server connections, including which connection handler is being used |
|---|
| 961 | (tcp/tor/i2p) and why specific connection hints failed to connect. (#2818, |
|---|
| 962 | #2819) |
|---|
| 963 | |
|---|
| 964 | The little-used "control port" now uses a separate (ephemeral) Tub. This |
|---|
| 965 | means the FURL changes each time the node is restarted, and it only listens |
|---|
| 966 | on the loopback (127.0.0.1) interface, on a random port. As the control port |
|---|
| 967 | is only used by some automated tests (check_memory, check_speed), this |
|---|
| 968 | shouldn't affect anyone. (#2794) |
|---|
| 969 | |
|---|
| 970 | The slightly-more-used "log port" now also uses a separate (ephemeral) Tub, |
|---|
| 971 | with the same consequences. The lack of a stable (and externally-reachable) |
|---|
| 972 | logport.furl means it is no longer possible to use ``flogtool tail FURL`` |
|---|
| 973 | against a distant Tahoe server, however ``flogtool tail |
|---|
| 974 | .../nodedir/private/logport.furl`` still works just fine (and is the more |
|---|
| 975 | common use case anyways). We might bring back the ability to configure the |
|---|
| 976 | port and location of the logport in the future, if there is sufficient |
|---|
| 977 | demand, but for now it seems better to avoid the complexity. |
|---|
| 978 | |
|---|
| 979 | The default tahoe.cfg setting of ``web.static = public_html``, when |
|---|
| 980 | ``NODEDIR/public_html/`` does not exist, no longer causes web browsers to |
|---|
| 981 | display a traceback which reveals somewhat-private information like the value |
|---|
| 982 | of NODEDIR, and the Python/OS versions in use. Instead it just shows a plain |
|---|
| 983 | 404 error. (#1720) |
|---|
| 984 | |
|---|
| 985 | |
|---|
| 986 | Release 1.11.0 (30-Mar-2016) |
|---|
| 987 | '''''''''''''''''''''''''''' |
|---|
| 988 | |
|---|
| 989 | New Build Process |
|---|
| 990 | ----------------- |
|---|
| 991 | |
|---|
| 992 | ``pip install`` (in a virtualenv) is now the recommended way to install |
|---|
| 993 | Tahoe-LAFS. The old "bin/tahoe" script (created inside the source tree, |
|---|
| 994 | rather than in a virtualenv) has been removed, as has the ancient |
|---|
| 995 | "zetuptoolz" fork of setuptools. |
|---|
| 996 | |
|---|
| 997 | Tahoe was started in 2006, and predates pip and virtualenv. From the |
|---|
| 998 | very beginning it used a home-made build process that attempted to make |
|---|
| 999 | ``setup.py build`` behave somewhat like a modern ``pip |
|---|
| 1000 | install --editable .``. It included a local copy of ``setuptools`` (to |
|---|
| 1001 | avoid requiring it to be pre-installed), which was then forked as |
|---|
| 1002 | ``zetuptoolz`` to fix bugs during the bad old days of setuptools |
|---|
| 1003 | non-maintenance. The pseudo-virtualenv used a script named |
|---|
| 1004 | ``bin/tahoe``, created during ``setup.py build``, to set up the $PATH |
|---|
| 1005 | and $PYTHONPATH as necessary. |
|---|
| 1006 | |
|---|
| 1007 | Starting with this release, all the custom build process has been |
|---|
| 1008 | removed, and Tahoe should be installable with standard modern tools. You |
|---|
| 1009 | will need ``virtualenv`` installed (which provides ``pip`` and |
|---|
| 1010 | setuptools). Many Python installers include ``virtualenv`` already, and |
|---|
| 1011 | Debian-like systems can use ``apt-get install python-virtualenv``. If |
|---|
| 1012 | the command is not available on your system, follow the installation |
|---|
| 1013 | instructions at https://virtualenv.pypa.io/en/latest/ . |
|---|
| 1014 | |
|---|
| 1015 | Then, to install the latest version, create a virtualenv and use |
|---|
| 1016 | ``pip``:: |
|---|
| 1017 | |
|---|
| 1018 | virtualenv venv |
|---|
| 1019 | . venv/bin/activate |
|---|
| 1020 | (venv) pip install tahoe-lafs |
|---|
| 1021 | (venv) tahoe --version |
|---|
| 1022 | |
|---|
| 1023 | To run Tahoe from a source checkout (so you can hack on Tahoe), use |
|---|
| 1024 | ``pip install --editable .`` from the git tree:: |
|---|
| 1025 | |
|---|
| 1026 | git clone https://github.com/tahoe-lafs/tahoe-lafs.git |
|---|
| 1027 | cd tahoe-lafs |
|---|
| 1028 | virtualenv venv |
|---|
| 1029 | . venv/bin/activate |
|---|
| 1030 | (venv) pip install --editable . |
|---|
| 1031 | (venv) tahoe --version |
|---|
| 1032 | |
|---|
| 1033 | The ``pip install`` will download and install all necessary Python |
|---|
| 1034 | dependencies. Some dependencies require a C compiler and system |
|---|
| 1035 | libraries to build: on Debian/Ubuntu-like systems, use ``apt-get install |
|---|
| 1036 | build-essential python-dev libffi-dev libssl-dev``. On Windows and OS-X |
|---|
| 1037 | platforms, we provide pre-compiled binary wheels at |
|---|
| 1038 | ``https://tahoe-lafs.org/deps/``, removing the need for a compiler. |
|---|
| 1039 | |
|---|
| 1040 | (#1582, #2445, also helped to close: #142, #709, #717, #799, #1220, |
|---|
| 1041 | #1260, #1270, #1403, #1450, #1451, #1504, #1896, #2044, #2221, #2021, |
|---|
| 1042 | #2028, #2066, #2077, #2247, #2255, #2286, #2306, #2473, #2475, #2530, |
|---|
| 1043 | #657, #2446, #2439, #2317, #1753, #1009, #1168, #1238, #1258, #1334, |
|---|
| 1044 | #1346, #1464, #2356, #2570) |
|---|
| 1045 | |
|---|
| 1046 | New PyPI Distribution Name |
|---|
| 1047 | -------------------------- |
|---|
| 1048 | |
|---|
| 1049 | Tahoe-LAFS is now known on PyPI as ``tahoe-lafs``. It was formerly known |
|---|
| 1050 | as ``allmydata-tahoe``. This affects ``pip install`` commands. (#2011) |
|---|
| 1051 | |
|---|
| 1052 | Because of this change, if you use a git checkout, you may need to run |
|---|
| 1053 | ``make distclean`` (to delete the machine-generated |
|---|
| 1054 | ``src/allmydata/_appname.py`` file). You may also need to remove |
|---|
| 1055 | ``allmydata-tahoe`` from any virtualenvs you've created, before |
|---|
| 1056 | installing ``tahoe-lafs`` into them. If all else fails, make a new git |
|---|
| 1057 | checkout, and use a new virtualenv. |
|---|
| 1058 | |
|---|
| 1059 | Note that the importable *package* name is still ``allmydata``, but this |
|---|
| 1060 | only affects developers, not end-users. This name scheduled to be |
|---|
| 1061 | changed in a future release. (#1950) |
|---|
| 1062 | |
|---|
| 1063 | |
|---|
| 1064 | Compatibility and Dependency Updates |
|---|
| 1065 | ------------------------------------ |
|---|
| 1066 | |
|---|
| 1067 | Tahoe now requires Python 2.7 on all platforms. (#2445) |
|---|
| 1068 | |
|---|
| 1069 | Tahoe now requires Foolscap 0.10.1, which fixes incompatibilities with |
|---|
| 1070 | recent Twisted releases. (#2510, #2722, #2567) |
|---|
| 1071 | |
|---|
| 1072 | Tahoe requires Twisted 15.1.0 or later, so it can request the |
|---|
| 1073 | ``Twisted[tls]`` "extra" (this asks Twisted to ask for everything it |
|---|
| 1074 | needs to provide proper TLS support). (#2760) |
|---|
| 1075 | |
|---|
| 1076 | Tests should now work with both Nevow 0.11 and 0.12 . (#2663) |
|---|
| 1077 | |
|---|
| 1078 | Binary wheels for Windows and OS-X (for all dependencies) have been |
|---|
| 1079 | built and are hosted at https://tahoe-lafs.org/deps . Use ``pip |
|---|
| 1080 | install --find-links=URL tahoe-lafs`` to take advantage of them. (#2001) |
|---|
| 1081 | |
|---|
| 1082 | We've removed the SUMO and tahoe-deps tarballs. Please see |
|---|
| 1083 | docs/desert-island.rst for instructions to build tahoe from offline |
|---|
| 1084 | systems. (#1009, #2530, #2446, #2439) |
|---|
| 1085 | |
|---|
| 1086 | Configuration Changes |
|---|
| 1087 | --------------------- |
|---|
| 1088 | |
|---|
| 1089 | A new "peers.preferred" item was added to the ``[client]`` section. This |
|---|
| 1090 | identifies servers that will be promoted to the front of the |
|---|
| 1091 | peer-selection list when uploading or downloading files. Servers are |
|---|
| 1092 | identified by their Node ID (visible on the welcome page). This may be |
|---|
| 1093 | useful to ensure that one full set of shares are placed on nearby |
|---|
| 1094 | servers, making later downloads fast (and avoid using scarce remote |
|---|
| 1095 | bandwidth). The remaining shares can go to distant backup servers. (git |
|---|
| 1096 | commit 96eaca6) |
|---|
| 1097 | |
|---|
| 1098 | Aliases can now be unicode. (git commit 46719a8b) |
|---|
| 1099 | |
|---|
| 1100 | The introducer's "set_encoding_parameters" feature was removed. Once |
|---|
| 1101 | upon a time, the Introducer could recommend encoding parameters |
|---|
| 1102 | (shares.needed and shares.total) to all clients, the idea being that the |
|---|
| 1103 | Introducer had a slightly better idea about the expected size of the |
|---|
| 1104 | storage server pool than clients might. Client-side support for this was |
|---|
| 1105 | removed long ago, but the Introducer itself kept delivering |
|---|
| 1106 | recommendations until this release. (git commit 56a9f5ad) |
|---|
| 1107 | |
|---|
| 1108 | Other Fixes |
|---|
| 1109 | ----------- |
|---|
| 1110 | |
|---|
| 1111 | The OS-X .pkg installer has been improved slightly, to clean up after |
|---|
| 1112 | previous installations better. (#2493) |
|---|
| 1113 | |
|---|
| 1114 | All WUI (Web UI) timestamps should now be a consistent format, using the |
|---|
| 1115 | gateway machine's local time zone. (#1077) |
|---|
| 1116 | |
|---|
| 1117 | The web "welcome page" has been improved: it shows how long a server has |
|---|
| 1118 | been connected (in minutes/hours/days, instead of the date+time when the |
|---|
| 1119 | connection was most recently established). The "announced" column has |
|---|
| 1120 | been replaced with "Last RX" column that shows when we last heard |
|---|
| 1121 | anything from the server. The mostly-useless "storage" column has been |
|---|
| 1122 | removed. (#1973) |
|---|
| 1123 | |
|---|
| 1124 | In the ``tahoe ls`` command, the ``-u`` shortcut for ``--uri`` has been |
|---|
| 1125 | removed, leaving the shortcut free for the global ``--node-url`` option. |
|---|
| 1126 | (#1949, #2137) |
|---|
| 1127 | |
|---|
| 1128 | Some internal logging was disabled, to avoid a temporary bug that caused |
|---|
| 1129 | excessive (perhaps infinite) log messages to be created. (#2567) |
|---|
| 1130 | |
|---|
| 1131 | Other non-user-visible tickets were fixed. (#2499, #2511, #2556, #2663, |
|---|
| 1132 | #2723, #2543) |
|---|
| 1133 | |
|---|
| 1134 | |
|---|
| 1135 | Release 1.10.2 (2015-07-30) |
|---|
| 1136 | ''''''''''''''''''''''''''' |
|---|
| 1137 | |
|---|
| 1138 | Packaging Changes |
|---|
| 1139 | ----------------- |
|---|
| 1140 | |
|---|
| 1141 | This release no longer requires the ``mock`` library (which was previously |
|---|
| 1142 | used in the unit test suite). Shortly after the Tahoe-LAFS 1.10.1 release, a |
|---|
| 1143 | new version of ``mock`` was released (1.1.0) that proved to be incompatible |
|---|
| 1144 | with Tahoe's fork of setuptools, preventing Tahoe-1.10.1 from building at |
|---|
| 1145 | all. `#2465`_ |
|---|
| 1146 | |
|---|
| 1147 | The ``tahoe --version`` output is now less likely to include scary diagnostic |
|---|
| 1148 | warnings that look deceptively like stack traces. `#2436`_ |
|---|
| 1149 | |
|---|
| 1150 | The pyasn1 requirement was increased to >= 0.1.8. |
|---|
| 1151 | |
|---|
| 1152 | .. _`#2465`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2465 |
|---|
| 1153 | .. _`#2436`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2436 |
|---|
| 1154 | |
|---|
| 1155 | Other Fixes |
|---|
| 1156 | ----------- |
|---|
| 1157 | |
|---|
| 1158 | A WebAPI ``GET`` would sometimes hang when using the HTTP Range header to |
|---|
| 1159 | read just part of the file. `#2459`_ |
|---|
| 1160 | |
|---|
| 1161 | Using ``tahoe cp`` to copy two different files of the same name into the same |
|---|
| 1162 | target directory now raises an error, rather than silently overwriting one of |
|---|
| 1163 | them. `#2447`_ |
|---|
| 1164 | |
|---|
| 1165 | All tickets closed in this release: 2328 2436 2446 2447 2459 2460 2461 2462 |
|---|
| 1166 | 2465 2470. |
|---|
| 1167 | |
|---|
| 1168 | .. _`#2459`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2459 |
|---|
| 1169 | .. _`#2447`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2447 |
|---|
| 1170 | |
|---|
| 1171 | |
|---|
| 1172 | Release 1.10.1 (2015-06-15) |
|---|
| 1173 | ''''''''''''''''''''''''''' |
|---|
| 1174 | |
|---|
| 1175 | User Interface / Configuration Changes |
|---|
| 1176 | -------------------------------------- |
|---|
| 1177 | |
|---|
| 1178 | The "``tahoe cp``" CLI command's ``--recursive`` option is now more predictable, |
|---|
| 1179 | but behaves slightly differently than before. See below for details. Tickets |
|---|
| 1180 | `#712`_, `#2329`_. |
|---|
| 1181 | |
|---|
| 1182 | The SFTP server can now use public-key authentication (instead of only |
|---|
| 1183 | password-based auth). Public keys are configured through an "account file", |
|---|
| 1184 | just like passwords. See docs/frontends/FTP-and-SFTP for examples of the |
|---|
| 1185 | format. `#1411`_ |
|---|
| 1186 | |
|---|
| 1187 | The Tahoe node can now be configured to disable automatic IP-address |
|---|
| 1188 | detection. Using "AUTO" in tahoe.cfg [node]tub.location= (which is now the |
|---|
| 1189 | default) triggers autodetection. Omit "AUTO" to disable autodetection. "AUTO" |
|---|
| 1190 | can be combined with static addresses to e.g. use both a stable |
|---|
| 1191 | UPnP-configured tunneled address and a DHCP-assigned dynamic (local subnet |
|---|
| 1192 | only) address. See `configuration.rst`_ for details. `#754`_ |
|---|
| 1193 | |
|---|
| 1194 | The web-based user interface ("WUI") Directory and Welcome pages have been |
|---|
| 1195 | redesigned, with improved CSS for narrow windows and more-accessible icons |
|---|
| 1196 | (using distinctive shapes instead of just colors). `#1931`_ `#1961`_ `#1966`_ |
|---|
| 1197 | `#1972`_ `#1901`_ |
|---|
| 1198 | |
|---|
| 1199 | .. _`#712`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/712 |
|---|
| 1200 | .. _`#754`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/754 |
|---|
| 1201 | .. _`#1411`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1411 |
|---|
| 1202 | .. _`#1901`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1901 |
|---|
| 1203 | .. _`#1931`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1931 |
|---|
| 1204 | .. _`#1961`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1961 |
|---|
| 1205 | .. _`#1966`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1966 |
|---|
| 1206 | .. _`#1972`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1972 |
|---|
| 1207 | .. _`#2329`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2329 |
|---|
| 1208 | .. _`configuration.rst`: docs/configuration.rst |
|---|
| 1209 | |
|---|
| 1210 | "tahoe cp" changes |
|---|
| 1211 | ------------------ |
|---|
| 1212 | |
|---|
| 1213 | The many ``cp``-like tools in the Unix world (POSIX ``/bin/cp``, the ``scp`` |
|---|
| 1214 | provided by SSH, ``rsync``) all behave slightly differently in unusual |
|---|
| 1215 | circumstances, especially when copying whole directories into a target that |
|---|
| 1216 | may or may not already exist. The most common difference is whether the user |
|---|
| 1217 | is referring to the source directory as a whole, or to its contents. For |
|---|
| 1218 | example, should "``cp -r foodir bardir``" create a new directory named |
|---|
| 1219 | "``bardir/foodir``"? Or should it behave more like "``cp -r foodir/* bardir``"? |
|---|
| 1220 | Some tools use the presence of a trailing slash to indicate which behavior |
|---|
| 1221 | you want. Others ignore trailing slashes. |
|---|
| 1222 | |
|---|
| 1223 | "``tahoe cp``" is no exception to having exceptional cases. This release fixes |
|---|
| 1224 | some bad behavior and attempts to establish a consistent rationale for its |
|---|
| 1225 | behavior. The new rule is: |
|---|
| 1226 | |
|---|
| 1227 | - If the thing being copied is a directory, and it has a name (e.g. it's not |
|---|
| 1228 | a raw Tahoe-LAFS directorycap), then you are referring to the directory |
|---|
| 1229 | itself. |
|---|
| 1230 | - If the thing being copied is an unnamed directory (e.g. raw dircap or |
|---|
| 1231 | alias), then you are referring to the contents. |
|---|
| 1232 | - Trailing slashes do not affect the behavior of the copy (although putting |
|---|
| 1233 | a trailing slash on a file-like target is an error). |
|---|
| 1234 | - The "``-r``" (``--recursive``) flag does not affect the behavior of the |
|---|
| 1235 | copy (although omitting ``-r`` when the source is a directory is an error). |
|---|
| 1236 | - If the target refers to something that does not yet exist: |
|---|
| 1237 | - and if the source is a single file, then create a new file; |
|---|
| 1238 | - otherwise, create a directory. |
|---|
| 1239 | |
|---|
| 1240 | There are two main cases where the behavior of Tahoe-LAFS v1.10.1 differs |
|---|
| 1241 | from that of the previous v1.10.0 release: |
|---|
| 1242 | |
|---|
| 1243 | - "``cp DIRCAP/file.txt ./local/missing``" , where "``./local``" is a |
|---|
| 1244 | directory but "``./local/missing``" does not exist. The implication is |
|---|
| 1245 | that you want Tahoe to create a new file named "``./local/missing``" and |
|---|
| 1246 | fill it with the contents of the Tahoe-side ``DIRCAP/file.txt``. In |
|---|
| 1247 | v1.10.0, a plain "``cp``" would do just this, but "``cp -r``" would do |
|---|
| 1248 | "``mkdir ./local/missing``" and then create a file named |
|---|
| 1249 | "``./local/missing/file.txt``". In v1.10.1, both "``cp``" and "``cp -r``" |
|---|
| 1250 | create a file named "``./local/missing``". |
|---|
| 1251 | - "``cp -r PARENTCAP/dir ./local/missing``", where ``PARENTCAP/dir/`` |
|---|
| 1252 | contains "``file.txt``", and again "``./local``" is a directory but |
|---|
| 1253 | "``./local/missing``" does not exist. In both v1.10.0 and v1.10.1, this |
|---|
| 1254 | first does "``mkdir ./local/missing``". In v1.10.0, it would then copy |
|---|
| 1255 | the contents of the source directory into the new directory, resulting |
|---|
| 1256 | in "``./local/missing/file.txt``". In v1.10.1, following the new rule |
|---|
| 1257 | of "a named directory source refers to the directory itself", the tool |
|---|
| 1258 | creates "``./local/missing/dir/file.txt``". |
|---|
| 1259 | |
|---|
| 1260 | Compatibility and Dependency Updates |
|---|
| 1261 | ------------------------------------ |
|---|
| 1262 | |
|---|
| 1263 | Windows now requires Python 2.7. Unix/OS-X platforms can still use either |
|---|
| 1264 | Python 2.6 or 2.7, however this is probably the last release that will |
|---|
| 1265 | support 2.6 (it is no longer receiving security updates, and most OS |
|---|
| 1266 | distributions have switched to 2.7). Tahoe-LAFS now has the following |
|---|
| 1267 | dependencies: |
|---|
| 1268 | |
|---|
| 1269 | - Twisted >= 13.0.0 |
|---|
| 1270 | - Nevow >= 0.11.1 |
|---|
| 1271 | - foolscap >= 0.8.0 |
|---|
| 1272 | - service-identity |
|---|
| 1273 | - characteristic >= 14.0.0 |
|---|
| 1274 | - pyasn1 >= 0.1.4 |
|---|
| 1275 | - pyasn1-modules >= 0.0.5 |
|---|
| 1276 | |
|---|
| 1277 | On Windows, if pywin32 is not installed then the dependencies on Twisted |
|---|
| 1278 | and Nevow become: |
|---|
| 1279 | |
|---|
| 1280 | - Twisted >= 11.1.0, <= 12.1.0 |
|---|
| 1281 | - Nevow >= 0.9.33, <= 0.10 |
|---|
| 1282 | |
|---|
| 1283 | On all platforms, if pyOpenSSL >= 0.14 is installed, then it will be used, |
|---|
| 1284 | but if not then only pyOpenSSL >= 0.13, <= 0.13.1 will be built when directly |
|---|
| 1285 | invoking `setup.py build` or `setup.py install`. |
|---|
| 1286 | |
|---|
| 1287 | We strongly advise OS packagers to take the option of making a tahoe-lafs |
|---|
| 1288 | package depend on pyOpenSSL >= 0.14. In order for that to work, the following |
|---|
| 1289 | additional Python dependencies are needed: |
|---|
| 1290 | |
|---|
| 1291 | - cryptography |
|---|
| 1292 | - cffi >= 0.8 |
|---|
| 1293 | - six >= 1.4.1 |
|---|
| 1294 | - enum34 |
|---|
| 1295 | - pycparser |
|---|
| 1296 | |
|---|
| 1297 | as well as libffi (for Debian/Ubuntu, the name of the needed OS package is |
|---|
| 1298 | `libffi6`). |
|---|
| 1299 | |
|---|
| 1300 | Tahoe-LAFS is now compatible with Setuptools version 8 and Pip version 6 or |
|---|
| 1301 | later, which should fix execution on Ubuntu 15.04 (it now tolerates PEP440 |
|---|
| 1302 | semantics in dependency specifications). `#2354`_ `#2242`_ |
|---|
| 1303 | |
|---|
| 1304 | Tahoe-LAFS now depends upon foolscap-0.8.0, which creates better private keys |
|---|
| 1305 | and certificates than previous versions. To benefit from the improvements |
|---|
| 1306 | (2048-bit RSA keys and SHA256-based certificates), you must re-generate your |
|---|
| 1307 | Tahoe nodes (which changes their TubIDs and FURLs). `#2400`_ |
|---|
| 1308 | |
|---|
| 1309 | .. _`#2242`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2242 |
|---|
| 1310 | .. _`#2354`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2354 |
|---|
| 1311 | .. _`#2400`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2400 |
|---|
| 1312 | |
|---|
| 1313 | Packaging |
|---|
| 1314 | --------- |
|---|
| 1315 | |
|---|
| 1316 | A preliminary OS-X package, named "``tahoe-lafs-VERSION-osx.pkg``", is now |
|---|
| 1317 | being generated. It is a standard double-clickable installer, which creates |
|---|
| 1318 | ``/Applications/tahoe.app`` that embeds a complete runtime tree. However |
|---|
| 1319 | launching the ``.app`` only brings up a notice on how to run tahoe from the |
|---|
| 1320 | command line. A future release may turn this into a fully-fledged application |
|---|
| 1321 | launcher. `#182`_ `#2393`_ `#2323`_ |
|---|
| 1322 | |
|---|
| 1323 | Preliminary Docker support was added. Tahoe container images may be available |
|---|
| 1324 | on DockerHub. `PR#165`_ `#2419`_ `#2421`_ |
|---|
| 1325 | |
|---|
| 1326 | Old and obsolete Debian packaging tools have been removed. `#2282`_ |
|---|
| 1327 | |
|---|
| 1328 | .. _`#182`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/182 |
|---|
| 1329 | .. _`#2282`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2282 |
|---|
| 1330 | .. _`#2323`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2323 |
|---|
| 1331 | .. _`#2393`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2393 |
|---|
| 1332 | .. _`#2419`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2419 |
|---|
| 1333 | .. _`#2421`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2421 |
|---|
| 1334 | .. _`PR#165`: https://github.com/tahoe-lafs/tahoe-lafs/pull/165 |
|---|
| 1335 | |
|---|
| 1336 | Minor Changes |
|---|
| 1337 | ------------- |
|---|
| 1338 | |
|---|
| 1339 | - Welcome page: add per-server "(space) Available" column. `#648`_ |
|---|
| 1340 | - check/deep-check learned to accept multiple location arguments. `#740`_ |
|---|
| 1341 | - Checker reports: remove needs-rebalancing, add count-happiness. `#1784`_ `#2105`_ |
|---|
| 1342 | - CLI ``--help``: cite (but don't list) global options on each command. `#2233`_ |
|---|
| 1343 | - Fix ftp "``ls``" to work with Twisted 15.0.0. `#2394`_ |
|---|
| 1344 | |
|---|
| 1345 | .. _`#648`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/648 |
|---|
| 1346 | .. _`#740`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/740 |
|---|
| 1347 | .. _`#1784`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1784 |
|---|
| 1348 | .. _`#2105`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2105 |
|---|
| 1349 | .. _`#2233`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2233 |
|---|
| 1350 | .. _`#2394`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2394 |
|---|
| 1351 | |
|---|
| 1352 | Roughly 75 tickets were closed in this release: 623 648 712 740 754 898 1146 |
|---|
| 1353 | 1159 1336 1381 1411 1634 1674 1698 1707 1717 1737 1784 1800 1807 1842 1847 |
|---|
| 1354 | 1901 1918 1953 1960 1961 1966 1969 1972 1974 1988 1992 2005 2008 2023 2027 |
|---|
| 1355 | 2028 2034 2048 2067 2086 2105 2121 2128 2165 2193 2208 2209 2233 2235 2242 |
|---|
| 1356 | 2245 2248 2249 2249 2280 2281 2282 2290 2305 2312 2323 2340 2354 2380 2393 |
|---|
| 1357 | 2394 2398 2400 2415 2416 2417 2433. Another dozen were referenced but not |
|---|
| 1358 | closed: 182 666 982 1064 1258 1531 1536 1742 1834 1931 1935 2286. Roughly 40 |
|---|
| 1359 | GitHub pull-requests were closed: 32 48 50 56 57 61 62 62 63 64 69 73 81 82 |
|---|
| 1360 | 84 85 87 91 94 95 96 103 107 109 112 114 120 122 125 126 133 135 136 137 142 |
|---|
| 1361 | 146 149 152 165. |
|---|
| 1362 | |
|---|
| 1363 | For more information about any ticket, visit e.g. |
|---|
| 1364 | https://tahoe-lafs.org/trac/tahoe-lafs/ticket/754 |
|---|
| 1365 | |
|---|
| 1366 | |
|---|
| 1367 | Release 1.10.0 (2013-05-01) |
|---|
| 1368 | ''''''''''''''''''''''''''' |
|---|
| 1369 | |
|---|
| 1370 | New Features |
|---|
| 1371 | ------------ |
|---|
| 1372 | |
|---|
| 1373 | - The Welcome page has been redesigned. This is a preview of the design style |
|---|
| 1374 | that is likely to be used in other parts of the WUI in future Tahoe-LAFS |
|---|
| 1375 | versions. (`#1713`_, `#1457`_, `#1735`_) |
|---|
| 1376 | - A new extensible Introducer protocol has been added, as the basis for |
|---|
| 1377 | future improvements such as accounting. Compatibility with older nodes is |
|---|
| 1378 | not affected. When server, introducer, and client are all upgraded, the |
|---|
| 1379 | welcome page will show node IDs that start with "v0-" instead of the old |
|---|
| 1380 | tubid. See `<docs/nodekeys.rst>`__ for details. (`#466`_) |
|---|
| 1381 | - The web-API has a new ``relink`` operation that supports directly moving |
|---|
| 1382 | files between directories. (`#1579`_) |
|---|
| 1383 | |
|---|
| 1384 | Security Improvements |
|---|
| 1385 | --------------------- |
|---|
| 1386 | |
|---|
| 1387 | - The ``introducer.furl`` for new Introducers is now unguessable. In previous |
|---|
| 1388 | releases, this FURL used a predictable swissnum, allowing a network |
|---|
| 1389 | eavesdropper who observes any node connecting to the Introducer to access |
|---|
| 1390 | the Introducer themselves, and thus use servers or offer storage service to |
|---|
| 1391 | clients (i.e. "join the grid"). In the new code, the only way to join a |
|---|
| 1392 | grid is to be told the ``introducer.furl`` by someone who already knew it. |
|---|
| 1393 | Note that pre-existing introducers are not changed. To force an introducer |
|---|
| 1394 | to generate a new FURL, delete the existing ``introducer.furl`` file and |
|---|
| 1395 | restart it. After doing this, the ``[client]introducer.furl`` setting of |
|---|
| 1396 | every client and server that should connect to that introducer must be |
|---|
| 1397 | updated. Note that other users of a shared machine may be able to read |
|---|
| 1398 | ``introducer.furl`` from your ``tahoe.cfg`` file unless you configure the |
|---|
| 1399 | file permissions to prevent them. (`#1802`_) |
|---|
| 1400 | - Both ``introducer.furl`` and ``helper.furl`` are now censored from the |
|---|
| 1401 | Welcome page, to prevent users of your gateway from learning enough to |
|---|
| 1402 | create gateway nodes of their own. For existing guessable introducer |
|---|
| 1403 | FURLs, the ``introducer`` swissnum is still displayed to show that a |
|---|
| 1404 | guessable FURL is in use. (`#860`_) |
|---|
| 1405 | |
|---|
| 1406 | Command-line Syntax Changes |
|---|
| 1407 | --------------------------- |
|---|
| 1408 | |
|---|
| 1409 | - Global options to ``tahoe``, such as ``-d``/``--node-directory``, must now |
|---|
| 1410 | come before rather than after the command name (for example, |
|---|
| 1411 | ``tahoe -d BASEDIR cp -r foo: bar:`` ). (`#166`_) |
|---|
| 1412 | |
|---|
| 1413 | Notable Bugfixes |
|---|
| 1414 | ---------------- |
|---|
| 1415 | |
|---|
| 1416 | - In earlier versions, if a connection problem caused a download failure for |
|---|
| 1417 | an immutable file, subsequent attempts to download the same file could also |
|---|
| 1418 | fail. This is now fixed. (`#1679`_) |
|---|
| 1419 | - Filenames in WUI directory pages are now displayed correctly when they |
|---|
| 1420 | contain characters that require HTML escaping. (`#1143`_) |
|---|
| 1421 | - Non-ASCII node nicknames no longer cause WUI errors. (`#1298`_) |
|---|
| 1422 | - Checking a LIT file using ``tahoe check`` no longer results in an |
|---|
| 1423 | exception. (`#1758`_) |
|---|
| 1424 | - The SFTP frontend now works with recent versions of Twisted, rather than |
|---|
| 1425 | giving errors or warnings about use of ``IFinishableConsumer``. (`#1926`_, |
|---|
| 1426 | `#1564`_, `#1525`_) |
|---|
| 1427 | - ``tahoe cp --verbose`` now counts the files being processed correctly. |
|---|
| 1428 | (`#1805`_, `#1783`_) |
|---|
| 1429 | - Exceptions no longer trigger an unhelpful crash reporter on Ubuntu 12.04 |
|---|
| 1430 | ("Precise") or later. (`#1746`_) |
|---|
| 1431 | - The error message displayed when a CLI tool cannot connect to a gateway has |
|---|
| 1432 | been improved. (`#974`_) |
|---|
| 1433 | - Other minor fixes: `#1781`_, `#1812`_, `#1915`_, `#1484`_, `#1525`_ |
|---|
| 1434 | |
|---|
| 1435 | Compatibility and Dependencies |
|---|
| 1436 | ------------------------------ |
|---|
| 1437 | |
|---|
| 1438 | - Python >= 2.6, except Python 3 (`#1658`_) |
|---|
| 1439 | - Twisted >= 11.0.0 (`#1771`_) |
|---|
| 1440 | - mock >= 0.8 (for unit tests) |
|---|
| 1441 | - pycryptopp >= 0.6.0 (for Ed25519 signatures) |
|---|
| 1442 | - zope.interface >= 3.6.0 (except 3.6.3 or 3.6.4) |
|---|
| 1443 | |
|---|
| 1444 | Other Changes |
|---|
| 1445 | ------------- |
|---|
| 1446 | |
|---|
| 1447 | - The ``flogtool`` utility, used to read detailed event logs, can now be |
|---|
| 1448 | accessed as ``tahoe debug flogtool`` even when Foolscap is not installed |
|---|
| 1449 | system-wide. (`#1693`_) |
|---|
| 1450 | - The provisioning/reliability pages were removed from the main client's web |
|---|
| 1451 | interface, and moved into a standalone web-based tool. Use the ``run.py`` |
|---|
| 1452 | script in ``misc/operations_helpers/provisioning/`` to access them. |
|---|
| 1453 | - Web clients can now cache (ETag) immutable directory pages. (`#443`_) |
|---|
| 1454 | - `<docs/convergence_secret.rst>`__ was added to document the adminstration |
|---|
| 1455 | of convergence secrets. (`#1761`_) |
|---|
| 1456 | |
|---|
| 1457 | Precautions when Upgrading |
|---|
| 1458 | -------------------------- |
|---|
| 1459 | |
|---|
| 1460 | - When upgrading a grid from a recent revision of trunk, follow the |
|---|
| 1461 | precautions from this `message to the tahoe-dev mailing list`_, to ensure |
|---|
| 1462 | that announcements to the Introducer are recognized after the upgrade. |
|---|
| 1463 | This is not necessary when upgrading from a previous release like 1.9.2. |
|---|
| 1464 | |
|---|
| 1465 | .. _`#166`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/166 |
|---|
| 1466 | .. _`#443`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/443 |
|---|
| 1467 | .. _`#466`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/466 |
|---|
| 1468 | .. _`#860`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/860 |
|---|
| 1469 | .. _`#974`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/974 |
|---|
| 1470 | .. _`#1143`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1143 |
|---|
| 1471 | .. _`#1298`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1298 |
|---|
| 1472 | .. _`#1457`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1457 |
|---|
| 1473 | .. _`#1484`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1484 |
|---|
| 1474 | .. _`#1525`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1525 |
|---|
| 1475 | .. _`#1564`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1564 |
|---|
| 1476 | .. _`#1579`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1579 |
|---|
| 1477 | .. _`#1658`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1658 |
|---|
| 1478 | .. _`#1679`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1679 |
|---|
| 1479 | .. _`#1693`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1693 |
|---|
| 1480 | .. _`#1713`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1713 |
|---|
| 1481 | .. _`#1735`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1735 |
|---|
| 1482 | .. _`#1746`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1746 |
|---|
| 1483 | .. _`#1758`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1758 |
|---|
| 1484 | .. _`#1761`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1761 |
|---|
| 1485 | .. _`#1771`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1771 |
|---|
| 1486 | .. _`#1781`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1781 |
|---|
| 1487 | .. _`#1783`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1783 |
|---|
| 1488 | .. _`#1802`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1802 |
|---|
| 1489 | .. _`#1805`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1805 |
|---|
| 1490 | .. _`#1812`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1812 |
|---|
| 1491 | .. _`#1915`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1915 |
|---|
| 1492 | .. _`#1926`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1926 |
|---|
| 1493 | .. _`message to the tahoe-dev mailing list`: |
|---|
| 1494 | https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2013-March/008079.html |
|---|
| 1495 | |
|---|
| 1496 | |
|---|
| 1497 | Release 1.9.2 (2012-07-03) |
|---|
| 1498 | '''''''''''''''''''''''''' |
|---|
| 1499 | |
|---|
| 1500 | Notable Bugfixes |
|---|
| 1501 | ---------------- |
|---|
| 1502 | |
|---|
| 1503 | - Several regressions in support for reading (`#1636`_), writing/modifying |
|---|
| 1504 | (`#1670`_, `#1749`_), verifying (`#1628`_) and repairing (`#1655`_, `#1669`_, |
|---|
| 1505 | `#1676`_, `#1689`_) mutable files have been fixed. |
|---|
| 1506 | - FTP can now list directories containing mutable files, although it |
|---|
| 1507 | still does not support reading or writing mutable files. (`#680`_) |
|---|
| 1508 | - The FTP frontend would previously show Jan 1 1970 for all timestamps; |
|---|
| 1509 | now it shows the correct modification time of the directory entry. |
|---|
| 1510 | (`#1688`_) |
|---|
| 1511 | - If a node is configured to report incidents to a log gatherer, but the |
|---|
| 1512 | gatherer is offline when some incidents occur, it would previously not |
|---|
| 1513 | "catch up" with those incidents as intended. (`#1725`_) |
|---|
| 1514 | - OpenBSD 5 is now supported. (`#1584`_) |
|---|
| 1515 | - The ``count-good-share-hosts`` field of file check results is now |
|---|
| 1516 | computed correctly. (`#1115`_) |
|---|
| 1517 | |
|---|
| 1518 | Configuration/Behavior Changes |
|---|
| 1519 | ------------------------------ |
|---|
| 1520 | |
|---|
| 1521 | - The capability of the upload directory for the drop-upload frontend |
|---|
| 1522 | is now specified in the file ``private/drop_upload_dircap`` under |
|---|
| 1523 | the gateway's node directory, rather than in its ``tahoe.cfg``. |
|---|
| 1524 | (`#1593`_) |
|---|
| 1525 | |
|---|
| 1526 | Packaging Changes |
|---|
| 1527 | ----------------- |
|---|
| 1528 | |
|---|
| 1529 | - Tahoe-LAFS can be built correctly from a git repository as well as |
|---|
| 1530 | from darcs. |
|---|
| 1531 | |
|---|
| 1532 | Compatibility and Dependencies |
|---|
| 1533 | ------------------------------ |
|---|
| 1534 | |
|---|
| 1535 | - foolscap >= 0.6.3 is required, in order to make Tahoe-LAFS compatible |
|---|
| 1536 | with Twisted >= 11.1.0. (`#1788`_) |
|---|
| 1537 | - Versions 2.0.1 and 2.4 of PyCrypto are excluded. (`#1631`_, `#1574`_) |
|---|
| 1538 | |
|---|
| 1539 | .. _`#680`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/680 |
|---|
| 1540 | .. _`#1115`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1115 |
|---|
| 1541 | .. _`#1574`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1574 |
|---|
| 1542 | .. _`#1584`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1584 |
|---|
| 1543 | .. _`#1593`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1593 |
|---|
| 1544 | .. _`#1628`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1628 |
|---|
| 1545 | .. _`#1631`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1631 |
|---|
| 1546 | .. _`#1636`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1636 |
|---|
| 1547 | .. _`#1655`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1655 |
|---|
| 1548 | .. _`#1669`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1669 |
|---|
| 1549 | .. _`#1670`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1670 |
|---|
| 1550 | .. _`#1676`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1676 |
|---|
| 1551 | .. _`#1688`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1688 |
|---|
| 1552 | .. _`#1689`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1689 |
|---|
| 1553 | .. _`#1725`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1725 |
|---|
| 1554 | .. _`#1749`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1749 |
|---|
| 1555 | .. _`#1788`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1788 |
|---|
| 1556 | |
|---|
| 1557 | |
|---|
| 1558 | Release 1.9.1 (2012-01-12) |
|---|
| 1559 | '''''''''''''''''''''''''' |
|---|
| 1560 | |
|---|
| 1561 | Security-related Bugfix |
|---|
| 1562 | ----------------------- |
|---|
| 1563 | |
|---|
| 1564 | - Fix flaw that would allow servers to cause undetected corruption when |
|---|
| 1565 | retrieving the contents of mutable files (both SDMF and MDMF). (`#1654`_) |
|---|
| 1566 | |
|---|
| 1567 | .. _`#1654`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1654 |
|---|
| 1568 | |
|---|
| 1569 | |
|---|
| 1570 | Release 1.9.0 (2011-10-30) |
|---|
| 1571 | '''''''''''''''''''''''''' |
|---|
| 1572 | |
|---|
| 1573 | New Features |
|---|
| 1574 | ------------ |
|---|
| 1575 | |
|---|
| 1576 | - The most significant new feature in this release is MDMF: "Medium-size |
|---|
| 1577 | Distributed Mutable Files". Unlike standard SDMF files, these provide |
|---|
| 1578 | efficient partial-access (reading and modifying small portions of the file |
|---|
| 1579 | instead of the whole thing). MDMF is opt-in (it is not yet the default |
|---|
| 1580 | format for mutable files), both to ensure compatibility with previous |
|---|
| 1581 | versions, and because the algorithm does not yet meet memory-usage goals. |
|---|
| 1582 | Enable it with ``--format=MDMF`` in the CLI (``tahoe put`` and ``tahoe |
|---|
| 1583 | mkdir``), or the "format" radioboxes in the web interface. See |
|---|
| 1584 | `<docs/specifications/mutable.rst>`__ for more details (`#393`_, `#1507`_) |
|---|
| 1585 | - A "blacklist" feature allows blocking access to specific files through |
|---|
| 1586 | a particular gateway. See the "Access Blacklist" section of |
|---|
| 1587 | `<docs/configuration.rst>`__ for more details. (`#1425`_) |
|---|
| 1588 | - A "drop-upload" feature has been added, which allows you to upload |
|---|
| 1589 | files to a Tahoe-LAFS directory just by writing them to a local |
|---|
| 1590 | directory. This feature is experimental and should not be relied on |
|---|
| 1591 | to store the only copy of valuable data. It is currently available |
|---|
| 1592 | only on Linux. See `<docs/frontends/drop-upload.rst>`__ for documentation. |
|---|
| 1593 | (`#1429`_) |
|---|
| 1594 | - The timeline of immutable downloads can be viewed using a zoomable and |
|---|
| 1595 | pannable JavaScript-based visualization. This is accessed using the |
|---|
| 1596 | 'timeline' link on the File Download Status page for the download, which |
|---|
| 1597 | can be reached from the Recent Uploads and Downloads page. |
|---|
| 1598 | |
|---|
| 1599 | Configuration/Behavior Changes |
|---|
| 1600 | ------------------------------ |
|---|
| 1601 | |
|---|
| 1602 | - Prior to Tahoe-LAFS v1.3, the configuration of some node options could |
|---|
| 1603 | be specified using individual config files rather than via ``tahoe.cfg``. |
|---|
| 1604 | These files now cause an error if present. (`#1385`_) |
|---|
| 1605 | - Storage servers now calculate their remaining space based on the filesystem |
|---|
| 1606 | containing the ``storage/shares/`` directory. Previously they looked at the |
|---|
| 1607 | filesystem containing the ``storage/`` directory. This allows |
|---|
| 1608 | ``storage/shares/``, rather than ``storage/``, to be a mount point or a |
|---|
| 1609 | symlink pointing to another filesystem. (`#1384`_) |
|---|
| 1610 | - ``tahoe cp xyz MUTABLE`` will modify the existing mutable file instead of |
|---|
| 1611 | creating a new one. (`#1304`_) |
|---|
| 1612 | - The button for unlinking a file from its directory on a WUI directory |
|---|
| 1613 | listing is now labelled "unlink" rather than "del". (`#1104`_) |
|---|
| 1614 | |
|---|
| 1615 | Notable Bugfixes |
|---|
| 1616 | ---------------- |
|---|
| 1617 | |
|---|
| 1618 | - The security bugfix for the vulnerability allowing deletion of shares, |
|---|
| 1619 | detailed in the news for v1.8.3 below, is also included in this |
|---|
| 1620 | release. (`#1528`_) |
|---|
| 1621 | - Some cases of immutable upload, for example using the ``tahoe put`` and |
|---|
| 1622 | ``tahoe cp`` commands or SFTP, did not appear in the history of Recent |
|---|
| 1623 | Uploads and Downloads. (`#1079`_) |
|---|
| 1624 | - The memory footprint of the verifier has been reduced by serializing |
|---|
| 1625 | block fetches. (`#1395`_) |
|---|
| 1626 | - Large immutable downloads are now a little faster than in v1.8.3 (about |
|---|
| 1627 | 5% on a fast network). (`#1268`_) |
|---|
| 1628 | |
|---|
| 1629 | Packaging Changes |
|---|
| 1630 | ----------------- |
|---|
| 1631 | |
|---|
| 1632 | - The files related to Debian packaging have been removed from the Tahoe |
|---|
| 1633 | source tree, since they are now maintained as part of the official |
|---|
| 1634 | Debian packages. (`#1454`_) |
|---|
| 1635 | - The unmaintained FUSE plugins were removed from the source tree. See |
|---|
| 1636 | ``docs/frontends/FTP-and-SFTP.rst`` for how to mount a Tahoe filesystem on |
|---|
| 1637 | Unix via sshfs. (`#1409`_) |
|---|
| 1638 | - The Tahoe licenses now give explicit permission to combine Tahoe-LAFS |
|---|
| 1639 | with code distributed under the following additional open-source licenses |
|---|
| 1640 | (any version of each): |
|---|
| 1641 | |
|---|
| 1642 | * Academic Free License |
|---|
| 1643 | * Apple Public Source License |
|---|
| 1644 | * BitTorrent Open Source License |
|---|
| 1645 | * Lucent Public License |
|---|
| 1646 | * Jabber Open Source License |
|---|
| 1647 | * Common Development and Distribution License |
|---|
| 1648 | * Microsoft Public License |
|---|
| 1649 | * Microsoft Reciprocal License |
|---|
| 1650 | * Sun Industry Standards Source License |
|---|
| 1651 | * Open Software License |
|---|
| 1652 | |
|---|
| 1653 | Compatibility and Dependencies |
|---|
| 1654 | ------------------------------ |
|---|
| 1655 | |
|---|
| 1656 | - To resolve an incompatibility between Nevow and zope.interface (versions |
|---|
| 1657 | 3.6.3 and 3.6.4), Tahoe-LAFS now requires an earlier or later |
|---|
| 1658 | version of zope.interface. (`#1435`_) |
|---|
| 1659 | - The Twisted dependency has been raised to version 10.1 to ensure we no |
|---|
| 1660 | longer require pywin32 on Windows, the new drop-upload feature has the |
|---|
| 1661 | required support from Twisted on Linux, and that it is never necessary to |
|---|
| 1662 | patch Twisted in order to use the FTP frontend. (`#1274`_, `#1429`_, |
|---|
| 1663 | `#1438`_) |
|---|
| 1664 | - An explicit dependency on pyOpenSSL has been added, replacing the indirect |
|---|
| 1665 | dependency via the "secure_connections" option of foolscap. (`#1383`_) |
|---|
| 1666 | |
|---|
| 1667 | Minor Changes |
|---|
| 1668 | ------------- |
|---|
| 1669 | |
|---|
| 1670 | - A ``man`` page has been added (`#1420`_). All other docs are in ReST |
|---|
| 1671 | format. |
|---|
| 1672 | - The ``tahoe_files`` munin plugin reported an incorrect count of the number |
|---|
| 1673 | of share files. (`#1391`_) |
|---|
| 1674 | - Minor documentation updates: #627, #1104, #1225, #1297, #1342, #1404 |
|---|
| 1675 | - Other minor changes: #636, #1355, #1363, #1366, #1388, #1392, #1412, #1344, |
|---|
| 1676 | #1347, #1359, #1389, #1441, #1442, #1446, #1474, #1503 |
|---|
| 1677 | |
|---|
| 1678 | .. _`#393`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/393 |
|---|
| 1679 | .. _`#1079`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1079 |
|---|
| 1680 | .. _`#1104`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1104 |
|---|
| 1681 | .. _`#1268`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1268 |
|---|
| 1682 | .. _`#1274`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1274 |
|---|
| 1683 | .. _`#1304`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1304 |
|---|
| 1684 | .. _`#1383`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1383 |
|---|
| 1685 | .. _`#1384`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1384 |
|---|
| 1686 | .. _`#1385`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1385 |
|---|
| 1687 | .. _`#1391`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1391 |
|---|
| 1688 | .. _`#1395`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1395 |
|---|
| 1689 | .. _`#1409`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1409 |
|---|
| 1690 | .. _`#1420`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1420 |
|---|
| 1691 | .. _`#1425`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1425 |
|---|
| 1692 | .. _`#1429`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1429 |
|---|
| 1693 | .. _`#1435`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1435 |
|---|
| 1694 | .. _`#1438`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1438 |
|---|
| 1695 | .. _`#1454`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1454 |
|---|
| 1696 | .. _`#1507`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1507 |
|---|
| 1697 | |
|---|
| 1698 | |
|---|
| 1699 | Release 1.8.3 (2011-09-13) |
|---|
| 1700 | '''''''''''''''''''''''''' |
|---|
| 1701 | |
|---|
| 1702 | Security-related Bugfix |
|---|
| 1703 | ----------------------- |
|---|
| 1704 | |
|---|
| 1705 | - Fix flaw that would allow a person who knows a storage index of a file to |
|---|
| 1706 | delete shares of that file. (`#1528`_) |
|---|
| 1707 | - Remove corner cases in mutable file bounds management which could expose |
|---|
| 1708 | extra lease info or old share data (from prior versions of the mutable |
|---|
| 1709 | file) if someone with write authority to that mutable file exercised these |
|---|
| 1710 | corner cases in a way that no actual Tahoe-LAFS client does. (Probably not |
|---|
| 1711 | exploitable.) (`#1528`_) |
|---|
| 1712 | |
|---|
| 1713 | .. _`#1528`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1528 |
|---|
| 1714 | |
|---|
| 1715 | |
|---|
| 1716 | Release 1.8.2 (2011-01-30) |
|---|
| 1717 | '''''''''''''''''''''''''' |
|---|
| 1718 | |
|---|
| 1719 | Compatibility and Dependencies |
|---|
| 1720 | ------------------------------ |
|---|
| 1721 | |
|---|
| 1722 | - Tahoe is now compatible with Twisted-10.2 (released last month), as |
|---|
| 1723 | well as with earlier versions. The previous Tahoe-1.8.1 release |
|---|
| 1724 | failed to run against Twisted-10.2, raising an AttributeError on |
|---|
| 1725 | StreamServerEndpointService (`#1286`_) |
|---|
| 1726 | - Tahoe now depends upon the "mock" testing library, and the foolscap |
|---|
| 1727 | dependency was raised to 0.6.1 . It no longer requires pywin32 |
|---|
| 1728 | (which was used only on windows). Future developers should note that |
|---|
| 1729 | reactor.spawnProcess and derivatives may no longer be used inside |
|---|
| 1730 | Tahoe code. |
|---|
| 1731 | |
|---|
| 1732 | Other Changes |
|---|
| 1733 | ------------- |
|---|
| 1734 | |
|---|
| 1735 | - the default reserved_space value for new storage nodes is 1 GB |
|---|
| 1736 | (`#1208`_) |
|---|
| 1737 | - documentation is now in reStructuredText (.rst) format |
|---|
| 1738 | - "tahoe cp" should now handle non-ASCII filenames |
|---|
| 1739 | - the unmaintained Mac/Windows GUI applications have been removed |
|---|
| 1740 | (`#1282`_) |
|---|
| 1741 | - tahoe processes should appear in top and ps as "tahoe", not |
|---|
| 1742 | "python", on some unix platforms. (`#174`_) |
|---|
| 1743 | - "tahoe debug trial" can be used to run the test suite (`#1296`_) |
|---|
| 1744 | - the SFTP frontend now reports unknown sizes as "0" instead of "?", |
|---|
| 1745 | to improve compatibility with clients like FileZilla (`#1337`_) |
|---|
| 1746 | - "tahoe --version" should now report correct values in situations |
|---|
| 1747 | where 1.8.1 might have been wrong (`#1287`_) |
|---|
| 1748 | |
|---|
| 1749 | .. _`#1208`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1208 |
|---|
| 1750 | .. _`#1282`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1282 |
|---|
| 1751 | .. _`#1286`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1286 |
|---|
| 1752 | .. _`#1287`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1287 |
|---|
| 1753 | .. _`#1296`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1296 |
|---|
| 1754 | .. _`#1337`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1337 |
|---|
| 1755 | |
|---|
| 1756 | |
|---|
| 1757 | Release 1.8.1 (2010-10-28) |
|---|
| 1758 | '''''''''''''''''''''''''' |
|---|
| 1759 | |
|---|
| 1760 | Bugfixes and Improvements |
|---|
| 1761 | ------------------------- |
|---|
| 1762 | |
|---|
| 1763 | - Allow the repairer to improve the health of a file by uploading some |
|---|
| 1764 | shares, even if it cannot achieve the configured happiness |
|---|
| 1765 | threshold. This fixes a regression introduced between v1.7.1 and |
|---|
| 1766 | v1.8.0. (`#1212`_) |
|---|
| 1767 | - Fix a memory leak in the ResponseCache which is used during mutable |
|---|
| 1768 | file/directory operations. (`#1045`_) |
|---|
| 1769 | - Fix a regression and add a performance improvement in the |
|---|
| 1770 | downloader. This issue caused repair to fail in some special |
|---|
| 1771 | cases. (`#1223`_) |
|---|
| 1772 | - Fix a bug that caused 'tahoe cp' to fail for a grid-to-grid copy |
|---|
| 1773 | involving a non-ASCII filename. (`#1224`_) |
|---|
| 1774 | - Fix a rarely-encountered bug involving printing large strings to the |
|---|
| 1775 | console on Windows. (`#1232`_) |
|---|
| 1776 | - Perform ~ expansion in the --exclude-from filename argument to |
|---|
| 1777 | 'tahoe backup'. (`#1241`_) |
|---|
| 1778 | - The CLI's 'tahoe mv' and 'tahoe ln' commands previously would try to |
|---|
| 1779 | use an HTTP proxy if the HTTP_PROXY environment variable was set. |
|---|
| 1780 | These now always connect directly to the WAPI, thus avoiding giving |
|---|
| 1781 | caps to the HTTP proxy (and also avoiding failures in the case that |
|---|
| 1782 | the proxy is failing or requires authentication). (`#1253`_) |
|---|
| 1783 | - The CLI now correctly reports failure in the case that 'tahoe mv' |
|---|
| 1784 | fails to unlink the file from its old location. (`#1255`_) |
|---|
| 1785 | - 'tahoe start' now gives a more positive indication that the node has |
|---|
| 1786 | started. (`#71`_) |
|---|
| 1787 | - The arguments seen by 'ps' or other tools for node processes are now |
|---|
| 1788 | more useful (in particular, they include the path of the 'tahoe' |
|---|
| 1789 | script, rather than an obscure tool named 'twistd'). (`#174`_) |
|---|
| 1790 | |
|---|
| 1791 | Removed Features |
|---|
| 1792 | ---------------- |
|---|
| 1793 | |
|---|
| 1794 | - The tahoe start/stop/restart and node creation commands no longer |
|---|
| 1795 | accept the -m or --multiple option, for consistency between |
|---|
| 1796 | platforms. (`#1262`_) |
|---|
| 1797 | |
|---|
| 1798 | Packaging |
|---|
| 1799 | --------- |
|---|
| 1800 | |
|---|
| 1801 | - We now host binary packages so that users on certain operating |
|---|
| 1802 | systems can install without having a compiler. |
|---|
| 1803 | <https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-eggs/README.html> |
|---|
| 1804 | - Use a newer version of a dependency if needed, even if an older |
|---|
| 1805 | version is installed. This would previously cause a VersionConflict |
|---|
| 1806 | error. (`#1190`_) |
|---|
| 1807 | - Use a precompiled binary of a dependency if one with a sufficiently |
|---|
| 1808 | high version number is available, instead of attempting to compile |
|---|
| 1809 | the dependency from source, even if the source version has a higher |
|---|
| 1810 | version number. (`#1233`_) |
|---|
| 1811 | |
|---|
| 1812 | Documentation |
|---|
| 1813 | ------------- |
|---|
| 1814 | |
|---|
| 1815 | - All current documentation in .txt format has been converted to .rst |
|---|
| 1816 | format. (`#1225`_) |
|---|
| 1817 | - Added docs/backdoors.rst declaring that we won't add backdoors to |
|---|
| 1818 | Tahoe-LAFS, or add anything to facilitate government access to data. |
|---|
| 1819 | (`#1216`_) |
|---|
| 1820 | |
|---|
| 1821 | .. _`#71`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/71 |
|---|
| 1822 | .. _`#174`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/174 |
|---|
| 1823 | .. _`#1212`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1212 |
|---|
| 1824 | .. _`#1045`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1045 |
|---|
| 1825 | .. _`#1190`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1190 |
|---|
| 1826 | .. _`#1216`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1216 |
|---|
| 1827 | .. _`#1223`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1223 |
|---|
| 1828 | .. _`#1224`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1224 |
|---|
| 1829 | .. _`#1225`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1225 |
|---|
| 1830 | .. _`#1232`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1232 |
|---|
| 1831 | .. _`#1233`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1233 |
|---|
| 1832 | .. _`#1241`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1241 |
|---|
| 1833 | .. _`#1253`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1253 |
|---|
| 1834 | .. _`#1255`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1255 |
|---|
| 1835 | .. _`#1262`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1262 |
|---|
| 1836 | |
|---|
| 1837 | |
|---|
| 1838 | Release 1.8.0 (2010-09-23) |
|---|
| 1839 | '''''''''''''''''''''''''' |
|---|
| 1840 | |
|---|
| 1841 | New Features |
|---|
| 1842 | ------------ |
|---|
| 1843 | |
|---|
| 1844 | - A completely new downloader which improves performance and |
|---|
| 1845 | robustness of immutable-file downloads. It uses the fastest K |
|---|
| 1846 | servers to download the data in K-way parallel. It automatically |
|---|
| 1847 | fails over to alternate servers if servers fail in mid-download. It |
|---|
| 1848 | allows seeking to arbitrary locations in the file (the previous |
|---|
| 1849 | downloader which would only read the entire file sequentially from |
|---|
| 1850 | beginning to end). It minimizes unnecessary round trips and |
|---|
| 1851 | unnecessary bytes transferred to improve performance. It sends |
|---|
| 1852 | requests to fewer servers to reduce the load on servers (the |
|---|
| 1853 | previous one would send a small request to every server for every |
|---|
| 1854 | download) (`#287`_, `#288`_, `#448`_, `#798`_, `#800`_, `#990`_, |
|---|
| 1855 | `#1170`_, `#1191`_) |
|---|
| 1856 | - Non-ASCII command-line arguments and non-ASCII outputs now work on |
|---|
| 1857 | Windows. In addition, the command-line tool now works on 64-bit |
|---|
| 1858 | Windows. (`#1074`_) |
|---|
| 1859 | |
|---|
| 1860 | Bugfixes and Improvements |
|---|
| 1861 | ------------------------- |
|---|
| 1862 | |
|---|
| 1863 | - Document and clean up the command-line options for specifying the |
|---|
| 1864 | node's base directory. (`#188`_, `#706`_, `#715`_, `#772`_, |
|---|
| 1865 | `#1108`_) |
|---|
| 1866 | - The default node directory for Windows is ".tahoe" in the user's |
|---|
| 1867 | home directory, the same as on other platforms. (`#890`_) |
|---|
| 1868 | - Fix a case in which full cap URIs could be logged. (`#685`_, |
|---|
| 1869 | `#1155`_) |
|---|
| 1870 | - Fix bug in WUI in Python 2.5 when the system clock is set back to |
|---|
| 1871 | 1969. Now you can use Tahoe-LAFS with Python 2.5 and set your system |
|---|
| 1872 | clock to 1969 and still use the WUI. (`#1055`_) |
|---|
| 1873 | - Many improvements in code organization, tests, logging, |
|---|
| 1874 | documentation, and packaging. (`#983`_, `#1074`_, `#1108`_, |
|---|
| 1875 | `#1127`_, `#1129`_, `#1131`_, `#1166`_, `#1175`_) |
|---|
| 1876 | |
|---|
| 1877 | Dependency Updates |
|---|
| 1878 | ------------------ |
|---|
| 1879 | |
|---|
| 1880 | - on x86 and x86-64 platforms, pycryptopp >= 0.5.20 |
|---|
| 1881 | - pycrypto 2.2 is excluded due to a bug |
|---|
| 1882 | |
|---|
| 1883 | .. _`#188`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/188 |
|---|
| 1884 | .. _`#288`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/288 |
|---|
| 1885 | .. _`#448`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/448 |
|---|
| 1886 | .. _`#685`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/685 |
|---|
| 1887 | .. _`#706`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/706 |
|---|
| 1888 | .. _`#715`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/715 |
|---|
| 1889 | .. _`#772`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/772 |
|---|
| 1890 | .. _`#798`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/798 |
|---|
| 1891 | .. _`#800`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/800 |
|---|
| 1892 | .. _`#890`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/890 |
|---|
| 1893 | .. _`#983`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/983 |
|---|
| 1894 | .. _`#990`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/990 |
|---|
| 1895 | .. _`#1055`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1055 |
|---|
| 1896 | .. _`#1074`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1074 |
|---|
| 1897 | .. _`#1108`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1108 |
|---|
| 1898 | .. _`#1155`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1155 |
|---|
| 1899 | .. _`#1170`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1170 |
|---|
| 1900 | .. _`#1191`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1191 |
|---|
| 1901 | .. _`#1127`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1127 |
|---|
| 1902 | .. _`#1129`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1129 |
|---|
| 1903 | .. _`#1131`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1131 |
|---|
| 1904 | .. _`#1166`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1166 |
|---|
| 1905 | .. _`#1175`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1175 |
|---|
| 1906 | |
|---|
| 1907 | Release 1.7.1 (2010-07-18) |
|---|
| 1908 | '''''''''''''''''''''''''' |
|---|
| 1909 | |
|---|
| 1910 | Bugfixes and Improvements |
|---|
| 1911 | ------------------------- |
|---|
| 1912 | |
|---|
| 1913 | - Fix bug in which uploader could fail with AssertionFailure or report |
|---|
| 1914 | that it had achieved servers-of-happiness when it hadn't. (`#1118`_) |
|---|
| 1915 | - Fix bug in which servers could get into a state where they would |
|---|
| 1916 | refuse to accept shares of a certain file (`#1117`_) |
|---|
| 1917 | - Add init scripts for managing the gateway server on Debian/Ubuntu |
|---|
| 1918 | (`#961`_) |
|---|
| 1919 | - Fix bug where server version number was always 0 on the welcome page |
|---|
| 1920 | (`#1067`_) |
|---|
| 1921 | - Add new command-line command "tahoe unlink" as a synonym for "tahoe |
|---|
| 1922 | rm" (`#776`_) |
|---|
| 1923 | - The FTP frontend now encrypts its temporary files, protecting their |
|---|
| 1924 | contents from an attacker who is able to read the disk. (`#1083`_) |
|---|
| 1925 | - Fix IP address detection on FreeBSD 7, 8, and 9 (`#1098`_) |
|---|
| 1926 | - Fix minor layout issue in the Web User Interface with Internet |
|---|
| 1927 | Explorer (`#1097`_) |
|---|
| 1928 | - Fix rarely-encountered incompatibility between Twisted logging |
|---|
| 1929 | utility and the new unicode support added in v1.7.0 (`#1099`_) |
|---|
| 1930 | - Forward-compatibility improvements for non-ASCII caps (`#1051`_) |
|---|
| 1931 | |
|---|
| 1932 | Code improvements |
|---|
| 1933 | ----------------- |
|---|
| 1934 | |
|---|
| 1935 | - Simplify and tidy-up directories, unicode support, test code |
|---|
| 1936 | (`#923`_, `#967`_, `#1072`_) |
|---|
| 1937 | |
|---|
| 1938 | .. _`#776`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/776 |
|---|
| 1939 | .. _`#923`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/923 |
|---|
| 1940 | .. _`#961`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/961 |
|---|
| 1941 | .. _`#967`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/967 |
|---|
| 1942 | .. _`#1051`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1051 |
|---|
| 1943 | .. _`#1067`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1067 |
|---|
| 1944 | .. _`#1072`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1072 |
|---|
| 1945 | .. _`#1083`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1083 |
|---|
| 1946 | .. _`#1097`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1097 |
|---|
| 1947 | .. _`#1098`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1098 |
|---|
| 1948 | .. _`#1099`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1099 |
|---|
| 1949 | .. _`#1117`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1117 |
|---|
| 1950 | .. _`#1118`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1118 |
|---|
| 1951 | |
|---|
| 1952 | |
|---|
| 1953 | Release 1.7.0 (2010-06-18) |
|---|
| 1954 | '''''''''''''''''''''''''' |
|---|
| 1955 | |
|---|
| 1956 | New Features |
|---|
| 1957 | ------------ |
|---|
| 1958 | |
|---|
| 1959 | - SFTP support (`#1037`_) |
|---|
| 1960 | Your Tahoe-LAFS gateway now acts like a full-fledged SFTP server. It |
|---|
| 1961 | has been tested with sshfs to provide a virtual filesystem in Linux. |
|---|
| 1962 | Many users have asked for this feature. We hope that it serves them |
|---|
| 1963 | well! See the `FTP-and-SFTP.rst`_ document to get |
|---|
| 1964 | started. |
|---|
| 1965 | - support for non-ASCII character encodings (`#534`_) |
|---|
| 1966 | Tahoe-LAFS now correctly handles filenames containing non-ASCII |
|---|
| 1967 | characters on all supported platforms: |
|---|
| 1968 | |
|---|
| 1969 | - when reading files in from the local filesystem (such as when you |
|---|
| 1970 | run "tahoe backup" to back up your local files to a Tahoe-LAFS |
|---|
| 1971 | grid); |
|---|
| 1972 | - when writing files out to the local filesystem (such as when you |
|---|
| 1973 | run "tahoe cp -r" to recursively copy files out of a Tahoe-LAFS |
|---|
| 1974 | grid); |
|---|
| 1975 | - when displaying filenames to the terminal (such as when you run |
|---|
| 1976 | "tahoe ls"), subject to limitations of the terminal and locale; |
|---|
| 1977 | - when parsing command-line arguments, except on Windows. |
|---|
| 1978 | |
|---|
| 1979 | - Servers of Happiness (`#778`_) |
|---|
| 1980 | Tahoe-LAFS now measures during immutable file upload to see how well |
|---|
| 1981 | distributed it is across multiple servers. It aborts the upload if |
|---|
| 1982 | the pieces of the file are not sufficiently well-distributed. |
|---|
| 1983 | This behavior is controlled by a configuration parameter called |
|---|
| 1984 | "servers of happiness". With the default settings for its erasure |
|---|
| 1985 | coding, Tahoe-LAFS generates 10 shares for each file, such that any |
|---|
| 1986 | 3 of those shares are sufficient to recover the file. The default |
|---|
| 1987 | value of "servers of happiness" is 7, which means that Tahoe-LAFS |
|---|
| 1988 | will guarantee that there are at least 7 servers holding some of the |
|---|
| 1989 | shares, such that any 3 of those servers can completely recover your |
|---|
| 1990 | file. The new upload code also distributes the shares better than the |
|---|
| 1991 | previous version in some cases and takes better advantage of |
|---|
| 1992 | pre-existing shares (when a file has already been previously |
|---|
| 1993 | uploaded). See the `architecture.rst`_ document [3] for details. |
|---|
| 1994 | |
|---|
| 1995 | Bugfixes and Improvements |
|---|
| 1996 | ------------------------- |
|---|
| 1997 | |
|---|
| 1998 | - Premature abort of upload if some shares were already present and |
|---|
| 1999 | some servers fail. (`#608`_) |
|---|
| 2000 | - python ./setup.py install -- can't create or remove files in install |
|---|
| 2001 | directory. (`#803`_) |
|---|
| 2002 | - Network failure => internal TypeError. (`#902`_) |
|---|
| 2003 | - Install of Tahoe on CentOS 5.4. (`#933`_) |
|---|
| 2004 | - CLI option --node-url now supports https url. (`#1028`_) |
|---|
| 2005 | - HTML/CSS template files were not correctly installed under |
|---|
| 2006 | Windows. (`#1033`_) |
|---|
| 2007 | - MetadataSetter does not enforce restriction on setting "tahoe" |
|---|
| 2008 | subkeys. (`#1034`_) |
|---|
| 2009 | - ImportError: No module named |
|---|
| 2010 | setuptools_darcs.setuptools_darcs. (`#1054`_) |
|---|
| 2011 | - Renamed Title in xhtml files. (`#1062`_) |
|---|
| 2012 | - Increase Python version dependency to 2.4.4, to avoid a critical |
|---|
| 2013 | CPython security bug. (`#1066`_) |
|---|
| 2014 | - Typo correction for the munin plugin tahoe_storagespace. (`#968`_) |
|---|
| 2015 | - Fix warnings found by pylint. (`#973`_) |
|---|
| 2016 | - Changing format of some documentation files. (`#1027`_) |
|---|
| 2017 | - the misc/ directory was tied up. (`#1068`_) |
|---|
| 2018 | - The 'ctime' and 'mtime' metadata fields are no longer written except |
|---|
| 2019 | by "tahoe backup". (`#924`_) |
|---|
| 2020 | - Unicode filenames in Tahoe-LAFS directories are normalized so that |
|---|
| 2021 | names that differ only in how accents are encoded are treated as the |
|---|
| 2022 | same. (`#1076`_) |
|---|
| 2023 | - Various small improvements to documentation. (`#937`_, `#911`_, |
|---|
| 2024 | `#1024`_, `#1082`_) |
|---|
| 2025 | |
|---|
| 2026 | Removals |
|---|
| 2027 | -------- |
|---|
| 2028 | |
|---|
| 2029 | - The 'tahoe debug consolidate' subcommand (for converting old |
|---|
| 2030 | allmydata Windows client backups to a newer format) has been |
|---|
| 2031 | removed. |
|---|
| 2032 | |
|---|
| 2033 | Dependency Updates |
|---|
| 2034 | ------------------ |
|---|
| 2035 | |
|---|
| 2036 | - the Python version dependency is raised to 2.4.4 in some cases |
|---|
| 2037 | (2.4.3 for Redhat-based Linux distributions, 2.4.2 for UCS-2 builds) |
|---|
| 2038 | (`#1066`_) |
|---|
| 2039 | - pycrypto >= 2.0.1 |
|---|
| 2040 | - pyasn1 >= 0.0.8a |
|---|
| 2041 | - mock (only required by unit tests) |
|---|
| 2042 | |
|---|
| 2043 | .. _`#534`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/534 |
|---|
| 2044 | .. _`#608`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/608 |
|---|
| 2045 | .. _`#778`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/778 |
|---|
| 2046 | .. _`#803`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/803 |
|---|
| 2047 | .. _`#902`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/902 |
|---|
| 2048 | .. _`#911`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/911 |
|---|
| 2049 | .. _`#924`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/924 |
|---|
| 2050 | .. _`#937`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/937 |
|---|
| 2051 | .. _`#933`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/933 |
|---|
| 2052 | .. _`#968`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/968 |
|---|
| 2053 | .. _`#973`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/973 |
|---|
| 2054 | .. _`#1024`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1024 |
|---|
| 2055 | .. _`#1027`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1027 |
|---|
| 2056 | .. _`#1028`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1028 |
|---|
| 2057 | .. _`#1033`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1033 |
|---|
| 2058 | .. _`#1034`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1034 |
|---|
| 2059 | .. _`#1037`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1037 |
|---|
| 2060 | .. _`#1054`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1054 |
|---|
| 2061 | .. _`#1062`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1062 |
|---|
| 2062 | .. _`#1066`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1066 |
|---|
| 2063 | .. _`#1068`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1068 |
|---|
| 2064 | .. _`#1076`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1076 |
|---|
| 2065 | .. _`#1082`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1082 |
|---|
| 2066 | .. _architecture.rst: docs/architecture.rst |
|---|
| 2067 | .. _FTP-and-SFTP.rst: docs/frontends/FTP-and-SFTP.rst |
|---|
| 2068 | |
|---|
| 2069 | Release 1.6.1 (2010-02-27) |
|---|
| 2070 | '''''''''''''''''''''''''' |
|---|
| 2071 | |
|---|
| 2072 | Bugfixes |
|---|
| 2073 | -------- |
|---|
| 2074 | |
|---|
| 2075 | - Correct handling of Small Immutable Directories |
|---|
| 2076 | |
|---|
| 2077 | Immutable directories can now be deep-checked and listed in the web |
|---|
| 2078 | UI in all cases. (In v1.6.0, some operations, such as deep-check, on |
|---|
| 2079 | a directory graph that included very small immutable directories, |
|---|
| 2080 | would result in an exception causing the whole operation to abort.) |
|---|
| 2081 | (`#948`_) |
|---|
| 2082 | |
|---|
| 2083 | Usability Improvements |
|---|
| 2084 | ---------------------- |
|---|
| 2085 | |
|---|
| 2086 | - Improved user interface messages and error reporting. (`#681`_, |
|---|
| 2087 | `#837`_, `#939`_) |
|---|
| 2088 | - The timeouts for operation handles have been greatly increased, so |
|---|
| 2089 | that you can view the results of an operation up to 4 days after it |
|---|
| 2090 | has completed. After viewing them for the first time, the results |
|---|
| 2091 | are retained for a further day. (`#577`_) |
|---|
| 2092 | |
|---|
| 2093 | Release 1.6.0 (2010-02-01) |
|---|
| 2094 | '''''''''''''''''''''''''' |
|---|
| 2095 | |
|---|
| 2096 | New Features |
|---|
| 2097 | ------------ |
|---|
| 2098 | |
|---|
| 2099 | - Immutable Directories |
|---|
| 2100 | |
|---|
| 2101 | Tahoe-LAFS can now create and handle immutable |
|---|
| 2102 | directories. (`#607`_, `#833`_, `#931`_) These are read just like |
|---|
| 2103 | normal directories, but are "deep-immutable", meaning that all their |
|---|
| 2104 | children (and everything reachable from those children) must be |
|---|
| 2105 | immutable objects (i.e. immutable or literal files, and other |
|---|
| 2106 | immutable directories). |
|---|
| 2107 | |
|---|
| 2108 | These directories must be created in a single webapi call that |
|---|
| 2109 | provides all of the children at once. (Since they cannot be changed |
|---|
| 2110 | after creation, the usual create/add/add sequence cannot be used.) |
|---|
| 2111 | They have URIs that start with "URI:DIR2-CHK:" or "URI:DIR2-LIT:", |
|---|
| 2112 | and are described on the human-facing web interface (aka the "WUI") |
|---|
| 2113 | with a "DIR-IMM" abbreviation (as opposed to "DIR" for the usual |
|---|
| 2114 | read-write directories and "DIR-RO" for read-only directories). |
|---|
| 2115 | |
|---|
| 2116 | Tahoe-LAFS releases before 1.6.0 cannot read the contents of an |
|---|
| 2117 | immutable directory. 1.5.0 will tolerate their presence in a |
|---|
| 2118 | directory listing (and display it as "unknown"). 1.4.1 and earlier |
|---|
| 2119 | cannot tolerate them: a DIR-IMM child in any directory will prevent |
|---|
| 2120 | the listing of that directory. |
|---|
| 2121 | |
|---|
| 2122 | Immutable directories are repairable, just like normal immutable |
|---|
| 2123 | files. |
|---|
| 2124 | |
|---|
| 2125 | The webapi "POST t=mkdir-immutable" call is used to create immutable |
|---|
| 2126 | directories. See `webapi.rst`_ for details. |
|---|
| 2127 | |
|---|
| 2128 | - "tahoe backup" now creates immutable directories, backupdb has |
|---|
| 2129 | dircache |
|---|
| 2130 | |
|---|
| 2131 | The "tahoe backup" command has been enhanced to create immutable |
|---|
| 2132 | directories (in previous releases, it created read-only mutable |
|---|
| 2133 | directories) (`#828`_). This is significantly faster, since it does |
|---|
| 2134 | not need to create an RSA keypair for each new directory. Also |
|---|
| 2135 | "DIR-IMM" immutable directories are repairable, unlike "DIR-RO" |
|---|
| 2136 | read-only mutable directories at present. (A future Tahoe-LAFS |
|---|
| 2137 | release should also be able to repair DIR-RO.) |
|---|
| 2138 | |
|---|
| 2139 | In addition, the backupdb (used by "tahoe backup" to remember what |
|---|
| 2140 | it has already copied) has been enhanced to store information about |
|---|
| 2141 | existing immutable directories. This allows it to re-use directories |
|---|
| 2142 | that have moved but still contain identical contents, or that have |
|---|
| 2143 | been deleted and later replaced. (The 1.5.0 "tahoe backup" command |
|---|
| 2144 | could only re-use directories that were in the same place as they |
|---|
| 2145 | were in the immediately previous backup.) With this change, the |
|---|
| 2146 | backup process no longer needs to read the previous snapshot out of |
|---|
| 2147 | the Tahoe-LAFS grid, reducing the network load |
|---|
| 2148 | considerably. (`#606`_) |
|---|
| 2149 | |
|---|
| 2150 | A "null backup" (in which nothing has changed since the previous |
|---|
| 2151 | backup) will require only two Tahoe-side operations: one to add an |
|---|
| 2152 | Archives/$TIMESTAMP entry, and a second to update the Latest/ |
|---|
| 2153 | link. On the local disk side, it will readdir() all your local |
|---|
| 2154 | directories and stat() all your local files. |
|---|
| 2155 | |
|---|
| 2156 | If you've been using "tahoe backup" for a while, you will notice |
|---|
| 2157 | that your first use of it after upgrading to 1.6.0 may take a long |
|---|
| 2158 | time: it must create proper immutable versions of all the old |
|---|
| 2159 | read-only mutable directories. This process won't take as long as |
|---|
| 2160 | the initial backup (where all the file contents had to be uploaded |
|---|
| 2161 | too): it will require time proportional to the number and size of |
|---|
| 2162 | your directories. After this initial pass, all subsequent passes |
|---|
| 2163 | should take a tiny fraction of the time. |
|---|
| 2164 | |
|---|
| 2165 | As noted above, Tahoe-LAFS versions earlier than 1.5.0 cannot list a |
|---|
| 2166 | directory containing an immutable subdirectory. Tahoe-LAFS versions |
|---|
| 2167 | earlier than 1.6.0 cannot read the contents of an immutable |
|---|
| 2168 | directory. |
|---|
| 2169 | |
|---|
| 2170 | The "tahoe backup" command has been improved to skip over unreadable |
|---|
| 2171 | objects (like device files, named pipes, and files with permissions |
|---|
| 2172 | that prevent the command from reading their contents), instead of |
|---|
| 2173 | throwing an exception and terminating the backup process. It also |
|---|
| 2174 | skips over symlinks, because these cannot be represented faithfully |
|---|
| 2175 | in the Tahoe-side filesystem. A warning message will be emitted each |
|---|
| 2176 | time something is skipped. (`#729`_, `#850`_, `#641`_) |
|---|
| 2177 | |
|---|
| 2178 | - "create-node" command added, "create-client" now implies |
|---|
| 2179 | --no-storage |
|---|
| 2180 | |
|---|
| 2181 | The basic idea behind Tahoe-LAFS's client+server and client-only |
|---|
| 2182 | processes is that you are creating a general-purpose Tahoe-LAFS |
|---|
| 2183 | "node" process, which has several components that can be |
|---|
| 2184 | activated. Storage service is one of these optional components, as |
|---|
| 2185 | is the Helper, FTP server, and SFTP server. Web gateway |
|---|
| 2186 | functionality is nominally on this list, but it is always active; a |
|---|
| 2187 | future release will make it optional. There are three special |
|---|
| 2188 | purpose servers that can't currently be run as a component in a |
|---|
| 2189 | node: introducer, key-generator, and stats-gatherer. |
|---|
| 2190 | |
|---|
| 2191 | So now "tahoe create-node" will create a Tahoe-LAFS node process, |
|---|
| 2192 | and after creation you can edit its tahoe.cfg to enable or disable |
|---|
| 2193 | the desired services. It is a more general-purpose replacement for |
|---|
| 2194 | "tahoe create-client". The default configuration has storage |
|---|
| 2195 | service enabled. For convenience, the "--no-storage" argument makes |
|---|
| 2196 | a tahoe.cfg file that disables storage service. (`#760`_) |
|---|
| 2197 | |
|---|
| 2198 | "tahoe create-client" has been changed to create a Tahoe-LAFS node |
|---|
| 2199 | without a storage service. It is equivalent to "tahoe create-node |
|---|
| 2200 | --no-storage". This helps to reduce the confusion surrounding the |
|---|
| 2201 | use of a command with "client" in its name to create a storage |
|---|
| 2202 | *server*. Use "tahoe create-client" to create a purely client-side |
|---|
| 2203 | node. If you want to offer storage to the grid, use "tahoe |
|---|
| 2204 | create-node" instead. |
|---|
| 2205 | |
|---|
| 2206 | In the future, other services will be added to the node, and they |
|---|
| 2207 | will be controlled through options in tahoe.cfg . The most important |
|---|
| 2208 | of these services may get additional --enable-XYZ or --disable-XYZ |
|---|
| 2209 | arguments to "tahoe create-node". |
|---|
| 2210 | |
|---|
| 2211 | - Performance Improvements |
|---|
| 2212 | |
|---|
| 2213 | Download of immutable files begins as soon as the downloader has |
|---|
| 2214 | located the K necessary shares (`#928`_, `#287`_). In both the |
|---|
| 2215 | previous and current releases, a downloader will first issue queries |
|---|
| 2216 | to all storage servers on the grid to locate shares before it begins |
|---|
| 2217 | downloading the shares. In previous releases of Tahoe-LAFS, download |
|---|
| 2218 | would not begin until all storage servers on the grid had replied to |
|---|
| 2219 | the query, at which point K shares would be chosen for download from |
|---|
| 2220 | among the shares that were located. In this release, download begins |
|---|
| 2221 | as soon as any K shares are located. This means that downloads start |
|---|
| 2222 | sooner, which is particularly important if there is a server on the |
|---|
| 2223 | grid that is extremely slow or even hung in such a way that it will |
|---|
| 2224 | never respond. In previous releases such a server would have a |
|---|
| 2225 | negative impact on all downloads from that grid. In this release, |
|---|
| 2226 | such a server will have no impact on downloads, as long as K shares |
|---|
| 2227 | can be found on other, quicker, servers. This also means that |
|---|
| 2228 | downloads now use the "best-alacrity" servers that they talk to, as |
|---|
| 2229 | measured by how quickly the servers reply to the initial query. This |
|---|
| 2230 | might cause downloads to go faster, especially on grids with |
|---|
| 2231 | heterogeneous servers or geographical dispersion. |
|---|
| 2232 | |
|---|
| 2233 | Minor Changes |
|---|
| 2234 | ------------- |
|---|
| 2235 | |
|---|
| 2236 | - The webapi acquired a new "t=mkdir-with-children" command, to create |
|---|
| 2237 | and populate a directory in a single call. This is significantly |
|---|
| 2238 | faster than using separate "t=mkdir" and "t=set-children" operations |
|---|
| 2239 | (it uses one gateway-to-grid roundtrip, instead of three or |
|---|
| 2240 | four). (`#533`_) |
|---|
| 2241 | |
|---|
| 2242 | - The t=set-children (note the hyphen) operation is now documented in |
|---|
| 2243 | webapi.rst, and is the new preferred spelling of the |
|---|
| 2244 | old t=set_children (with an underscore). The underscore version |
|---|
| 2245 | remains for backwards compatibility. (`#381`_, `#927`_) |
|---|
| 2246 | |
|---|
| 2247 | - The tracebacks produced by errors in CLI tools should now be in |
|---|
| 2248 | plain text, instead of HTML (which is unreadable outside of a |
|---|
| 2249 | browser). (`#646`_) |
|---|
| 2250 | |
|---|
| 2251 | - The [storage]reserved_space configuration knob (which causes the |
|---|
| 2252 | storage server to refuse shares when available disk space drops |
|---|
| 2253 | below a threshold) should work on Windows now, not just |
|---|
| 2254 | UNIX. (`#637`_) |
|---|
| 2255 | |
|---|
| 2256 | - "tahoe cp" should now exit with status "1" if it cannot figure out a |
|---|
| 2257 | suitable target filename, such as when you copy from a bare |
|---|
| 2258 | filecap. (`#761`_) |
|---|
| 2259 | |
|---|
| 2260 | - "tahoe get" no longer creates a zero-length file upon |
|---|
| 2261 | error. (`#121`_) |
|---|
| 2262 | |
|---|
| 2263 | - "tahoe ls" can now list single files. (`#457`_) |
|---|
| 2264 | |
|---|
| 2265 | - "tahoe deep-check --repair" should tolerate repair failures now, |
|---|
| 2266 | instead of halting traversal. (`#874`_, `#786`_) |
|---|
| 2267 | |
|---|
| 2268 | - "tahoe create-alias" no longer corrupts the aliases file if it had |
|---|
| 2269 | previously been edited to have no trailing newline. (`#741`_) |
|---|
| 2270 | |
|---|
| 2271 | - Many small packaging improvements were made to facilitate the |
|---|
| 2272 | "tahoe-lafs" package being included in Ubuntu. Several mac/win32 |
|---|
| 2273 | binary libraries were removed, some figleaf code-coverage files were |
|---|
| 2274 | removed, a bundled copy of darcsver-1.2.1 was removed, and |
|---|
| 2275 | additional licensing text was added. |
|---|
| 2276 | |
|---|
| 2277 | - Several DeprecationWarnings for python2.6 were silenced. (`#859`_) |
|---|
| 2278 | |
|---|
| 2279 | - The checker --add-lease option would sometimes fail for shares |
|---|
| 2280 | stored on old (Tahoe v1.2.0) servers. (`#875`_) |
|---|
| 2281 | |
|---|
| 2282 | - The documentation for installing on Windows (docs/quickstart.rst) |
|---|
| 2283 | has been improved. (`#773`_) |
|---|
| 2284 | |
|---|
| 2285 | For other changes not mentioned here, see |
|---|
| 2286 | <https://tahoe-lafs.org/trac/tahoe-lafs/query?milestone=1.6.0&keywords=!~news-done>. |
|---|
| 2287 | To include the tickets mentioned above, go to |
|---|
| 2288 | <https://tahoe-lafs.org/trac/tahoe-lafs/query?milestone=1.6.0>. |
|---|
| 2289 | |
|---|
| 2290 | .. _`#121`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/121 |
|---|
| 2291 | .. _`#287`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/287 |
|---|
| 2292 | .. _`#381`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/381 |
|---|
| 2293 | .. _`#457`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/457 |
|---|
| 2294 | .. _`#533`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/533 |
|---|
| 2295 | .. _`#577`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/577 |
|---|
| 2296 | .. _`#606`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/606 |
|---|
| 2297 | .. _`#607`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/607 |
|---|
| 2298 | .. _`#637`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/637 |
|---|
| 2299 | .. _`#641`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/641 |
|---|
| 2300 | .. _`#646`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/646 |
|---|
| 2301 | .. _`#681`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/681 |
|---|
| 2302 | .. _`#729`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/729 |
|---|
| 2303 | .. _`#741`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/741 |
|---|
| 2304 | .. _`#760`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/760 |
|---|
| 2305 | .. _`#761`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/761 |
|---|
| 2306 | .. _`#773`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/773 |
|---|
| 2307 | .. _`#786`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/786 |
|---|
| 2308 | .. _`#828`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/828 |
|---|
| 2309 | .. _`#833`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/833 |
|---|
| 2310 | .. _`#859`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/859 |
|---|
| 2311 | .. _`#874`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/874 |
|---|
| 2312 | .. _`#875`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/875 |
|---|
| 2313 | .. _`#931`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/931 |
|---|
| 2314 | .. _`#837`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/837 |
|---|
| 2315 | .. _`#850`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/850 |
|---|
| 2316 | .. _`#927`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/927 |
|---|
| 2317 | .. _`#928`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/928 |
|---|
| 2318 | .. _`#939`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/939 |
|---|
| 2319 | .. _`#948`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/948 |
|---|
| 2320 | .. _webapi.rst: docs/frontends/webapi.rst |
|---|
| 2321 | |
|---|
| 2322 | Release 1.5.0 (2009-08-01) |
|---|
| 2323 | '''''''''''''''''''''''''' |
|---|
| 2324 | |
|---|
| 2325 | Improvements |
|---|
| 2326 | ------------ |
|---|
| 2327 | |
|---|
| 2328 | - Uploads of immutable files now use pipelined writes, improving |
|---|
| 2329 | upload speed slightly (10%) over high-latency connections. (`#392`_) |
|---|
| 2330 | |
|---|
| 2331 | - Processing large directories has been sped up, by removing a O(N^2) |
|---|
| 2332 | algorithm from the dirnode decoding path and retaining unmodified |
|---|
| 2333 | encrypted entries. (`#750`_, `#752`_) |
|---|
| 2334 | |
|---|
| 2335 | - The human-facing web interface (aka the "WUI") received a |
|---|
| 2336 | significant CSS makeover by Kevin Reid, making it much prettier and |
|---|
| 2337 | easier to read. The WUI "check" and "deep-check" forms now include a |
|---|
| 2338 | "Renew Lease" checkbox, mirroring the CLI --add-lease option, so |
|---|
| 2339 | leases can be added or renewed from the web interface. |
|---|
| 2340 | |
|---|
| 2341 | - The CLI "tahoe mv" command now refuses to overwrite |
|---|
| 2342 | directories. (`#705`_) |
|---|
| 2343 | |
|---|
| 2344 | - The CLI "tahoe webopen" command, when run without arguments, will |
|---|
| 2345 | now bring up the "Welcome Page" (node status and mkdir/upload |
|---|
| 2346 | forms). |
|---|
| 2347 | |
|---|
| 2348 | - The 3.5MB limit on mutable files was removed, so it should be |
|---|
| 2349 | possible to upload arbitrarily-sized mutable files. Note, however, |
|---|
| 2350 | that the data format and algorithm remains the same, so using |
|---|
| 2351 | mutable files still requires bandwidth, computation, and RAM in |
|---|
| 2352 | proportion to the size of the mutable file. (`#694`_) |
|---|
| 2353 | |
|---|
| 2354 | - This version of Tahoe-LAFS will tolerate directory entries that |
|---|
| 2355 | contain filecap formats which it does not recognize: files and |
|---|
| 2356 | directories from the future. This should improve the user |
|---|
| 2357 | experience (for 1.5.0 users) when we add new cap formats in the |
|---|
| 2358 | future. Previous versions would fail badly, preventing the user from |
|---|
| 2359 | seeing or editing anything else in those directories. These |
|---|
| 2360 | unrecognized objects can be renamed and deleted, but obviously not |
|---|
| 2361 | read or written. Also they cannot generally be copied. (`#683`_) |
|---|
| 2362 | |
|---|
| 2363 | Bugfixes |
|---|
| 2364 | -------- |
|---|
| 2365 | |
|---|
| 2366 | - deep-check-and-repair now tolerates read-only directories, such as |
|---|
| 2367 | the ones produced by the "tahoe backup" CLI command. Read-only |
|---|
| 2368 | directories and mutable files are checked, but not |
|---|
| 2369 | repaired. Previous versions threw an exception when attempting the |
|---|
| 2370 | repair and failed to process the remaining contents. We cannot yet |
|---|
| 2371 | repair these read-only objects, but at least this version allows the |
|---|
| 2372 | rest of the check+repair to proceed. (`#625`_) |
|---|
| 2373 | |
|---|
| 2374 | - A bug in 1.4.1 which caused a server to be listed multiple times |
|---|
| 2375 | (and frequently broke all connections to that server) was |
|---|
| 2376 | fixed. (`#653`_) |
|---|
| 2377 | |
|---|
| 2378 | - The plaintext-hashing code was removed from the Helper interface, |
|---|
| 2379 | removing the Helper's ability to mount a |
|---|
| 2380 | partial-information-guessing attack. (`#722`_) |
|---|
| 2381 | |
|---|
| 2382 | Platform/packaging changes |
|---|
| 2383 | -------------------------- |
|---|
| 2384 | |
|---|
| 2385 | - Tahoe-LAFS now runs on NetBSD, OpenBSD, ArchLinux, and NixOS, and on |
|---|
| 2386 | an embedded system based on an ARM CPU running at 266 MHz. |
|---|
| 2387 | |
|---|
| 2388 | - Unit test timeouts have been raised to allow the tests to complete |
|---|
| 2389 | on extremely slow platforms like embedded ARM-based NAS boxes, which |
|---|
| 2390 | may take several hours to run the test suite. An ARM-specific |
|---|
| 2391 | data-corrupting bug in an older version of Crypto++ (5.5.2) was |
|---|
| 2392 | identified: ARM-users are encouraged to use recent |
|---|
| 2393 | Crypto++/pycryptopp which avoids this problem. |
|---|
| 2394 | |
|---|
| 2395 | - Tahoe-LAFS now requires a SQLite library, either the sqlite3 that |
|---|
| 2396 | comes built-in with python2.5/2.6, or the add-on pysqlite2 if you're |
|---|
| 2397 | using python2.4. In the previous release, this was only needed for |
|---|
| 2398 | the "tahoe backup" command: now it is mandatory. |
|---|
| 2399 | |
|---|
| 2400 | - Several minor documentation updates were made. |
|---|
| 2401 | |
|---|
| 2402 | - To help get Tahoe-LAFS into Linux distributions like Fedora and |
|---|
| 2403 | Debian, packaging improvements are being made in both Tahoe-LAFS and |
|---|
| 2404 | related libraries like pycryptopp and zfec. |
|---|
| 2405 | |
|---|
| 2406 | - The Crypto++ library included in the pycryptopp package has been |
|---|
| 2407 | upgraded to version 5.6.0 of Crypto++, which includes a more |
|---|
| 2408 | efficient implementation of SHA-256 in assembly for x86 or amd64 |
|---|
| 2409 | architectures. |
|---|
| 2410 | |
|---|
| 2411 | dependency updates |
|---|
| 2412 | ------------------ |
|---|
| 2413 | |
|---|
| 2414 | - foolscap-0.4.1 |
|---|
| 2415 | - no python-2.4.0 or 2.4.1 (2.4.2 is good) (they contained a bug in base64.b32decode) |
|---|
| 2416 | - avoid python-2.6 on windows with mingw: compiler issues |
|---|
| 2417 | - python2.4 requires pysqlite2 (2.5,2.6 does not) |
|---|
| 2418 | - no python-3.x |
|---|
| 2419 | - pycryptopp-0.5.15 |
|---|
| 2420 | |
|---|
| 2421 | .. _#392: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/392 |
|---|
| 2422 | .. _#625: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/625 |
|---|
| 2423 | .. _#653: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/653 |
|---|
| 2424 | .. _#683: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/683 |
|---|
| 2425 | .. _#694: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/694 |
|---|
| 2426 | .. _#705: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/705 |
|---|
| 2427 | .. _#722: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/722 |
|---|
| 2428 | .. _#750: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/750 |
|---|
| 2429 | .. _#752: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/752 |
|---|
| 2430 | |
|---|
| 2431 | Release 1.4.1 (2009-04-13) |
|---|
| 2432 | '''''''''''''''''''''''''' |
|---|
| 2433 | |
|---|
| 2434 | Garbage Collection |
|---|
| 2435 | ------------------ |
|---|
| 2436 | |
|---|
| 2437 | - The big feature for this release is the implementation of garbage |
|---|
| 2438 | collection, allowing Tahoe storage servers to delete shares for old |
|---|
| 2439 | deleted files. When enabled, this uses a "mark and sweep" process: |
|---|
| 2440 | clients are responsible for updating the leases on their shares |
|---|
| 2441 | (generally by running "tahoe deep-check --add-lease"), and servers |
|---|
| 2442 | are allowed to delete any share which does not have an up-to-date |
|---|
| 2443 | lease. The process is described in detail in |
|---|
| 2444 | `garbage-collection.rst`_. |
|---|
| 2445 | |
|---|
| 2446 | The server must be configured to enable garbage-collection, by |
|---|
| 2447 | adding directives to the [storage] section that define an age limit |
|---|
| 2448 | for shares. The default configuration will not delete any shares. |
|---|
| 2449 | |
|---|
| 2450 | Both servers and clients should be upgraded to this release to make |
|---|
| 2451 | the garbage-collection as pleasant as possible. 1.2.0 servers have |
|---|
| 2452 | code to perform the update-lease operation but it suffers from a |
|---|
| 2453 | fatal bug, while 1.3.0 servers have update-lease but will return an |
|---|
| 2454 | exception for unknown storage indices, causing clients to emit an |
|---|
| 2455 | Incident for each exception, slowing the add-lease process down to a |
|---|
| 2456 | crawl. 1.1.0 servers did not have the add-lease operation at all. |
|---|
| 2457 | |
|---|
| 2458 | Security/Usability Problems Fixed |
|---|
| 2459 | --------------------------------- |
|---|
| 2460 | |
|---|
| 2461 | - A super-linear algorithm in the Merkle Tree code was fixed, which |
|---|
| 2462 | previously caused e.g. download of a 10GB file to take several hours |
|---|
| 2463 | before the first byte of plaintext could be produced. The new |
|---|
| 2464 | "alacrity" is about 2 minutes. A future release should reduce this |
|---|
| 2465 | to a few seconds by fixing ticket `#442`_. |
|---|
| 2466 | |
|---|
| 2467 | - The previous version permitted a small timing attack (due to our use |
|---|
| 2468 | of strcmp) against the write-enabler and lease-renewal/cancel |
|---|
| 2469 | secrets. An attacker who could measure response-time variations of |
|---|
| 2470 | approximatly 3ns against a very noisy background time of about 15ms |
|---|
| 2471 | might be able to guess these secrets. We do not believe this attack |
|---|
| 2472 | was actually feasible. This release closes the attack by first |
|---|
| 2473 | hashing the two strings to be compared with a random secret. |
|---|
| 2474 | |
|---|
| 2475 | webapi changes |
|---|
| 2476 | -------------- |
|---|
| 2477 | |
|---|
| 2478 | - In most cases, HTML tracebacks will only be sent if an "Accept: |
|---|
| 2479 | text/html" header was provided with the HTTP request. This will |
|---|
| 2480 | generally cause browsers to get an HTMLized traceback but send |
|---|
| 2481 | regular text/plain tracebacks to non-browsers (like the CLI |
|---|
| 2482 | clients). More errors have been mapped to useful HTTP error codes. |
|---|
| 2483 | |
|---|
| 2484 | - The streaming webapi operations (deep-check and manifest) now have a |
|---|
| 2485 | way to indicate errors (an output line that starts with "ERROR" |
|---|
| 2486 | instead of being legal JSON). See `webapi.rst`_ for |
|---|
| 2487 | details. |
|---|
| 2488 | |
|---|
| 2489 | - The storage server now has its own status page (at /storage), linked |
|---|
| 2490 | from the Welcome page. This page shows progress and results of the |
|---|
| 2491 | two new share-crawlers: one which merely counts shares (to give an |
|---|
| 2492 | estimate of how many files/directories are being stored in the |
|---|
| 2493 | grid), the other examines leases and reports how much space would be |
|---|
| 2494 | freed if GC were enabled. The page also shows how much disk space is |
|---|
| 2495 | present, used, reserved, and available for the Tahoe server, and |
|---|
| 2496 | whether the server is currently running in "read-write" mode or |
|---|
| 2497 | "read-only" mode. |
|---|
| 2498 | |
|---|
| 2499 | - When a directory node cannot be read (perhaps because of insufficent |
|---|
| 2500 | shares), a minimal webapi page is created so that the "more-info" |
|---|
| 2501 | links (including a Check/Repair operation) will still be accessible. |
|---|
| 2502 | |
|---|
| 2503 | - A new "reliability" page was added, with the beginnings of work on a |
|---|
| 2504 | statistical loss model. You can tell this page how many servers you |
|---|
| 2505 | are using and their independent failure probabilities, and it will |
|---|
| 2506 | tell you the likelihood that an arbitrary file will survive each |
|---|
| 2507 | repair period. The "numpy" package must be installed to access this |
|---|
| 2508 | page. A partial paper, written by Shawn Willden, has been added to |
|---|
| 2509 | docs/proposed/lossmodel.lyx . |
|---|
| 2510 | |
|---|
| 2511 | CLI changes |
|---|
| 2512 | ----------- |
|---|
| 2513 | |
|---|
| 2514 | - "tahoe check" and "tahoe deep-check" now accept an "--add-lease" |
|---|
| 2515 | argument, to update a lease on all shares. This is the "mark" side |
|---|
| 2516 | of garbage collection. |
|---|
| 2517 | |
|---|
| 2518 | - In many cases, CLI error messages have been improved: the ugly |
|---|
| 2519 | HTMLized traceback has been replaced by a normal python traceback. |
|---|
| 2520 | |
|---|
| 2521 | - "tahoe deep-check" and "tahoe manifest" now have better error |
|---|
| 2522 | reporting. "tahoe cp" is now non-verbose by default. |
|---|
| 2523 | |
|---|
| 2524 | - "tahoe backup" now accepts several "--exclude" arguments, to ignore |
|---|
| 2525 | certain files (like editor temporary files and version-control |
|---|
| 2526 | metadata) during backup. |
|---|
| 2527 | |
|---|
| 2528 | - On windows, the CLI now accepts local paths like "c:\dir\file.txt", |
|---|
| 2529 | which previously was interpreted as a Tahoe path using a "c:" alias. |
|---|
| 2530 | |
|---|
| 2531 | - The "tahoe restart" command now uses "--force" by default (meaning |
|---|
| 2532 | it will start a node even if it didn't look like there was one |
|---|
| 2533 | already running). |
|---|
| 2534 | |
|---|
| 2535 | - The "tahoe debug consolidate" command was added. This takes a series |
|---|
| 2536 | of independent timestamped snapshot directories (such as those |
|---|
| 2537 | created by the allmydata.com windows backup program, or a series of |
|---|
| 2538 | "tahoe cp -r" commands) and creates new snapshots that used shared |
|---|
| 2539 | read-only directories whenever possible (like the output of "tahoe |
|---|
| 2540 | backup"). In the most common case (when the snapshots are fairly |
|---|
| 2541 | similar), the result will use significantly fewer directories than |
|---|
| 2542 | the original, allowing "deep-check" and similar tools to run much |
|---|
| 2543 | faster. In some cases, the speedup can be an order of magnitude or |
|---|
| 2544 | more. This tool is still somewhat experimental, and only needs to |
|---|
| 2545 | be run on large backups produced by something other than "tahoe |
|---|
| 2546 | backup", so it was placed under the "debug" category. |
|---|
| 2547 | |
|---|
| 2548 | - "tahoe cp -r --caps-only tahoe:dir localdir" is a diagnostic tool |
|---|
| 2549 | which, instead of copying the full contents of files into the local |
|---|
| 2550 | directory, merely copies their filecaps. This can be used to verify |
|---|
| 2551 | the results of a "consolidation" operation. |
|---|
| 2552 | |
|---|
| 2553 | other fixes |
|---|
| 2554 | ----------- |
|---|
| 2555 | |
|---|
| 2556 | - The codebase no longer rauses RuntimeError as a kind of |
|---|
| 2557 | assert(). Specific exception classes were created for each previous |
|---|
| 2558 | instance of RuntimeError. |
|---|
| 2559 | |
|---|
| 2560 | - Many unit tests were changed to use a non-network test harness, |
|---|
| 2561 | speeding them up considerably. |
|---|
| 2562 | |
|---|
| 2563 | - Deep-traversal operations (manifest and deep-check) now walk |
|---|
| 2564 | individual directories in alphabetical order. Occasional turn breaks |
|---|
| 2565 | are inserted to prevent a stack overflow when traversing directories |
|---|
| 2566 | with hundreds of entries. |
|---|
| 2567 | |
|---|
| 2568 | - The experimental SFTP server had its path-handling logic changed |
|---|
| 2569 | slightly, to accomodate more SFTP clients, although there are still |
|---|
| 2570 | issues (`#645`_). |
|---|
| 2571 | |
|---|
| 2572 | .. _#442: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/442 |
|---|
| 2573 | .. _#645: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/645 |
|---|
| 2574 | .. _garbage-collection.rst: docs/garbage-collection.rst |
|---|
| 2575 | |
|---|
| 2576 | Release 1.3.0 (2009-02-13) |
|---|
| 2577 | '''''''''''''''''''''''''' |
|---|
| 2578 | |
|---|
| 2579 | Checker/Verifier/Repairer |
|---|
| 2580 | ------------------------- |
|---|
| 2581 | |
|---|
| 2582 | - The primary focus of this release has been writing a checker / |
|---|
| 2583 | verifier / repairer for files and directories. "Checking" is the |
|---|
| 2584 | act of asking storage servers whether they have a share for the |
|---|
| 2585 | given file or directory: if there are not enough shares available, |
|---|
| 2586 | the file or directory will be unrecoverable. "Verifying" is the act |
|---|
| 2587 | of downloading and cryptographically asserting that the server's |
|---|
| 2588 | share is undamaged: it requires more work (bandwidth and CPU) than |
|---|
| 2589 | checking, but can catch problems that simple checking |
|---|
| 2590 | cannot. "Repair" is the act of replacing missing or damaged shares |
|---|
| 2591 | with new ones. |
|---|
| 2592 | |
|---|
| 2593 | - This release includes a full checker, a partial verifier, and a |
|---|
| 2594 | partial repairer. The repairer is able to handle missing shares: new |
|---|
| 2595 | shares are generated and uploaded to make up for the missing |
|---|
| 2596 | ones. This is currently the best application of the repairer: to |
|---|
| 2597 | replace shares that were lost because of server departure or |
|---|
| 2598 | permanent drive failure. |
|---|
| 2599 | |
|---|
| 2600 | - The repairer in this release is somewhat able to handle corrupted |
|---|
| 2601 | shares. The limitations are: |
|---|
| 2602 | |
|---|
| 2603 | - Immutable verifier is incomplete: not all shares are used, and not |
|---|
| 2604 | all fields of those shares are verified. Therefore the immutable |
|---|
| 2605 | verifier has only a moderate chance of detecting corrupted shares. |
|---|
| 2606 | - The mutable verifier is mostly complete: all shares are examined, |
|---|
| 2607 | and most fields of the shares are validated. |
|---|
| 2608 | - The storage server protocol offers no way for the repairer to |
|---|
| 2609 | replace or delete immutable shares. If corruption is detected, the |
|---|
| 2610 | repairer will upload replacement shares to other servers, but the |
|---|
| 2611 | corrupted shares will be left in place. |
|---|
| 2612 | - read-only directories and read-only mutable files must be repaired |
|---|
| 2613 | by someone who holds the write-cap: the read-cap is |
|---|
| 2614 | insufficient. Moreover, the deep-check-and-repair operation will |
|---|
| 2615 | halt with an error if it attempts to repair one of these read-only |
|---|
| 2616 | objects. |
|---|
| 2617 | - Some forms of corruption can cause both download and repair |
|---|
| 2618 | operations to fail. A future release will fix this, since download |
|---|
| 2619 | should be tolerant of any corruption as long as there are at least |
|---|
| 2620 | 'k' valid shares, and repair should be able to fix any file that is |
|---|
| 2621 | downloadable. |
|---|
| 2622 | |
|---|
| 2623 | - If the downloader, verifier, or repairer detects share corruption, |
|---|
| 2624 | the servers which provided the bad shares will be notified (via a |
|---|
| 2625 | file placed in the BASEDIR/storage/corruption-advisories directory) |
|---|
| 2626 | so their operators can manually delete the corrupted shares and |
|---|
| 2627 | investigate the problem. In addition, the "incident gatherer" |
|---|
| 2628 | mechanism will automatically report share corruption to an incident |
|---|
| 2629 | gatherer service, if one is configured. Note that corrupted shares |
|---|
| 2630 | indicate hardware failures, serious software bugs, or malice on the |
|---|
| 2631 | part of the storage server operator, so a corrupted share should be |
|---|
| 2632 | considered highly unusual. |
|---|
| 2633 | |
|---|
| 2634 | - By periodically checking/repairing all files and directories, |
|---|
| 2635 | objects in the Tahoe filesystem remain resistant to recoverability |
|---|
| 2636 | failures due to missing and/or broken servers. |
|---|
| 2637 | |
|---|
| 2638 | - This release includes a wapi mechanism to initiate checks on |
|---|
| 2639 | individual files and directories (with or without verification, and |
|---|
| 2640 | with or without automatic repair). A related mechanism is used to |
|---|
| 2641 | initiate a "deep-check" on a directory: recursively traversing the |
|---|
| 2642 | directory and its children, checking (and/or verifying/repairing) |
|---|
| 2643 | everything underneath. Both mechanisms can be run with an |
|---|
| 2644 | "output=JSON" argument, to obtain machine-readable check/repair |
|---|
| 2645 | status results. These results include a copy of the filesystem |
|---|
| 2646 | statistics from the "deep-stats" operation (including total number |
|---|
| 2647 | of files, size histogram, etc). If repair is possible, a "Repair" |
|---|
| 2648 | button will appear on the results page. |
|---|
| 2649 | |
|---|
| 2650 | - The client web interface now features some extra buttons to initiate |
|---|
| 2651 | check and deep-check operations. When these operations finish, they |
|---|
| 2652 | display a results page that summarizes any problems that were |
|---|
| 2653 | encountered. All long-running deep-traversal operations, including |
|---|
| 2654 | deep-check, use a start-and-poll mechanism, to avoid depending upon |
|---|
| 2655 | a single long-lived HTTP connection. `webapi.rst`_ has |
|---|
| 2656 | details. |
|---|
| 2657 | |
|---|
| 2658 | Efficient Backup |
|---|
| 2659 | ---------------- |
|---|
| 2660 | |
|---|
| 2661 | - The "tahoe backup" command is new in this release, which creates |
|---|
| 2662 | efficient versioned backups of a local directory. Given a local |
|---|
| 2663 | pathname and a target Tahoe directory, this will create a read-only |
|---|
| 2664 | snapshot of the local directory in $target/Archives/$timestamp. It |
|---|
| 2665 | will also create $target/Latest, which is a reference to the latest |
|---|
| 2666 | such snapshot. Each time you run "tahoe backup" with the same source |
|---|
| 2667 | and target, a new $timestamp snapshot will be added. These snapshots |
|---|
| 2668 | will share directories that have not changed since the last backup, |
|---|
| 2669 | to speed up the process and minimize storage requirements. In |
|---|
| 2670 | addition, a small database is used to keep track of which local |
|---|
| 2671 | files have been uploaded already, to avoid uploading them a second |
|---|
| 2672 | time. This drastically reduces the work needed to do a "null backup" |
|---|
| 2673 | (when nothing has changed locally), making "tahoe backup' suitable |
|---|
| 2674 | to run from a daily cronjob. |
|---|
| 2675 | |
|---|
| 2676 | Note that the "tahoe backup" CLI command must be used in conjunction |
|---|
| 2677 | with a 1.3.0-or-newer Tahoe client node; there was a bug in the |
|---|
| 2678 | 1.2.0 webapi implementation that would prevent the last step (create |
|---|
| 2679 | $target/Latest) from working. |
|---|
| 2680 | |
|---|
| 2681 | Large Files |
|---|
| 2682 | ----------- |
|---|
| 2683 | |
|---|
| 2684 | - The 12GiB (approximate) immutable-file-size limitation is |
|---|
| 2685 | lifted. This release knows how to handle so-called "v2 immutable |
|---|
| 2686 | shares", which permit immutable files of up to about 18 EiB (about |
|---|
| 2687 | 3*10^14). These v2 shares are created if the file to be uploaded is |
|---|
| 2688 | too large to fit into v1 shares. v1 shares are created if the file |
|---|
| 2689 | is small enough to fit into them, so that files created with |
|---|
| 2690 | tahoe-1.3.0 can still be read by earlier versions if they are not |
|---|
| 2691 | too large. Note that storage servers also had to be changed to |
|---|
| 2692 | support larger files, and this release is the first release in which |
|---|
| 2693 | they are able to do that. Clients will detect which servers are |
|---|
| 2694 | capable of supporting large files on upload and will not attempt to |
|---|
| 2695 | upload shares of a large file to a server which doesn't support it. |
|---|
| 2696 | |
|---|
| 2697 | FTP/SFTP Server |
|---|
| 2698 | --------------- |
|---|
| 2699 | |
|---|
| 2700 | - Tahoe now includes experimental FTP and SFTP servers. When |
|---|
| 2701 | configured with a suitable method to translate username+password |
|---|
| 2702 | into a root directory cap, it provides simple access to the virtual |
|---|
| 2703 | filesystem. Remember that FTP is completely unencrypted: passwords, |
|---|
| 2704 | filenames, and file contents are all sent over the wire in |
|---|
| 2705 | cleartext, so FTP should only be used on a local (127.0.0.1) |
|---|
| 2706 | connection. This feature is still in development: there are no unit |
|---|
| 2707 | tests yet, and behavior with respect to Unicode filenames is |
|---|
| 2708 | uncertain. Please see `FTP-and-SFTP.rst`_ for |
|---|
| 2709 | configuration details. (`#512`_, `#531`_) |
|---|
| 2710 | |
|---|
| 2711 | CLI Changes |
|---|
| 2712 | ----------- |
|---|
| 2713 | |
|---|
| 2714 | - This release adds the 'tahoe create-alias' command, which is a |
|---|
| 2715 | combination of 'tahoe mkdir' and 'tahoe add-alias'. This also allows |
|---|
| 2716 | you to start using a new tahoe directory without exposing its URI in |
|---|
| 2717 | the argv list, which is publicly visible (through the process table) |
|---|
| 2718 | on most unix systems. Thanks to Kevin Reid for bringing this issue |
|---|
| 2719 | to our attention. |
|---|
| 2720 | |
|---|
| 2721 | - The single-argument form of "tahoe put" was changed to create an |
|---|
| 2722 | unlinked file. I.e. "tahoe put bar.txt" will take the contents of a |
|---|
| 2723 | local "bar.txt" file, upload them to the grid, and print the |
|---|
| 2724 | resulting read-cap; the file will not be attached to any |
|---|
| 2725 | directories. This seemed a bit more useful than the previous |
|---|
| 2726 | behavior (copy stdin, upload to the grid, attach the resulting file |
|---|
| 2727 | into your default tahoe: alias in a child named 'bar.txt'). |
|---|
| 2728 | |
|---|
| 2729 | - "tahoe put" was also fixed to handle mutable files correctly: "tahoe |
|---|
| 2730 | put bar.txt URI:SSK:..." will read the contents of the local bar.txt |
|---|
| 2731 | and use them to replace the contents of the given mutable file. |
|---|
| 2732 | |
|---|
| 2733 | - The "tahoe webopen" command was modified to accept aliases. This |
|---|
| 2734 | means "tahoe webopen tahoe:" will cause your web browser to open to |
|---|
| 2735 | a "wui" page that gives access to the directory associated with the |
|---|
| 2736 | default "tahoe:" alias. It should also accept leading slashes, like |
|---|
| 2737 | "tahoe webopen tahoe:/stuff". |
|---|
| 2738 | |
|---|
| 2739 | - Many esoteric debugging commands were moved down into a "debug" |
|---|
| 2740 | subcommand: |
|---|
| 2741 | |
|---|
| 2742 | - tahoe debug dump-cap |
|---|
| 2743 | - tahoe debug dump-share |
|---|
| 2744 | - tahoe debug find-shares |
|---|
| 2745 | - tahoe debug catalog-shares |
|---|
| 2746 | - tahoe debug corrupt-share |
|---|
| 2747 | |
|---|
| 2748 | The last command ("tahoe debug corrupt-share") flips a random bit |
|---|
| 2749 | of the given local sharefile. This is used to test the file |
|---|
| 2750 | verifying/repairing code, and obviously should not be used on user |
|---|
| 2751 | data. |
|---|
| 2752 | |
|---|
| 2753 | The cli might not correctly handle arguments which contain non-ascii |
|---|
| 2754 | characters in Tahoe v1.3 (although depending on your platform it |
|---|
| 2755 | might, especially if your platform can be configured to pass such |
|---|
| 2756 | characters on the command-line in utf-8 encoding). See |
|---|
| 2757 | https://tahoe-lafs.org/trac/tahoe-lafs/ticket/565 for details. |
|---|
| 2758 | |
|---|
| 2759 | Web changes |
|---|
| 2760 | ----------- |
|---|
| 2761 | |
|---|
| 2762 | - The "default webapi port", used when creating a new client node (and |
|---|
| 2763 | in the getting-started documentation), was changed from 8123 to |
|---|
| 2764 | 3456, to reduce confusion when Tahoe accessed through a Firefox |
|---|
| 2765 | browser on which the "Torbutton" extension has been installed. Port |
|---|
| 2766 | 8123 is occasionally used as a Tor control port, so Torbutton adds |
|---|
| 2767 | 8123 to Firefox's list of "banned ports" to avoid CSRF attacks |
|---|
| 2768 | against Tor. Once 8123 is banned, it is difficult to diagnose why |
|---|
| 2769 | you can no longer reach a Tahoe node, so the Tahoe default was |
|---|
| 2770 | changed. Note that 3456 is reserved by IANA for the "vat" protocol, |
|---|
| 2771 | but there are argueably more Torbutton+Tahoe users than vat users |
|---|
| 2772 | these days. Note that this will only affect newly-created client |
|---|
| 2773 | nodes. Pre-existing client nodes, created by earlier versions of |
|---|
| 2774 | tahoe, may still be listening on 8123. |
|---|
| 2775 | |
|---|
| 2776 | - All deep-traversal operations (start-manifest, start-deep-size, |
|---|
| 2777 | start-deep-stats, start-deep-check) now use a start-and-poll |
|---|
| 2778 | approach, instead of using a single (fragile) long-running |
|---|
| 2779 | synchronous HTTP connection. All these "start-" operations use POST |
|---|
| 2780 | instead of GET. The old "GET manifest", "GET deep-size", and "POST |
|---|
| 2781 | deep-check" operations have been removed. |
|---|
| 2782 | |
|---|
| 2783 | - The new "POST start-manifest" operation, when it finally completes, |
|---|
| 2784 | results in a table of (path,cap), instead of the list of verifycaps |
|---|
| 2785 | produced by the old "GET manifest". The table is available in |
|---|
| 2786 | several formats: use output=html, output=text, or output=json to |
|---|
| 2787 | choose one. The JSON output also includes stats, and a list of |
|---|
| 2788 | verifycaps and storage-index strings. The "return_to=" and |
|---|
| 2789 | "when_done=" arguments have been removed from the t=check and |
|---|
| 2790 | deep-check operations. |
|---|
| 2791 | |
|---|
| 2792 | - The top-level status page (/status) now has a machine-readable form, |
|---|
| 2793 | via "/status/?t=json". This includes information about the |
|---|
| 2794 | currently-active uploads and downloads, which may be useful for |
|---|
| 2795 | frontends that wish to display progress information. There is no |
|---|
| 2796 | easy way to correlate the activities displayed here with recent wapi |
|---|
| 2797 | requests, however. |
|---|
| 2798 | |
|---|
| 2799 | - Any files in BASEDIR/public_html/ (configurable) will be served in |
|---|
| 2800 | response to requests in the /static/ portion of the URL space. This |
|---|
| 2801 | will simplify the deployment of javascript-based frontends that can |
|---|
| 2802 | still access wapi calls by conforming to the (regrettable) |
|---|
| 2803 | "same-origin policy". |
|---|
| 2804 | |
|---|
| 2805 | - The welcome page now has a "Report Incident" button, which is tied |
|---|
| 2806 | into the "Incident Gatherer" machinery. If the node is attached to |
|---|
| 2807 | an incident gatherer (via log_gatherer.furl), then pushing this |
|---|
| 2808 | button will cause an Incident to be signalled: this means recent log |
|---|
| 2809 | events are aggregated and sent in a bundle to the gatherer. The user |
|---|
| 2810 | can push this button after something strange takes place (and they |
|---|
| 2811 | can provide a short message to go along with it), and the relevant |
|---|
| 2812 | data will be delivered to a centralized incident-gatherer for later |
|---|
| 2813 | processing by operations staff. |
|---|
| 2814 | |
|---|
| 2815 | - The "HEAD" method should now work correctly, in addition to the |
|---|
| 2816 | usual "GET", "PUT", and "POST" methods. "HEAD" is supposed to return |
|---|
| 2817 | exactly the same headers as "GET" would, but without any of the |
|---|
| 2818 | actual response body data. For mutable files, this now does a brief |
|---|
| 2819 | mapupdate (to figure out the size of the file that would be |
|---|
| 2820 | returned), without actually retrieving the file's contents. |
|---|
| 2821 | |
|---|
| 2822 | - The "GET" operation on files can now support the HTTP "Range:" |
|---|
| 2823 | header, allowing requests for partial content. This allows certain |
|---|
| 2824 | media players to correctly stream audio and movies out of a Tahoe |
|---|
| 2825 | grid. The current implementation uses a disk-based cache in |
|---|
| 2826 | BASEDIR/private/cache/download , which holds the plaintext of the |
|---|
| 2827 | files being downloaded. Future implementations might not use this |
|---|
| 2828 | cache. GET for immutable files now returns an ETag header. |
|---|
| 2829 | |
|---|
| 2830 | - Each file and directory now has a "Show More Info" web page, which |
|---|
| 2831 | contains much of the information that was crammed into the directory |
|---|
| 2832 | page before. This includes readonly URIs, storage index strings, |
|---|
| 2833 | object type, buttons to control checking/verifying/repairing, and |
|---|
| 2834 | deep-check/deep-stats buttons (for directories). For mutable files, |
|---|
| 2835 | the "replace contents" upload form has been moved here too. As a |
|---|
| 2836 | result, the directory page is now much simpler and cleaner, and |
|---|
| 2837 | several potentially-misleading links (like t=uri) are now gone. |
|---|
| 2838 | |
|---|
| 2839 | - Slashes are discouraged in Tahoe file/directory names, since they |
|---|
| 2840 | cause problems when accessing the filesystem through the |
|---|
| 2841 | wapi. However, there are a couple of accidental ways to generate |
|---|
| 2842 | such names. This release tries to make it easier to correct such |
|---|
| 2843 | mistakes by escaping slashes in several places, allowing slashes in |
|---|
| 2844 | the t=info and t=delete commands, and in the source (but not the |
|---|
| 2845 | target) of a t=rename command. |
|---|
| 2846 | |
|---|
| 2847 | Packaging |
|---|
| 2848 | --------- |
|---|
| 2849 | |
|---|
| 2850 | - Tahoe's dependencies have been extended to require the |
|---|
| 2851 | "[secure_connections]" feature from Foolscap, which will cause |
|---|
| 2852 | pyOpenSSL to be required and/or installed. If OpenSSL and its |
|---|
| 2853 | development headers are already installed on your system, this can |
|---|
| 2854 | occur automatically. Tahoe now uses pollreactor (instead of the |
|---|
| 2855 | default selectreactor) to work around a bug between pyOpenSSL and |
|---|
| 2856 | the most recent release of Twisted (8.1.0). This bug only affects |
|---|
| 2857 | unit tests (hang during shutdown), and should not impact regular |
|---|
| 2858 | use. |
|---|
| 2859 | |
|---|
| 2860 | - The Tahoe source code tarballs now come in two different forms: |
|---|
| 2861 | regular and "sumo". The regular tarball contains just Tahoe, nothing |
|---|
| 2862 | else. When building from the regular tarball, the build process will |
|---|
| 2863 | download any unmet dependencies from the internet (starting with the |
|---|
| 2864 | index at PyPI) so it can build and install them. The "sumo" tarball |
|---|
| 2865 | contains copies of all the libraries that Tahoe requires (foolscap, |
|---|
| 2866 | twisted, zfec, etc), so using the "sumo" tarball should not require |
|---|
| 2867 | any internet access during the build process. This can be useful if |
|---|
| 2868 | you want to build Tahoe while on an airplane, a desert island, or |
|---|
| 2869 | other bandwidth-limited environments. |
|---|
| 2870 | |
|---|
| 2871 | - Similarly, tahoe-lafs.org now hosts a "tahoe-deps" tarball which |
|---|
| 2872 | contains the latest versions of all these dependencies. This |
|---|
| 2873 | tarball, located at |
|---|
| 2874 | https://tahoe-lafs.org/source/tahoe/deps/tahoe-deps.tar.gz, can be |
|---|
| 2875 | unpacked in the tahoe source tree (or in its parent directory), and |
|---|
| 2876 | the build process should satisfy its downloading needs from it |
|---|
| 2877 | instead of reaching out to PyPI. This can be useful if you want to |
|---|
| 2878 | build Tahoe from a darcs checkout while on that airplane or desert |
|---|
| 2879 | island. |
|---|
| 2880 | |
|---|
| 2881 | - Because of the previous two changes ("sumo" tarballs and the |
|---|
| 2882 | "tahoe-deps" bundle), most of the files have been removed from |
|---|
| 2883 | misc/dependencies/ . This brings the regular Tahoe tarball down to |
|---|
| 2884 | 2MB (compressed), and the darcs checkout (without history) to about |
|---|
| 2885 | 7.6MB. A full darcs checkout will still be fairly large (because of |
|---|
| 2886 | the historical patches which included the dependent libraries), but |
|---|
| 2887 | a 'lazy' one should now be small. |
|---|
| 2888 | |
|---|
| 2889 | - The default "make" target is now an alias for "setup.py build", |
|---|
| 2890 | which itself is an alias for "setup.py develop --prefix support", |
|---|
| 2891 | with some extra work before and after (see setup.cfg). Most of the |
|---|
| 2892 | complicated platform-dependent code in the Makefile was rewritten in |
|---|
| 2893 | Python and moved into setup.py, simplifying things considerably. |
|---|
| 2894 | |
|---|
| 2895 | - Likewise, the "make test" target now delegates most of its work to |
|---|
| 2896 | "setup.py test", which takes care of getting PYTHONPATH configured |
|---|
| 2897 | to access the tahoe code (and dependencies) that gets put in |
|---|
| 2898 | support/lib/ by the build_tahoe step. This should allow unit tests |
|---|
| 2899 | to be run even when trial (which is part of Twisted) wasn't already |
|---|
| 2900 | installed (in this case, trial gets installed to support/bin because |
|---|
| 2901 | Twisted is a dependency of Tahoe). |
|---|
| 2902 | |
|---|
| 2903 | - Tahoe is now compatible with the recently-released Python 2.6 , |
|---|
| 2904 | although it is recommended to use Tahoe on Python 2.5, on which it |
|---|
| 2905 | has received more thorough testing and deployment. |
|---|
| 2906 | |
|---|
| 2907 | - Tahoe is now compatible with simplejson-2.0.x . The previous release |
|---|
| 2908 | assumed that simplejson.loads always returned unicode strings, which |
|---|
| 2909 | is no longer the case in 2.0.x . |
|---|
| 2910 | |
|---|
| 2911 | Grid Management Tools |
|---|
| 2912 | --------------------- |
|---|
| 2913 | |
|---|
| 2914 | - Several tools have been added or updated in the misc/ directory, |
|---|
| 2915 | mostly munin plugins that can be used to monitor a storage grid. |
|---|
| 2916 | |
|---|
| 2917 | - The misc/spacetime/ directory contains a "disk watcher" daemon |
|---|
| 2918 | (startable with 'tahoe start'), which can be configured with a set |
|---|
| 2919 | of HTTP URLs (pointing at the wapi '/statistics' page of a bunch of |
|---|
| 2920 | storage servers), and will periodically fetch |
|---|
| 2921 | disk-used/disk-available information from all the servers. It keeps |
|---|
| 2922 | this information in an Axiom database (a sqlite-based library |
|---|
| 2923 | available from divmod.org). The daemon computes time-averaged rates |
|---|
| 2924 | of disk usage, as well as a prediction of how much time is left |
|---|
| 2925 | before the grid is completely full. |
|---|
| 2926 | |
|---|
| 2927 | - The misc/munin/ directory contains a new set of munin plugins |
|---|
| 2928 | (tahoe_diskleft, tahoe_diskusage, tahoe_doomsday) which talk to the |
|---|
| 2929 | disk-watcher and provide graphs of its calculations. |
|---|
| 2930 | |
|---|
| 2931 | - To support the disk-watcher, the Tahoe statistics component |
|---|
| 2932 | (visible through the wapi at the /statistics/ URL) now includes |
|---|
| 2933 | disk-used and disk-available information. Both are derived through |
|---|
| 2934 | an equivalent of the unix 'df' command (i.e. they ask the kernel |
|---|
| 2935 | for the number of free blocks on the partition that encloses the |
|---|
| 2936 | BASEDIR/storage directory). In the future, the disk-available |
|---|
| 2937 | number will be further influenced by the local storage policy: if |
|---|
| 2938 | that policy says that the server should refuse new shares when less |
|---|
| 2939 | than 5GB is left on the partition, then "disk-available" will |
|---|
| 2940 | report zero even though the kernel sees 5GB remaining. |
|---|
| 2941 | |
|---|
| 2942 | - The 'tahoe_overhead' munin plugin interacts with an |
|---|
| 2943 | allmydata.com-specific server which reports the total of the |
|---|
| 2944 | 'deep-size' reports for all active user accounts, compares this |
|---|
| 2945 | with the disk-watcher data, to report on overhead percentages. This |
|---|
| 2946 | provides information on how much space could be recovered once |
|---|
| 2947 | Tahoe implements some form of garbage collection. |
|---|
| 2948 | |
|---|
| 2949 | Configuration Changes: single INI-format tahoe.cfg file |
|---|
| 2950 | ------------------------------------------------------- |
|---|
| 2951 | |
|---|
| 2952 | - The Tahoe node is now configured with a single INI-format file, |
|---|
| 2953 | named "tahoe.cfg", in the node's base directory. Most of the |
|---|
| 2954 | previous multiple-separate-files are still read for backwards |
|---|
| 2955 | compatibility (the embedded SSH debug server and the |
|---|
| 2956 | advertised_ip_addresses files are the exceptions), but new |
|---|
| 2957 | directives will only be added to tahoe.cfg . The "tahoe |
|---|
| 2958 | create-client" command will create a tahoe.cfg for you, with sample |
|---|
| 2959 | values commented out. (ticket `#518`_) |
|---|
| 2960 | |
|---|
| 2961 | - tahoe.cfg now has controls for the foolscap "keepalive" and |
|---|
| 2962 | "disconnect" timeouts (`#521`_). |
|---|
| 2963 | |
|---|
| 2964 | - tahoe.cfg now has controls for the encoding parameters: |
|---|
| 2965 | "shares.needed" and "shares.total" in the "[client]" section. The |
|---|
| 2966 | default parameters are still 3-of-10. |
|---|
| 2967 | |
|---|
| 2968 | - The inefficient storage 'sizelimit' control (which established an |
|---|
| 2969 | upper bound on the amount of space that a storage server is allowed |
|---|
| 2970 | to consume) has been replaced by a lightweight 'reserved_space' |
|---|
| 2971 | control (which establishes a lower bound on the amount of remaining |
|---|
| 2972 | space). The storage server will reject all writes that would cause |
|---|
| 2973 | the remaining disk space (as measured by a '/bin/df' equivalent) to |
|---|
| 2974 | drop below this value. The "[storage]reserved_space=" tahoe.cfg |
|---|
| 2975 | parameter controls this setting. (note that this only affects |
|---|
| 2976 | immutable shares: it is an outstanding bug that reserved_space does |
|---|
| 2977 | not prevent the allocation of new mutable shares, nor does it |
|---|
| 2978 | prevent the growth of existing mutable shares). |
|---|
| 2979 | |
|---|
| 2980 | Other Changes |
|---|
| 2981 | ------------- |
|---|
| 2982 | |
|---|
| 2983 | - Clients now declare which versions of the protocols they |
|---|
| 2984 | support. This is part of a new backwards-compatibility system: |
|---|
| 2985 | https://tahoe-lafs.org/trac/tahoe-lafs/wiki/Versioning . |
|---|
| 2986 | |
|---|
| 2987 | - The version strings for human inspection (as displayed on the |
|---|
| 2988 | Welcome web page, and included in logs) now includes a platform |
|---|
| 2989 | identifer (frequently including a linux distribution name, processor |
|---|
| 2990 | architecture, etc). |
|---|
| 2991 | |
|---|
| 2992 | - Several bugs have been fixed, including one that would cause an |
|---|
| 2993 | exception (in the logs) if a wapi download operation was cancelled |
|---|
| 2994 | (by closing the TCP connection, or pushing the "stop" button in a |
|---|
| 2995 | web browser). |
|---|
| 2996 | |
|---|
| 2997 | - Tahoe now uses Foolscap "Incidents", writing an "incident report" |
|---|
| 2998 | file to logs/incidents/ each time something weird occurs. These |
|---|
| 2999 | reports are available to an "incident gatherer" through the flogtool |
|---|
| 3000 | command. For more details, please see the Foolscap logging |
|---|
| 3001 | documentation. An incident-classifying plugin function is provided |
|---|
| 3002 | in misc/incident-gatherer/classify_tahoe.py . |
|---|
| 3003 | |
|---|
| 3004 | - If clients detect corruption in shares, they now automatically |
|---|
| 3005 | report it to the server holding that share, if it is new enough to |
|---|
| 3006 | accept the report. These reports are written to files in |
|---|
| 3007 | BASEDIR/storage/corruption-advisories . |
|---|
| 3008 | |
|---|
| 3009 | - The 'nickname' setting is now defined to be a UTF-8 -encoded string, |
|---|
| 3010 | allowing non-ascii nicknames. |
|---|
| 3011 | |
|---|
| 3012 | - The 'tahoe start' command will now accept a --syslog argument and |
|---|
| 3013 | pass it through to twistd, making it easier to launch non-Tahoe |
|---|
| 3014 | nodes (like the cpu-watcher) and have them log to syslogd instead of |
|---|
| 3015 | a local file. This is useful when running a Tahoe node out of a USB |
|---|
| 3016 | flash drive. |
|---|
| 3017 | |
|---|
| 3018 | - The Mac GUI in src/allmydata/gui/ has been improved. |
|---|
| 3019 | |
|---|
| 3020 | .. _#512: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/512 |
|---|
| 3021 | .. _#518: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/518 |
|---|
| 3022 | .. _#521: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/521 |
|---|
| 3023 | .. _#531: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/531 |
|---|
| 3024 | |
|---|
| 3025 | Release 1.2.0 (2008-07-21) |
|---|
| 3026 | '''''''''''''''''''''''''' |
|---|
| 3027 | |
|---|
| 3028 | Security |
|---|
| 3029 | -------- |
|---|
| 3030 | |
|---|
| 3031 | - This release makes the immutable-file "ciphertext hash tree" |
|---|
| 3032 | mandatory. Previous releases allowed the uploader to decide whether |
|---|
| 3033 | their file would have an integrity check on the ciphertext or not. A |
|---|
| 3034 | malicious uploader could use this to create a readcap that would |
|---|
| 3035 | download as one file or a different one, depending upon which shares |
|---|
| 3036 | the client fetched first, with no errors raised. There are other |
|---|
| 3037 | integrity checks on the shares themselves, preventing a storage |
|---|
| 3038 | server or other party from violating the integrity properties of the |
|---|
| 3039 | read-cap: this failure was only exploitable by the uploader who |
|---|
| 3040 | gives you a carefully constructed read-cap. If you download the file |
|---|
| 3041 | with Tahoe 1.2.0 or later, you will not be vulnerable to this |
|---|
| 3042 | problem. `#491`_ |
|---|
| 3043 | |
|---|
| 3044 | This change does not introduce a compatibility issue, because all |
|---|
| 3045 | existing versions of Tahoe will emit the ciphertext hash tree in |
|---|
| 3046 | their shares. |
|---|
| 3047 | |
|---|
| 3048 | Dependencies |
|---|
| 3049 | ------------ |
|---|
| 3050 | |
|---|
| 3051 | - Tahoe now requires Foolscap-0.2.9 . It also requires pycryptopp 0.5 |
|---|
| 3052 | or newer, since earlier versions had a bug that interacted with |
|---|
| 3053 | specific compiler versions that could sometimes result in incorrect |
|---|
| 3054 | encryption behavior. Both packages are included in the Tahoe source |
|---|
| 3055 | tarball in misc/dependencies/ , and should be built automatically |
|---|
| 3056 | when necessary. |
|---|
| 3057 | |
|---|
| 3058 | Web API |
|---|
| 3059 | ------- |
|---|
| 3060 | |
|---|
| 3061 | - Web API directory pages should now contain properly-slash-terminated |
|---|
| 3062 | links to other directories. They have also stopped using absolute |
|---|
| 3063 | links in forms and pages (which interfered with the use of a |
|---|
| 3064 | front-end load-balancing proxy). |
|---|
| 3065 | |
|---|
| 3066 | - The behavior of the "Check This File" button changed, in conjunction |
|---|
| 3067 | with larger internal changes to file checking/verification. The |
|---|
| 3068 | button triggers an immediate check as before, but the outcome is |
|---|
| 3069 | shown on its own page, and does not get stored anywhere. As a |
|---|
| 3070 | result, the web directory page no longer shows historical checker |
|---|
| 3071 | results. |
|---|
| 3072 | |
|---|
| 3073 | - A new "Deep-Check" button has been added, which allows a user to |
|---|
| 3074 | initiate a recursive check of the given directory and all files and |
|---|
| 3075 | directories reachable from it. This can cause quite a bit of work, |
|---|
| 3076 | and has no intermediate progress information or feedback about the |
|---|
| 3077 | process. In addition, the results of the deep-check are extremely |
|---|
| 3078 | limited. A later release will improve this behavior. |
|---|
| 3079 | |
|---|
| 3080 | - The web server's behavior with respect to non-ASCII (unicode) |
|---|
| 3081 | filenames in the "GET save=true" operation has been improved. To |
|---|
| 3082 | achieve maximum compatibility with variously buggy web browsers, the |
|---|
| 3083 | server does not try to figure out the character set of the inbound |
|---|
| 3084 | filename. It just echoes the same bytes back to the browser in the |
|---|
| 3085 | Content-Disposition header. This seems to make both IE7 and Firefox |
|---|
| 3086 | work correctly. |
|---|
| 3087 | |
|---|
| 3088 | Checker/Verifier/Repairer |
|---|
| 3089 | ------------------------- |
|---|
| 3090 | |
|---|
| 3091 | - Tahoe is slowly acquiring convenient tools to check up on file |
|---|
| 3092 | health, examine existing shares for errors, and repair files that |
|---|
| 3093 | are not fully healthy. This release adds a mutable |
|---|
| 3094 | checker/verifier/repairer, although testing is very limited, and |
|---|
| 3095 | there are no web interfaces to trigger repair yet. The "Check" |
|---|
| 3096 | button next to each file or directory on the wapi page will perform |
|---|
| 3097 | a file check, and the "deep check" button on each directory will |
|---|
| 3098 | recursively check all files and directories reachable from there |
|---|
| 3099 | (which may take a very long time). |
|---|
| 3100 | |
|---|
| 3101 | Future releases will improve access to this functionality. |
|---|
| 3102 | |
|---|
| 3103 | Operations/Packaging |
|---|
| 3104 | -------------------- |
|---|
| 3105 | |
|---|
| 3106 | - A "check-grid" script has been added, along with a Makefile |
|---|
| 3107 | target. This is intended (with the help of a pre-configured node |
|---|
| 3108 | directory) to check upon the health of a Tahoe grid, uploading and |
|---|
| 3109 | downloading a few files. This can be used as a monitoring tool for a |
|---|
| 3110 | deployed grid, to be run periodically and to signal an error if it |
|---|
| 3111 | ever fails. It also helps with compatibility testing, to verify that |
|---|
| 3112 | the latest Tahoe code is still able to handle files created by an |
|---|
| 3113 | older version. |
|---|
| 3114 | |
|---|
| 3115 | - The munin plugins from misc/munin/ are now copied into any generated |
|---|
| 3116 | debian packages, and are made executable (and uncompressed) so they |
|---|
| 3117 | can be symlinked directly from /etc/munin/plugins/ . |
|---|
| 3118 | |
|---|
| 3119 | - Ubuntu "Hardy" was added as a supported debian platform, with a |
|---|
| 3120 | Makefile target to produce hardy .deb packages. Some notes have been |
|---|
| 3121 | added to `debian.rst`_ about building Tahoe on a debian/ubuntu |
|---|
| 3122 | system. |
|---|
| 3123 | |
|---|
| 3124 | - Storage servers now measure operation rates and |
|---|
| 3125 | latency-per-operation, and provides results through the /statistics |
|---|
| 3126 | web page as well as the stats gatherer. Munin plugins have been |
|---|
| 3127 | added to match. |
|---|
| 3128 | |
|---|
| 3129 | Other |
|---|
| 3130 | ----- |
|---|
| 3131 | |
|---|
| 3132 | - Tahoe nodes now use Foolscap "incident logging" to record unusual |
|---|
| 3133 | events to their NODEDIR/logs/incidents/ directory. These incident |
|---|
| 3134 | files can be examined by Foolscap logging tools, or delivered to an |
|---|
| 3135 | external log-gatherer for further analysis. Note that Tahoe now |
|---|
| 3136 | requires Foolscap-0.2.9, since 0.2.8 had a bug that complained about |
|---|
| 3137 | "OSError: File exists" when trying to create the incidents/ |
|---|
| 3138 | directory for a second time. |
|---|
| 3139 | |
|---|
| 3140 | - If no servers are available when retrieving a mutable file (like a |
|---|
| 3141 | directory), the node now reports an error instead of hanging |
|---|
| 3142 | forever. Earlier releases would not only hang (causing the wapi |
|---|
| 3143 | directory listing to get stuck half-way through), but the internal |
|---|
| 3144 | dirnode serialization would cause all subsequent attempts to |
|---|
| 3145 | retrieve or modify the same directory to hang as well. `#463`_ |
|---|
| 3146 | |
|---|
| 3147 | - A minor internal exception (reported in logs/twistd.log, in the |
|---|
| 3148 | "stopProducing" method) was fixed, which complained about |
|---|
| 3149 | "self._paused_at not defined" whenever a file download was stopped |
|---|
| 3150 | from the web browser end. |
|---|
| 3151 | |
|---|
| 3152 | .. _#463: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/463 |
|---|
| 3153 | .. _#491: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/491 |
|---|
| 3154 | .. _debian.rst: docs/debian.rst |
|---|
| 3155 | |
|---|
| 3156 | Release 1.1.0 (2008-06-11) |
|---|
| 3157 | '''''''''''''''''''''''''' |
|---|
| 3158 | |
|---|
| 3159 | CLI: new "alias" model |
|---|
| 3160 | ---------------------- |
|---|
| 3161 | |
|---|
| 3162 | - The new CLI code uses an scp/rsync -like interface, in which |
|---|
| 3163 | directories in the Tahoe storage grid are referenced by a |
|---|
| 3164 | colon-suffixed alias. The new commands look like: |
|---|
| 3165 | |
|---|
| 3166 | - tahoe cp local.txt tahoe:virtual.txt |
|---|
| 3167 | - tahoe ls work:subdir |
|---|
| 3168 | |
|---|
| 3169 | - More functionality is available through the CLI: creating unlinked |
|---|
| 3170 | files and directories, recursive copy in or out of the storage grid, |
|---|
| 3171 | hardlinks, and retrieving the raw read- or write- caps through the |
|---|
| 3172 | 'ls' command. Please read `CLI.rst`_ for complete details. |
|---|
| 3173 | |
|---|
| 3174 | wapi: new pages, new commands |
|---|
| 3175 | ----------------------------- |
|---|
| 3176 | |
|---|
| 3177 | - Several new pages were added to the web API: |
|---|
| 3178 | |
|---|
| 3179 | - /helper_status : to describe what a Helper is doing |
|---|
| 3180 | - /statistics : reports node uptime, CPU usage, other stats |
|---|
| 3181 | - /file : for easy file-download URLs, see `#221`_ |
|---|
| 3182 | - /cap == /uri : future compatibility |
|---|
| 3183 | |
|---|
| 3184 | - The localdir=/localfile= and t=download operations were |
|---|
| 3185 | removed. These required special configuration to enable anyways, but |
|---|
| 3186 | this feature was a security problem, and was mostly obviated by the |
|---|
| 3187 | new "cp -r" command. |
|---|
| 3188 | |
|---|
| 3189 | - Several new options to the GET command were added: |
|---|
| 3190 | |
|---|
| 3191 | - t=deep-size : add up the size of all immutable files reachable from the directory |
|---|
| 3192 | - t=deep-stats : return a JSON-encoded description of number of files, size distribution, total size, etc |
|---|
| 3193 | |
|---|
| 3194 | - POST is now preferred over PUT for most operations which cause |
|---|
| 3195 | side-effects. |
|---|
| 3196 | |
|---|
| 3197 | - Most wapi calls now accept overwrite=, and default to overwrite=true |
|---|
| 3198 | |
|---|
| 3199 | - "POST /uri/DIRCAP/parent/child?t=mkdir" is now the preferred API to |
|---|
| 3200 | create multiple directories at once, rather than ...?t=mkdir-p . |
|---|
| 3201 | |
|---|
| 3202 | - PUT to a mutable file ("PUT /uri/MUTABLEFILECAP", "PUT |
|---|
| 3203 | /uri/DIRCAP/child") will modify the file in-place. |
|---|
| 3204 | |
|---|
| 3205 | - more munin graphs in misc/munin/ |
|---|
| 3206 | |
|---|
| 3207 | - tahoe-introstats |
|---|
| 3208 | - tahoe-rootdir-space |
|---|
| 3209 | - tahoe_estimate_files |
|---|
| 3210 | - mutable files published/retrieved |
|---|
| 3211 | - tahoe_cpu_watcher |
|---|
| 3212 | - tahoe_spacetime |
|---|
| 3213 | |
|---|
| 3214 | New Dependencies |
|---|
| 3215 | ---------------- |
|---|
| 3216 | - zfec 1.1.0 |
|---|
| 3217 | - foolscap 0.2.8 |
|---|
| 3218 | - pycryptopp 0.5 |
|---|
| 3219 | - setuptools (now required at runtime) |
|---|
| 3220 | |
|---|
| 3221 | New Mutable-File Code |
|---|
| 3222 | --------------------- |
|---|
| 3223 | |
|---|
| 3224 | - The mutable-file handling code (mostly used for directories) has |
|---|
| 3225 | been completely rewritten. The new scheme has a better API (with a |
|---|
| 3226 | modify() method) and is less likely to lose data when several |
|---|
| 3227 | uncoordinated writers change a file at the same time. |
|---|
| 3228 | |
|---|
| 3229 | - In addition, a single Tahoe process will coordinate its own |
|---|
| 3230 | writes. If you make two concurrent directory-modifying wapi calls to |
|---|
| 3231 | a single tahoe node, it will internally make one of them wait for |
|---|
| 3232 | the other to complete. This prevents auto-collision (`#391`_). |
|---|
| 3233 | |
|---|
| 3234 | - The new mutable-file code also detects errors during publish |
|---|
| 3235 | better. Earlier releases might believe that a mutable file was |
|---|
| 3236 | published when in fact it failed. |
|---|
| 3237 | |
|---|
| 3238 | other features |
|---|
| 3239 | -------------- |
|---|
| 3240 | |
|---|
| 3241 | - The node now monitors its own CPU usage, as a percentage, measured |
|---|
| 3242 | every 60 seconds. 1/5/15 minute moving averages are available on the |
|---|
| 3243 | /statistics web page and via the stats-gathering interface. |
|---|
| 3244 | |
|---|
| 3245 | - Clients now accelerate reconnection to all servers after being |
|---|
| 3246 | offline (`#374`_). When a client is offline for a long time, it |
|---|
| 3247 | scales back reconnection attempts to approximately once per hour, so |
|---|
| 3248 | it may take a while to make the first attempt, but once any attempt |
|---|
| 3249 | succeeds, the other server connections will be retried immediately. |
|---|
| 3250 | |
|---|
| 3251 | - A new "offloaded KeyGenerator" facility can be configured, to move |
|---|
| 3252 | RSA key generation out from, say, a wapi node, into a separate |
|---|
| 3253 | process. RSA keys can take several seconds to create, and so a wapi |
|---|
| 3254 | node which is being used for directory creation will be unavailable |
|---|
| 3255 | for anything else during this time. The Key Generator process will |
|---|
| 3256 | pre-compute a small pool of keys, to speed things up further. This |
|---|
| 3257 | also takes better advantage of multi-core CPUs, or SMP hosts. |
|---|
| 3258 | |
|---|
| 3259 | - The node will only use a potentially-slow "du -s" command at startup |
|---|
| 3260 | (to measure how much space has been used) if the "sizelimit" |
|---|
| 3261 | parameter has been configured (to limit how much space is |
|---|
| 3262 | used). Large storage servers should turn off sizelimit until a later |
|---|
| 3263 | release improves the space-management code, since "du -s" on a |
|---|
| 3264 | terabyte filesystem can take hours. |
|---|
| 3265 | |
|---|
| 3266 | - The Introducer now allows new announcements to replace old ones, to |
|---|
| 3267 | avoid buildups of obsolete announcements. |
|---|
| 3268 | |
|---|
| 3269 | - Immutable files are limited to about 12GiB (when using the default |
|---|
| 3270 | 3-of-10 encoding), because larger files would be corrupted by the |
|---|
| 3271 | four-byte share-size field on the storage servers (`#439`_). A later |
|---|
| 3272 | release will remove this limit. Earlier releases would allow >12GiB |
|---|
| 3273 | uploads, but the resulting file would be unretrievable. |
|---|
| 3274 | |
|---|
| 3275 | - The docs/ directory has been rearranged, with old docs put in |
|---|
| 3276 | docs/historical/ and not-yet-implemented ones in docs/proposed/ . |
|---|
| 3277 | |
|---|
| 3278 | - The Mac OS-X FUSE plugin has a significant bug fix: earlier versions |
|---|
| 3279 | would corrupt writes that used seek() instead of writing the file in |
|---|
| 3280 | linear order. The rsync tool is known to perform writes in this |
|---|
| 3281 | order. This has been fixed. |
|---|
| 3282 | |
|---|
| 3283 | .. _#221: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/221 |
|---|
| 3284 | .. _#374: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/374 |
|---|
| 3285 | .. _#391: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/391 |
|---|
| 3286 | .. _#439: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/439 |
|---|
| 3287 | .. _CLI.rst: docs/CLI.rst |
|---|