8000 Roadmap for next release (v1.11 -> v2.0?) · Issue #4821 · micropython/micropython · GitHub
[go: up one dir, main page]

Skip to content

Roadmap for next release (v1.11 -> v2.0?) #4821

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
13 of 17 tasks
dpgeorge opened this issue May 29, 2019 · 58 comments
Open
13 of 17 tasks

Roadmap for next release (v1.11 -> v2.0?) #4821

dpgeorge opened this issue May 29, 2019 · 58 comments

Comments

@dpgeorge
Copy link
Member
dpgeorge commented May 29, 2019

This issue is intended to give an overview, track progress and provide discussion for the roadmap of features and changes to get MicroPython to the next release.

And I'd propose that the next release be v2.0, because MicroPython is now quite mature (although definitely not finished), and also v2.0 of the software would roughly correspond to the release of pyboard v2. (See #2486 for existing discussion about v2.0.)

The following features/changes are in scope for the next release (note this list is not a guarantee, nor exhaustive):

@dpgeorge dpgeorge pinned this issue May 29, 2019
@rolandvs
Copy link
Contributor
rolandvs commented Jun 2, 2019

stm32: USB HOST/OTG?

@dpgeorge
Copy link
Member Author
dpgeorge commented Jun 4, 2019

stm32: USB HOST/OTG?

I'm not sure about this, it's a nice feature to have but a fair bit of work to implement fully.

@dmartauz
Copy link
dmartauz commented Jun 7, 2019

esp32: hardware I2C and NVS ?

@mattytrentini
Copy link
Contributor

Maybe strive for identical - or very similar - API's across the supported ports? Where are we at with compatibility?

Ideally everything in machine would be (close to) identical across ports.

I know this is controversial, but...this should include considering deprecating parts of pyb - at least those that have alternatives in machine. This needs to be done with care and respect; as @peterhinch has correctly pointed out there is a lot of code that uses pyb. So maybe output a warning when a deprecated API is imported? Update documentation to guide users to the common API's and then later (or never) remove the pyb entries. Also need to figure out what other parts of pyb ought to remain there (genuinely specific to the PyBoard) or should be shifted so that other ports can use the same API (maybe I2C client?).

It just seems that API stability would be a great goal of v2.0.

@dpgeorge
Copy link
Member Author

It just seems that API stability would be a great goal of v2.0.

Yes I agree, and work continues to be done in that direction, but it's a hard goal to hit. For ADC and PWM see #4213 and #4237 . It'd be good to get at least these done, and then Pin, ADC, PWM, SPI, I2C and UART would be relatively consistent.

Update documentation to guide users to the common API's and then later (or never) remove the pyb entries

Yes, that's the aim, to update the docs so pyboard uses machine for the most part. See eg e5e4721 which prefers machine.I2C over pyb.I2C. In general it's hard because pyb-level classes provide a lot of detailed functionality that machine doesn't.

8000

@CaptainJackey
Copy link

Everytime we changed main.py and it need to RST and run , many uart tools such as putty will get error and need to restart . I hope we can improve this damn problem!

@jimmo
Copy link
Member
jimmo commented Jun 13, 2019

Everytime we changed main.py and it need to RST and run , many uart tools such as putty will get error and need to restart . I hope we can improve this damn problem!

Hit Ctrl-D after the red led turns off, rather than pressing the reset button on your pyboard. Also putty has a option in the menu to quickly restart the connection (use this rather than closing the window).

@CaptainJackey
Copy link

Everytime we changed main.py and it need to RST and run , many uart tools such as putty will get error and need to restart . I hope we can improve this damn problem!

Hit Ctrl-D after the red led turns off, rather than pressing the reset button on your pyboard. Also putty has a option in the menu to quickly restart the connection (use this rather than closing the window).

Thank you so much!

@KarlBenjaminHorn
Copy link

I would like to have DMA support for the ADC of the Pyboard.

