Skip to content

Commit 6b129d8

Browse files
hramosfacebook-github-bot
authored andcommitted
CocoaPods: Split React-jsc out of React-jsi (#35031)
Summary: Pull Request resolved: #35031 The React-jsi Pod was serving two purposes: building JSI, and configuring JavaScriptCore as the JS engine. By splitting the React-jsi Pod into React-jsi and React-jsi, we can start working towards de-coupling the JSI dependency from any particular JS engine. Pods that depended on React-jsi, now depend on React-jsi and React-jsc. One exception to this is React-hermes, which is only installed when Hermes is enabled, and thus does not require JavaScriptCore. Upcoming commits should take care of removing the React-jsc dependency when Hermes is enabled, but it is out of scope for this commit. Changelog: [iOS][Changed] - The JSC Runtime is now provided by the React-jsc Pod instead of React-jsi. Libraries that declared a dependency on React-jsi in order to specifically create a JSC runtime (`makeJSCRuntime()`) will need to add React-jsc to their dependencies. Reviewed By: dmytrorykun Differential Revision: D40442603 fbshipit-source-id: b9b21146b9deb401f80cfef76a87c9867754a953
1 parent 7383c00 commit 6b129d8

26 files changed

+86
-39
lines changed

Libraries/Blob/React-RCTBlob.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ Pod::Spec.new do |s|
4242
s.dependency "React-Codegen", version
4343
s.dependency "ReactCommon/turbomodule/core", version
4444
s.dependency "React-jsi", version
45+
s.dependency "React-jsc", version
4546
s.dependency "React-Core/RCTBlobHeaders", version
4647
s.dependency "React-Core/RCTWebSocket", version
4748
s.dependency "React-RCTNetwork", version
48-
s.dependency "React-jsi", version
4949
end

Libraries/Image/React-RCTImage.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Pod::Spec.new do |s|
4444
s.dependency "RCTTypeSafety", version
4545
s.dependency "ReactCommon/turbomodule/core", version
4646
s.dependency "React-jsi", version
47+
s.dependency "React-jsc", version
4748
s.dependency "React-Core/RCTImageHeaders", version
4849
s.dependency "React-RCTNetwork", version
4950
end

Libraries/LinkingIOS/React-RCTLinking.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,5 @@ Pod::Spec.new do |s|
4343
s.dependency "React-Core/RCTLinkingHeaders", version
4444
s.dependency "ReactCommon/turbomodule/core", version
4545
s.dependency "React-jsi", version
46+
s.dependency "React-jsc", version
4647
end

Libraries/NativeAnimation/React-RCTAnimation.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,6 @@ Pod::Spec.new do |s|
4343
s.dependency "RCTTypeSafety", version
4444
s.dependency "ReactCommon/turbomodule/core", version
4545
s.dependency "React-jsi", version
46+
s.dependency "React-jsc", version
4647
s.dependency "React-Core/RCTAnimationHeaders", version
4748
end

Libraries/Network/React-RCTNetwork.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,6 @@ Pod::Spec.new do |s|
4444
s.dependency "RCTTypeSafety", version
4545
s.dependency "ReactCommon/turbomodule/core", version
4646
s.dependency "React-jsi", version
47+
s.dependency "React-jsc", version
4748
s.dependency "React-Core/RCTNetworkHeaders", version
4849
end

Libraries/PushNotificationIOS/React-RCTPushNotification.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,5 @@ Pod::Spec.new do |s|
4545
s.dependency "React-Core/RCTPushNotificationHeaders", version
4646
s.dependency "ReactCommon/turbomodule/core", version
4747
s.dependency "React-jsi", version
48+
s.dependency "React-jsc", version
4849
end

Libraries/Settings/React-RCTSettings.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,6 @@ Pod::Spec.new do |s|
4444
s.dependency "RCTTypeSafety", version
4545
s.dependency "ReactCommon/turbomodule/core", version
4646
s.dependency "React-jsi", version
47+
s.dependency "React-jsc", version
4748
s.dependency "React-Core/RCTSettingsHeaders", version
4849
end

Libraries/Vibration/React-RCTVibration.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,6 @@ Pod::Spec.new do |s|
4444
s.dependency "React-Codegen", version
4545
s.dependency "ReactCommon/turbomodule/core", version
4646
s.dependency "React-jsi", version
47+
s.dependency "React-jsc", version
4748
s.dependency "React-Core/RCTVibrationHeaders", version
4849
end

React-Core.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ Pod::Spec.new do |s|
9595
s.dependency "React-cxxreact", version
9696
s.dependency "React-perflogger", version
9797
s.dependency "React-jsi", version
98+
s.dependency "React-jsc", version
9899
s.dependency "React-jsiexecutor", version
99100
s.dependency "Yoga"
100101
s.dependency "glog"

React/CoreModules/React-CoreModules.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@ Pod::Spec.new do |s|
4444
s.dependency "React-RCTImage", version
4545
s.dependency "ReactCommon/turbomodule/core", version
4646
s.dependency "React-jsi", version
47+
s.dependency "React-jsc", version
4748
end

React/FBReactNativeSpec/FBReactNativeSpec.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ Pod::Spec.new do |s|
4747
s.dependency "RCTTypeSafety", version
4848
s.dependency "React-Core", version
4949
s.dependency "React-jsi", version
50+
s.dependency "React-jsc", version
5051
s.dependency "ReactCommon/turbomodule/core", version
5152

5253
use_react_native_codegen!(s, {

ReactCommon/React-Fabric.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ Pod::Spec.new do |s|
4242
s.dependency "RCTTypeSafety", version
4343
s.dependency "ReactCommon/turbomodule/core", version
4444
s.dependency "React-jsi", version
45+
s.dependency "React-jsc", version
4546

4647
s.subspec "animations" do |ss|
4748
ss.dependency folly_dep_name, folly_version

ReactCommon/React-bridging.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,5 @@ Pod::Spec.new do |s|
4040

4141
s.dependency "RCT-Folly", folly_version
4242
s.dependency "React-jsi", version
43+
s.dependency "React-jsc", version
4344
end

ReactCommon/ReactCommon.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Pod::Spec.new do |s|
4646
ss.dependency "React-Core", version
4747
ss.dependency "React-cxxreact", version
4848
ss.dependency "React-jsi", version
49+
ss.dependency "React-jsc", version
4950
ss.dependency "RCT-Folly", folly_version
5051
s.dependency "React-logger", version
5152
ss.dependency "DoubleConversion"

ReactCommon/cxxreact/React-cxxreact.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,6 @@ Pod::Spec.new do |s|
4545
s.dependency "React-runtimeexecutor", version
4646
s.dependency "React-perflogger", version
4747
s.dependency "React-jsi", version
48+
s.dependency "React-jsc", version
4849
s.dependency "React-logger", version
4950
end

ReactCommon/hermes/React-hermes.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ boost_compiler_flags = '-Wno-documentation'
2727
Pod::Spec.new do |s|
2828
s.name = "React-hermes"
2929
s.version = version
30-
s.summary = "-" # TODO
30+
s.summary = "Hermes engine for React Native"
3131
s.homepage = "https://reactnative.dev/"
3232
s.license = package['license']
3333
s.author = "Facebook, Inc. and its affiliates"

ReactCommon/jsi/React-jsc.podspec

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Copyright (c) Meta Platforms, Inc. and affiliates.
2+
#
3+
# This source code is licensed under the MIT license found in the
4+
# LICENSE file in the root directory of this source tree.
5+
6+
require "json"
7+
8+
package = JSON.parse(File.read(File.join(__dir__, "..", "..", "package.json")))
9+
version = package['version']
10+
11+
source = { :git => 'https://github.com/facebook/react-native.git' }
12+
if version == '1000.0.0'
13+
# This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14+
source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
15+
else
16+
source[:tag] = "v#{version}"
17+
end
18+
19+
Pod::Spec.new do |s|
20+
s.name = "React-jsc"
21+
s.version = version
22+
s.summary = "JavaScriptCore engine for React Native"
23+
s.homepage = "https://reactnative.dev/"
24+
s.license = package["license"]
25+
s.author = "Facebook, Inc. and its affiliates"
26+
s.platforms = { :ios => "12.4" }
27+
s.source = source
28+
s.source_files = "JSCRuntime.{cpp,h}"
29+
s.exclude_files = "**/test/*"
30+
s.framework = "JavaScriptCore"
31+
s.dependency "React-jsi", version
32+
33+
s.default_subspec = "Default"
34+
35+
s.subspec "Default" do
36+
# no-op
37+
end
38+
39+
s.subspec "Fabric" do |ss|
40+
ss.pod_target_xcconfig = { "OTHER_CFLAGS" => "$(inherited) -DRN_FABRIC_ENABLED" }
41+
end
42+
end

ReactCommon/jsi/React-jsi.podspec

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,21 @@ else
1616
source[:tag] = "v#{version}"
1717
end
1818

19-
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
20-
folly_version = '2021.07.22.00'
21-
boost_compiler_flags = '-Wno-documentation'
22-
2319
Pod::Spec.new do |s|
2420
s.name = "React-jsi"
2521
s.version = version
26-
s.summary = "-" # TODO
22+
s.summary = "JavaScript Interface layer for React Native"
2723
s.homepage = "https://reactnative.dev/"
2824
s.license = package["license"]
2925
s.author = "Facebook, Inc. and its affiliates"
3026
s.platforms = { :ios => "12.4" }
3127
s.source = source
32-
s.source_files = "**/*.{cpp,h}"
28+
s.source_files = "jsi/*.{cpp,h}"
3329
s.exclude_files = [
3430
"jsi/JSIDynamic.{h,cpp}",
35-
"jsi/jsilib-*.{h,cpp}",
31+
"jsi/jsilib-posix.cpp",
32+
"jsi/jsilib-windows.cpp",
3633
"**/test/*"
3734
]
38-
s.framework = "JavaScriptCore"
39-
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
40-
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\"" }
4135
s.header_dir = "jsi"
42-
s.default_subspec = "Default"
43-
44-
s.dependency "boost", "1.76.0"
45-
s.dependency "DoubleConversion"
46-
s.dependency "RCT-Folly", folly_version
47-
s.dependency "glog"
48-
49-
s.subspec "Default" do
50-
# no-op
51-
end
52-
53-
s.subspec "Fabric" do |ss|
54-
ss.pod_target_xcconfig = { "OTHER_CFLAGS" => "$(inherited) -DRN_FABRIC_ENABLED" }
55-
end
5636
end

ReactCommon/jsi/React-jsidynamic.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,5 @@ Pod::Spec.new do |s|
3939
s.dependency "RCT-Folly", folly_version
4040
s.dependency "glog"
4141
s.dependency "React-jsi", version
42+
s.dependency "React-jsc", version
4243
end

ReactCommon/runtimeexecutor/React-runtimeexecutor.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ Pod::Spec.new do |s|
3333
s.header_dir = "ReactCommon"
3434

3535
s.dependency "React-jsi", version
36+
s.dependency "React-jsc", version
3637
end

packages/rn-tester/RCTTest/React-RCTTest.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@ Pod::Spec.new do |s|
4444
s.dependency "React-CoreModules", version
4545
s.dependency "ReactCommon/turbomodule/core", version
4646
s.dependency "React-jsi", version
47+
s.dependency "React-jsc", version
4748
end

scripts/cocoapods/__tests__/codegen_utils-test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@ def get_podspec_no_fabric_no_script
463463
"RCTTypeSafety": ["99.98.97"],
464464
"React-Core": ["99.98.97"],
465465
"React-jsi": ["99.98.97"],
466+
"React-jsc": ["99.98.97"],
466467
"ReactCommon/turbomodule/core": ["99.98.97"]
467468
}
468469
}

