| Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
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>
|
|
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
|
|
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>
|
|
In this example we don't need the request buf.
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
|
|
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>
|
|
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>
|
|
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>
|
|
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
|
|
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>
|
|
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
|
|
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>
|
|
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>
|
|
luw_http_add_header() no longer takes an idx argument.
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
|
|
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>
|
|
This reverts commit 011c3ba3f7bc466a04101f81d4f6186001b7aad4.
This was committed in error...
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
|
|
|
|
This is for the new 'rusty' API.
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
|
|
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>
|
|
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>
|
|
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>
|