- See the Dockerfile for a recipe on how to build the tclkernel.
The docker
folder contains the Dockerfile
for building a tcljupyter container based on alpine. An example docker-compose.yml
file is added.
Prebuilt images are on Docker Hub.
If you want to try it out without installation you can use the Binder version in the cloud.
The Tcl used to run the init.tcl
script should have the following available:
- Tcl 9,0 with threads
- tclzmq (Not for the tclonly version)
- rl_json custom built version for Tcl 9.0
- tcllib uuid
- tcllib sha256
Easiest way to build tclzmq on Windows is to use mingw.
- Install tcllib
- Install critcl
- Install the msys zmq packages
pacman -Syu mingw64/mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-zeromq
- Run the
build.tcl
installer from the tclzmq distro. NB: Static builds don't work in the sense that they are the same as shared builds.
Most web client commands are supported. Only thing missing is reading from stdin with for example gets
.
jupyter::display mimetype body
: Display body in the cell. Returns the display id for use inupdatedisplay
.jupyter::html body
: Display body as html in the cell. Returns the display id for use inupdatedisplay
.jupyter::updatedisplay id mimetype body
: Updates the display with idid
with then new body.jupyter::updatehtml id body
: Updates the html display with idid
with the new body.
Magics are lines starting with ##
at the top of the cell.
##timeit ?count?
: Time the execution of the cell and display the results. Changing count will execute the cell multiple times and show the average time.##noresult
: Do not show the last result. This is convenient if the last result is very large. The same effect can be achieved by postfixing a;
as the last character in the cell.
A prequisite is the jupyter_kernel_test (JKT) module:
pip install jupyter_kernel_test
To run the test suite, execute (from within the checkout directory):
python -m tests.test_tcljupyter
For communication from kernel to session thread [thread::send -async] is being used. stdout
and stderr
are being intercepted by chan push