We spend a lot of time at our desk and so spending a few thousand dollars to create a comfortable workspace is far from exorbitant.
186 karma · joined August 15, 2010
We spend a lot of time at our desk and so spending a few thousand dollars to create a comfortable workspace is far from exorbitant.
Personally I would be reluctant to use FATFS as a writable filesystem on a commercial embedded device.
As a MicroPython contributor I can't/won't use PyCom's fork because any code I develop for it cannot be accepted upstream.
I do like their hardware, it's a shame they chose to make their software licensing incompatible.
Now, the TinyPICO is more expensive than some ESP32 boards but that's because it's been engineered well and is manufactured in Australia by a maker that goes out of his way to support his products.
(I work for a company that makes medical devices that use MicroPython.)
For example, all of the machine API is typically very fast. I'd be surprised if you'd notice a significant improvement sending SPI buffers directly from C. But it's way more convenient from MicroPython - especially considering you can do it live at a REPL.
If you're spending a lot of time processing in MicroPython then yes, you'll notice a perf hit. But, if that's the case, carve out the perf-sensitive code and create a C module in MicroPython; it's straightforward.
It's akin to the way that CPython is considered slow but by using libraries like numpy or pandas the real-world performance is decent.
Are there any differences there that you'd consider significant? They are generally quite minor and usually have workarounds. Typically a difference is only introduced when additional memory (either adding complexity to the parser or in runtime use) is the consequence of absolute compatibility. They all seem like a reasonable trade-off.
> Not to mention that the baseline for those lists is CPython 3.4 - MicroPython is also missing most of the new features of CPython 3.5 - 3.9.
The baseline was 3.4 during development but more modern features have continued to be added, particularly if they can be shown to be implemented with low memory use. For example there is solid asyncio support (based on 3.8 [0]), the assignment operator has been implemented and, care has been taken to ignore type annotations correctly. fstring support is _almost_ there too (it ought to make it in to the next release).
The development team listens to requests for new language features so please raise a ticket (or comment on an existing one [1], [2]) to help prioritise upcoming features.
[0] https://github.com/peterhinch/micropython-async/blob/master/...
[1] Python 3.5 support: https://github.com/micropython/micropython/issues/1329
[2] Python 3.6 support: https://github.com/micropython/micropython/issues/2415
https://github.com/micropython/micropython/pull/5026
Still quite a lot of work left for pdb-like features but I'm optimistic it'll get there!
Neither of those rule out using MicroPython. Though you are likely to have to do some C work to achieve higher performance.
So yes, it's not possible to use very small devices. Still, this means that MicroPython can run on reasonably small, reasonably cheap devices - and your development effort can be significantly reduced.
https://github.com/micropython/micropython/tree/master/examp...
It's still significantly faster than developing wholly in C - or Rust for that matter. And that's if writing in a low level language is required at all.
Generally MicroPython can absorb modern Python features where the implementation can be shown to be efficient, particularly with low RAM costs.