Skip to content

Sync upstream: Xray-core v26.10.21, API v3, Go 1.27.3 - #1

Merged
theZebco merged 39 commits into
mainfrom
sync/upstream-v26.10.21
Oct 22, 2026
Merged

theZebco merged 39 commits into
mainfrom
sync/upstream-v26.10.21

Conversation

@theZebco

Copy link
Copy Markdown
Collaborator

Brings upstream libXray (XTLS/libXray dbe9512) into our fork: Xray-core v26.10.21, the emergency certificate release, built with Go 1.27.3.

From upstream

  • Xray-core v26.6.27 → v26.10.21.
  • Invoke API v3: runXray takes the config as xrayJson; a top-level env is ignored — runtime keys go in the config's root env. runXrayFromJson and ping are gone.
  • The core's lifecycle lock (RunXray refuses a second start with ErrAlreadyRunning, a failed start is closed).
  • cgo_bridge replaces the source template (same CGoInvoke / CGoFree exports), stripped binaries, the validate workflow.
  • Link conversion returns validated outbounds only (remark in tag); legacy vmess://base64 links are no longer parsed.

Ours, carried onto it

  • Smart failover and the latency probe with their Invoke methods (getFailoverState, setFailoverOrder, startProbe, probeResults, stopProbe, closeProbeHost).
  • runXray and stopXray run end to end under one lock, so the failover controller always matches the core; a refused duplicate runXray leaves the running tunnel and its controller alone.
  • xray.Instance() reads the core under its lock.
  • Draft-then-publish releases.

Build

  • Matrix: Android, Windows x64, Linux x64 only (ARM64, Apple and our macOS dylib dropped).
  • go.mod go 1.27.3; every setup-go reads it. Each leg checks its artifacts with go version -m (Go ≥ 1.27.3, the v26.10.21 core) and the DLL must import no C++ runtime. gomobile comes from go.mod.

Tests added

  • runXray with failover settings starts the controller; a refused duplicate keeps it; concurrent run/run/stop leaves the controller running exactly when the core is.
  • The config's root env locates geodata (a geosite: rule that only the env resolves).
  • Instance() raced against run/stop (-race).
  • build/test_verify_core.py for the artifact checks.

Merge with a merge commit (keeps upstream's history).

yiguodev and others added 30 commits July 7, 2026 21:32
* Document layered invoke env behavior

* Remove Invoke env support

* Return ping delay sentinel on failure

* Restore invoke env and desktop wrapper

* Make geo data invoke test self contained

* Clarify invoke env documentation

* Harden desktop wrapper errors
* Remove invoke env and desktop wrapper

* Limit Invoke JSON size

* Document Invoke size limit

* Clarify Invoke size and env behavior
* Harden Xray lifecycle and C ABI builds

* Use latest gomobile for builds

* Use stable toolchains in workflows
* add /proc/net UID fallback for Android < API 30

* fix matching: split hex and port per PCAPdroid logic
* Add concurrent batch ping support

* Remove ping batch config IDs

* Update Xray-core to v26.7.28

* Support SIP002 plain user info

* Harden runtime error handling
* Refactor Xray JSON invoke APIs

* Add age-encrypted subscription support

* Document hybrid age key generation
* Document single Go runtime limitation

* Generalize Go runtime warning across platforms
Solves the annoying problem when first time building binary, cc @yiguodev
* Remove deprecated AllowInsecure share handling

* Keep only outbounds from Xray JSON imports

* Remove KCP seed and header share handling

* Stop generating empty KCP share settings

* Add share config JSON projection

* Update libXray build workflow

* Update workflow action versions
* Restore protected desktop DNS resolver

* Fix protected DNS resolver lifecycle

* Preflight desktop DNS interface binding
* Use outbound tags for share names

* feat: add isolated route checking and build-only validation

* feat: persist managed Xray session traffic snapshots

* feat: report share parsing counts and probe server locations

* feat: probe full routing configurations without binding listeners

* build: record effective native build inputs and gomobile version

* feat: expose saved runtime statistics over loopback HTTP

* refactor: return raw ping location responses

* refactor: simplify managed runtime accounting

* refactor: make runtime snapshots internal

* fix: address probe review feedback

* refactor: unify share conversion API

* chore: require Go 1.27.1

* refactor: simplify configuration validation API

* build: remove build input metadata

* refactor: simplify share parsing and runtime accounting
…S#151)

* refactor: remove cross-process runtime file locking

* refactor: remove managed runtime traffic accounting

* refactor: return share outbounds without parsing statistics

* docs: keep pull requests scoped to their repository
* Update Xray-core to v26.9.9

* refactor(share): remove Clash and Hysteria2 URI support
* Validate Xray configurations through instance construction

* docs: configure engineering skills
* Add bug report and feature request issue forms

* Simplify agent guidance and remove obsolete skill docs

* Remove legacy VMessQrCode share-link support

* Complete VMessAEAD and VLESS share field support
* chore: update Xray-core to v26.9.30 and refresh dependencies

* build: allow rebuilding Go modules without snapshots
* ci: refresh workflow dependencies and pin Ubuntu 24.04

* ci: track action dependencies by major version
strip symbol and DWARF tables from Android artifacts
yiguodev and others added 9 commits October 11, 2026 21:23
…TLS#165)

* feat: decode subscription text and remove exit location probes

* test: retain forced outbound isolation coverage
Upstream brings Xray-core v26.10.21, Invoke API v3 (runXray takes the
config as xrayJson, a top-level env is ignored), the core lifecycle
lock, cgo_bridge in place of the source template, stripped smaller
binaries and the validate workflow.

Ours carried onto it: Smart failover and the latency probe with their
Invoke methods. runXray and stopXray now run end to end under one lock,
so the failover controller always matches the core; a duplicate runXray
(ErrAlreadyRunning) leaves the running tunnel and its controller alone.

Dropped: runXrayFromJson, the macOS dylib target, and the Windows/Linux
ARM64 and Apple legs from the build matrix (Cloakify ships Android,
Windows x64 and Linux x64).
Xray-core v26.10.21's certificate fix needs the binaries built with
Go 1.27.3. go.mod's go line is now that floor and every setup-go reads
it (setup-go sets GOTOOLCHAIN=local, so the go command refuses an older
toolchain). Each build leg also checks its own artifacts with
`go version -m` - the Go version and the xray-core version go.mod
requires - and the Windows DLL must import no C++ runtime. Android's
gomobile comes from go.mod instead of @latest.
@theZebco
theZebco merged commit ed31e2c into main Oct 22, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants