Skip to content

Latest commit

 

History

History
71 lines (51 loc) · 1.7 KB

README.org

File metadata and controls

71 lines (51 loc) · 1.7 KB

Python Front-End to GCC

This is a fully ahead of time implementation of Python, built ontop of GCC for a feature rich, optimizing middle-end and backend.

Building

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 -

Usage

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…

Status

Very must still serves as a proof of concept but most of the core principles are implemented and work fairly well

Major Projects

Garbage collector

We need one.

Port Python stdlib

Port the python stdlib and figure out if we want to implement modules as static libraries or shared libraries.

Multi-core

Implement threading