@peterhinch
Copy link
Contributor

Nonblocking ADC and DAC methods would be great, especially on the Pyboard. I guess these would probably use DMA.

If this were done it would be worth considering uasyncio compatibility. This won't suit the highest performance applications. However there are uses for StreamReader and StreamWriter objects targeted on ADC and DAC instances. For this to work buffering would be needed. This could be implemented via double buffers or ring buffers which can signal half full/half empty status to give uasyncio time to schedule the StreamX method.

@Meekdai
Copy link
Meekdai commented Jun 28, 2019

Add support for SPI RAM interface On PYB?
Applications that require more RAM can run

@dpgeorge
Copy link
Member Author

Add support for SPI RAM interface On PYB?
Applications that require more RAM can run

The stm32 port already supports external SDRAM, and external QSPI flash as ROM.

@Meekdai
Copy link
Meekdai commented Jun 28, 2019

Add support for SPI RAM interface On PYB?
Applications that require more RAM can run

The stm32 port already supports external SDRAM, and external QSPI flash as ROM.

I learned about SDRAM extensions from #3940 , but STM32F405RGT6 does not have FMC, so I want to use SPI RAM to extend like ESP32. This is my discussion in the forum SPI FLASH 2 in PYBD_SF2

@mattytrentini
Copy link
Contributor

Is it worth improving some aspects of time handling?

  • Timezone/DST support, even if it's preliminary or an indication of how it is to be implemented
  • MicroPython and CPython use different structs for localtime() (tuple vs named tuple and DST is present in CPython)
  • RTC uses a completely different tuple again
    • Shouldn't it match the struct in time.localtime()?
  • ntptime (ESP32/ESP8266 only) could do with improvements
    • Allow different servers to be queried
    • Improve error handling
      • Retries
      • Meaningful exceptions when there's no network or the request failed. The current errors confuse beginners.
    • Add an async settime method?

Further:

  • Consider adding some of datetime?
  • Consider reviewing Maya, Arrow, Pendulum and Delorean
    • Are any of their features feasible and valuable? Especially if they're relatively portable and lightweight!

Time is a big and complex domain but it is quite important on an embedded device.

@peterhinch
Copy link
Contributor

Re modframebuf.c I'd like to see a solution to #2973.

Blitting between framebufs with arbitrary colour mapping wo 8000 uld be ideal. But if it is too heavyweight, a fix for the problem as originally outlined would have practical application and would be simple and cheap. A use case is to render in arbitrary colours objects stored as 1-bit maps (such as font glyphs). This is very slow in Python.

@kingsjl
Copy link
kingsjl commented Jul 2, 2019

esp32:support bluetooth?

@goatchurchprime
Copy link

I'd really like mDNS support in the socket.getaddrinfo() for looking up ".local" domains. (This is just the "easy" half of mDNS spec.)

Otherwise I've got to hard-code the ip-number when using mqtt to a local broker, which is not very robust as this number can change, which then requires taking down and reprogramming all my Micropython devices.

I've been getting around it using this minimal UDP sending code, which just about works on an ESP32. If this were done properly it would seriously help out with connecting embedded devices onto local networks in the real world where people don't always have access to the router to force it to use fixed ip-numbers.

@jimmo
Copy link
Member
jimmo commented Jul 9, 2019

I've been getting around it using this minimal UDP sending code, which just about works on an ESP32. If this were done properly it would seriously help out with connecting embedded devices onto local networks in the real world where people don't always have access to the router to force it to use fixed ip-numbers.

@goatchurchprime I agree this is a useful feature!

What do you mean by "just about works". Do you see any reason why this can't be implemented in Python and therefore needs to be part of the base firmware. i.e. can this be an optional module written in Python that users can add to their filesystem (or add as a frozen module) if they want it? (Perhaps ultimately add it to drivers, or micropython-lib)

@dpgeorge
Copy link
Member Author
dpgeorge commented Jul 9, 2019

I'd really like mDNS support

