I have been asked to automate the operation of a Windows (WinForms) application, performing some fairly complicated statistical analysis along the way.
My first thought was the usual suspects: .NET, C# and White or AutoItX.
Then it occured to me that I could try an alternative stack: SBCL, CFFI, and AutoItX. That way, I could write in a language I like (Common Lisp), using my native Linux development tools via SLIME and Swank.
Hence my question: is there some reason I shouldn’t try this? I’m a Common Lisp newbie, and have essentially zero experience in CL FFI or SBCL on Windows. The learning curve isn’t a problem, though. I’m worried that someone may have tried something like this in the past and discovered insurmountable issues. My list of concerns includes:
- stability / completeness of CFFI on SBCL on Windows
- getting SLIME on Linux talking to SBCL running on a Windows box
Any experience, advice or warnings on any aspect of my proposed stack would be greatly appreciated.
1
This is a little late, but as of about 2 months ago (05/2018) I found this project called Portacle which bundles SBCL, Emacs, Quicklisp, and more into a single package for Windows 10. All you have to do is double click the portacle.exe
file and you have a full blown Common Lisp IDE to work with.
See https://portacle.github.io/ and https://github.com/portacle/portacle
Here is half of an answer.
Clozure Common Lisp (CCL) is the “best” Common Lisp implementation for windows. It works great with Emacs/SLIME. I haven’t had any issues but I don’t get to use Lisp beyond tinkering. Not sure about CFFI.
To save you a bit of searching….
On my windows XP box I had to add CCL to the path. When you set the inferior-lisp-program it does not assume an absolute path.
Start -> right click “My computer” -> Properties -> Advanced -> Environment variables -> click “PATH” -> edit -> add path to CCL into the “;” separated list.
Then add this to .emacs:
(set-language-environment "utf-8") ;for clozure cl
(setq inferior-lisp-program "wx86cl.exe -K utf-8") ;clozure cl
(add-to-list 'load-path "~/.emacs.d/slime/") ; your SLIME directory
(require 'slime)
(setq slime-net-coding-system 'utf-8-unix)
(slime-setup '(slime-fancy))