Skip to content

Use in-process GIO for Linux proxy settings - #22

Draft
Christof Marti (chrmarti) wants to merge 4 commits into
mainfrom
use-in-process-gio
Draft

Use in-process GIO for Linux proxy settings#22
Christof Marti (chrmarti) wants to merge 4 commits into
mainfrom
use-in-process-gio

Conversation

@chrmarti

@chrmarti Christof Marti (chrmarti) commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Replace the Linux dconf / gsettings child processes with runtime-loaded, in-process GIO configuration reads and change notifications.

  • load GLib, GObject, and GIO dynamically so headless and musl environments do not gain hard system-library dependencies
  • read org.gnome.system.proxy through typed GSettings APIs
  • dispatch root and child-schema changes on a private GLib main-context thread
  • stop and join the watcher cleanly without child-process or inherited-file-descriptor handling
  • raise the repository MSRV to Rust 1.94 and enforce it in CI
  • align the Rust crates, npm facade, and all platform packages on version 0.5.0

Validation

  • full Rust test suite with the native PAC backend
  • isolated dbus-run-session tests for typed reads and root/child notifications
  • Rust 1.94 checks for all root features/targets and the Node addon
  • Linux Node addon build and smoke test
  • verified no hard ELF dependency on GIO, GLib, or GObject
  • formatting, Clippy, lockfile, package manifest, and third-party notice checks

Load GLib/GIO at runtime for typed proxy configuration reads and change notifications on a private main-context thread, removing the dconf and gsettings child processes without adding hard system-library dependencies. Raise the repository MSRV to Rust 1.94 and enforce it in CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Align the npm facade and all platform packages on version 0.5.0 for the in-process GIO release.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings August 25, 2026 15:20
@chrmarti
Christof Marti (chrmarti) marked this pull request as draft August 25, 2026 15:22

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Replaces Linux proxy subprocesses with runtime-loaded GIO while avoiding hard GLib dependencies.

Changes:

  • Adds typed GSettings reads and in-process change watching.
  • Raises MSRV to Rust 1.94 and adds CI enforcement.
  • Prepares npm packages for version 0.5.0.
Show a summary per file
File Description
src/platform/gio.rs Implements dynamic GIO access and watching.
src/platform/linux.rs Integrates GIO proxy configuration.
src/platform/mod.rs Updates watcher documentation.
README.md Documents Linux GIO behavior and MSRV.
CHANGELOG.md Records the 0.5.0 changes.
Cargo.toml Raises MSRV and adds libloading.
Cargo.lock Locks libloading.
pac-wasm-guest/Cargo.toml Raises guest MSRV.
npm/native/Cargo.toml Raises addon MSRV.
npm/native/Cargo.lock Updates addon dependencies.
package.json Bumps facade and platform dependencies.
npm/platforms/darwin-arm64/package.json Bumps package version.
npm/platforms/darwin-x64/package.json Bumps package version.
npm/platforms/linux-arm-gnueabihf/package.json Bumps package version.
npm/platforms/linux-arm64-gnu/package.json Bumps package version.
npm/platforms/linux-arm64-musl/package.json Bumps package version.
npm/platforms/linux-x64-gnu/package.json Bumps package version.
npm/platforms/linux-x64-musl/package.json Bumps package version.
npm/platforms/win32-arm64-msvc/package.json Bumps package version.
npm/platforms/win32-x64-msvc/package.json Bumps package version.
ThirdPartyNotices.txt Adds the libloading license.
.github/workflows/ci.yml Adds Rust 1.94 MSRV checks.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 20/22 changed files
  • Comments generated: 3
  • Review effort level: Balanced

Comment thread src/platform/linux.rs
Comment thread src/platform/linux.rs
Comment thread README.md
Use the repository release version for the root crate, Node addon, and PAC guest, and refresh their lockfile package records.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make the sibling GIO module path explicit, run all OS integration tests in the dedicated CI job, refresh crate documentation, and regenerate notices for version 0.5.0.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@chrmarti
Christof Marti (chrmarti) marked this pull request as ready for review August 25, 2026 16:00
@chrmarti
Christof Marti (chrmarti) marked this pull request as draft August 25, 2026 16:01
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.

2 participants