: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 microcontrollers. PyMite supports a subset
of the Python 2.0 syntax and can execute a subset of the
Python 2.0 bytecodes. PyMite can be compiled, tested and
executed on a desktop computer and also targeted for 8-bit
embedded systems with resources as limited as 64 KiB of
program memory (flash) and 4 KiB of RAM.
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 the images contained therein 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 tests ``src/tests/t0??.*``
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.0 or later.
The author also uses avr-gcc to target Atmel AVR
PyMite is developed on Mac OS X 10.4 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 given examples and link in
``libpymvm.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:
- Philipp Adelt: Enhancements to pmImgCreator.py, issues and fixes.
- www.webfaction.com: for providing quality, free project hosting on
This is PyMite release 03
* 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.