On Tue, 3 Jun 2014 23:11:46 +1000
Chris Angelico <ros...@gmail.com> wrote:
> On Tue, Jun 3, 2014 at 10:27 PM, Damien George
> <damien.p.geo...@gmail.com> wrote:
> > - Supports almost full Python 3 syntax, including yield (compiles
> > 99.99% of the Python 3 standard library).
> > - It supports a growing subset of Python 3 types and operations.
> > - Part of the Python 3 standard library has already been ported to
> > Micro Python, and work is ongoing to port as much as feasible.
> I don't have an actual use-case for this, as I don't target
Please let me chime in, as one of MicroPython contributors. I also
don't have immediate usecase for a Python microcontroller (but seeing
how fast industry moves, I won't be surprised if in half-year it will
seem just right). Instead, I treat MicroPython as a Python
implementation which scales *down* very well. With current situation in
the industry, people mostly care about scaling up - consume more
gigabytes and gigahertz, catch more clouds and include heavier and
MicroPython goes another direction. You don't have to use it on a
microcontroller. It's just if you want/need it, you'll be able - while
still staying with your favorite language.
I'm personally interested in using MicroPython on a small embedded
Linux systems, like home routers, Internet-of-Thing devices, etc. Such
devices usually have just few hundreds of megahertz of CPU power, and
2-4MB of flash. And to cut cost, the lower bound decreases all the
> but I'm curious: What parts of Py3 syntax aren't
> supported? And since you say "port as much as feasible", presumably
> there'll be parts that are never supported. Are there some syntactic
> elements that just take up way too much memory?
Syntax-wise, all Python 3.3 syntax is supported. This includes things
like yield from, annotations, etc. For example:
Micro Python v1.0.1-139-g411732e on 2014-06-03; UNIX version
>>> def foo(a:int) -> float:
... return float(a)
"99.9%" statement is due to fact that there were some problems parsing
couple of files in CPython 3.3/3.4 stdlib.
Note that above talks about syntax, not semantics. Though core
language semantics is actually now implemented pretty well. For
example, "yield from" works pretty well, so asyncio could work ;-).
(Except my analysis showed that CPython's implementation is a bit
bloated for MicroPython requirements, so I started to write a
simplified implementation from scratch).
As can be seen from the dump above, MicroPython perfectly works on a
Linux system, so we encourage any pythonista to touch a little bit of
Python magic and give it a try! ;-) And we of course interested to get
feedback how portable it is, etc.
(As a side note, it's of course possible to compile and run MicroPython
on Windows too, it's a bit more complicated than just "make".)