Skip to content

Releases: shadowsocks/shadowsocks-rust

v1.25.0

Choose a tag to compare

@zonyitoo zonyitoo released this 26 Aug 18:31

Breaking Changes

  • MSRV bumps to v1.91, required by smoltcp v0.13
  • refactor(service)!: rework outbound proxy chain into a unified client. The outbound proxy architecture has been completely reworked into a single self-contained module net::outbound, exposing OutboundProxyClient, OutboundProxyStream, Socks5Auth, HttpProxyAuth and a TcpDialer trait.
    • crate::net::outbound_proxy — removed; use crate::net::OutboundProxyClient
    • crate::net::http_connect::HttpConnectClient — moved to crate::net::HttpConnectClient (only available with the local-http feature)
    • crate::net::Socks5TcpClient (the chain-mixing wrapper) — split: the pure SOCKS5 client is now crate::local::socks::client::socks5::Socks5TcpClient; the in-band negotiator is crate::net::Socks5Negotiator
    • crate::local::net::tcp::outbound_proxy — removed
    • ServiceContext::outbound_proxies() — replaced by outbound_client() returning Option<&Arc<OutboundProxyClient>>
  • create_inbound_udp_socket public function signature changed, added allow_fragmentation parameter
  • inbound_udp_allow_fragmentation new configuration option split from outbound_udp_allow_fragmentation, which now only controls outbound sockets. The inbound (listener) UDP sockets default to disabling IP fragmentation (false).

Features

  • #2106 Allow chaining ssserver to another SOCKS5/HTTP/HTTPS proxy
  • #2109 Expose user_key() on CryptoStream and ProxyServerStream, lets callers identify which multi-user identity was authenticated after an AEAD-2022 handshake
  • EIH (Extended Identity Header) support
  • #1994 local-http: Support HTTP Basic auth
  • service: Outbound UDP relay through SOCKS5-only chains. UDP traffic can now be relayed through proxy chains when all hops are SOCKS5. Chains containing HTTP/HTTPS hops will emit a startup warning and UDP traffic will bypass the chain.
  • Optimized socket2::Socket with socket2::SockRef

Bug Fixes

  • Allow fragmentation for inbound UDP replies
  • RUSTSEC-2026-0258, RUSTSEC-2026-0204, RUSTSEC-2026-0185, RUSTSEC-2026-0119, RUSTSEC-2026-0104, RUSTSEC-2026-0099
  • net: Make UDP batch configs match the BSD module routing for tvOS/watchOS
  • #2100 Native build error on arm64
  • shadowsocks-service: Fixed build without local-http feature
  • #2062 http: Add is_ready method and enhance connection checks
  • #2097 Unify alpine base version in Docker images
  • #2093 PingBalancer: Remove unnecessary double checks
  • netbsd: Cross-compilation fixes with getentropy shim and passthrough RUSTFLAGS syntax

Miscellaneous

  • shadowsocks-crypto upgraded to v0.8.0
  • smoltcp upgraded to v0.14
  • Upgraded various dependencies

