| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
With newer versions of esp_iot_sdk the iram1_0_seg started to overflow.
Now it doesn't.
Addresses issue #1254.
|
| |
|
| |
|
|
|
|
|
| |
Moved modesp.o to flash and increased size of the irom0_0_seg segment. The new
value was taken from NodeMCU linker script.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
mp_obj_get_int_truncated will raise a TypeError if the argument is not
an integral type. Use mp_obj_int_get_truncated only when you know the
argument is a small or big int.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Hashing is now done using mp_unary_op function with MP_UNARY_OP_HASH as
the operator argument. Hashing for int, str and bytes still go via
fast-path in mp_unary_op since they are the most common objects which
need to be hashed.
This lead to quite a bit of code cleanup, and should be more efficient
if anything. It saves 176 bytes code space on Thumb2, and 360 bytes on
x86.
The only loss is that the error message "unhashable type" is now the
more generic "unsupported type for __hash__".
|
|
|
|
| |
I.e. in bytecode Python functions.
|
|
|
|
|
|
| |
Unfortunately, MP_OBJ_STOP_ITERATION doesn't have means to pass an associated
value, so we can't optimize StopIteration exception with (non-None) argument
to MP_OBJ_STOP_ITERATION.
|
|
|
|
|
| |
MP_OBJ_STOP_ITERATION is equivalent of raising StopIteration, except
mp_vm_return_kind_t for it is "yield".
|
| |
|
|
|
|
|
|
|
| |
When generator raises exception, it is automatically terminated (by setting
its code_state.ip to 0), which interferes with this check.
Triggered in particular by CPython's test_pep380.py.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Exceptions in .close() should be ignored (dumped to sys.stderr, not
propagated), but in uPy, they are propagated. Fix would require
nlr-wrapping .close() call, which is expensive. Bu on the other hand,
.close() is not called often, so maybe that's not too bad (depends,
if it's finally called and that causes stack overflow, there's nothing
good in that). And yet on another hand, .close() can be implemented to
catch exceptions on its side, and that should be the right choice.
|
| |
|
|
|
|
|
| |
Testing for incorrect value led to premature termination of generator
containing yield from for such iterator (e.g. "yield from [1, 2]").
|
| |
|
|
|
|
| |
Make thumb2 have priority over arm.
|
|
|
|
|
|
| |
The code was apparently broken after 9988618e0e0f5c319e31b135d993e22efb593093
"py: Implement full func arg passing for native emitter.". This attempts to
propagate those changes to ARM emitter.
|
|
|
|
|
| |
This allows the output of the extra-coverage tests to be checked using
the normal run-tests script.
|
|
|
|
|
|
| |
The function and corresponding command-line option are only enabled for
the coverage build. They are used to exercise uPy features that can't
be properly tested by Python scripts.
|
| |
|
|
|
|
|
|
|
|
| |
upip is a simple and light-weight package manager for MicroPython modules,
offering subset of pip functionality. upip is part of micropython-lib
project: https://github.com/micropython/micropython-lib/tree/master/upip
This script bootstraps upip by downloading and unpacking it directly from
PyPI repository, with all other packages to be installed with upip itself.
|
| |
|
|
|
|
| |
Also flush stdout so you can see output as it comes.
|
| |
|
| |
|
|
|
|
|
| |
The function passed to socket.onsent() gets called after data is succesfully
sent by the socket.
|
|
|
|
| |
This was causing crashes in .onconnect()
|
|
|
|
| |
Also remove __debug__ from one of the bytecode tests.
|
|
|
|
|
|
|
| |
As user_init() is not a true main functions, the stack pointer captured within
is not pointing at the base of the stack. This caused gc_collect being called
with sp being higher than stack_end, causing integer overflow and crashing as
gc tried to scan almost the entire address space.
|
|
|
|
| |
Addresses issue #1226.
|
|
|
|
| |
(Windows compatibility.)
|
|
|
|
|
| |
so that resulting file is correct also on windows systems (ie.
with file names containing drive letter).
|
|
|
|
|
|
|
| |
esp8266 port now has working raw and friendly REPL, as well as working
soft reset (CTRL-D at REPL, or raise SystemExit).
tools/pyboard.py now works with esp8266 port.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Ellipsis constant is rarely used so no point having an extra bytecode
for it.
|
|
|
|
|
|
| |
User instances are hashable by default (using __hash__ inherited from
"object"). But if __eq__ is defined and __hash__ not defined in particular
class, instance is not hashable.
|
|
|
|
|
|
|
| |
Having NotImplemented as MP_OBJ_SENTINEL turned out to be problematic
(it needs to be checked for in a lot of places, otherwise it'll crash
as would pass MP_OBJ_IS_OBJ()), so made a proper singleton value like
Ellipsis, both of them sharing the same type.
|
|
|
|
|
| |
This only disables some corner case functionality to keep C Python
compatibility, and saves ~600 bytes.
|
|
|
|
|
|
|
|
|
|
|
|
| |
From https://docs.python.org/3/library/constants.html#NotImplemented :
"Special value which should be returned by the binary special methods
(e.g. __eq__(), __lt__(), __add__(), __rsub__(), etc.) to indicate
that the operation is not implemented with respect to the other type;
may be returned by the in-place binary special methods (e.g. __imul__(),
__iand__(), etc.) for the same purpose. Its truth value is true."
Some people however appear to abuse it to mean "no value" when None is
a legitimate value (don't do that).
|
| |
|
| |
|
|
|
|
|
|
|
| |
* UDP currently not supported
* As there is no way (that I know of) the espconn_regist_connectcb()
callback can recognize on which socket has the connection arrived,
only one listening function at a time is supported
|