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

Jason Nielsen jdn at math.carleton.ca
Thu Apr 14 22:45:06 UTC 2011


Hi Nik and Willem,

The keyboard locking up when trying to use tab completion is a slime 
issue, see:

https://bugs.launchpad.net/slime/+bug/690424

Cheers,
Jason

On Fri, 15 Apr 2011, Willem Broekema wrote:

> Hi Nik,
> Thanks for trying it out, and for reporting these issues. Enabling the mixed mode sets a custom *readtable* which means all input is
> caught and treated specially. This might very well clash with what Slime expects, I have not tested that. Of course it *should* work
> fine under Slime one day...
> 
> Without testing it, I suppose (double 4) fails because the symbol DOUBLE is unaffected by the "def double ..". The lower-case symbol
> should work: (|double| 4). The docs are based on the behavior in Allegro in Modern mode. Perhaps the mixed-mode should have
> parameters to control case, so cross-referencing Python and Lisp objects by default does "the right thing".
> 
> Thanks again for the reports, I'll work on them.
> 
> - Willem
> 
> 
> On Sun, Apr 10, 2011 at 4:27 PM, Nitralime <nitralime at googlemail.com> wrote:
>       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
> 
>
>        
>        
> 
> 
> _______________________________________________
> clpython-devel mailing list
> clpython-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/clpython-devel
> 
> 
> 
>


More information about the Clpython-devel mailing list