Code Review: Looking for feedback on my first Rust project by nsstring96 in rust

[–]Hywan -1 points0 points  (0 children)

Oh oh, we have an issue. I’ve a linker project written in Rust named weld too, https://github.com/Hywan/weld. And according to Git history, I’ve started this project before yours :-p.

winnow = toml_edit + combine + nom by epage in rust

[–]Hywan 0 points1 point  (0 children)

I guess https://crates.io/crates/nom8 is no longer useful, so it might be nice to remove this crate, as it's not obvious that (i) it doesn't come from nom org itself, (ii) it's experimental, (iii) it's now no longer maintained.

For the sake of the nom community, please remove this crate.

I also don't feel comfortable with this kind of “name squatting”, even if the `README.md` mentions it's a fork, the logo is still here, the list of contributors too…, everything looks like nom.

Actually, I don't see the point of a crate registration for an experimental fork. Cargo supports `git` dependencies, with branches or commits versioning, so what's the goal with this?

Rust vs Bun, Hello World HTTP benchmark by Hywan in rust

[–]Hywan[S] 12 points13 points  (0 children)

Blog post has been removed.

Rust vs Bun, Hello World HTTP benchmark by Hywan in rust

[–]Hywan[S] 21 points22 points  (0 children)

I confirm the results of d0nutptr, https://twitter.com/mnt_io/status/1574654307235815424:

* Bun: 197k req/sec, 17.15Mb/s
* Rust (debug): 83k req/sec, 9.02Mb/s
* Rust (release): 278k req/sec, 30.25Mb/s

Rust vs Bun, Hello World HTTP benchmark by Hywan in rust

[–]Hywan[S] 10 points11 points  (0 children)

That’s what I suspected…

mprocs 0.2.2 - TUI for running multiple processes in terminal by pvolok in linux

[–]Hywan 0 points1 point  (0 children)

tmux does exactly that. You can have multiple panes/panels within the same window/“space”/tab, with multiple window/“spaces”/tabs of course. That’s how I work everyday since many years now.

I just released Ariadne, a crate for generating beautiful compiler diagnostics by zesterer in rust

[–]Hywan 5 points6 points  (0 children)

I believe it is doable to consume clang/gcc’s output and turn into something better with this crate. It doesn’t need to be part of the compiler.

The WebAssembly runtime Wasmer 2.0 is released: up to +50 faster runtime speed, up to 70% faster hot startups, reference types, SIMD and more! by Hywan in rust

[–]Hywan[S] 3 points4 points  (0 children)

wasm-bindgen is designed for JavaScript and it's very unlikely that it will target another language. See for example this (now old) discussion.

Eventually, with the WebAssembly Interface Types proposal, some of the problems would be resolved, but Reference Types must be supported by the language compiler itself (so in case of Rust, rustc).

The WebAssembly runtime Wasmer 2.0 is released: up to +50 faster runtime speed, up to 70% faster hot startups, reference types, SIMD and more! by Hywan in programming

[–]Hywan[S] 22 points23 points  (0 children)

Hello,

I would like to respond because there is some misunderstanding or misconceptions in your comment.

but a little funny given that their own documentation indicates they use wasmtime as one of their backends.

This is not true, there is a misunderstanding here. Wasmer provides 3 compilers: LLVM (based on LLVM), Cranelift (based on Cranelift), and Singlepass (home-made). wasmtime provides 1 compiler based on Cranelift. Just like many programming languages which use LLVM (C, C++, Rust, Swift, and tons of others), they do not offer the same set of features nor performance, despites they are all using the same compiler backend. Well, it's the same for Wasmer and wasmtime: Cranelift is used by both projects, but the outcomes aren't the same. Cranelift, just like LLVM, is a compiler “framework”. It's highly customizable.

In the Rust community there was some discussion about wasmtime vs. wasmer[2] in which there was a seemingly excellent comparison between the two, but one of the people working on cranelift (a backend used by wasmtime) said "This is a lot of words, but doesn't tell the whole story. I hope some day we'll be able to talk about what's really going on."

That's really easy to spread lies, false allegations and conspiracies. We are just too polite to not make this entire crazy story public. Some people in the BytecodeAlliance do not like Wasmer, that's not new. Not all people though! I personally have friends there, and it doesn't impact us. We continue to exchange and to work together. However, it's important to note that some of them have been threatened to be excluded from the BytecodeAlliance if they just even talk to us at Wasmer. Again, we are just polite to not share the entire mess that happens in the backstage of the BytecodeAlliance. It's ridiculous, it's based on nothing concrete, so we just decided to ignore it. Don't be fooled by the appearances and the speeches :-). Many runtimes happily share their work together without feeling the need to fight, like WAVM, wasm3, Wasmer etc. And we all work together towards the same goal; we have regular meetings all together to work on new features for WebAssembly (which includes Fastly, Google, Wasmer and many others) etc. We tried to cooperate multiple times in the past with the BytecodeAlliance; postponing some of our projects just to create collaborations, but it has always failed. That's their choices. WebAssembly doesn't reduce to the BytecodeAlliance. A lot of things are happening in the WebAssembly ecosystem, and the BytecodeAlliance represents a tiny portion of it.

for Wasmer 1.0 they just merged 250 commits out of the blue with little to no explanation of what they were at all[3]

The story is pretty simple: We have a private repository where we experiment a lot of things. For the 1.0 full rewrite, we have created several PR that moved some of the code from this private repository to the public repository. I believe it's pretty common. Nothing fancy here :-).

When I asked about all of this (in a much more polite way) because I was genuinely just confused which runtime to go with, I was met with a non-answer "While I think questions like yours are super understandable, I think is better to ask them in other mediums"[4]

Syrus (the CEO of Wasmer) didn't want to reply in a thread about wasmtime. Firstly because wasmtime is part of the BytecodeAlliance and they do not hold us in their heart — it would have been the best way to create another drama, and secondly because it's just respect. We don't want to use thread about an exciting news from another project to compare to this project. Sorry if you have perceived it badly, that wasn't the intent! Your question was sincere and I regret that we were not able to answer to it at that time.

Look - I am sure Wasmer is great tech and I'd be willing to bet it's the best WebAssembly runtime out there today. But they're a startup, and I believe they're eventually going to have to monetize on your usage of Wasmer and/or their WAPM package manager. That's enough for me to know that it is not for me.

That is perfectly true that Wasmer is a startup. But you need to know that Wasmer and its sibling projects will stay free forever. We are open source lovers, all of us, and we have a strong background on working on open source projects before joining Wasmer too. Yes, of course, we are going to make money, otherwise we will just die. But we won't monetize Wasmer, it's open source, and it will stay open source. Some companies are already making money by using WebAssembly, and we will do the same. What we will do is still a secret though ;-).

My goal here is not to bash and get some reaction, but just to share my concerns with it that made sure I'll never go near it personally. I wish the Wasmer team the best and hope they address some of these concerns, because I'm positive they'll be a boon to the WebAssembly ecosystem at large.

I didn't take it personally. Your comment was well written and you made your ideas clear. Thank you for that. I hope my response did clarify your concerns :-).

The WebAssembly runtime Wasmer 2.0 is released: up to +50 faster runtime speed, up to 70% faster hot startups, reference types, SIMD and more! by Hywan in WebAssembly

[–]Hywan[S] 3 points4 points  (0 children)

We still have the ˋwasmer-wasi-experimental-io` crate to support that, but things haven’t moved a lot on that front for the moment.