Code Monkey home page Code Monkey logo

v8-jsi's Introduction

React Native V8 JSI adapter

A V8 adapter implemention of the JSI interface for the react-native framework.

Build Status

Building

Windows

Initial Windows Build Setup
  1. Download and Install
    Windows 10 Windows SDK:
    https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
    Note: Windows SDK has to be Windows 10 version, NOT Windows 11
  2. Download and Install
    Microsoft Visual C++ Redistributable x64
    Microsoft Visual C++ Redistributable x86
    https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist
  3. Download and Install
    Visual Studio 2022
    https://visualstudio.microsoft.com/vs
    In Visual Studio Setup, Select the following Individual Components:
    • MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)
    • C++ ATL for latest v143 build tools with Spectre Mitigations (x86 & x64)
  4. Enable PowerShell script execution
    Launch Cmd as Administrator
    powershell Set-ExecutionPolicy RemoteSigned
  5. Perform Initial Build
    Launch Cmd as Standard user, NOT Administrator
    From V8-Jsi Repo directory:
    powershell ./localbuild.ps1
    
Windows Build

To build Win32 X64 Debug:

Launch Cmd as Standard user, NOT Administrator
From V8-Jsi Repo Directory:

powershell ./localbuild.ps1 -NoSetup

To build the specific platform and flavor, use appropriate build flags:

powershell ./localbuild.ps1 -NoSetup -Platform x86 -Configuration Release 

Android

From the android directory, run ./localbuild.sh in a bash terminal; by default, this will build the x64 debug version of the binary for Android. To build for other platforms and flavors, supply the --platform (or -p) and the --flavor (or -f) flags, like so:

./localbuild.sh --platform <platform-name> --flavor <flavor-name>

The following platforms and flavors are supported:

  • <platform-name>: x64 (default), x86, arm, arm64
  • <flavor-name> debug (default), ship

This build requires Ubuntu 18.04 or below, or Debian 8 or later.

Currently, the Android version builds an older release of V8 (7.0.276.32) and uses Android NDK r21b and the JSI headers from React Native 0.66 (see build.config). The Windows version builds V8 9.5 and uses the JSI headers from React Native 0.65.5. Android also currently uses a different V8Runtime (V8Runtime.h) than Windows (V8JsiRuntime.h). Future Android releases will sync the Android dependencies with Windows and support newer Linux versions.

Building with WSL2 on Windows 10/11
  • Enable Windows Subsystem for Linux
  • Install debian: wsl --install -d Debian
  • Install minimal dependencies on the Debian VM: sudo apt install pkg-config python python3 curl unzip
  • Build with ./localbuild.sh (as above)
[EXPERIMENTAL!] Building the main code with WSL2 on Windows 10/11
  • Enable Windows Subsystem for Linux
  • Install debian: wsl --install -d Debian
  • Install PowerShell in the Debian VM
  • Install minimal dependencies on the Debian VM: sudo apt install lsb-release
  • Make sure you have at least 15Gb of disk space on the drive where the WSL image lives (usually C:)
  • Build with pwsh ./localbuild.ps1 -AppPlatform android
  • If setup is completed succesfully, build incrementally with pwsh ./localbuild.ps1 -AppPlatform android -NoSetup

Out-of-sync issues

Until the JSI headers find a more suitable home, they're currently duplicated between the various repos. Code in jsi\jsi should be synchronized with the matching version of JSI from react-native (from https://github.com/facebook/hermes/tree/master/API/jsi/jsi).

Build script patches

To regenerate after manual fix-ups, run:

  • git diff --output=..\..\..\..\scripts\patch\build.diff --ignore-cr-at-eol from \build\v8build\v8\build\.
  • git diff --output=..\..\..\scripts\patch\src.diff --ignore-cr-at-eol from \build\v8build\v8\.
  • git diff --output=..\..\..\..\..\scripts\patch\zlib.diff --ignore-cr-at-eol from \build\v8build\v8\third_party\zlib\.

Contributing

See Contributing guidelines for how to setup your fork of the repo and start a PR to contribute to React Native V8 JSI adapter.

License

The V8 JSI adapter, and all newly contributed code is provided under the MIT License. Portions of the JSI interface derived from Hermes are copyright Facebook.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

v8-jsi's People

Contributors

tudorms avatar junielkatarn avatar shivenmian avatar mganandraj avatar vmoroz avatar dannyvv avatar microsoftopensource avatar hansenyy avatar chrisfromwork avatar nikoari avatar tatianakapos avatar microsoft-github-operations[bot] avatar rgerd avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.