Skip to content
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

Add queueMicrotask method to JSI #1331

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Mar 4, 2024

  1. Add queueMicrotask method to JSI

    Summary:
    Changelog: [internal]
    
    ## Context
    
    Microtasks are an important aspect of JavaScript and they will become increasingly important in the hosts where we're currently using JSI.
    
    For example, React Native is going to adopt an event loop processing model similar to the one on the Web, which means it would need the ability to schedule and execute microtasks in every iteration of the loop. See react-native-community/discussions-and-proposals#744 for details.
    
    JSI already has a method to execute all pending microtasks (`drainMicrotasks`) but without a method to schedule microtasks this is incomplete.
    
    We're currently testing microtasks with Hermes using an internal method to schedule microtasks (`HermesInternal.enqueueJob`) but we need a method in JSI so this also works in other runtimes like JSC and V8.
    
    ## Changes
    
    This adds the `queueMicrotask` to the Runtime API in JSI so we have symmetric API for microtasks and we can implement the necessary functionality.
    
    The expectation for JSI implementations is to queue microtasks from this method and from built-ins like Promises and async functions in the same queue, and not drain that queue until explicitly done via `drainMicrotasks` in JSI.
    
    This also modifies Hermes and JSC to provide stubs for those methods, and the actual implementation will be done in following diffs.
    
    Reviewed By: neildhar
    
    Differential Revision: D54302536
    rubennorte authored and facebook-github-bot committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    2163e98 View commit details
    Browse the repository at this point in the history