From a316a97a85b9c6839ce16aa3a4f14313150bc569 Mon Sep 17 00:00:00 2001 From: Jan Haller Date: Mon, 9 Oct 2023 20:55:44 +0200 Subject: [PATCH] Move chapters + redirects --- .gitignore | 3 +- book.toml | 139 ++++++++++++------ src/SUMMARY.md | 65 ++------ src/{gdext => }/contribute/conventions.md | 0 src/{gdext => }/contribute/dev-tools.md | 0 src/{gdext => }/contribute/index.md | 0 src/gdext/advanced/index.md | 3 - src/gdext/index.md | 51 ------- src/index.md | 79 ++++++---- src/{gdext => }/intro/hello-world.md | 0 src/{gdext => }/intro/index.md | 0 src/{gdext => }/intro/objects.md | 0 src/{gdext => }/intro/setup.md | 0 .../advanced => toolchain}/compatibility.md | 0 .../advanced => toolchain}/debugging.md | 0 .../advanced => toolchain}/godot-version.md | 0 src/toolchain/index.md | 6 + 17 files changed, 163 insertions(+), 183 deletions(-) rename src/{gdext => }/contribute/conventions.md (100%) rename src/{gdext => }/contribute/dev-tools.md (100%) rename src/{gdext => }/contribute/index.md (100%) delete mode 100644 src/gdext/advanced/index.md delete mode 100644 src/gdext/index.md rename src/{gdext => }/intro/hello-world.md (100%) rename src/{gdext => }/intro/index.md (100%) rename src/{gdext => }/intro/objects.md (100%) rename src/{gdext => }/intro/setup.md (100%) rename src/{gdext/advanced => toolchain}/compatibility.md (100%) rename src/{gdext/advanced => toolchain}/debugging.md (100%) rename src/{gdext/advanced => toolchain}/godot-version.md (100%) create mode 100644 src/toolchain/index.md diff --git a/.gitignore b/.gitignore index 38abaf3..c6a6624 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ book/ .DS_Store target tmp -.vscode/ \ No newline at end of file +.vscode/ +.idea/ \ No newline at end of file diff --git a/book.toml b/book.toml index 7fcba81..0ea5823 100644 --- a/book.toml +++ b/book.toml @@ -17,52 +17,103 @@ assets_version = "2.0.2" # do not edit: managed by `mdbook-admonish install` git-repository-url = "https://github.com/godot-rust/book" additional-css = ["config/mdbook-admonish.css"] -[output.html.redirect] -"introduction.html" = "gdnative" - -"getting-started.html" = "gdnative/intro" -"getting-started/hello-world.html" = "../gdnative/intro/hello-world.html" -"getting-started/setup.html" = "../gdnative/intro/setup.html" - -"gdnative-overview.html" = "gdnative/overview" -"gdnative-overview/wrappers.html" = "../gdnative/overview/wrappers.html" -"gdnative-overview/data-representations.html" = "../gdnative/overview/data-representations.html" -"gdnative-overview/architecture.html" = "../gdnative/overview/architecture.html" -"rust-binding.html" = "gdnative/bind" -"rust-binding/classes.html" = "../gdnative/bind/classes.html" -"rust-binding/methods.html" = "../gdnative/bind/methods.html" -"rust-binding/properties.html" = "../gdnative/bind/properties.html" -"rust-binding/to-variant-from-variant-export.html" = "../gdnative/bind/traits.html" -"rust-binding/calling-gdscript.html" = "../gdnative/bind/calling-gdscript.html" - -"faq.html" = "gdnative/faq" -"faq/code.html" = "../gdnative/faq/code.html" -"faq/multithreading.html" = "../gdnative/faq/multithreading.html" -"faq/configuration.html" = "../gdnative/faq/configuration.html" -"faq/support.html" = "../gdnative/faq/support.html" -"faq/community.html" = "../gdnative/faq/community.html" -"faq/godot4.html" = "../gdnative/faq/godot4.html" +[output.html.redirect] -"recipes.html" = "gdnative/recipes" -"recipes/async-tokio.html" = "../gdnative/recipes/async-tokio.html" -"recipes/custom-node-plugin.html" = "../gdnative/recipes/custom-node-plugin.html" -"recipes/external-resources.html" = "../gdnative/recipes/external-resources.html" -"recipes/logging.html" = "../gdnative/recipes/logging.html" -"recipes/nix-build-system.html" = "../gdnative/recipes/nix-build-system.html" -"recipes/panic-handler.html" = "../gdnative/recipes/panic-handler.html" +# Godot 4: gdext -> one level up +"gdext/intro/index.html" = "/book/intro/index.html" +"gdext/intro/setup.html" = "/book/intro/setup.html" +"gdext/intro/hello-world.html" = "/book/intro/hello-world.html" +"gdext/intro/objects.html" = "/book/intro/objects.html" +"gdext/advanced/index.html" = "/book/toolchain/index.html" +"gdext/advanced/compatibility.html" = "/book/toolchain/compatibility.html" +"gdext/advanced/godot.html-version" = "/book/toolchain/godot-version.html" +"gdext/advanced/debugging.html" = "/book/toolchain/debugging.html" +"gdext/contribute/index.html" = "/book/contribute/index.html" +"gdext/contribute/dev.html-tools" = "/book/contribute/dev-tools.html" +"gdext/contribute/conventions.html" = "/book/contribute/conventions.html" -"exporting.html" = "gdnative/export" -"exporting/android.html" = "../gdnative/export/android.html" -"exporting/ios.html" = "../gdnative/export/ios.html" -"exporting/macosx.html" = "../gdnative/export/macosx.html" -"exporting/html5.html" = "../gdnative/export/html5.html" +# Godot 3: gdnative -> new /gdnative-book prefix +"gdnative/intro/index.html" = "/gdnative-book/intro/index.html" +"gdnative/intro/setup.html" = "/gdnative-book/intro/setup.html" +"gdnative/intro/hello-world.html" = "/gdnative-book/intro/hello-world.html" +"gdnative/overview/index.html" = "/gdnative-book/overview/index.html" +"gdnative/overview/data-representations.html" = "/gdnative-book/overview/data-representations.html" +"gdnative/overview/wrappers.html" = "/gdnative-book/overview/wrappers.html" +"gdnative/overview/architecture.html" = "/gdnative-book/overview/architecture.html" +"gdnative/bind/index.html" = "/gdnative-book/bind/index.html" +"gdnative/bind/classes.html" = "/gdnative-book/bind/classes.html" +"gdnative/bind/methods.html" = "/gdnative-book/bind/methods.html" +"gdnative/bind/properties.html" = "/gdnative-book/bind/properties.html" +"gdnative/bind/traits.html" = "/gdnative-book/bind/traits.html" +"gdnative/bind/calling-gdscript.html" = "/gdnative-book/bind/calling-gdscript.html" +"gdnative/faq/index.html" = "/gdnative-book/faq/index.html" +"gdnative/faq/code.html" = "/gdnative-book/faq/code.html" +"gdnative/faq/multithreading.html" = "/gdnative-book/faq/multithreading.html" +"gdnative/faq/configuration.html" = "/gdnative-book/faq/configuration.html" +"gdnative/faq/support.html" = "/gdnative-book/faq/support.html" +"gdnative/faq/community.html" = "/gdnative-book/faq/community.html" +"gdnative/faq/godot4.html" = "/gdnative-book/faq/godot4.html" +"gdnative/recipes/index.html" = "/gdnative-book/recipes/index.html" +"gdnative/recipes/async-tokio.html" = "/gdnative-book/recipes/async-tokio.html" +"gdnative/recipes/custom-node-plugin.html" = "/gdnative-book/recipes/custom-node-plugin.html" +"gdnative/recipes/external-resources.html" = "/gdnative-book/recipes/external-resources.html" +"gdnative/recipes/logging.html" = "/gdnative-book/recipes/logging.html" +"gdnative/recipes/nix-build-system.html" = "/gdnative-book/recipes/nix-build-system.html" +"gdnative/recipes/panic-handler.html" = "/gdnative-book/recipes/panic-handler.html" +"gdnative/export/index.html" = "/gdnative-book/export/index.html" +"gdnative/export/android.html" = "/gdnative-book/export/android.html" +"gdnative/export/macosx.html" = "/gdnative-book/export/macosx.html" +"gdnative/export/html5.html" = "/gdnative-book/export/html5.html" +"gdnative/advanced/index.html" = "/gdnative-book/advanced/index.html" +"gdnative/advanced/custom-godot.html" = "/gdnative-book/advanced/custom-godot.html" +"gdnative/advanced/migrate-0-8.html" = "/gdnative-book/advanced/migrate-0-8.html" +"gdnative/advanced/migrate-0-9.html" = "/gdnative-book/advanced/migrate-0-9.html" +"gdnative/advanced/migrate-0-10.html" = "/gdnative-book/advanced/migrate-0-10.html" -"advanced-guides.html" = "gdnative/advanced" -"advanced-guides/custom-godot.html" = "../gdnative/advanced/custom-godot.html" -"advanced-guides/migrating-0-8.html" = "../gdnative/advanced/migrate-0-8.html" -"advanced-guides/migrating-0-9.html" = "../gdnative/advanced/migrate-0-9.html" -"advanced-guides/migrating-0-10.html" = "../gdnative/advanced/migrate-0-10.html" +# Third-party projects section +"projects/index.html" = "/gdnative-book/projects/index.html" +"projects/games.html" = "/gdnative-book/projects/games.html" +"projects/tools.html" = "/gdnative-book/projects/tools.html" +"projects/applications.html" = "/gdnative-book/projects/applications.html" -# Don't use = "projects", might cause redirect loop -"projects.html" = "projects/index.html" +# Old redirects (2022-) +"introduction.html" = "../gdnative-book/index.html" +"getting-started.html" = "/gdnative-book/intro/index.html" +"getting-started/hello-world.html" = "/gdnative-book/intro/hello-world.html" +"getting-started/setup.html" = "/gdnative-book/intro/setup.html" +"gdnative-overview.html" = "/gdnative-book/overview/index.html" +"gdnative-overview/wrappers.html" = "/gdnative-book/overview/wrappers.html" +"gdnative-overview/data-representations.html" = "/gdnative-book/overview/data-representations.html" +"gdnative-overview/architecture.html" = "/gdnative-book/overview/architecture.html" +"rust-binding.html" = "/gdnative-book/bind/index.html" +"rust-binding/classes.html" = "/gdnative-book/bind/classes.html" +"rust-binding/methods.html" = "/gdnative-book/bind/methods.html" +"rust-binding/properties.html" = "/gdnative-book/bind/properties.html" +"rust-binding/to-variant-from-variant-export.html" = "/gdnative-book/bind/traits.html" +"rust-binding/calling-gdscript.html" = "/gdnative-book/bind/calling-gdscript.html" +"faq.html" = "/gdnative-book/faq/index.html" +"faq/code.html" = "/gdnative-book/faq/code.html" +"faq/multithreading.html" = "/gdnative-book/faq/multithreading.html" +"faq/configuration.html" = "/gdnative-book/faq/configuration.html" +"faq/support.html" = "/gdnative-book/faq/support.html" +"faq/community.html" = "/gdnative-book/faq/community.html" +"faq/godot4.html" = "/gdnative-book/faq/godot4.html" +"recipes.html" = "/gdnative-book/recipes/index.html" +"recipes/async-tokio.html" = "/gdnative-book/recipes/async-tokio.html" +"recipes/custom-node-plugin.html" = "/gdnative-book/recipes/custom-node-plugin.html" +"recipes/external-resources.html" = "/gdnative-book/recipes/external-resources.html" +"recipes/logging.html" = "/gdnative-book/recipes/logging.html" +"recipes/nix-build-system.html" = "/gdnative-book/recipes/nix-build-system.html" +"recipes/panic-handler.html" = "/gdnative-book/recipes/panic-handler.html" +"exporting.html" = "/gdnative-book/export/index.html" +"exporting/android.html" = "/gdnative-book/export/android.html" +"exporting/ios.html" = "/gdnative-book/export/ios.html" +"exporting/macosx.html" = "/gdnative-book/export/macosx.html" +"exporting/html5.html" = "/gdnative-book/export/html5.html" +"advanced-guides.html" = "/gdnative-book/advanced/index.html" +"advanced-guides/custom-godot.html" = "/gdnative-book/advanced/custom-godot.html" +"advanced-guides/migrating-0-8.html" = "/gdnative-book/advanced/migrate-0-8.html" +"advanced-guides/migrating-0-9.html" = "/gdnative-book/advanced/migrate-0-9.html" +"advanced-guides/migrating-0-10.html" = "/gdnative-book/advanced/migrate-0-10.html" +"projects.html" = "../gdnative-book/projects/index.html" \ No newline at end of file diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 338a7eb..0533dd9 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -1,57 +1,14 @@ # Summary - [Introduction](index.md) -- [Godot 4: gdext](gdext/index.md) - - [Getting Started](gdext/intro/index.md) - - [Setup](gdext/intro/setup.md) - - [Hello World](gdext/intro/hello-world.md) - - [Managing objects in Rust](gdext/intro/objects.md) - - [Advanced topics](gdext/advanced/index.md) - - [Compatibility and stability](gdext/advanced/compatibility.md) - - [Selecting a Godot version](gdext/advanced/godot-version.md) - - [Debugging](gdext/advanced/debugging.md) - - [Contributing to gdext](gdext/contribute/index.md) - - [Dev tools and testing](gdext/contribute/dev-tools.md) - - [Code and API conventions](gdext/contribute/conventions.md) -- [Godot 3: gdnative](gdnative/index.md) - - [Getting Started](gdnative/intro/index.md) - - [Setup](gdnative/intro/setup.md) - - [Hello, world!](gdnative/intro/hello-world.md) - - [An Overview of GDNative](gdnative/overview/index.md) - - [Data representations](gdnative/overview/data-representations.md) - - [Ref, TRef and Instance](gdnative/overview/wrappers.md) - - [Game architecture](gdnative/overview/architecture.md) - - [Binding to Rust code](gdnative/bind/index.md) - - [Class registration](gdnative/bind/classes.md) - - [Exported methods](gdnative/bind/methods.md) - - [Exported properties](gdnative/bind/properties.md) - - [ToVariant, FromVariant and Export](gdnative/bind/traits.md) - - [Calling into GDScript from Rust](gdnative/bind/calling-gdscript.md) - - [FAQ](gdnative/faq/index.md) - - [Common code questions](gdnative/faq/code.md) - - [Multithreading](gdnative/faq/multithreading.md) - - [Configuration](gdnative/faq/configuration.md) - - [Versioning and supported platforms](gdnative/faq/support.md) - - [Community](gdnative/faq/community.md) - - [Godot 4.0 Status](gdnative/faq/godot4.md) - - [Recipes](gdnative/recipes/index.md) - - [Async with Tokio runtime](gdnative/recipes/async-tokio.md) - - [Custom node plugin](gdnative/recipes/custom-node-plugin.md) - - [Loading external resources](gdnative/recipes/external-resources.md) - - [Logging](gdnative/recipes/logging.md) - - [Nix as development environment](gdnative/recipes/nix-build-system.md) - - [Rust panic handler](gdnative/recipes/panic-handler.md) - - [Exporting](gdnative/export/index.md) - - [Android](gdnative/export/android.md) - - [(TODO) iOS](gdnative/export/ios.md) - - [Mac OS X](gdnative/export/macosx.md) - - [HTML5](gdnative/export/html5.md) - - [Advanced Guides](gdnative/advanced/index.md) - - [Using custom Godot versions](gdnative/advanced/custom-godot.md) - - [Migrating from godot-rust 0.8](gdnative/advanced/migrate-0-8.md) - - [Migrating from godot-rust 0.9](gdnative/advanced/migrate-0-9.md) - - [Migrating from godot-rust 0.10](gdnative/advanced/migrate-0-10.md) -- [Third-party projects](./projects/index.md) - - [Games](./projects/games.md) - - [Tools and integrations](./projects/tools.md) - - [Applications](./projects/applications.md) +- [Getting Started](intro/index.md) + - [Setup](intro/setup.md) + - [Hello World](intro/hello-world.md) + - [Managing objects in Rust](intro/objects.md) +- [Toolchain](toolchain/index.md) + - [Compatibility and stability](toolchain/compatibility.md) + - [Selecting a Godot version](toolchain/godot-version.md) + - [Debugging](toolchain/debugging.md) +- [Contributing to gdext](contribute/index.md) + - [Dev tools and testing](contribute/dev-tools.md) + - [Code and API conventions](contribute/conventions.md) diff --git a/src/gdext/contribute/conventions.md b/src/contribute/conventions.md similarity index 100% rename from src/gdext/contribute/conventions.md rename to src/contribute/conventions.md diff --git a/src/gdext/contribute/dev-tools.md b/src/contribute/dev-tools.md similarity index 100% rename from src/gdext/contribute/dev-tools.md rename to src/contribute/dev-tools.md diff --git a/src/gdext/contribute/index.md b/src/contribute/index.md similarity index 100% rename from src/gdext/contribute/index.md rename to src/contribute/index.md diff --git a/src/gdext/advanced/index.md b/src/gdext/advanced/index.md deleted file mode 100644 index fe6b595..0000000 --- a/src/gdext/advanced/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Advanced topics - -See subchapters for more information on advanced gdext usage. \ No newline at end of file diff --git a/src/gdext/index.md b/src/gdext/index.md deleted file mode 100644 index 62eebf2..0000000 --- a/src/gdext/index.md +++ /dev/null @@ -1,51 +0,0 @@ -# Godot 4: gdext library - -This chapter is under construction and is going to elaborate the **Rust binding for Godot 4**. - - - -## Currently supported features - -For an up-to-date overview of implementation status, consult [issue #24][features]. - - -## GDExtension API: what's new - -This section briefly mentions the difference between the native interfaces in Godot 3 and 4 from a functional point of view, -without going into Rust. - -While the underlying FFI (foreign function interface) layer has been completely rewritten, a lot of concepts remain the same -from a user point of view. In particular, Godot's approach with a node-based scene graph, composed of classes in an inheritance -relation, has not changed. - -That said, there are some notable differences: - -1. **No more native scripts** - - With GDNative, Rust classes could be registered as _native scripts_. These scripts are attached to nodes in order to enhance - their functionality, analogous to how GDScript scripts could be attached. GDExtension on the other hand directly supports Rust types - as engine classes, see also next point. - - Keep this in mind when porting GDScript code to Rust: instead of replacing the GDScript with a native script, you need to change the - node type to a Rust class that inherits the node. - -2. **First-class citizen types** - - In Godot 3, user-defined native classes had lots of limitations in the editor: type annotations were not fully supported, they could - not easily be used as custom resources, etc. With GDExtension, user-defined classes in Rust behave much closer to GDScript classes. - -3. **Always-on** - - There is no differentiation between "tool" and "normal" scripts anymore, as it was the case in GDNative. Rust logic runs as soon as - the Godot editor launches, but gdext explicitly changes this behavior. By default, all virtual callbacks (`ready`, `process` etc.) - are not invoked **in editor mode**. This behavior can be configured when implementing the [`ExtensionLibrary`][extension-library-doc] trait. - -4. **No recompilation while editor is open** - - While GDNative allows the Rust library to be recompiled and changes to take effect when the game is launched from the editor, this - is no longer possible in GDExtension, at least not on all platforms. This limitation is tracked as a Godot bug in [issue #66231]. - - -[features]: https://github.com/godot-rust/gdextension/issues/24 -[issue #66231]: https://github.com/godotengine/godot/issues/66231 -[extension-library-doc]: https://godot-rust.github.io/docs/gdext/master/godot/init/trait.ExtensionLibrary.html#method.editor_run_behavior \ No newline at end of file diff --git a/src/index.md b/src/index.md index cba547a..ebf2ba5 100644 --- a/src/index.md +++ b/src/index.md @@ -1,49 +1,68 @@ # Introduction -Welcome to the **godot-rust book**! This is a work-in-progress user guide for the Rust bindings to Godot 3 and 4. +Welcome to the **godot-rust book**! This is a work-in-progress user guide for **gdext**, the Rust binding for Godot 4. -If you're new to Rust, before getting started, it is highly recommended that you familiarize yourself with concepts outlined in the officially maintained [Rust Book](https://doc.rust-lang.org/book/) before you getting started with godot-rust. +If you're new to Rust, before getting started, it is highly recommended that you familiarize yourself with concepts outlined in the officially maintained [Rust Book](https://doc.rust-lang.org/book/). -## About godot-rust - -This project specifically supports the [Rust Programming Language](https://www.rust-lang.org/) bindings to both [GDNative] and [GDExtension] APIs, for the Godot engine versions 3 and 4, respectively. - -Outside of personal preference, Rust may be a good choice for your game for the following reasons: -- Native levels of performance. -- Memory safety validated at compile time.* -- [Fearless Concurrency](https://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html).* -- The [cargo](https://doc.rust-lang.org/stable/cargo/) build system and dependency management. -- The ability to leverage Rust's crate ecosystem from [crates.io](https://crates.io/). - -*: Compile time memory and thread safety guarantees only apply to the Rust code. As the user is allowed to call into the Godot engine (C++ code, via GDNative Foreign Function Interface) or into user-defined scripts (GDScript), some of the validity checks are outside godot-rust's control. However, godot-rust guides the user by making clear which operations are potentially unsafe. +To read the book about gdnative (Godot 3 binding), follow [this link](../gdnative-book). ## Terminology -To avoid confusion, here is an explanation of names and technologies used within the book. +To avoid confusion, here is an explanation of names and technologies you may encounter over time. -* **GDNative**: C API used by Godot 3. -* **GDExtension**: C API used by Godot 4. * **godot-rust**: The entire project, encompassing Rust bindings for Godot 3 and 4, as well as related efforts (book, community, etc.). -* [**gdnative**] (lowercase): the Rust binding for GDNative (Godot 3). -* [**gdext**] (lowercase): the Rust binding for GDExtension (Godot 4). +* [**GDExtension**]: C API provided by Godot 4. +* [**GDNative**]: C API provided by Godot 3. +* **gdext** (lowercase): the Rust binding for GDExtension (Godot 4) -- what this book focuses on. +* **gdnative** (lowercase): the Rust binding for GDNative (Godot 3). * **Extension**: An extension is a C library developed using gdext. It can be loaded by Godot 4. -## Showcase +## Currently supported features + +For an up-to-date overview of implementation status, consult [issue #24][features]. + + +## GDExtension API: what's new + +This section briefly mentions the difference between the native interfaces in Godot 3 and 4 from a functional point of view, +without going into Rust. + +While the underlying FFI (foreign function interface) layer has been completely rewritten, a lot of concepts remain the same +from a user point of view. In particular, Godot's approach with a node-based scene graph, composed of classes in an inheritance +relation, has not changed. + +That said, there are some notable differences: + +1. **No more native scripts** + + With GDNative, Rust classes could be registered as _native scripts_. These scripts are attached to nodes in order to enhance + their functionality, analogous to how GDScript scripts could be attached. GDExtension on the other hand directly supports Rust types + as engine classes, see also next point. + + Keep this in mind when porting GDScript code to Rust: instead of replacing the GDScript with a native script, you need to change the + node type to a Rust class that inherits the node. + +2. **First-class citizen types** + + In Godot 3, user-defined native classes had lots of limitations in the editor: type annotations were not fully supported, they could + not easily be used as custom resources, etc. With GDExtension, user-defined classes in Rust behave much closer to GDScript classes. -If you would like to know about games and other projects in which godot-rust has been employed, check out the [Projects](projects) chapter. At the moment, this is mostly referring to projects built with the Godot 3 bindings, due to their maturity. +3. **Always-on** -## Contributing + There is no differentiation between "tool" and "normal" scripts anymore, as it was the case in GDNative. Rust logic runs as soon as + the Godot editor launches, but gdext explicitly changes this behavior. By default, all virtual callbacks (`ready`, `process` etc.) + are not invoked **in editor mode**. This behavior can be configured when implementing the [`ExtensionLibrary`][extension-library-doc] trait. -The source repository for this book is [hosted on GitHub](https://github.com/godot-rust/book). +4. **No recompilation while editor is open** -## License + Prior to Godot 4.2, it was not possible to recompile a Rust library and let changes take effect when the game is launched from the editor. + This has recently been implemented though, see [issue #66231]. -The GDNative bindings and this user guide are licensed under the MIT license. -The GDExtension bindings are licensed under the [Mozilla Public License 2.0](https://www.mozilla.org/en-US/MPL). +[features]: https://github.com/godot-rust/gdextension/issues/24 +[issue #66231]: https://github.com/godotengine/godot/issues/66231 +[extension-library-doc]: https://godot-rust.github.io/docs/gdext/master/godot/init/trait.ExtensionLibrary.html#method.editor_run_behavior -[GDNative]: https://docs.godotengine.org/en/stable/tutorials/plugins/gdnative/gdnative-cpp-example.html -[GDExtension]: https://godotengine.org/article/introducing-gd-extensions -[**gdnative**]: gdnative -[**gdext**]: gdext +[**GDNative**]: https://docs.godotengine.org/en/3.5/tutorials/scripting/gdnative/what_is_gdnative.html +[**GDExtension**]: https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/what_is_gdextension.html diff --git a/src/gdext/intro/hello-world.md b/src/intro/hello-world.md similarity index 100% rename from src/gdext/intro/hello-world.md rename to src/intro/hello-world.md diff --git a/src/gdext/intro/index.md b/src/intro/index.md similarity index 100% rename from src/gdext/intro/index.md rename to src/intro/index.md diff --git a/src/gdext/intro/objects.md b/src/intro/objects.md similarity index 100% rename from src/gdext/intro/objects.md rename to src/intro/objects.md diff --git a/src/gdext/intro/setup.md b/src/intro/setup.md similarity index 100% rename from src/gdext/intro/setup.md rename to src/intro/setup.md diff --git a/src/gdext/advanced/compatibility.md b/src/toolchain/compatibility.md similarity index 100% rename from src/gdext/advanced/compatibility.md rename to src/toolchain/compatibility.md diff --git a/src/gdext/advanced/debugging.md b/src/toolchain/debugging.md similarity index 100% rename from src/gdext/advanced/debugging.md rename to src/toolchain/debugging.md diff --git a/src/gdext/advanced/godot-version.md b/src/toolchain/godot-version.md similarity index 100% rename from src/gdext/advanced/godot-version.md rename to src/toolchain/godot-version.md diff --git a/src/toolchain/index.md b/src/toolchain/index.md new file mode 100644 index 0000000..604eec6 --- /dev/null +++ b/src/toolchain/index.md @@ -0,0 +1,6 @@ +# Toolchain + +Beyond Rust, there are quite a few things that are handy to know when working with Godot. This chapter goes into more detail +about them, covering topics such as versioning, compatibility or debugging. + +Check out the subchapters for more information. \ No newline at end of file