Releases: Chilledheart/yass
M132 Release 2
New Feature
Reduced memory usage per connection (#1162, #1164)
On average, the memory footprint is cut to half compared to the previous versions including embedded devices such as OpenWRT, musl-based Linux, Android and iOS.
Watch on stream close even for peer socket (#1157)
For Android, Linux, and macOS (including iOS), the system provides the API to watch on stream close event for peer socket. Now yass supports it.
Intermediate certificate authority support for Windows and User-added CA support for Android (#1150, b72a76f)
Previous builds only certificate authorities at system stores for Windows and Android would be respected. Now it support certificate authorities under Intermediate certificate authority (CA sub-tree) for Window and under User-added CA (added at path /data/misc/keychain/certs-added
) for Android.
SSL_CERT_FILE and SSL_CERT_DIR environment variables are respected like OpenSSL/BoringSSL program (5ddd3dc)
Environment variable SSL_CERT_FILE
stands for CA certificate to verify peer against and SSL_CERT_DIR
stands for CA directory to verify peer against.
TCP connections from browser should be recycled when the pair is down(a4736dd, 6b232e0, 42b314e)
It is a defect if the TCP connection between client and browser (usually for the case they're not at the same machine) pair's down is not detected. New version fixes this behaviour by applying TCP keep alive options.
TLS uses builtin ca store universally (#1153)
It is long time (like two years) that chrome uses its own chrome store for TLS verification. We follow to make similar decision but to use Mozilla Root Store instead. You can pass --ca_native
to follow the old behavior.
GTS Root R4 now ships inside supplementary ca (f7bbf38)
ZeroSSL.com will need this CA especially after #1150 and #1153 to get support outside Microsoft Root Program and etc.
TLS Sessions can be re-used (#1147)
Previous builds don't reuse TLS sessions and become slow. Now it changes to re-use TLS sessions by default. Performance improvement is expected.
Bugfix
[Security] http2: handle status code in response (#1143)
Status code in response should be taken care of and triggers disconnect event correctly for non-OK response.
[Security] cli: handle http/1.1 keepalive properly (#1154)
Http/1.1 keep-alive connection should handle host/port change in one single TCP connection between client and browser.
[Security] cli: fix socket re-use issus when trying different endpoint for keep-alive connection (c61aeb2)
Previous upstream socket is refused to be reused due to a defect in code in keep-alive HTTP1.1 connection. Now it is fixed.
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- deb: add postinst/postremove actions for systemd by @Chilledheart in #1141
- Bump chromium 132 dependents by @Chilledheart in #1142
- http2: handle with status code in response correctly by @Chilledheart in #1143
- build: source tarball includes tun2proxy vendor crates by @Chilledheart in #1146
- tls: enable reusable sessions by @Chilledheart in #1147
- gh actions: use xcode 16.1 by @Chilledheart in #1149
- win32: load ca from AuthRoot/CA store besides Root by @Chilledheart in #1150
- mac: load ca from admin and user domains by @Chilledheart in #1152
- tls: use builtin ca store universally by @Chilledheart in #1153
- cli: handle http/1.1 keepalive properly by @Chilledheart in #1154
- android: support build with jdk 21 by @Chilledheart in #1155
- config: change def connect_timeout value to 2000 (for linux only) by @Chilledheart in #1156
- net: listen to stream peer socket down event by @Chilledheart in #1157
- tun2proxy: update smoltcp to 0.12.0 by @Chilledheart in #1158
- rust: bump to 1.83.0 by @Chilledheart in #1160
- cli: save memory usage per connection (io queue) by @Chilledheart in #1162
- cli: save memory usage per connection (refactor) by @Chilledheart in #1164
Full Changelog: 1.15.3...1.16.2
M131 Release 4
New Feature
Reduced memory usage per connection (#1162, #1164)
On average, the memory footprint is cut to half compared to the previous versions including embedded devices such as OpenWRT, musl-based Linux, Android and iOS.
Watch on stream close even for peer socket (#1157)
For Android, Linux, and macOS (including iOS), the system provides the API to watch on stream close event for peer socket. Now yass supports it.
Intermediate certificate authority support for Windows and User-added CA support for Android (#1150, b72a76f)
Previous builds only certificate authorities at system stores for Windows and Android would be respected. Now it support certificate authorities under Intermediate certificate authority (CA sub-tree) for Window and under User-added CA (added at path /data/misc/keychain/certs-added
) for Android.
SSL_CERT_FILE and SSL_CERT_DIR environment variables are respected like OpenSSL/BoringSSL program (5ddd3dc)
Environment variable SSL_CERT_FILE
stands for CA certificate to verify peer against and SSL_CERT_DIR
stands for CA directory to verify peer against.
TCP connections from browser should be recycled when the pair is down(a4736dd, 6b232e0, 42b314e)
It is a defect if the TCP connection between client and browser (usually for the case they're not at the same machine) pair's down is not detected. New version fixes this behaviour by applying TCP keep alive options.
TLS uses builtin ca store universally (#1153)
It is long time (like two years) that chrome uses its own chrome store for TLS verification. We follow to make similar decision but to use Mozilla Root Store instead. You can pass --ca_native
to follow the old behavior.
GTS Root R4 now ships inside supplementary ca (f7bbf38)
ZeroSSL.com will need this CA especially after #1150 and #1153 to get support outside Microsoft Root Program and etc.
TLS Sessions can be re-used (#1147)
Previous builds don't reuse TLS sessions and become slow. Now it changes to re-use TLS sessions by default. Performance improvement is expected.
OpenWrt/MUSL build supports more legacy distros (#1138).
Previous builds demand madvise calls and latest musl libc library. Now it changes to static build and disables madvise usages, so it is compatible with Asuswrt Merlin and other legacy distros now link newer musl libc statically from OpenWrt 23.05. As side effect, performance degrade expected.
Full Optimization (-O3) on Android build (#1119).
Previously Android builds are optimized for size (-Os). Now it changes to Full Opmization (-O3). Performance Improvement is expected.
Server SNI Support is added on iOS build (#1135).
Previously iOS build hides Server SNI for simplicity. Now the Server SNI TextField is added for potential use.
Disabling assertions on Official Build (#1125).
Now assertions (including those within STL) are disabled for Official Build. Performance Improvement is expected.
Android AAB bundle provided (#1121)
AAB bundles are now provided besides APK packages. You can extract debuginfo from AAB bundles directly.
Bugfix
Potential Crash on iOS fixed (#1134).
Potential Crash when stopping happens in iOS and now it is fixed.
[Security] http2: handle HTTP/2 Push as soft error (#1139)
This feature is not currently supported by any major browser.
[Security] http2: handle END_STREAM gracefully (#1140)
Allow more grace time for the client to close the connection after yass receives end of file flag.
[Security] http2: handle status code in response (#1143)
Status code in response should be taken care of and triggers disconnect event correctly for non-OK response.
[Security] cli: handle http/1.1 keepalive properly (#1154)
Http/1.1 keep-alive connection should handle host/port change in one single TCP connection between client and browser.
[Security] cli: fix socket re-use issus when trying different endpoint for keep-alive connection (c61aeb2)
Previous upstream socket is refused to be reused due to a defect in code in keep-alive HTTP1.1 connection. Now it is fixed.
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- net: optimize yield algorithm by @Chilledheart in #1105
- android: upgrade to gradle 8.5 by @Chilledheart in #1107
- android: support 16k page size by @Chilledheart in #1109
- Bump chromium 131 dependents by @Chilledheart in #1111
- tls: Add a flag to use ML-KEM instead of Kyber by @Chilledheart in #1112
- tls: handle dangling DoPeek call by @Chilledheart in #1114
- tls: enable ML-KEM by default by @Chilledheart in #1115
- gh actions: add aarch64-alpine and armhf-alpine by @Chilledheart in #1116
- bump asio to efdc25ab9 (1.31.0) by @Chilledheart in #1117
- net: fix http proxy integration with telegram by @Chilledheart in #1118
- android: use -O3 instead of -Os for gh releases by @Chilledheart in #1119
- bump mbedtls to 3.6.2 by @Chilledheart in #1120
- android: build aab bundle to contain debug symbols by @Chilledheart in #1121
- rust: bump to 1.82.0 by @Chilledheart in #1122
- tls: Enable ALPS for HTTP/2 by @Chilledheart in #1123
- net: use googleurl's stricmp by @Chilledheart in #1124
- build: add enable-assertions option by @Chilledheart in #1125
- core: move more files to googleurl by @Chilledheart in #1126
- core: move rand_util to googleurl by @Chilledheart in #1128
- core: move logging header to pollyfills by @Chilledheart in #1129
- bump nghttp2 to v1.64.0 by @Chilledheart in #1130
- core: move logging misc to googleurl by @Chilledheart in #1131
- core: move logging source to googleurl by @Chilledheart in #1132
- ios: fix crash when stopping by @Chilledheart in #1134
- ios: add server sni ui by @Chilledheart in #1135
- build: prepare for fedora 40 in place of fedora 39 by @Chilledheart in #1137
- [compatiblity] musl/openwrt: don't call madvise any more by @Chilledheart in #1138
- http2: handle HTTP/2 Push as soft error by @Chilledheart in #1139
- http2: handle END_STREAM gracefully by @Chilledheart in #1140
(backported commits are not listed)
Full Changelog: 1.14.4...1.15.4
M132 Release 1
New Feature
Intermediate certificate authority support for Windows and User-added CA support for Android (#1150, b72a76f)
Previous builds only certificate authorities at system stores for Windows and Android would be respected. Now it support certificate authorities under Intermediate certificate authority (CA sub-tree) for Window and under User-added CA (added at path /data/misc/keychain/certs-added
) for Android.
SSL_CERT_FILE and SSL_CERT_DIR environment variables are respected like OpenSSL/BoringSSL program (5ddd3dc)
Environment variable SSL_CERT_FILE
stands for CA certificate to verify peer against and SSL_CERT_DIR
stands for CA directory to verify peer against.
TCP connections from browser should be recycled when the pair is down(a4736dd, 6b232e0, 42b314e)
It is a defect if the TCP connection between client and browser (usually for the case they're not at the same machine) pair's down is not detected. New version fixes this behaviour by applying TCP keep alive options.
TLS uses builtin ca store universally (#1153)
It is long time (like two years) that chrome uses its own chrome store for TLS verification. We follow to make similar decision but to use Mozilla Root Store instead. You can pass --ca_native
to follow the old behavior.
GTS Root R4 now ships inside supplementary ca (f7bbf38)
ZeroSSL.com will need this CA especially after #1150 and #1153 to get support outside Microsoft Root Program and etc.
TLS Sessions can be re-used (#1147)
Previous builds don't reuse TLS sessions and become slow. Now it changes to re-use TLS sessions by default. Performance improvement is expected.
Bugfix
[Security] http2: handle status code in response (#1143)
Status code in response should be taken care of and triggers disconnect event correctly for non-OK response.
[Security] cli: handle http/1.1 keepalive properly (#1154)
Http/1.1 keep-alive connection should handle host/port change in one single TCP connection between client and browser.
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- deb: add postinst/postremove actions for systemd by @Chilledheart in #1141
- Bump chromium 132 dependents by @Chilledheart in #1142
- http2: handle with status code in response correctly by @Chilledheart in #1143
- build: source tarball includes tun2proxy vendor crates by @Chilledheart in #1146
- tls: enable reusable sessions by @Chilledheart in #1147
- gh actions: use xcode 16.1 by @Chilledheart in #1149
- win32: load ca from AuthRoot/CA store besides Root by @Chilledheart in #1150
- mac: load ca from admin and user domains by @Chilledheart in #1152
- tls: use builtin ca store universally by @Chilledheart in #1153
- cli: handle http/1.1 keepalive properly by @Chilledheart in #1154
Full Changelog: 1.15.3...1.16.1
M132 Release 0
New Feature
TLS Sessions can be re-used (#1147)
Previous builds don't reuse TLS sessions and become slow. Now it changes to re-use TLS sessions by default. Performance improvement is expected.
OpenWrt/MUSL build supports more legacy distros (#1138).
Previous builds demand madvise calls and latest musl libc library. Now it changes to static build and disables madvise usages, so it is compatible with Asuswrt Merlin and other legacy distros now link newer musl libc statically from OpenWrt 23.05. As side effect, performance degrade expected.
Full Optimization (-O3) on Android build (#1119).
Previously Android builds are optimized for size (-Os). Now it changes to Full Opmization (-O3). Performance Improvement is expected.
Server SNI Support is added on iOS build (#1135).
Previously iOS build hides Server SNI for simplicity. Now the Server SNI TextField is added for potential use.
Disabling assertions on Official Build (#1125).
Now assertions (including those within STL) are disabled for Official Build. Performance Improvement is expected.
Android AAB bundle provided (#1121)
AAB bundles are now provided besides APK packages. You can extract debuginfo from AAB bundles directly.
Bugfix
Potential Crash on iOS fixed (#1134).
Potential Crash when stopping happens in iOS and now it is fixed.
[Security] http2: handle HTTP/2 Push as soft error (#1139)
This feature is not currently supported by any major browser.
[Security] http2: handle END_STREAM gracefully (#1140)
Allow more grace time for the client to close the connection after yass receives end of file flag.
[Security] http2: handle status code in response (#1143)
Status code in response should be taken care of and triggers disconnect event correctly for non-OK response.
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- deb: add postinst/postremove actions for systemd by @Chilledheart in #1141
- Bump chromium 132 dependents by @Chilledheart in #1142
- http2: handle with status code in response correctly by @Chilledheart in #1143
- build: source tarball includes tun2proxy vendor crates by @Chilledheart in #1146
- tls: enable reusable sessions by @Chilledheart in #1147
Full Changelog: 1.15.3...1.16.0
M131 Release 3
New Feature
OpenWrt/MUSL build supports more legacy distros (#1138).
Previous builds demand madvise calls and latest musl libc library. Now it changes to static build and disables madvise usages, so it is compatible with Asuswrt Merlin and other legacy distros now link newer musl libc statically from OpenWrt 23.05. As side effect, performance degrade expected.
Full Optimization (-O3) on Android build (#1119).
Previously Android builds are optimized for size (-Os). Now it changes to Full Opmization (-O3). Performance Improvement is expected.
Server SNI Support is added on iOS build (#1135).
Previously iOS build hides Server SNI for simplicity. Now the Server SNI TextField is added for potential use.
Disabling assertions on Official Build (#1125).
Now assertions (including those within STL) are disabled for Official Build. Performance Improvement is expected.
Android AAB bundle provided (#1121)
AAB bundles are now provided besides APK packages. You can extract debuginfo from AAB bundles directly.
Bugfix
Potential Crash on iOS fixed (#1134).
Potential Crash when stopping happens in iOS and now it is fixed.
[Security] http2: handle HTTP/2 Push as soft error (#1139)
This feature is not currently supported by any major browser.
[Security] http2: handle END_STREAM gracefully (#1140)
Allow more grace time for the client to close the connection after yass receives end of file flag.
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- net: optimize yield algorithm by @Chilledheart in #1105
- android: upgrade to gradle 8.5 by @Chilledheart in #1107
- android: support 16k page size by @Chilledheart in #1109
- Bump chromium 131 dependents by @Chilledheart in #1111
- tls: Add a flag to use ML-KEM instead of Kyber by @Chilledheart in #1112
- tls: handle dangling DoPeek call by @Chilledheart in #1114
- tls: enable ML-KEM by default by @Chilledheart in #1115
- gh actions: add aarch64-alpine and armhf-alpine by @Chilledheart in #1116
- bump asio to efdc25ab9 (1.31.0) by @Chilledheart in #1117
- net: fix http proxy integration with telegram by @Chilledheart in #1118
- android: use -O3 instead of -Os for gh releases by @Chilledheart in #1119
- bump mbedtls to 3.6.2 by @Chilledheart in #1120
- android: build aab bundle to contain debug symbols by @Chilledheart in #1121
- rust: bump to 1.82.0 by @Chilledheart in #1122
- tls: Enable ALPS for HTTP/2 by @Chilledheart in #1123
- net: use googleurl's stricmp by @Chilledheart in #1124
- build: add enable-assertions option by @Chilledheart in #1125
- core: move more files to googleurl by @Chilledheart in #1126
- core: move rand_util to googleurl by @Chilledheart in #1128
- core: move logging header to pollyfills by @Chilledheart in #1129
- bump nghttp2 to v1.64.0 by @Chilledheart in #1130
- core: move logging misc to googleurl by @Chilledheart in #1131
- core: move logging source to googleurl by @Chilledheart in #1132
- ios: fix crash when stopping by @Chilledheart in #1134
- ios: add server sni ui by @Chilledheart in #1135
- build: prepare for fedora 40 in place of fedora 39 by @Chilledheart in #1137
- [compatiblity] musl/openwrt: don't call madvise any more by @Chilledheart in #1138
- http2: handle HTTP/2 Push as soft error by @Chilledheart in #1139
- http2: handle END_STREAM gracefully by @Chilledheart in #1140
Full Changelog: 1.14.4...1.15.3
M130 Release 5
New Feature
OpenWrt/MUSL build supports more legacy distros (#1138).
Previous builds demand madvise calls and latest musl libc library. Now it changes to static build and disables madvise usages, so it is compatible with Asuswrt Merlin and other legacy distros now link newer musl libc statically from OpenWrt 23.05. As side effect, performance degrade expected.
Full Optimization (-O3) on Android build (#1119).
Previously Android builds are optimized for size (-Os). Now it changes to Full Opmization (-O3). Performance Improvement is expected.
Server SNI Support is added on iOS build (#1135).
Previously iOS build hides Server SNI for simplicity. Now the Server SNI TextField is added for potential use.
Disabling assertions on Official Build (#1125).
Now assertions (including those within STL) are disabled for Official Build. Performance Improvement is expected.
Android AAB bundle provided (#1121)
AAB bundles are now provided besides APK packages. You can extract debuginfo from AAB bundles directly.
Bugfix
Potential Crash on iOS fixed (#1134).
Potential Crash when stopping happens in iOS and now it is fixed.
[Security] http2: handle HTTP/2 Push as soft error (#1139)
This feature is not currently supported by any major browser.
[Security] http2: handle END_STREAM gracefully (#1140)
Allow more grace time for the client to close the connection after yass receives end of file flag.
Android 16KB mode support
Since 1.14.2, android 16 kb page size support is added targeting Android 15. You can now install and use this apk for any Android device which enables 16 KB mode.
Some benefits from 16 kb memory page size:
- Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
- Reduced power draw during app launch: 4.56% reduction on average
Fix integration issue with Telegram on Linux newer than 5.6.1 (or any application built against Qt 6.8)
Starting with 1.15.0 and 1.14.4 (#1118), Telegram on Linux (newer than 5.6.1) is capable to connect yass service via http proxy.
See qt6.8's change: qt/qtbase@0fef8f53c3e and qt/qtbase@15b0bd69ff2
Post Quantum ML-KEM key-agreements in TLS 1.3
Starting with 1.15.0 and 1.14.3 (#1089), Post Quantum ML-KEM instead of Kyber Support is enabled for TLS 1.3.
Fix a crash due to dangling SSLSocket::DoPeek call
Starting with 1.15.0 and 1.14.3, a potential crash has been fixed during TLS handshake in Windows (#1113).
Contribute your translation (i18n)
Please submit translations via Transifex: https://app.transifex.com/yetanothershadowsocket/yetanothershadowsocket
Available Project:
- Qt5/Qt6
- Gtk3
- Gtk4
- Android
- iOS
- macOS
- Win32 (Incompatible with RC format)
TCP Congestion Algorithm (Linux only)
You can change tcp connection algorithm with connection to server from version 1.13.1 in Option Dialog.
If not found, you must run modprobe tcp_CONGESTION
to load kernel module manually before use it.
-
list all supported built congestion algorithms:
ls -la /lib/modules/$(uname -r)/kernel/net/ipv4/tcp*.ko
-
add the name of kernel module such as
tcp_bbr
to/etc/modules-load.d/bbr.conf
to ensure the the kernel module loaded prior to yass.
Dropped CentOS 7 Support (EOL)
Last latest CentOS 7 binaries are still available at M127 Release 3 and M126 Release 7
KDE (Qt) support
From version 1.10.5, KDE (Qt6) support is added in source, you now can compile it with -DGUI=on -DUSE_QT6=on
cmake option.
From version 1.11.2, KDE (Qt5) support is added in source, you now can compile it with -DGUI=on -DUSE_QT5=on
cmake option.
From version 1.11.1, Qt6 and GTK4 prebuilt deb and rpm packages are also provided.
From version 1.11.2, Qt5 prebuilt deb and rpm packages are also provided.
Windows binary now switched to ucrt runtime
From version 1.10.5, for windows users below windows 10 now it requires KB2999226 installed on their machines.
For XP SP3/Vista Users, please use 32-bit releases and install Visual C++ 2010 x86 Runtime.
Caddy HTTPS protocol support
Caddy's HTTPS protocol is compatible from release 1.10.3 and 1.9.7.
Tcmalloc support enabled for both windows and linux
Tcmalloc support is added for windows since 1.10.4 (excluding arm64/aarch64 platform) and for linux.
Fix support for macOS 15
macOS now requires entitlement of local network for dns resolving. So we switch back to system dns resolver instead of c-ares.
This change is landed at 1.13.1 and 1.12.4.
Android vpn service support
Android releases from 1.6.3 are signed and have been updated to add VpnService support.
iOS packet tunnel support
iOS releases from 1.5.22 have fixed memory pressure crashes and have been updated to add Packet tunnel support. You need a PC (with iTune) or a mac (through Finder) to install ipa directly or wait for app store release.
Alternative way: Join TesfFlight. For Apple Silicon macOS Users such as M1/M2/M3, you can also install packet tunnel version via TestFlight.
What's Changed
- Bump chromium 130 dependents by @Chilledheart in #1090
- use jsoncpp for official build by @Chilledheart in #1091
- net: apply tcp congestion only between cli and server by @Chilledheart in #1092
- cmake: use static build for musl by @Chilledheart in #1093
- bump benchmark to version 1.9.0 by @Chilledheart in #1094
- bump protobuf to match grpc default by @Chilledheart in #1095
- c-ares: backport some patches by @Chilledheart in #1096
- gtk4: fix typo in icon name by @Chilledheart in #1097
- net: cleanup pending listen ctx on stop by @Chilledheart in #1098
- build: enforce jsoncpp usage by @Chilledheart in #1099
- flatpak: use qt 6.6 by @Chilledheart in #1101
- win32: handle escape in about dialog by @Chilledheart in #1102
- mac: produce dSYM files correctly by @Chilledheart in #1104
- net: optimize yield algorithm by @Chilledheart in #1105
- android: upgrade to gradle 8.5 by @Chilledheart in #1107
- android: support 16k page size by @Chilledheart in #1109
- 99c6715 tls: Add a flag to use ML-KEM instead of Kyber
- b35bc35 tls: support post quantumn key-agreements in server side
- 53a9919 tls: handle dangling DoPeek call
- 67e8cbe tls: enable ML-KEM by default
- ce13cc2 gh actions: add aarch64-alpine and armhf-alpine
- 568592e qt: fix missing translation for post quantum option
- 9cdbffc net: fix http proxy integration with telegram
- 329a439 cli: write error message to socks4/socks5 replies
- 3109078 android: use -O3 instead of -Os for gh releases
- dffbfa6 android: build aab bundle to contain debug symbols
- 4924707 tls: Enable ALPS for HTTP/2
- 377c8fe rust: bump to 1.82.0
- 720bf00 tls: support both of mlkem and kyber at server side
- 3889b6d tls: config enable_post_quantum_kyber is used for server-side as well
- fd3e992 build: add enable-assertions option
- 629995d logging: change default loglevel
- 6d883fa ios: fix crash when stopping
- 8571318 ios: adjust cipher method ui
- 0531d6c ios: add server sni ui
- 64d5ae4 [compatiblity] musl/openwrt: don't call madvise any more
- 48c137e http2: handle HTTP/2 Push as soft error
- ce66153 http2: handle END_STREAM gracefully
Full Changelog: 1.13.2...1.14.5
M131 Release 2
New Feature
Full Optimization (-O3) on Android build (#1119).
Previously Android builds are optimized for size (-Os). Now it changes to Full Opmization (-O3). Performance Improvement is expected.
Server SNI Support is added on iOS build (#1135).
Previously iOS build hides Server SNI for simplicity. Now the Server SNI TextField is added for potential use.
Disabling assertions on Official Build (#1125).
Now assertions (including those within STL) are disabled for Official Build. Performance Improvement is expected.
Android AAB bundle provided (#1121)
AAB bundles are now provided besides APK packages. You can extract debuginfo from AAB bundles directly.
Bugfix
Potential Crash on iOS fixed (#1134).
Potential Crash when stopping happens in iOS and now it is fixed.
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- net: optimize yield algorithm by @Chilledheart in #1105
- android: upgrade to gradle 8.5 by @Chilledheart in #1107
- android: support 16k page size by @Chilledheart in #1109
- Bump chromium 131 dependents by @Chilledheart in #1111
- tls: Add a flag to use ML-KEM instead of Kyber by @Chilledheart in #1112
- tls: handle dangling DoPeek call by @Chilledheart in #1114
- tls: enable ML-KEM by default by @Chilledheart in #1115
- gh actions: add aarch64-alpine and armhf-alpine by @Chilledheart in #1116
- bump asio to efdc25ab9 (1.31.0) by @Chilledheart in #1117
- net: fix http proxy integration with telegram by @Chilledheart in #1118
- android: use -O3 instead of -Os for gh releases by @Chilledheart in #1119
- bump mbedtls to 3.6.2 by @Chilledheart in #1120
- android: build aab bundle to contain debug symbols by @Chilledheart in #1121
- rust: bump to 1.82.0 by @Chilledheart in #1122
- tls: Enable ALPS for HTTP/2 by @Chilledheart in #1123
- net: use googleurl's stricmp by @Chilledheart in #1124
- build: add enable-assertions option by @Chilledheart in #1125
- core: move more files to googleurl by @Chilledheart in #1126
- core: move rand_util to googleurl by @Chilledheart in #1128
- core: move logging header to pollyfills by @Chilledheart in #1129
- bump nghttp2 to v1.64.0 by @Chilledheart in #1130
- core: move logging misc to googleurl by @Chilledheart in #1131
- core: move logging source to googleurl by @Chilledheart in #1132
- ios: fix crash when stopping by @Chilledheart in #1134
- ios: add server sni ui by @Chilledheart in #1135
Full Changelog: 1.14.4...1.15.1
M131 Release 1
New Feature
Full Optimization (-O3) on Android build (#1119).
Previously Android builds are optimized for size (-Os). Now it changes to Full Opmization (-O3). Performance Improvement is expected.
Server SNI Support is added on iOS build (#1135).
Previously iOS build hides Server SNI for simplicity. Now the Server SNI TextField is added for potential use.
Disabling assertions on Official Build (#1125).
Now assertions (including those within STL) are disabled for Official Build. Performance Improvement is expected.
Android AAB bundle provided (#1121)
AAB bundles are now provided besides APK packages. You can extract debuginfo from AAB bundles directly.
Bugfix
Potential Crash on iOS fixed (#1134).
Potential Crash when stopping happens in iOS and now it is fixed.
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- net: optimize yield algorithm by @Chilledheart in #1105
- android: upgrade to gradle 8.5 by @Chilledheart in #1107
- android: support 16k page size by @Chilledheart in #1109
- Bump chromium 131 dependents by @Chilledheart in #1111
- tls: Add a flag to use ML-KEM instead of Kyber by @Chilledheart in #1112
- tls: handle dangling DoPeek call by @Chilledheart in #1114
- tls: enable ML-KEM by default by @Chilledheart in #1115
- gh actions: add aarch64-alpine and armhf-alpine by @Chilledheart in #1116
- bump asio to efdc25ab9 (1.31.0) by @Chilledheart in #1117
- net: fix http proxy integration with telegram by @Chilledheart in #1118
- android: use -O3 instead of -Os for gh releases by @Chilledheart in #1119
- bump mbedtls to 3.6.2 by @Chilledheart in #1120
- android: build aab bundle to contain debug symbols by @Chilledheart in #1121
- rust: bump to 1.82.0 by @Chilledheart in #1122
- tls: Enable ALPS for HTTP/2 by @Chilledheart in #1123
- net: use googleurl's stricmp by @Chilledheart in #1124
- build: add enable-assertions option by @Chilledheart in #1125
- core: move more files to googleurl by @Chilledheart in #1126
- core: move rand_util to googleurl by @Chilledheart in #1128
- core: move logging header to pollyfills by @Chilledheart in #1129
- bump nghttp2 to v1.64.0 by @Chilledheart in #1130
- core: move logging misc to googleurl by @Chilledheart in #1131
- core: move logging source to googleurl by @Chilledheart in #1132
- ios: fix crash when stopping by @Chilledheart in #1134
- ios: add server sni ui by @Chilledheart in #1135
Full Changelog: 1.14.4...1.15.1
M131 Release 0
New Feature
Post Quantum ML-KEM key-agreements in TLS 1.3 (#1115)
Use Post Quantum key-agreements ML-KEM (draft-connolly-tls-mlkem-key-agreement) in place of Kyber(draft-tls-westerbaan-xyber768d00-02) for TLS 1.3.
Android 16KB mode support (#1109)
Android 16 kb page size support (#1109) is added targeting Android 15. You can now install and use this apk for any Android device which enables 16 KB mode.
Some benefits from 16 kb memory page size:
- Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
- Reduced power draw during app launch: 4.56% reduction on average
Bugfix
Fix integration issue with http-proxy clients built against Qt 6.8 (#1118)
Telegram on Linux (newer than 5.6.1) is capable to connect yass service via http proxy.
See qt6.8's change: qt/qtbase@0fef8f53c3e and qt/qtbase@15b0bd69ff2
Fix a crash due to dangling SSLSocket::DoPeek call (#1114)
A potential crash on windows has been fixed during TLS handshake in Windows (#1113).
Support outside Github Release
iOS support
Join via TestFlight https://testflight.apple.com/join/6AkiEq09. Install TestFlight first.
The relevant updates on TestFlight will be completed in the foreseeable time
Flathub Support
Install via Flathub https://flathub.org/apps/io.github.chilledheart.yass. Install Flatpak first.
The relevant updates on Flathub will be completed in the foreseeable time
What's Changed
- net: optimize yield algorithm by @Chilledheart in #1105
- android: upgrade to gradle 8.5 by @Chilledheart in #1107
- android: support 16k page size by @Chilledheart in #1109
- Bump chromium 131 dependents by @Chilledheart in #1111
- tls: Add a flag to use ML-KEM instead of Kyber by @Chilledheart in #1112
- tls: handle dangling DoPeek call by @Chilledheart in #1114
- tls: enable ML-KEM by default by @Chilledheart in #1115
- gh actions: add aarch64-alpine and armhf-alpine by @Chilledheart in #1116
- bump asio to efdc25ab9 (1.31.0) by @Chilledheart in #1117
- net: fix http proxy integration with telegram by @Chilledheart in #1118
Full Changelog: 1.14.4...1.15.0
M130 Release 4
Android 16KB mode support
Since 1.14.2, android 16 kb page size support is added targeting Android 15. You can now install and use this apk for any Android device which enables 16 KB mode.
Some benefits from 16 kb memory page size:
- Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
- Reduced power draw during app launch: 4.56% reduction on average
Fix integration issue with Telegram on Linux newer than 5.6.1 (or any application built against Qt 6.8)
Starting with 1.15.0 and 1.14.4 (#1118), Telegram on Linux (newer than 5.6.1) is capable to connect yass service via http proxy.
See qt6.8's change: qt/qtbase@0fef8f53c3e and qt/qtbase@15b0bd69ff2
Post Quantum ML-KEM key-agreements in TLS 1.3
Starting with 1.15.0 and 1.14.3 (#1089), Post Quantum ML-KEM instead of Kyber Support is enabled for TLS 1.3.
Fix a crash due to dangling SSLSocket::DoPeek call
Starting with 1.15.0 and 1.14.3, a potential crash has been fixed during TLS handshake in Windows (#1113).
Contribute your translation (i18n)
Please submit translations via Transifex: https://app.transifex.com/yetanothershadowsocket/yetanothershadowsocket
Available Project:
- Qt5/Qt6
- Gtk3
- Gtk4
- Android
- iOS
- macOS
- Win32 (Incompatible with RC format)
TCP Congestion Algorithm (Linux only)
You can change tcp connection algorithm with connection to server from version 1.13.1 in Option Dialog.
If not found, you must run modprobe tcp_CONGESTION
to load kernel module manually before use it.
-
list all supported built congestion algorithms:
ls -la /lib/modules/$(uname -r)/kernel/net/ipv4/tcp*.ko
-
add the name of kernel module such as
tcp_bbr
to/etc/modules-load.d/bbr.conf
to ensure the the kernel module loaded prior to yass.
Dropped CentOS 7 Support (EOL)
Last latest CentOS 7 binaries are still available at M127 Release 3 and M126 Release 7
KDE (Qt) support
From version 1.10.5, KDE (Qt6) support is added in source, you now can compile it with -DGUI=on -DUSE_QT6=on
cmake option.
From version 1.11.2, KDE (Qt5) support is added in source, you now can compile it with -DGUI=on -DUSE_QT5=on
cmake option.
From version 1.11.1, Qt6 and GTK4 prebuilt deb and rpm packages are also provided.
From version 1.11.2, Qt5 prebuilt deb and rpm packages are also provided.
Windows binary now switched to ucrt runtime
From version 1.10.5, for windows users below windows 10 now it requires KB2999226 installed on their machines.
For XP SP3/Vista Users, please use 32-bit releases and install Visual C++ 2010 x86 Runtime.
Caddy HTTPS protocol support
Caddy's HTTPS protocol is compatible from release 1.10.3 and 1.9.7.
Tcmalloc support enabled for both windows and linux
Tcmalloc support is added for windows since 1.10.4 (excluding arm64/aarch64 platform) and for linux.
Fix support for macOS 15
macOS now requires entitlement of local network for dns resolving. So we switch back to system dns resolver instead of c-ares.
This change is landed at 1.13.1 and 1.12.4.
Android vpn service support
Android releases from 1.6.3 are signed and have been updated to add VpnService support.
iOS packet tunnel support
iOS releases from 1.5.22 have fixed memory pressure crashes and have been updated to add Packet tunnel support. You need a PC (with iTune) or a mac (through Finder) to install ipa directly or wait for app store release.
Alternative way: Join TesfFlight. For Apple Silicon macOS Users such as M1/M2/M3, you can also install packet tunnel version via TestFlight.
What's Changed
- Bump chromium 130 dependents by @Chilledheart in #1090
- use jsoncpp for official build by @Chilledheart in #1091
- net: apply tcp congestion only between cli and server by @Chilledheart in #1092
- cmake: use static build for musl by @Chilledheart in #1093
- bump benchmark to version 1.9.0 by @Chilledheart in #1094
- bump protobuf to match grpc default by @Chilledheart in #1095
- c-ares: backport some patches by @Chilledheart in #1096
- gtk4: fix typo in icon name by @Chilledheart in #1097
- net: cleanup pending listen ctx on stop by @Chilledheart in #1098
- build: enforce jsoncpp usage by @Chilledheart in #1099
- flatpak: use qt 6.6 by @Chilledheart in #1101
- win32: handle escape in about dialog by @Chilledheart in #1102
- mac: produce dSYM files correctly by @Chilledheart in #1104
- net: optimize yield algorithm by @Chilledheart in #1105
- android: upgrade to gradle 8.5 by @Chilledheart in #1107
- android: support 16k page size by @Chilledheart in #1109
- 99c6715 tls: Add a flag to use ML-KEM instead of Kyber
- b35bc35 tls: support post quantumn key-agreements in server side
- 53a9919 tls: handle dangling DoPeek call
- 67e8cbe tls: enable ML-KEM by default
- ce13cc2 gh actions: add aarch64-alpine and armhf-alpine
- 568592e qt: fix missing translation for post quantum option
- 9cdbffc net: fix http proxy integration with telegram
Full Changelog: 1.13.2...1.14.4