Skip to content

python compiler

Zeioth edited this page Jul 12, 2023 · 5 revisions

Python is treated the same way we treat the other compilers. With one big particularity. Python can be:

  • Interpreted
  • Compiled to machine code
  • Compiled to bytecode

In this section I will describe how we do it internally.

Interpreted

This is how you would normally run a python program:

# Internally we do
python main.py

Compiled to machine code

We use nuitka to compile the program to machine code. What nuitka does, is to convert your code to C and compile it. This means your program can run even if the computer doesn't have a python interpreter. This way of compiling offers the maximum performance.

# Internally we do
nuitka main.py

The way of running the resulting program is just

./bin/program

Compiled to bytecode

We use the tool pythoninstall to convert the program to bytecode. This means your program can run in any machine that has the python interpreter, with a performance close to machine code. This way of compiling offers a portability as good as interpreted python, with a performance close to machine code. (Similar to a java/C# program).

# Internally we do
pyinstaller main.py

Again, the way of running the resulting program is just:

./bin/program

Misc. considerations

Note that if you pass parameters in your .solution file, you are targeting only one type of compilation (as every type of compilation use a different compiler). If you want to do crazy stuff like performing all types of compilation at the same time, fork the project and write your own python backend.