Author here. I'm on the road today so latency will be high but I'm happy to answer any questions people have. Also, a shameless plug: I'm still coding in and writing about Lisp. Some currently active projects:
And I just finished (but have not yet published) a Lisp implementation of the Signal double-ratchet. If anyone is interested let me know and I'll publish that too.
>... hardware that is 100 million miles away is an interesting experience. Having a read-eval-print loop running on the spacecraft proved invaluable in finding and fixing the problem
So...
How exactly does it work to have a repl on the spacecraft?
Doesn't the system halt while it's waiting for user input?
Not the author, nor an expert, but I'm guessing it could be setup so that the 'OS' throws and interrupt when it receives a transmission signal requesting the REPL process [1]. So whatever normal processes that the device needs to run would get paused by the interrupt signal, and the REPL process would start up.
I used to work on flight software for a private company. It seemed like inertia from "heritage" always drove lots of decisions. From my memory, I remember quality assurance from NASA getting hung up on the following items during design reviews:
1) an RTOS they weren't familiar with
2) a language they weren't familiar with (the familiar set was Ada, C, C++)
3) dynamic memory allocation
How much push back did you get from quality assurance?
Lisp was not the RTOS, it was a process running under the RTOS (vxWorks). Nonetheless, we did use a Lisp with a hard-real-time GC. That helped allay some of the dynamic memory allocation FUD.
We got a ton of pushback about the unfamiliar language, but Lisp eventually won out because back then there really was no viable alternative. They actually tried to port the code to C++ and failed (running afoul of Greenspun's tenth and the immaturity of C++ compilers of the day).
I have no idea what was there. That was a long time ago. If there's a particular item you are looking for I might still have a copy in my archives, but that directory is probably gone forever. You can contact the JPL public information office to ask if they archived it, but I would be shocked if they did.
https://github.com/rongarret/ergolib
https://github.com/rongarret/BWFP
https://github.com/rongarret/tweetnacl/blob/master/tweetnacl...
And I just finished (but have not yet published) a Lisp implementation of the Signal double-ratchet. If anyone is interested let me know and I'll publish that too.