#497 Faster than light profiling cover art

#497 Faster than light profiling

#497 Faster than light profiling

Listen for free

View show details
Topics covered in this episode: Tachyon: A sampling profiler ships in Python 3.15's stdlibPython Workers are now generally available on CloudflareFlet 1.0 - build cross-platform apps in Pythonmarimo-book: Build static books from marimo notebooksExtrasJokeWatch on YouTube Sponsored by Logfire from Pydantic: pythonbytes.fm/logfire Connect with the hosts Michael: Mastodon / BlueSky / X / LinkedInCalvin: Mastodon / BlueSky / X / LinkedInShow: Mastodon / BlueSky / X Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesday at 7am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Michael #1: Tachyon: A sampling profiler ships in Python 3.15's stdlib Python 3.15 adds the profiling package per PEP 799: profiling.tracing (where cProfile moved) and profiling.sampling, the new sampler called Tachyonpy-spy and Austin exist but copy raw interpreter bytes with no API, so every CPython release risks breaking them; one in the stdlib is a contract to stop breaking profilersDefaults: 1 kHz, main thread, wall clock, and a -live top-like view for poking at a slow serverOutput is flexible: pstats, -flamegraph, -diff-flamegraph against a baseline, -heatmap on source lines, -opcodes for specialized bytecode, -gecko for Firefox Profiler with GIL and GC markersProfiling modes: wall, cpu, gil (which function is starving my other threads?), and exception, plus -async-aware to see the task graph instead of just select(), -all-threads, and -subprocesses forking a profiler per childNear-zero overhead for production; guidance is 10-30 second windows on representative load, and free-threaded builds divide the rate by thread countAttach to a running PID, same minor version only; ptrace permissions are the main friction. A 3.14 backport already exists on GitHubCaveat: it only sees Python frames, so 90% in calculate() hides NumPy underneath. For native stacks there's Cronon from HRT, 200k samples/sec over DWARF, not yet open source Calvin #2: Python Workers are now generally available on Cloudflare Python Workers are out of beta - now GA, "first-class" language on Cloudflare's Developer PlatformNo more manual JS interop: bindings (queues, R2, D1, Durable Objects) now work natively in Python, e.g. self.env.QUEUE.send({...})Runs on Pyodide (WASM-compiled Python), with real TCP socket support for DB connectivityFrameworks supported: FastAPI, Django, Flask; AI libs like OpenAI SDK, LangChain, MCPUnderlying platform work formalized as PEP 783 (PyEmscripten), after a year of discussionBottom line: write real Python on Cloudflare's edge, no JS glue code required Calvin #3: Flet 1.0 - build cross-platform apps in Python Flet hits 1.0 - build Flutter-backed apps from pure Python, no frontend experience neededOne codebase targets six platforms: iOS, Android, Windows, macOS, Linux, web150+ built-in UI controls, plus support for custom controls / wrapping Flutter packagesMobile now supports real Python packages: NumPy, pandas, Pillow, cryptographyComes with pytest-based UI testing and an MCP integration for AI coding assistantsMilestone lands 4+ years after its first PyPI release (Sept 2022) - signals "production ready," not experimental Michael #4: marimo-book: Build static books from marimo notebooks marimo-book is a Jupyter-Book-style static site generator built specifically for marimo .py notebooks. It ships polished multi-page sites with Material for MkDocs theming, full-text search, dark mode, and code copy, plus a content-hashed incremental build cache that drops rebuilds from 100+ seconds to roughly 3 seconds on real books. Standout extras include anywidget rendering without a kernel, static reactivity for discrete sliders via pre-rendered lookup tables, an opt-in WASM/Pyodide mode per chapter, and per-chapter launch buttons. If you've wanted to publish a marimo notebook as a real book or course site without hosting a kernel, marimo-book gives you the static, searchable, fast-loading output you'd expect from Jupyter Book.Alpha (0.1.x), but in production: pin marimo-book>=0.1.5,<0.2; the book.yml schema is stable for v0.1, and dartbrains.org is a real-world user.Two-stage build by design: a marimo-aware preprocessor emits plain Markdown + inline HTML, then mkdocs (Material today, zensical tomorrow) renders it. Not a mkdocs plugin, so the shell stays swappable.Interactive widgets without a kernel: anywidget Canvas/Three.js/Plotly mounts render statically, and mo.ui.slider with explicit steps gets pre-computed as a static lookup table.WASM escape hatch per chapter: set mode: wasm and the chapter routes through marimo's MarimoIslandGenerator, shipping the marimo runtime + Pyodide bundle for full reactivity where you need it.Per-chapter launch buttons and extras: readers can jump to molab, GitHub, or a downloaded .py; optional [social], [...
adbl_web_anon_alc_button_suppression_t1
No reviews yet