summaryrefslogtreecommitdiffhomepage
path: root/examples/rust (follow)
AgeCommit message (Collapse)AuthorFilesLines
2025-05-14rust: Fix building of unit-wasm and rust examplesAndrew Clayton1-8/+11
When building the rust stuff we were getting the following compiler error error: failed to run `rustc` to learn about target-specific information ... --- stderr error: Error loading target specification: Could not find specification for target "wasm32-wasi". Run `rustc --print target-list` for a list of built-in targets This is due to wasm32-wasi being renamed to wasm32-wasip1, with wasm32-wasi being kept clear for an eventual WASI 1.0 release. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2024-07-02examples/rust: Fix some new rustc warningsAndrew Clayton3-8/+12
With at least rustc 1.79.0 (129f3b996 2024-06-10) (Fedora 1.79.0-3.fc40) We were getting warnings when building the rust examples like warning: creating a mutable reference to mutable static is discouraged --> src/lib.rs:75:40 | 75 | let ctx: *mut luw_ctx_t = unsafe { &mut CTX }; | ^^^^^^^^ mutable reference to mutable static | = note: for more information, see issue #114447 <https://github.com/rust-lang/rust/issues/114447> = note: this will be a hard error in the 2024 edition = note: this mutable reference has lifetime `'static`, but if the static gets accessed (read or written) by any other means, or any other reference is created, then any further use of this mutable reference is Undefined Behavior = note: `#[warn(static_mut_refs)]` on by default help: use `addr_of_mut!` instead to create a raw pointer | 75 | let ctx: *mut luw_ctx_t = unsafe { addr_of_mut!(CTX) }; | ~~~~~~~~~~~~~~~~~ So do like it says and use the addr_of_mut!() macro. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-10-19unit-wasm 0.3.0v0.3.0Andrew Clayton4-5/+5
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-10-17examples/rust: Do some simplification around unsafe {} blocksAndrew Clayton3-26/+18
We can put the unsafe keyword as part of the function definition, getting rid of the unsafe {} blocks in the functions themselves. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-10-17examples/rust: Further simplify hello-worldAndrew Clayton1-4/+0
In this example we don't need the request buf. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-09-25examples: Add C and Rust examples of handling large uploadsAndrew Clayton3-1/+85
The programs demonstrate handling requests with payloads larger than 4GiB which means they need to be written out to disk and so also demonstrates the use of the file-system access mechanism. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-09-25examples/rust: Amend upload-reflector for recent changesAndrew Clayton1-1/+2
The previous commit changed uwr_get_http_content_len() to return a u64 to allow for uploads larger than 4GiB, which now means this generates compiler errors about type mismatches, expected usize got u64. Cast the return value of uwr_get_http_content_len() to usize to match that of TOTAL_RESPONSE_SENT. (Making TOTAL_RESPONSE_SENT a u64 creates a larger trail of problems). Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-09-05examples/rust: Slightly simplify hello-worldAndrew Clayton1-4/+3
There is no need in this case to declare REQUEST_BUF as a global variable. Declaring it local to uwr_request_handler() lets us get rid of the unsafe code blocks. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-30unit-wasm 0.2.0v0.2.0Andrew Clayton3-3/+3
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-30examples/rust: Update for new API additionsAndrew Clayton2-7/+3
Update the echo-request and upload-reflector examples for the new uwr_http_add_header_content_type() and uwr_http_add_header_content_len() functions. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-29examples/rust: Reduce the scope of an unsafe block in echo-requestAndrew Clayton1-3/+1
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-29examples/rust: Fix building of the hello world demoAndrew Clayton1-2/+2
When I renamed it from minimal to hello-world, it stopped being built due to the make target name being the same as the directory name (hello-world). Rename the make target to rust-hello-world which also matches the naming of the rest of the targets. Fixes: 656c036 ("examples/rust: Add a minimal hello world rust example") Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-29examples/rust: Add a minimal hello world rust exampleAndrew Clayton3-3/+60
This is about the smallest it can be. Its Unit application config would look like "applications": { "rust-hello-world": { "type": "wasm", "module": "/path/to/unit-wasm/examples/rust/hello-world/target/wasm32-wasi/debug/rust_hello_world.wasm", "request_handler": "uwr_request_handler", "malloc_handler": "luw_malloc_handler", "free_handler": "luw_free_handler" } } Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-28examples/rust: Update unit-wasm dependency versionAndrew Clayton2-2/+2
luw_http_add_header() no longer takes an idx argument. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-28libunit-wasm: Remove the idx argument from luw_http_add_header()Andrew Clayton2-4/+2
This was used to specify the index of the response header being added, starting at 0 and incrementing by one for each header. Instead of having the programmer specify this, track it internally. We add an extra check in luw_http_add_header() to make sure we aren't trying to add more headers than we said with luw_http_init_headers(), if we are, simply return. This updates the API-C.md and the various examples and 'rusty' API wrapper. Suggested-by: Liam Crilly <liam@nginx.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-28Revert "Adding echo Request with body Parsing"Andrew Clayton3-203/+0
This reverts commit 011c3ba3f7bc466a04101f81d4f6186001b7aad4. This was committed in error... Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-28Adding echo Request with body ParsingTimo Stark3-0/+203
2023-08-26examples/rust: Update unit-wasm dependency versionAndrew Clayton2-2/+2
This is for the new 'rusty' API. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-26examples/rust: Bump the versionsAndrew Clayton2-2/+2
Seeing as these are now using the 'rusty' API bump their versions to 0.2.0 Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-25Rust: Port the Rust Wasm demos to the new 'rusty' wrappersAndrew Clayton2-239/+137
rusty is a thin wrapper over the generated libunit-wasm bindings to provide a more native rust like interface. This gets rid of all the casting and ugly string handling. It massively reduces the amount of unsafe {} blocks needed, though some still are... All in all this provides a nice code cleanup. Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2023-08-21Initial commitv0.1.0Andrew Clayton6-0/+375
libunit-wasm and example C and Rust WebAssembly modules for NGINX Unit. Co-developed-by: Timo Stark <t.stark@nginx.com> Co-developed-by: Liam Crilly <liam@nginx.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com>