:Author: Dean Hall
:Copyright: Copyright 2002 Dean Hall.
See `License`_ for details.
:Id: $Id: README 116 2006-08-24 13:42:09Z dwhall $
PyMite is a flyweight Python interpreter written from scratch to execute
on 8-bit and larger microcontrollers with resources as limited as 32 KiB
of program memory (flash) and 4 KiB of RAM. PyMite supports a subset of
the Python syntax and can execute a subset of the Python bytecodes.
PyMite can also be compiled, tested and executed on a desktop computer.
All of the source code for PyMite is licensed under the GNU General
Public License v2. A copy of the license is in the file ``LICENSE``.
Copyright 2002 Dean Hall.
This program is free software; you can redistribute it and/or
modify it under the terms of version 2 of the GNU General
Public License as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA
All of the documentation and images for PyMite are
licensed under the GNU Free Documentation License.
Copyright 2006 Dean Hall
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is in the file ``docs/LICENSE``.
Perform the following steps to build PyMite and the included
system tests on the desktop:
1. In the project root, run ``make`` to create ``libpmvm.a``
2. In the project root, run ``make check`` to build and run
the unit tests and the system tests.
To build for AVR targets like the ATmega103 (refer to the Makefile for others):
1. In the project root, run ``make clean; make check TARGET=AVR``
to make an executable for ``src/tests/t003.*``
The development system should have installed the GNU Compiler
Collection version 3.4 or later and Python 2.4 or later.
The author also uses avr-gcc to target Atmel AVR microcontrollers.
PyMite is developed on Mac OS X and should also compile on
GNU/Linux and Cygwin operating systems. Since PyMite is so
deeply embedded, it does not rely on many libraries.
When compiling for the AVR, it will need avr-libc.
PyMite builds as an archive. The user should then build his
own main() function following examples in ``src/samples/`` and link in
``libpmvm.a`` and the appropriate PyMite native libraries.
Please review the `PyMite Trac`_ project management space
space for up-to-date information about PyMite.
Please join the `PyMite maillist`_ for all communications concerning PyMite.
This will ensure that FAQs can be found in the list archives and
all issues are captured and available for public inspection.
.. _`PyMite Trac`: http://pymite.python-hosting.com/
.. _`PyMite maillist`: http://groups.google.com/group/pymite
My personal thanks go out to these people for their contribution to PyMite:
- Josh Lifton: Used PyMite in PhD work, donated many code fixes and tests.
- Philipp Adelt: Enhancements to pmImgCreator.py, issues and fixes.
- www.webfaction.com: for providing quality, free project hosting on
This is PyMite release 04
* Release 04, 2006/12/14
- #62: Created Release 04 package
- #51: Updated to Python 2.5 bytecodes
- #57: Created doc showing what PyMite does [not] support
- #60: Implemented heap_sweep
- #59: Improved bytecode UNPACK_SEQUENCE
- #58: Added support for keyword "in"
- #26: Implemented more builtin functions
- #49: Removed null check from object methods
- #56: Implemented \*_POWER bytecodes
- #17: Completed the implementation of obj_isEqual()
- #54: Changed seglist API so segnum/segindx are encapsulated
- #10: Created sequence_getSubscript()
- #33: Created new ARM target
- #36: Deprecated dwh_types.h
- #53: Fixed Win32/x86 build break
- #38: Made use of pycscope.py conditional in Makefile
- #37: Created PM_RAISE()
- #34: Converted all "Py" to "Pm"
- #50: Integrated __LINE__ into PM_RAISE
- #48: Organized and deploy unit tests
- #45: Finished interpret loop edits
- #35: Macroized all operations on object descriptors
- #42: Fixed misuse of PM_RAISE
- #43: Fixed mem_getInt()
- #40: Fixed heap chunk transfer
* Release 03, 2006/09/17
- #30: Created Release 03 package
- #4: Enabled compiler warnings as errors
- #7: Unified licensing and copyright info in all files
- #16: Created pm_init() that does the initial housekeeping
- #29: Corrected function call in mmb.py's sleepms()
- #28: Fixed loader to modules with root-level __NATIVE__ docstring load
- #2: Separated stdlib from user app
- #27: Made S16/U16 really be 16-bits on DESKTOP
- #20: Added support for the assert statement
- #25: Created slide-compatible illustration for build process
- #24: Removed consts == docstring assumption from pmImgCreator
- #3: Made src/tests/Makefile clean better
- #23: Removed absolute paths to allow building with WinAVR
- #18: Removed "-ansi" compiler option from AVR builds
- #19: Broadened target from ATMEGA103 to AVR
- #11: Made src/tests/ build module images as C files, not header files
- #9: Fixed BINARY_SUBSCR for case stringobj[intobj]
- #14: Documented the development process
- #6: Made pmImgCreator append a null terminator to image list
- #8: Removed leftover uses of ``HOST_``
- #12: Made mem_* funcs always use RAM memspace when target is DESKTOP
- #15: All mem_*() funcs and pointers in the vm should use unsigned not
signed or void
- #1: Transfered PyMite repository to http://pymite.python-hosting.com
* Release 02, 2006/08/11
- N/A: Create Release v 02 package.
- N/A: VM funcs modified so that return objects are by
reference and funcs return a PyReturn_t for internal
error checking. Library modules are broken until they
are modified similarly.
- N/A: The pmImgCreator.py script was modified to work via
the command line. pmImgCreator GUI is deprecated.
- N/A: Converted many files' EOLs to Unix.
* Release 01, 2003/03/18
- N/A: Initial release made for PyCon 2003.
- N/A: Compiles for desktop and Atmel ATmega103.