mirror of
https://github.com/shadowsocks/shadowsocks-rust.git
synced 2026-11-06 08:14:07 +00:00
feat: bump version v1.25.0
- MSRV upgraded to v1.91, due to smoltcp v0.13. - Upgrade dependencies - Add cursor rule orientation
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
---
|
||||
description: shadowsocks-rust workspace orientation (binaries, crates, features, hot paths)
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# shadowsocks-rust orientation
|
||||
|
||||
## Toolchain
|
||||
|
||||
- **Edition**: 2024. **MSRV**: `1.91` (root + both crates; `clippy.toml` matches). Breaking bumps are semver-major for this repo.
|
||||
- **Workspace**: root `shadowsocks-rust` + `crates/shadowsocks` + `crates/shadowsocks-service` (see root `Cargo.toml` `[workspace]`).
|
||||
|
||||
## Dependency direction
|
||||
|
||||
```
|
||||
shadowsocks-rust (binaries, CLI, logging, allocators)
|
||||
└── shadowsocks-service (roles, config load, ACL, DNS helpers, local modes)
|
||||
└── shadowsocks (protocol, relay I/O, crypto facade)
|
||||
└── shadowsocks-crypto (ciphers; optional ring / AEAD-2022, etc.)
|
||||
```
|
||||
|
||||
- **Do not** make `shadowsocks` depend on `shadowsocks-service`. New shared logic belongs in `shadowsocks` or a small shared module, not the reverse.
|
||||
|
||||
## Root crate (`shadowsocks-rust`)
|
||||
|
||||
- **`bin/*.rs`**: thin `main` — build `clap` `Command`, delegate to `shadowsocks_rust::service::{local,server,manager,...}` (`src/service/*.rs`).
|
||||
- **`src/lib.rs`**: `VERSION`, re-exports service entrypoints.
|
||||
- **`src/config.rs`**, **`src/logging/*`**, **`src/daemonize/*`**, **`src/monitor/*`**, **`src/allocator/*`**: process-wide concerns (not protocol).
|
||||
- **Features**: root features mostly **forward** to `shadowsocks-service/...` (e.g. `local` → `shadowsocks-service/local`, `local-tun` → `local-tun` + `ipnet`). Prefer enabling capability on the service crate when adding optional deps.
|
||||
|
||||
## `crates/shadowsocks` (core)
|
||||
|
||||
- **Role**: `ServerConfig`, relay primitives, SOCKS5 `Address`, manager wire protocol, `Context`, sockets (`net`), plugins.
|
||||
- **High-signal paths**:
|
||||
- **TCP / stream tunneling**: `relay/tcprelay/` (`ProxyListener`, `ProxyClientStream`, proxy stream protocol under `proxy_stream/`).
|
||||
- **UDP**: `relay/udprelay/` (`ProxySocket`), **`net/udp.rs`** (socket wrapper, `batch_send` / `batch_recv`), **`net/sys/unix/*`** (Linux batching via `sendmmsg`/`recvmmsg`-style APIs).
|
||||
- **Manager**: `manager/`.
|
||||
- **DNS resolver hook**: `dns_resolver/`.
|
||||
|
||||
## `crates/shadowsocks-service`
|
||||
|
||||
- **Role**: runnable **local** (`sslocal`), **server** (`ssserver`), **manager** (`ssmanager`); loads JSON5 config; ACL; Hickory DNS integration; platform redir/tun/http.
|
||||
- **Layout** (under `src/`):
|
||||
- **`local/`** — SOCKS4/5 (`local/socks/`), HTTP proxy (`local/http/`), transparent **redir** (`local/redir/`, per-OS `sys/` subdirs), **tunnel**, **TUN** (`local/tun/` — `smoltcp` user stack when `local-tun`), **fake-dns**, **online_config** (SIP008), **dns** relay, **net/tcp|udp** listeners, **loadbalancing** (`PingBalancer`), **`context.rs`** (`ServiceContext`).
|
||||
- **`server/`** — TCP/UDP relay servers (`tcprelay.rs`, `udprelay.rs`), `server.rs`, `context.rs`.
|
||||
- **`manager/`** — manager daemon.
|
||||
- **`acl/`** — ACL matching.
|
||||
- **`dns/`**, **`net/`** — shared service-layer DNS / flow / sockets.
|
||||
- **`config.rs`** — service config types and loading.
|
||||
- **`local/context.rs`**: central handle for accept opts, balancer, ACL, DNS — most local features thread through here.
|
||||
|
||||
## Main binaries (feature-gated)
|
||||
|
||||
| Binary | Feature | Typical entry |
|
||||
|---------------|-------------|----------------|
|
||||
| `sslocal` | `local` | `src/service/local.rs` → `shadowsocks_service::run_local` |
|
||||
| `ssserver` | `server` | `src/service/server.rs` |
|
||||
| `ssmanager` | `manager` | `src/service/manager.rs` |
|
||||
| `ssurl` | `utility` | own bin + optional `utility-url-outline` / `reqwest` |
|
||||
| `ssservice` | `service` | wrapper for packaged multi-role |
|
||||
| `sswinservice`| `winservice`| Windows service |
|
||||
|
||||
## Where to look (common tasks)
|
||||
|
||||
- **Local UDP association / performance**: `crates/shadowsocks-service/src/local/net/udp/association.rs` + core `crates/shadowsocks/src/net/udp.rs` + `crates/shadowsocks/src/net/sys/unix/*`.
|
||||
- **TCP local accept / upstream**: `local/net/tcp/`, `relay/tcprelay/` (core).
|
||||
- **TLS to local HTTP / DNS-over-TLS**: `shadowsocks-service` optional `tokio-rustls`, `rustls-native-certs`, Hickory features (`dns-over-tls`, etc.).
|
||||
- **TUN / smoltcp**: `local/tun/*.rs` (device bridge, TCP manager thread, IP parsing); dep `smoltcp` with `medium-ip`, TCP/UDP sockets.
|
||||
|
||||
## Design notes
|
||||
|
||||
- **Async**: Tokio throughout service layer; core relay types are often used from async contexts.
|
||||
- **Config**: JSON5 files + CLI; many structs under `shadowsocks`/`shadowsocks-service` `config` modules — search `Config` / `ServerConfig` before duplicating options.
|
||||
- **Tests**: workspace integration tests in `tests/*.rs`; `crates/shadowsocks/tests/`; `#[cfg(test)]` modules beside sources.
|
||||
Generated
+3
-3
@@ -3208,7 +3208,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "shadowsocks"
|
||||
version = "1.24.0"
|
||||
version = "1.25.0"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"arc-swap",
|
||||
@@ -3275,7 +3275,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "shadowsocks-rust"
|
||||
version = "1.24.0"
|
||||
version = "1.25.0"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"build-time",
|
||||
@@ -3316,7 +3316,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "shadowsocks-service"
|
||||
version = "1.24.0"
|
||||
version = "1.25.0"
|
||||
dependencies = [
|
||||
"arc-swap",
|
||||
"base64",
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "shadowsocks-rust"
|
||||
version = "1.24.0"
|
||||
version = "1.25.0"
|
||||
authors = ["Shadowsocks Contributors"]
|
||||
description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
|
||||
repository = "https://github.com/shadowsocks/shadowsocks-rust"
|
||||
@@ -249,7 +249,7 @@ jemallocator = { version = "0.5", optional = true }
|
||||
snmalloc-rs = { version = "0.3", optional = true }
|
||||
rpmalloc = { version = "0.2", optional = true }
|
||||
|
||||
shadowsocks-service = { version = "1.24.0", path = "./crates/shadowsocks-service", default-features = false }
|
||||
shadowsocks-service = { version = "1.25.0", path = "./crates/shadowsocks-service", default-features = false }
|
||||
|
||||
windows-service = { version = "0.8", optional = true }
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "shadowsocks-service"
|
||||
version = "1.24.0"
|
||||
version = "1.25.0"
|
||||
authors = ["Shadowsocks Contributors"]
|
||||
description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
|
||||
repository = "https://github.com/shadowsocks/shadowsocks-rust"
|
||||
@@ -200,7 +200,7 @@ json5 = "1.3"
|
||||
serde_json = "1.0"
|
||||
bson = { version = "3.0.0", features = ["serde"], optional = true }
|
||||
|
||||
shadowsocks = { version = "1.24.0", path = "../shadowsocks", default-features = false }
|
||||
shadowsocks = { version = "1.25.0", path = "../shadowsocks", default-features = false }
|
||||
|
||||
# Just for the ioctl call macro
|
||||
[target.'cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd"))'.dependencies]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "shadowsocks"
|
||||
version = "1.24.0"
|
||||
version = "1.25.0"
|
||||
authors = ["Shadowsocks Contributors"]
|
||||
description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
|
||||
repository = "https://github.com/shadowsocks/shadowsocks-rust"
|
||||
|
||||
Vendored
+8
@@ -1,3 +1,11 @@
|
||||
shadowsocks-rust (1.25.0) unstable; urgency=medium
|
||||
|
||||
## Miscellaneous
|
||||
|
||||
- MSRV bumps to v1.91 (breaking change for downstream toolchains; required by `smoltcp` 0.13)
|
||||
|
||||
-- ty <zonyitoo@gmail.com> Sun, 22 Mar 2026 12:00:00 +0800
|
||||
|
||||
shadowsocks-rust (1.24.0) unstable; urgency=medium
|
||||
|
||||
## Features
|
||||
|
||||
Reference in New Issue
Block a user