marcomaggi/vicare — pull request #36 by sunderroy (2012-09-21 22:22:43+00:00)
Title: Devel

1. ikarus.compiler.source-optimizer.ss

(string) and (vector) are no longer optimised away to (quote "") and (quote #()). This was an optimisation that changed the semantics of the program:

(define (foo) (string))
(eq? (foo) (foo)) -> #f

(define (foo) (quote ""))
(eq? (foo) (foo)) -> #t

and ironically made certain hand optimisations impossible to express. Consider the following code from Vicare's macro expander:

;; Generate a new string with every procedure call
(define (gen-mark) (string #\m)

;; More efficient version, but does not work when optimised
(define (gen-mark) (string))

2. psyntax.expander.ss

The treatment of internal export and import forms has been fixed: the former now work inside modules, and the later now accept any mixture of module and library names.