[clpython-devel] strange behaviour of python and mixed interpreters

Nitralime nitralime at googlemail.com
Sun Apr 10 14:27:41 UTC 2011


/*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





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/clpython-devel/attachments/20110410/fa19ad39/attachment.html>


More information about the Clpython-devel mailing list