README: updated for new malloc and directory structure

This commit is contained in:
Andrew Scott 2024-08-24 18:13:02 -04:00
parent 73e2716100
commit c73dfc2c00
Signed by: a
GPG key ID: 7CD5A5977E4931C1

View file

@ -1,38 +1,44 @@
# marCsweep
A mark-and-sweep garbage collector with a simple virtual machine to perform
allocations.
A mark-and-sweep garbage collector written in C.
Includes a simple virtual machine and a custom `malloc` implementation
for creating, tracing, and freeing garbage.
## Building
Compiling the project should be relatively easy, even if you aren't familiar
with `make`.
Dependencies: `git`, `make`, and `gcc`. Compiling with `clang` is also possible,
simply replace "gcc" with "clang" in the first line of the Makefile.
Dependencies: `git`, `make`, and `gcc`.
```
git clone https://codeberg.org/andyscott/marCsweep.git
cd marCsweep
make release
make release # or debug
```
That's it! The Makefile will automatically create the build directory and place
the compiled executable there.
That's it! Make will create the `bin` directory and place the finished
executable there.
Compiling with `clang` is also supported, just replace "gcc" with "clang" in the
first line of the `Makefile`. Also note that if you don't specify a target for
make (i.e. "release" or "debug") both will be built. Debug builds are placed in
the `debug` directory.
## Running
Once compiled, the program can be run with the following:
```
cd build # or debug
cd bin # or debug
./gc
```
By default the program will output the results of the test cases:
The results of the test cases will be output to your terminal:
> test_int_alloc: PASS
test_pair_alloc: PASS
@ -49,4 +55,8 @@ should be ready for experimentation!
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.
for the idea.
Sadly, it was this author's idea to extend the project by writing a custom
`malloc`. Perhaps I should have been lazy and used the preexisting definitions,
but where's the fun in that?