truck VS serde

Compare truck vs serde and see what are their differences.

truck

Truck is a Rust CAD Kernel. (by ricosjp)

serde

Serialization framework for Rust (by serde-rs)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
truck serde
11 191
546 8,530
5.3% 1.8%
9.2 9.2
2 days ago 8 days ago
Rust Rust
Apache License 2.0 Apache License 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.

truck

Posts with mentions or reviews of truck. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-10-19.
  • Text-to-CAD: Risks and Opportunities
    12 projects | news.ycombinator.com | 19 Oct 2023
    I agree 100%.

    Truck[1] and Fornjot[2] are recent attempts in the Rust space, both are WIP.

    But both seem to be going the traditional way. I.e. B-Rep that can be converted to (trimmed) NURBS.

    I think if one wanted to incorporate the last 50 years of computer science, particularly computer graphics, one needed to broaden the feature set considerably.

    You need support for precision subdivision surface modeling with variable radius creases (either via reverse subdivision where you make sure the limit surface pass through given constraints or using an interpolating subivision scheme that but has the same perks as e.g. Catmull-Clark).

    Then you need to have SDF modeling ofc.

    Possibly point based representations. If only as inputs.

    And traditional B-Rep.

    Finally, the kernel should be able to go back and forth lossless between these representations wherever possible.

    And everything must be node-based, like e.g. Houdini. Completely non-destructive.

    [1] https://github.com/ricosjp/truck

    [2] https://github.com/hannobraun/fornjot

  • Truck: CAD Kernel in Rust
    1 project | /r/hypeurls | 8 Mar 2023
    3 projects | news.ycombinator.com | 8 Mar 2023
    I think you confuse the book/tutorial with the documentation on docs.rs.

    My impression is that the former is very much a work in progress. I never looked at it until now.

    The latter (and the examples in the resp. crates) is what you want to look at to see the kernel being used. E.g. https://github.com/ricosjp/truck/blob/master/truck-modeling/...

    The main README has links to all the documentation of the crates.

  • CAD Sketcher, free and open-source project bringing CAD like tools to Blender3d
    8 projects | news.ycombinator.com | 19 Feb 2023
    There are two Rust projects working on parametric kernels I'm aware of.

    The first one, Truck[1] seems to have a company behind it, Ricos Ltd, that look like they to know what they're doing[2]. The tweet shows their product using functionality from Truck (the frontend is not OSS AFAIK).

    Fornjot is an ambitious project IMHO. Their kernel is in a separate crate[3].

    As for OSS code that could be a good base to either use (or port to something like Rust) for someone to write their own kernel is Ayam [4], the oldest OSS 3D NURBS modeler that is still being developed.

    [1] https://github.com/ricosjp/truck

    [2] https://twitter.com/RICOS_ltd/status/1550390552482693120

    [3] https://crates.io/crates/fj-kernel

    [4] https://ayam.sourceforge.net/

  • Fornjot (code-first CAD in Rust) - Weekly Dev Log - 2022-W21
    2 projects | /r/rust | 30 May 2022
    I've been following your project with interest and was wondering if you were familiar with Truck. Its another project implementing a CAD kernel in Rust.
  • Fornjot – The world needs another CAD program
    9 projects | news.ycombinator.com | 27 Mar 2022
    I will definitely keep reading and learning, as well as gaining practical implementation experience. We'll have to see how that goes, and what the solution will end up being.

    > Another direction you could take is to define just the API, and use the opencascade kernel (like FreeCAD) until the rest of your code is ready.

    A CAD kernel is the central dependency for any CAD program, and I feel that it would be wrong to just use one and accept its limitations. I need to be able to take ownership, to work on it directly. OpenCASCADE is a huge pile of C++ code, which is the opposite of all that. (Not saying it's wrong to use in general, just that I'm the wrong guy to work on a huge pile of C++ code.)

    I've considered using Truck[1], but decided not to do that for now. I really want to see what I can come up with. If that doesn't work out, at least I'll be in a much better decision to decide what other option would be best.

    [1] https://github.com/ricosjp/truck

  • Fornjot: A next-generation Code-CAD application
    18 projects | news.ycombinator.com | 9 Mar 2022
  • Hey Rustaceans! Got an easy question? Ask here (3/2022)!
    5 projects | /r/rust | 18 Jan 2022
    For a specific example: I am interested in working with 3D objects using Rust (maybe this is too ambitious for a newbie!) so I found a CAD kernel crate called truck which seems to be crate built of smaller crates and implementations of other libraries. How would you go about finding the most relevant info and where to start? Should I start by understanding all the smaller parts such as the gui/gpu rendering modules, or is that irrelevant and I can focus on figuring out the top level?

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

What are some alternatives?

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

fornjot - Early-stage b-rep CAD kernel, written in the Rust programming language.

bincode - A binary encoder / decoder implementation in Rust.

gluon - A static, type inferred and embeddable language written in Rust.

json-rust - JSON implementation in Rust

CascadeStudio - A Full Live-Scripted CAD Kernel in the Browser

json - Strongly typed JSON library for Rust

build123d - A python CAD programming library

nom - Rust parser combinator framework

opencascade.js - Port of the OpenCascade CAD library to JavaScript and WebAssembly via Emscripten.

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

Kind - A next-gen functional language [Moved to: https://github.com/Kindelia/Kind2]

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