bug#43326: [3.0.x] Regression: Compilation error involving strings

2020-09-11 Thread tomas
On Fri, Sep 11, 2020 at 03:31:24PM +0700, Erik Dominikus wrote:
> Dear author(s) of the Guile 3.0.x compiler,
> 
> Background: I would like to report a problem that I found while trying
> to write a simple web server with get-string-n, sxml simple, and web
> server.
> 
> I have traced and reduced the problem into the minimal example below.
> 
> Some tested versions:
> - affected: 3.0.2 and 3.0.4
> - not affected: 2.0.13
> 
> How to reproduce:
> - Download the attached compile-error.scm into your working directory.
> - Run in Bash: GUILE_AUTO_COMPILE=0 guile -s compile-error.scm
> 
> Expected result: #t
> 
> Actual result: #f
> 
> Thank you.
> 
> Best regards,
> 
> Erik

> ;; GUILE_AUTO_COMPILE=0 guile -s compile-error.scm
> (define code '(lambda ()
> (define a (string #\x #\y))
> (define b (substring/shared a 0 1))
> (string-ref b 0)))
> (define compiled (compile code))
> (define interped (eval code (interaction-environment)))
> (write (equal? (compiled) (interped))) ;; #\nul vs #\x
> (newline)

Interesting: replacing "substring/shared" with just "substring" seems
to "fix" it (FWIW: the compiled version with "substring/shared" returns
"#\nul" (unexpected, for me), whereas the one with just "substring"
returns "#\x" (expected).

Cheers
 - t


signature.asc
Description: Digital signature


bug#43326: [3.0.x] Regression: Compilation error involving strings

2020-09-11 Thread Erik Dominikus
Dear author(s) of the Guile 3.0.x compiler,

Background: I would like to report a problem that I found while trying
to write a simple web server with get-string-n, sxml simple, and web
server.

I have traced and reduced the problem into the minimal example below.

Some tested versions:
- affected: 3.0.2 and 3.0.4
- not affected: 2.0.13

How to reproduce:
- Download the attached compile-error.scm into your working directory.
- Run in Bash: GUILE_AUTO_COMPILE=0 guile -s compile-error.scm

Expected result: #t

Actual result: #f

Thank you.

Best regards,

Erik
;; GUILE_AUTO_COMPILE=0 guile -s compile-error.scm
(define code '(lambda ()
(define a (string #\x #\y))
(define b (substring/shared a 0 1))
(string-ref b 0)))
(define compiled (compile code))
(define interped (eval code (interaction-environment)))
(write (equal? (compiled) (interped))) ;; #\nul vs #\x
(newline)