repl: Use split() on shell and control dealer sockets#48823
Merged
miguelraz merged 1 commit intozed-industries:mainfrom Feb 10, 2026
Merged
repl: Use split() on shell and control dealer sockets#48823miguelraz merged 1 commit intozed-industries:mainfrom
miguelraz merged 1 commit intozed-industries:mainfrom
Conversation
Split the shell and control DealerSocket connections into independent send/recv halves using the new split() API from zeromq 0.5.0 and runtimelib 1.x. A single `select!` loop over iopub, shell, and control recv halves replaces the three separate recv tasks.
This was referenced Feb 9, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hot on the heels of #48817 I'm bringing the best improvement to the repl underneath:
split()-able sockets! Much more will be unlocked by having this.This split the shell and control
DealerSocketconnections into independent send/recv halves using the newsplit()API from zeromq 0.5.0 and runtimelib 1.x. This also nicely cleaned things up so we could have a singleselect!loop over iopub, shell, and control recv halves. That replaces three separate recv tasks.This likely closes some issues for certain kernels that would get stuck either during startup or other flows due to them not sending replies to specific requests. I'll see if I can find some issues people already reported I can link back to this.
This allows us to unlock some nifty new things we can do on the shell socket, particularly autocompletion for in-memory values, stdin support, and others. I think it also help with sending and receving
KernelInfo, which not all kernels do properly at the start. This makes us a bit more resilient to errant kernels.Release Notes: