serde VS bevy

Compare serde vs bevy and see what are their differences.

serde

Serialization framework for Rust (by serde-rs)

bevy

A refreshingly simple data-driven game engine built in Rust (by bevyengine)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
serde bevy
191 573
8,558 32,210
2.1% 3.8%
9.2 9.9
8 days ago 3 days ago
Rust Rust
Apache License 2.0 MIT OR Apache-2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

serde

Posts with mentions or reviews of serde. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-09.
  • Empowering Web Privacy with Rust: Building a Decentralized Identity Management System
    3 projects | dev.to | 9 Apr 2024
    Serde Documentation: Comprehensive guide and reference for using Serde, Rust's framework for serializing and deserializing data.
  • Timeline of the xz open source attack
    3 projects | news.ycombinator.com | 1 Apr 2024
    Not just for hardware support: https://github.com/serde-rs/serde/issues/2538
  • I pre-released my project "json-responder" written in Rust
    11 projects | dev.to | 21 Jan 2024
    tokio / hyper / toml / serde / serde_json / json5 / console
  • Cryptoflow: Building a secure and scalable system with Axum and SvelteKit - Part 0
    12 projects | dev.to | 4 Jan 2024
    serde - Serializing and Deserializing Rust data structures
  • Committing to Rust for Kernel Code
    5 projects | news.ycombinator.com | 23 Nov 2023
    > If there are any Rust experts around...what am I missing?

    Probably more good examples and possibly more ecosystem.

    A first big decision is if you're going no-std or not, and if you end up in the no-std world the ecosystem shrinks substantially. If you're building a kernel that's probably not that much of a problem - the same shrinkage occurs for C/C++ - many such projects bootstrap with nearly zero ecosystem anyway.

    The examples side is a bigger problem - I've recently been able to watch some of my more curmudgeonly C friends give it a good dive, and after an initial hump they're fairly happy with the core language. They still have regular issues with the ecosystem when they run into, in their words "web dev crap", which comes up even in the stdlib sometimes - a bugbear a while ago coming up down some error handling code paths. They attempted to send patches and hit nebulous arguments against the correctness target, which were largely born of misunderstandings of posix. This kind of thing can come up anywhere, if you take a dependency on some fancy IO abstraction that happens to be written in C, and you take it somewhere "novel" like a BSD, you might well run into the same. The point here is that _examples_ and _exercise_ of these tasks are the things that are going to shake more of this kind of thing out. At the same time though, it's important to reiterate that if you're on the nostd path, then largely you're on your own, which is equivalent to just gcc bare, and this kind of thing generally doesn't come up.

    > Or is this a serious proposal about the future of operating systems and other low level infrastructure code?

    This is a serious proposal. The outcome is really strong along key axes of correctness and safety. Those of us who've done it (e.g. Fuchsia, where I was) have been able to observe these benefits relative to history with the same teams using other languages (C, C++). We're professional engineers, these statements aren't coming from a place of craziness. The Android team have been writing about their journey: https://security.googleblog.com/search/label/rust

    > Do you just program everything in unsafe mode?

    Absolutely not. A good amount of bootstrapping effort has been going in across the ecosystem to make it ever easier to avoid unsafe. To take one slice of examples, there's crates that are designed to help you avoid copies while also avoiding dropping to unsafe - they provide tools for automatic structural analysis of the mapping boundary to make it easier to assert the relevant guarantees. Examples: https://docs.rs/zerocopy/latest/zerocopy/ (came out of Fuchsia), https://github.com/serde-rs/serde/releases/tag/v1.0.0 (serde is commonly used, but has more constraints here), https://rkyv.org/rkyv.html (not sure of prominence, but I hear people talk about it).

    These kinds of tools get you a long way toward substantially safer code, without needing to think or audit nearly as much. We know that's important, we have plenty of data that demonstrates how important it is, and lately now, we have data that shows how effective it is too (see the aforementioned Android posts).

    > What about runtimes?

    They're out there, it depends what level of abstraction you're looking for, runtimes means different things to different people. For embedded there's typically a lot more focus on providing libraries rather than a whole runtime framework, so there are crates for a number of soc types out there which are well used, like https://docs.rs/cortex-m/latest/cortex_m/, or it's sibling minimal runtime crate https://docs.rs/cortex-m-rt/latest/cortex_m_rt/. As you get higher level, if you want to do more of the systems level interaction yourself there are a good number of options to choose from along the lines of reactor systems to get you to functional async executors that will build with nostd.

    > It seems to me that Rust isn't even really intended to compete with C for the use cases in which C is dominant in 2023. Every indication is that for "serious Rust in production programming" it's mostly a C++ crowd.

    The challenge here is that this is an inverted view - it's a C programmers view of C++ being ported over to Rust, and it distorts how the world looks. That doesn't actually apply to the other sides _intent_. Yes, Rust provides a lot more abstraction capabilities than C does, and in that specific regard it has some coarse similarity to C++. It's definitely _possible_ for someone to way off the deep end and produce obscure abstractions around things that a more reductionist bias is going to hate - and you can totally ignore those things and have a great time with the language. There are some really nice things in there which anyone will enjoy if they come at it with an open mind, things like enums and pattern matching, the rich and efficient iterator library, the crates tooling, configuration macros, and so on. There's a lot to love, and they're not things that C++ did well, and comparing it to C++ discards those considerations spuriously.

    > Zig has sort of filled that similar space and seems to take the concerns of C programmers more seriously and the team has an attitude more in line with the C culture than the Rust team does

    Zig is interesting in it's own right, and on a very surface level it is more similar to C, though this surface level is really "zigs stdlib has terrible and inconsistent short names similar to libc and posix", which isn't really a good measure of anything in particular. It's perfectly functional along this axis and par for the course at the systems programming level.

    The toolchain approach has a lot more of a "hacking for hackers" feel, so when you hit bugs and so on it's very typical for folks to be patching their stdlib locally for a while or building their own toolchain to overcome the problems. I spent a little bit of time there recently with building ghostty on windows and was regularly messing with my toolchain and stdlib to make forward progress. Along these lines it's also much less complete - which is largely a function of being much newer, but you can take a ton of rust projects today, particularly things in the GUI space and build them for every major target platform with nearly zero effort. Zig is very very far off that, and there's going to be a need for a lot better platform level abstractions to get there. Rust did a great job with platform abstractions, which sadly was best documented in an anti-go inflammatory articles, but the point stands and if more generalized stands against zig at times too (https://fasterthanli.me/articles/lies-we-tell-ourselves-to-k... and other similar rants he wrote), though not all points port over.

    The LLVM removal kind of move is somewhat enabled by this looser approach, which is also helped by the kinds of users the language has, and the smaller ecosystem. Another way of putting that might be "this is the right time to do this", as doing it later might lead to far more user pain and community noise or negativity. It's great for the world as we need more diversity, but it's also not all roses. At my current work we tried out Zig for hermetic cross-builds something that a lot of people tout as a strength. What we found was that the intrinsics that were written in pure Zig were sufficiently far behind libgcc/compiler-rt that it did not have sufficient performance for our use case - literally the binary couldn't handle our production load. Again, this is the kind of thing that can and likely will improve with time, hell if it was a priority I would have done it, but we had other solutions. Point is it's not as simple as a "this vs that" outcome, these moves have long running implications that may or may not affect a particular target - as an example it didn't really harm ghostty at all.

    When you talk about culture each of these ecosystems has it's own dominant culture and a wide set of subcultures. How you choose to integrate with those, if you do at all, is up to you. Some might be more attractive for sure, and some might provide a different risk profile for different use cases as well.

    Just off the cuff if I was scaling up a team for a professional project with a long lifecycle, I'd probably lean toward rust right now as it has a good balance of stable evolution and production readiness, without being anywhere near as stagnant as C++ despite much effort to move the needle. If I was in a really hacker mood where I just want to twiddle and mess with stuff, I'm not excessively performance sensitive (beyond the general order of magnitude that native compilation and near zero abstractions gets you), and my team is going to remain small and expert "everyone cracks open the source" folks, then I might pick Zig. These days I don't have many good reasons to pick C anymore. If it's patching a pre-existing thing there's no choice of course, but other than that it's mostly going to be "I'm throwing a 30 minute build onto arduino and don't wanna go off the beaten path for this project" kind of thing.

  • What Are The Rust Crates You Use In Almost Every Project That They Are Practically An Extension of The Standard Library?
    4 projects | /r/rust | 22 Nov 2023
    serde: Serialization and deserialization framework.
  • Next Validator of Rust–Valitron
    2 projects | news.ycombinator.com | 25 Sep 2023
  • Serde is no longer shipping precompiled blobs
    1 project | news.ycombinator.com | 29 Aug 2023
  • Serde phases out pre-compiled blobs
    1 project | news.ycombinator.com | 28 Aug 2023
  • This isn’t the way to speed up Rust compile times
    7 projects | news.ycombinator.com | 26 Aug 2023
    Note that the pre-compiled binary blob the blog post is referring to has since been removed [0].

    [0]: https://github.com/serde-rs/serde/pull/2590

bevy

Posts with mentions or reviews of bevy. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-23.
  • Web Game Engines and Libraries
    5 projects | news.ycombinator.com | 23 Apr 2024
    Missing one of the best choices as long as "maturity" isn't on the top of your list: Bevy - https://bevyengine.org/

    Game engine written in Rust, leveraging ECS in almost every place and way, with a really capable WASM export option. Wrestling ECS for the first time might take you some time, but in my experience helps you keep game code as clean and decoupled as game code could be.

  • 3D and 2D: Testing out my cross-platform graphics engine
    17 projects | news.ycombinator.com | 2 Apr 2024
    I don't see WASM/WebGPU changing anything when it comes to gaming, as an industry, personally. 3d visualizations and interactive websites? Yeah definitely a nice improvement over WebGL 2, if years late.

    WebGPU is pretty far behind what AAA games are using even as of 6 years ago. There's extra overhead and security in the WebGPU spec that AAA games do not want. Browsers do not lend themselves to downloading 300gb of assets.

    Additionally, indie devs aren't using Steam for the technical capabilities. It's purely about marketshare. Video games are a highly saturated market. The users are all on Steam, getting their recommendations from Steam, and buying games in Steam sales. Hence all the indie developers publish to Steam. I don't see a web browser being appealing as a platform, because there's no way for developers to advertise to users.

    That's also only indie games. AAA games use their own launchers, because they don't _need_ the discoverability from being on Steam. So they don't, and avoid the fees. If anything users _want_ the Steam monopoly, because they like the platform, and hate the walled garden launchers from AAA companies.

    (I work on high end rendering features for the Bevy game engine https://bevyengine.org, and have extensive experience with WebGPU)

  • What Are Const Generics and How Are They Used in Rust?
    3 projects | dev.to | 25 Mar 2024
    I was working through an example in the repo for the Bevy game engine recently and came across this code
  • WebAssembly Playground
    9 projects | news.ycombinator.com | 4 Feb 2024
    That's possible. I did spend quite a bit of time tinkering with compiler flags, and followed the recommendations.

    Some notes I found just now seems to agree with my results, though: https://github.com/bevyengine/bevy/issues/3978#issuecomment-...

  • Immediate Mode GUI Programming
    15 projects | news.ycombinator.com | 15 Jan 2024
    I cannot recommend immediate mode GUI programming based on the limitations I've experienced working with egui.

    egui does not support putting two widgets in the center of the screen: https://github.com/emilk/egui/issues/3211

    It's really easy to get started with immediate mode, it's really easy to bust out some UI, but the second you start trying to involve dynamically resized context and responsive layouts -- abandon all hope. The fact it has to calculate everything in a single pass makes these things hard/impossible.

    ... that said, I'm still using it for https://ant.care/ (https://github.com/MeoMix/symbiants) because it's the best thing I've found. I'm crossing my fingers that Bevy's UI story (or Kayak https://github.com/StarArawn/kayak_ui) become significantly more fleshed out sooner rather than later. Bevy 0.13 should have lots more in this area though (https://github.com/bevyengine/bevy/discussions/9538)

  • A minimal working Rust / SDL2 / WASM browser game
    6 projects | news.ycombinator.com | 15 Jan 2024
  • ECS, Finally
    4 projects | news.ycombinator.com | 30 Dec 2023
    I've also been enjoying building My First Game™ in Bevy using ECS. The community around Bevy really shines, but Flecs (https://github.com/SanderMertens/flecs) is arguably a more mature, open-source ECS implementation. You don't get to write in Rust, though, which makes it less cool in my book :)

    I'm not very proud of the code I've written because I've found writing a game to be much more confusing than building websites + backends, but, as the author notes, it certainly feels more elegant than OOP or globals given the context.

    I'm building for WASM and Bevy's parallelism isn't supported in that context (yet? https://github.com/bevyengine/bevy/issues/4078), so the performance wins are just so-so. Sharing a thread with UI rendering suuucks.

    If anyone wants to browse some code or ask questions, feel free! https://github.com/MeoMix/symbiants

  • Intel CEO: 'The entire industry is motivated to eliminate the CUDA market'
    13 projects | news.ycombinator.com | 14 Dec 2023
    These days, some game engines have done pretty well at making compute shaders easy to use (such as Bevy [1] -- disclaimer, I contribute to that engine). But telling the scientific/financial/etc. community that they need to run their code inside a game engine to get a decent experience is a hard sell. It's not a great situation compared to how easy it is on NVIDIA's stack.

    [1]: https://github.com/bevyengine/bevy/blob/main/examples/shader...

  • Trying to write a game with mods loaded at runtime
    1 project | /r/bevy | 10 Dec 2023
    This is the API you need: https://github.com/bevyengine/bevy/pull/9774
  • Not only Unity...
    53 projects | /r/opensourcegames | 11 Nov 2023

What are some alternatives?

When comparing serde and bevy you can also consider the following projects:

bincode - A binary encoder / decoder implementation in Rust.

Amethyst - Data-oriented and data-driven game engine written in Rust

json-rust - JSON implementation in Rust

Godot - Godot Engine – Multi-platform 2D and 3D game engine

json - Strongly typed JSON library for Rust

Fyrox - 3D and 2D game engine written in Rust

nom - Rust parser combinator framework

piston - A modular game engine written in Rust

msgpack-rust - MessagePack implementation for Rust / msgpack.org[Rust]

RG3D - 3D and 2D game engine written in Rust [Moved to: https://github.com/FyroxEngine/Fyrox]

rust-asn1 - A Rust ASN.1 (DER) serializer.

specs - Specs - Parallel ECS