Skip to content

Commit f4c2b1b

Browse files
committed
Merge #1671: Release notes and version for v0.9.11
053e9d8 Release notes and version for v0.9.11 (Kristaps Kaupe) Pull request description: Please review and test. Treat this as a release candidate. :) ACKs for top commit: AdamISZ: ACK 053e9d8 Tree-SHA512: 9d3e1cfed40360e34a472d2fb5fd63eafbc91a3dc0947ca0a92c45593be01ee07bb226baa8296ccc6759429c675bc353dc008717a3e55c807941c2e7a6003d14
2 parents 7b31e61 + 053e9d8 commit f4c2b1b

File tree

5 files changed

+182
-4
lines changed

5 files changed

+182
-4
lines changed

docs/JOINMARKET-QT-GUIDE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
The GUI can be run directly from Python script by doing `./joinmarket-qt.sh` from within `scripts/`, or, if using Microsoft Windows, by running the executable file/binary (**[CLICK HERE](https://github.com/JoinMarket-Org/joinmarket-clientserver/releases)** to download the latest release). If you followed normal installation procedure under Linux, desktop entry of JoinMarketQt should be added to the application menu of your desktop environment.
66

7-
**LATEST VERSION of JoinMarket-Qt is GUI version 32**. You can check the version via `About` in the menu.
7+
**LATEST VERSION of JoinMarket-Qt is GUI version 33**. You can check the version via `About` in the menu.
88

99
No other files / setup should be needed.
1010

+178
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
Joinmarket-clientserver 0.9.11:
2+
=================
3+
4+
<https://github.com/joinmarket-org/joinmarket-clientserver/releases/tag/v0.9.11>
5+
6+
Please report bugs using the issue tracker at github:
7+
8+
<https://github.com/joinmarket-org/joinmarket-clientserver/issues>
9+
10+
Upgrading
11+
=========
12+
13+
To upgrade:
14+
15+
*Reminder: always back up and recreate your joinmarket.cfg file when doing the upgrade; this is to make sure you have the new default settings. In order to recreate it, rename the old joinmarket.cfg and run 'python3 wallet-tool.py generate' from the scripts folder.*
16+
17+
(If you are upgrading from a version pre-0.7.0 please read the "Upgrading" section in [the 0.7.0 release notes](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/release-notes/release-notes-0.7.0.md).)
18+
19+
(If you are upgrading from a version pre-0.9.0 please read the [release notes](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/release-notes/release-notes-0.9.0.md) to find out how about [fidelity bonds](../fidelity-bonds.md) are relevant to your use-case).
20+
21+
First run the `install.sh` script as mentioned in the README. When prompted to overwrite the directory `jmvenv`, accept.
22+
23+
Note that `./install.sh -?` will show the options for installation.
24+
25+
Changes
26+
===============
27+
28+
### Removal of Python 3.7 support, 3.8 or newer is required now
29+
30+
Python 3.7 has been end of-life since June 2023 and it was a blocker for some necessary dependency updates.
31+
32+
Note that currently only Python 3.8, 3.9, 3.10 and 3.11 are supported, not Python 3.12 and newer.
33+
34+
* `7e045c9` Requires Python <3.12
35+
* `3d56837` Remove unnecessary check for Python 3.7+
36+
* `204f117` Drop Python 3.7 support
37+
38+
### Move to modern packaging and source layout
39+
40+
- Migrate to src-layout following https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout to facilitate automatic package discovery and editable installs.
41+
- Create `joinmarket` namespace distribution package in line with https://packaging.python.org/en/latest/guides/packaging-namespace-packages/
42+
- Migrate to `pyproject.toml` file for project configuration instead of legacy `setup.py`
43+
44+
* `c8eef50` Migrate to modern packaging and src layout
45+
46+
### Performance improvements
47+
48+
Lots of performance improvements made in wallet code that makes big impact especially with old wallets, with a lots of transaction history (in extreme cases, the time needed for some operations was improved from 40+ minutes to around 10 seconds). When syncing a heavily used wallet from a seed phrase on a new Bitcoin Core instance, now larger gap limit (`-g`) can be used and it will take far less time than it did before.
49+
50+
This involves caching some computed data in the wallet, in case a bug is discovered with this, a new configuration option `wallet_caching_disabled` is added to `joinmarket.cfg`, which allows to disable it when syncing the wallet.
51+
52+
As part of performance improvements are done by caching some data in wallet file (still encrypted), `*.jmdat` files will grow larger than before.
53+
54+
* `48aec83` wallet: remove a dead store in get_index_cache_and_increment
55+
* `8245271` wallet: avoid IndexError in _is_my_bip32_path
56+
* `574c29e` wallet: hoist get_script_from_path default impl into BaseWallet
57+
* `2c38a81` wallet: delete redundant get_script and get_addr methods
58+
* `b58ac67` wallet: drop _get_addr_int_ext; replace with calls to get_new_addr
59+
* `fc1e000` wallet_showutxos: use O(1) check for frozen instead of O(n)
60+
* `184d76f` wallet: add get_{balance,utxos}_at_mixdepth methods
61+
* `77f0194` wallet_utils: use new get_utxos_at_mixdepth method
62+
* `64f18bc` get_imported_privkey_branch: use O(m+n) algorithm instead of O(m*n)
63+
* `01ec2a4` wallet: add _addr_map, paralleling _script_map
64+
* `5bc7eb4` wallet: add persistent cache, mapping path->(priv, pub, script, addr)
65+
* `c3c10f1` wallet: implement optional cache validation
66+
* `ef1d76e` Allow cache purging at wallet initialization
67+
* `f2ae8ab` Don't validate cache during initial sync.
68+
* `8491431` cache deserialized form of txs in history method
69+
* `fab97a0` Use get_deser_from_gettransaction() everywhere
70+
71+
### Drop official support for 32-bit platforms
72+
73+
It should still work, but you might need Rust compiler installed for `install.sh` to succeed. It was necessary for newer versions of `cryptography` Python package. See https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1454 and https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1579.
74+
75+
### Wallet RPC API improvements and fixes
76+
77+
* `a847df9` Patch #1480: call get_POST_body once
78+
* `af9f462` fix(docs): remove duplicate keys in wallet-rpc.md
79+
* `ef29982` remove bearer authentication errors
80+
* `c88429d` JWT authority fixes
81+
* `638200d` feat(rpc): add block height to session response
82+
* `d8f1fc4` Add optional txfee property for direct-send wallet RPC
83+
* `ab1481d` RPC API: Add optional txfee property for single joins
84+
85+
### Removal of `convert_old_wallet.py` script
86+
87+
It was broken and old format wallets for conversion of which it was used aren't created by JoinMarket since v0.4.0 six years ago. If anybody still needs to do that conversion, some older JoinMarket release can be used.
88+
89+
* `d89dcde` Remove convert_old_wallet.py script
90+
91+
### Code quality improvements
92+
93+
* `3fc74fb` Refactor and cleanup of blockchaininterface and related
94+
* `3e71df5` Fix ShellCheck warnings
95+
* `7ebbacf` Add type hints
96+
* `2978b18` De-duplicate and change dict_factory
97+
* `d9fee29` Fix get_tx_info() type hint and doc
98+
* `c4414e8` Minor quality improvements in wallet code
99+
100+
### Bugfixes and other minor changes
101+
102+
* `47bc77f` Fix some internal dependencies
103+
* `83d7ebb` Log in case JM loads RPC wallet at startup
104+
* `438cb41` Replace readfp()
105+
* `4486b10` Transaction virtual size must be rounded upwards
106+
* `c990a4d` Allow fee bump tx not signalling BIP125 if mempoolfullrbf is enabled
107+
* `bfc618a` Fix OrderbookWatch.on_order_seen() exception debug messages
108+
* `6ec6308` Deduplicate wallet error messages
109+
* `1822279` Warn user if higher priority confirmation target than requested is provided by blockchain source
110+
* `196a097` Allow absurd fee override when setting tx fee manually
111+
* `9c13180` Raise fallback fee rate from 10 sat/vB to 20 sat/vB
112+
* `0a225c1` Payjoin: log full proposed PSBT from sender if it fails sanity checks
113+
* `cde6b4c` Fix no amount entered message (can be sats too, not only BTC)
114+
115+
### Documentation
116+
117+
Most important - Bitcoin Core v26 has dropped legacy wallet support by default, but JoinMarket still doesn't support new descriptor wallets. So documentation was changed to note users that Core should be started with `deprecatedrpc=create_bdb` configuration parameter for JM to work.
118+
119+
* `c9c4648` Update release-notes-0.9.10.md
120+
* `1a8d0ea` Correct help description for --develop
121+
* `c2a6b3d` Rephrase hidden service dir config, lint
122+
* `8555a8b` Removed donation link
123+
* `79e5c3d` Document Core wallet creation for v26
124+
* `13661f5` Docs: Fix links in Docker install section
125+
* `cb60774` Qt: Remove donation link from "About" dialog
126+
* `9ab8ad6` Remove mention of donations from JoinMarketQt guide
127+
* `a5a5132` update payjoin doc
128+
129+
### Installation and dependencies
130+
131+
* `c08e824` build(deps): update tor from v0.4.7.13 to v0.4.8.7
132+
* `1ebb68f` Update txtorcon to 23.0.0
133+
* `7181512` Upgrade setuptools also with --docker-install
134+
* `91dacf6` Rewrite AES code with cryptography
135+
* `70366ff` Bump cryptography to 41.0.4 for all platforms
136+
* `b2c5603` Bump twisted from 22.4.0 to 23.8.0
137+
* `30d9715` Update Dockerfile
138+
* `f40bd64` Bump cryptography from 41.0.4 to 41.0.6
139+
* `9410b9c` Update libsecp256k1 and python-bitcointx
140+
* `47acf6a` Update libsecp256k1 to v0.4.1
141+
* `8254a67` Update secp256k1 lib deps for pythonbitcointx1.1.5
142+
* `ca33eca` Bump txtorcon from 23.0.0 to 23.11.0
143+
* `66fcf38` Bump twisted from 23.8.0 to 23.10.0
144+
* `8846c4d` Remove --disable-jni from libsecp256k1_build
145+
146+
### Testing
147+
148+
* `bfd5b21` fix linting
149+
* `906eb71` CI: Update Bitcoin Core from 25.0 to 25.1
150+
* `d25457b` CI: Disable venv caching
151+
* `4f4945e` Test min and latest Python version only
152+
* `027682a` CI: Add ShellCheck
153+
* `1cb20d5` Do not reinstall on test
154+
* `8684853` Support Bitcoin Core v26 for tests
155+
* `d234731` Add -allowignoredconf=1 for Bitcoin Core v26+
156+
* `935a734` Fix tests for Core v26 when user has no access to ~/.bitcoin/settings.json
157+
* `8f382d0` Add test for dict_factory()
158+
* `4d15a2c` CI: Add OpenAPI Diff action
159+
* `fe9ec99` When looking for a free TCP ports, bind only to localhost
160+
* `8e6eca8` Add CodeQL code scanning
161+
162+
Credits
163+
=======
164+
165+
Thanks to everyone who directly contributed to this release -
166+
167+
- @AdamISZ
168+
- @BTCBellyButton (new contributor)
169+
- @dennisreimann
170+
- @dependabot[bot] :)
171+
- @kristapsk
172+
- @MarnixCroes (new contributor)
173+
- @roshii
174+
- @st3b1t (new contributor)
175+
- @theborakompanioni
176+
- @whitslack (special shout out for extremely significant contribution to improve wallet performance)
177+
178+
And thanks also to those who submitted bug reports, tested, reviewed and otherwise helped out.

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "joinmarket"
7-
version = "0.9.11dev"
7+
version = "0.9.11"
88
description = "Joinmarket client library for Bitcoin coinjoins"
99
readme = "README.md"
1010
requires-python = ">=3.8,<3.12"

scripts/joinmarket-qt.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
qt5reactor.install()
5252

5353
#Version of this Qt script specifically
54-
JM_GUI_VERSION = '33dev'
54+
JM_GUI_VERSION = '33'
5555

5656
from jmbase import get_log, stop_reactor, set_custom_stop_reactor
5757
from jmbase.support import EXIT_FAILURE, utxo_to_utxostr,\

src/jmbase/support.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import urllib.parse as urlparse
1313

1414
# JoinMarket version
15-
JM_CORE_VERSION = '0.9.11dev'
15+
JM_CORE_VERSION = '0.9.11'
1616

1717
# global Joinmarket constants
1818
JM_WALLET_NAME_PREFIX = "joinmarket-wallet-"

0 commit comments

Comments
 (0)