With PPP support added to MicroPython this would be better
handled by creating a PPP-compatible firmware for Pico Wireless
and using the PPP module instead... I think.
We've been maintaining a downstream patch to disable C++ exception
handling, which gives us some headroom before our builds get too big and
overwrite themselves at runtime.
Forgetting to apply this patch is a constant source of debugging
frustration. It turns out it can just be added to our USER_C_MODULES cmake
files instead, where it will implicitly be included when building against
our modules.
This module redirects all pre-init object memory allocations into a static, fixed-sized, linear, non-freeing memory pool.
It then auto-switches into "MICROPYTHON" mode, whereupon all C++ `new` and `delete` calls are remapped to `m_malloc` and `m_free` respectively.
MicroPython's GET_STR_DATA_LEN macro returns a const byte array and len, which std::string would copy into heap.
Using string_view lets us wrap the existing const values.