react-native 0.75.0-rc.3 → 0.75.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +1 -1
  2. package/Libraries/Blob/React-RCTBlob.podspec +1 -1
  3. package/Libraries/Core/ReactNativeVersion.js +1 -1
  4. package/Libraries/Image/RCTImageLoader.mm +2 -6
  5. package/Libraries/Image/React-RCTImage.podspec +1 -1
  6. package/Libraries/LinkingIOS/React-RCTLinking.podspec +1 -1
  7. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -1
  8. package/Libraries/Network/RCTNetworkTask.mm +4 -3
  9. package/Libraries/Network/React-RCTNetwork.podspec +1 -1
  10. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +1 -1
  11. package/Libraries/Settings/React-RCTSettings.podspec +1 -1
  12. package/Libraries/Text/React-RCTText.podspec +1 -1
  13. package/Libraries/TypeSafety/RCTTypeSafety.podspec +1 -1
  14. package/Libraries/Utilities/Platform.android.js +1 -1
  15. package/Libraries/Utilities/Platform.d.ts +1 -1
  16. package/Libraries/Utilities/Platform.flow.js +2 -2
  17. package/Libraries/Utilities/Platform.ios.js +1 -1
  18. package/Libraries/Vibration/React-RCTVibration.podspec +1 -1
  19. package/React/Base/RCTVersion.m +1 -1
  20. package/React/CoreModules/RCTPlatform.mm +1 -3
  21. package/React/CoreModules/React-CoreModules.podspec +1 -1
  22. package/React/React-RCTFabric.podspec +1 -1
  23. package/React/Views/RCTComponentData.m +11 -3
  24. package/React-Core.podspec +1 -1
  25. package/ReactAndroid/api/ReactAndroid.api +2 -0
  26. package/ReactAndroid/build.gradle.kts +28 -0
  27. package/ReactAndroid/cmake-utils/ReactNative-application.cmake +5 -0
  28. package/ReactAndroid/gradle.properties +1 -1
  29. package/ReactAndroid/src/main/java/com/facebook/hermes/unicode/AndroidUnicodeUtils.kt +3 -0
  30. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.kt +4 -1
  31. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Dynamic.kt +4 -4
  32. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java +64 -0
  33. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableMap.kt +2 -2
  34. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeMap.kt +24 -24
  35. package/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.java +23 -0
  36. package/ReactAndroid/src/main/java/com/facebook/react/modules/i18nmanager/I18nUtil.kt +11 -0
  37. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  38. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +3 -1
  39. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -3
  40. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LengthPercentage.kt +2 -2
  41. package/ReactAndroid/src/main/java/com/facebook/react/views/imagehelper/ResourceDrawableIdHelper.kt +10 -0
  42. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +1 -0
  43. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +3 -3
  44. package/ReactApple/Libraries/RCTFoundation/RCTDeprecation/RCTDeprecation.podspec +1 -1
  45. package/ReactCommon/React-Fabric.podspec +1 -1
  46. package/ReactCommon/React-FabricComponents.podspec +1 -1
  47. package/ReactCommon/React-FabricImage.podspec +1 -1
  48. package/ReactCommon/React-Mapbuffer.podspec +1 -1
  49. package/ReactCommon/React-nativeconfig.podspec +1 -1
  50. package/ReactCommon/React-rncore.podspec +1 -1
  51. package/ReactCommon/ReactCommon.podspec +1 -1
  52. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -1
  53. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  54. package/ReactCommon/hermes/React-hermes.podspec +1 -1
  55. package/ReactCommon/hermes/executor/React-jsitracing.podspec +1 -1
  56. package/ReactCommon/jserrorhandler/React-jserrorhandler.podspec +1 -1
  57. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -1
  58. package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -1
  59. package/ReactCommon/react/debug/React-debug.podspec +1 -1
  60. package/ReactCommon/react/featureflags/React-featureflags.podspec +1 -1
  61. package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
  62. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -1
  63. package/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec +1 -1
  64. package/ReactCommon/react/nativemodule/featureflags/React-featureflagsnativemodule.podspec +1 -1
  65. package/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec +1 -1
  66. package/ReactCommon/react/nativemodule/microtasks/React-microtasksnativemodule.podspec +1 -1
  67. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -1
  68. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -1
  69. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm +4 -3
  70. package/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec +1 -1
  71. package/ReactCommon/react/renderer/core/ShadowNode.cpp +6 -0
  72. package/ReactCommon/react/renderer/core/ShadowNode.h +5 -0
  73. package/ReactCommon/react/renderer/debug/React-rendererdebug.podspec +1 -1
  74. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -1
  75. package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +1 -1
  76. package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +1 -1
  77. package/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.cpp +1 -1
  78. package/ReactCommon/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +4 -4
  79. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +65 -0
  80. package/ReactCommon/react/renderer/runtimescheduler/tests/SchedulerPriorityTest.cpp +2 -2
  81. package/ReactCommon/react/runtime/React-RuntimeCore.podspec +1 -1
  82. package/ReactCommon/react/runtime/React-RuntimeHermes.podspec +1 -1
  83. package/ReactCommon/react/runtime/platform/ios/React-RuntimeApple.podspec +2 -1
  84. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTInstance.mm +2 -2
  85. package/ReactCommon/react/utils/React-utils.podspec +1 -1
  86. package/ReactCommon/reactperflogger/React-perflogger.podspec +2 -1
  87. package/package.json +9 -9
  88. package/scripts/cocoapods/helpers.rb +4 -0
  89. package/scripts/cocoapods/new_architecture.rb +10 -23
  90. package/scripts/cocoapods/privacy_manifest_utils.rb +14 -5
  91. package/scripts/cocoapods/spm.rb +94 -0
  92. package/scripts/react_native_pods.rb +18 -0
  93. package/sdks/hermesc/osx-bin/hermes +0 -0
  94. package/sdks/hermesc/osx-bin/hermesc +0 -0
  95. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  96. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +1 -1
  97. package/src/private/specs/modules/NativePlatformConstantsIOS.js +1 -1
  98. package/third-party-podspecs/RCT-Folly.podspec +1 -1
  99. package/third-party-podspecs/fmt.podspec +1 -1
  100. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.kt +0 -55
  101. package/ReactCommon/react/runtime/BridgelessJSCallInvoker.cpp +0 -29
  102. package/ReactCommon/react/runtime/BridgelessJSCallInvoker.h +0 -30
