NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #449 most downloaded on PyPI
IPython Kernel for Jupyter
Last release 3 months ago
10 Jun 2026
Release timing varies
gaps range from 8 days to 5 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
10 versions withdrawn
withdrawn after publishing
11 years old
146 releases · first in 2015
Fix richInspectVariables #943 (@davidbrochart)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @fabioz | @fcollonval | @pre-commit-ci
One column per quarter.
Add the PID to the resource usage reply #908 (@echarles)
(GitHub contributors page for this release)
@andia89 | @blink1073 | @echarles | @meeseeksdev | @pre-commit-ci | @tlinhart
Clean up test deps and test setup #904 (@blink1073)
use packaging instead of pkg_resources to parse versions #900 (@minrk)
Run flake and remove deprecated import #894 (@blink1073)
Improve performance of stderr and stdout stream buffer #888 (@MrBago)
(GitHub contributors page for this release)
@blink1073 | @jamadeo | @lesteve | @MrBago | @SylvainCorlay
Catch error when shutting down kernel from the control channel #877 (@ccordoba12)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @ccordoba12 | @echarles | @fabioz | @minrk | @vidartf
Add hostname to the usage reply #865 (@echarles)
Fixed event forwarding #855 (@JohanMabille)
Add support for the debug modules request #816 (@echarles)
Add usage_request and usage_reply based on psutil #805 (@echarles)
(GitHub contributors page for this release)
@Carreau | @echarles | @fcollonval | @JohanMabille | @kycutler
PR: do_one_iteration is a coroutine #830 (@impact27)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @fcollonval | @impact27 | @ivanov | @penguinolog
Set debugOptions for breakpoints in python standard library source #812 (@echarles)
debugOptions for breakpoints in python standard library source #812 (@echarles)omit_sections to IPython to choose which sections of documentation you do not want #809 (@fasiha)exceptionPaths field to debugInfo reply #814 (@JohanMabille)jupyter_kernel_test as downstream #813 (@blink1073)nose dependency #808 (@Kojoley)(GitHub contributors page for this release)
@blink1073 | @dlukes | @echarles | @fasiha | @JohanMabille | @Kojoley
Fix the temp file name created by the debugger #801 (@eastonsuo)
IPython, and remove some dependencies on it. #796 (@Carreau)Fix rich variables inspection #793 (@fcollonval)
setQuitOnLastWindowClosed() on a QCoreApplication #791 (@stukowski)ipython_genutils requirement #792 (@penguinolog)Enabled rich rendering of variables in the debugger #787 (@JohanMabille)
debugpy is now a build requirement #773 (@minrk)
Stop using deprecated recv_multipart when using in-process socket. #762 (@Carreau)
json_clean a no-op for jupyter-client >= 7 #708 (@martinRenou)ipykernel work without debugpy #767 (@frenzymadness)recv_multipart when using in-process socket. #762 (@Carreau)Add dependency on IPython genutils. #756 (@Carreau)
Add deep variable inspection #753 (@JohanMabille)
IPKernelApp.capture_fd_output config to disable FD-level capture #752 (@minrk)nose test references #750 (@blink1073)nose skipIf in favor of pytest #748 (@Carreau)nose #747 (@Carreau)(GitHub contributors page for this release)
@afshin | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @JohanMabille | @kevin-bates | @minrk | @SylvainCorlay
Add Support for Message Based Interrupt #741 (@afshin)
Implemented richInspectVariable request handler #734 (@JohanMabille)
richInspectVariable request handler #734 (@JohanMabille)OutStream.write #726 (@SimonKrughoff)KernelApp: rename ports variable to avoid override #731 (@amorenoz)
Add watchfd keyword to InProcessKernel OutStream initialization #727 (@rayosborn)
Fix Tk and asyncio event loops #704 (@ccordoba12)
Remove references to deprecated ipyparallel #695 (@minrk)
IPykernel 6.0 is the first major release in about two years, that brings a number of improvements, code cleanup, and new features to IPython.
You should be able to view all closed issues and merged Pull Request for this milestone on GitHub, as for any major releases, we advise greater care when updating that for minor release and welcome any feedback (~50 Pull-requests).
IPykernel 6 should contain all changes of the 5.x series, in addition to the following non-exhaustive changes.
Support for the debugger protocol, when using JupyterLab, RetroLab or any
frontend supporting the debugger protocol you should have access to the
debugger functionalities.
The control channel on IPykernel 6.0 is run in a separate thread, this may change the order in which messages are processed, though this change was necessary to accommodate the debugger.
We now have a new dependency: matplotlib-inline, this helps to separate the
circular dependency between IPython/IPykernel and matplotlib.
All outputs to stdout/stderr should now be captured, including subprocesses and output of compiled libraries (blas, lapack....). In notebook server, some outputs that would previously go to the notebooks logs will now both head to notebook logs and in notebooks outputs. In terminal frontend like Jupyter Console, Emacs or other, this may ends up as duplicated outputs.
coroutines are now native (async-def) , instead of using tornado's
@gen.coroutine
OutStreams can now be configured to report istty() == True, while this
should make some output nicer (for example colored), it is likely to break
others. Use with care.
isatty method of OutStream return true #683 (@peendebak)inspectVariables request #624 (@JohanMabille)ipykernel in kernelspec #616 (@SylvainCorlay)matplotlib-inline #591 (@martinRenou)ipyparallel #695 (@minrk)OutStream #685 (@Carreau)dispatch_shell #673 (@marcoamonteiro)Trio mode for compatibility with Trio >= 0.18.0 #627 (@mehaase)DeprecationWarning Fix #617 (@afshin)shell.should_run_async #605 (@afshin)nbclient test. #641 (@SylvainCorlay)SocketABC since 4.5.0 #689 (@Carreau)connect.py #688 (@Carreau)ipykernel.codeutil deprecated since IPykernel 4.3.1 (Feb 2016) #687 (@Carreau)SelectorEventLoop on Windows #669 (@minrk)Kernel.get_parent to match set_parent #661 (@minrk)Kernel.get_parent_header #657 (@minrk)shell_streams writable #638 (@minrk)get_msg helper method #634 (@davidbrochart)ipython_genutils #631 (@SylvainCorlay)ipython_genutils to traitlets. #601 (@Carreau)ipython_genutils.py3compat. #600 (@Carreau)get_parent_header call #662 (@SylvainCorlay)ZMQInteractiveshell. #643 (@Carreau)inspectVariables request #628 (@JohanMabille)stop_on_error_timeout #618 (@MSeal)kernel.json. #593 (@jellelicht)configure_inline_support and call it in the shell #590 (@martinRenou)readthedocs.yml #612 (@minrk)stop_on_error_timeout #613 (@glentakahashi)Kernels now support only a single shell stream, multiple streams will now be ignored. The attribute
Kernel.shell_streams (plural) is deprecated in ipykernel 6.0. Use Kernel.shell_stream (singular)Kernel._parent_header is deprecated, even though it was private. Use .get_parent() now.ipykernel.codeutils was deprecated since 4.x series (2016) and has been removed, please import similar
functionalities from ipyparallelfind_connection_file and profile argument of connect_qtconsole and get_connection_info, deprecated since IPykernel 4.2.2 (2016).(GitHub contributors page for this release)
@afshin | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @dsblank | @glentakahashi | @impact27 | @ivanov | @jellelicht | @jkablan | @JohanMabille | @kevin-bates | @marcoamonteiro | @martinRenou | @mehaase | @minrk | @mlucool | @MSeal | @peendebak | @SylvainCorlay | @tacaswell
Remove references to deprecated ipyparallel #695 (@minrk)
Remove deprecated source parameter since 4.0.1 (2015) #690 (@Carreau)
ipykernel.codeutil deprecated since IPykernel 4.3.1 (Feb 2016) #687 (@Carreau)Follow up DeprecationWarning Fix #617 (@afshin)
stop_on_error_timeout #613 (@glentakahashi)(GitHub contributors page for this release)
@afshin | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @dsblank | @glentakahashi | @impact27 | @ivanov | @jkablan | @JohanMabille | @kevin-bates | @marcoamonteiro | @martinRenou | @mehaase | @minrk | @mlucool | @MSeal | @peendebak | @SylvainCorlay | @tacaswell
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add ipython_genutils dependency
Keep preferring SelectorEventLoop on Windows #669 (@minrk)
Import configure_inline_support from matplotlib_inline if available #654
configure_inline_support from matplotlib_inline if available #654Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →