Both BaCon and QB64 includes a full runtime with every compiled program.
Call me stupid but I simply don't understand what this means. Can you elaborate on the word "runtime"?
Thanks,
Peter
EDIT: I see your HELLO WORLD reference now. So I think I understand what you mean: the BaCon header file always contains all macros and definitions, while the C file contains the program. I guess you mean that this header file contains a lot of code which is not actually being used in the Hello World program. This header file you refer to with the term "runtime".
If this is what you mean, then you have to understand the way C macros work. For the header file of BaCon is used by the C Pre Processor to expand inline functions in the BaCon code. Meaning that only those macros are used which appear in the BaCon program. Meaning that the C compiler just uses the code actually referred to.
Surely, all macro code is generated during conversion, but beware,
not all code is actually being used by the C compiler. That is the reason why the BaCon binarties are so small.
Also statements like "#include <stdio.h>" do not actually include a whole library. These statements just refer to header files which allow the C compiler to understand some libc function names.
So in terms of "runtime", BaCon binaries depend dynamically on libc, libm and libdl.
Nevertheless, the C code emitted by BCX is superior. It is very clean code which actually is human readable and it is easy to understand. And the code emitted by BaCon is not.
In a sense, BaCon uses C as intermediate code just to be able to create a binary. BaCon does not care if the C source is readable or not - it cares if it is compilable.
Regards
Peter