Find file
Fetching contributors…
Cannot retrieve contributors at this time
102 lines (91 sloc) 3.45 KB
sVimPy is a very small Python virtual machine intended for use in microcontroller projects.
It supports most of the opcodes used in python3k.(except 1 to build slices, 1 to unpack objects)
The intended goal is to use this VM in environments like Atmel's ATmega chips (2-8kb RAM).
Slices are not supported at the moment.
Most data types are supported including floats,ints,strings,tuples,dicts,lists.
The microcontroller bootloader is still missing.
Features include:
* a stack based VM
* garbage collection
* very low memory usage (includes a memory manager which supports caching)
* an interactive debugging console
* dictionaries and tuples
* iterations
* generators
* compares & binary ops
* classes & inheritance
* exceptions
* VM single stepping (game loop usage is possible)
* calling Pyton functions from C and Python itself
* calling C functions from C and Python,
* a small memory footprint
* fast performance
* many builtin functions
* the ability to be used as a library in other projects
* simple API + code
* it's easy to add new functions to be called from python
* possible usage as a small deployment executable for Python projects
* portable interpreter executable
* an additional minimal pyc format called rpyc+ (code object layout minimized)
* some support tools to be used with svimpy
History + Roadmap :
0.1 first testing release
0.2 correct interpretation of function parameters
0.3 closures and refs
0.4 generators/iterators & yield opcode
0.5 streams for reading
0.55 fix function calls bugs fixed introduced during rewrite
of some code parts
+ build_inc tool
(to automatically increment build number)
0.56 fixed a million dollar bug :-)
+ BLINK example runs on an atmega328p with only 2kb
0.57 stream writing
0.58 svimpy interpreter executable
+ pyc_compress tool (WriteObject function)
+ pack_pos tool (for packing of python objects)
+ cleaned up debugging + Makefile enhancements
0.59 mp3 playback with external library
to test wrapper abilities
(every engine needs mp3 support)
of course i dont intend to use it
on small scale devices ; just for testing
0.6 internal functions
0.7 module import abilities
0.71 missing opcode SETUP_WITH and corrected
an indexing bug with the opcodes
after SETUP_WITH (not many)
0.73 basic attributes
0.74 classes support
+ class inheritance
+ fixed function calling
(now each function call
uses its own memory space)
0.75 basic support for file operations
0.76 missing opcodes (2-3 still missing)
+ basic exceptions support
0.77 removed redundancies
& manual stuff in external code
+ more management functions
+ basic error handling
+ packaging
0.8 vm feature complete (almost)
0.9 memory optimizations
including object locking mechanism
+ caching for near zero byte
memory usage interpretation
of python code
0.91 vm interface exposed to python code
0.92 vm command interface (to execute python code via serial interfaces,etc)
0.92 stream printing + sd-fat support
0.93 add missing internal functions used by classes
0.95 use buildhive for automatic release generation
(packaging + web deploy)
0.99 source clean up
1.0 stable release
+ real life applications
1.1 custom bootloader
1.5 ??? :-)
2.0 slices
3.0 time sliced multithreading