Hello to the list,
I have an idea for Python that is non-traditional in that it doesn’t extend or modify existing Python language structure.
The idea uses Python to translate Python, entirely under program control, directly to optimized assembly language .dll or .so files, called “extensions.”
Extensions are called from Python using Python’s ctypes interface. The ctypes wrapper for each extension is created automatically.
The goal of this idea is for Python to perform as fast or faster than C or C++, without leaving Python.
1. Large project – now 23,556 lines of Python.
2. Evolved from a project that automatically translated APL to assembly language dlls -- more than 30,000 hours of development in APL and assembly language.
3. Solves the tremendous problem of coding assembly by hand.
4. Point-and-click interface.
5. Ahead-of-time compilation.
6. Python translated directly to assembly language – no third-party compiler (GCC, LLVM, Clang, etc.) or intermediate representation.
7. Advanced assembly language optimizations: registers, SIMD, multicore, loop fusion, loop unrolling, etc., custom-fitted to Python.
8. No Global Interpreter Lock issues – ctypes releases the GIL. Extensions have full use of all threads and cores.
9. NumPy and SciPy functions, as well as Python built-in functions and built-in library functions, translated directly to optimized assembly language to avoid expensive Python callbacks.
10. Memory safe:
a. controls buffer access and frees every memory pointer when the extension returns from assembly to Python
b. handles bounds checking on variables and arrays passed into the extension by ctypes
c. extensions will not encounter errors such as buffer overflows, buffer over-reads, or memory race conditions
d. handles recursive programs with its own stack, thus avoiding stack exhaustion for recursive programs
More details at https://PysoniQ.com:
A video demonstration
Try out the point-and-click interface at the “Try PysoniQ” link
A detailed Project Overview
Blog and speed metric links for deeper analysis of the technologies
Downloadable PDFs – see the Resources link
Any comments from the Python community on this project would be most appreciated!