I have been following the development of the WolframLanguageForJupyter
(WLFJ
) since its birth because I was already working on my version of a jupyter kernel for the Wolfram language. It appears that WLFJ has several issues, therefore I would like to share with you my version which is called JWLS
and it is very minmal and simple compare to WLFJ. As such, it appears to be pretty flexible and I did not experience bad issues on the systems I tried it on. But I need you to test it to confirm my (very biased) impression! :)
Furthermore, I think the release of the free Wolfram Engine for developers gives very much sense to the disclose of such a project right now.
So, here it is https://github.com/Ludwiggle/JWLS
Thank You.
JWLS - DOCs
A Jupyter notebook for Wolfram(Language)Script.
The goal of JWLS is to extend the wolframscript cli with a HTML-based REPL interface.
Features
- Autocompletion of WL Symbols
- WL syntax highlighting
- "!command" runs Bash commands
- Vector graphics outputs
- It works also on older versions of CDFPlayer
Installation
Assuming miniconda
(Python 3.7) installed
- Copy the kernel folder
JWLS_kernel
into your python installation folder e.g. `~/miniconda3/lib/python3.7/site-packages/
- Run the installation script
python install.py
(it's in the kernel folder)
Modify the path of Names.wl.txt
in kernel.py
because it requires the full path instead of ~
. Check also if JWLS.sh
points the actual wolframscript
executable.
Usage
Run JWLS.sh
or copy it in the executables path e.g. cp JWLS.sh /usr/local/bin/JWLS
.
In order to use it on a cloud compute virtual machine, modify the nbAddrF
function by adding jupyter notebook --no-browser --port=7000
. Then screen
a session run JWLS
and detach it. Go back to your local machine and ssh -N -f -L localhost:6001:localhost:7000 <IP>"
. For AWS instances also add the pem. For Google Cloud follow their instructions.
Possible issues and Troubleshooting
If your system is generally slow and JWLS.sh
opens more than one jupyter-notebook server, you might want to increase the Pause
timing in the nbAddrF
function which is reponsible for that.
How it works
JWLS is a slimmed down version of the Jupyter bash_kernel
that pipes input cells into a wolframscript Dialog[]
through a temporary fifo, and it reads the corresponding outputs from the default wolframscript log file.
The JWLS.sh
script reads your jupyter notebook list
to save the address of the first notebook found; that is needed by show
. If Jupyter is not running, JWLS will start a new notebook.
The custom show
function returns the clickable URL of the exported graphical output. In this way, graphics is rendered by the Jupyter file viewer in a new browser tab, not within the notebook. Any epression or graphics that is not an Image
is exported as a pdf (quickest export time and very accurate), otherwise it exports a png.
The Out[..]
expressions are returned on both the Jupyter notebook and the terminal where JWLS is started. On Wolfram Kernels prior to V12, error messages, Information
and progress indicators are printed on terminal only. With the new Wolfram Engine (for developers) errors and Information
are given back to the standard ouput but still, progress indicators or incremental ouputs like Do[ Print@"hello"; Pause@1, 3 ]
returns only at the end of the execution; keep an eye on the terminal for those.