Skip to content
Snippets Groups Projects
  • Ben Dean-Kawamura's avatar
    1cf71b70
    Bug 1766045 - Initial work for UniFFI JS bindings r=nika · 1cf71b70
    Ben Dean-Kawamura authored
    Generate the C++ and JS code to handle UniFFI bindings.  The WebIDL code
    is completely static and doesn't need to be generated.
    
    There's support for both synchronus and async functions, but we haven't
    decided the how we want this to be configured.  In practice, almost all
    functions will need to be async, so for now we're just forcing all
    functions to be.
    
    The `uniffi-bindgen-gecko-js` crate builds the binary that generates the
    bindings.  This binary needs to be fed a list of UDL files, the path of
    the .cpp file to generate, and the directory to generate .jsm files in
    (and also all of those arguments again, but for the test fixtures).
    This is quiet a horrible UI, but it's going to be wrapped in a mach
    command.
    
    The `uniffi-js` directory contains shared C++ code for
    `uniffi-bindgen-gecko-js`.  As much as possible we tried to put the
    functionality here and have the generated code simply forward function
    calls here.
    
    Still Todo:
      - CallbackInterfaces
      - Custom and external types
      - Datetime and TimeInterval
    
    Differential Revision: https://phabricator.services.mozilla.com/D144472
    1cf71b70
    History
    Bug 1766045 - Initial work for UniFFI JS bindings r=nika
    Ben Dean-Kawamura authored
    Generate the C++ and JS code to handle UniFFI bindings.  The WebIDL code
    is completely static and doesn't need to be generated.
    
    There's support for both synchronus and async functions, but we haven't
    decided the how we want this to be configured.  In practice, almost all
    functions will need to be async, so for now we're just forcing all
    functions to be.
    
    The `uniffi-bindgen-gecko-js` crate builds the binary that generates the
    bindings.  This binary needs to be fed a list of UDL files, the path of
    the .cpp file to generate, and the directory to generate .jsm files in
    (and also all of those arguments again, but for the test fixtures).
    This is quiet a horrible UI, but it's going to be wrapped in a mach
    command.
    
    The `uniffi-js` directory contains shared C++ code for
    `uniffi-bindgen-gecko-js`.  As much as possible we tried to put the
    functionality here and have the generated code simply forward function
    calls here.
    
    Still Todo:
      - CallbackInterfaces
      - Custom and external types
      - Datetime and TimeInterval
    
    Differential Revision: https://phabricator.services.mozilla.com/D144472