This is a fully ahead of time implementation of Python, built ontop of GCC for a feature rich, optimizing middle-end and backend.
Building GCCPY is fairly confsing to most people who haven’t built GCC before:
YOU CANNOT build GCC within the same directory of the sources!
$ apt-get install bison flex build-essential
Then to compile:
$ git clone ...
$ cd gccpy
$ ./contrib/download_prerequisites # optional
$ mkdir gccpy-build
$ cd gccpy-build
$ ../configure --prefix=/opt/gccpy \
--enable-languages=python \
--disable-multilib \
--disable-bootstrap
$ make
$ cd -
For my development sessions i generally pass:
$ gccpy -fdump-tree-gimple -fpy-dump-dot -fpy-gen-main -fpy-optimize -O0 -g test.py -o test
Options:
-fpy-gen-main Python has no explicit main method so we require at compile time for the user to explicitly say where the main method should be compiled in.
-fpy-dump-dot Dumps out the textural output of the DOT IL
-fpy-optimize Experimental optimizers for Python at the DOT IL level constant folding and propagation to some extend with data-flow analysis could be implemented.
-fdump-tree-gimple Dumps the textural output of the code generated for the GCC middle-end.
You can use all normal GCC options -O2 -g -mtune= -march= etc…
Very must still serves as a proof of concept but most of the core principles are implemented and work fairly well
We need one.
Port the python stdlib and figure out if we want to implement modules as static libraries or shared libraries.
Implement threading