@gjsify/rolldown-native 0.64.5 → 0.64.7

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 (2) hide show
  1. package/meson.build +39 -12
  2. package/package.json +6 -6
package/meson.build CHANGED
@@ -17,15 +17,43 @@ project('GjsifyRolldown', ['c', 'vala'], version: '1.0',
17
17
 
18
18
  cc = meson.get_compiler('c')
19
19
 
20
- vala_deps = [
21
- dependency('glib-2.0'),
22
- dependency('gobject-2.0'),
23
- # json-glib is used by BundlerSession to peek at the hook name +
24
- # request id from the Rust-emitted JSON envelope before routing
25
- # to the matching GObject signal. The full payload is forwarded
26
- # to JS unparsed.
27
- dependency('json-glib-1.0'),
28
- ]
20
+ host_system = host_machine.system()
21
+
22
+ # On darwin every GNOME library is resolved against the HOST PROCESS rather than
23
+ # recorded as an `@rpath/` dependency: a second GLib beside the one the host
24
+ # already loaded gives the process two GType registries, then SIGSEGV.
25
+ # docs/prebuilds.md § One GLib. json-glib is in the list because its own
26
+ # `--libs` carry `-lglib-2.0 -lgobject-2.0` — stripping only the glib pair would
27
+ # still let ld64 record a GLib load command.
28
+ #
29
+ # json-glib is used by BundlerSession to peek at the hook name + request id
30
+ # from the Rust-emitted JSON envelope before routing to the matching GObject
31
+ # signal. The full payload is forwarded to JS unparsed.
32
+ #
33
+ # GLib alone is left to `dynamic_lookup`: gjs always loads it. json-glib is not
34
+ # loaded by the host, so unrecorded it leaves `json_*` unbound; it is linked by
35
+ # path instead, which records ITS load command while GLib stays out of the link
36
+ # line.
37
+ host_provided = ['glib-2.0', 'gobject-2.0']
38
+
39
+ vala_deps = []
40
+ foreach pkg : host_provided
41
+ dep = dependency(pkg)
42
+ vala_deps += host_system == 'darwin' \
43
+ ? dep.partial_dependency(compile_args: true, includes: true) \
44
+ : dep
45
+ endforeach
46
+
47
+ json_dep = dependency('json-glib-1.0')
48
+ if host_system == 'darwin'
49
+ vala_deps += json_dep.partial_dependency(compile_args: true, includes: true)
50
+ vala_deps += cc.find_library('json-glib-1.0',
51
+ dirs: json_dep.get_variable(pkgconfig: 'libdir'))
52
+ else
53
+ vala_deps += json_dep
54
+ endif
55
+
56
+ host_provided_link_args = host_system == 'darwin' ? ['-Wl,-undefined,dynamic_lookup'] : []
29
57
 
30
58
  # ----------------------------------------------------------------------------
31
59
  # Host-dependent naming + runtime-lookup conventions
@@ -52,8 +80,6 @@ vala_deps = [
52
80
  # `gjsify.platforms` gains `darwin-arm64`.
53
81
  # The branch below is kept in lockstep with its lightningcss/oxfmt siblings.
54
82
  # ----------------------------------------------------------------------------
55
- host_system = host_machine.system()
56
-
57
83
  if host_system == 'darwin'
58
84
  rust_cdylib_name = 'libgjsify_rolldown.dylib'
59
85
  shared_lib_name = 'libgjsifyrolldown.dylib'
@@ -162,7 +188,8 @@ sources = files(
162
188
 
163
189
  inc = include_directories('src/vala')
164
190
 
165
- link_args = ['-L' + meson.current_build_dir(), '-lgjsify_rolldown']
191
+ link_args = ['-L' + meson.current_build_dir(), '-lgjsify_rolldown'] \
192
+ + host_provided_link_args
166
193
 
167
194
  libGjsifyRolldown = library('gjsifyrolldown', sources,
168
195
  dependencies: vala_deps,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/rolldown-native",
3
- "version": "0.64.5",
3
+ "version": "0.64.7",
4
4
  "description": "Phase D-2 POC: Vala/GObject + Rust cdylib bridge to rolldown for GJS. Wraps `rolldown::Bundler::generate()` (async, tokio) in a per-call current-thread runtime so JS sees a sync `bundle()` call. JSON-encoded BundlerOptions in, JSON-encoded BundleOutput out — the boundary stays small even though rolldown's option surface is enormous. POC scope: no JS plugins (Phase B), no watch/HMR, no incremental builds. Companion to `@gjsify/lightningcss-native`; together they remove the last two Rust-crate runtime blockers from the gjsify build pipeline (Phase D-3 unblock).",
5
5
  "type": "module",
6
6
  "main": "lib/esm/index.js",
@@ -58,7 +58,7 @@
58
58
  "@girs/gobject-2.0": "5.4.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@gjsify/cli": "^0.64.5",
61
+ "@gjsify/cli": "^0.64.7",
62
62
  "@types/node": "^25.9.2",
63
63
  "typescript": "^6.0.3"
64
64
  },
@@ -74,9 +74,9 @@
74
74
  },
75
75
  "homepage": "https://github.com/gjsify/gjsify/tree/main/packages/infra/rolldown-native#readme",
76
76
  "optionalDependencies": {
77
- "@gjsify/rolldown-native-darwin-arm64": "0.64.5",
78
- "@gjsify/rolldown-native-darwin-x64": "0.64.5",
79
- "@gjsify/rolldown-native-linux-arm64": "0.64.5",
80
- "@gjsify/rolldown-native-linux-x64": "0.64.5"
77
+ "@gjsify/rolldown-native-darwin-arm64": "0.64.7",
78
+ "@gjsify/rolldown-native-darwin-x64": "0.64.7",
79
+ "@gjsify/rolldown-native-linux-arm64": "0.64.7",
80
+ "@gjsify/rolldown-native-linux-x64": "0.64.7"
81
81
  }
82
82
  }