Merge pull request #1415 from meejah/4096.release-1.20-round-three
Some checks are pending
CI / coverage (macos-14, 3.12) (push) Waiting to run
CI / coverage (ubuntu-22.04, 3.12) (push) Waiting to run
CI / coverage (ubuntu-22.04, pypy-3.9) (push) Waiting to run
CI / coverage (windows-2022, 3.12) (push) Waiting to run
CI / finish-coverage-report (push) Blocked by required conditions
CI / integration (false, macos-14, 3.11) (push) Waiting to run
CI / integration (false, ubuntu-20.04, 3.11) (push) Waiting to run
CI / integration (false, windows-2022, 3.11) (push) Waiting to run
CI / integration (true, ubuntu-20.04, 3.12) (push) Waiting to run
CI / packaging (macos-14, 3.9) (push) Waiting to run
CI / packaging (ubuntu-22.04, 3.9) (push) Waiting to run
CI / packaging (windows-2022, 3.9) (push) Waiting to run

4096: release 1.20.0
This commit is contained in:
meejah 2024-12-18 23:38:56 -07:00 committed by GitHub
commit 7683524635
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
31 changed files with 115 additions and 142 deletions

View File

@ -5,8 +5,56 @@ User-Visible Changes in Tahoe-LAFS
================================== ==================================
.. towncrier start line .. towncrier start line
Release 1.190 (2024-01-04)
''''''''''''''''''''''''''
Release 1.20.0 (2024-12-03)
'''''''''''''''''''''''''''
Backwards Incompatible Changes
------------------------------
- Properly interpret "tahoe create --storage-dir" as an option.
Versions 1.19.0 and older interpreted "--storage-dir" as a "flag" and thus wouldn't work properly. (`#4110 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4110>`_)
Features
--------
- Continued work to make Tahoe-LAFS take advantage of multiple CPUs. (`#4072 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4072>`_)
- Mutable directories can now be created with a pre-determined "signature key" via the web API using the "private-key=..." parameter. The "private-key" value must be a DER-encoded 2048-bit RSA private key in urlsafe base64 encoding. (`#4094 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4094>`_)
Bug Fixes
---------
- Upgrade CBOR, fixing encoding on 65KiB++ strings (`#4087 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4087>`_)
- Stop using the C version of the cbor2 decoder. (`#4088 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4088>`_)
- Fix incompatibility with cryptography 43. (`#4100 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4100>`_)
- Fix incompatibility with attrs 24.1. (`#4101 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4101>`_)
Dependency/Installation Changes
-------------------------------
- Now using the "hatch" build system, and pyproject.toml (exclusively) (`#4133 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4133>`_)
Documentation Changes
---------------------
- Tahoe-LAFS manual's table of contents page has been reorganized. (`#3636 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3636>`_)
- Add a global Sphinx generated glossary. Link the static GBS glossary to the global glossary. (`#4116 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4116>`_)
Misc/Other
----------
- `#3636 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3636>`_, `#4076 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4076>`_, `#4082 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4082>`_, `#4085 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4085>`_, `#4090 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4090>`_, `#4091 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4091>`_, `#4092 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4092>`_, `#4093 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4093>`_, `#4114 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4114>`_, `#4115 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4115>`_, `#4126 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4126>`_, `#4130 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4130>`_, `#4132 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4132>`_, `#4134 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4134>`_, `#4141 <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4141>`_
Release 1.19.0 (2024-01-04)
'''''''''''''''''''''''''''
Features Features
-------- --------

View File