What's Changed

  • chore(deps): update actions/upload-artifact action to v6 by @renovate[bot] in #2056
  • fix(deps): update rust crate reqwest to 0.13 by @renovate[bot] in #2058
  • chore: clippy fix by @AaronChen0 in #2059
  • fix(http): add is_ready method and enhance connection checks by @arloor in #2062
  • fix(deps): update rust crate nix to 0.31 by @renovate[bot] in #2066
  • chore(deps): update rust crate time to v0.3.46 by @renovate[bot] in #2067
  • chore(deps): update rust crate clap to v4.5.57 by @renovate[bot] in #2071
  • chore(deps): update rust crate regex to v1.12.3 by @renovate[bot] in #2072
  • chore: fix a warning by @AaronChen0 in #2076
  • chore: fix typos by @AaronChen0 in #2075
  • fix(deps): update rust crate rand to 0.10 by @renovate[bot] in #2074
  • chore(deps): update actions/upload-artifact action to v7 by @renovate[bot] in #2079
  • chore(deps): bump quinn-proto from 0.11.13 to 0.11.14 in the cargo group across 1 directory by @dependabot[bot] in #2080
  • chore(deps): update rust crate libc to v0.2.183 by @renovate[bot] in #2085
  • chore(deps): update rust crate socket2 to v0.6.3 by @renovate[bot] in #2086
  • chore(deps): update rust crate tracing-subscriber to v0.3.23 by @renovate[bot] in #2087
  • chore(deps): update rust crate tun to v0.8.6 by @renovate[bot] in #2088
  • chore(deps): update rust crate clap to v4.6.0 by @renovate[bot] in #2089
  • chore(deps): update rust crate ipnet to v2.12.0 by @renovate[bot] in #2090
  • chore(deps): update rust crate tokio to v1.50.0 by @renovate[bot] in #2091
  • chore(deps): update rust docker tag to v1.94.0 by @renovate[bot] in #2092
  • chore(deps): update docker/build-push-action action to v7 by @renovate[bot] in #2081
  • chore(deps): update docker/login-action action to v4 by @renovate[bot] in #2082
  • chore(deps): update docker/setup-buildx-action action to v4 by @renovate[bot] in #2084
  • chore(deps): update docker/metadata-action action to v6 by @renovate[bot] in #2083
  • fix: remove unnecessary double checks in PingBalancer by @AaronChen0 in #2093
  • fix: unify alpine base version by @vndroid in #2097
  • chore(deps): update rust crate arc-swap to v1.9.0 - autoclosed by @renovate[bot] in #2096
  • chore(deps): bump rustls-webpki from 0.103.8 to 0.103.10 in the cargo group across 1 directory by @dependabot[bot] in #2095
  • fix(deps): update rust crate smoltcp to 0.13 by @renovate[bot] in #2094
  • fix: native build error on arm64 by @vndroid in #2100
  • chore(deps): update rust crate libc to v0.2.184 by @renovate[bot] in #2104
  • chore(deps): update rust crate tokio to v1.51.1 by @renovate[bot] in #2105
  • [Feature]: Allow to chain ssserver to another socks5/http/https proxy #1397 by @missdeer in #2106
  • feat: expose user_key() on CryptoStream and ProxyServerStream by @ibigbug in #2109
  • chore(deps): update softprops/action-gh-release action to v3 by @renovate[bot] in #2108
  • Remove unused imports in outbound_proxy by @faern in #2111
  • chore(deps): update rust crate clap to v4.6.1 by @renovate[bot] in #2113
  • chore(deps): update rust crate tracing-appender to v0.2.5 by @renovate[bot] in #2119
  • chore(deps): update rust crate webpki-roots to v1.0.7 by @renovate[bot] in #2116
  • chore(deps): update rust crate tokio to v1.52.1 by @renovate[bot] in #2110
  • chore(deps): update rust docker tag to v1.95.0 by @renovate[bot] in #2118
  • feat: add eih support by @alex27riva in #2115
  • chore(deps): update rust crate blake3 to v1.8.5 by @renovate[bot] in #2123
  • chore(deps): update rust crate libc to v0.2.186 by @renovate[bot] in #2122
  • chore(deps): update rust crate mimalloc to v0.1.50 by @renovate[bot] in #2120
  • chore(deps): update rust crate rpassword to v7.5.1 by @renovate[bot] in #2126
  • refactor(service)!: rework outbound proxy chain into a unified client by @zonyitoo in #2127
  • fix(deps): update rust crate aes to 0.9 by @renovate[bot] in #2107
  • Replace ring with aws-lc-rs by @faern in #2112
  • fix(deps): update rust crate hickory-resolver to 0.26 by @renovate[bot] in #2114
  • chore(deps): update rust crate pin-project to v1.1.12 by @renovate[bot] in #2133
  • chore(deps): update rust crate hickory-resolver to v0.26.1 by @renovate[bot] in #2132
  • chore(deps): bump openssl from 0.10.75 to 0.10.79 in the cargo group across 1 directory by @dependabot[bot] in #2121
  • chore(deps): update rust crate tokio to v1.52.2 by @renovate[bot] in #2131
  • cho...
Read more

v1.24.0

Choose a tag to compare

@zonyitoo zonyitoo released this 10 Dec 23:39
7ee1aa9

Features

  • #1993, #2044 Support logging to file and syslog
  • #2026 HTTP Client support auto retry if cached connection was lost

Miscellaneous

  • RUSTSEC-2025-0120, json5 upgraded to v1.3
  • MSRV bumps to v1.88

What's Changed

New Contributors

Full Changelog: v1.23.5...v1.24.0

v1.23.5

Choose a tag to compare

@zonyitoo zonyitoo released this 04 Jul 14:58
8f9419e

Features

  • #1963 Updated once_cell::sync::Lazy to std::sync::LazyLock
  • #1967 ACL supported outbound_allow_list
  • #1974 Allow customizable SocketProtect trait for Android VpnService

Bug Fixes

  • #1966 Build xdg only on *nix platforms
  • #1968 Make hickory-dns truly optional

What's Changed

New Contributors

Full Changelog: v1.23.4...v1.23.5

v1.23.4

Choose a tag to compare

@zonyitoo zonyitoo released this 12 May 15:29
76551f5

Bug Fixes

What's Changed

  • fix: domain name comparison in should_forward_by_query by @Mygod in #1953

Full Changelog: v1.23.3...v1.23.4

v1.23.3

Choose a tag to compare

@zonyitoo zonyitoo released this 11 May 13:21
c9f47c6

