gc-arena VS makelisp

Compare gc-arena vs makelisp and see what are their differences.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
gc-arena makelisp
4 1
415 0
- -
8.2 10.0
11 days ago over 1 year ago
Rust Makefile
Creative Commons Zero v1.0 Universal GNU General Public License v3.0 or later
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.

gc-arena

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 2023-08-14.
  • 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.

makelisp

Posts with mentions or reviews of makelisp. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-12-21.
  • Make a LISP in Rust tutorial starting tomorrow.
    4 projects | /r/learnrust | 21 Dec 2022
    To get started just fork and clone this repository https://github.com/codeislove99/makelisp and start working. The starting file is rust/src/bin/step0_repl.rs If there are any questions or problems please ask. I could not get the MAL test code to work on windows so I am using GitHub codespaces for running the built-in tests.

What are some alternatives?

When comparing gc-arena and makelisp you can also consider the following projects:

samsara - a reference-counting cycle collection library in rust

gcarena-demo - demo of gc-arena crate with linked lists

rune - Rust VM for Emacs

mal - mal - Make a Lisp