Nice. It might be worth copying some of the introductory text from the Tauri package explaining what this does. Otherwise a person to lands on the readme gets a lot of technical detail about how it is built without any idea what it actually does.
A 20" Lasko box fan is about as cheap as they come - and, consequently, noisy and inefficient. The thing retails for $20, the budget for quieting measures is $0. In particular, especially when placed at a window (where it's expected to generate a pressure differential) you get a counterflow effect in the corners, and the 5 blades create individual pressure pulses as they move near to the 4 flat sides of the enclosure and then out into open air.
A quality high-volume, low-speed industrial drum or axial HVAC wall fan costs a whole lot more than $20 but the quiet, low-frequency noise is so much less intrusive.
Another mechanism (if you don't want a 36", 1/2 HP galvanized industrial contraption on your desk) is to concentrate the airflow near the user. Less power, but more concentrated. I've got a big fan that helps in the morning and evening to exchange air through the entire house, but on my desk I've got the biggest PC case fan I could find (a 230mm monster) wired to a speed controller cable and then directly to a 12V wall wart. At ~300 RPM, you can almost keep up with the motion of a single blade with your eyes, at 500 or 800 RPM it's barely perceptible... but it's only about 8x8x1" and keeps the air moving over your skin!
Seconded, I've been using plappa for a couple months after Apple messed up PWAs after bringing them back (Audiobookshelf didn't want to change to next chapter when the app was in the background) and I'm generally very happy
Pyodide maintainer here, we would have certainly seen more reports if JsDelivr was blocked in UK. That URL works fine for me from France, and when using a UK VPN end point. Maybe something specific about your network (corporate proxy etc)?
Are you getting an HTTP status other than 200 or the domain name not being resolved?
It's done currently in Pyodide: Python with DOM integration running with WASM. Minimal application with stdlib is around 5.5MB after compression now. Not small but still manageable depending on the use case.
Still I agree with your other comments, and in particular not being able to share caches in the browser is very unfortunate (but understandable).
Yes, it works...but it puts python at a big disadvantage in terms of size and performance. The DOM integration, for example, works, but isn't what it could be if WASM had more direct support for it.
For people wanting to do more functional programming in Python, have a look at toolz (https://toolz.readthedocs.io/en/latest/). It goes a bit further in that direction.
Concrete Python applications wouldn't be 100x faster if re-coded in some low level language.
In most places where performance matter Python packages would be using either C extension, Cython or numba to get near native performance. Pyodide is able to build those packages (except for numba). So overall it's currently 3 to 5 slower than native Python (which uses C extensions). See detailed benchmarks in https://hacks.mozilla.org/2021/04/pyodide-spin-out-and-0-17-...
Well you need to be able to serve static files. So if you are building locally you need to start a webserver, otherwise you can use the JsDelivr CDN.
Memory leaks can happen if you translate objects between Python and JS. So of it is unavoidable because it's difficult to know when to destroy Python objects from JS vice versa, but lots of work on it has been done in the 0.17 release with more to come in 0.18
> Well you need to be able to serve static files. So if you are building locally you need to start a webserver, otherwise you can use the JsDelivr CDN.
I don't understand, can't I just use offline, static files ?
I would still expect to use my own webserver, unrelated to pyodine, like flask or whatever.
> Yes, we are working on adding more examples.
Glad to hear this :) !
> Why do you find the example misleading?
I haven't really seen that example in the doc or elsewhere, and I don't understand the steps required to make such example work offline or without a webserver.
EDIT:
Another cool thing of brython is that could "inline" a python script inside a html file, such as:
If you just open an HTML file in your browser via its local path (e.g. /home/user/...) the browser will prevent you from loading other files by JS due to CORS. So we need a web-server to set the appropriate CORS headers. Any web-server would do.
How does Node play into this? Can I embed a v8 engine in my C program and use pyodide, or do I need to bring Node along too? Does the compatibility layer depend on any Node-specific concepts like the event loop or garbage collector? (I think maybe V8 does its own GC? This just shows how thin my experience is with this topic.)