peachsim 0.1.2224 → 0.1.2228

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 (171) hide show
  1. package/cli/bridge-flow-runner.ts +56 -3
  2. package/cli/commands/control.ts +27 -1
  3. package/cli/commands/flow.ts +26 -0
  4. package/cli/commands/package.ts +9 -2
  5. package/cli/drivers/playwright.ts +1 -0
  6. package/cli/drivers/types.ts +3 -0
  7. package/cli/internal-child.ts +4 -2
  8. package/dist-lib/agent-daemon-client.cjs +1 -1
  9. package/dist-lib/agent-events.cjs +1 -1
  10. package/dist-lib/attached-projects.cjs +1 -1
  11. package/dist-lib/auth/shared-session.cjs +1 -1
  12. package/dist-lib/backend-origin.cjs +1 -1
  13. package/dist-lib/beta.cjs +1 -1
  14. package/dist-lib/beta.mjs +1 -1
  15. package/dist-lib/bridge-constants.cjs +1 -1
  16. package/dist-lib/bridge-contract-input.cjs +1 -1
  17. package/dist-lib/bridge-contract-input.mjs +1 -1
  18. package/dist-lib/bridge-contract.cjs +1 -1
  19. package/dist-lib/bridge-contract.mjs +1 -1
  20. package/dist-lib/bundle-channel.cjs +931 -455
  21. package/dist-lib/capture-contract.cjs +1 -1
  22. package/dist-lib/capture-contract.mjs +1 -1
  23. package/dist-lib/cloud-contract.cjs +1 -1
  24. package/dist-lib/cloud-contract.mjs +1 -1
  25. package/dist-lib/cloud-test-args.cjs +1 -1
  26. package/dist-lib/cloud-test-args.mjs +1 -1
  27. package/dist-lib/cloud.cjs +1 -1
  28. package/dist-lib/cloud.mjs +1 -1
  29. package/dist-lib/config.cjs +1 -1
  30. package/dist-lib/config.mjs +1 -1
  31. package/dist-lib/detox/index.cjs +2 -2
  32. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  33. package/dist-lib/expo-swift-bundle.cjs +867 -391
  34. package/dist-lib/expo-swift-metadata.cjs +1 -1
  35. package/dist-lib/expo-swift-metadata.mjs +1 -1
  36. package/dist-lib/home-paths.cjs +1 -1
  37. package/dist-lib/host/bridge-host.cjs +926 -450
  38. package/dist-lib/host/fetch-proxy-handler.cjs +55 -12
  39. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  40. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  41. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  42. package/dist-lib/host/websocket-proxy.cjs +1 -1
  43. package/dist-lib/index.cjs +60 -16
  44. package/dist-lib/jump-to-source-babel.cjs +1 -1
  45. package/dist-lib/jump-to-source-native.cjs +1 -1
  46. package/dist-lib/kotlin-host.cjs +1 -1
  47. package/dist-lib/menu.cjs +1 -1
  48. package/dist-lib/menu.mjs +1 -1
  49. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  50. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  51. package/dist-lib/metro-production-bundle.cjs +11 -4
  52. package/dist-lib/metro-production-bundle.mjs +10 -4
  53. package/dist-lib/metro.cjs +60 -16
  54. package/dist-lib/native-app-identity-project.cjs +53 -9
  55. package/dist-lib/native-app-identity-project.mjs +84 -37
  56. package/dist-lib/native-app-identity.cjs +1 -1
  57. package/dist-lib/native-app-identity.mjs +1 -1
  58. package/dist-lib/native-firebase-metadata.cjs +1 -1
  59. package/dist-lib/native-firebase-metadata.mjs +1 -1
  60. package/dist-lib/pdfium-raster.cjs +1 -1
  61. package/dist-lib/pdfium-raster.mjs +1 -1
  62. package/dist-lib/plist.cjs +1 -1
  63. package/dist-lib/plist.mjs +1 -1
  64. package/dist-lib/profiles.cjs +1 -1
  65. package/dist-lib/public-brand.cjs +1 -1
  66. package/dist-lib/public-origins-lib-esm.json +26 -24
  67. package/dist-lib/public-origins-lib.json +66 -54
  68. package/dist-lib/react-native-host-modules.cjs +1 -1
  69. package/dist-lib/react-native-host-modules.mjs +1 -1
  70. package/dist-lib/reap-browser.cjs +1 -1
  71. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  72. package/dist-lib/sdk.cjs +1 -1
  73. package/dist-lib/sdk.mjs +1 -1
  74. package/dist-lib/skills.cjs +1049 -512
  75. package/dist-lib/swift-compile.cjs +557 -121
  76. package/dist-lib/swift-compile.mjs +693 -258
  77. package/dist-lib/swift-package.cjs +1 -1
  78. package/dist-lib/swift-package.mjs +1 -1
  79. package/dist-lib/swift-submit.cjs +1 -1
  80. package/dist-lib/swift-submit.mjs +1 -1
  81. package/dist-lib/swift-toolchain.cjs +38 -2
  82. package/dist-lib/swift.cjs +1 -1
  83. package/dist-lib/vite-swift.cjs +1726 -1209
  84. package/dist-lib/vite.cjs +55 -12
  85. package/dist-lib/worklet-executable.cjs +1 -1
  86. package/dist-lib/worklet-executable.mjs +1 -1
  87. package/dist-types/packages/peach-engine/src/bundle-parse-receipt.d.ts +17 -0
  88. package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +2 -1
  89. package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +2 -2
  90. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +1 -0
  91. package/dist-types/packages/peach-engine/src/engine/native-paragraph.d.ts +4 -0
  92. package/dist-types/packages/peach-engine/src/engine/node.d.ts +2 -0
  93. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +1 -1
  94. package/dist-types/packages/peach-engine/src/engine/types.d.ts +7 -0
  95. package/dist-types/packages/peach-engine/src/engine/yoga-layout.d.ts +2 -0
  96. package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +3 -2
  97. package/dist-types/packages/peach-engine/src/preview/preview-room-contract.d.ts +6 -0
  98. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1 -0
  99. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +15 -3
  100. package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +0 -5
  101. package/dist-types/packages/peach-kit/src/capabilities.d.ts +2 -0
  102. package/dist-types/packages/peach-kit/src/internal.d.ts +1 -1
  103. package/dist-types/packages/peach-kit/src/ios-tint.d.ts +2 -0
  104. package/kotlin/sdk.tar.gz +0 -0
  105. package/package.json +1 -1
  106. package/runtime-companion.json +1 -1
  107. package/sdk/ios/System/Library/Frameworks/CoreFoundation.framework/Headers/CFCGTypes.h +0 -6
  108. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h +1 -1
  109. package/sdk/ios/System/Library/Frameworks/Foundation.framework/Headers/NSURL.h +1 -1
  110. package/sdk/ios/System/Library/Frameworks/UIKit.framework/Headers/UIControl.h +0 -26
  111. package/sdk/ios/System/Library/Frameworks/UIKitTypes.framework/Headers/UIKitTypes.h +27 -0
  112. package/sdk/ios/usr/include/AvailabilityInternal.h +2 -2
  113. package/sdk/ios/usr/include/ObjectiveC.apinotes +380 -7
  114. package/sdk/ios/usr/include/peach/pthread.h +1 -7
  115. package/sdk/ios/wasm/include/TargetConditionals.h +2 -3
  116. package/sdk/ios/wasm/include/__struct_timeval.h +15 -0
  117. package/sdk/ios/wasm/include/__typedef_suseconds_t.h +9 -0
  118. package/sdk/ios/wasm/include/limits.h +1 -1
  119. package/sdk/ios/wasm/include/machine/_types.h +1 -1
  120. package/sdk/ios/wasm/include/machine/limits.h +1 -1
  121. package/sdk/ios/wasm/include/machine/param.h +2 -2
  122. package/sdk/ios/wasm/include/math.h +13 -0
  123. package/sdk/ios/wasm/include/pthread.h +1 -13
  124. package/sdk/ios/wasm/include/sys/resource.h +3 -0
  125. package/sdk/ios/wasm/include/sys/socket.h +0 -10
  126. package/sdk/ios/wasm/include/sys/stat.h +5 -2
  127. package/sdk/ios/wasm/include/sys/time.h +16 -3
  128. package/sdk/ios/wasm/include/sys/types.h +4 -1
  129. package/sdk/ios/wasm/include/time.h +2 -0
  130. package/sdk/ios/wasm/storage-include/TargetConditionals.h +2 -3
  131. package/sdk/native-hashes.json +14 -14
  132. package/src/metro-production-bundle.ts +15 -2
  133. package/src/native-slices.ts +3 -2
  134. package/src/native-static-libraries.ts +23 -23
  135. package/src/native-swift-slices.ts +2 -2
  136. package/src/nitro-adapter.lock.json +288 -288
  137. package/src/nitro-compiler-digest.ts +0 -1
  138. package/src/nitro-dependencies.ts +8 -9
  139. package/src/nitro-superset.lock.json +4 -4
  140. package/src/react-native-core-build.ts +2 -2
  141. package/src/swift-compile.ts +209 -47
  142. package/src/swift-compiler-digest.ts +2 -0
  143. package/src/swift-cxx-standin.ts +1 -1
  144. package/src/swift-darwin-records.ts +4 -4
  145. package/src/swift-distribution-contract.ts +2 -2
  146. package/src/swift-distribution.lock.json +13 -12
  147. package/src/swift-guest-compile.ts +6 -5
  148. package/src/swift-guest-image-ledger.ts +5 -5
  149. package/src/swift-guest-link.ts +1 -1
  150. package/src/swift-guest-linked-spans.ts +7 -4
  151. package/src/swift-guest-manifest.ts +2 -2
  152. package/src/swift-guest-source-inputs.ts +16 -5
  153. package/src/swift-host.ts +10 -5
  154. package/src/swift-icu.ts +1 -1
  155. package/src/swift-objc-compile.ts +9 -4
  156. package/src/swift-objc-standin.ts +1 -4
  157. package/src/swift-package-manifest.ts +5 -1
  158. package/src/swift-packages.ts +2 -2
  159. package/src/swift-shared-sdk.ts +1 -1
  160. package/src/swift-standin-emit.ts +3 -16
  161. package/src/swift-standins.ts +119 -87
  162. package/src/swift-toolchain.ts +37 -1
  163. package/src/swift-uniform-type-constants.ts +1 -1
  164. package/src/swift-wasm-prune.ts +17 -12
  165. package/src/swiftGuestImageContract.ts +4 -4
  166. package/src/swiftNativePinContract.ts +1 -1
  167. package/src/swiftRuntimeProductContract.ts +1 -1
  168. package/src/turbo-runtime.lock.json +28 -28
  169. package/src/wasm-narrow-boundary.ts +296 -0
  170. package/src/wasm-optimize.ts +59 -14
  171. package/src/xcode-project.ts +6 -4