scripts/cocoapods/__tests__/fabric-test.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
require "test/unit"
77
require_relative "../fabric.rb"
8+
require_relative "../utils.rb"
89
require_relative "./test_utils/podSpy.rb"
910

1011
class FabricTest < Test::Unit::TestCase
@@ -13,6 +14,13 @@ def setup
1314
podSpy_cleanUp()
1415
end
1516

17+
def teardown
18+
podSpy_cleanUp()
19+
end
20+
21+
# ================== #
22+
# TEST - setupFabric #
23+
# ================== #
1624
def test_setupFabric_installsPods
1725
# Arrange
1826
prefix = "../.."
@@ -30,7 +38,7 @@ def check_installed_pods(prefix)
3038
check_pod("React-Fabric", :path => "#{prefix}/ReactCommon")
3139
check_pod("React-rncore", :path => "#{prefix}/ReactCommon")
3240
check_pod("React-graphics", :path => "#{prefix}/ReactCommon/react/renderer/graphics")
33-
check_pod("React-jsi/Fabric", :path => "#{prefix}/ReactCommon/jsi")
41+
check_pod("React-jsc/Fabric", :path => "#{prefix}/ReactCommon/jsi")
3442
check_pod("React-RCTFabric", :path => "#{prefix}/React", :modular_headers => true)
3543
check_pod("RCT-Folly/Fabric", :podspec => "#{prefix}/third-party-podspecs/RCT-Folly.podspec")
3644
end
@@ -45,5 +53,4 @@ def check_pod(name, path: nil, modular_headers: nil, podspec: nil)
4553

