5636 Commits

Author SHA1 Message Date
Jeff Epler
5c0f8f7786
fixes for circuitpython nativeglue 2023-09-22 10:39:28 -05:00
Jeff Epler
a285a33076
Restore our defines for exception chaining 2023-09-22 10:39:12 -05:00
Jeff Epler
9104654930
makeqstrdata: ensure _lt and _gt qstrs are sorted early
this fixes a build error because their numbers have to be <256
2023-09-22 10:38:52 -05:00
Dan Halbert
10b95a1998 add translate.h and linker.h includes back to runtime.h; remove linker.h refs; remove top-level lib/cyw43-driver 2023-09-20 22:00:09 -04:00
Jeff Epler
a00f2d8940
array extend/append need extern linkage & right names 2023-09-20 11:46:51 -05:00
Jeff Epler
7a386545ca
re-add translation make rules 2023-09-20 11:46:35 -05:00
Jeff Epler
a760794449
re-add objtraceback.o 2023-09-20 11:46:22 -05:00
Jeff Epler
f83a235c85
re-add mp_obj_exception_get_native 2023-09-20 11:46:14 -05:00
Jeff Epler
76ef77a620
fix exception chaining, preprocessor error 2023-09-20 11:26:57 -05:00
Jeff Epler
e068ff7234
fix compile errors, fix mp_raise prototypes 2023-09-20 11:26:41 -05:00
Jeff Epler
1ab884ab0f
fix compile errors 2023-09-20 11:26:26 -05:00
Jeff Epler
c87703512a
fix conditional nesting 2023-09-20 11:26:17 -05:00
Jeff Epler
37c8b0df9c
fix argument name 2023-09-20 11:26:03 -05:00
Jeff Epler
6b8ee2ca6f
remove old python style checking for "special accessors"
this appears to be properly handled by other (new?) code, but
tests will tell.
2023-09-20 11:25:58 -05:00
Jeff Epler
bb6d530c1d
slots & macro moved to header 2023-09-20 11:25:09 -05:00
Jeff Epler
7806044e5e
string construction changed 2023-09-20 11:25:01 -05:00
Jeff Epler
9cedfc4cbd
implemented as macro now 2023-09-20 11:24:53 -05:00
Jeff Epler
ee51968d9d
can't be static, is called from builtins 2023-09-20 11:24:45 -05:00
Jeff Epler
4ed939f26e
fix compile error 2023-09-20 11:24:26 -05:00
Jeff Epler
680b94d463
fix compile erors 2023-09-20 11:24:22 -05:00
Jeff Epler
be62395c47
fix indentation 2023-09-20 11:24:15 -05:00
Jeff Epler
f9fb567a07
fix CP vs MP differences in exception-throwing functions 2023-09-20 11:24:07 -05:00
Jeff Epler
37a881f4d3
Get the type object for the constructor call 2023-09-20 11:23:49 -05:00
Jeff Epler
082b299a0c
spelling 2023-09-20 11:23:39 -05:00
Jeff Epler
8e00c69cdf
spelling 2023-09-20 11:22:34 -05:00
Jeff Epler
cd3ca6b6a6
fix array object name 2023-09-20 11:22:25 -05:00
Jeff Epler
fb2eb6a7d9
add mp_obj_is_tuple_compatible 2023-09-20 11:22:01 -05:00
Jeff Epler
e4e58ac223
add mp_obj_get_type_qstr 2023-09-20 11:21:56 -05:00
Jeff Epler
a9d6661d5b
add and fix exception prototypes 2023-09-20 11:21:50 -05:00
Jeff Epler
b499b7fdc2
add missing type objects 2023-09-20 11:21:34 -05:00
Jeff Epler
57c3dfd579
fix missing define of NONSTANDARD_TYPECODES 2023-09-20 11:21:10 -05:00
Jeff Epler
649ea62f57
fix typo 2023-09-20 11:21:02 -05:00
Jeff Epler
73612ac119
Fix availability of MP_ERROR_TEXT in misc.h 2023-09-20 11:20:56 -05:00
Jeff Epler
aceb573c88
fix makeversionhdr 2023-09-20 11:20:45 -05:00
Jeff Epler
dc277f0aff
fix HEAP_PTR macro 2023-09-20 11:20:39 -05:00
Jeff Epler
36371fe757
fix compiling gc.c 2023-09-20 11:20:29 -05:00
Jeff Epler
0c64275cc6
Add header for PLACE_IN_ITCM 2023-09-20 11:19:57 -05:00
Angus Gratton
fa68523968 py/nlrx64: Mark nlr_push() as naked function when possible.
Supported from GCC 8 and up, and Compiler Explorer suggests it works as
expected with Clang since 3.6 (2014).

- Fixes situation where building embedded MicroPython with -O0 and
  MICROPY_NLR_X64 crashes at runtime (due to nlr_push pushing the
  frame pointer register EBP). Closes #12421.

- Allows removing the macOS tweak to undo pushing EBP onto the stack
  in the generated function prelude.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-09-20 11:48:36 +10:00
