From e9a50a8efe55910de03ba927906865445a6bb794 Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Thu, 14 Dec 2017 21:51:30 +0100 Subject: [PATCH 1/3] Remove obsolete/deprecated stuff This cleans up the mess of variables from "scheme" and "chicken.base" that were aliased at toplevel, as there should be nothing relying on that anymore. Also add some explicit (import scheme) to non-module files, because we're using -explicit-use to compile most files, this is required even though these are not inside a module. Finally, remove support for direct lambdas in define-syntax or let-syntax, in favour of requiring wrapped transformer objects as created by [ei]r-macro-transformer and syntax-rules. --- NEWS | 2 + chicken-ffi-syntax.scm | 3 +- chicken-syntax.scm | 2 +- chicken.base.import.scm | 5 +- chicken.h | 7 -- chicken.import.scm | 8 -- chicken.syntax.import.scm | 5 +- csi.scm | 1 - eval.scm | 10 --- expand.scm | 8 +- library.scm | 203 ---------------------------------------------- modules.scm | 10 +-- profiler.scm | 2 +- scheduler.scm | 2 +- tests/compiler-tests.scm | 11 +-- 15 files changed, 24 insertions(+), 255 deletions(-) diff --git a/NEWS b/NEWS index ff67301c..3a51fca0 100644 --- a/NEWS +++ b/NEWS @@ -88,6 +88,8 @@ - Syntax expander - Removed support for (define-syntax (foo e r c) ...), which was undocumented and not officially supported anyway. + - Removed support for normal "lambda" forms as syntax transformers, + which has been deprecated since 4.8.0. - define and friends are now aggressively rejected in "expression contexts" (i.e., anywhere but toplevel or as internal defines). - define-record and define-record-type now create record types diff --git a/chicken-ffi-syntax.scm b/chicken-ffi-syntax.scm index 255c9c93..f628723f 100644 --- a/chicken-ffi-syntax.scm +++ b/chicken-ffi-syntax.scm @@ -36,7 +36,8 @@ (no-bound-checks) (no-procedure-checks)) -(import chicken.base +(import scheme + chicken.base chicken.format chicken.internal chicken.platform diff --git a/chicken-syntax.scm b/chicken-syntax.scm index 715e45d3..4801431c 100644 --- a/chicken-syntax.scm +++ b/chicken-syntax.scm @@ -39,7 +39,7 @@ (no-bound-checks) (no-procedure-checks)) -(import chicken (chicken internal)) +(import chicken scheme (chicken internal)) (include "common-declarations.scm") (include "mini-srfi-1.scm") diff --git a/chicken.base.import.scm b/chicken.base.import.scm index 5bf90d2e..05881f0b 100644 --- a/chicken.base.import.scm +++ b/chicken.base.import.scm @@ -74,7 +74,4 @@ (vector-resize . chicken.base#vector-resize) (void . chicken.base#void) (warning . chicken.base#warning)) - ;; OBSOLETE: This can be removed after bootstrapping - (if (##sys#symbol-has-toplevel-binding? '##sys#chicken.base-macro-environment) - ##sys#chicken.base-macro-environment - ##sys#chicken-macro-environment)) + ##sys#chicken.base-macro-environment) diff --git a/chicken.h b/chicken.h index 8005bec3..5fa8a8cd 100644 --- a/chicken.h +++ b/chicken.h @@ -2146,13 +2146,6 @@ C_mutate(C_word *slot, C_word val) else return *slot = val; } -inline static C_word -C_mutate2(C_word *slot, C_word val) /* OBSOLETE */ -{ - if(!C_immediatep(val)) return C_mutate_slot(slot, val); - else return *slot = val; -} - inline static C_word C_permanentp(C_word x) { return C_mk_bool(!C_immediatep(x) && diff --git a/chicken.import.scm b/chicken.import.scm index 41b5ace6..610cfe38 100644 --- a/chicken.import.scm +++ b/chicken.import.scm @@ -23,14 +23,6 @@ ; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ; POSSIBILITY OF SUCH DAMAGE. -;; OBSOLETE: This can be removed after bootstrapping (needed for -;; macros and constant evaluation in compiler) -(if (not (##sys#symbol-has-toplevel-binding? 'chicken.base#add1)) - (begin - (set! chicken.base#add1 add1) - (set! chicken.base#sub1 sub1) - (set! chicken.base#symbol-append symbol-append))) - (##sys#register-primitive-module 'chicken '((abort . chicken.condition#abort) diff --git a/chicken.syntax.import.scm b/chicken.syntax.import.scm index 12120427..1302e008 100644 --- a/chicken.syntax.import.scm +++ b/chicken.syntax.import.scm @@ -36,7 +36,4 @@ (syntax-error . chicken.syntax#syntax-error) (er-macro-transformer . chicken.syntax#er-macro-transformer) (ir-macro-transformer . chicken.syntax#ir-macro-transformer)) - ;; OBSOLETE: This can be removed after bootstrapping - (if (##sys#symbol-has-toplevel-binding? '##sys#chicken.syntax-macro-environment) - ##sys#chicken.syntax-macro-environment - ##sys#chicken-macro-environment)) + ##sys#chicken.syntax-macro-environment) diff --git a/csi.scm b/csi.scm index 15a9cdf1..883d4a4d 100644 --- a/csi.scm +++ b/csi.scm @@ -980,7 +980,6 @@ EOF (program-name (cadr script)) (command-line-arguments (cddr script)) ;; 2012-10-04 (felix) left 'script activated to avoid breaking too much code - (register-feature! 'script) ; DEPRECATED (register-feature! 'chicken-script) (set-cdr! (cdr script) '()) (when ##sys#windows-platform diff --git a/eval.scm b/eval.scm index 418875d1..0d577c0d 100644 --- a/eval.scm +++ b/eval.scm @@ -866,11 +866,6 @@ 'null-environment "unsupported null environment version" n)))))) - -;;; OBSOLETE: Remove after bootstrapping. Import libraries emitted by -;;; old compilers will still refer to chicken.eval#eval. -(define chicken.eval#eval scheme#eval) - ) ; eval module @@ -1374,11 +1369,6 @@ fname) ) ) (else (loop (##sys#slot paths 1))) ) ) ) ) ) ) -;;; OBSOLETE: Remove after bootstrapping. Import libraries loaded -;;; from an old compiler's library path will still refer to -;;; chicken.load#load in their compiled module registration code. -(define chicken.load#load scheme#load) - ) ; chicken.load diff --git a/expand.scm b/expand.scm index 9b837bb8..ca9ba693 100644 --- a/expand.scm +++ b/expand.scm @@ -178,9 +178,9 @@ (define ##sys#chicken.base-macro-environment '()) ; used later in chicken.base.import.scm (define (##sys#ensure-transformer t #!optional loc) - (cond ((procedure? t) (##sys#slot (##sys#er-transformer t) 1)) ; DEPRECATED - ((##sys#structure? t 'transformer) (##sys#slot t 1)) - (else (##sys#error loc "expected syntax-transformer, but got" t)))) + (if (##sys#structure? t 'transformer) + (##sys#slot t 1) + (##sys#error loc "expected syntax-transformer, but got" t))) (define (##sys#extend-macro-environment name se transformer) (let ((me (##sys#macro-environment)) @@ -961,7 +961,7 @@ ) ; chicken.syntax module -(import chicken chicken.blob chicken.syntax chicken.internal) +(import scheme chicken chicken.blob chicken.syntax chicken.internal) ;;; Macro definitions: diff --git a/library.scm b/library.scm index bb0bce73..2049ef42 100644 --- a/library.scm +++ b/library.scm @@ -4838,9 +4838,6 @@ EOF (lambda () (cleanup-before-exit)))) -;; OBSOLETE: remove after bootstrapping -(define ##sys#implicit-exit-handler chicken.base#implicit-exit-handler) - (define ##sys#reset-handler ; Exposed by chicken.repl (make-parameter (lambda () @@ -6233,203 +6230,3 @@ EOF (##core#primitive "C_return_to_host")) ) ; chicken.platform - - - -;;; OBSOLETE: Remove after bootstrapping. This ensures the unprefixed -;;; names are still bound to the correct definitions, because "scheme" -;;; in the bootstrapping compiler's modules.scm may still refer to -;;; them by the unprefixed name. -(##sys#setslot 'not 0 scheme#not) -(##sys#setslot 'boolean? 0 scheme#boolean?) -(##sys#setslot 'eq? 0 scheme#eq?) -(##sys#setslot 'eqv? 0 scheme#eqv?) -(##sys#setslot 'equal? 0 scheme#equal?) -(##sys#setslot 'pair? 0 scheme#pair?) -(##sys#setslot 'cons 0 scheme#cons) -(##sys#setslot 'car 0 scheme#car) -(##sys#setslot 'cdr 0 scheme#cdr) -(##sys#setslot 'caar 0 scheme#caar) -(##sys#setslot 'cadr 0 scheme#cadr) -(##sys#setslot 'cdar 0 scheme#cdar) -(##sys#setslot 'cddr 0 scheme#cddr) -(##sys#setslot 'caaar 0 scheme#caaar) -(##sys#setslot 'caadr 0 scheme#caadr) -(##sys#setslot 'cadar 0 scheme#cadar) -(##sys#setslot 'caddr 0 scheme#caddr) -(##sys#setslot 'cdaar 0 scheme#cdaar) -(##sys#setslot 'cdadr 0 scheme#cdadr) -(##sys#setslot 'cddar 0 scheme#cddar) -(##sys#setslot 'cdddr 0 scheme#cdddr) -(##sys#setslot 'caaaar 0 scheme#caaaar) -(##sys#setslot 'caaadr 0 scheme#caaadr) -(##sys#setslot 'caadar 0 scheme#caadar) -(##sys#setslot 'caaddr 0 scheme#caaddr) -(##sys#setslot 'cadaar 0 scheme#cadaar) -(##sys#setslot 'cadadr 0 scheme#cadadr) -(##sys#setslot 'caddar 0 scheme#caddar) -(##sys#setslot 'cadddr 0 scheme#cadddr) -(##sys#setslot 'cdaaar 0 scheme#cdaaar) -(##sys#setslot 'cdaadr 0 scheme#cdaadr) -(##sys#setslot 'cdadar 0 scheme#cdadar) -(##sys#setslot 'cdaddr 0 scheme#cdaddr) -(##sys#setslot 'cddaar 0 scheme#cddaar) -(##sys#setslot 'cddadr 0 scheme#cddadr) -(##sys#setslot 'cdddar 0 scheme#cdddar) -(##sys#setslot 'cddddr 0 scheme#cddddr) -(##sys#setslot 'set-car! 0 scheme#set-car!) -(##sys#setslot 'set-cdr! 0 scheme#set-cdr!) -(##sys#setslot 'null? 0 scheme#null?) -(##sys#setslot 'list? 0 scheme#list?) -(##sys#setslot 'list 0 scheme#list) -(##sys#setslot 'length 0 scheme#length) -(##sys#setslot 'list-tail 0 scheme#list-tail) -(##sys#setslot 'list-ref 0 scheme#list-ref) -(##sys#setslot 'append 0 scheme#append) -(##sys#setslot 'reverse 0 scheme#reverse) -(##sys#setslot 'memq 0 scheme#memq) -(##sys#setslot 'memv 0 scheme#memv) -(##sys#setslot 'member 0 scheme#member) -(##sys#setslot 'assq 0 scheme#assq) -(##sys#setslot 'assv 0 scheme#assv) -(##sys#setslot 'assoc 0 scheme#assoc) -(##sys#setslot 'symbol? 0 scheme#symbol?) -(##sys#setslot 'symbol->string 0 scheme#symbol->string) -(##sys#setslot 'string->symbol 0 scheme#string->symbol) -(##sys#setslot 'number? 0 scheme#number?) -(##sys#setslot 'integer? 0 scheme#integer?) -(##sys#setslot 'exact? 0 scheme#exact?) -(##sys#setslot 'real? 0 scheme#real?) -(##sys#setslot 'complex? 0 scheme#complex?) -(##sys#setslot 'inexact? 0 scheme#inexact?) -(##sys#setslot 'rational? 0 scheme#rational?) -(##sys#setslot 'zero? 0 scheme#zero?) -(##sys#setslot 'odd? 0 scheme#odd?) -(##sys#setslot 'even? 0 scheme#even?) -(##sys#setslot 'positive? 0 scheme#positive?) -(##sys#setslot 'negative? 0 scheme#negative?) -(##sys#setslot 'max 0 scheme#max) -(##sys#setslot 'min 0 scheme#min) -(##sys#setslot '+ 0 scheme#+) -(##sys#setslot '- 0 scheme#-) -(##sys#setslot '* 0 scheme#*) -(##sys#setslot '/ 0 scheme#/) -(##sys#setslot '= 0 scheme#=) -(##sys#setslot '> 0 scheme#>) -(##sys#setslot '< 0 scheme#<) -(##sys#setslot '>= 0 scheme#>=) -(##sys#setslot '<= 0 scheme#<=) -(##sys#setslot 'quotient 0 scheme#quotient) -(##sys#setslot 'remainder 0 scheme#remainder) -(##sys#setslot 'modulo 0 scheme#modulo) -(##sys#setslot 'gcd 0 scheme#gcd) -(##sys#setslot 'lcm 0 scheme#lcm) -(##sys#setslot 'abs 0 scheme#abs) -(##sys#setslot 'floor 0 scheme#floor) -(##sys#setslot 'ceiling 0 scheme#ceiling) -(##sys#setslot 'truncate 0 scheme#truncate) -(##sys#setslot 'round 0 scheme#round) -(##sys#setslot 'rationalize 0 scheme#rationalize) -(##sys#setslot 'exact->inexact 0 scheme#exact->inexact) -(##sys#setslot 'inexact->exact 0 scheme#inexact->exact) -(##sys#setslot 'exp 0 scheme#exp) -(##sys#setslot 'log 0 scheme#log) -(##sys#setslot 'expt 0 scheme#expt) -(##sys#setslot 'sqrt 0 scheme#sqrt) -(##sys#setslot 'sin 0 scheme#sin) -(##sys#setslot 'cos 0 scheme#cos) -(##sys#setslot 'tan 0 scheme#tan) -(##sys#setslot 'asin 0 scheme#asin) -(##sys#setslot 'acos 0 scheme#acos) -(##sys#setslot 'atan 0 scheme#atan) -(##sys#setslot 'number->string 0 scheme#number->string) -(##sys#setslot 'string->number 0 scheme#string->number) -(##sys#setslot 'char? 0 scheme#char?) -(##sys#setslot 'char=? 0 scheme#char=?) -(##sys#setslot 'char>? 0 scheme#char>?) -(##sys#setslot 'char=? 0 scheme#char>=?) -(##sys#setslot 'char<=? 0 scheme#char<=?) -(##sys#setslot 'char-ci=? 0 scheme#char-ci=?) -(##sys#setslot 'char-ci? 0 scheme#char-ci>?) -(##sys#setslot 'char-ci>=? 0 scheme#char-ci>=?) -(##sys#setslot 'char-ci<=? 0 scheme#char-ci<=?) -(##sys#setslot 'char-alphabetic? 0 scheme#char-alphabetic?) -(##sys#setslot 'char-whitespace? 0 scheme#char-whitespace?) -(##sys#setslot 'char-numeric? 0 scheme#char-numeric?) -(##sys#setslot 'char-upper-case? 0 scheme#char-upper-case?) -(##sys#setslot 'char-lower-case? 0 scheme#char-lower-case?) -(##sys#setslot 'char-upcase 0 scheme#char-upcase) -(##sys#setslot 'char-downcase 0 scheme#char-downcase) -(##sys#setslot 'char->integer 0 scheme#char->integer) -(##sys#setslot 'integer->char 0 scheme#integer->char) -(##sys#setslot 'string? 0 scheme#string?) -(##sys#setslot 'string=? 0 scheme#string=?) -(##sys#setslot 'string>? 0 scheme#string>?) -(##sys#setslot 'string=? 0 scheme#string>=?) -(##sys#setslot 'string<=? 0 scheme#string<=?) -(##sys#setslot 'string-ci=? 0 scheme#string-ci=?) -(##sys#setslot 'string-ci? 0 scheme#string-ci>?) -(##sys#setslot 'string-ci>=? 0 scheme#string-ci>=?) -(##sys#setslot 'string-ci<=? 0 scheme#string-ci<=?) -(##sys#setslot 'make-string 0 scheme#make-string) -(##sys#setslot 'string-length 0 scheme#string-length) -(##sys#setslot 'string-ref 0 scheme#string-ref) -(##sys#setslot 'string-set! 0 scheme#string-set!) -(##sys#setslot 'string-append 0 scheme#string-append) -(##sys#setslot 'string-copy 0 scheme#string-copy) -(##sys#setslot 'string->list 0 scheme#string->list) -(##sys#setslot 'list->string 0 scheme#list->string) -(##sys#setslot 'substring 0 scheme#substring) -(##sys#setslot 'string-fill! 0 scheme#string-fill!) -(##sys#setslot 'vector? 0 scheme#vector?) -(##sys#setslot 'make-vector 0 scheme#make-vector) -(##sys#setslot 'vector-ref 0 scheme#vector-ref) -(##sys#setslot 'vector-set! 0 scheme#vector-set!) -(##sys#setslot 'string 0 scheme#string) -(##sys#setslot 'vector 0 scheme#vector) -(##sys#setslot 'vector-length 0 scheme#vector-length) -(##sys#setslot 'vector->list 0 scheme#vector->list) -(##sys#setslot 'list->vector 0 scheme#list->vector) -(##sys#setslot 'vector-fill! 0 scheme#vector-fill!) -(##sys#setslot 'procedure? 0 scheme#procedure?) -(##sys#setslot 'map 0 scheme#map) -(##sys#setslot 'for-each 0 scheme#for-each) -(##sys#setslot 'apply 0 scheme#apply) -(##sys#setslot 'force 0 scheme#force) -(##sys#setslot 'call-with-current-continuation 0 scheme#call-with-current-continuation) -(##sys#setslot 'input-port? 0 scheme#input-port?) -(##sys#setslot 'output-port? 0 scheme#output-port?) -(##sys#setslot 'current-input-port 0 scheme#current-input-port) -(##sys#setslot 'current-output-port 0 scheme#current-output-port) -(##sys#setslot 'call-with-input-file 0 scheme#call-with-input-file) -(##sys#setslot 'call-with-output-file 0 scheme#call-with-output-file) -(##sys#setslot 'open-input-file 0 scheme#open-input-file) -(##sys#setslot 'open-output-file 0 scheme#open-output-file) -(##sys#setslot 'close-input-port 0 scheme#close-input-port) -(##sys#setslot 'close-output-port 0 scheme#close-output-port) -(##sys#setslot 'read 0 scheme#read) -(##sys#setslot 'read-char 0 scheme#read-char) -(##sys#setslot 'peek-char 0 scheme#peek-char) -(##sys#setslot 'write 0 scheme#write) -(##sys#setslot 'display 0 scheme#display) -(##sys#setslot 'write-char 0 scheme#write-char) -(##sys#setslot 'newline 0 scheme#newline) -(##sys#setslot 'eof-object? 0 scheme#eof-object?) -(##sys#setslot 'with-input-from-file 0 scheme#with-input-from-file) -(##sys#setslot 'with-output-to-file 0 scheme#with-output-to-file) -(##sys#setslot 'char-ready? 0 scheme#char-ready?) -(##sys#setslot 'imag-part 0 scheme#imag-part) -(##sys#setslot 'real-part 0 scheme#real-part) -(##sys#setslot 'make-rectangular 0 scheme#make-rectangular) -(##sys#setslot 'make-polar 0 scheme#make-polar) -(##sys#setslot 'angle 0 scheme#angle) -(##sys#setslot 'magnitude 0 scheme#magnitude) -(##sys#setslot 'numerator 0 scheme#numerator) -(##sys#setslot 'denominator 0 scheme#denominator) -(##sys#setslot 'dynamic-wind 0 scheme#dynamic-wind) -(##sys#setslot 'values 0 scheme#values) -(##sys#setslot 'call-with-values 0 scheme#call-with-values) diff --git a/modules.scm b/modules.scm index a5521cbd..9e9af19e 100644 --- a/modules.scm +++ b/modules.scm @@ -34,11 +34,6 @@ mark-imported-symbols match-functor-argument merge-se module-indirect-exports module-rename register-undefined)) -(include "common-declarations.scm") -(include "mini-srfi-1.scm") - -(define-syntax d (syntax-rules () ((_ . _) (void)))) - (import scheme chicken.base chicken.internal @@ -46,6 +41,11 @@ chicken.platform chicken.syntax) +(include "common-declarations.scm") +(include "mini-srfi-1.scm") + +(define-syntax d (syntax-rules () ((_ . _) (void)))) + (define-alias dd d) (define-alias dm d) (define-alias dx d) diff --git a/profiler.scm b/profiler.scm index 3ec52c1d..ea371d9f 100644 --- a/profiler.scm +++ b/profiler.scm @@ -31,7 +31,7 @@ (unsafe) (disable-interrupts)) -(import chicken) +(import chicken.base chicken.fixnum scheme) (include "common-declarations.scm") diff --git a/scheduler.scm b/scheduler.scm index a6440001..220e0a81 100644 --- a/scheduler.scm +++ b/scheduler.scm @@ -133,7 +133,7 @@ inline static void C_fdset_add(int fd, int input, int output) { EOF ) ) -(import chicken chicken.format) +(import scheme chicken chicken.format) (include "common-declarations.scm") diff --git a/tests/compiler-tests.scm b/tests/compiler-tests.scm index bd150fe2..54bda8b4 100644 --- a/tests/compiler-tests.scm +++ b/tests/compiler-tests.scm @@ -367,11 +367,12 @@ ;; #1059: foreign vector types use wrong lolevel accessors, causing ;; paranoid DEBUGBUILD assertions to fail. (define-syntax srfi-4-vector-length - (lambda (e r c) - (let* ((type (symbol->string (strip-syntax (cadr e)))) - (base-type (string-translate* type '(("nonnull-" . "")))) - (length-procedure-name (string-append base-type "-length"))) - `(,(string->symbol length-procedure-name) ,(caddr e))))) + (er-macro-transformer + (lambda (e r c) + (let* ((type (symbol->string (strip-syntax (cadr e)))) + (base-type (string-translate* type '(("nonnull-" . "")))) + (length-procedure-name (string-append base-type "-length"))) + `(,(string->symbol length-procedure-name) ,(caddr e)))))) (define-syntax s4v-sum (syntax-rules () -- 2.11.0