4654
assert_equal(params, expected_params)
4755
end
48-
4956
end

scripts/cocoapods/codegen_utils.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def get_react_codegen_spec(package_json_file, folly_version: '2021.07.22.00', fa
104104
"RCTTypeSafety": [version],
105105
"React-Core": [version],
106106
"React-jsi": [version],
107+
"React-jsc": [version],
107108
"ReactCommon/turbomodule/core": [version]
108109
}
109110
}

scripts/cocoapods/fabric.rb

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@
44
# LICENSE file in the root directory of this source tree.
55

66

7-
# It sets up the faric dependencies.
7+
# It sets up the Fabric dependencies.
88
#
9-
# @parameter prefix: prefix to use to reach react-native
10-
# @parameter new_arch_enabled: whether the new arch is enabled or not
11-
# @parameter codegen_output_dir: the directory where the code is generated
12-
def setup_fabric!(prefix)
13-
pod 'React-Fabric', :path => "#{prefix}/ReactCommon"
14-
pod 'React-rncore', :path => "#{prefix}/ReactCommon"
15-
pod 'React-graphics', :path => "#{prefix}/ReactCommon/react/renderer/graphics"
16-
pod 'React-jsi/Fabric', :path => "#{prefix}/ReactCommon/jsi"
17-
pod 'React-RCTFabric', :path => "#{prefix}/React", :modular_headers => true
18-
pod 'RCT-Folly/Fabric', :podspec => "#{prefix}/third-party-podspecs/RCT-Folly.podspec"
9+
# @parameter react_native_path: relative path to react-native
10+
def setup_fabric!(react_native_path)
11+
pod 'React-Fabric', :path => "#{react_native_path}/ReactCommon"
12+
pod 'React-rncore', :path => "#{react_native_path}/ReactCommon"
13+
pod 'React-graphics', :path => "#{react_native_path}/ReactCommon/react/renderer/graphics"
14+
pod 'React-jsc/Fabric', :path => "#{react_native_path}/ReactCommon/jsi"
15+
pod 'React-RCTFabric', :path => "#{react_native_path}/React", :modular_headers => true
16+
pod 'RCT-Folly/Fabric', :podspec => "#{react_native_path}/third-party-podspecs/RCT-Folly.podspec"
1917
end

scripts/react_native_pods.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def use_react_native! (
9595
pod 'React-bridging', :path => "#{prefix}/ReactCommon"
9696
pod 'React-cxxreact', :path => "#{prefix}/ReactCommon/cxxreact"
9797
pod 'React-jsi', :path => "#{prefix}/ReactCommon/jsi"
98+
pod 'React-jsc', :path => "#{prefix}/ReactCommon/jsi"
9899
pod 'React-jsidynamic', :path => "#{prefix}/ReactCommon/jsi"
99100
pod 'React-jsiexecutor', :path => "#{prefix}/ReactCommon/jsiexecutor"
100101
pod 'React-jsinspector', :path => "#{prefix}/ReactCommon/jsinspector"

0 commit comments

Comments
 (0)