-
Notifications
You must be signed in to change notification settings - Fork 1
Multi-process app model #3
Copy link
Copy link
Open
Labels
Platform: iOSPriority: 0 - EssentialHighest level priority, a must have, required for Browsers, Web Apps or functional competitionHighest level priority, a must have, required for Browsers, Web Apps or functional competitionStatus: OpenOpen for discussionOpen for discussionSupport: GoogleSupport: Open Web AdvocacyTo: AppleRequests made to AppleRequests made to Apple
Metadata
Metadata
Assignees
Labels
Platform: iOSPriority: 0 - EssentialHighest level priority, a must have, required for Browsers, Web Apps or functional competitionHighest level priority, a must have, required for Browsers, Web Apps or functional competitionStatus: OpenOpen for discussionOpen for discussionSupport: GoogleSupport: Open Web AdvocacyTo: AppleRequests made to AppleRequests made to Apple
Type
Fields
Give feedbackNo fields configured for issues without a type.
Description
All modern browsers rely on multiple OS processes for security and reliability. For example this is essential to ensure that if one website crashes or hangs (uses too much memory, triggers a browser bug, or gets stuck in an infinite loop) that other websites can continue to function normally. For details see Chromium's multi-process architecture and Firefox's electrolysis project.
All modern OSes (including Windows, MacOS, Linux, Android and ChromeOS) make generic process creation and termination facilities available to applications. For example, see Android's processes and threads overview. On iOS these capabilities are restricted to the system and built-in WebKit browser engine, making any browser that doesn't use the built-in WebKit engine unreliable and insecure.
Outcome
APIs for spawning additional processes for a given application and killing processes which have been spawned. This must include at least:
Ideally, for performance optimization purposes, this would also include control over process and thread scheduling: freezing processes, setting process/thread priorities and core affinities.