Skip to content

Releases: pyscript/pyscript

2025.11.1

10 Nov 10:25
d8250f2

Choose a tag to compare

  • PyScript does not throw errors anymore if a package is not available in the official Pyodide packages "graph". See this PR for more details.
  • PyScript allows passing File and Blob instances to any worker from the main thread, through worker related Python code. See this change for the underlying technical details.

Full Changelog: 2025.10.3...2025.11.1

2025.10.3

23 Oct 14:28
a8684a2

Choose a tag to compare

After a Chromium update we have noticed our pyscript.fs broke so that:

  • a bug has been filed to inform Chromium about the regression or breaking change: https://issues.chromium.org/issues/454531070
  • investigation occurred and code has been updated to use the pattern that doesn't throw cryptic errors anymore
  • extensive tests both on Pyodide and MicroPython, main thread and workers, has been manually done to be sure all expectations are met

From users' perspective, the modal about granting access might happen twice now:

  • the first time lasts the whole session or until you close your browser
  • the next time you get a chance to allow that access always, as opposite of once
  • if you accept always that dialog will never bother you again unless you clear the whole browser cache

More details in #2395.

2025.10.2

23 Oct 09:09
8cd9c4c

Choose a tag to compare

  • Fixed remote packages issue found after real-world use case example. See: #2393

2025.10.1

21 Oct 13:29
66966a7

Choose a tag to compare

  • Added a transform ability from main to worker, not just worker to main: pyscript/polyscript#148
  • Added experimental_remote_packages config flag for remote packages: pyscript/polyscript@f086129
  • Augmented Pyodide bootstrap with pre-fetched packages details to improve feedback on incompatible packages when bootstrapping PyScript: pyscript/polyscript@c879c6e
  • Simplified the @pyscript/bridge to bring in automatically PyScript if not already on the page: #2379
  • Fixed PyEditor issue on Ctrl+Enter (now working): #2385
  • Improved pyscript.web after MicroPython updates: #2387
  • We now allow you to define a custom TOML parser for more complex configs: #2390
  • First steps (of a work in progress) to validate Pyodide package availability and metadata: #2392
  • Updated MicroPython to version 1.27.0-preview-283:
    • Fixed proxies references
    • Improved interoperability with JS
    • Added inspect.signature for callables / generators / others
  • Update Pyodide to version 0.29.0:

2025.8.1

07 Aug 08:00
67fa31e

Choose a tag to compare

IMPORTANT - this release of PyScript uses a new version of Pyodide that has different behaviour relating to the handling of null / None. THIS MAY BREAK YOUR CODE. Read the notes (especially regarding the pyscript.ffi.is_none feature), to understand how PyScript supports you in this transition.

  • All fetch operations now produce readable error messages when these happen: pyscript/polyscript#146
  • PyScript's package caching mechanism is now based on latest Pyodide lockFileContents: pyscript/polyscript#144
  • Update MicroPython to its preview-386 version: pyscript/polyscript#143
  • Update Pyodide to its 0.28.1 version: https://pyodide.org/en/stable/project/changelog.html#version-0-28-1 and added pyscript.ffi.is_none(renference) to ease-out the null VS None distinction.
  • Add an explicit pyscript.fs.remove(path) option to both unmount that path and erase its content from the database: #2368
  • Change pyscript.WebSockets default to arrayBuffer to retrieve directly memory views: #2366
  • Still on WebSockets, asynchronous listeners are now supported: #2366
  • PyWorker args are now more user friendly: #2366

The most relevant Pyodide changes (more Pyodide context here):

  • There is a new pyodide.ffi.jsnull reference which is the default type for JavaScrpt null: goodbye null to None implicit conversion, we are providing a pyscript.ffi.is_none(reference) to ease-out this distinction that works regardless of the runtime.
  • If jsobj is a JavaScript proxy for a Python dict then jsobj[name] and jsobj.name now works seamlessly, allowing a JS object representing a Python dict to be used in way more scenarios than before. For more information, see the Pyodide docs.

2025.7.3

11 Jul 12:56
eaa6711

Choose a tag to compare

Release notes

  • This release is exclusively worker related:
    • ImageData now travels directly from main to workers to allow .data manipulation and related context.putImageData(ref) operations: WebReflection/reflected-ffi#8
    • a non breaking error about Promise unable to travel, due structured clone algorhitm incompatibility, happening when asynchronous handlers are attached to main references, has been fixed: WebReflection/reflected-ffi@663a3e5
    • when PyEditor or MpyEditor have multiple related env and/or a setup node, the logic now stops properly all scripts if one of their execution gets somehow stuck, bootstrapping again setup nodes when present to fully reset the environment and start keeping latest typed code: #2361
    • MicroPython workaround for Symbol properties accessed directly via the get trap when common JS operations are performed on Python proxied objects: see bug micropython/micropython#17657

2025.7.2

04 Jul 07:37
71ad1a4

Choose a tag to compare

Release Notes

  • Updated to MicroPython version 1.26.0-preview-293, fixing a regression/bug in release 2027.7.1 (see: MicroPython #17604)

2025.7.1

01 Jul 12:41
e433275

Choose a tag to compare

Release Notes

  • added and tested a new PyScript Bridge helper companion, to import from JS Python modules
  • fixed a bug in <label> #2352
  • updated polyscript dependency to its latest which brings in:
    • a new packages_cache = "passthrough" option, beside "never", to avoid lazy micropip initialization and parallelize Pyodide bootstrap when network connection is good and offline ability is not a concern. This should help speeding up bootstrap pyscript/polyscript#138
    • added a debug = True option in config to help debugging Pyodide pyscript/polyscript#135 - please note this degrades Pyodide performance
    • updated coincident orchestration to bring back the service-worker attribute without needing @pyscript/service-worker at all and tested in multiple devices, including iOS and iPad OS
    • updated also coincident ffi logic via a dedicated project able to improve performance a lot, specially with all the JS primitives where performance matters, including TypedArray of all kinds and ArrayBuffer
    • coincident ffi also has a smart cache feature that is able to make Pyodide bootstrap and performance nearly 1:1 with the main thread. Roundtrips can be cut off entirely for most JS primitives while DOM nodes or arrays from the main thread are not cached to preserve their constantly mutable state and preserve correctness.
    • coincident ffi also exposes some extra feature that is reflected through pyscript.ffi, specially direct(ref) to pass directly values instead of holding these on the main thread and assign to update many fields at once from a worker. Both utilities work seamlessly on either main or worker but on worker these will have a boost.

2025.5.1

21 May 13:47
42c6cb7

Choose a tag to compare

Release notes

  • Updated Pyodide to 0.27.6
  • Updated MicroPython to 1.25.0
  • Automatic redirect to localhost when 0.0.0.0 is reached: #2328
  • Added py-editor:done to know when the editor has done processing: #2329
  • Created a polyfill based on ServiceWorker to workaround the latest removal of a dependency when headers are missing or Safari is not working: #2334
  • Included all 3rd-party licenses within our package: #2343
  • Added debug config flag to improve debugging in compatible interpreters (currently only Pyodide): pyscript/polyscript#135
  • Rewrote experimental_create_proxy="auto" to improve edge cases and overall performance: pyscript/polyscript#134
  • improved 2X worker to main performance: pyscript/polyscript#132

2025.3.1

11 Mar 12:03
b22f384

Choose a tag to compare

Release notes

  • Update PyGameCE related configuration and input capabilities after feedback from users. See #2310, #2311 and #2313