react-native-windows 0.73.0 → 0.73.2

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 (41) hide show
  1. package/Directory.Build.props +2 -2
  2. package/Libraries/Animated/nodes/AnimatedStyle.js +1 -1
  3. package/Libraries/Core/ReactNativeVersion.js +1 -1
  4. package/Microsoft.ReactNative/JSDispatcherWriter.cpp +18 -11
  5. package/Microsoft.ReactNative/JSDispatcherWriter.h +1 -0
  6. package/Microsoft.ReactNative/ReactHost/MsoReactContext.cpp +37 -1
  7. package/Microsoft.ReactNative/ReactHost/React.h +3 -0
  8. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +16 -0
  9. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +19 -3
  10. package/Microsoft.ReactNative/TurboModulesProvider.cpp +92 -40
  11. package/Microsoft.ReactNative/packages.lock.json +3 -3
  12. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +1 -0
  13. package/Microsoft.ReactNative.Managed/packages.lock.json +67 -3
  14. package/Microsoft.ReactNative.Managed.CodeGen/Microsoft.ReactNative.Managed.CodeGen.csproj +2 -1
  15. package/PropertySheets/External/Microsoft.ReactNative.Composition.Common.props +8 -0
  16. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  17. package/PropertySheets/JSEngine.props +4 -3
  18. package/PropertySheets/React.Cpp.props +1 -0
  19. package/PropertySheets/Release.props +1 -0
  20. package/ReactCommon/ReactCommon.vcxproj +4 -4
  21. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/uimanager/UIManagerBinding.cpp +30 -34
  22. package/Shared/BaseFileReaderResource.cpp +6 -0
  23. package/Shared/HermesRuntimeHolder.cpp +11 -11
  24. package/Shared/InspectorPackagerConnection.cpp +58 -57
  25. package/Shared/InspectorPackagerConnection.h +4 -3
  26. package/Shared/JSI/V8RuntimeHolder.cpp +1 -1
  27. package/Shared/Networking/DefaultBlobResource.cpp +8 -4
  28. package/Shared/Networking/WinRTHttpResource.cpp +9 -11
  29. package/Shared/OInstance.cpp +19 -1
  30. package/Shared/SafeLoadLibrary.cpp +44 -8
  31. package/Shared/SafeLoadLibrary.h +5 -1
  32. package/Shared/Shared.vcxitems +4 -0
  33. package/Shared/Shared.vcxitems.filters +16 -11
  34. package/Shared/V8JSIRuntimeHolder.cpp +71 -0
  35. package/Shared/V8JSIRuntimeHolder.h +56 -0
  36. package/fmt/cgmanifest.json +1 -1
  37. package/metro.config.js +1 -1
  38. package/package.json +17 -17
  39. package/templates/cpp-app/windows/ExperimentalFeatures.props +0 -1
  40. package/templates/old/generateWrapper.js +3 -3
  41. package/templates/old/uwp-cpp-lib/template.config.js +1 -1
@@ -223,6 +223,9 @@
223
223
  <ClCompile Include="$(MSBuildThisFileDirectory)TurboModuleManager.cpp" />
224
224
  <ClCompile Include="$(MSBuildThisFileDirectory)Utils.cpp" />
225
225
  <ClCompile Include="$(MSBuildThisFileDirectory)Utils\WinRTConversions.cpp" />
226
+ <ClCompile Include="$(MSBuildThisFileDirectory)V8JSIRuntimeHolder.cpp">
227
+ <ExcludedFromBuild Condition="'$(UseV8)' != 'true'">true</ExcludedFromBuild>
228
+ </ClCompile>
226
229
  </ItemGroup>
227
230
  <ItemGroup>
228
231
  <ClInclude Include="$(MSBuildThisFileDirectory)..\codegen\react\components\rnwcore\EventEmitters.h" />
@@ -396,6 +399,7 @@
396
399
  <ClInclude Include="$(MSBuildThisFileDirectory)Utils.h" />
397
400
  <ClInclude Include="$(MSBuildThisFileDirectory)Utils\CppWinrtLessExceptions.h" />
398
401
  <ClInclude Include="$(MSBuildThisFileDirectory)Utils\WinRTConversions.h" />
402
+ <ClInclude Include="$(MSBuildThisFileDirectory)V8JSIRuntimeHolder.h" />
399
403
  <ClInclude Include="$(MSBuildThisFileDirectory)WebSocketJSExecutorFactory.h" />
