S9 CORE A Toolkit for Implementing Dynamic Languages By Nils M Holm, 2015-2016 In the public domain S9core is an easy-to-use toolbox for designers of programming languages. It frees the implementor from re-inventing the wheel. It is a single-file collection (plus some headers) of functions providing - a garbage collected heap - bignum (arbitrary precision) integer arithmetics - platform-independent real number arithmetics - garbage collected I/O ports - persistent heap images - etc S9core is available on all platforms providing a C99 compiler (C89 on 32-bit machines) as well as on Plan9 (native). See the documentation in s9core.pdf for further details. COMPILING S9 CORE Building S9core is part of building S9. Running "make test" will test the S9 interpreter and thereby also perform a thorough test of the S9core functions. To use S9core in your project, there are two options: - copy the files "s9core.c", "s9core.h", and "s9import.h" to your new project directory and just compile and link S9core against the other files - #include <s9core.h> and (optionally) <s9import.h> in your project and link against libs9core.a If you want to include the S9core files in your project, note that you can compile s9core with cc -DTEST -o s9core s9core.c to obtain an executable that will perform a quick self-test when called. It will not print anything when the test succeeds and print some diagnostic message and exit with a failure code otherwise. Feel free to include S9core in any project you like. It's in the public domain. ENJOY!