@@ -1,15 +1,25 @@
1
- import { existsSync } from 'node:fs'
2
- import { join } from 'node:path'
1
+ import { execFile } from 'node:child_process'
2
+ import { existsSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
3
+ import { dirname, join } from 'node:path'
4
+ import { promisify } from 'node:util'
3
5
  import { installVerifiedTarball } from '@contrast/runtime-delivery'
4
6
  import { BINARYEN_VERSION, wasmOpt } from 'wasm-opt'
5
7
  import { windowAdmission } from './admitted-mac-build'
6
8
  import { rnxHomeDir } from './home-paths'
9
+ import {
10
+ dropBoundaryExports,
11
+ NARROW_MERGE_NAMES,
12
+ narrowWasmBoundary,
13
+ } from './wasm-narrow-boundary'
7
14
 
8
- // packaged native executables, size-optimized. clang's own
9
- // optimizer pass is off (-O0 on the link) so an edit never pays for it and the
10
- // artifact never depends on the machine; this runs the pinned Binaryen once per
11
- // cached artifact instead. the features are the ones the link declares.
15
+ // the linked wasm64 executable, made loadable: its host boundary narrowed to
16
+ // 32 bits and its memory and table lowered to 32-bit addresses, so pointers stay
17
+ // 8 bytes in memory while every browser runs the module. clang's own optimizer
18
+ // pass is off (-O0 on the link) so the artifact never depends on the machine;
19
+ // the pinned Binaryen size-optimizes once per cached artifact instead. the
20
+ // features are the ones the link declares.
12
21
  const FEATURES = [
22
+ 'memory64',
13
23
  'threads',
14
24
  'bulk-memory',
15
25
  'bulk-memory-opt',
@@ -25,8 +35,10 @@ const FEATURES = [
25
35
  // PEACH_SWIFT_NAMES=1 keeps the name section so a trap stack names its functions.
26
36
  export const KEEP_WASM_NAMES = process.env.PEACH_SWIFT_NAMES === '1'
27
37
 
38
+ const LOWERING = ['--memory64-lowering', '--table64-lowering']
39
+
28
40
  /** feeds the artifact hash: a new optimizer or flag set is a new artifact. */
29
- export const WASM_OPTIMIZE_IDENTITY = `wasm-opt ${BINARYEN_VERSION} -Oz ${FEATURES.join(',')}${KEEP_WASM_NAMES ? ' -g' : ''}`
41
+ export const WASM_LOWER_IDENTITY = `binaryen ${BINARYEN_VERSION} narrow ${LOWERING.join(' ')} ${FEATURES.join(',')} unoptimized-names`
30
42
 
31
43
  // the sha256 of each Binaryen release archive wasm-opt resolves for its own platform
32
44
  // keys; update both when the wasm-opt package moves BINARYEN_VERSION.
@@ -61,6 +73,7 @@ const BINARYEN_RELEASES = new Map([
61
73
  async function runWasmOpt(
62
74
  file: string,
63
75
  output: string,
76
+ optimize: boolean,
64
77
  skipPasses: readonly string[],
65
78
  binary: string,
66
79
  ): Promise<void> {
@@ -73,18 +86,44 @@ async function runWasmOpt(
73
86
  ? Math.min(admittedCores, requestedCores)
74
87
  : admittedCores,
75
88
  )
89
+ const features = FEATURES.map((feature) => `--enable-${feature}`)
90
+ // an unoptimized link keeps its name section, as before lowering, so a trap names its function
91
+ const names = optimize && !KEEP_WASM_NAMES ? [] : ['-g']
92
+ const narrowed = narrowWasmBoundary(readFileSync(file))
93
+ const merged = `${output}.narrowed`
94
+ if (narrowed) {
95
+ const guest = `${output}.guest`
96
+ const thunks = `${output}.thunks.wat`
97
+ writeFileSync(guest, narrowed.module)
98
+ writeFileSync(thunks, narrowed.thunks)
99
+ await promisify(execFile)(join(dirname(binary), 'wasm-merge'), [
100
+ ...features,
101
+ ...names,
102
+ guest,
103
+ NARROW_MERGE_NAMES.guest,
104
+ thunks,
105
+ NARROW_MERGE_NAMES.boundary,
106
+ '-o',
107
+ merged,
108
+ ])
109
+ writeFileSync(merged, dropBoundaryExports(readFileSync(merged)))
110
+ rmSync(guest)
111
+ rmSync(thunks)
112
+ }
76
113
  const result = await wasmOpt(
77
114
  [
78
- '-Oz',
79
- ...(KEEP_WASM_NAMES ? ['-g'] : []),
115
+ ...LOWERING,
116
+ ...(optimize ? ['-Oz'] : []),
117
+ ...names,
80
118
  ...skipPasses.flatMap((pass) => ['--skip-pass', pass]),
81
- ...FEATURES.map((feature) => `--enable-${feature}`),
82
- file,
119
+ ...features,
120
+ narrowed ? merged : file,
83
121
  '-o',
84
122
  output,
85
123
  ],
86
124
  { env: environment },
87
125
  )
126
+ if (narrowed) rmSync(merged)
88
127
  if (result.status !== 0)
89
128
  throw new Error(`wasm-opt exited ${result.status}: ${result.stderr}`)
90
129
  }
@@ -110,10 +149,16 @@ async function installWasmOpt(): Promise<string> {
110
149
  return binary
111
150
  }
112
151
 
113
- export async function optimizeWasm(
152
+ export async function lowerWasm(
114
153
  file: string,
115
154
  output: string,
116
- skipPasses: readonly string[] = [],
155
+ options: { optimize: boolean; skipPasses?: readonly string[] },
117
156
  ): Promise<void> {
118
- await runWasmOpt(file, output, skipPasses, await installWasmOpt())
157
+ await runWasmOpt(
158
+ file,
159
+ output,
160
+ options.optimize,
161
+ options.skipPasses ?? [],
162
+ await installWasmOpt(),
163
+ )
119
164
  }
@@ -105,7 +105,7 @@ export interface XcodeModuleTarget {
105
105
  /** the compilation conditions the build configuration defines, as `-D` passes them. */
106
106
  defines: string[]
107
107
  /** the resolved source iOS minimum, including for native package dependencies. */
108
- iosDeploymentTarget: string | null
108
+ iosDeploymentTarget: string
109
109
  /** the build settings xcode's asset catalog compile reads, by name, empty ones omitted. */
110
110
  assetSettings: Record<string, string>
111
111
  /** original swift settings and the compatibility products declared by CocoaPods. */
@@ -2441,7 +2441,8 @@ export function readXcodeAppTarget(
2441
2441
  languageMode: swiftVersion >= 6 ? 6 : 5,
2442
2442
  mainActorIsolation: settings('SWIFT_DEFAULT_ACTOR_ISOLATION') === 'MainActor',
2443
2443
  defines: compilationConditions(settings),
2444
- iosDeploymentTarget: settings('IPHONEOS_DEPLOYMENT_TARGET') || null,
2444
+ iosDeploymentTarget:
2445
+ settings('IPHONEOS_DEPLOYMENT_TARGET') || XCODE_DEFAULT_IOS_DEPLOYMENT_TARGET,
2445
2446
  assetSettings: {
2446
2447
  IPHONEOS_DEPLOYMENT_TARGET: XCODE_DEFAULT_IOS_DEPLOYMENT_TARGET,
2447
2448
  ...Object.fromEntries(
@@ -2812,11 +2813,12 @@ export function readXcodeAppTarget(
2812
2813
  value === 'YES' ? true : value === 'NO' ? false : value
2813
2814
  }
2814
2815
  if (settings('GENERATE_INFOPLIST_FILE') === 'YES') {
2815
- const versions = {
2816
+ const generated = {
2817
+ CFBundleDevelopmentRegion: 'DEVELOPMENT_LANGUAGE',
2816
2818
  CFBundleShortVersionString: 'MARKETING_VERSION',
2817
2819
  CFBundleVersion: 'CURRENT_PROJECT_VERSION',
2818
2820
  }
2819
- for (const [key, setting] of Object.entries(versions)) {
2821
+ for (const [key, setting] of Object.entries(generated)) {
2820
2822
  const value = settings(setting)
2821
2823
  if (info[key] === undefined && value) info[key] = value
2822
2824
  }