400
404
  <ClCompile Include="$(ReactNativeWindowsDir)Microsoft.ReactNative\Modules\DevSettingsModule.cpp" />
401
405
  <ClCompile Include="$(ReactNativeWindowsDir)Microsoft.ReactNative\Modules\ReactRootViewTagGenerator.cpp" />
@@ -270,6 +270,7 @@
270
270
  <ClCompile Include="$(MSBuildThisFileDirectory)JSI\V8RuntimeHolder.cpp" />
271
271
  <ClCompile Include="$(MSBuildThisFileDirectory)SafeLoadLibrary.cpp" />
272
272
  <ClCompile Include="$(MSBuildThisFileDirectory)Hasher.cpp" />
273
+ <ClCompile Include="$(MSBuildThisFileDirectory)V8JSIRuntimeHolder.cpp" />
273
274
  <ClCompile Include="$(MSBuildThisFileDirectory)Networking\DefaultBlobResource.cpp">
274
275
  <Filter>Source Files\Networking</Filter>
275
276
  </ClCompile>
@@ -331,6 +332,9 @@
331
332
  <Filter Include="Source Files\Networking">
332
333
  <UniqueIdentifier>{71196e04-aca0-48d6-99e4-f418c957b50f}</UniqueIdentifier>
333
334
  </Filter>
335
+ <Filter Include="Hermes">
336
+ <UniqueIdentifier>{b32590e6-ae3d-4388-ab98-767345ce38c9}</UniqueIdentifier>
337
+ </Filter>
334
338
  <Filter Include="Header Files\Fabric">
335
339
  <UniqueIdentifier>{e045612e-bca3-4844-bce8-e75f83e89e05}</UniqueIdentifier>
336
340
  </Filter>
@@ -728,17 +732,6 @@
728
732
  <ClInclude Include="$(MSBuildThisFileDirectory)..\Microsoft.ReactNative\Fabric\platform\react\renderer\core\graphicsConversions.h">
729
733
  <Filter>Header Files\Fabric\platform\react\renderer\core</Filter>
730
734
  </ClInclude>
731
- <ClInclude Include="$(MSBuildThisFileDirectory)HermesRuntimeHolder.h">
732
- <Filter>Hermes</Filter>
733
- </ClInclude>
734
- <ClInclude Include="$(MSBuildThisFileDirectory)HermesSamplingProfiler.h">
735
- <Filter>Hermes</Filter>
736
- </ClInclude>
737
- <ClInclude Include="$(NodeApiJsiDir)src\ApiLoaders\HermesApi.h" />
738
- <ClInclude Include="$(NodeApiJsiDir)src\ApiLoaders\HermesApi.inc" />
739
- <ClInclude Include="$(MSBuildThisFileDirectory)..\Microsoft.ReactNative\JsiApi.h" />
740
- <ClInclude Include="$(MSBuildThisFileDirectory)JSI\V8RuntimeHolder.h" />
741
- <ClInclude Include="$(MSBuildThisFileDirectory)SafeLoadLibrary.h" />
742
735
  <ClInclude Include="$(MSBuildThisFileDirectory)Modules\WebSocketTurboModule.h">
743
736
  <Filter>Header Files\Modules</Filter>
744
737
  </ClInclude>
@@ -756,6 +749,18 @@
756
749
  <ClInclude Include="$(MSBuildThisFileDirectory)Modules\BlobCollector.h">
757
750
  <Filter>Header Files\Modules</Filter>
758
751
  </ClInclude>
752
+ <ClInclude Include="$(MSBuildThisFileDirectory)HermesRuntimeHolder.h">
753
+ <Filter>Hermes</Filter>
754
+ </ClInclude>
755
+ <ClInclude Include="$(MSBuildThisFileDirectory)HermesSamplingProfiler.h">
756
+ <Filter>Hermes</Filter>
757
+ </ClInclude>
758
+ <ClInclude Include="$(NodeApiJsiDir)src\ApiLoaders\HermesApi.h" />
759
+ <ClInclude Include="$(NodeApiJsiDir)src\ApiLoaders\HermesApi.inc" />
760
+ <ClInclude Include="$(MSBuildThisFileDirectory)..\Microsoft.ReactNative\JsiApi.h" />
761
+ <ClInclude Include="$(MSBuildThisFileDirectory)JSI\V8RuntimeHolder.h" />
762
+ <ClInclude Include="$(MSBuildThisFileDirectory)SafeLoadLibrary.h" />
763
+ <ClInclude Include="$(MSBuildThisFileDirectory)V8JSIRuntimeHolder.h" />
759
764
  </ItemGroup>
