25th of June, 2026
Long time no see 👋
Over the last few days I’ve been juggling so many topics it’s hard to pack everything in here without all the context needed to understand every single point, but I promise you there are a few exciting things I’ve been working on in the open, and here’s my “as quick as possible” summary.
PyScript related
- we released our latest version, which also brings the latest Pyodide, so that C-Python 3.14 features can be used in our 2026.6.1 release
- we’ve been busy validating the use case for a PyEditor that can run in a secure environment, and so far everything we tested is working great:
- you can run PyEditor and PyScript from within an iframe, if random evil code is expected, as long as Cross Origin Isolation is present on both sides (nothing new, that’s just how the Web works)
- you can easily expose bindings from one end to another (iframe, Worker, SharedWorker) through this bindings module, which packs years of experience into a few LOCs to guarantee expectations are met no matter what
- that bindings module is based on the latest @webreflection/utils, which … “oh boy” … packs a lot into a dependency-free, self-contained, performance-optimized, tiny set of (also secure) utilities to tackle most common patterns once and for all, giving you the freedom to think “is
@webreflection/utilscovering that? I am good then!” ‘cause the philosophy in there is “100% code coverage with proper tests or go away”, and so far I’ve delivered, including the fact that everything in there is TypeScript-friendly but JS-native for even broader portability without thinking about it
Some OSS errand
- @webreflection/utils is the best curated and most modern ESM-only project I am most proud of these days … it has almost everything any project needs to improve performance, avoid shenanigans, simplify code readability, augment security, you name it! Most of its content will be used to improve either PyScript or every project within the PyScript stack pretty soon!
- @ungap/base64 is the “no excuses” module to ditch
atobandbtoaJS APIs — something that has been broken forever — now that conversion has finally landed as an official ECMAScript API viaUint8Arrayand from it. Please read the MDN documentation on what’s been polyfilled in a fast, reliable, and secure way via the@ungapproject. - @ungap/processing-instruction is another one that just landed to cover the latest WHATWG proposal, soon to be out as a standard, to give us powerful comment-like nodes because the proposal is about adding virtual attributes out of their
datavalue in a way that would enable/unleash tons of templates and template-literal based libraries, including, of course, uhtml and whatnot. The polyfill does its best to be fast, small and widely backward compatible — you get all 3 with ease there.
Deprecations plan
If you dig into @webreflection/utils you might notice that some modules were already published elsewhere, with a proper name (used to be a gold standard back then), but as I keep repeating myself with zero time to maintain old dual-module-based repositories, and as new features land in JS and times are different, rest assured that anything you think is duplicated in there will lead to me deprecating and archiving repositories based on such code or mimicking it, because I am not maintaining those anymore — it makes no sense when these alternatives are rock solid — but I won’t perpetuate the dual-module concept because ESM has won by all means over CJS, and most quirks related to interoperability have been solved by runtimes so that I don’t need to add useless build steps to allow CJS to import any of my solutions.
And that’s it for today. I hope you’ll enjoy exploring the latest features without paranoia about compatibility (that’s the whole reason @ungap exists) and use some, even one, of my latest best options offered out of @webreflection/utils but, if you have more ideas or you find any bug, or you have a feature request, well … here I am to talk about it with an open mind 👋