Features

  • #1943 online-config: SIP008 online configuration supports adding plugin whitelist (see README for details)

Bug Fixes

  • Build feature --full won't report errors for targets that are not supported by local-tun and local-redir.

What's Changed

Full Changelog: v1.23.2...v1.23.3

v1.23.2

Choose a tag to compare

@zonyitoo zonyitoo released this 25 Apr 00:20
586154d

Bug Fixes

  • #1940 local-tun: Fixes panic when resizing cached buffers

Full Changelog: v1.23.1...v1.23.2

v1.23.1

Choose a tag to compare

@zonyitoo zonyitoo released this 21 Apr 14:26
b33b7d7

Features

  • #1922 local-tun: Enable congestion control algorithm for TCP connections
  • #1923 local-tun: Disable TCP package receive checksum for improving performance
  • local-tun: Buffer for receiving/sending packets from/to tun device are cached globally

Bug Fixes

  • #1929 outbound_bind_addr for UDP sockets failed to bind() if it is an IPv4 address
  • Double check IPSK key length (AEAD-2022) when reading from configuration file

What's Changed

New Contributors

Full Changelog: v1.23.0...v1.23.1

v1.23.0

Choose a tag to compare

@zonyitoo zonyitoo released this 19 Mar 13:40
4beddbe

Features, Breaking Changes

  • MSRV bumps to v1.85, Rust language edition upgraded to 2024
  • rand crate upgraded to v0.9, which may be incompatible with other older crates
  • local-fake-dns switched storage engine from sled to rocksdb, users should delete the old database file and let sslocal recreate it ageain
    • local-fake-dns is moved from full to full-extra feature because its still unstable

Bug fixes

  • #1832 Fixes FreeBSD build error
  • #1833 Fixes sswinservice.exe file paths in Powershell build script
  • mips-* targets cross build reenabled

Miscellaneous

  • #1834 Shadowsocks entrance APIs has strongly typed errors

What's Changed

New Contributors

Full Changelog: v1.22.0...v1.23.0

v1.22.0

Choose a tag to compare

@zonyitoo zonyitoo released this 02 Jan 14:30
7e059ca

Features, Breaking Changes

  • ServerConfig::new returns a Result, fails if password doesn't match method's requirements
  • ConnectOpts::bind_local_addr supports binding to a specific port
  • Uses async in trait, bump MSRV to v1.75
  • #1790 outbound_udp_allow_fragmentation new option for allowing UDP outbound sockets to enable IP fragmentation
  • tun2 has been merged back to meh/rust-tun
  • #1810 UdpSocket::bind
  • shadowsocks-rust binary crate "default" feature set to full

Bug Fixes

  • Method none (plain) skips key derivation process.
  • #1762 Do not crash in ServerConfig::from_url() on unknown method
  • #1759 Flush local-tun tcp writer half before close
  • #1765 Disallow HTTP/SOCKS4a in socks protocol handler when authentication is required
  • ConnectOpts's per-server options should not be shared globally
  • #1814 local-dns upstream udp packet buffer size 256

Miscellaneous

  • Make cryptographic dependencies optional in default build of shadowsocks crate.

