Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.10.1 - 2025-12-14¶
🏗️ Breaking changes¶
- Improve Caller.queue_call rewake reliability and revise Pending.set_result. #272
🌀 Miscellaneous¶
- Allow PendingManager.deactivate to be called multiple times. #271
0.10.0 - 2025-12-11¶
🌀 Miscellaneous¶
0.10.0-rc2 - 2025-12-10¶
📝 Documentation¶
- Subshell docstrings #267
🌀 Miscellaneous¶
0.10.0-rc1 - 2025-12-09¶
🏗️ Breaking changes¶
-
Rename Pending.wait argument shield as protect. #249
-
Drop MetadataKeys and rename execute_request_timeout to timeout and more tags. #247
-
Refactoring with view to supporting pyodide in the kernel. #244
-
Move RunMode.get_mode functionalty to Kernel.get_run_mode #240
🚀 Features¶
-
Add LastUpdatedDict and use it for the shell user_ns and user_global_ns. #262
-
Use standard dictionary for Fixed instead of weakkeydict for faster access. #258
-
Added PendingGroup and caller.create_pending_group. #252
-
Added SubshellPendingManager. #251
-
Caller.queue_call is now reset awaitable #250
-
Added PendingTracker, PendingManager and make Pending.set_result resettable. #248
-
Update uv.lock and bump anyio min version to 4.12 with support for winloop. #243
-
Add support for kernel subshells. #238
-
Run mode header can now be either
# taskor##task. #239 -
Bump aiologic min version to 0.16 and use its import features. #234
🌀 Miscellaneous¶
-
Prepare for release v0.10.0-rc1 #265
-
Maintenance #264
-
Use gc.collect at kernel shutdown. #263
-
SubshellManager.create_subshell returns a subshell instead of the subshell_id. #261
-
Modify tests involving weakref to work with pypy. #260
-
Fix type hint for kernel.shell. #259
-
Kernel maintenance #257
-
Alternate kernel run modes. #256
-
Use a tuple to pack direct call instead a functools partial. #255
-
Do_complete_request bugfix. #253
-
Make signature of AsyncInteractiveShell.inspect_request consistent with other methods. #246
-
Move shell related requests to the shell. #245
-
Refactor Caller for improved shutdown. #242
-
Accept subshell_id from either the header or content. Content gets first option. #241
-
Add checkpoints to Caller. #237
-
Add py.typed #236
-
Restore Kernel to the module namespace. #235
0.9.2 - 2025-11-27¶
🌀 Miscellaneous¶
0.9.1 - 2025-11-27¶
🌀 Miscellaneous¶
-
Prepare for release v0.9.1 #231
-
Move 'kernel' optional dependencies into normal dependencies. #230
-
Caller.start_sync now just uses asyncio.create_task instead of using an anyio token. #229
0.9.0 - 2025-11-25¶
🌀 Miscellaneous¶
0.9.0-rc.4 - 2025-11-25¶
🏗️ Breaking changes¶
-
Caller refactoring and breaking changes; renamed 'async-context' to 'manual' and removed Caller.to_thread_advanced. #222
-
Make Caller() the preferred way to obtain a running caller. #217
-
Kernel refactoring - moving code around for better readability. #215
🚀 Features¶
-
Towards making async_kernel.Callable usable on pyodide. #223
-
Added time based idle worker cleanup. #219
-
Caller.as_completed and Caller.wait can now wait for any awaitables. #218
🌀 Miscellaneous¶
-
Prepare for release v0.9.0-rc.4 #225
-
Remove rudundant code in Caller.new. #224
-
Bump actions/checkout from 5 to 6 in the actions group #221
-
Prepare for release v0.9.0-rc.4 #220
-
Test with free threading python #216
0.9.0-rc.3 - 2025-11-19¶
🏗️ Breaking changes¶
- Caller.wait - renamed argument 'shield' to 'cancel_unfinished' and inverted the logic. #213
🌀 Miscellaneous¶
- Prepare for release v0.9.0-rc.3 #214
0.9.0-rc.2 - 2025-11-19¶
🌀 Miscellaneous¶
-
Prepare for release v0.9.0-rc.2 #212
-
Name and hide Kernel.receive_msg_loop from debugpy. #211
-
Tidy up Caller.get. #210
-
Improved interrupts by adding a race to clear or re-reraise. #209
-
Kernel - convert traits to Fixed #208
-
Changed comm_manager to a Fixed property, the ipykernel patch is now only applied when the kernel is started. #207
-
Bugfixes for 'Fixed' class #206
0.9.0-rc.1 - 2025-11-18¶
🏗️ Breaking changes¶
-
Caller - instance checks names of children rather than all instances. #204
-
Caller restructuring adding new features and breaking changes plus added 'Fixed' class and renamed Future to Pending. #197
-
Caller enhancements and breaking changes #195
-
Remove unnecessary context copy and call from queue_call. #194
🚀 Features¶
-
Added Caller.zmq_context #198
-
Use queue run mode instead of direct which is no slower, but probably 'safer'. #193
📝 Documentation¶
-
Docs #203
-
Update readme. #202
-
Docs and shuffle code inside the kernel #200
-
Update mkdocs and mkdocstrings python - have released insiders features. #192
🌀 Miscellaneous¶
-
Prepare for release v0.9.0-rc.1 #205
-
Add the trait Kernel.print_kernel_messages which when set to false prevents messages from being printed. #201
-
General tidy and remove unrequired tests. #199
0.8.0 - 2025-11-12¶
🏗️ Breaking changes¶
-
Rename 'RunMode.blocking' to 'RunMode.direct'. #190
-
Add slots to Future. #186
-
Drop Future.init positional argument 'retain_metadata' #185
📝 Documentation¶
- Maintenance and documentation. #187
🌀 Miscellaneous¶
0.7.1 - 2025-11-11¶
🚀 Features¶
- Added Kernel.schedule_job, exposed Kernel.caller #181
📝 Documentation¶
- Improve docstrings: #182
🌀 Miscellaneous¶
-
Prepare for release v0.7.1 #184
-
Make all Threads daemon and add daemon option to Caller.start_new. #183
0.7.0 - 2025-11-10¶
🏗️ Breaking changes¶
-
Drop 'run_mode' key from Job dict. #174
-
Remove usage of KernelConcurrencyMode. It was functional but unnecessary. #173
-
Run shell and control socket loops in threads without event loops. #172
🚀 Features¶
-
Use BinarySemaphore instead of Lock for best performance in send_reply. #178
-
Use a lock in send_reply. #175
📝 Documentation¶
- Use BinarySemaphore instead of Lock for best performance in send_reply and update readme. #179
🌀 Miscellaneous¶
-
Prepare for release v0.7.0 #180
-
Switch from mdformat to prettier for formatting markdown #177
-
Improve typehints in tests. #176
-
Added Kernel.run and permit the kernel to run outside the main thread #171
0.7.0-rc.2 - 2025-11-07¶
🚀 Features¶
- Use low-level async primatives in caller module. #169
🌀 Miscellaneous¶
- Prepare for release v0.7.0-rc.2 #170
0.7.0-rc.1 - 2025-11-04¶
🏗️ Breaking changes¶
- Use aiologic for thread-safe Event and Lock. #164
🌀 Miscellaneous¶
- Prepare for release v0.7.0-rc.1 #167
0.6.3 - 2025-11-04¶
🌀 Miscellaneous¶
-
Prepare for release v0.6.3 #166
-
Kernel.execute_request unnecessarily sent a thread call to a new thread. #165
-
Update pre-commit #163
-
Use a dependency floor in requirements and upgrade lock file. #162
-
Make AsyncInteractiveShell.enable_gui raise NotImplementedError for unsupported guis. #161
0.6.2 - 2025-10-29¶
🌀 Miscellaneous¶
-
Prepare for release v0.6.2 #160
-
Bump the actions group with 2 updates #158
-
Don't reraise caught cancelled error in Caller_wrap_call. #159
-
Ensure debugInfo is fullly populated. #157
0.6.1 - 2025-10-17¶
🚀 Features¶
- Added Kernel.get_parent. #155
🌀 Miscellaneous¶
0.6.0 - 2025-09-30¶
🏗️ Breaking changes¶
-
Remove 'name' argument from get_instance (it can be provided as a kwarg. #152
-
Rename Caller.to_thread_by_name to Caller.to_thread_advanced change the first argument from a string or None to a dict. #151
🚀 Features¶
- Add hooks to AsyncDisplayPublisher #150
🌀 Miscellaneous¶
0.5.4 - 2025-09-28¶
🌀 Miscellaneous¶
-
Prepare for release v0.5.4 #148
-
Add functools.wraps decorator to kernel._wrap_handler to make it easier to identify which function it is wrapping. #147
-
Minimize calls to 'expensive' thread.Event methods #146
0.5.3 - 2025-09-27¶
📝 Documentation¶
- Various documentation improvements. #144
🌀 Miscellaneous¶
-
Prepare for release v0.5.3 #145
-
Tidy up Caller queues and remove kernel.CancelledError. #143
-
Refactored ReentrantAsyncLock and AsyncLock with a new method 'base'. #142
0.5.2 - 2025-09-26¶
🐛 Fixes¶
- Fix debugger #140
🌀 Miscellaneous¶
-
Prepare for release v0.5.2 #141
-
Refactor Kernel and Subclass Caller from anyio.AsyncContextManagerMixin #139
0.5.1 - 2025-09-25¶
🚀 Features¶
- Take advantage of current_token in utils.wait_thread_event. #136
🌀 Miscellaneous¶
0.5.0 - 2025-09-24¶
🏗️ Breaking changes¶
- Simplify queue with breaking changes #134
🌀 Miscellaneous¶
- Prepare for release v0.5.0 #135
0.4.0 - 2025-09-23¶
🏗️ Breaking changes¶
-
Revise message handling for comm_msg #129
-
Improve Calller.get_instance to start a caller for the main thread if there isn't one running. #127
🚀 Features¶
🌀 Miscellaneous¶
-
Prepare for release v0.4.0 #133
-
Maintenance #132
-
Put _send_reply back inside run_handler. #130
-
Prevent memory leaks in caller scheduled futures #128
-
Housekeeping #125
0.3.0 - 2025-09-14¶
🏗️ Breaking changes¶
-
Caller.queue_call - divide into queue_get_sender, queue_call and queue_call_no_wait. #123
-
Stricter handling in Caller class. #122
-
Add AsyncEvent class. #118
🚀 Features¶
🌀 Miscellaneous¶
-
Prepare for release v0.3.0 #124
-
AsyncEvent maintenance - make more robust #120
-
Switch from pytest-retry to pytest-rerun failures. #117
-
Refactor Caller to speed up initialization of Future by removing the creation of the threading event. #115
0.2.1 - 2025-09-10¶
🏗️ Breaking changes¶
- Maintenance #105
🚀 Features¶
-
Divide Lock into AsyncLock and ReentrantAsyncLock #113
-
Improve Lock class #112
-
Add a context based Lock #111
-
Add classmethod Caller.wait #106
-
Add 'shield' option to Caller.as_completed. #104
🌀 Miscellaneous¶
-
Prepare for release v0.2.1 #114
-
Bump actions/setup-python from 5 to 6 in the actions group #110
-
Maintenance - Caller refactoring #109
-
Drop WaitType for Literals directly in Caller.wait. #108
-
Change Caller._queue_map to a WeakKeyDictionary. #107
-
Refactor Caller.wait to avoid catching exceptions. #103
0.2.0 - 2025-09-06¶
🏗️ Breaking changes¶
-
Rename Caller.call_no_context to Caller.call_direct. #100
-
Future - breaking changes- better compatibility of Future.result #96
🚀 Features¶
-
Add the classmethod Caller.current_future. #99
-
Add timeout, shield and result optional arguments to Future wait and wait_sync methods: #97
-
Add optional argument 'msg' to Future.cancel method. #95
-
Support weakref on the Future class. #94
📝 Documentation¶
- Documentation maintenance. #101
🌀 Miscellaneous¶
-
Prepare for release v0.2.0 #102
-
Result should raise cancelled error, but was raising and InvalidStateError. #98
0.1.4 - 2025-09-03¶
🏗️ Breaking changes¶
-
Optionally store a string representation of a kernel factory inside the kernel spec. #92
-
Use capital 'V' instead of 'v' for version flag in command_line. #88
📝 Documentation¶
-
Fix for publish-docs.yml not setting the version info correctly. #90
-
Include changelog in 'dev' version of docs. #89
-
Development documentation updates and fixes for publish-docs.yml. #87
🌀 Miscellaneous¶
0.1.3 - 2025-09-02¶
🚀 Features¶
- Add version option to command line. #82
🐛 Fixes¶
- Fix bug setting version for mike. #80
📝 Documentation¶
- Update documentation #84
🌀 Miscellaneous¶
-
Prepare for release v0.1.3 #86
-
Minor import changes. #85
-
Change base class of Kernel from ConnectionFileMixin to HasTraits #83
-
Overwrite subclass properties that should not be available. #81
-
CI checks for python 3.14 #63
0.1.2 - 2025-08-31¶
🏗️ Breaking changes¶
-
Breaking changes to kernel initialisation and launching #78
-
Enhancement - Make kernel async enterable. #77
📝 Documentation¶
- Fix alias for latest docs and limit release versions. #75
🌀 Miscellaneous¶
0.1.1 - 2025-08-28¶
🌀 Miscellaneous¶
-
Prepare for release v0.1.1 #74
-
Bugfixes - fix installing without trio and installing a kernelspec #73
0.1.0 - 2025-08-28¶
🏗️ Breaking changes¶
- Caller.queue_call add argument send_nowait and convert to sync that optionally returns an awaitable. #71
🚀 Features¶
- Add anyio_backend_options and use uvloop by default #70
📝 Documentation¶
🌀 Miscellaneous¶
0.1.0-rc3 - 2025-08-26¶
🚀 Features¶
- Add more classifers and code coverage #64
🌀 Miscellaneous¶
-
Prepare for release v0.1.0-rc3 #65
-
Add workflow_run event because the release is not triggered if the release is created by another workflow. #62
0.1.0-rc2 - 2025-08-26¶
🌀 Miscellaneous¶
- Prepare for release v0.1.0-rc2 #61
0.1.0-rc1 - 2025-08-26¶
📝 Documentation¶
- Update licensing and contribution notes #27
🌀 Miscellaneous¶
-
Prepare for release v0.1.0-rc1 #60
-
Merge pull request #56 from fleming79/release/v0.1.0-rc1 #56
-
Revise new release #55
-
New release workflow in one step with publish option. #51
-
Improve release workflow, update documentation and license info. #29
-
Maintenance #26
[0.1.0-rc0] - 2025-08-24¶
🚀 Features¶
🐛 Fixes¶
📝 Documentation¶
-
Revise workflow to work with tags that start with 'v'. No longer sets the tag when writing the changelog. #16
-
Switch to python installer to run git cliff. #14
-
Revise changelog template. #12
-
Do changelog as PR instead of push to main. #8
-
Git cliff #7
-
Fix mkdocs publishing #6