DOC Re-organize changelog for 0.23.0 (#3707)

[skip ci]
This commit is contained in:
Roman Yurchak 2023-03-28 21:41:17 +00:00 committed by GitHub
parent 8058cb6703
commit 7ad9668788
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 156 additions and 95 deletions

View File

@ -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;
}

View File

@ -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