@ -51,7 +51,7 @@ previously generated files.
practice to give it the release name. You MAY also discard this directory once the release practice to give it the release name. You MAY also discard this directory once the release
process is complete. process is complete.
Get into the release directory and install dependencies by running Get into the release directory and install dependencies by running:
- cd ../tahoe-release-x.x.x (assuming you are still in your original clone) - cd ../tahoe-release-x.x.x (assuming you are still in your original clone)
- python -m venv venv - python -m venv venv
@ -61,34 +61,31 @@ Get into the release directory and install dependencies by running
Create Branch and Apply Updates Create Branch and Apply Updates
``````````````````````````````` ```````````````````````````````
- Create a branch for the release/candidate (e.g. ``XXXX.release-1.16.0``) - Create a branch for the release/candidate: git checkout -b XXXX.release-1.16.0
- run tox -e news to produce a new NEWS.txt file (this does a commit) - produce a new NEWS.txt file (this does a commit): tox -e news
- create the news for the release - create the news for the release:
- touch newsfragments/<ticket number>.minor
- newsfragments/<ticket number>.minor - git add newsfragments/<ticket number>.minor
- commit it - git commit -m news
- manually fix NEWS.txt
- manually fix ``NEWS.txt``:
- proper title for latest release ("Release 1.16.0" instead of "Release ...post1432") - proper title for latest release ("Release 1.16.0" instead of "Release ...post1432")
- double-check date (maybe release will be in the future) - double-check date (maybe release will be in the future)
- spot-check the release notes (these come from the newsfragments - spot-check the release notes (these come from the newsfragments files though so don't do heavy editing)
files though so don't do heavy editing)
- commit these changes - commit these changes
- update "relnotes.txt" - update ``relnotes.txt``:
- update all mentions of ``1.16.0`` to new and higher release version for example ``1.16.1`` - update all mentions of ``1.16.0`` to new and higher release version for example ``1.16.1``
- update "previous release" statement and date - update "previous release" statement and date
- summarize major changes - summarize major changes
- commit it - commit it
- update "nix/tahoe-lafs.nix" - update ``nix/tahoe-lafs.nix``:
- change the value given for `version` from `OLD.post1` to `NEW.post1` - change the value given for `version` from `OLD.post1` to `NEW.post1`
- update "docs/known_issues.rst" if appropriate - update ``docs/known_issues.rst`` if appropriate
- Push the branch to github - Push the branch to github
- Create a (draft) PR; this should trigger CI (note that github - Create a (draft) PR; this should trigger CI (note that github
doesn't let you create a PR without some changes on the branch so doesn't let you create a PR without some changes on the branch so
running + committing the NEWS.txt file achieves that without changing running + committing the NEWS.txt file achieves that without changing
@ -96,59 +93,36 @@ Create Branch and Apply Updates
- Confirm CI runs successfully on all platforms - Confirm CI runs successfully on all platforms
Create Release Candidate Create The Release
```````````````````````` ``````````````````
Before "officially" tagging any release, we will make a
release-candidate available. So there will be at least 1.15.0rc0 (for
example). If there are any problems, an rc1 or rc2 etc may also be
released. Anyone can sign these releases (ideally they'd be signed
"officially" as well, but it's better to get them out than to wait for
that).
Typically expert users will be the ones testing release candidates and
they will need to evaluate which contributors' signatures they trust.
- (all steps above are completed)
- sign the release
- git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-1.16.0rc0" tahoe-lafs-1.16.0rc0
.. note::
- Replace the key-id above with your own, which can simply be your email if it's attached to your fingerprint.
- Don't forget to put the correct tag message and name. In this example, the tag message is "release Tahoe-LAFS-1.16.0rc0" and the tag name is ``tahoe-lafs-1.16.0rc0``
- build all code locally - build all code locally
- these should all pass: - these should all pass:
- tox -e py37,codechecks,docs,integration - tox -e py311,codechecks,docs,integration
- these can fail (ideally they should not of course): - these can fail (ideally they should not of course):
- tox -e deprecations,upcoming-deprecations - tox -e deprecations,upcoming-deprecations
- clone to a clean, local checkout (to avoid extra files being included in the release) - install build dependencies
- cd /tmp - pip install -e .[build]
- git clone /home/meejah/src/tahoe-lafs
- build tarballs - build tarball + wheel (should be built into dist/)
- tox -e tarballs - hatchling build
- Confirm that release tarballs exist by runnig:
- ls dist/ | grep 1.16.0rc0
- inspect and test the tarballs - inspect and test the tarballs
- install each in a fresh virtualenv - install each in a fresh virtualenv
- run `tahoe` command - run `tahoe` command
- when satisfied, sign the tarballs: - when satisfied, sign the tarballs:
- gpg --pinentry=loopback --armor -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A --detach-sign dist/tahoe_lafs-1.16.0rc0-py2.py3-none-any.whl - gpg --pinentry=loopback --armor -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A --detach-sign dist/tahoe_lafs-1.20.0rc0-py2.py3-none-any.whl
- gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.16.0rc0.tar.gz - gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.20.0rc0.tar.gz
Privileged Contributor Privileged Contributor
@ -175,14 +149,14 @@ Sign Git Tag
Upload Artifacts Upload Artifacts
```````````````` ````````````````
Any release-candidate or actual release plus signature (.asc file) Any release plus signature (.asc file) need to be uploaded to
need to be uploaded to https://tahoe-lafs.org in `~source/downloads` https://tahoe-lafs.org in `~source/downloads`
- secure-copy all release artifacts to the download area on the - secure-copy all release artifacts to the download area on the
tahoe-lafs.org host machine. `~source/downloads` on there maps to tahoe-lafs.org host machine. `~source/downloads` on there maps to
https://tahoe-lafs.org/downloads/ on the Web: https://tahoe-lafs.org/downloads/ on the Web:
- scp dist/*1.15.0* username@tahoe-lafs.org:/home/source/downloads - scp dist/*1.20.0* username@tahoe-lafs.org:/home/source/downloads
- the following developers have access to do this: - the following developers have access to do this:
@ -192,13 +166,13 @@ need to be uploaded to https://tahoe-lafs.org in `~source/downloads`
Push the signed tag to the main repository: Push the signed tag to the main repository:
- git push origin tahoe-lafs-1.17.1 - git push origin tahoe-lafs-1.20.0
For the actual release, the tarball and signature files need to be For the actual release, the tarball and signature files need to be
uploaded to PyPI as well. uploaded to PyPI as well.
- ls dist/*1.19.0* - ls dist/*1.20.0*
- twine upload --username __token__ --password `cat SECRET-pypi-tahoe-publish-token` dist/*1.19.0* - twine upload --username __token__ --password `cat SECRET-pypi-tahoe-publish-token` dist/*1.20.0*
The following developers have access to do this: The following developers have access to do this:
@ -207,47 +181,29 @@ The following developers have access to do this:
- exarkun (partial?) - exarkun (partial?)
Announcing the Release Candidate Merge the Release Branch
````````````````````````````````
The release-candidate should be announced by posting to the
mailing-list (tahoe-dev@lists.tahoe-lafs.org). For example:
https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html
Is The Release Done Yet?
```````````````````````` ````````````````````````
If anyone reports a problem with a release-candidate then a new Once the release has been signed and uploaded the release branch
release-candidate should be made once a fix has been merged to should be merged to master (thus deleting newsfragments, etc).
master. Repeat the above instructions with `rc1` or `rc2` or whatever
is appropriate.
Once a release-candidate has marinated for some time then it can be
made into a the actual release.
The actual release follows the same steps as above, with some differences:
- there is no "-rcX" on the end of release names
- the release is uploaded to PyPI (using Twine)
- the version is tagged in Git (ideally using "the tahoe release key"
but can be done with any of the authorized core developers' personal
key)
- the release-candidate branches must be merged back to master after
the release is official (e.g. causing newsfragments to be deleted on
master, etc)
Announcing the Release Announcing the Release
---------------------- ``````````````````````
The release-candidate should be announced by posting to the
mailing-list (tahoe-dev@lists.tahoe-lafs.org).
mailing-lists mailing-lists
````````````` `````````````
A new Tahoe release is traditionally announced on our mailing-list A new Tahoe release is traditionally announced on our mailing-list
(tahoe-dev@tahoe-lafs.org). The former version of these instructions (tahoe-dev@lists.tahoe-lafs.org). For example:
also announced the release on the following other lists: https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html
The former version of these instructions also announced the release on
the following other lists:
- tahoe-announce@tahoe-lafs.org - tahoe-announce@tahoe-lafs.org
- twisted-python@twistedmatrix.com - twisted-python@twistedmatrix.com

View File

@ -1 +0,0 @@
Tahoe-LAFS manual's table of contents page has been reorganized.

View File

@ -1 +0,0 @@
Continued work to make Tahoe-LAFS take advantage of multiple CPUs.

View File

@ -1 +0,0 @@
Release 1.19.0

View File

@ -1 +0,0 @@
Stop using the C version of the cbor2 decoder.

View File

@ -1 +0,0 @@

View File

@ -1 +0,0 @@
Mutable directories can now be created with a pre-determined "signature key" via the web API using the "private-key=..." parameter. The "private-key" value must be a DER-encoded 2048-bit RSA private key in urlsafe base64 encoding.

View File

@ -1 +0,0 @@
Fix incompatibility with cryptography 43.

View File

@ -1 +0,0 @@
Fix incompatibility with attrs 24.1.

View File

@ -1,3 +0,0 @@
Properly interpret "tahoe create --storage-dir" as an option.
Versions 1.19.0 and older interpreted "--storage-dir" as a "flag" and thus wouldn't work properly.

View File

@ -1 +0,0 @@
Add a global Sphinx generated glossary. Link the static GBS glossary to the global glossary.

View File

@ -1 +0,0 @@

View File

@ -1 +0,0 @@
Now using the "hatch" build system, and pyproject.toml (exclusively)

View File

@ -1,4 +0,0 @@
Avoid private cache from Cachix until we can restore it.
Update nixpkgs to 24.11 wich is well cached for now.
Stop packaging and testing on nixpkgs/python39 (too old).
Start packaging and testing on nixpkgs/python312 instead.

View File

@ -1 +0,0 @@
pinning base images of builders to improve reproducibility on checks for PRs

View File

@ -1,6 +1,6 @@
let let
pname = "tahoe-lafs"; pname = "tahoe-lafs";
version = "1.19.0.post1"; version = "1.20.0.post1";
in in
{ lib { lib
, pythonPackages , pythonPackages

View File

@ -226,6 +226,7 @@ testenv = [
# Here are the library dependencies of the test suite. # Here are the library dependencies of the test suite.
test = [ test = [
"mock", "mock",
"tox",
"pytest", "pytest",
"pytest-twisted", "pytest-twisted",
"tox >= 4.0.0", "tox >= 4.0.0",

View File

@ -1,6 +1,6 @@
ANNOUNCING Tahoe, the Least-Authority File Store, v1.19.0 ANNOUNCING Tahoe, the Least-Authority File Store, v1.20.0
The Tahoe-LAFS team is pleased to announce version 1.19.0 of The Tahoe-LAFS team is pleased to announce version 1.20.0 of
Tahoe-LAFS, an extremely reliable decentralized storage Tahoe-LAFS, an extremely reliable decentralized storage
system. Get it with "pip install tahoe-lafs", or download a system. Get it with "pip install tahoe-lafs", or download a
tarball here: tarball here:
@ -15,27 +15,14 @@ unique security and fault-tolerance properties:
https://tahoe-lafs.readthedocs.org/en/latest/about.html https://tahoe-lafs.readthedocs.org/en/latest/about.html
The previous stable release of Tahoe-LAFS was v1.18.0, released on The previous stable release of Tahoe-LAFS was v1.19.0, released on
October 2, 2022. Major new features and changes in this release: January 18, 2024. Major new features and changes in this release:
A new "Grid Manager" feature allows clients to specify any number of Declarative build system based on "hatch".
parties whom they will use to limit which storage-server that client The ability to great mutable directories with a given private-key.
talks to. See docs/managed-grid.rst for more.
The new HTTP-based "Great Black Swamp" protocol is now enabled Pulled in fixes from CBOR, stopped using the C version of CBOR and
(replacing Foolscap). This allows integrators to start with their fixed incompatibilities with attrs and cryptography libraries.
favourite HTTP library (instead of implementing Foolscap first). Both
storage-servers and clients support this new protocol.
`tahoe run` will now exit if its stdin is closed (but accepts --allow-stdin-close now).
Mutables may be created with a pre-determined signature key; care must
be taken!
This release drops Python 3.7 support and adds Python 3.11 and 3.12
support. Several performance improvements have been made. Introducer
correctly listens on Tor or I2P. Debian 10 and Ubuntu 20.04 are no
longer tested.
Besides all this there have been dozens of other bug-fixes and Besides all this there have been dozens of other bug-fixes and
improvements. improvements.
@ -154,23 +141,23 @@ Of Fame" [13].
ACKNOWLEDGEMENTS ACKNOWLEDGEMENTS
This is the twentieth release of Tahoe-LAFS to be created solely as a This is the twenty-first release of Tahoe-LAFS to be created solely as a
labor of love by volunteers. Thank you very much to the team of labor of love by volunteers. Thank you very much to the team of
"hackers in the public interest" who make Tahoe-LAFS possible. "hackers in the public interest" who make Tahoe-LAFS possible.
meejah meejah
on behalf of the Tahoe-LAFS team on behalf of the Tahoe-LAFS team
October 1, 2022 December 13, 2024
Planet Earth Planet Earth
[1] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.19.0/NEWS.rst [1] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.20.0/NEWS.rst
[2] https://github.com/tahoe-lafs/tahoe-lafs/blob/master/docs/known_issues.rst [2] https://github.com/tahoe-lafs/tahoe-lafs/blob/master/docs/known_issues.rst
[3] https://tahoe-lafs.org/trac/tahoe-lafs/wiki/RelatedProjects [3] https://tahoe-lafs.org/trac/tahoe-lafs/wiki/RelatedProjects
[4] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.19.0/COPYING.GPL [4] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.20.0/COPYING.GPL
[5] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.19.0/COPYING.TGPPL.rst [5] https://github.com/tahoe-lafs/tahoe-lafs/blob/tahoe-lafs-1.20.0/COPYING.TGPPL.rst
[6] https://tahoe-lafs.readthedocs.org/en/tahoe-lafs-1.19.0/INSTALL.html [6] https://tahoe-lafs.readthedocs.org/en/tahoe-lafs-1.20.0/INSTALL.html
[7] https://lists.tahoe-lafs.org/mailman/listinfo/tahoe-dev [7] https://lists.tahoe-lafs.org/mailman/listinfo/tahoe-dev
[8] https://tahoe-lafs.org/trac/tahoe-lafs/roadmap [8] https://tahoe-lafs.org/trac/tahoe-lafs/roadmap
[9] https://github.com/tahoe-lafs/tahoe-lafs/blob/master/CREDITS [9] https://github.com/tahoe-lafs/tahoe-lafs/blob/master/CREDITS

View File

@ -152,7 +152,7 @@ commands =
[testenv:news] [testenv:news]
# On macOS, git invoked from Tox needs $HOME. # On macOS, git invoked from Tox needs $HOME.
passenv = TAHOE_LAFS_*,PIP_*,SUBUNITREPORTER_*,USERPROFILE,HOMEDRIVE,HOMEPATH,COLUMNS passenv = TAHOE_LAFS_*,PIP_*,SUBUNITREPORTER_*,USERPROFILE,HOMEDRIVE,HOMEPATH,COLUMNS
whitelist_externals = allowlist_externals =
git git
deps = deps =
# see comment in [testenv] about "certifi" # see comment in [testenv] about "certifi"