Yeah, I doubt WebAssembly when executed in a browser will become multi-threaded anytime soon, since JavaScript is single-threaded just as well. If you need multiple threads, you need to use web workers. Havenāt done anything with those yet, but Iād assume them to be usable from WebAssembly as well, since the whole JavaScript API seems to be accessible.
Well, and in Rust, Iām pretty sure the runtime thatās typically used for async stuff (tokio
) will produce a compile error, if you try to enable the āmulti-threadā feature flag on the WebAssembly target.
But yeah, might be more of a problem with other languages.
Well, part of the problem is that web apps themselves are kind of alien on the web. The web is generally document-based. Web apps take the document format and try to turn it into something itās not.
Thereās a way to not do the JavaScript, but it doesnāt fix things being document-based and it can be argued that it makes other things worse in some respects.
Iām talking about WebAssembly. Basically, you can write your web app in HTML+CSS+Rust and then the Rust part is compiled to WebAssembly, which then takes the role that JavaScript would normally take. It does not have to be Rust, lots of languages can be compiled to WebAssembly, but Rust has the most mature ecosystem for that, as far as Iām aware.
In principle, it is also possible to use WebAssembly to render directly to a pixel buffer, but thatās really rather heavyweight and not terribly responsive, so not generally done, unless you implement a game¹ or similar.
Alright, so back to the document mangling approach. Thereās various frameworks available for Rust. Iāve used Leptos so far. Thereās also Dioxus and Yew and probably others.
Advantages:
Result
and Option
types for error handling, which you can pass directly to your rendering stack and it can show either the data or the error (or nothing).Disadvantages:
Iāve listed a lot of disadvantages, so just to point out that, yes, to me, the advantages are absolutely worth it. But I can totally understand, if others see that differently.
¹) See, for example, Bevy and this UI example in particular.
Yeah, Wikipedia tells me the longest word that was actually in use is GrundstücksĀverkehrsĀgenehmigungsĀzustƤndigkeitsübertragungsĀverordnung. It was a decree from 2003 until 2007.
Basically:
So, it decreed that the responsibility of approving traffic on trade of private plots of land should be transferred (to a different government body).
Larger open-source projects tend to have forums. Hereās a few off the top of my head:
!principia@sopuli.xyz was developed as a commercial title a few years back. I believe, @ROllerozxa@sopuli.xyz contacted the devs to get it open-sourced.
we would like to officially announce that this will be the [last] version labeled Alpha. We have already updated the versioning scheme (this version being 0.27.0) and we will progressively stop using the Alpha label altogether up to the next release, which will be Release 28.
Excellent. Whenever I told people about 0 A.D., I felt like I should add that itās not actually an Alpha, especially with their webpage saying in various places basically āno, donāt look at us yet, weāre not ready yetā.
If they continue adding content, I do think thatās awesome, but whatās there is already plenty solid.
Oh hi, have you considered joining the best Lemmy community, !dcss@lemmy.ml? š
If youāre into zombies and post-apocalyptic survival, CDDA always looks like a blast to play: https://cataclysmdda.org
Yeah, Bethesda loves to ruin their game worlds with weirdly repetitive additions. Morrowind constantly spawns assassins on you, Oblivion does the Oblivion gates, Skyrim has the dragons. In the latter two, I think, itās best to just not start the main quest, which prevents the Oblivion gates and dragons from appearing, at least if you replay the game.