Rename to shadowsocks-c with libuv, async DNS and CI lint - #3051
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rename the project to shadowsocks-c and replace its event backend with libuv while preserving existing command names and library consumers.
Replace libev with pinned, bundled libuv 1.52.1 so Windows socket polling uses IOCP and macOS uses kqueue. Keep protocol callbacks behind a small internal event API that shares one poll handle per socket and allows watchers to stop/free during callbacks.
Runtime hostname resolution uses c-ares asynchronously for client ACL bypass and server manager updates, alongside existing TCP/UDP destination lookups. DNS socket watchers grow dynamically instead of reusing a fixed six-slot array. Numeric-only address helpers reject hostnames rather than silently performing blocking DNS. Initial configuration/listener/proxy-address resolution remains synchronous before serving traffic.
Add backend and delayed-DNS tests covering 256 sockets, watcher lifetime, A/AAAA results, NXDOMAIN, cancellation, exactly-once callbacks and timer progress. Native macOS/Windows and other portability jobs run hostname ACL integration with an unreachable proxy upstream, so successful transfers prove direct resolution. Update static library exports and system build dependencies for libuv. Keep libuv platform headers private to avoid Linux TCP-header conflicts. Apply a documented, checked Windows CPU-info type fix to extracted libuv sources; the pinned archive remains unchanged.
Add pinned actionlint/Ruff CI checks. Strengthen the zero-warning clang-tidy job to fail on tool/compiler errors and retain full diagnostics as artifacts.
Validation:
a849325.New builds expose
libshadowsocks-cand CMake/pkg-config packageshadowsocks-c. Install legacy library filename aliases and package lookup wrappers, retaining theshadowsocks.hABI andss-*commands. Source archives, displayed branding, license paths and the primary manual use the new name. Configuration paths, Debian package/service identifiers and current GitHub URLs remain compatible.Both new and legacy CMake consumers and static pkg-config consumers pass locally. A previously built macOS shared consumer runs against the renamed installation. Windows cross-builds install canonical and legacy libraries; CI exercises both sets of consumer filenames on Windows, Linux and macOS. All 22 hosted checks pass on the renamed head
a849325, including native Windows GCC/Clang, macOS, Linux, FreeBSD, Debian packaging and legacy consumers.Native MSVC remains unsupported. No event-backend performance improvement is claimed.