pymite / README


:Author:    Dean Hall
:Copyright: Copyright 2002 Dean Hall.
            See `License`_ for details.
:Release:   08
: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 64 KiB
of program memory (flash) and 4 KiB of RAM. PyMite supports a subset of
the Python 2.5 syntax and can execute a subset of the Python 2.5 bytecodes.
PyMite can also be compiled, tested and executed on a desktop computer.


PyMite is offered through one of two licenses: commercial or GPL v2.
See the LICENSE_ file at the root of this package for licensing details.

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



You must build PyMite on a system with a POSIX-like terminal:
Mac OS X, Linux or Cygwin.  GNU Make should be installed.
The development system should have installed the
`GNU Compiler Collection`_ version 3.4 or later and `Python`_ 2.5 or 2.6.
The SCons build system is experimental.
Please read ``docs/src/BuildSystem.txt`` for more details.

To build PyMite for the desktop platform and run the interactive prompt
(press Control+D when done)::

    $ make ipm
    ipm> print "Hello world."
    Hello world.
    ipm> ^D

To run the system tests on the desktop::

    $ make check

To cross-compile for a different platform, type ``make PLATFORM=<plat>``
where ``<plat>`` is the name of a subdirectory in ``src/platform/``.
For example::

    $ make PLATFORM=avr

The author uses avr-gcc to compile for Atmel AVR microcontrollers
and arm-elf-gcc to compile for ARM7TDMI microcontrollers.

Since PyMite is so deeply embedded, it does not rely on many libraries.
When compiling for the AVR, it will need avr-libc.

.. _`GNU Compiler Collection`:
.. _`Python`:


Please browse the `Python-on-a-chip project`_ site for up-to-date information.
and join the `Python-on-a-chip maillist`_ for discussion about the project and
the PyMite virtual machine.

.. _`Python-on-a-chip project`:
.. _`Python-on-a-chip maillist`:


My personal thanks go out to these people for their contribution to PyMite:

- Diego Martins: Reporting a build break and including a patch.
- Mark Eichin: Feedback on system tests and Makefile

Release Notes

This is PyMite release 08

* Release 08, 2009/04/20

    New issue tracker:

	- 9  Add "IPM=true" to the Makefile mods in docs/src/HowToPortPyMite.txt
	- 11 Create a sizeof module
	- 12 Fix float endian issue   float
	- 16 Fix 64-bit FTBFS
	- 17 Make pyserial module optional for ipm-host
	- 18 Make ipm help messages cross-platform
	- 19 Document a useful scons option
	- 24 Update DevelopmentProcess.txt for new repos and issue tracker
	- 25 Create release 08
	- 26 Update HowToReleasePyMite.txt

    Old Trac system:

    - #196 Use snprintf() in float_print() and int_print() since -ansi was lifted
    - #195 Restored #include <math.h> to float.c
    - #194 Added -h/--help args to ipm
    - #193 Updated ipm usage message to comply with GPL
    - #192 Updated ipm docs with pyserial dependency and win32 args
    - #180 Fixed gc bug during ipm
    - #190 Fixed segfault when num args is fewer than expected
    - #189 Updated README with correct build instructions
    - #72  Implemented plat module for other targets
    - #182 Created I/O funcs so plat_reportError can be removed from plat interface
    - #187 Allowed removal of __doc__ from co_names
    - #185 Created porting document
    - #184 Added scons build capability
    - #179 Unified plat and samples directories
    - #183 Updated the FAQ
    - #181 Fixed AT91SAM7 demo

* Release 07, 2009/03/08
* Release 06, 2009/01/30
* Release 05, 2007/05/10
* Release 04, 2006/12/14
* Release 03, 2006/09/17
* Release 02, 2006/08/11
* Release 01, 2003/03/18

.. :mode=rest: