robert-dodier / maxima-jupyter

A Maxima kernel for Jupyter, based on CL-Jupyter (Common Lisp kernel)
Other
185 stars 31 forks source link

Add debugging #104

Closed yitzchak closed 2 years ago

yitzchak commented 3 years ago

We probably need to wait untill Quicklisp updates to merge this PR, but in case you want to kick the tires and light the fires here it is. In order to try out you will need

  1. a git clone of common-lisp-jupyter in ~/quicklisp/local-projects
  2. An installation of JupyterLab
  3. jupyterlab-debugger-restarts via jupyter-labextension install jupyterlab-debugger-restarts

In Maxima breakpoints, evaluation in frame and stepping works. The only thing missing from the stepper is step-out as it seems that Maxima doesn't have that.

In Lisp mode for SBCL breakpoints sort of work. Stepping and evaluation in frame also work.

Everything else works in both modes, i.e. variable inspection, source code loading, etc.

There are some things that have changed, mainly I was not able to use dbm-read since it doesn't track source position. That means no more breakpoint commands including :lisp or :lisp-quiet.

The Maxima REPL loop is now integrated into common-lisp-jupyter so that you can switch back and forth with to_lisp() and (to-maxima) and actually set breakpoints, track line position in the Lisp section in the same cell!

robert-dodier commented 3 years ago

Hi Tarn, sounds good. How will we know that Quicklisp has been updated?

yitzchak commented 3 years ago

Zach updates about once a month. Shortly afterward a post will show on https://planet.lisp.org/ The last update was about three weeks ago so one is probably coming soon.

I also need to update the README and then maybe do a squash on the commits.

yitzchak commented 3 years ago

One more thing I forgot to mention about the installation. You also have to reinstall the Maxima-Jupyter kernel because there are things in the kernel spec file (kernel.json) that have changed.

yitzchak commented 2 years ago

Quicklisp has been updated so this should be ready.