gapid
generational-arena
Our great sponsors
gapid | generational-arena | |
---|---|---|
1 | 7 | |
2,182 | 646 | |
0.2% | - | |
0.0 | 0.0 | |
about 1 year ago | 8 months ago | |
Go | Rust | |
Apache License 2.0 | Mozilla Public License 2.0 |
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.
gapid
-
A new ProtoBuf generator for Go
> Arenas are, however, unfeasible to implement in Go because it is a garbage collected language.
If you are willing to use cgo, google already implemented one for gapid.
https://github.com/google/gapid/tree/master/core/memory/aren...
generational-arena
-
Is Rust suitable for representing domain concepts?
In my experience it is often easier to use indexes instead of copying Rc's. If you want to mutate the graph, then look in to slab and generational-arena
-
My thoughts on Rust for game development
Regarding ECS: yes, but in a deflationary sense. The game has entities, stored in something very similar to GenerationalArena, and it has "systems", which are just functions that operate on these entities. The components themselves are just fields of the Entity megastruct. Having an ECS in the narrow sense doesn't really make a lot of sense for this game, because a lot of its rules are dependent on each other, and there's very little chance to extract parallelism. Also, even the current largest levels have less than 10k entities, so simulation performance is not a bottleneck yet.
-
Freeing slice without knowing it’s size
If you cannot inplace construct the slice-dst on heap and your slice is too large to be copied, then I think there are two solutions: - Using Box>, this adds another level of indirection but avoids the copying - Use an arena like slotmap, slab, generational_arena or concurrent_arena to store the Box<[u8]>. It still needs heap allocation, but it allocates in chunks, thus less fragmentation and performs better.
-
Is there an abstract technical name for a map that generates its own keys??
I think this is less of a good fit though: the word "arena" doesn't imply iteration is possible to me. I think arenas also conventionally will reuse previously-released handles (unless you implement akin to a generational arena), so the term might be a bit misleading in that regard.
-
Mutability with Arenas?
Might wanna check out https://github.com/fitzgen/generational-arena / https://github.com/ArnaudValensi/vec-tree/blob/master/tests/tests.rs.
-
A new ProtoBuf generator for Go
This is far from the only arena allocator written in Rust.
From the same author, a zero-unsafe arena allocator: https://github.com/fitzgen/generational-arena
There are many, many arena implementations available with varying characteristics. It's disingenuous to act like Rust requires the author of an arena library to write "unsafe" everywhere.
-
Automatic Struct of Array generation for Rust
If someone wants to adapt it to create computergames, then it would probably be useful to find a way to introduce generational generational indexes
What are some alternatives?
agi - Android GPU Inspector
bumpalo - A fast bump allocation arena for Rust
DetectDee - DetectDee: Hunt down social media accounts by username, email or phone across social networks.
goprotobuf - Go support for Google's protocol buffers
debugger - Golang Debugger Graphical user interface for Go programming language. Based on Delve debugger
vec-tree - A safe tree using an arena allocator that allows deletion without suffering from the ABA problem by using generational indices. https://docs.rs/vec-tree/0.1.0/vec_tree/
getghrel - getghrel(get github release) is a user-friendly command-line tool that fetches and installs the latest release assets from Github for MacOS and Linux (amd64 and arm64 architectures). It automatically detects your operating system and architecture, downloads the release, extracts it(if needed), and keep only the binary.
go - The Go programming language
protobuf-go - Go support for Google's protocol buffers
TablaM - The practical relational programing language for data-oriented applications
diskusage - 💥A tool for showing disk usage(Linux, MacOS and Windows), it is a very fast utility to find largest directories or files.