760
765
  <ItemGroup>
761
766
  <None Include="$(MSBuildThisFileDirectory)tracing\rnw.wprp">
@@ -0,0 +1,71 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ #include "pch.h"
5
+
6
+ #include <V8JsiRuntime.h>
7
+ #include "V8JSIRuntimeHolder.h"
8
+
9
+ #include <atomic>
10
+ #include <queue>
11
+
12
+ using namespace facebook;
13
+ using namespace facebook::react;
14
+
15
+ namespace facebook {
16
+ namespace react {
17
+
18
+ class TaskRunnerAdapter : public v8runtime::JSITaskRunner {
19
+ public:
20
+ TaskRunnerAdapter(std::shared_ptr<facebook::react::MessageQueueThread> jsQueue) : jsQueue_(std::move(jsQueue)) {}
21
+
22
+ void postTask(std::unique_ptr<v8runtime::JSITask> task) override {
23
+ std::shared_ptr<v8runtime::JSITask> shared_task(task.release());
24
+ jsQueue_->runOnQueue([shared_task2 = std::move(shared_task)]() { shared_task2->run(); });
25
+ }
26
+
27
+ private:
28
+ TaskRunnerAdapter(const TaskRunnerAdapter &) = delete;
29
+ TaskRunnerAdapter &operator=(const TaskRunnerAdapter &) = delete;
30
+
31
+ std::shared_ptr<facebook::react::MessageQueueThread> jsQueue_;
32
+ };
33
+
34
+ facebook::react::JSIEngineOverride V8JSIRuntimeHolder::getRuntimeType() noexcept {
35
+ return facebook::react::JSIEngineOverride::V8;
36
+ }
37
+
38
+ std::shared_ptr<facebook::jsi::Runtime> V8JSIRuntimeHolder::getRuntime() noexcept {
39
+ std::call_once(once_flag_, [this]() { initRuntime(); });
40
+
41
+ if (!runtime_)
42
+ std::terminate();
43
+
44
+ // V8JsiRuntime is not thread safe as of now.
45
+ if (own_thread_id_ != std::this_thread::get_id())
46
+ std::terminate();
47
+
48
+ return runtime_;
49
+ }
50
+
51
+ void V8JSIRuntimeHolder::initRuntime() noexcept {
52
+ v8runtime::V8RuntimeArgs args{};
53
+
54
+ if (debuggerPort_ > 0)
55
+ args.inspectorPort = debuggerPort_;
56
+
57
+ args.flags.enableInspector = useDirectDebugger_;
58
+ args.flags.waitForDebugger = debuggerBreakOnNextLine_;
59
+ args.debuggerRuntimeName = debuggerRuntimeName_;
60
+
61
+ args.foreground_task_runner = std::make_shared<TaskRunnerAdapter>(jsQueue_);
62
+ args.preparedScriptStore = std::move(preparedScriptStore_);
63
+ args.flags.enableMultiThread = enableMultiThreadingSupport_;
64
+
65
+ runtime_ = v8runtime::makeV8Runtime(std::move(args));
66
+
67
+ own_thread_id_ = std::this_thread::get_id();
68
+ }
69
+
70
+ } // namespace react
71
+ } // namespace facebook
@@ -0,0 +1,56 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ #pragma once
5
+
6
+ #include <DevSettings.h>
7
+
8
+ #include <JSI/RuntimeHolder.h>
9
+ #include <JSI/ScriptStore.h>
10
+
11
+ #include <Logging.h>
12
+
13
+ namespace facebook {
14
+ namespace react {
15
+
16
+ class V8JSIRuntimeHolder : public Microsoft::JSI::RuntimeHolderLazyInit {
17
+ public:
18
+ std::shared_ptr<facebook::jsi::Runtime> getRuntime() noexcept override;
19
+ facebook::react::JSIEngineOverride getRuntimeType() noexcept override;
20
+
21
+ V8JSIRuntimeHolder(
22
+ std::shared_ptr<facebook::react::DevSettings> devSettings,
23
+ std::shared_ptr<facebook::react::MessageQueueThread> jsQueue,
24
+ std::unique_ptr<facebook::jsi::ScriptStore> &&scriptStore,
25
+ std::shared_ptr<facebook::jsi::PreparedScriptStore> &&preparedScriptStore,
26
+ bool enableMultiThreadingSupport) noexcept
27
+ : useDirectDebugger_(devSettings->useDirectDebugger),
28
+ debuggerBreakOnNextLine_(devSettings->debuggerBreakOnNextLine),
29
+ debuggerPort_(devSettings->debuggerPort),
30
+ debuggerRuntimeName_(devSettings->debuggerRuntimeName),
31
+ jsQueue_(std::move(jsQueue)),
32
+ scriptStore_(std::move(scriptStore)),
33
+ preparedScriptStore_(std::move(preparedScriptStore)),
34
+ enableMultiThreadingSupport_(enableMultiThreadingSupport) {}
35
+
36
+ private:
37
+ void initRuntime() noexcept;
38
+
39
+ std::shared_ptr<facebook::jsi::Runtime> runtime_;
40
+ std::shared_ptr<facebook::react::MessageQueueThread> jsQueue_;
41
+
42
+ std::unique_ptr<facebook::jsi::ScriptStore> scriptStore_;
43
+ std::shared_ptr<facebook::jsi::PreparedScriptStore> preparedScriptStore_;
44
+
45
+ std::once_flag once_flag_;
46
+ std::thread::id own_thread_id_;
47
+
48
+ uint16_t debuggerPort_;
49
+ bool useDirectDebugger_;
50
+ bool debuggerBreakOnNextLine_;
51
+ std::string debuggerRuntimeName_;
52
+ bool enableMultiThreadingSupport_;
53
+ };
54
+
55
+ } // namespace react
56
+ } // namespace facebook
@@ -6,7 +6,7 @@
6
6
  "Type": "git",
