Skip to content

Commit 10e6142

Browse files
committed
Add initial Rust JSG integration with error support
1 parent e10895c commit 10e6142

31 files changed

+2891
-6
lines changed

build/wd_rust_crate.bzl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ def rust_cxx_bridge(
88
deps = [],
99
visibility = [],
1010
strip_include_prefix = None,
11-
include_prefix = None):
11+
include_prefix = None,
12+
tags = [],
13+
local_defines = [],
14+
features = []):
1215
native.genrule(
1316
name = "%s/generated" % name,
1417
srcs = [src],
@@ -29,12 +32,15 @@ def rust_cxx_bridge(
2932
hdrs = [src + ".h"] + hdrs,
3033
strip_include_prefix = strip_include_prefix,
3134
include_prefix = include_prefix,
35+
local_defines = local_defines,
36+
features = features,
3237
linkstatic = select({
3338
"@platforms//os:windows": True,
3439
"//conditions:default": False,
3540
}),
3641
deps = deps,
3742
visibility = visibility,
43+
tags = tags,
3844
target_compatible_with = select({
3945
"@//build/config:no_build": ["@platforms//:incompatible"],
4046
"//conditions:default": [],
@@ -53,6 +59,9 @@ def wd_rust_crate(
5359
test_deps = [],
5460
test_proc_macro_deps = [],
5561
cxx_bridge_deps = [],
62+
cxx_bridge_tags = [],
63+
cxx_bridge_local_defines = [],
64+
cxx_bridge_features = [],
5665
visibility = None):
5766
"""Define rust crate.
5867
@@ -100,6 +109,9 @@ def wd_rust_crate(
100109
# Not applying visibility here – if you import the cxxbridge header, you will likely
101110
# also need the rust library itself to avoid linker errors.
102111
deps = cxx_bridge_deps,
112+
tags = cxx_bridge_tags,
113+
local_defines = cxx_bridge_local_defines,
114+
features = cxx_bridge_features,
103115
)
104116

105117
for bridge_src in cxx_bridge_srcs:

compile_flags.txt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,24 @@
5656
-isystembazel-bin/src/rust/cxx-integration/_virtual_includes/cxx-include/
5757
-isystembazel-bin/src/rust/cxx-integration/_virtual_includes/cxx-integration@cxx
5858
-isystembazel-bin/src/rust/cxx-integration-test/_virtual_includes/cxx-integration-test@cxx
59-
-isystembazel-bin/src/rust/dns/_virtual_includes/dns@cxx
59+
-isystembazel-bin/src/rust/cxx-integration-test/_virtual_includes/lib.rs@cxx
60+
-isystembazel-bin/src/rust/kj/_virtual_includes/ffi
6061
-isystembazel-bin/src/rust/kj/_virtual_includes/http.rs@cxx
6162
-isystembazel-bin/src/rust/kj/_virtual_includes/io.rs@cxx
6263
-isystembazel-bin/src/rust/kj/tests/_virtual_includes/lib.rs@cxx
6364
-isystembazel-bin/src/rust/python-parser/_virtual_includes/python-parser@cxx
6465
-isystembazel-bin/src/rust/net/_virtual_includes/net@cxx
6566
-isystembazel-bin/src/rust/transpiler/_virtual_includes/transpiler@cxx
67+
-isystembazel-bin/src/rust/api/_virtual_includes/lib.rs@cxx
68+
-isystembazel-bin/src/rust/jsg/_virtual_includes/bridge
69+
-isystembazel-bin/src/rust/jsg/_virtual_includes/ffi
70+
-isystembazel-bin/src/rust/jsg/_virtual_includes/lib.rs@cxx
71+
-isystembazel-bin/src/rust/jsg/_virtual_includes/modules.rs@cxx
72+
-isystembazel-bin/src/rust/jsg/_virtual_includes/v8.rs@cxx
73+
-isystembazel-bin/src/rust/jsg-test/_virtual_includes/ffi-hdrs
74+
-isystembazel-bin/src/rust/jsg-test/_virtual_includes/lib.rs@cxx
75+
-isystembazel-bin/src/rust/gen-compile-cache/_virtual_includes/cxx-bridge
76+
-isystembazel-bin/src/rust/gen-compile-cache/_virtual_includes/gen-compile-cache@cxx
6677
-D_FORTIFY_SOURCE=1
6778
-D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES
6879
-D_LIBCPP_NO_ABI_TAG

patches/v8/0014-Add-another-slot-in-the-isolate-for-embedder.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ index 9a39f8ede92bad9acf1c390cde2048d7a9eb6a88..efdd0ec674f11a0e68a2e996f6ac0dc6
1414
static const int kExternalOneByteRepresentationTag = 0x0a;
1515

1616
- static const uint32_t kNumIsolateDataSlots = 4;
17-
+ static const uint32_t kNumIsolateDataSlots = 5;
17+
+ static const uint32_t kNumIsolateDataSlots = 6;
1818
static const int kStackGuardSize = 8 * kApiSystemPointerSize;
1919
static const int kNumberOfBooleanFlags = 6;
2020
static const int kErrorMessageParamSize = 1;

src/rust/api/BUILD.bazel

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
load("//:build/wd_rust_crate.bzl", "wd_rust_crate")
2+
3+
wd_rust_crate(
4+
name = "api",
5+
cxx_bridge_deps = ["//src/rust/jsg"],
6+
cxx_bridge_srcs = ["lib.rs"],
7+
proc_macro_deps = [
8+
"//src/rust/jsg-macros",
9+
],
10+
test_deps = ["//src/rust/jsg-test"],
11+
visibility = ["//visibility:public"],
12+
deps = [
13+
"//src/rust/jsg",
14+
"@crates_vendor//:thiserror",
15+
],
16+
)

0 commit comments

Comments
 (0)