Skip to content
/ sVimPy Public

a very small python virtual machine, intended for use in microcontroller projects

License

Notifications You must be signed in to change notification settings

pez2001/sVimPy

Repository files navigation

	sVimPy-0.8

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
	
	
	
	

About

a very small python virtual machine, intended for use in microcontroller projects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published