Note that in the stm32 port mDNS queries and the responder are enabled for boards that have network interfaces.

For esp32 I think it's just a matter of enabling the feature.

@goatchurchprime
Copy link

Moved the mDNS discussion out to #4912

@pidou46
Copy link
pidou46 commented Jul 26, 2019

Do you think the pulse counter (pcnt) support for esp32 could fit in the "esp32: support more of its features, like OTA, mesh, I2S" item ?

Does it lives in the lowhanging fruit area ?

@dpgeorge
Copy link
Member Author

Do you think the pulse counter (pcnt) support for esp32 could fit in the "esp32: support more of its features, like OTA, mesh, I2S" item ?

Does it lives in the lowhanging fruit area ?

Feel free to look into it. There's no problem to support more of the esp32 peripherals, it's just a matter of time to work on it.

@peterhinch
Copy link
Contributor

Support for nonblocking DNS lookup (usocket.getaddrinfo).
This has cropped up in the forum, here #4801 and in my own applications.

@nevercast
Copy link
Contributor
nevercast commented Sep 1, 2019

My colleague @ironss has created a fork over here for internal use that adds LittleFS for ESP32 https://github.com/ironss/micropython-littlefs

I see LittleFS is on the roadmap but no mention of an ESP32 implementation. Can we get this mainlined?

Edit: I have suggested that @ironss could rebase on to #3847 to ensure the approach and API is common between STM32 and ESP32.

@mattytrentini
Copy link
Contributor

@nevercast
The description does mention an ESP32 implementation: "esp8266/esp32: switch to use LittleFS (saves 4k RAM, more robust filesystem)?"

Looks like nice work by @ironss... 👍

@nevercast
Copy link
Contributor

Ah yes, further down the page. I stopped reading too early, good spotting.

@beyonlo
Copy link
beyonlo commented Oct 9, 2019

@peterhinch

Thank you for clarify!
All right, any new comment or report I will do at the forum :)

Anyway, I agree, the support for SSL/TLS on nonblocking sockets I would like to see in the next version :)

@ZeshuiLi
Copy link

esp32 supports quadrature encoder.

@nevercast
Copy link
Contributor

esp32 supports quadrature encoder.

Using which hardware? I don't believe there is a hardware driver for that.

@mcauser
Copy link
Contributor
mcauser commented Oct 15, 2019

esp32 supports quadrature encoder.

Using which hardware? I don't believe there is a hardware driver for that.

Using the pulse counter peripheral?

@nevercast
Copy link
Contributor
nevercast commented Oct 15, 2019

Using the pulse counter peripheral?

Interesting usecase. It would still require a Python driver to decode the pulse counts in to a rotation and we should probably have a purely GPIO solution also. But yes, good point, we should have an ESP32 Pulse Counter driver.

Edit:
Found a source for the discussion with an implementation of a quadrature encoder decoder using the PCT hardware: https://www.esp32.com/viewtopic.php?t=4983

Perhaps that should be raised as a seperate issue.

@mattytrentini
Copy link
Contributor

For reference: ESP-IDF Pulse Counter.

Agree, this should be a separate ticket. Note that #5214 touches on the topic (and there are some helpful links to related topics in the forum) but it isn't specific to the ESP32 hardware.

@Manu-8
Copy link
Manu-8 commented Oct 21, 2019

I think support for WPA2-ENTERPRISE is essential. Many school and university networks are using this for authentication. This would certainly boost the popularity of the system.
Actually i can't use micropython with my students for this reason.

@igiagante-zz
Copy link

@dpgeorge is there any chance to see soon something as smart config? Or any implementation that could help us to peer an app with an esp32?

@dpgeorge
Copy link
Member Author

v1.12 was tagged in 1f37194

There are a lot of good suggestions here, which will need to form part of the longer-term roadmap of features.

@alirezaimi
Copy link

please add mqtt async .