@@ -90,7 +90,9 @@ public class BridgelessCatalystInstance(private val reactHost: ReactHostImpl) :
90
90
  override public val javaScriptContextHolder: JavaScriptContextHolder
91
91
  get() = reactHost.getJavaScriptContextHolder()!!
92
92
 
93
- override public val jSCallInvokerHolder: CallInvokerHolder
93
+ @Suppress("INAPPLICABLE_JVM_NAME")
94
+ @get:JvmName("getJSCallInvokerHolder") // This is needed to keep backward compatibility
95
+ override public val jsCallInvokerHolder: CallInvokerHolder
94
96
  get() = reactHost.getJSCallInvokerHolder()!!
95
97
 
96
98
  override public val nativeMethodCallInvokerHolder: NativeMethodCallInvokerHolder
@@ -24,7 +24,7 @@ internal object FilterHelper {
24
24
  filters ?: return null
25
25
  var chainedEffects: RenderEffect? = null
26
26
  for (i in 0 until filters.size()) {
27
- val filter = filters.getMap(i).getEntryIterator().next()
27
+ val filter = filters.getMap(i).entryIterator.next()
28
28
  val filterName = filter.key
29
29
  val amount = (filter.value as Double).toFloat()
30
30
 
@@ -51,7 +51,7 @@ internal object FilterHelper {
51
51
  // New ColorMatrix objects represent the identity matrix
52
52
  val resultColorMatrix = ColorMatrix()
53
53
  for (i in 0 until filters.size()) {
54
- val filter = filters.getMap(i).getEntryIterator().next()
54
+ val filter = filters.getMap(i).entryIterator.next()
55
55
  val filterName = filter.key
56
56
  val amount = (filter.value as Double).toFloat()
57
57
 
@@ -78,7 +78,7 @@ internal object FilterHelper {
78
78
  public fun isOnlyColorMatrixFilters(filters: ReadableArray?): Boolean {
79
79
  filters ?: return false
80
80
  for (i in 0 until filters.size()) {
81
- val filter = filters.getMap(i).getEntryIterator().next()
81
+ val filter = filters.getMap(i).entryIterator.next()
82
82
  val filterName = filter.key
83
83
  if (filterName == "blur") {
84
84
  return false
@@ -25,7 +25,7 @@ public class LengthPercentage(
25
25
  public companion object {
26
26
  @JvmStatic
27
27
  public fun setFromDynamic(dynamic: Dynamic): LengthPercentage? {
28
- return when (dynamic.getType()) {
28
+ return when (dynamic.type) {
29
29
  ReadableType.Number -> {
30
30
  val value = dynamic.asDouble()
31
31
  if (value >= 0f) {
@@ -54,7 +54,7 @@ public class LengthPercentage(
54
54
  }
55
55
  }
56
56
  else -> {
57
- FLog.w(ReactConstants.TAG, "Unsupported type for radius property: ${dynamic.getType()}")
57
+ FLog.w(ReactConstants.TAG, "Unsupported type for radius property: ${dynamic.type}")
58
58
  null
59
59
  }
60
60
  }
@@ -67,5 +67,15 @@ public class ResourceDrawableIdHelper private constructor() {
67
67
  @JvmStatic
68
68
  public val instance: ResourceDrawableIdHelper
69
69
  get() = resourceDrawableIdHelper
70
+
71
+ /**
72
+ * We're just re-adding this to reduce a breaking change for libraries in React Native 0.75.
73
+ *
74
+ * @deprecated Use instance instead
75
+ */
76
+ @Deprecated("Use .instance instead, this API is for backward compat", ReplaceWith("instance"))
77
+ @JvmName(
78
+ "DEPRECATED\$getInstance") // We intentionally don't want to expose this accessor to Java.
79
+ public fun getInstance(): ResourceDrawableIdHelper = instance
70
80
  }
71
81
  }
@@ -24,6 +24,7 @@ target_link_libraries(
24
24
  rninstance
25
25
  fabricjni
26
26
  react_featureflagsjni
27
+ react_render_runtimescheduler
27
28
  turbomodulejsijni
28
29
  fb
29
30
  jsi
@@ -20,7 +20,7 @@
20
20
  #include <jsireact/JSIExecutor.h>
21
21
  #include <react/jni/JRuntimeExecutor.h>
22
22
  #include <react/jni/JSLogging.h>
23
- #include <react/runtime/BridgelessJSCallInvoker.h>
23
+ #include <react/renderer/runtimescheduler/RuntimeSchedulerCallInvoker.h>
24
24
  #include <react/runtime/BridgelessNativeMethodCallInvoker.h>
25
25
  #include "JavaTimerRegistry.h"
26
26
 
@@ -90,8 +90,8 @@ JReactInstance::JReactInstance(
90
90
 
91
91
  auto unbufferedRuntimeExecutor = instance_->getUnbufferedRuntimeExecutor();
92
92
  // Set up the JS and native modules call invokers (for TurboModules)
93
- auto jsInvoker =
94
- std::make_unique<BridgelessJSCallInvoker>(unbufferedRuntimeExecutor);
93
+ auto jsInvoker = std::make_unique<RuntimeSchedulerCallInvoker>(
94
+ instance_->getRuntimeScheduler());
95
95
  jsCallInvokerHolder_ = jni::make_global(
96
96
  CallInvokerHolder::newObjectCxxArgs(std::move(jsInvoker)));
97
97
  auto nativeMethodCallInvoker =
@@ -19,7 +19,7 @@ Pod::Spec.new do |s|
19
19
  s.source_files = ["Exported/*.h", "RCTDeprecation.m"]
20
20
  s.pod_target_xcconfig = {
21
21
  "DEFINES_MODULE" => "YES",
22
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
22
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
23
23
  }
24
24
  s.compiler_flags = "-Wnullable-to-nonnull-conversion -Wnullability-completeness"
25
25
  end
@@ -35,7 +35,7 @@ Pod::Spec.new do |s|
35
35
  s.source = source
36
36
  s.source_files = "dummyFile.cpp"
37
37
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
38
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
38
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
39
39
  "DEFINES_MODULE" => "YES" }
40
40
 
41
41
  if ENV['USE_FRAMEWORKS']
@@ -54,7 +54,7 @@ Pod::Spec.new do |s|
54
54
  s.source = source
55
55
  s.source_files = "dummyFile.cpp"
56
56
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
57
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
57
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
58
58
  "DEFINES_MODULE" => "YES",
59
59
  "HEADER_SEARCH_PATHS" => header_search_path.join(" "),
60
60
  }
@@ -56,7 +56,7 @@ Pod::Spec.new do |s|
56
56
  s.header_dir = "react/renderer/components/image"
57
57
  s.compiler_flags = folly_compiler_flags
58
58
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
59
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
59
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
60
60
  "HEADER_SEARCH_PATHS" => header_search_path.join(" ")
61
61
  }
62
62
 
@@ -30,7 +30,7 @@ Pod::Spec.new do |s|
30
30
  s.public_header_files = 'react/renderer/mapbuffer/*.h'
31
31
  s.header_dir = "react/renderer/mapbuffer"
32
32
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\"", "USE_HEADERMAP" => "YES",
33
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
33
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
34
34
 
35
35
  if ENV['USE_FRAMEWORKS']
36
36
  s.header_mappings_dir = './'
@@ -27,7 +27,7 @@ Pod::Spec.new do |s|
27
27
  s.source = source
28
28
  s.source_files = "react/config/*.{m,mm,cpp,h}"
29
29
  s.header_dir = "react/config"
30
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
30
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
31
31
 
32
32
  if ENV['USE_FRAMEWORKS']
33
33
  s.header_mappings_dir = './'
@@ -48,5 +48,5 @@ Pod::Spec.new do |s|
48
48
  s.source_files = "dummyFile.cpp"
49
49
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES",
50
50
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
51
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
51
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
52
52
  end
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
37
37
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
38
38
  "USE_HEADERMAP" => "YES",
39
39
  "DEFINES_MODULE" => "YES",
40
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
40
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
41
41
  "GCC_WARN_PEDANTIC" => "YES" }
42
42
  if ENV['USE_FRAMEWORKS']
43
43
  s.header_mappings_dir = './'
@@ -36,7 +36,7 @@ Pod::Spec.new do |s|
36
36
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
37
37
  s.pod_target_xcconfig = {
38
38
  "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers\"",
39
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
39
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
40
40
  }
41
41
  s.header_dir = "cxxreact"
42
42
 
@@ -18,7 +18,7 @@ constexpr struct {
18
18
  int32_t Major = 0;
19
19
  int32_t Minor = 75;
20
20
  int32_t Patch = 0;
21
- std::string_view Prerelease = "rc.3";
21
+ std::string_view Prerelease = "rc.5";
22
22
  } ReactNativeVersion;
23
23
 
24
24
  } // namespace facebook::react
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
37
37
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
38
38
  s.pod_target_xcconfig = {
39
39
  "HEADER_SEARCH_PATHS" => "\"${PODS_ROOT}/hermes-engine/destroot/include\" \"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
40
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
40
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
41
41
  }
42
42
  s.header_dir = "reacthermes"
43
43
  s.dependency "React-cxxreact", version
@@ -29,7 +29,7 @@ Pod::Spec.new do |s|
29
29
  s.header_dir = "."
30
30
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"${PODS_TARGET_SRCROOT}/../..\"",
31
31
  "USE_HEADERMAP" => "YES",
32
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
32
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
33
33
  "GCC_WARN_PEDANTIC" => "YES" }
34
34
 
35
35
  if ENV['USE_FRAMEWORKS']
@@ -36,7 +36,7 @@ Pod::Spec.new do |s|
36
36
  s.source_files = "JsErrorHandler.{cpp,h}"
37
37
  s.pod_target_xcconfig = {
38
38
  "USE_HEADERMAP" => "YES",
39
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
39
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
40
40
  }
41
41
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
42
42
 
@@ -33,7 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.source_files = "jsireact/*.{cpp,h}"
34
34
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
35
35
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
36
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
36
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
37
37
  s.header_dir = "jsireact"
38
38
 
39
39
  s.dependency "React-cxxreact", version
@@ -38,7 +38,7 @@ Pod::Spec.new do |s|
38
38
  s.compiler_flags = folly_compiler_flags
39
39
  s.pod_target_xcconfig = {
40
40
  "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
41
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
41
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
42
42
  "DEFINES_MODULE" => "YES"
43
43
  }.merge!(use_frameworks ? {
44
44
  "PUBLIC_HEADERS_FOLDER_PATH" => "#{module_name}.framework/Headers/#{header_dir}"
@@ -27,7 +27,7 @@ Pod::Spec.new do |s|
27
27
  s.source = source
28
28
  s.source_files = "**/*.{cpp,h}"
29
29
  s.header_dir = "react/debug"
30
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
30
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
31
31
  "DEFINES_MODULE" => "YES" }
32
32
 
33
33
  if ENV['USE_FRAMEWORKS']
@@ -33,7 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.source = source
34
34
  s.source_files = "*.{cpp,h}"
35
35
  s.header_dir = "react/featureflags"
36
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
36
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
37
37
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
38
38
  "DEFINES_MODULE" => "YES" }
39
39
 
@@ -36,7 +36,7 @@ Pod::Spec.new do |s|
36
36
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
37
37
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
38
38
  "USE_HEADERMAP" => "YES",
39
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
39
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
40
40
  "GCC_WARN_PEDANTIC" => "YES" }
41
41
  if ENV['USE_FRAMEWORKS']
42
42
  s.header_mappings_dir = './'
@@ -33,7 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.source = source
34
34
  s.source_files = "*.{cpp,h}"
35
35
  s.header_dir = "react/nativemodule/defaults"
36
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
36
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
37
37
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
38
38
  "DEFINES_MODULE" => "YES" }
39
39
 
@@ -33,7 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.source = source
34
34
  s.source_files = "*.{cpp,h}"
35
35
  s.header_dir = "react/nativemodule/dom"
36
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
36
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
37
37
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
38
38
  "DEFINES_MODULE" => "YES" }
39
39
 
@@ -33,7 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.source = source
34
34
  s.source_files = "*.{cpp,h}"
35
35
  s.header_dir = "react/nativemodule/featureflags"
36
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
36
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
37
37
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
38
38
  "DEFINES_MODULE" => "YES" }
39
39
 
@@ -33,7 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.source = source
34
34
  s.source_files = "*.{cpp,h}"
35
35
  s.header_dir = "react/nativemodule/idlecallbacks"
36
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
36
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
37
37
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
38
38
  "DEFINES_MODULE" => "YES" }
39
39
 
@@ -33,7 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.source = source
34
34
  s.source_files = "*.{cpp,h}"
35
35
  s.header_dir = "react/nativemodule/microtasks"
36
- s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
36
+ s.pod_target_xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
37
37
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
38
38
  "DEFINES_MODULE" => "YES" }
39
39
 
@@ -47,7 +47,7 @@ Pod::Spec.new do |s|
47
47
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
48
48
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => header_search_paths,
49
49
  "USE_HEADERMAP" => "YES",
50
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
50
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
51
51
  "GCC_WARN_PEDANTIC" => "YES" }
52
52
  if ENV['USE_FRAMEWORKS']
53
53
  s.header_mappings_dir = './'
@@ -43,7 +43,7 @@ Pod::Spec.new do |s|
43
43
  s.header_dir = "react/performance/timeline"
44
44
  s.exclude_files = "tests"
45
45
  s.pod_target_xcconfig = {
46
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
46
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
47
47
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')}
48
48
 
49
49
  if ENV['USE_FRAMEWORKS']
@@ -125,9 +125,10 @@ static const std::shared_ptr<void> constructCoordinator(
125
125
  bridgeModuleDecorator = unwrapManagedObject(optionalModuleDecorator.value());
126
126
  }
127
127
 
128
- RCTComponentData *componentData = [[RCTComponentData alloc] initWithManagerClass:viewManagerClass
129
- bridge:bridge
130
- eventDispatcher:eventDispatcher];
128
+ RCTComponentData *componentData =
129
+ [[RCTComponentData alloc] initWithManagerClass:viewManagerClass
130
+ bridge:bridge != nil ? bridge : (RCTBridge *)bridgeProxy
131
+ eventDispatcher:eventDispatcher];
131
132
  return wrapManagedObject([[RCTLegacyViewManagerInteropCoordinator alloc]
132
133
  initWithComponentData:componentData
133
134
  bridge:bridge
@@ -35,7 +35,7 @@ Pod::Spec.new do |s|
35
35
  s.header_dir = "react/renderer/consistency"
36
36
  s.exclude_files = "tests"
37
37
  s.pod_target_xcconfig = {
38
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
38
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
39
39
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')}
40
40
 
41
41
  if ENV['USE_FRAMEWORKS']
@@ -410,4 +410,10 @@ SharedDebugStringConvertibleList ShadowNode::getDebugProps() const {
410
410
  }
411
411
  #endif
412
412
 
413
+ // Explicitly define destructors here, as they need to exist in order to act as
414
+ // a "key function" for the ShadowNodeWrapper class -- this allows for RTTI to
415
+ // work properly across dynamic library boundaries (i.e. dynamic_cast that is
416
+ // used by getNativeState method)
417
+ ShadowNodeWrapper::~ShadowNodeWrapper() = default;
418
+
413
419
  } // namespace facebook::react
@@ -282,6 +282,11 @@ struct ShadowNodeWrapper : public jsi::NativeState {
282
282
  explicit ShadowNodeWrapper(ShadowNode::Shared shadowNode)
283
283
  : shadowNode(std::move(shadowNode)) {}
284
284
 
285
+ // The below method needs to be implemented out-of-line in order for the class
286
+ // to have at least one "key function" (see
287
+ // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#vague-vtable)
288
+ ~ShadowNodeWrapper() override;
289
+
285
290
  ShadowNode::Shared shadowNode;
286
291
  };
287
292
 
@@ -45,7 +45,7 @@ Pod::Spec.new do |s|
45
45
  s.header_dir = "react/renderer/debug"
46
46
  s.exclude_files = "tests"
47
47
  s.pod_target_xcconfig = {
48
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
48
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
49
49
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' '),
50
50
  "DEFINES_MODULE" => "YES"
51
51
  }
@@ -57,7 +57,7 @@ Pod::Spec.new do |s|
57
57
  s.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
58
58
  "HEADER_SEARCH_PATHS" => header_search_paths.join(" "),
59
59
  "DEFINES_MODULE" => "YES",
60
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20" }
60
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
61
61
 
62
62
  s.dependency "glog"
63
63
  s.dependency "RCT-Folly/Fabric", folly_version
@@ -50,7 +50,7 @@ Pod::Spec.new do |s|
50
50
  s.pod_target_xcconfig = {
51
51
  "USE_HEADERMAP" => "NO",
52
52
  "HEADER_SEARCH_PATHS" => header_search_paths,
53
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
53
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
54
54
  "DEFINES_MODULE" => "YES",
55
55
  }
56
56
 
@@ -43,7 +43,7 @@ Pod::Spec.new do |s|
43
43
  s.header_dir = "react/renderer/runtimescheduler"
44
44
  s.exclude_files = "tests"
45
45
  s.pod_target_xcconfig = {
46
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
46
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
47
47
  "HEADER_SEARCH_PATHS" => header_search_paths.join(' ')}
48
48
 
49
49
  if ENV['USE_FRAMEWORKS']
@@ -24,7 +24,7 @@ std::chrono::milliseconds getResolvedTimeoutForIdleTask(
24
24
  timeoutForSchedulerPriority(SchedulerPriority::IdlePriority)
25
25
  ? timeoutForSchedulerPriority(SchedulerPriority::LowPriority) +
26
26
  customTimeout
27
- : timeoutForSchedulerPriority(SchedulerPriority::IdlePriority);
27
+ : customTimeout;
28
28
  }
29
29
  } // namespace
30
30
 
@@ -41,15 +41,15 @@ static inline std::chrono::milliseconds timeoutForSchedulerPriority(
41
41
  SchedulerPriority schedulerPriority) noexcept {
42
42
  switch (schedulerPriority) {
43
43
  case SchedulerPriority::ImmediatePriority:
44
- return std::chrono::milliseconds(-1);
44
+ return std::chrono::milliseconds(0);
45
45
  case SchedulerPriority::UserBlockingPriority:
46
46
  return std::chrono::milliseconds(250);
47
47
  case SchedulerPriority::NormalPriority:
48
- return std::chrono::milliseconds(5000);
48
+ return std::chrono::seconds(5);
49
49
  case SchedulerPriority::LowPriority:
50
- return std::chrono::milliseconds(10'000);
50
+ return std::chrono::seconds(10);
51
51
  case SchedulerPriority::IdlePriority:
52
- return std::chrono::milliseconds::max();
52
+ return std::chrono::minutes(5);
53
53
  }
54
54
  }
55
55
 
@@ -332,6 +332,71 @@ TEST_P(RuntimeSchedulerTest, scheduleTwoTasksWithDifferentPriorities) {
332
332
  EXPECT_EQ(hostFunctionCallCount_, 2);
333
333
  }
334
334
 
335
+ TEST_P(RuntimeSchedulerTest, scheduleTwoTasksWithAllPriorities) {
336
+ uint idlePriorityTaskCallOrder = 0;
337
+ auto idlePriTask = createHostFunctionFromLambda(
338
+ [this, &idlePriorityTaskCallOrder](bool /*unused*/) {
339
+ idlePriorityTaskCallOrder = hostFunctionCallCount_;
340
+ return jsi::Value::undefined();
341
+ });
342
+
343
+ uint lowPriorityTaskCallOrder = 0;
344
+ auto lowPriTask = createHostFunctionFromLambda(
345
+ [this, &lowPriorityTaskCallOrder](bool /*unused*/) {
346
+ lowPriorityTaskCallOrder = hostFunctionCallCount_;
347
+ return jsi::Value::undefined();
348
+ });
349
+
350
+ uint normalPriorityTaskCallOrder = 0;
351
+ auto normalPriTask = createHostFunctionFromLambda(
352
+ [this, &normalPriorityTaskCallOrder](bool /*unused*/) {
353
+ normalPriorityTaskCallOrder = hostFunctionCallCount_;
354
+ return jsi::Value::undefined();
355
+ });
356
+
357
+ uint userBlockingPriorityTaskCallOrder = 0;
358
+ auto userBlockingPriTask = createHostFunctionFromLambda(
359
+ [this, &userBlockingPriorityTaskCallOrder](bool /*unused*/) {
360
+ userBlockingPriorityTaskCallOrder = hostFunctionCallCount_;
361
+ return jsi::Value::undefined();
362
+ });
363
+
364
+ uint immediatePriorityTaskCallOrder = 0;
365
+ auto immediatePriTask = createHostFunctionFromLambda(
366
+ [this, &immediatePriorityTaskCallOrder](bool /*unused*/) {
367
+ immediatePriorityTaskCallOrder = hostFunctionCallCount_;
368
+ return jsi::Value::undefined();
369
+ });
370
+
371
+ runtimeScheduler_->scheduleTask(
372
+ SchedulerPriority::IdlePriority, std::move(idlePriTask));
373
+ runtimeScheduler_->scheduleTask(
374
+ SchedulerPriority::LowPriority, std::move(lowPriTask));
375
+ runtimeScheduler_->scheduleTask(
376
+ SchedulerPriority::NormalPriority, std::move(normalPriTask));
377
+ runtimeScheduler_->scheduleTask(
378
+ SchedulerPriority::UserBlockingPriority, std::move(userBlockingPriTask));
379
+ runtimeScheduler_->scheduleTask(
380
+ SchedulerPriority::ImmediatePriority, std::move(immediatePriTask));
381
+
382
+ EXPECT_EQ(idlePriorityTaskCallOrder, 0);
383
+ EXPECT_EQ(lowPriorityTaskCallOrder, 0);
384
+ EXPECT_EQ(normalPriorityTaskCallOrder, 0);
385
+ EXPECT_EQ(userBlockingPriorityTaskCallOrder, 0);
386
+ EXPECT_EQ(immediatePriorityTaskCallOrder, 0);
387
+ EXPECT_EQ(stubQueue_->size(), 1);
388
+
389
+ stubQueue_->tick();
390
+
391
+ EXPECT_EQ(idlePriorityTaskCallOrder, 5);
392
+ EXPECT_EQ(lowPriorityTaskCallOrder, 4);
393
+ EXPECT_EQ(normalPriorityTaskCallOrder, 3);
394
+ EXPECT_EQ(userBlockingPriorityTaskCallOrder, 2);
395
+ EXPECT_EQ(immediatePriorityTaskCallOrder, 1);
396
+ EXPECT_EQ(stubQueue_->size(), 0);
397
+ EXPECT_EQ(hostFunctionCallCount_, 5);
398
+ }
399
+
335
400
  TEST_P(RuntimeSchedulerTest, cancelTask) {
336
401
  bool didRunTask = false;
337
402
  auto callback = createHostFunctionFromLambda([&didRunTask](bool /*unused*/) {
@@ -31,7 +31,7 @@ TEST(SchedulerPriorityTest, serialize) {
31
31
  TEST(SchedulerPriorityTest, timeoutForSchedulerPriority) {
32
32
  EXPECT_EQ(
33
33
  timeoutForSchedulerPriority(SchedulerPriority::ImmediatePriority),
34
- std::chrono::milliseconds(-1));
34
+ std::chrono::milliseconds(0));
35
35
  EXPECT_EQ(
36
36
  timeoutForSchedulerPriority(SchedulerPriority::UserBlockingPriority),
37
37
  std::chrono::milliseconds(250));
@@ -43,5 +43,5 @@ TEST(SchedulerPriorityTest, timeoutForSchedulerPriority) {
43
43
  std::chrono::seconds(10));
44
44
  EXPECT_EQ(
45
45
  timeoutForSchedulerPriority(SchedulerPriority::IdlePriority),
46
- std::chrono::milliseconds::max());
46
+ std::chrono::minutes(5));
47
47
  }
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
37
37
  s.header_dir = "react/runtime"
38
38
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/React-Core\" \"${PODS_TARGET_SRCROOT}/../..\"",
39
39
  "USE_HEADERMAP" => "YES",
40
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
40
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
41
41
  "GCC_WARN_PEDANTIC" => "YES" }
42
42
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
43
43
 
@@ -35,7 +35,7 @@ Pod::Spec.new do |s|
35
35
  s.header_dir = "react/runtime/hermes"
36
36
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"${PODS_TARGET_SRCROOT}/../..\" \"${PODS_TARGET_SRCROOT}/../../hermes/executor\" \"$(PODS_ROOT)/boost\"",
37
37
  "USE_HEADERMAP" => "YES",
38
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
38
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
39
39
  "GCC_WARN_PEDANTIC" => "YES" }
40
40
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
41
41
 
@@ -42,7 +42,7 @@ Pod::Spec.new do |s|
42
42
  s.header_dir = "ReactCommon"
43
43
  s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => header_search_paths,
44
44
  "USE_HEADERMAP" => "YES",
45
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
45
+ "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
46
46
  "GCC_WARN_PEDANTIC" => "YES" }
47
47
  s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
48
48
 
@@ -56,6 +56,7 @@ Pod::Spec.new do |s|
56
56
  s.dependency "React-cxxreact"
57
57
  s.dependency "React-callinvoker"
58
58
  s.dependency "React-runtimeexecutor"
59
+ s.dependency "React-runtimescheduler"
59
60
  s.dependency "React-utils"
60
61
  s.dependency "React-jsi"
61
62
  s.dependency "React-Core/Default"