Skip to content

Move Kernel into own process as new root process #430

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
planetchili opened this issue Mar 18, 2025 · 2 comments
Open

Move Kernel into own process as new root process #430

planetchili opened this issue Mar 18, 2025 · 2 comments
Assignees

Comments

@planetchili
Copy link
Collaborator

Overlay Kernel was originally situated in the Render process since that contains the V8 engine to which it has the greatest coupling. Moving it to the root process will likely fix some recent issues with shutdown of CEF processes. This also will theoretically make it possible to run AppCef without elevation, improving UX and security.

Challenges are that now all communication between frontend and the Kernel need to be serialized for IPC. The CefValue JSON-like structures will not be usable because the new Kernel root process should not have dependencies on CEF. Will need a new transfer format; considering JSON text + Nlohmann or reflect:: struct based serialization with Cereal.

@planetchili
Copy link
Collaborator Author

planetchili commented Apr 15, 2025

  • Create roundtrip V8 <=> struct conversion utility using reflect::
  • Move action server and client code to interprocess
  • Enable multiple strand writing to pipes with coro mutex
  • Decouple session context and improve lookup
  • Create symmetric action connector w/ dual duplex pipe connection protocol
  • Implement clean retained shutdown of client/server ioctx
  • Implement detached event dispatch
  • Implement detached dispatch with continuation
  • Migrate signals to action event system
  • Isolate hotkey system in cef render proc
  • Implement invocation manager to translate endpoint names to static dispatch calls
  • std::async for render process tasks where possible
  • Implement simple retained action
  • Build static struct for V8 translation binding in PushSpecification action
  • Convert MakeOverlaySpec to use that static Response structure
  • Migrate all possible action endpoints away from Kernel to renderproc
  • Finalized in-place IPC mechanism migration
  • Setup KernelProcess project
  • Winmain in kproc launching appcef as child
  • Migrate actions from rproc kernel thread to kproc
  • Icons and window grouping for kproc
  • Installer changes for kproc
  • Signed build script for kproc
  • Verify unelevated z-band operation
  • Separate CLI for cef and kproc
  • Separate logging setup for kproc and cef
  • Final cleanup and logging tasks

@planetchili
Copy link
Collaborator Author

Work continued with small improvement in #436

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

No branches or pull requests

1 participant