@dlech
Copy link
Contributor
dlech commented Dec 21, 2019

Suggestion: use Kconfig for configuring MicroPython

Would you like to configure MicroPython like this?

image

Or this:

image

See #5444 for details.

@tve
Copy link
Contributor
tve commented Jan 10, 2020

IMHO getting uasyncio sorted out, stable, and documented should be a major feature for the next release. I know there's a lot in progress but it's such as core facility for a lot of users (I believe) that it should be on the roadmap explicitly.

@goatchurchprime
Copy link

Is there a spectrum of benchmarks to stress the timing, capacity and memory footprint of the uasyncio library in place before it is rewritten/worked on?

I don't see any here: https://github.com/micropython/micropython/tree/master/tests/perf_bench

I must confess that I have never actually noticed a problem with this library in my use of it, so I don't know what people are complaining about. Maybe these benchmarks will show something up. For all I know the code might be really gnarly and be due for a rewrite, but you have to be sure that when you change it you don't accidentally lose performance that is already there.

@peterhinch
Copy link
Contributor

@goatchurchprime uasyncio V2.0 has bugs, some listed here; in particular task cancellation has a major failing. The new version has cleaner code and according to my measurements on early code was nearly as fast as V2.0. It has since been improved for better performance. I think you can be confident that, when released, it will offer a substantial improvement.

@goatchurchprime
Copy link
F987

Boy, you just blink and stuff gets already done! Please accept my apologies for not keeping up.

When the test/benchmarks are released, I hope I can contribute one that exercises my use-case of scriptlets -- that of running code via the exec() or execfile() functions in cancellable tasks. Just in case the code parser is or is not async optimized.

The code snippets are received through MQTT. There is no line between an API and an interpreted programming language, as many websites discovered when they got taken down by sql-inject attacks.

@beyonlo
Copy link
beyonlo commented Jan 13, 2020

IMHO getting uasyncio sorted out, stable, and documented should be a major feature for the next release. I know there's a lot in progress but it's such as core facility for a lot of users (I believe) that it should be on the roadmap explicitly.

I totally agree :)

@nalt
Copy link
nalt commented Apr 5, 2020

Are there any plans for better DAC support? This repo has routines for tone generation, even playing WAV files: https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo/wiki/dac

@nevercast
Copy link
Contributor
nevercast commented Jun 8, 2020

Has the ADC changes from v1.10 been forgotten? #4213 / #4356 ?

I would like to offer read_mv and read_v for the ESP32 port. Since this is something I'm in need of for a project (calibrated values).

Edit:
I see it was given mention here: #4821 (comment)

It would be good to have it in the checklist at the top.

@nevercast
Copy link
Contributor
nevercast commented Jun 8, 2020

Also, since this is v2.0, can we break some stuff and see consistency on the use of Pin vs number? #4379

I'm in favour of make everything use Pin, make number forbidden.

@PyjamasBeforeChrist
Copy link

Do you think the pulse counter (pcnt) support for esp32 could fit in the "esp32: support more of its features, like OTA, mesh, I2S" item ?
Does it lives in the lowhanging fruit area ?

Feel free to look into it. There's no problem to support more of the esp32 peripherals, it's just a matter of time to work on it.

Done for us by the looks?

https://forum.lvgl.io/t/example-for-working-with-a-rotary-encoder/1509/20

@pidou46
Copy link
pidou46 commented Sep 11, 2020

I guess "esp8266/esp32: switch to use LittleFS (saves 4k RAM, more robust filesystem)?" should be ticked ? isn't it ?

@IhorNehrutsa
Copy link
Contributor

esp32 supports quadrature encoder.

ESP32: New features PCNT() and QUAD() #6639

@PyjamasBeforeChrist
Copy link

esp32 supports quadrature encoder.

ESP32: New features PCNT() and QUAD() #6639

esp32 supports quadrature encoder.

ESP32: New features PCNT() and QUAD() #6639

Yes please this is absolutely needed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0