diff --git a/py/mpconfig.h b/py/mpconfig.h index 5d8c57692e..505b1b2d18 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -85,6 +85,14 @@ typedef long long mp_longint_impl_t; #define MICROPY_ENABLE_SLICE (1) #endif +// Enable features which improve CPython compatibility +// but may lead to more code size/memory usage. +// TODO: Originally intended as generic category to not +// add bunch of once-off options. May need refactoring later +#ifndef MICROPY_CPYTHON_COMPAT +#define MICROPY_CPYTHON_COMPAT (1) +#endif + /*****************************************************************************/ /* Miscellaneous settings */ diff --git a/py/runtime.c b/py/runtime.c index e1e9e31cc7..0da3ced058 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -143,6 +143,13 @@ void rt_init(void) { mp_map_add_qstr(&map_builtins, MP_QSTR_sum, (mp_obj_t)&mp_builtin_sum_obj); mp_map_add_qstr(&map_builtins, MP_QSTR_str, (mp_obj_t)&mp_builtin_str_obj); +#if MICROPY_CPYTHON_COMPAT + // Add (empty) micropython module, so it was possible to "import micropython", + // which can be a placeholder module on CPython. + mp_obj_t m = mp_obj_new_module(qstr_from_str_static("micropython")); + rt_store_name(qstr_from_str_static("micropython"), m); +#endif + next_unique_code_id = 1; // 0 indicates "no code" unique_codes_alloc = 0; unique_codes = NULL;