marCsweep/README.md

52 lines
1.2 KiB
Markdown

# marCsweep
A mark-and-sweep garbage collector with a simple virtual machine to perform
allocations.
## Building
Compiling the project should be relatively easy, even if you aren't familiar
with `make`.
Dependences: `git`, `make`, and `gcc`. Compiling with `clang` is also possible,
simply replace "gcc" with "clang" in the first line of the Makefile.
```
git clone https://codeberg.org/andyscott/marCsweep.git
cd marCsweep
make release
```
That's it! The Makefile will automatically create the build directory and place
the compiled executable there.
## Running
Once compiled, the program can be run with the following:
```
cd build # or debug
./gc
```
By default the program will output the results of the test cases:
> test_int_alloc: PASS
> test_pair_alloc: PASS
> test_obj_count: PASS
> test_pair_alloc: PASS
> test_unreachable: PASS
> test_auto_gc: PASS
If all six tests pass, then the library compiles correctly on your system and
should be ready for experimentation!
## Notes
This is a personal project that I am writing in my free time to learn more about
garbage collection. Thank you to [Robert
Nystrom](https://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
for the idea.