Skip to content

Subshells implemented using tornado event loops on 6.x branch #1396

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: 6.x
Choose a base branch
from

Conversation

ianthomas23
Copy link
Collaborator

This is an implementation of subshells on the 6.x branch, as highlighted in #1387.

It is based on the implementation on the main branch except that it is built on the existing tornado io_loops rather than anyio. The architecture of classes, threads and zmq sockets is the same, with pairs of sockets used for communication between threads. The implementation is simpler as rather than using anyio tasks and task queues, we use ZMQStreams which call an on_recv callback whenever a message is received on the contained socket.

From other projects' point of the view the major change here is not subshells, which don't have to be used, but it is the addition of a new thread to receive messages on the shell channel, which are routed to the appropriate subshell (or main shell thread). This makes it more responsive, and could potentially cause different behaviour in downstream projects depending on how it is used.

Although this is based on the 6.x branch there has been some discussion about whether this might be released as 6.30.0 or as 7.0.0.

This passes CI for me locally on both linux and macOS, we'll have to see what problems arise in CI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant