A library to completely destroy the C language, and pretend it is something that it is not.
This is a pet project of mine, abusing the hell out of the C pre-processor, and other C language features, to create a language that is still technically C, but looks and behaves differently, whilst remaining fully compatible with C.
It takes a whole lot of bad ideas and mashes them into an abhorrent monstrosity.
#include "evil.h" Main then displayln("Hello, World!"); end
The version number currently means nothing, as the library is in a state of flux.
Check the defines:
Versioning will re-adopt Symantic Versioning once we've restored the library to cover everything the previous library could do. (Waiting on
EVIL_HELP to be fully restored).
EVIL_HASH_VER is the equivalent of:
sh -c 'cat include/head.h $(find include -name "*.h" -not -name head.h -not -name tail.h -print0 | sort -z | xargs -r0 echo) include/tail.h | sha512sum | tr -d " -" | tail -c 15'
And embedded into every build of
Currently in a heavy state of flux, with numerous parts not yet implemented.
Issue Tracker. (You don't need a user.)
The documentation is still under heavy development.
You can look at manual.md to see a version.
A PDF version which is a bit more usable (includes examples, etc.) can be found here.
Note: Neither the PDF nor the manual.md file is guaranteed to be up to date.
Or you can:
make doc to create an up-to-date
make pdf to convert a
manual.md into a prettier and more helpful
Note: As the manual is just an artefact created by CNoEvil, it falls under the same license, instead of a documentation-specific license. If you wanted to print/sell/distribute it, you are within your rights. So long as you follow the terms spelled out in the license.
A prebuilt version of the single-header library can be found in the evil.h file.
However, if you wish to build:
A build includes some information for diagnostic purposes:
uname -rmo, which looks something like:
5.4.10-arch1-1 x86_64 GNU/Linux
This is hopefully not enough to fingerprint you, but that choice is yours.
These are comments so don't end up in whatever you're compiling with CNoEvil. It's just in the header, so if something goes wrong I have somewhere to start from.
To strip out all this information (except the files hash which is necessary and not unique to the build), run:
cat evil.h | sed 's/\/\/ Size:.*$/ /g' | sed 's/\/\/ Built:.*$/ /g' | sed 's/\/\/ Machine:.*$/ /g' > evil_private.h
Which will make a new header called
evil_private.h without the included information.
Don't... Don't use this. Please.
But if you must, see the LICENSE.md file.
Note: It is not the 3-Clause BSD license it might appear at first glance.