JupyMD 2.0.0
Version 2.0 brings major upgrades to kernel handling, and allows compatibility with other programming languages!
JupyMD now works with all languages with a Jupyter kernel, given the kernel is installed in your system. There is explicit support for the following languages:
- Python
- Julia
- R
- Bash
- Javascript
- TypeScript
- Rust
Other languages will also work, however with limitations.
JupyMD now runs code through Jupyter kernels, just like Jupyter Lab and other notebook editors. This makes execution more reliable and brings proper support for persistent variables, execution counts, kernel restarts, magic commands, display APIs, and rich outputs. It also opens the door to almost any language with a compatible Jupyter kernel.
Languages outside JupyMD’s built in support still work with limitations. They may work as long as the Markdown code fence matches the language reported by the kernel and Jupytext recognizes it as a code cell. Some kernels use different language names, which can prevent execution, and these languages may not include syntax highlighting, aliases, runtime details, or the same level of testing.
JupyMD no longer uses one global interpreter for every note. Each notebook can now use its own language, Python environment, or dependency set through a new kernel selector inspired by the experience in VS Code. Built on the interpreter selector introduced in version 1.7.0, it now lets you choose between installed Jupyter kernels and detected Python environments. The selected kernel is saved with the notebook, while a separate Python tooling environment handles Jupytext and Jupyter integration.
Full Changelog
Features
- add a hierarchical notebook kernel picker (bfec60e)
- add a local Jupyter bridge client (b6aec60)
- add a Python environment kernel source (71b48e5)
- add an installed Jupyter kernel source (bf73164)
- add managed Python kernelspec storage (9c9a4d5)
- add Markdown notebook cell indexing utilities (c8512f6)
- add notebook kernel lifecycle service (c6a268f)
- define extensible language support modules (122b5eb)
- define Jupyter kernel protocol types (3ff3303)
- persist a kernelspec when creating a notebook (3f3410e)
- render non-kernel languages as display-only notebook blocks (71a4840)
- render notebook code blocks for registered languages (36d7d36)
- render standard Jupyter MIME output bundles (7dade8e)
- show notebook runtime details in the status bar (aff7eba)
- unify tooling selection and dependency setup (786d16e)
Bug Fixes
- clear cell output and execution metadata consistently (da8e320)
- clear cell output optimistically (017d946)
- keep managed Python kernels out of installed kernels (1e96330)
- map Markdown fences to stable notebook cell indices (f3ed376)
- open rendered code at the clicked source position (83bde7d)
- strip terminal escapes from notebook text output (3e0f4c7)
- synchronize stale Markdown cells before execution (a71e1ae)