gc-arena

Incremental garbage collection from safe Rust (by kyren)

Gc-arena Alternatives

Similar projects and alternatives to gc-arena

  1. rfcs

    679 gc-arena VS rfcs

    RFCs for changes to Rust

  2. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  3. mal

    100 gc-arena VS mal

    mal - Make a Lisp

  4. hylo

    58 gc-arena VS hylo

    The Hylo programming language

  5. Crafting Interpreters

    Repository for the book "Crafting Interpreters"

  6. samsara

    a reference-counting cycle collection library in rust

  7. rune

    9 gc-arena VS rune

    Rust VM for Emacs (by CeleritasCelery)

  8. sgcl

    Smart Garbage Collection Library for C++

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. sphinx-lang

    An intepreter for a simple dynamic language written in Rust

  11. gcarena-demo

    demo of gc-arena crate with linked lists

  12. loxcraft

    Language tooling for the Lox programming language.

  13. loxido

    Rust implementation of the Lox programming language

  14. rox

    1 gc-arena VS rox

    An interpreter for the Lox language (by ltungv)

  15. crafting-interpreters-rs

    Crafting Interpreters in Rust

  16. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better gc-arena alternative or higher similarity.

gc-arena discussion

Log in or Post with

gc-arena reviews and mentions

Posts with mentions or reviews of gc-arena. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-07-31.
  • Crafting Interpreters with Rust: On Garbage Collection
    12 projects | news.ycombinator.com | 31 Jul 2024
    Just for reference, the gc-arena crate (https://github.com/kyren/gc-arena) we use in Ruffle's Actionscript 1/2/3 interpreters and across the entire engine, does this. As far as we know, it's safe and sound, at the cost of some limitations, mainly: to compile-time prevent sweeping while holding onto Gc references, every struct and function touching Gc objects passes an extra 'gc lifetime. And not being able to run the GC at arbitrary time can be major issue depending on what you're doing; in Ruffle we incrementally collect between frames and pray that no single frame will ever allocate enough to OOM in the middle of it :)

    And yeah, RefCells everywhere.

  • I built a garbage collector for a language that doesn't need one
    3 projects | news.ycombinator.com | 14 Aug 2023
    I'm going to point out one potential footgun with your library: circularly-linked Drops.

    If you have values A and B, both instances of T that implement Drop and hold a Gc to one another, then either A sees a dropped B or B sees a dropped A, and you get UB. Technically this isn't a problem because you already marked it as an unsafe trait, but your documentation should also mention this problem.

    You have a safe derive macro for Collectable, however, so it needs to reject Drop. This is possible with some weird macro magic[0].

    For those wondering, while Python doesn't have UB, it used to enforce the same rules until PEP 442[1]. Circularly linked garbage that implemented __del__ would instead get stored in sys.gc.garbage and you'd have to go in there and break references on __del__ types. However, native code objects will actually still trigger this behavior[2] presumably to avoid UB.

    I have no clue if Java finalizers need to worry about this.

    [0] In Ruffle we use gc_arena as our garbage collector. It enforces no_drop in it's Collect derive macro. See: https://github.com/kyren/gc-arena/blob/master/src/gc-arena-d...

    Actually, I lied: no_drop is one of two safe constraints you can use Collect with. The alternative is require_static, which only works because gc_arena treats the entire GC heap as a data structure that is owned and has a lifetime that all Gc pointers borrow. This doesn't work for dumpster, though, so ignore it.

    [1] https://peps.python.org/pep-0442/

    [2] https://docs.python.org/3/library/gc.html#gc.garbage

  • Make a LISP in Rust tutorial starting tomorrow.
    4 projects | /r/learnrust | 21 Dec 2022
    I foresee some potential problems with this approach. I would recommend trying to find an arena-based GC crate that you could use. gc-arena looks promising, although I haven't tried it — it seems to be built for your specific use case.
  • Implementing a safe garbage collector in Rust
    2 projects | /r/rust | 12 Apr 2022
    gc-arena uses closures to create "mutation sessions" where you are allowed to mutate the heap (see example).
  • GhostCell: Separating Permissions from Data in Rust
    2 projects | /r/rust | 31 Mar 2021
    One example of the second approach is the gc-arena library- see the implementation of the make_arena! macro.
  • A note from our sponsor - SaaSHub
    www.saashub.com | 8 Feb 2025
    SaaSHub helps you find the best software and product alternatives Learn more →

Stats

Basic gc-arena repo stats
5
610
8.2
about 2 months ago

kyren/gc-arena is an open source project licensed under Creative Commons Zero v1.0 Universal which is not an OSI approved license.

The primary programming language of gc-arena is Rust.


Sponsored
CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai