| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
Before this patch, eg, 1 << 75 (or any large multiple of 15) was setting
the MSB in the digits, which is outside the valid range of DIG_MASK.
|
|
|
|
|
|
|
| |
qstr_init is always called exactly before mp_init, so makes sense to
just have mp_init call it. Similarly with
mp_init_emergency_exception_buf. Doing this makes the ports simpler and
less error prone (ie they can no longer forget to call these).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reduces by about a factor of 10 on average the amount of RAM needed to
store the line-number to bytecode map in the bytecode prelude.
Using CPython3.4's stdlib for statistics: previously, an average of
13 bytes were used per (bytecode offset, line-number offset) pair, and
now with this improvement, that's down to 1.3 bytes on average.
Large RAM usage before was due to some very large steps in line numbers,
both from the start of the first line in a function way down in the
file, and also functions that have big comments and/or big strings in
them (both cases were significant).
Although the savings are large on average for the CPython stdlib, it
won't have such a big effect for small scripts used in embedded
programming.
Addresses issue #648.
|
|\ |
|
| |
| |
| |
| | |
Addresses issue #724.
|
| |
| |
| |
| |
| | |
This allows to create str's with a smaller length than initially asked
for.
|
|/
|
|
|
|
|
|
|
|
| |
This removes mpz_as_int, since that was a terrible function (it
implemented saturating conversion).
Use mpz_as_int_checked and mpz_as_uint_checked. These now work
correctly (they previously had wrong overflow checking, eg
print(chr(10000000000000)) on 32-bit machine would incorrectly convert
this large number to a small int).
|
|
|
|
| |
Lexer is now 8-bit clean inside strings.
|
|\
| |
| | |
Add support for storing args during an exception raised by an irq.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The user code should call micropython.alloc_emergency_exception_buf(size)
where size is the size of the buffer used to print the argument
passed to the exception.
With the test code from #732, and a call to
micropython.alloc_emergenncy_exception_buf(100) the following error is
now printed:
```python
>>> import heartbeat_irq
Uncaught exception in Timer(4) interrupt handler
Traceback (most recent call last):
File "0://heartbeat_irq.py", line 14, in heartbeat_cb
NameError: name 'led' is not defined
```
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Many OSes/CPUs have affinity to put "user" data into lower half of address
space. Take advantage of that and remap such addresses into full small int
range (including negative part).
If address is from upper half, long int will be used. Previously, small
int was returned for lower quarter of address space, and upper quarter. For
2 middle quarters, long int was used, which is clearly worse schedule than
the above.
|
|/ |
|
|
|
|
| |
Addresses issue #765.
|
| |
|
| |
|
|
|
|
| |
With this fix, file_long_read now passes.
|
|
|
|
|
| |
And not system printf(), like it was before. For this, move pfenv_printf()
from stmhal port to py/.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With unicode enabled, this patch allows reading a fixed number of
characters from text-mode streams; eg file.read(5) will read 5 unicode
chars, which can made of more than 5 bytes.
For an ASCII stream (ie no chars > 127) it only needs to do 1 read. If
there are lots of non-ASCII chars in a stream, then it needs multiple
reads of the underlying object.
Adds a new test for this case. Enables unicode support by default on
unix and stmhal ports.
|
| |
|
| |
|
|
|
|
| |
Addresses issue #753.
|
| |
|
| |
|
|
|
|
|
|
|
| |
dummy_data field is accessed as uint value (e.g.
in emit_write_bytecode_byte_ptr), but is not aligned as such, which causes
bus errors or incorrect behavior on any arch requiring strictly aligned
data (ARM pre-v7, MIPS, etc, etc).
|
| |
|
|
|
|
|
| |
But much smaller and memory-efficient. Uses Python builtin data structures
(dict, tuple, int) to describe structure layout.
|
| |
|
|
|
|
| |
Addresses issue #622.
|
|
|
|
|
| |
Implementing it as a static constant is a bit peculiar and require cooperation
from long int implementation.
|
| |
|
| |
|
|
|
|
| |
See discussion in issue #50.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
dhylands-teensy-new
Conflicts:
stmhal/pin_named_pins.c
stmhal/readline.c
Renamed HAL_H to MICROPY_HAL_H. Made stmhal/mphal.h which intends to
define the generic Micro Python HAL, which in stmhal sits above the ST
HAL.
|
| |
| |
| |
| | |
Refactored some stmhal files which are shared with teensy.
|
| | |
|
|\ \
| | |
| | |
| | | |
dhylands-preserve-except
|
| | |
| | |
| | |
| | |
| | |
| | | |
handling.
Step 1 fixes #732
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix assert_func warning/error
|
| | | |
| | | |
| | | |
| | | |
| | | | |
* Add while(1) to assert_func to avoid func returns warning
* Define a weak attr in mpconfig.h
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Native emitter can now compile try/except blocks using nlr_push/nlr_pop.
It probably only works for 1 level of exception handling. It doesn't
work on Thumb (only x64).
Native emitter can also handle some additional op codes.
With this patch, 198 tests now pass using "-X emit=native" option to
micropython.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- rearrange/add definitions that were not there so it's easier to compare both
- use MICROPY_PY_SYS_PLATFORM in main.c since it's available anyway
- define EWOULDBLOCK, it is missing from ingw32
|
| | | | |
|
| | | | |
|
| | | | |
|
|\ \ \ \
| | |/ /
| |/| |
| | | |
| | | | |
Conflicts:
py/mpconfig.h
|
| | | |
| | | |
| | | |
| | | | |
With a test which cannot be automatically validated so far.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
array.array and bytearray share big deal of code, so to get real savings,
both need to be disabled.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
As stack checking is enabled by default, ports which don't call
stack_ctrl_init() are broken now (report RuntimeError on startup). Save
them trouble and just init stack control framework in interpreter init.
|