Hi folks!
I have installed clpython recently and encountered some problems
while playing around with the provided interpreter modes.
Here is a sample SLIME session
--------------------------------------------------------------------------------
; SLIME 2011-01-28
CL-USER> (ql:quickload :clpython)
To load "clpython":
Load 1 ASDF system:
clpython
; Loading "clpython"
.........
CLPython quick start guide:
Run a string of Python code: (CLPYTHON:RUN "for i in
range(4): print i")
Run a Python file: (CLPYTHON:RUN
#p"~/example/foo.py")
Start the Python "interpreter" (REPL): (CLPYTHON.APP.REPL:REPL)
To start mixed Python/Lisp input mode:
(CLPYTHON.PARSER:ENTER-MIXED-LISP-PYTHON-SYNTAX)
Run the test suite: (ASDF:OPERATE
'ASDF:TEST-OP
:CLPYTHON)
(:CLPYTHON)
CL-USER> (CLPYTHON.PARSER:ENTER-MIXED-LISP-PYTHON-SYNTAX)
;; The mixed Lisp/Python syntax mode is now active: custom
*readtable* is set.
;; Python variables will be interned in the #<PACKAGE
"COMMON-LISP-USER">.
;; To exit the mixed mode:
(CLPYTHON.PARSER:EXIT-MIXED-LISP-PYTHON-SYNTAX)
; No value
CL-USER> (+ 2 3)
--------------------------------------------------------------------------------
At this point the SLIME doesn't return back!
I tested it also using a python expression. The same behaviour!
C-c C-c drops the session into dubugger which in turn is not
responsive!
To terminate it the whole process must be killed.
Tab completion also leads to a hanging emacs!
###############################################################################
In a linux console it behaves differently but not exactly
as described in the documentation. Here is a sample session:
--------------------------------------------------------------------------------
$ rlwrap sbcl
This is SBCL 1.0.47, an implementation of ANSI Common Lisp.
More information about SBCL is available at
<http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no
warranty.
It is mostly in the public domain; some portions are provided
under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (ql:quickload :clpython)
To load "clpython":
Load 1 ASDF system:
clpython
; Loading "clpython"
.........
CLPython quick start guide:
Run a string of Python code: (CLPYTHON:RUN "for i in
range(4): print i")
Run a Python file: (CLPYTHON:RUN
#p"~/example/foo.py")
Start the Python "interpreter" (REPL): (CLPYTHON.APP.REPL:REPL)
To start mixed Python/Lisp input mode:
(CLPYTHON.PARSER:ENTER-MIXED-LISP-PYTHON-SYNTAX)
Run the test suite: (ASDF:OPERATE
'ASDF:TEST-OP :CLPYTHON)
(:CLPYTHON)
* (CLPYTHON.PARSER:ENTER-MIXED-LISP-PYTHON-SYNTAX)
;; The mixed Lisp/Python syntax mode is now active: custom
*readtable* is set.
;; Python variables will be interned in the #<PACKAGE
"COMMON-LISP-USER">.
;; To exit the mixed mode:
(CLPYTHON.PARSER:EXIT-MIXED-LISP-PYTHON-SYNTAX)
* (+ 2 3)
5
* def double (n):
return 2*n
#<CLOSURE (FLET CLPYTHON::|__main__.__main__/double|)
{1002F8D129}>
* double (4)
8
* (double 4)
; in: DOUBLE 4
; (DOUBLE 4)
;
; caught STYLE-WARNING:
; undefined function: DOUBLE
;
; compilation unit finished
; Undefined function:
; DOUBLE
; caught 1 STYLE-WARNING condition
debugger invoked on a UNDEFINED-FUNCTION in thread #<THREAD
"initial
thread" RUNNING
{1002980D01}>:
The function SB-ALIEN:DOUBLE is undefined.
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(SB-KERNEL::UNDEFINED-FUN-ERROR-HANDLER
#<unavailable argument>
#.(SB-SYS:INT-SAP #X7FFFF69F7480)
#<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X7FFFF69F7000 :TYPE (*
(STRUCT
SB-VM::OS-CONTEXT-T-STRUCT))>
(21))
0] 0
*
--------------------------------------------------------------------------------
The evaluation of "(double 4)" fails.
################################################################################
There is also a problem with python repl:
; SLIME 2011-01-28
CL-USER> (ql:quickload :clpython)
To load "clpython":
Load 1 ASDF system:
clpython
; Loading "clpython"
.........
CLPython quick start guide:
Run a string of Python code: (CLPYTHON:RUN "for i in
range(4): print i")
Run a Python file: (CLPYTHON:RUN
#p"~/example/foo.py")
Start the Python "interpreter" (REPL): (CLPYTHON.APP.REPL:REPL)
To start mixed Python/Lisp input mode:
(CLPYTHON.PARSER:ENTER-MIXED-LISP-PYTHON-SYNTAX)
Run the test suite: (ASDF:OPERATE
'ASDF:TEST-OP
:CLPYTHON)
(:CLPYTHON)
CL-USER> (push "/usr/lib/python2.7"
*clpython-module-search-paths*)
("/usr/lib/python2.7")
CL-USER> (clpython:repl)
Welcome to CLPython, an implementation of Python in Common Lisp.
Running on: SBCL 1.0.47
REPL shortcuts: `:q' = quit, `:h' = help.
Using 1 default module search paths set in
*CLPYTHON-MODULE-SEARCH-PATHS*
>>> import os
;; Parsing #P"/usr/lib/python2.7/os.py" into
#P"/usr/lib/python2.7/os.py.lisp"
;; Error occured while reading input with the Python readtable:
;; UnexpectedEofError: Unexpected end of file (line 752).
;; Standard IO syntax (*readtable* etc) has been activated to
enable debugging.
--- Debugger window ----------------------------------
UnexpectedEofError: Unexpected end of file (line 752).
[Condition of type
CLPYTHON.USER.BUILTIN.TYPE.EXCEPTION:|UnexpectedEofError|]
Restarts:
0: [RETRY] Retry evaluating this top-level form in module
`__main__'
1: [ERROR] Skip this top-level form in module `__main__'
2: [RETRY-REPL-EVAL] Retry the expression: "import os"
3: [RETURN-PYTHON-TOPLEVEL] Return to Python top level
4: [RETRY] Retry SLIME REPL evaluation request.
5: [*ABORT] Return to SLIME's top level.
--more--
Just for testing purpose I have commented the following code block
in os.py
-----------------------------------------------
.....
742 if not _exists("urandom"):
743 def urandom(n):
744 """urandom(n) -> str
745
746 Return a string of n random bytes suitable for
cryptographic use.
747
748 """
749 try:
750 _urandomfd = open("/dev/urandom",
O_RDONLY)
751 except (OSError, IOError):
752 raise NotImplementedError("/dev/urandom
(or equivalent) not found")
753 try:
754 bs = b""
755 while n > len(bs):
756 bs += read(_urandomfd, n - len(bs))
757 finally:
758 close(_urandomfd)
759 return bs
-------------------------------------------------
and tried the "import os" again and got the same error:
--- Debugger window ----------------------------------
UnexpectedEofError: Unexpected end of file.
[Condition of type
CLPYTHON.USER.BUILTIN.TYPE.EXCEPTION:|UnexpectedEofError|]
Restarts:
0: [RETRY] Retry evaluating this top-level form in module
`__main__'
1: [ERROR] Skip this top-level form in module `__main__'
2: [RETRY-REPL-EVAL] Retry the expression: "import os"
3: [RETURN-PYTHON-TOPLEVEL] Return to Python top level
4: [RETRY] Retry SLIME REPL evaluation request.
5: [*ABORT] Return to SLIME's top level.
--more--
The situation under Clozure is even worse! The mixed interpreter
doesn't work
neither in SLIME nor directly in linux console.The python repl
behaviour is
similar to that of SBCL.
I'm using Clozure 1.6-r14468M and SBCL 1.0.47 on Linux 64bit.
The installed version of clpython ist "clpython-20110219-git".
Are these known issues or am I missing something here?
Any feedback is very much appreciated!
Regards
Nik