Garbage collectors in C
Go to file
Peter McGoron 70df63c28e delete for hashtables 2024-06-21 16:49:55 -04:00
examples delete for hashtables 2024-06-21 16:49:55 -04:00
include fix root push and pop issue; make shared library for examples 2024-06-20 23:14:25 -04:00
.gitignore strings: add more tests 2024-06-12 08:56:49 -04:00
COPYING cheney copying collector 2024-06-11 23:40:34 -04:00
Makefile strings: add more tests 2024-06-12 08:56:49 -04:00
README.rst delete for hashtables 2024-06-21 16:49:55 -04:00
c89_relo.c fix root push and pop issue; make shared library for examples 2024-06-20 23:14:25 -04:00
cheney_c89.c fix root push and pop issue; make shared library for examples 2024-06-20 23:14:25 -04:00
uns.c fix root push and pop issue; make shared library for examples 2024-06-20 23:14:25 -04:00

README.rst

=================
Universal Service
=================

Universal Service is a collection of garbage collectors written in C.

-------
License
-------

Universal Service is licensed under the LGPL-3.0-or-later.

Contrary to popular belief, **static linking LGPL code does not force
your code to be LGPL.** The LGPL requires you to allow the user to swap
out the LGPL code for anything that fits the interface, and for you to
redistribute modifications to the LGPL code. From the
`GNU Project FAQ <https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic>`_:

> Does the LGPL have different requirements for statically vs dynamically
> linked modules with a covered work?
>
> For the purpose of complying with the LGPL (any extant version: v2, v2.1 or v3):
>
> If you statically link against an LGPLed library, you must also
> provide your application in an object (not necessarily source) format,
> so that a user has the opportunity to modify the library and relink
> the application.

You can statically link any LGPL 3.0 code to code of permissive licenses
(like MIT), and even to source-available license (like the SSPL or the
Commons Clause) as long as the end user can recompile the program to use
their own version of the library.

----
Todo
----

* call before gc and after gc
* Make makefiles simpler and POSIX compliant
* Address sanitizer, ub sanitizer if available