In Emscripten v3.1.58, createPyodideModule returns a distinct object from its argument
so if we confuse EmscriptenSettings with the instantiated module, we'll get problems.
This fixes these problems.
I also added some more type declarations.
Split from #4715.
For CoolProp, we are getting `tarballname` as `'CoolProp_sources.zip?viasf=1'` which then
crashes when we give it to `shutil.unpack_archive` with `Unknown archive format`.
Since we renamed `syncify` the method name `callSyncifying` doesn't make much
sense anymore. It is implemented in terms of a so-called `promising` wasm call,
so `callPromising` lines up with that. Not a perfect name, but it is rarely used so it
will do until we come up with something better.
Added a `callWithOptions` function. We now have three boolean parameters for
a Js-to-Python call:
1. kwargs
2. promising
3. relaxed
So we'd need 8 functions to cover all combinations of these. Currently we only
have 6 of these. Rather than adding the two remaining combinations which will
have annoying names, I added `callWithOptions` which takes an options argument as
the first argument. Despite the fact that options usually go as the last
argument, I think it makes sense to use the first argument for this so that all
remaining args are passed on to Python.
This is a backport of https://github.com/emscripten-core/emscripten/pull/21759
It fixes a crash which happens when
1) An exception is thrown inside a function returning int64
2) The function is in a dynamic library and has been called through dynamic invocation.
Designed to make dictionaries + lists behave like JavaScript JSON so that
`JSON.stringify`, `Response.json`, etc work as expected and direct access like
`a[0].b.c[1].d` works. I think this is how `as_object_map()` should have behaved
all along. As a followup, I'd also like to add a symmetric `as_json_adaptor()`
to JsProxy.
Adds pyIceberg, a Python client for the SQL table storage format for large datasets
with periodic dimensional changes.
Adds mmh3 package a set of fast and robust non-cryptographic hash functions
Stack switching was leaking datastack chunks. This seems to fix it. It is very confusing,
but the leaked chunks are allocated in slabs of size 2^14 so it doesn't take long to leak
a substantial amount of memory.
Code inspired by greenlet:
937f150e07/src/greenlet/TPythonState.cpp (L291)