Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
e420f5f
Provide error context for typed array clone check
mivort Sep 30, 2025
fe94254
Fix secondary api blocks not registering docs.
Houtamelo Oct 3, 2025
663535e
Add main loop callbacks to ExtensionLibrary
beicause Oct 8, 2025
7187618
Codegen: Support sys types in outgoing Ptrcalls.
Yarwin Oct 10, 2025
ce2cf79
Merge pull request #1363 from Yarwin/support-sys-types-in-codegen
Bromeon Oct 12, 2025
3db89e8
Merge pull request #1313 from beicause/main-loop-callbacks
Bromeon Oct 12, 2025
88de7c8
Codegen for `Array<T>` - required to properly initialize and cache Ar…
Yarwin Oct 6, 2025
66e74c9
Remove `func_general_lifetime` from FnParamTokens since it was never …
Yarwin Oct 6, 2025
e0d30f9
Merge pull request #1357 from Yarwin/fix-wrongly-assumed-array-type
Yarwin Oct 12, 2025
2dde78e
Merge pull request #1348 from mivort/clone-validation-more-context
Bromeon Oct 13, 2025
ae07e11
Doc bugfixes and improvements
Yarwin Oct 4, 2025
245ef3a
Merge pull request #1355 from Yarwin/fix-docs-in-godot-api-secondary
Bromeon Oct 13, 2025
f08c483
Retain spans in newly generated TokenStreams when possible
Bromeon Jul 20, 2025
fff255c
Move virtual definitions: sys::godot_virtual_consts -> private::virtuals
Bromeon Jul 20, 2025
854897b
Declare virtual signatures in central place
Bromeon Jul 20, 2025
e3f67f6
Store signature of virtual methods
Bromeon Oct 17, 2025
a5d6428
Merge pull request #1370 from godot-rust/qol/spans
Bromeon Oct 19, 2025
eb29786
Qol: Preserve span of arguments for better compile errors.
Yarwin Oct 19, 2025
57f4206
Bugfix: Ease `AsArg<Option<Gd<T>>>` bounds to make it usable with sig…
Yarwin Oct 18, 2025
022a928
Merge pull request #1373 from Yarwin/qol/improve-spans
Yarwin Oct 19, 2025
7079ec0
Merge pull request #1371 from Yarwin/bugfix/ease-asarg-bounds
Yarwin Oct 19, 2025
2264fdc
Codegen: Support sys types in outgoing Ptrcalls.
Yarwin Oct 12, 2025
41e5f47
Merge pull request #1365 from Yarwin/qol/support_sys_pointer_params_i…
Bromeon Oct 21, 2025
b0b6069
Change reload semantics for macOS
JoeyEamigh Oct 21, 2025
10eac7e
Hot-reload CI: test also change of .gdextension file
JoeyEamigh Oct 21, 2025
01d3346
Merge pull request #1367 from JoeyEamigh/fix_macos_hot_reload
Bromeon Oct 22, 2025
26bad2e
Update to litrs 1.0
LukasKalbertodt Oct 22, 2025
61c650c
Merge pull request #1377 from LukasKalbertodt/master
Bromeon Oct 22, 2025
40b57bd
Deprecate #[class(no_init)] for editor plugins
Bromeon Oct 22, 2025
ae6885b
Remove old attribute keys, but keep error message for now
Bromeon Oct 22, 2025
8f92a08
Merge pull request #1378 from godot-rust/bugfix/editor-plugin-no-init
Bromeon Oct 22, 2025
ffcfcab
Allow opening itests in editor
Bromeon Oct 22, 2025
6a01f75
Merge pull request #1379 from godot-rust/qol/editor-itest
Bromeon Oct 22, 2025
fe630c4
renamed builtin hash -> hash_u32; added tests
markogalevski Oct 22, 2025
2542574
ExtensionLibrary: on_main_loop_* -> on_stage_[de]init + on_main_loop_…
Bromeon Oct 22, 2025
c5ff2d1
Fix documentation of `InitLevel`
Bromeon Oct 23, 2025
025b1fb
Extract InitLevel + InitStage to separate file
Bromeon Oct 23, 2025
959c85b
Update crate version: 0.4.0 -> 0.4.1
Bromeon Oct 23, 2025
3d44fb6
Compat layer for old main-loop API
Bromeon Oct 23, 2025
248ee3a
Merge pull request #1380 from godot-rust/qol/main-loop-api
Bromeon Oct 24, 2025
7491443
Merge pull request #1366 from markogalevski/rust_vs_godot_hashes
Bromeon Oct 24, 2025
21a85e2
Fix ConvertError Display formatting for custom errors
Bromeon Oct 24, 2025
c5f3042
Backport Godot fix for incorrect `Glyph` native-struct
Bromeon Oct 17, 2025
fd043d5
Merge pull request #1369 from godot-rust/bugfix/glyph-struct-layout
Bromeon Oct 24, 2025
c98a0c2
Only provide function name to CallContext in debug
lyonbeckers Oct 25, 2025
bbc95a6
Add API to fetch autoloads by name
Bromeon Oct 25, 2025
81dfc9a
Validate call params for `gd_self` virtual methods.
Yarwin Oct 25, 2025
a2d23de
Cache autoloads once resolved
Bromeon Oct 25, 2025
f025bd7
Merge pull request #1381 from godot-rust/feature/autoload
Bromeon Oct 25, 2025
8ad4daf
Merge pull request #1382 from Yarwin/bugfix/validate-call-params-for-…
Bromeon Oct 25, 2025
fcf8b0f
Add cargo features to configure safety checks
beicause Oct 11, 2025
3bffdf6
Terminology around safety/safeguard levels
Bromeon Oct 25, 2025
096af2e
Experimental support for required parameters/returns in Godot APIs
Bromeon Oct 25, 2025
3a75a3b
Merge pull request #1383 from godot-rust/feature/required-object-apis
Bromeon Oct 26, 2025
bde2c1a
Make #[cfg] model for safeguards easier to understand
Bromeon Oct 25, 2025
010b5a5
Update itests to conform with new safeguard levels
Bromeon Oct 25, 2025
a19eda5
Fix UB (check accidentally only done in strict, not balanced)
Bromeon Oct 26, 2025
9c3e8e1
Refactor and simplify object liveness/RTTI checks
Bromeon Oct 26, 2025
a14de8f
Add new CI jobs with safeguard Cargo features
Bromeon Oct 26, 2025
84c0c11
Fix codegen regression: `Array<Option<Gd>>` -> `Array<Gd>`
Bromeon Oct 26, 2025
c3c09f3
Merge pull request #1385 from godot-rust/bugfix/array-codegen
Bromeon Oct 26, 2025
2100dbf
Update crate version: 0.4.1 -> 0.4.2
Bromeon Oct 26, 2025
9cd4d65
Merge pull request #1331 from lyonbeckers/debug-callcontext
Bromeon Oct 26, 2025
8733da7
Merge pull request #1278 from beicause/safety-level-config
Bromeon Oct 27, 2025
709c1e3
Verify that panicking ptrcalls return Godot default value
Bromeon Oct 28, 2025
98477e9
Change ptrcalls to use Result instead of panics
Bromeon Oct 28, 2025
47aef2e
Merge pull request #1387 from godot-rust/qol/ptrcall-panics
Bromeon Oct 28, 2025
230547e
Add `rename` to `#[var]`
lilizoey Oct 28, 2025
69c346e
Merge pull request #1388 from lilizoey/feature/rename-var
Bromeon Oct 29, 2025
41c0aad
Improve diagnostics in XML register-docs test
Bromeon Nov 1, 2025
bcc4789
Simplify + clean up XML doc generation
Bromeon Nov 1, 2025
7e92794
Sort XML blocks for deterministic output; update expected XML
Bromeon Nov 1, 2025
2d0a89b
Merge pull request #1391 from godot-rust/bugfix/register-doc-ci
Bromeon Nov 1, 2025
b07d883
Various small cleanups
Bromeon Oct 26, 2025
da6710c
check.sh: run rustfmt in nightly if available
Bromeon Nov 1, 2025
105c862
`#[bench(manual)]` for more control, including setup
Bromeon Nov 1, 2025
732b1ae
Merge pull request #1386 from godot-rust/qol/cleanups
Bromeon Nov 1, 2025
bbd113a
Merge pull request #1390 from godot-rust/qol/bench-setup
Bromeon Nov 1, 2025
3832736
Add `Array::functional_ops()`
Bromeon Nov 1, 2025
18f94ac
Merge pull request #1393 from godot-rust/feature/array-functional-ops
Bromeon Nov 2, 2025
c82104f
Update `runtime_version` to use non-deprecated get_godot_version poin…
Yarwin Nov 2, 2025
9182513
Merge pull request #1394 from Yarwin/update-get-godot-version
Bromeon Nov 2, 2025
a4641a5
Special version of cell.rs/guard.rs for goodot-rapier (very experimen…
Yarwin Nov 3, 2025
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
25 changes: 23 additions & 2 deletions .github/composite/godot-itest/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ inputs:
default: ''
description: "If provided, acts as an argument for '--target', and results in output files written to ./target/{target}"

rust-target-dir:
required: false
default: ''
description: "If provided, determines where to find the generated dylib. Example: 'release' if Godot editor build would look for debug otherwise."

rust-cache-key:
required: false
default: ''
Expand Down Expand Up @@ -151,6 +156,7 @@ runs:
env:
RUSTFLAGS: ${{ inputs.rust-env-rustflags }}
TARGET: ${{ inputs.rust-target }}
OUTPUT_DIR: ${{ inputs.rust-target-dir || 'debug' }}
run: |
targetArgs=""
if [[ -n "$TARGET" ]]; then
Expand All @@ -162,8 +168,23 @@ runs:

# Instead of modifying .gdextension, rename the output directory.
if [[ -n "$TARGET" ]]; then
rm -rf target/debug
mv target/$TARGET/debug target
rm -rf target/debug target/release
echo "Build output (tree -L 2 target/$TARGET/$OUTPUT_DIR):"
tree -L 2 target/$TARGET/$OUTPUT_DIR || echo "(tree not installed)"
mv target/$TARGET/$OUTPUT_DIR target/ || {
echo "::error::Output dir $TARGET/$OUTPUT_DIR not found"
exit 1
}
# echo "Intermediate dir (tree -L 2 target):"
# tree -L 2 target || echo "(tree not installed)"
if [[ "$OUTPUT_DIR" != "debug" ]]; then
mv target/$OUTPUT_DIR target/debug
fi
echo "Resulting dir (tree -L 2 target):"
tree -L 2 target || echo "(tree not installed)"
# echo "itest.gdextension contents:"
# cat itest/godot/itest.gdextension
# echo "----------------------------------------------------"
fi
shell: bash

Expand Down
32 changes: 27 additions & 5 deletions .github/workflows/full-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -378,14 +378,14 @@ jobs:
godot-prebuilt-patch: '4.2.2'
hot-reload: api-4-2

# Memory checks: special Godot binaries compiled with AddressSanitizer/LeakSanitizer to detect UB/leaks.
# Memory checks: special Godot binaries compiled with AddressSanitizer/LeakSanitizer to detect UB/leaks. Always Linux.
# See also https://rustc-dev-guide.rust-lang.org/sanitizers.html.
#
# Additionally, the Godot source is patched to make dlclose() a no-op, as unloading dynamic libraries loses stacktrace and
# cause false positives like println!. See https://github.com/google/sanitizers/issues/89.
#
# There is also a gcc variant besides clang, which is currently not used.
- name: linux-memcheck-nightly
- name: memcheck-nightly
os: ubuntu-22.04
artifact-name: linux-memcheck-nightly
godot-binary: godot.linuxbsd.editor.dev.x86_64.llvm.san
Expand All @@ -395,7 +395,28 @@ jobs:
# Sanitizers can't build proc-macros and build scripts; with --target, cargo ignores RUSTFLAGS for those two.
rust-target: x86_64-unknown-linux-gnu

- name: linux-memcheck-4.2
- name: memcheck-release-disengaged
os: ubuntu-22.04
artifact-name: linux-memcheck-nightly
godot-binary: godot.linuxbsd.editor.dev.x86_64.llvm.san
rust-toolchain: nightly
rust-env-rustflags: -Zrandomize-layout -Zsanitizer=address
# Currently without itest/codegen-full-experimental.
rust-extra-args: --release --features godot/safeguards-release-disengaged
rust-target: x86_64-unknown-linux-gnu
rust-target-dir: release # We're running Godot debug build with Rust release dylib.

- name: memcheck-dev-balanced
os: ubuntu-22.04
artifact-name: linux-memcheck-nightly
godot-binary: godot.linuxbsd.editor.dev.x86_64.llvm.san
rust-toolchain: nightly
rust-env-rustflags: -Zrandomize-layout -Zsanitizer=address
# Currently without itest/codegen-full-experimental.
rust-extra-args: --features godot/safeguards-dev-balanced
rust-target: x86_64-unknown-linux-gnu

- name: memcheck-4.2
os: ubuntu-22.04
artifact-name: linux-memcheck-4.2
godot-binary: godot.linuxbsd.editor.dev.x86_64.llvm.san
Expand All @@ -419,6 +440,7 @@ jobs:
rust-toolchain: ${{ matrix.rust-toolchain || 'stable' }}
rust-env-rustflags: ${{ matrix.rust-env-rustflags }}
rust-target: ${{ matrix.rust-target }}
rust-target-dir: ${{ matrix.rust-target-dir }}
rust-cache-key: ${{ matrix.rust-cache-key }}
with-llvm: ${{ contains(matrix.name, 'macos') && contains(matrix.rust-extra-args, 'api-custom') }}
godot-check-header: ${{ matrix.godot-check-header }}
Expand Down Expand Up @@ -500,7 +522,7 @@ jobs:
- name: "Determine success or failure"
run: |
DEPENDENCIES='${{ toJson(needs) }}'

echo "Dependency jobs:"
all_success=true
for job in $(echo "$DEPENDENCIES" | jq -r 'keys[]'); do
Expand All @@ -510,7 +532,7 @@ jobs:
all_success=false
fi
done

if [[ "$all_success" == "false" ]]; then
echo "One or more dependency jobs failed or were cancelled."
exit 1
Expand Down
26 changes: 24 additions & 2 deletions .github/workflows/minimal-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,9 @@ jobs:
godot-binary: godot.linuxbsd.editor.dev.x86_64
godot-prebuilt-patch: '4.2.2'

# Memory checkers
# Memory checkers (always Linux).

- name: linux-memcheck
- name: memcheck
os: ubuntu-22.04
artifact-name: linux-memcheck-nightly
godot-binary: godot.linuxbsd.editor.dev.x86_64.llvm.san
Expand All @@ -222,6 +222,27 @@ jobs:
# Sanitizers can't build proc-macros and build scripts; with --target, cargo ignores RUSTFLAGS for those two.
rust-target: x86_64-unknown-linux-gnu

- name: memcheck-release-disengaged
os: ubuntu-22.04
artifact-name: linux-memcheck-nightly
godot-binary: godot.linuxbsd.editor.dev.x86_64.llvm.san
rust-toolchain: nightly
rust-env-rustflags: -Zrandomize-layout -Zsanitizer=address
# Currently without itest/codegen-full-experimental.
rust-extra-args: --release --features godot/safeguards-release-disengaged
rust-target: x86_64-unknown-linux-gnu
rust-target-dir: release # We're running Godot debug build with Rust release dylib.

- name: memcheck-dev-balanced
os: ubuntu-22.04
artifact-name: linux-memcheck-nightly
godot-binary: godot.linuxbsd.editor.dev.x86_64.llvm.san
rust-toolchain: nightly
rust-env-rustflags: -Zrandomize-layout -Zsanitizer=address
# Currently without itest/codegen-full-experimental.
rust-extra-args: --features godot/safeguards-dev-balanced
rust-target: x86_64-unknown-linux-gnu

steps:
- uses: actions/checkout@v4

Expand All @@ -236,6 +257,7 @@ jobs:
rust-toolchain: ${{ matrix.rust-toolchain || 'stable' }}
rust-env-rustflags: ${{ matrix.rust-env-rustflags }}
rust-target: ${{ matrix.rust-target }}
rust-target-dir: ${{ matrix.rust-target-dir }}
with-llvm: ${{ contains(matrix.name, 'macos') && contains(matrix.rust-extra-args, 'api-custom') }}
godot-check-header: ${{ matrix.godot-check-header }}
godot-indirect-json: ${{ matrix.godot-indirect-json }}
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ exp.rs

# Windows specific
desktop.ini

# Test outputs
/itest/rust/src/register_tests/res/actual_registered_docs.xml
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ which = "7"
# * quote: 1.0.37 allows tokenizing CStr.
# * venial: 0.6.1 contains some bugfixes.
heck = "0.5"
litrs = "0.4"
litrs = { version = "1.0", features = ["proc-macro2"] }
markdown = "=1.0.0-alpha.23"
nanoserde = "0.2"
proc-macro2 = "1.0.80"
Expand Down
57 changes: 56 additions & 1 deletion Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,67 @@ Cutting-edge API docs of the `master` branch are available [here](https://godot-

## Quick navigation

- [v0.4.0](#v040)
- [v0.4.0](#v040), [v0.4.1](#v041), [v0.4.2](#v042)
- [v0.3.0](#v030), [v0.3.1](#v031), [v0.3.2](#v032), [v0.3.3](#v033), [v0.3.4](#v034), [v0.3.5](#v035)
- [v0.2.0](#v020), [v0.2.1](#v021), [v0.2.2](#v022), [v0.2.3](#v023), [v0.2.4](#v024)
- [v0.1.1](#v011), [v0.1.2](#v012), [v0.1.3](#v013)


## [v0.4.2](https://docs.rs/godot/0.4.2)

_26 October 2025_

### 🌻 Features

- Simple API to fetch autoloads ([#1381](https://github.com/godot-rust/gdext/pull/1381))
- Experimental support for required parameters/returns in Godot APIs ([#1383](https://github.com/godot-rust/gdext/pull/1383))

### 🧹 Quality of life

- `ExtensionLibrary::on_main_loop_*`: merge into new `on_stage_init/deinit` API ([#1380](https://github.com/godot-rust/gdext/pull/1380))
- Rename builtin `hash()` -> `hash_u32()`; add tests ([#1366](https://github.com/godot-rust/gdext/pull/1366))

### 🛠️ Bugfixes

- Backport Godot fix for incorrect `Glyph` native-struct ([#1369](https://github.com/godot-rust/gdext/pull/1369))
- Validate call params for `gd_self` virtual methods ([#1382](https://github.com/godot-rust/gdext/pull/1382))
- Fix codegen regression: `Array<Option<Gd>>` -> `Array<Gd>` ([#1385](https://github.com/godot-rust/gdext/pull/1385))


## [v0.4.1](https://docs.rs/godot/0.4.1)

_23 October 2025_

### 🌻 Features

- Add main loop callbacks to `ExtensionLibrary` ([#1313](https://github.com/godot-rust/gdext/pull/1313), [#1380](https://github.com/godot-rust/gdext/pull/1380))
- Class Docs – register docs in `#[godot_api(secondary)]`, simplify docs registration logic ([#1355](https://github.com/godot-rust/gdext/pull/1355))
- Codegen: support sys types in engine APIs ([#1363](https://github.com/godot-rust/gdext/pull/1363), [#1365](https://github.com/godot-rust/gdext/pull/1365))

### 📈 Performance

- Use Rust `str` instead of `CStr` in `ClassIdSource` ([#1334](https://github.com/godot-rust/gdext/pull/1334))

### 🧹 Quality of life

- Preserve doc comments for signal ([#1353](https://github.com/godot-rust/gdext/pull/1353))
- Provide error context for typed array clone check ([#1348](https://github.com/godot-rust/gdext/pull/1348))
- Improve spans; use tuple type for virtual signatures ([#1370](https://github.com/godot-rust/gdext/pull/1370))
- Preserve span of arguments for better compile errors ([#1373](https://github.com/godot-rust/gdext/pull/1373))
- Update to litrs 1.0 ([#1377](https://github.com/godot-rust/gdext/pull/1377))
- Allow opening itests in editor ([#1379](https://github.com/godot-rust/gdext/pull/1379))

### 🛠️ Bugfixes

- Ease `AsArg<Option<Gd<T>>>` bounds to make it usable with signals ([#1371](https://github.com/godot-rust/gdext/pull/1371))
- Handle panic in OnReady `auto_init` ([#1351](https://github.com/godot-rust/gdext/pull/1351))
- Update `GFile::read_as_gstring_entire()` after Godot removes `skip_cr` parameter ([#1349](https://github.com/godot-rust/gdext/pull/1349))
- Fix `Callable::from_sync_fn` doc example using deprecated `Result<T>` return ([#1347](https://github.com/godot-rust/gdext/pull/1347))
- Deprecate `#[class(no_init)]` for editor plugins ([#1378](https://github.com/godot-rust/gdext/pull/1378))
- Initialize and cache proper return value for generic, typed array ([#1357](https://github.com/godot-rust/gdext/pull/1357))
- Fix hot-reload crashes on macOS when the `.gdextension` file changes ([#1367](https://github.com/godot-rust/gdext/pull/1367))


## [v0.4.0](https://docs.rs/godot/0.4.0)

_29 September 2025_
Expand Down
8 changes: 7 additions & 1 deletion check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,13 @@ function findGodot() {
# builtins like `test`.

function cmd_fmt() {
run cargo fmt --all -- --check
# Run rustfmt in nightly toolchain if available.
if [[ $(rustup toolchain list) =~ nightly ]]; then
run cargo +nightly fmt --all -- --check
else
log -e "${YELLOW}Warning: nightly toolchain not found; stable rustfmt might not pass CI.${END}"
run cargo fmt --all -- --check
fi
}

function cmd_clippy() {
Expand Down
6 changes: 5 additions & 1 deletion godot-bindings/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "godot-bindings"
version = "0.4.0"
version = "0.4.2"
edition = "2021"
rust-version = "1.87"
license = "MPL-2.0"
Expand Down Expand Up @@ -33,6 +33,10 @@ api-custom = ["dep:bindgen", "dep:regex", "dep:which"]
api-custom-json = ["dep:nanoserde", "dep:bindgen", "dep:regex", "dep:which"]
api-custom-extheader = []

# Safeguard levels (see godot/lib.rs for detailed documentation).
safeguards-dev-balanced = []
safeguards-release-disengaged = []

[dependencies]
gdextension-api = { workspace = true }

Expand Down
2 changes: 1 addition & 1 deletion godot-bindings/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
// It's the only purpose of this build.rs file. If a better solution is found, this file can be removed.

#[rustfmt::skip]
fn main() {
fn main() {
let mut count = 0;
if cfg!(feature = "api-custom") { count += 1; }
if cfg!(feature = "api-custom-json") { count += 1; }
Expand Down
26 changes: 26 additions & 0 deletions godot-bindings/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -267,3 +267,29 @@ pub fn before_api(major_minor: &str) -> bool {
pub fn since_api(major_minor: &str) -> bool {
!before_api(major_minor)
}

pub fn emit_safeguard_levels() {
// Levels: disengaged (0), balanced (1), strict (2)
let mut safeguards_level = if cfg!(debug_assertions) { 2 } else { 1 };

// Override default level with Cargo feature, in dev/release profiles.
#[cfg(debug_assertions)]
if cfg!(feature = "safeguards-dev-balanced") {
safeguards_level = 1;
}
#[cfg(not(debug_assertions))]
if cfg!(feature = "safeguards-release-disengaged") {
safeguards_level = 0;
}

println!(r#"cargo:rustc-check-cfg=cfg(safeguards_balanced)"#);
println!(r#"cargo:rustc-check-cfg=cfg(safeguards_strict)"#);

// Emit #[cfg]s cumulatively: strict builds get both balanced and strict.
if safeguards_level >= 1 {
println!(r#"cargo:rustc-cfg=safeguards_balanced"#);
}
if safeguards_level >= 2 {
println!(r#"cargo:rustc-cfg=safeguards_strict"#);
}
}
2 changes: 1 addition & 1 deletion godot-cell/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "godot-cell"
version = "0.4.0"
version = "0.4.2"
edition = "2021"
rust-version = "1.87"
license = "MPL-2.0"
Expand Down
Loading
Loading