pymite / README


:Author:    Dean Hall
:Copyright: Copyright 2002 Dean Hall.
            See `License`_ for details.
:Release:   04
: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
    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`:
.. _`PyMite maillist`:


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, issues and fixes.
    - for providing quality, free project hosting on

Release Notes

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 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'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[0] == 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

* 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 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.

.. :mode=rest: