mirror of https://github.com/pyodide/pyodide.git
parent
8058cb6703
commit
7ad9668788
|
@ -40,3 +40,47 @@ code.literal {
|
|||
/* Shrink the horizontal padding a little */
|
||||
padding: 0.1rem;
|
||||
}
|
||||
|
||||
/* Badges for the changelog copied from pydata-sphinx-theme.css in pyodide v0.22 */
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 0.25em 0.4em;
|
||||
font-size: 75%;
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
border-radius: 0.25rem;
|
||||
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
|
||||
border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.badge {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
.badge:empty {
|
||||
display: none;
|
||||
}
|
||||
.badge {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
.badge-success {
|
||||
color: #fff;
|
||||
background-color: #28a745;
|
||||
}
|
||||
.badge-info {
|
||||
color: #fff;
|
||||
background-color: #17a2b8;
|
||||
}
|
||||
.badge-warning {
|
||||
color: #212529;
|
||||
background-color: #ffc107;
|
||||
}
|
||||
.badge-danger {
|
||||
color: #fff;
|
||||
background-color: #dc3545;
|
||||
}
|
||||
|
|
|
@ -15,33 +15,7 @@ myst:
|
|||
|
||||
## Unreleased
|
||||
|
||||
- {{ Enhancement }} `as_object_map` now accepts a keyword argument `hereditary`.
|
||||
If set to `True` and indexing the object returns a plain-old-object, then the
|
||||
return value will be automatically mapped in `as_object_map` as well.
|
||||
{pr}`3638`
|
||||
|
||||
- {{ Enhancement }} Python does not allow reserved words to be used as attributes.
|
||||
For instance, `Array.from` is a `SyntaxError`. (JavaScript has a more robust
|
||||
parser which can handle this.) To handle this, if an attribute to a `JsProxy`
|
||||
consists of a Python reserved word followed by one or more underscores, we remove
|
||||
a single underscore from the end of the attribute. For instance, `Array.from_`
|
||||
would access `from` on the underlying JavaScript object, whereas `o.from__`
|
||||
accesses the `from_` attribute.
|
||||
{pr}`3617`
|
||||
|
||||
- {{ Enhancement }} `runPython` and `runPythonAsync` now accept a `locals`
|
||||
argument.
|
||||
{pr}`3618`
|
||||
|
||||
- {{ Fix }} If the `locals` argument to `eval_code` or `eval_code_async` is
|
||||
`None` it now uses `locals=globals` as the documentation says.
|
||||
{pr}`3580`
|
||||
|
||||
- {{ Enhancement }} A `JsProxy` of a JavaScript error object can be directly
|
||||
thrown as Python exceptions. Previously Pyodide automatically wrapped them in
|
||||
a `JsException` but that is no longer needed -- now `JsException` inherits
|
||||
from both `JsProxy` and `Exception`.
|
||||
{pr}`3455`
|
||||
### General
|
||||
|
||||
- {{ Update }} Pyodide now runs Python 3.11.2.
|
||||
{pr}`3252`, {pr}`3614`
|
||||
|
@ -53,25 +27,11 @@ myst:
|
|||
- {{ Enhancement }} Updated Emscripten to version 3.1.32
|
||||
{pr}`3471`, {pr}`3517`, {pr}`3599`
|
||||
|
||||
- {{ Breaking }} Following libraries are now not linked to the Pyodide main module:
|
||||
`libgl`, `libal`, `libhtml5`. This normally shouldn't affect users, but if you
|
||||
are using these libraries in a package that are built out-of-tree, you will
|
||||
need to link them to the package manually.
|
||||
{pr}`3505`
|
||||
### JavaScript API
|
||||
|
||||
- {{ Breaking }} Test files of stdlib `ctypes` and `unittest` are now moved to
|
||||
`test/ctypes` and `test/unittest` respectively. This change is adapted from
|
||||
[CPython 3.12](https://github.com/python/cpython/issues/93839).
|
||||
{pr}`3507`
|
||||
|
||||
- {{ Breaking }} Unvendored `_pydecimal` and `pydoc_data` from the standard
|
||||
library. Now these modules need to be loaded with `pyodide.loadPackage` or
|
||||
`micropip.install`
|
||||
{pr}`3525`
|
||||
|
||||
- {{ Enhancement }} Added subclasses of `PyProxy` for each mixin. These can be
|
||||
used to check whether a `PyProxy` supports a given set of methods with
|
||||
`instanceof` e.g., `x instanceof pyodide.ffi.PyDict`.
|
||||
- {{ Breaking }} Type exports of `PyProxy` subtypes have been moved from
|
||||
`pyodide` to `pyodide/ffi` and many of them have changed names. The original
|
||||
exports are still available but they are deprecated.
|
||||
{pr}`3523`
|
||||
|
||||
- {{ Breaking }} The methods for checking `PyProxy` capabilities (e.g.,
|
||||
|
@ -79,15 +39,14 @@ myst:
|
|||
`instanceof pyodide.ffi.PyCallable` instead.
|
||||
{pr}`3523`
|
||||
|
||||
- {{ Breaking }} Type exports of `PyProxy` subtypes have been moved from
|
||||
`pyodide` to `pyodide/ffi` and many of them have changed names. The original
|
||||
exports are still available but they are deprecated.
|
||||
- {{ Enhancement }} Added subclasses of `PyProxy` for each mixin. These can be
|
||||
used to check whether a `PyProxy` supports a given set of methods with
|
||||
`instanceof` e.g., `x instanceof pyodide.ffi.PyDict`.
|
||||
{pr}`3523`
|
||||
|
||||
- {{ Fix }} Calling `loadPyodide` repeatedly in Node no longer results in
|
||||
`MaxListenersExceededWarning`. Also, calling `loadPyodide` in Node v14 no
|
||||
longer changes unhandled rejections in promises.
|
||||
{pr}`3542`
|
||||
- {{ Enhancement }} Added `stdLibURL` parameter to `loadPyodide` allowing to customize
|
||||
the URL from which the Python standard library is loaded.
|
||||
{pr}`3670`
|
||||
|
||||
- {{ Enhancement }} Checking whether an object is an instance of a `PyProxy` now
|
||||
only recognizes a `PyProxy` generated from the same Python interpreter. This
|
||||
|
@ -95,29 +54,60 @@ myst:
|
|||
into another no longer causes a fatal error.
|
||||
{pr}`3545`
|
||||
|
||||
- {{ Fix }} Non-breaking space characters are now automatically converted to
|
||||
regular spaces in pyodide REPL.
|
||||
{pr}`3558`
|
||||
- {{ Enhancement }} `as_object_map` now accepts a keyword argument `hereditary`.
|
||||
If set to `True` and indexing the object returns a plain-old-object, then the
|
||||
return value will be automatically mapped in `as_object_map` as well.
|
||||
{pr}`3638`
|
||||
|
||||
- {{ Breaking }} Python standard libraries are now vendored in a zipfile:
|
||||
`/lib/python{version}.zip`. If you need to access the standard library files,
|
||||
you need to unpack the zip file. For example:
|
||||
`import shutil; shutil.unpack_archive('/lib/python311.zip', '/lib/python3.11', 'zip)`
|
||||
{pr}`3584`
|
||||
- {{ Enhancement }} A `JsProxy` of a JavaScript error object can be directly
|
||||
thrown as Python exceptions. Previously Pyodide automatically wrapped them in
|
||||
a `JsException` but that is no longer needed -- now `JsException` inherits
|
||||
from both `JsProxy` and `Exception`.
|
||||
{pr}`3455`
|
||||
|
||||
- {{ Enhancement }} `runPython` and `runPythonAsync` now accept a `locals`
|
||||
argument.
|
||||
{pr}`3618`
|
||||
|
||||
- {{ Fix }} Calling `loadPyodide` repeatedly in Node no longer results in
|
||||
`MaxListenersExceededWarning`. Also, calling `loadPyodide` in Node v14 no
|
||||
longer changes unhandled rejections in promises.
|
||||
{pr}`3542`
|
||||
|
||||
- {{ Fix }} If the `locals` argument to `eval_code` or `eval_code_async` is
|
||||
`None` it now uses `locals=globals` as the documentation says.
|
||||
{pr}`3580`
|
||||
|
||||
### Python standard library
|
||||
|
||||
- {{ Breaking }} Unvendored `_pydecimal` and `pydoc_data` from the standard
|
||||
library. Now these modules need to be loaded with `pyodide.loadPackage` or
|
||||
`micropip.install`, or auto-loaded via imports in `pyodide.runPythonAsync`
|
||||
{pr}`3525`
|
||||
|
||||
- {{ Breaking }} Test files of stdlib `ctypes` and `unittest` are now moved to
|
||||
`test/ctypes` and `test/unittest` respectively. This change is adapted from
|
||||
[CPython 3.12](https://github.com/python/cpython/issues/93839).
|
||||
{pr}`3507`
|
||||
|
||||
### Deployment
|
||||
|
||||
- {{ Breaking }} Pyodide no longer uses Emscripten preload plugin, hence
|
||||
`pyodide.asm.data` is removed. This change normally shouldn't affect users,
|
||||
but if you were using this file in a bundler, you will need to remove it.
|
||||
{pr}`3584`
|
||||
`pyodide.asm.data` is removed, in favor of `python_stdlib.zip`. This change
|
||||
normally shouldn't affect users, but if you were using this file in a
|
||||
bundler, you will need to remove it. {pr}`3584`
|
||||
|
||||
- {{ Breaking }} `pyodide_py.tar` file is removed. This change normally
|
||||
shouldn't affect users, but if you were using this file in a bundler,
|
||||
you will need to remove it.
|
||||
{pr}`3621`
|
||||
|
||||
- {{ Enhancement }} Added `stdLibURL` parameter to `loadPyodide` allowing to customize
|
||||
the URL from which the Python standard library is loaded.
|
||||
{pr}`3670`
|
||||
- {{ Breaking }} Python standard libraries are now vendored in a zipfile:
|
||||
`/lib/python{version}.zip` in the in-browser MEMFS file system. If you need
|
||||
to access the standard library source code, you need to unpack the zip file.
|
||||
For example:
|
||||
`import shutil; shutil.unpack_archive('/lib/python311.zip', '/lib/python3.11', 'zip)`
|
||||
{pr}`3584`
|
||||
|
||||
- {{ Fix }} Improves the compression of wheel files with the JsDelivr CDN. For
|
||||
browsers that support the Brotli compression (most modern ones) this should
|
||||
|
@ -125,14 +115,13 @@ myst:
|
|||
sub-commands now support `--compression-level` as an optional parameter.
|
||||
{pr}`3655`
|
||||
|
||||
- {{ Breaking }} Removed deprecated CLI entrypoints `pyodide_build buildall` which is
|
||||
replaced by `pyodide build-recipes`, and `pyodide-build mkpkg` which is
|
||||
replaced by `pyodide skeleton pypi` {pr}`3668`
|
||||
- {{ Breaking }} Following libraries are now not linked to the Pyodide main module:
|
||||
`libgl`, `libal`, `libhtml5`. This normally shouldn't affect users, but if you
|
||||
are using these libraries in a package that are built out-of-tree, you will
|
||||
need to link them to the package manually.
|
||||
{pr}`3505`
|
||||
|
||||
- {{ Enhancement }} `pyodide py-compile` can now py-compile zip archives, and
|
||||
folders with wheels / zip archives. If the input folder contains the `repodata.json`
|
||||
the paths and checksums it contains will also be updated
|
||||
{pr}`3700`
|
||||
### Python / JavaScript Foreign Function Interface
|
||||
|
||||
- {{ Breaking }} Removed support for calling functions from the root of `pyodide` package
|
||||
directly. This has been deprecated since v0.21.0. Now all functions are only available
|
||||
|
@ -143,17 +132,29 @@ myst:
|
|||
in a positional argument. This has been deprecated since v0.22.0.
|
||||
{pr}`3677`
|
||||
|
||||
- {{ Enhancement }} Python does not allow reserved words to be used as attributes.
|
||||
For instance, `Array.from` is a `SyntaxError`. (JavaScript has a more robust
|
||||
parser which can handle this.) To handle this, if an attribute to a `JsProxy`
|
||||
consists of a Python reserved word followed by one or more underscores, we remove
|
||||
a single underscore from the end of the attribute. For instance, `Array.from_`
|
||||
would access `from` on the underlying JavaScript object, whereas `o.from__`
|
||||
accesses the `from_` attribute.
|
||||
{pr}`3617`
|
||||
|
||||
### Build System
|
||||
|
||||
- {{ Enhancement}} Add `--build-dependencies` to pyodide build command
|
||||
- {{ Breaking }} When building meta-packages (`core` and `min-scipy-stack`),
|
||||
you must prefix `tag:` to the meta-package name. For example, to build the
|
||||
`core` meta-package, you must run `pyodide build-recipes tag:core`, or
|
||||
`PYODIDE_PACKAGES="tag:core" make`.
|
||||
{pr}`3444`
|
||||
|
||||
- {{ Enhancement}} Add `--build-dependencies` to `pyodide build` command
|
||||
to fetch and build dependencies of a package being built.
|
||||
Also adds `--skip-dependency` to ignore selected dependencies.
|
||||
{pr}`3310`
|
||||
|
||||
- {{ Enhancement }} Improved logging in `pyodide-build` with rich.
|
||||
{pr}`3442`
|
||||
|
||||
- {{ Enhancement}} Added `pyodide-build` support for building a list of packages
|
||||
- {{ Enhancement}} Added `pyodide build` support for building a list of packages
|
||||
from a requirements.txt file with `pyodide build -r <requirements.txt>`. Also
|
||||
can output a list of chosen dependencies in the same format when building a
|
||||
package and dependencies using the `--output-lockfile <lockfile.txt>`
|
||||
|
@ -164,18 +165,10 @@ myst:
|
|||
packages.
|
||||
{pr}`3444`
|
||||
|
||||
- {{ Breaking }} When building meta-packages (`core` and `min-scipy-stack`),
|
||||
you must prefix `tag:` to the meta-package name. For example, to build the
|
||||
`core` meta-package, you must run `pyodide build-recipes tag:core`, or
|
||||
`PYODIDE_PACKAGES="tag:core" make`.
|
||||
{pr}`3444`
|
||||
|
||||
- {{ Enhancement }} `pyodide build-recipes` now autodetects the number of
|
||||
CPU cores in the system and uses them for parallel builds.
|
||||
{pr}`3559` {pr}`3598`
|
||||
|
||||
- {{ Enhancement }} `pyodide build-recipes` now works out-of-tree.
|
||||
|
||||
- {{ Fix }} Fixed pip install error when installing cross build environment.
|
||||
{pr}`3562`
|
||||
|
||||
|
@ -186,28 +179,52 @@ myst:
|
|||
- {{ Fix }} Fix occasional build failure when building rust packages.
|
||||
{pr}`3607`
|
||||
|
||||
- {{ Enhancement }} Improved logging in `pyodide-build` with rich.
|
||||
{pr}`3442`
|
||||
|
||||
- {{ Enhancement }} `pyodide build-recipes` now accepts `--no-deps` parameter, which skips
|
||||
building dependencies of the package. This replaces `pyodide-build buildpkg`.
|
||||
{pr}`3520`
|
||||
|
||||
- {{ Enhancement }} `pyodide build-recipes` now works out-of-tree.
|
||||
|
||||
### Pyodide CLI
|
||||
|
||||
- Added `pyodide py-compile` CLI command that py compiles a wheel, converting
|
||||
.py files to .pyc files
|
||||
{pr}`3253`
|
||||
- {{ Breaking }} Removed deprecated CLI entrypoints `pyodide-build buildall` which is
|
||||
replaced by `pyodide build-recipes`, and `pyodide-build mkpkg` which is
|
||||
replaced by `pyodide skeleton pypi` {pr}`3668`.
|
||||
|
||||
- Added `pyodide create-zipfile` CLI command that creates a zip file of a
|
||||
- {{ Feature }} Added `pyodide py-compile` CLI command that py compiles a wheel or a zip
|
||||
file, converting .py files to .pyc files. It can also be applied to a folder
|
||||
with wheels / zip files. IF the If the input folder contains the
|
||||
`repodata.json` the paths and checksums it contains will also be updated
|
||||
{pr}`3253` {pr}`3700`
|
||||
|
||||
- {{ Feature }} Added `pyodide create-zipfile` CLI command that creates a zip file of a
|
||||
directory. This command is hidden by default since it is not intended for use
|
||||
by end users.
|
||||
{pr}`3411` {pr}`3463`
|
||||
|
||||
- `pyodide build-recipes` now accepts `--no-deps` parameter, which skips
|
||||
building dependencies of the package. This replaces `pyodide-build buildpkg`.
|
||||
{pr}`3520`
|
||||
### REPL
|
||||
|
||||
- {{ Fix }} Non-breaking space characters are now automatically converted to
|
||||
regular spaces in pyodide REPL.
|
||||
{pr}`3558`
|
||||
|
||||
### Packages
|
||||
|
||||
- New packages: fastparquet {pr}`3590`, cramjam {pr}`3590`, pynacl {pr}`3500`,
|
||||
mypy {pr}`3504`, multidict {pr}`3581`, yarl {pr}`3702`, idna {pr}`3702`.
|
||||
|
||||
- Upgraded packages: galpy (1.8.2) {pr}`3630`, scikit-learn (1.2.2) {pr}`3654`
|
||||
See all package versions in this release in {ref}`packages-in-pyodide`.
|
||||
- Upgraded packages: see the list of packages versions in this release in
|
||||
{ref}`packages-in-pyodide`.
|
||||
|
||||
### List of Contributors
|
||||
|
||||
Alexey Ignatiev, Andrea Giammarchi, Arpit, Christian Clauss, Deepak Cherian,
|
||||
Eli Lamb, Feodor Fitsner, Gyeongjae Choi, Hood Chatham, Jeff Glass, Jo Bovy,
|
||||
Joe Marshall, josephrocca, Loïc Estève, martinRenou, messense, Nicholas
|
||||
Bollweg, Roman Yurchak, TheOnlyWayUp, Victor Blomqvist, Ye Joo Park
|
||||
|
||||
## Version 0.22.1
|
||||
|
||||
|
|
Loading…
Reference in New Issue