7
7
  "Git": {
8
8
  "RepositoryUrl": "https://github.com/fmtlib/fmt",
9
- "CommitHash": "9e8b86fd2d9806672cc73133d21780dd182bfd24"
9
+ "CommitHash": "ca2e3685b160617d3d95fcd9e789c4e06ca88"
10
10
  }
11
11
  },
12
12
  "DevelopmentDependency": false
package/metro.config.js CHANGED
@@ -19,4 +19,4 @@ if (
19
19
  }
20
20
 
21
21
  const {makeMetroConfig} = require('@rnw-scripts/metro-dev-config');
22
- module.exports = makeMetroConfig();
22
+ module.exports = makeMetroConfig({projectRoot: __dirname});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-windows",
3
- "version": "0.73.0",
3
+ "version": "0.73.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,31 +23,31 @@
23
23
  "dependencies": {
24
24
  "@babel/runtime": "^7.0.0",
25
25
  "@jest/create-cache-key-function": "^29.6.3",
26
- "@react-native-community/cli": "12.0.0-alpha.17",
27
- "@react-native-community/cli-platform-android": "12.0.0-alpha.17",
28
- "@react-native-community/cli-platform-ios": "12.0.0-alpha.17",
29
- "@react-native-windows/cli": "0.73.0-preview.1",
26
+ "@react-native-community/cli": "12.1.1",
27
+ "@react-native-community/cli-platform-android": "12.1.1",
28
+ "@react-native-community/cli-platform-ios": "12.1.1",
29
+ "@react-native-windows/cli": "0.73.0",
30
30
  "@react-native/assets": "1.0.0",
31
31
  "@react-native/assets-registry": "^0.73.1",
32
- "@react-native/codegen": "^0.73.1",
33
- "@react-native/community-cli-plugin": "^0.73.7",
34
- "@react-native/gradle-plugin": "^0.73.2",
32
+ "@react-native/codegen": "^0.73.2",
33
+ "@react-native/community-cli-plugin": "^0.73.10",
34
+ "@react-native/gradle-plugin": "^0.73.4",
35
35
  "@react-native/js-polyfills": "^0.73.1",
36
36
  "@react-native/normalize-colors": "^0.73.2",
37
- "@react-native/virtualized-lists": "^0.73.2",
37
+ "@react-native/virtualized-lists": "^0.73.3",
38
38
  "abort-controller": "^3.0.0",
39
39
  "anser": "^1.4.9",
40
40
  "ansi-regex": "^5.0.0",
41
41
  "base64-js": "^1.5.1",
42
- "deprecated-react-native-prop-types": "4.2.1",
42
+ "deprecated-react-native-prop-types": "^5.0.0",
43
43
  "event-target-shim": "^5.0.1",
44
44
  "flow-enums-runtime": "^0.0.6",
45
45
  "invariant": "^2.2.4",
46
46
  "jest-environment-node": "^29.6.3",
47
47
  "jsc-android": "^250231.0.0",
48
48
  "memoize-one": "^5.0.0",
49
- "metro-runtime": "0.79.1",
50
- "metro-source-map": "0.79.1",
49
+ "metro-runtime": "^0.80.0",
50
+ "metro-source-map": "^0.80.0",
51
51
  "mkdirp": "^0.5.1",
52
52
  "nullthrows": "^1.1.1",
53
53
  "pretty-format": "^26.5.2",
@@ -64,7 +64,7 @@
64
64
  "yargs": "^17.6.2"
65
65
  },