Dan Halbert
4d175ab41a convert to MP_DEFINED_CONST_OBJ_TYPE() 2023-09-19 21:09:29 -04:00
Dan Halbert
2c0fa0f7dc initial merge from v1.20.0; just satisifying conflicts 2023-09-19 11:10:12 -04:00
Jeff Epler
a8b81ce943
Enhance unexpected keyword argument detection
Before, incorrect use when calling a core function would just say
"extra keyword arguments given"; now, it will name the argument:

```python
>>> Synthesizer(bad_kwarg="boo")
TypeError: unexpected keyword argument 'bad_kwarg'
```
2023-09-15 10:39:14 -05:00
Angus Gratton
3e8aed9fcc py/gc: Add "max new split" value in result of gc.mem_free().
Follow-up to 519c24dd487 when MICROPY_GC_SPLIT_HEAP_AUTO is enabled, based
on discussion at
https://github.com/orgs/micropython/discussions/12316#discussioncomment-6858007

gc.mem_free() is always a heuristic, but this makes it a more useful
heuristic for common use cases.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-09-15 12:19:13 +10:00
Jeff Epler
4b41fdb586
Fast(ish) special purpose bitbang spi over i2c
with the i2c bus operating at 400kHz this achieves a 4.8kHz SPI clock
rate which could be worse.

It accepts the same style of init sequence as displayio.

tested by scoping the pins on the espressif lcd dev kit with a dummy init sequence:
```python
dotclockframebuffer.ioexpander_send_init_sequence(
    bus=bus,
    i2c_address=expander_addr,
    gpio_address=1,
    gpio_data_len=1,
    gpio_data=0xff,
    cs_bit=1,
    mosi_bit=3,
    clk_bit=2,
    init_sequence=init_sequence)
```
2023-09-14 14:42:48 -05:00
Damien George
397697aa83 py/persistentcode: Always close reader even if an exception is raised.
Fixes issue #3874.

Signed-off-by: Damien George <damien@micropython.org>
2023-09-14 13:03:31 +10:00
Damien George
5e122b11ea py/parse: Always free lexer even if an exception is raised.
Fixes issue #3843.

Signed-off-by: Damien George <damien@micropython.org>
2023-09-14 13:03:31 +10:00
Damien George
c9089e71a1 py/runtime: Add helpers to call a general function on nlr jump callback.
Signed-off-by: Damien George <damien@micropython.org>
2023-09-14 13:03:31 +10:00
Scott Shawcroft
0928a95bb2
Merge pull request #8351 from jepler/dotclockframebuffer
Dotclockframebuffer
2023-09-07 13:21:29 -07:00
IhorNehrutsa
6e79b55dc8 py/malloc: Fix DEBUG_print() args in m_realloc_maybe.
Signed-off-by: Ihor Nehrutsa <IhorNehrutsa@gmail.com>
2023-09-04 10:26:09 +10:00
David Lechner
ffb43b2dd3 py/modthread: Return thread id from start_new_thread().
In CPython, `_thread.start_new_thread()` returns an ID that is the same ID
that is returned by `_thread.get_ident()`.  The current MicroPython
implementation of `_thread.start_new_thread()` always returns `None`.

This modifies the required functions to return a value. The native thread
id is returned since this can be used for interop with other functions, for
example, `pthread_kill()` on *nix. `_thread.get_ident()` is also modified
to return the native thread id so that the values match and avoids the need
for a separate `native_id` attribute.

Fixes issue #12153.

Signed-off-by: David Lechner <david@pybricks.com>
2023-09-03 18:49:18 +10:00
Jim Mussared
a64f2fdca0 py/dynruntime.h: Implement MP_OBJ_NEW_QSTR.
Because mpy_ld.py doesn't know the target object representation, it emits
instances of `MP_OBJ_NEW_QSTR(MP_QSTR_Foo)` as const string objects, rather
than qstrs. However this doesn't work for map keys (e.g. for a locals dict)
because the map has all_keys_are_qstrs flag is set (and also auto-complete
requires the map keys to be qstrs).

Instead, emit them as regular qstrs, and make a functioning MP_OBJ_NEW_QSTR
function available (via `native_to_obj`, also used for e.g. making
integers).

Remove the code from mpy_ld.py to emit qstrs as constant strings, but leave
behind the scaffold to emit constant objects in case we want to do use this
in the future.

Strictly this should be a .mpy sub-version bump, even though the function
table isn't changing, it does lead to a change in behavior for a new .mpy
running against old MicroPython. `mp_native_to_obj` will incorrectly return
the qstr value directly as an `mp_obj_t`, leading to unexpected results.
But given that it's broken at the moment, it seems unlikely that anyone is
relying on this, so it's not work the other downsides of a sub-version bump
(i.e. breaking pure-Python modules that use @native). The opposite case of
running an old .mpy on new MicroPython is unchanged, and remains broken in
exactly the same way.

This work was funded through GitHub Sponsors.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-09-01 16:14:22 +10:00