What's Changed

  • fix(deps): update rust crate notify to v7 by @renovate in #1735
  • fix(deps): update rust crate bloomfilter to v1.0.15 by @renovate in #1739
  • fix(deps): update rust crate reqwest to v0.12.9 by @renovate in #1740
  • fix(deps): update rust crate serde to v1.0.214 by @renovate in #1741
  • fix(deps): update rust crate tun2 to v4 by @renovate in #1738
  • fix(deps): update rust crate sysexits to v0.8.3 by @renovate in #1743
  • fix(deps): update rust crate sysexits to v0.8.4 by @renovate in #1744
  • fix(deps): update rust crate thiserror to v1.0.66 by @renovate in #1745
  • chore(deps): update embarkstudios/cargo-deny-action action to v2 by @renovate in #1748
  • chore(deps): update actions/checkout action to v4 by @renovate in #1747
  • fix(deps): update rust crate thiserror to v1.0.67 by @renovate in #1749
  • fix(deps): update rust crate idna to v1.0.3 by @renovate in #1750
  • fix(deps): update rust crate thiserror to v1.0.68 by @renovate in #1751
  • fix(deps): update rust crate url to v2.5.3 by @renovate in #1752
  • fix(deps): update rust crate bloomfilter to v1.0.16 by @renovate in #1753
  • Introducing shadowsocks Guru on Gurubase.io by @kursataktas in #1755
  • fix(deps): update rust crate bloomfilter to v2 by @renovate in #1754
  • fix(deps): update rust crate tokio to v1.41.1 by @renovate in #1758
  • fix(deps): update rust crate libc to v0.2.162 by @renovate in #1757
  • fix(deps): update rust crate sysexits to v0.8.5 by @renovate in #1761
  • fix: do not crash in ServerConfig::from_url() on unknown method by @link2xt in #1762
  • fix: flush local-tun tcp writer half before close by @AzazKamaz in #1759
  • fix(deps): update rust crate thiserror to v1.0.69 by @renovate in #1763
  • fix(deps): update rust crate serde to v1.0.215 by @renovate in #1766
  • fix(sslocal): disallow HTTP/SOCKS4 proxying when authentication required by @alaz in #1765
  • fix(deps): update rust crate clap to v4.5.21 by @renovate in #1767
  • fix(deps): update rust crate flate2 to v1.0.35 by @renovate in #1768
  • fix(deps): update rust crate libc to v0.2.164 by @renovate in #1769
  • fix(deps): update rust crate thiserror to v2 by @renovate in #1756
  • fix(deps): update rust crate serde_json to v1.0.133 by @renovate in #1771
  • fix unknown variable error by @AaronChen0 in #1772
  • fix(deps): update rust crate hyper to v1.5.1 by @renovate in #1773
  • fix(deps): update rust crate rustls-native-certs to v0.8.1 by @renovate in #1776
  • fix(deps): update rust crate webpki-roots to v0.26.7 by @renovate in #1777
  • fix(deps): update rust crate url to v2.5.4 by @renovate in #1779
  • fix(deps): update rust crate libc to v0.2.165 by @renovate in #1781
  • fix(deps): update rust crate libc to v0.2.166 by @renovate in #1782
  • fix(deps): update rust crate blake3 to v1.5.5 by @renovate in #1783
  • fix(deps): update rust crate tracing to v0.1.41 by @renovate in #1784
  • fix(deps): update rust crate socket2 to v0.5.8 by @renovate in #1786
  • fix(deps): update rust crate bytes to v1.9.0 by @renovate in #1787
  • fix(deps): update rust crate smoltcp to 0.12 by @renovate in #1785
  • fix(deps): update rust crate hickory-resolver to v0.25.0-alpha.4 by @renovate in #1788
  • fix(deps): update rust crate snmalloc-rs to v0.3.7 by @renovate in #1789
  • fix(deps): update rust crate libc to v0.2.167 by @renovate in #1791
  • fix(deps): update rust crate tracing-subscriber to v0.3.19 by @renovate in #1792
  • Allow IP fragmentation for outbound UDP sockets by @tom-ryan in #1790
  • fix(deps): update rust crate time to v0.3.37 by @renovate in #1797
  • fix(deps): update rust crate bloomfilter to v3 by @renovate in #1795
  • fix(deps): update rust crate tokio to v1.42.0 by @renovate in #1798
  • fix(deps): update rust crate thiserror to v2.0.4 by @renovate in #1799
  • fix(deps): update rust crate http to v1.2.0 by @renovate in #1800
  • fix(deps): update rust crate clap to v4.5.22 by @renovate in #1801
  • fix(deps): update rust crate tokio-rustls to v0.26.1 by @renovate in #1802
  • fix(deps): update rust crate clap to v4.5.23 by @renovate in #1803
  • chore(deps): update alpine docker tag to v3.21 by @renovate in #1804
  • fix(deps): update rust crate thiserror to v2.0.5 by @renovate in #1806
  • fix(deps): update rust crate thiserror to v2.0.6 by @renovate in #1807
  • refactor: replace static with const for constants by @Integral-Tech in #1805
  • fix(deps): update rust crate libc to v0.2.168 by @renovate in #1808
  • Add UdpSocket::bind by @MarkusPettersson98 in #1810
  • fix(deps): update rust crate serde to v1.0.216 by @renovate in #1811
  • fix(deps): update rust crate thiserror to v2.0.7 by @renovate in #1813
  • bugfix: local dns upstream udp packet buffer size 256 by @chuxi in #1814
  • fix(deps): update rust crate hyper to v1.5.2 by @renovate in #1815
  • fix(deps): update rust crate thiserror to v2.0.8 by @renovate in #1816
  • fix(deps): update rust crate libc to v0.2.169 by @renovate in #1817
  • chore(deps): update rust crate env_logger to v0.11.6 by @renovate in #1818
  • fix(deps): update rust crate tun to v0.7.6 by @renovate in #1819
  • fix(deps): update rust crate thiserror to v2.0.9 by @renovate in #1822
  • fix(deps): update rust crate serde_json to v1.0.134 by @renovate in #1821
  • fix(deps): update rust crate reqwest to ...
Read more

v1.21.2

Choose a tag to compare

@zonyitoo zonyitoo released this 24 Oct 16:39
a03006a

Bug Fixes

  • #1730 local-http: HTTP Client removes Authority from Request URI only for HTTP/1.x