Currently, we have:
(defun create-swank-server (port &key reuse-address) "Create a Swank TCP server on `port'. Return the port number that the socket is actually listening on." (declare (ignore reuse-address)) (comm:start-up-server-and-mp :announce *terminal-io* :service port :process-name "Swank Request Processor" :function 'swank-accept-connection ) ; tsk tsk; terrible style! port)
From the fine manual:
Note: start-up-server-and-mp is implemented only on Unix/Linux/Mac OS platforms.
Which means the current CREATE-SWANK-SERVER for lispworks will fail on Windows. Now, I hate windows as much as the next guy, but this seems unnecessarily rude; I suggest one of the following things:
* revert to just comm:start-up-server. This has the advantage that many users either need to start up MP themselves later on. Once comm:start-up-server-and-mp runs, you can no longer launch MP yourself from a chosen entry point. What was the rationale of using x-and-mp?
* #+Unix #-Unix the code to only use x-an-mp on unices
* do your own checks, e.g. (if MP::*MULTIPROCESSING* ; I coulda sworn this used to be public in 4.2 (comm:start-up-server ...) (comm:start-up-server-and-mp ...))
I'm not sure which is the best solution because I'm not sure why it currently uses comm:start-up-server-and-mp.
This may or may not be related to another problem I'm having, which is all works fine when I manually evaluate (load "/home/ap/Lisp/slime/swank-loader.lisp") (swank::create-swank-server 4005)
in a running lispworks and connecting via slime-connect, but this fails when the above forms are in my .lispworks file and I try C-u M-x slime [lisp?] my-lispworks-image
The process shows up:
XOS 5 > (mp:ps) #<MP:PROCESS Name "Swank Request Processor" Priority 3 State "Waiting for connection"> #<MP:PROCESS Name "Top level loop" Priority 0 State "Running"> #<MP:PROCESS Name "The idle process" Priority -8388608 State "Running"> NIL
XOS 6 >
But noone is actually listening on the socket. (as can be verified with telnet). Clues?
Thanks,