66
66
  "devDependencies": {
67
- "@react-native-windows/codegen": "0.73.0-preview.1",
67
+ "@react-native-windows/codegen": "0.73.0",
68
68
  "@react-native/metro-config": "^0.73.0",
69
69
  "@rnw-scripts/babel-react-native-config": "0.0.0",
70
70
  "@rnw-scripts/eslint-config": "1.2.3",
@@ -81,21 +81,21 @@
81
81
  "just-scripts": "^1.3.3",
82
82
  "prettier": "^2.4.1",
83
83
  "react": "18.2.0",
84
- "react-native": "0.73.0-rc.3",
84
+ "react-native": "0.73.0",
85
85
  "react-native-platform-override": "^1.9.16",
86
86
  "react-refresh": "^0.4.0",
87
87
  "typescript": "^4.9.5"
88
88
  },
89
89
  "peerDependencies": {
90
90
  "react": "18.2.0",
91
- "react-native": "^0.73.0-rc.3"
91
+ "react-native": "^0.73.0"
92
92
  },
93
93
  "beachball": {
94
- "defaultNpmTag": "preview",
94
+ "defaultNpmTag": "latest",
95
95
  "disallowedChangeTypes": [
96
96
  "major",
97
97
  "minor",
98
- "patch"
98
+ "prerelease"
99
99
  ],
100
100
  "gitTags": true
101
101
  },
@@ -2,7 +2,6 @@
2
2
  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
3
 
4
4
  <PropertyGroup Label="Microsoft.ReactNative Experimental Features">
5
- <UseHermes>true</UseHermes>
6
5
  <UseFabric>true</UseFabric>
7
6
  <UseWinUI3>false</UseWinUI3>
8
7
 
@@ -20,7 +20,7 @@ function makeGenerateWindowsWrapper(
20
20
  })`
21
21
  : `React Native Windows Application (Old Arch, UWP, ${
22
22
  language === 'cs' ? 'C#' : 'C++'
23
- }, Chakra)`;
23
+ }, Hermes)`;
24
24
  const description =
25
25
  projectType === 'lib'
26
26
  ? `A RNW module written in ${
@@ -28,7 +28,7 @@ function makeGenerateWindowsWrapper(
28
28
  }, targeting UWP and RN's old architecture.`
29
29
  : `A RNW app written in ${
30
30
  language === 'cs' ? 'C#' : 'C++'
31
- }, targeting UWP and RN's old architecture, with the Chakra JS engine.`;
31
+ }, targeting UWP and RN's old architecture, with the Hermes JS engine.`;
32
32
 
33
33
  const postInstall = async (config = {}, options = {}) => {
34
34
  const experimentalFeatures = config?.project?.windows?.experimentalFeatures;
@@ -40,7 +40,7 @@ function makeGenerateWindowsWrapper(
40
40
  experimentalNuGetDependency:
41
41
  experimentalFeatures?.UseExperimentalNuget ?? false,
42
42
  useWinUI3: experimentalFeatures?.UseWinUI3 ?? false,
43
- useHermes: experimentalFeatures?.UseHermes ?? false,
43
+ useHermes: experimentalFeatures?.UseHermes ?? true,
44
44
  useDevMode: false,
45
45
  verbose: !!options.logging,
46
46
  telemetry: !!options.telemetry,
@@ -12,4 +12,4 @@
12
12
 
13
13
  const {makeGenerateWindowsWrapper} = require('../generateWrapper');
14
14
 
15
- module.exports = makeGenerateWindowsWrapper('cpp', 'lib', false);
15
+ module.exports = makeGenerateWindowsWrapper('cpp', 'lib');