NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #394 most downloaded on PyPI
IPython Kernel for Jupyter
Last release 5 days ago
29 Sep 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
10 versions withdrawn
withdrawn after publishing
11 years old
147 releases · first in 2015
Enable setting and resetting a thread-local parent header #1546 ( @jasongrout , @minrk )
supported_encryption to use a list as per JEP latest state #1528 (@krassowski, @Carreau, @JohanMabille)jupyter_kernel_test #1560 (@glaziermag, @Carreau, @claude)The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@BoykoNeov (activity) | @Carreau (activity) | @davidbrochart (activity) | @glaziermag (activity) | @Gravifer (activity) | @ianthomas23 (activity) | @jasongrout (activity) | @JohanMabille (activity) | @krassowski (activity) | @kylebarron (activity) | @minrk (activity) | @NewUserHa (activity) | @practicusai (activity) | @sahvx655-wq (activity) | @Scott5S (activity) | @thomasjm (activity) | @tovrstra (activity) | @Yann-P (activity) | @yves-surrel (activity) | @ZupoLlask (activity)
One column per quarter.
feat(displayhook): add register_hook/unregister_hook to ZMQShellDisplayHook #1522 ( @rgbkrk , @minrk )
ipyparallel #1516 (@krassowski, @Carreau)The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@adityawasudeo (activity) | @Carreau (activity) | @erawn (activity) | @goelakash (activity) | @ianthomas23 (activity) | @JohanMabille (activity) | @krassowski (activity) | @minrk (activity) | @P4X-ng (activity) | @pelson (activity) | @rgbkrk (activity)
Added kernel_protocol_version to kernelspec #1483 ( @JohanMabille , @ianthomas23 )
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@arjxn-py (activity) | @Carreau (activity) | @ccordoba12 (activity) | @ianthomas23 (activity) | @JohanMabille (activity) | @minrk (activity) | @newville (activity) | @SylvainCorlay (activity)
Added kernel_protocol_version to kernelspec #1483 ( @JohanMabille , @ianthomas23 )
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@ianthomas23 (activity) | @JohanMabille (activity) | @SylvainCorlay (activity)
The following people contributed discussions, new ideas, code and documentation contributions, and review. See our definition of contributors.
(GitHub contributors page for this release)
@ianthomas23 (activity) | @JohanMabille (activity) | @SylvainCorlay (activity)
Replaced PUB socket with XPUB socket #1482 ( @JohanMabille , @SylvainCorlay )
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@arjxn-py (activity) | @Carreau (activity) | @ianthomas23 (activity) | @JohanMabille (activity) | @newville (activity) | @SylvainCorlay (activity)
IPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using %notebook magic to save sessions as .ipynb
IPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using %notebook magic to save sessions as .ipynb files (#1435). This is enabled using the traitlet ZMQDisplayPublisher.store_display_history which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.
Output from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless get_ipython().set_parent() is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (#1451).
This release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (#1458), kernels launched in new threads failing asserts (#1455), and ContextVars persisting between cells (#1462). There is also a fix for keyboard interrupts on Windows (#1434).
%notebook magic #1435 (@Darshan808)(GitHub contributors page for this release)
@Carreau | @Darshan808 | @dfalbel | @ianthomas23 | @krassowski | @lumberbot-app | @minrk | @ptosco
IPykernel 7.0.1 is a bug fix release to support CPython 3.14.
IPykernel 7.0.1 is a bug fix release to support CPython 3.14.
…as a major releases as it is potentially backwards incompatible. If you experience problems then please report them, and you can pin ipykernel < 7 if…
IPykernel 7.0.0 is a major release containing experimental support for kernel subshells.
If not using subshells it is intended to be backward compatible with the 6.x branch, but there are some architectural changes which may break assumptions made in downstream libraries and hence this is identified as a major releases as it is potentially backwards incompatible. If you experience problems then please report them, and you can pin ipykernel < 7 if necessary.
For further information and to report problems please see ipykernel 7.0.0 release with subshells (issue 1438).
Kernel._parent_ident for backward compatibility #1427 (@ianthomas23)__version__ on main branch after branch manipulations #1419 (@ianthomas23)@flaky.flaky decorate with pytest fixture #1411 (@mgorny)anyio (old main) branch to main branch #1402 (@ianthomas23)(GitHub contributors page for this release)
@Carreau | @ccordoba12 | @davidbrochart | @dependabot | @fleming79 | @ianthomas23 | @krassowski | @mgorny | @minrk | @pankaj-bind | @pre-commit-ci
Use asyncio.Lock around subshell message handling #1430 ( @ianthomas23 )
Kernel._parent_ident for backward compatibility #1427 (@ianthomas23)(GitHub contributors page for this release)
@Carreau | @ccordoba12 | @davidbrochart | @dependabot | @ianthomas23 | @krassowski | @pankaj-bind
Remove deprecated modules since 4.3 (2016). #1352 ( @Carreau )
Pre-release of ipykernel with experimental subshell support on top of tornado/asyncio. The previous version 7 pre-releases used anyio but that will no longer be in ipykernel 7.
Note the changelog here is not correct, presumably due to the recent branch renaming. For the full release this will have to be manually curated so that it is accurate. The "Full Changelog" link below is accurate.
%qtconsole #1315 (@minrk)__version__ on main branch after branch manipulations #1419 (@ianthomas23)@flaky.flaky decorate with pytest fixture #1411 (@mgorny)anyio (old main) branch to main branch #1402 (@ianthomas23)(GitHub contributors page for this release)
@blink1073 | @bluss | @Carreau | @ccordoba12 | @davidbrochart | @dependabot | @ianthomas23 | @ivanov | @jasongrout | @krassowski | @limwz01 | @mgorny | @minrk | @nathanmcavoy | @pre-commit-ci | @smacke
Remove deprecated modules since 4.3 (2016). #1352 (@Carreau)
%qtconsole #1315 (@minrk)(GitHub contributors page for this release)
@Carreau | @ccordoba12 | @davidbrochart | @ianthomas23 | @krassowski | @limwz01 | @minrk | @pre-commit-ci | @smacke
Avoid a DeprecationWarning on Python 3.13+ #1248 (@hroncok)
(GitHub contributors page for this release)
@agronholm | @blink1073 | @bluss | @Carreau | @davidbrochart | @gregory-shklover | @hroncok | @ianthomas23 | @ivanov | @krassowski | @maartenbreddels | @minrk | @mlucool | @s-t-e-v-e-n-k
IPykernel 6.31.0 fixes an issue where display outputs such as Matplotlib plots were not included when using %notebook magic to save sessions as .ipynb
IPykernel 6.31.0 fixes an issue where display outputs such as Matplotlib plots were not included when using %notebook magic to save sessions as .ipynb files. This is enabled using the traitlet ZMQDisplayPublisher.store_display_history which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.
%notebook magic #1461 (@Darshan808)@flaky.flaky decorate with pytest fixture #1421 (@mgorny)(GitHub contributors page for this release)
@bollwyvl | @cclauss | @Darshan808 | @ianthomas23 | @krassowski | @lumberbot-app | @meeseeksmachine | @mgorny | @minrk
This is a bugfix release to fix a significant bug introduced in 6.30.0 that allowed control messages to be handled concurrently rather than sequential
This is a bugfix release to fix a significant bug introduced in 6.30.0 that allowed control messages to be handled concurrently rather than sequentially which broke debugging in JupyterLab and VSCode.
Licence :: * trove classifers are deprecated #1348 (@Carreau)
This release fixes three bugs but is primarily a maintenance release bringing support for Python 3.13 and updating dependencies. It does not include subshells which will be in the upcoming 7.0.0 release. Users and downstream libraries that wish to avoid subshells should pin to ipykernel < 7.
(GitHub contributors page for this release)
@Carreau | @ccordoba12 | @davidbrochart | @dby-tmwctw | @gregory-shklover | @ianthomas23 | @ivanov | @jasongrout | @krassowski | @meeseeksmachine | @minrk | @nathanmcavoy | @s-t-e-v-e-n-k
Avoid a DeprecationWarning on Python 3.13+ #1248 (@hroncok)
Pre-release to allow further testing of subshell implementation.
(GitHub contributors page for this release)
@Carreau | @ccordoba12 | @davidbrochart | @dby-tmwctw | @ianthomas23 | @ivanov | @jasongrout | @krassowski | @meeseeksmachine | @minrk
Fix use of "%matplotlib osx" #1237 (@ianthomas23)
Fix side effect import for pickleutil #1216 (@blink1073)
(GitHub contributors page for this release)
@agronholm | @blink1073 | @davidbrochart | @krassowski | @minrk
Eventloop scheduling improvements for stop_on_error_timeout and schedule_next #1212 (@jdranczewski)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @jdranczewski | @joouha | @krassowski
Fix: ipykernel_launcher, delete absolute sys.path\[0\] #1206 (@stdll00)
fix: on exception, return a 0, so that the "sum" still computes #1204 (@petervandenabeele)
Always set debugger to true in kernelspec #1191 (@ianthomas23)
ProactorEventLoop on windows for ipykernel" #1194 (@blink1073)Enable ProactorEventLoop on windows for ipykernel #1184 (@NewUserHa)
ProactorEventLoop on windows for ipykernel #1184 (@NewUserHa)(GitHub contributors page for this release)
@blink1073 | @brichet | @dependabot | @ianthomas23 | @jjvraw | @NewUserHa | @pre-commit-ci
Fix edit magic payload type #1171 (@blink1073)
Extend argument handling of do_execute with cell metadata #1169 (@jjvraw)
Update lint deps and add more typing #1156 (@blink1073)
Make iostream shutdown more robust #1143 (@blink1073)
(GitHub contributors page for this release)
@anntzer | @blink1073 | @ccordoba12 | @minrk
Modifying debugger to return the same breakpoints in 'debugInfo' response as 'setBreakpoints' #1140 (@vaishnavi17)
feat: let display hook handle clear_output #1135 (@maartenbreddels)
(GitHub contributors page for this release)
@blink1073 | @fecet | @jasongrout | @maartenbreddels | @pre-commit-ci
Let get_parent decide the channel to get parent header #1128 (@dby-tmwctw)
Check existence of connection_file before writing #1127 (@fecet)
Avoid ResourceWarning on implicitly closed event pipe sockets #1125 (@minrk)
InProcessKernel._redirected_io #1122 (@charles-cooper)Avoid echoing onto a captured FD #1111 (@minrk)
Support control\<>iopub messages to e.g. unblock comm_msg from command execution #1114 (@tkrabel-db)
(GitHub contributors page for this release)
@blink1073 | @maartenbreddels | @pre-commit-ci | @tkrabel-db
Deprecate Comm class + Fix incompatibility with ipywidgets #1097 (@martinRenou)
Fix interrupt reply #1101 (@garlandz-db)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @dcsaba89 | @garlandz-db | @mlucool
Un-expose __file__ and expose __session__ instead. #1095 (@Carreau)
Restore nest-asyncio for tk loop #1086 (@blink1073)
Expose session start file in __file__. #1078 (@Carreau)
(GitHub contributors page for this release)
@agronholm | @blink1073 | @brichet | @Carreau | @ccordoba12 | @minrk
Fix Exception in OutStream.close() #1076 (@ilyasher)
Don't raise error when trying to create another Qt app for Qt eventloop #1071 (@ccordoba12)
ENH: add %gui support for Qt6 #1054 (@shaperilio)
%gui support for Qt6 #1054 (@shaperilio)Don't pass None kernels to logging configurable in Comm #1061 (@bollwyvl)
format dates as ISO8601 #1057 (@GRcharles)
Fix error in %edit magic #1053 (@ccordoba12)
%edit magic #1053 (@ccordoba12)fix: too many arguments dropped when passing to base comm constructor #1051 (@maartenbreddels)
Fix: there can be only one comm_manager #1049 (@maartenbreddels)
Fix Comm interface for downstream users #1042 (@maartenbreddels)
Configurables needs to be configurable #1037 (@Carreau)
Add more testing and deprecate the Gtk event loops #1036 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @maartenbreddels | @martinRenou | @pre-commit-ci
Add terminal color support #1025 (@blink1073)
Ignore the new Jupyter_core deprecation warning in CI #1019 (@jasongrout)
Enable webagg in %matplotlib #1012 (@zhizheng1)
Fix failing test and update matrix #1010 (@blink1073)
PR: Destroy tk app to avoid memory leak #1008 (@impact27)
Use hatch for version #998 (@blink1073)
PR: Close memory leak #990 (@impact27)
_abort_queues is no longer async #942 (@rhelmot)
Fix inclusion of launcher file and check in CI #964 (@blink1073)
Fix compatibility with tornado 6.2 beta #956 (@minrk)
Your coding agent can read these notes before it upgrades. Set up the MCP server →