Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ build --cxxopt="-fbracket-depth=512" --host_cxxopt="-fbracket-depth=512"
build --@rules_rust//:extra_rustc_flag=-Cdebug-assertions=n
build --@rules_rust//:extra_exec_rustc_flags=-Cdebug-assertions=n
build --@rules_rust//:rustfmt.toml=//src/rust:rustfmt.toml
build --@rules_rust//rust/toolchain/channel=nightly

# We default to not enabling debug assertions and unwinding for Rust. For debug builds this is not
# the right setting, but unfortunately we can't set that directly.
Expand Down
2 changes: 1 addition & 1 deletion build/rust_lint.bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ build:rust-enable-clippy-checks --output_groups=+clippy_checks
# - clippy::non_std_lazy_statics – triggers on lazy_static, non-trivial to replace
# - clippy::format_push_string – avoids single memory allocation, but makes code less readable
# - clippy::cast_possible_truncation - usize/u64 conversion warning is unbelievably noisy
build:rust-enable-clippy-checks --@rules_rust//:clippy_flags=-Wclippy::pedantic,-Wclippy::redundant_clone,-Wclippy::str_to_string,-Wclippy::string_to_string,-Wclippy::to_string_in_format_args,-Wclippy::unnecessary_to_owned,-Wclippy::implicit_clone,-Wclippy::suspicious_to_owned,-Wclippy::unnecessary_to_owned,-Wclippy::nursery,-Wclippy::dbg_macro,-Wclippy::unwrap_used,-Wclippy::allow_attributes,-Aclippy::missing_const_for_fn,-Aclippy::cognitive_complexity,-Aclippy::trait_duplication_in_bounds,-Aclippy::non_send_fields_in_send_ty,-Aclippy::option_if_let_else,-Aclippy::missing_errors_doc,-Aclippy::must_use_candidate,-Aclippy::future_not_send,-Aclippy::trivial_regex,-Aclippy::literal_string_with_formatting_args,-Aclippy::non_std_lazy_statics,-Aclippy::format_push_string,-Aclippy::cast_possible_truncation,-Dwarnings
build:rust-enable-clippy-checks --@rules_rust//:clippy_flags=-Wclippy::pedantic,-Wclippy::redundant_clone,-Wclippy::str_to_string,-Wclippy::to_string_in_format_args,-Wclippy::unnecessary_to_owned,-Wclippy::implicit_clone,-Wclippy::suspicious_to_owned,-Wclippy::unnecessary_to_owned,-Wclippy::nursery,-Wclippy::dbg_macro,-Wclippy::unwrap_used,-Wclippy::allow_attributes,-Aclippy::missing_const_for_fn,-Aclippy::cognitive_complexity,-Aclippy::trait_duplication_in_bounds,-Aclippy::non_send_fields_in_send_ty,-Aclippy::option_if_let_else,-Aclippy::missing_errors_doc,-Aclippy::must_use_candidate,-Aclippy::future_not_send,-Aclippy::trivial_regex,-Aclippy::literal_string_with_formatting_args,-Aclippy::non_std_lazy_statics,-Aclippy::format_push_string,-Aclippy::cast_possible_truncation,-Dwarnings
build --@rules_rust//rust/settings:clippy.toml=//src/rust:clippy.toml

# enable rustfmt checks
Expand Down
54 changes: 54 additions & 0 deletions build/wd_rust_proc_macro.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
load("@rules_rust//rust:defs.bzl", "rust_proc_macro", "rust_test")

def wd_rust_proc_macro(
name,
deps = [],
data = [],
test_env = {},
test_tags = [],
test_deps = [],
visibility = None):
"""Define rust procedural macro crate.

Args:
name: crate name.
deps: crate dependencies: rust crates (typically includes proc-macro2, quote, syn).
data: additional data files.
test_env: additional test environment variables.
test_tags: additional test tags.
test_deps: test-only dependencies.
visibility: crate visibility.
"""
srcs = native.glob(["**/*.rs"])
crate_name = name.replace("-", "_")

rust_proc_macro(
name = name,
crate_name = crate_name,
srcs = srcs,
deps = deps + ["@workerd//deps/rust:runtime"],
visibility = visibility,
data = data,
target_compatible_with = select({
"@//build/config:no_build": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
)

rust_test(
name = name + "_test",
crate = ":" + name,
env = {
"RUST_BACKTRACE": "1",
# rust test runner captures stderr by default, which makes debugging tests very hard
"RUST_TEST_NOCAPTURE": "1",
# our tests are usually very heavy and do not support concurrent invocation
"RUST_TEST_THREADS": "1",
} | test_env,
tags = test_tags,
deps = test_deps,
experimental_use_cc_common_link = select({
"@platforms//os:windows": 0,
"//conditions:default": 1,
}),
)
3 changes: 2 additions & 1 deletion compile_flags.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,14 @@
-isystembazel-bin/src/rust/cxx-integration/_virtual_includes/cxx-include/
-isystembazel-bin/src/rust/cxx-integration/_virtual_includes/cxx-integration@cxx
-isystembazel-bin/src/rust/cxx-integration-test/_virtual_includes/cxx-integration-test@cxx
-isystembazel-bin/src/rust/dns/_virtual_includes/dns@cxx
-isystembazel-bin/src/rust/kj/_virtual_includes/http.rs@cxx
-isystembazel-bin/src/rust/kj/_virtual_includes/io.rs@cxx
-isystembazel-bin/src/rust/kj/tests/_virtual_includes/lib.rs@cxx
-isystembazel-bin/src/rust/python-parser/_virtual_includes/python-parser@cxx
-isystembazel-bin/src/rust/net/_virtual_includes/net@cxx
-isystembazel-bin/src/rust/transpiler/_virtual_includes/transpiler@cxx
-isystembazel-bin/src/rust/api/_virtual_includes/lib.rs@cxx
-isystembazel-bin/src/rust/jsg/_virtual_includes/modules.rs@cxx
-D_FORTIFY_SOURCE=1
-D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES
-D_LIBCPP_NO_ABI_TAG
Expand Down
6 changes: 6 additions & 0 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ prepare:
cargo install gen-compile-commands watchexec-cli
just create-external
just compile-commands
just prepare-rust

prepare-rust:
rustup install 1.90.0
rustup component add rust-analyzer
rustup update

prepare-ubuntu:
sudo apt-get install -y --no-install-recommends libc++abi1-19 libc++1-19 libc++-19-dev lld-19 bazelisk python3 lcov fd-find
Expand Down
7 changes: 4 additions & 3 deletions src/rust/dns/BUILD.bazel → src/rust/api/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
load("//:build/wd_rust_crate.bzl", "wd_rust_crate")

wd_rust_crate(
name = "dns",
cxx_bridge_src = "lib.rs",
name = "api",
cxx_bridge_deps = ["//src/rust/jsg"],
cxx_bridge_srcs = ["lib.rs"],
visibility = ["//visibility:public"],
deps = [
"//src/rust/cxx-integration",
"//src/rust/jsg",
"@crates_vendor//:thiserror",
],
)
Loading
Loading