bytecodealliance / bytecodealliance/wstd

wstd::main doesn't set exit code on failure

Ouverte
#109 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Rust
Étoiles
133
Forks
19
Merge moyen
6 j 19 h
PR mergées (30 j)
5

Description

When using the `#[wstd::main]` i would expect that an error would set another exitcode than 0.
This beavior is the same right now as tokio::main in a none wasm-application.

Example usage:

```rust
use std::error::Error;
use wstd::http::{Body, Client, Request};

#[wstd::main]
async fn main() -> Result<(), Box> {
let request = Request::get("https://non-existing-url.example.com")
.body(Body::empty())?;

let _response = Client::new().send(request).await?;

Ok(())
}
```

This will return Exit-code 0 when compiled to wasip2 through the wasi-run WIT-interface, and the error form the application will be throwed away between the wit-interface.
Is this the intended behavior?

For example right now i have to do this to make my "main" applications async

```rust
use std::error::Error;
use wstd::http::{Body, Client, Request};

fn main() {
wstd::runtime::block_on(async move {
if let Err(err) = async_main().await {
eprintln!("{err}");
std::process::exit(1);
}
});
}

async fn async_main() -> Result<(), Box> {
let request = Request::get("https://non-existing-url.example.com").body(Body::empty())?;

let _response = Client::new().send(request).await?;

Ok(())
}
```

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par localiser l’implémentation de #[wstd::main] et suivre la façon dont une erreur de Result traverse l’interface WIT de wasi-run. Comparez son comportement avec le modèle tokio::main décrit dans l’issue. Le travail est terminé lorsqu’un async main en échec renvoie un code de sortie différent de zéro et ne supprime pas silencieusement l’erreur.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
rust
Domaine
cli
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.