diff --git a/collects/racket/kernel.rkt b/collects/racket/kernel.rkt index 824fa3d578..1fdd4f2d6c 100644 --- a/collects/racket/kernel.rkt +++ b/collects/racket/kernel.rkt @@ -1,2 +1,5 @@ (module kernel '#%kernel - (#%provide (all-from '#%kernel))) + (#%provide (all-from '#%kernel)) + + (module reader syntax/module-reader + #:language 'racket/kernel)) diff --git a/collects/racket/kernel/init.rkt b/collects/racket/kernel/init.rkt new file mode 100644 index 0000000000..d81f185a02 --- /dev/null +++ b/collects/racket/kernel/init.rkt @@ -0,0 +1,5 @@ +#lang racket/kernel +(#%require "../private/top-int.rkt") + +(#%provide (all-from racket/kernel) + #%top-interaction) diff --git a/collects/racket/private/pre-base.rkt b/collects/racket/private/pre-base.rkt index 980b1633eb..c2573d5bb8 100644 --- a/collects/racket/private/pre-base.rkt +++ b/collects/racket/private/pre-base.rkt @@ -14,22 +14,11 @@ "map.rkt" ; shadows #%kernel bindings "kernstruct.rkt" "norm-arity.rkt" + "top-int.rkt" '#%builtin ; so it's attached (for-syntax "kw.rkt" "norm-define.rkt")) - (define-syntaxes (#%top-interaction) - (lambda (stx) - (if (eq? 'top-level (syntax-local-context)) - 'ok - (raise-syntax-error - #f - "not at top level" - stx)) - (if (symbol? (syntax-e stx)) - (raise-syntax-error #f "bad syntax" stx) - (datum->syntax stx (cdr (syntax-e stx)) stx stx)))) - (define-values (new-apply-proc) (make-keyword-procedure (lambda (kws kw-args proc args . rest) diff --git a/collects/racket/private/top-int.rkt b/collects/racket/private/top-int.rkt new file mode 100644 index 0000000000..9ff170f5be --- /dev/null +++ b/collects/racket/private/top-int.rkt @@ -0,0 +1,17 @@ +(module pre-base '#%kernel + (#%require (for-syntax '#%kernel)) + + (#%provide #%top-interaction) + + (define-syntaxes (#%top-interaction) + (lambda (stx) + (if (eq? 'top-level (syntax-local-context)) + 'ok + (raise-syntax-error + #f + "not at top level" + stx)) + (if (symbol? (syntax-e stx)) + (raise-syntax-error #f "bad syntax" stx) + (datum->syntax stx (cdr (syntax-e stx)) stx stx))))) + diff --git a/collects/scribblings/reference/kernel.scrbl b/collects/scribblings/reference/kernel.scrbl index 669c26ebd6..e1beb4fef6 100644 --- a/collects/scribblings/reference/kernel.scrbl +++ b/collects/scribblings/reference/kernel.scrbl @@ -9,7 +9,7 @@ @title{Kernel Forms and Functions} -@defmodule*[(racket/kernel)]{The @racketmodname[racket/kernel] library +@defmodulelang[racket/kernel]{The @racketmodname[racket/kernel] library is a @tech{phase-collapsing} module that provides a minimal set of syntactic forms and functions.} @@ -35,3 +35,12 @@ functions that are not exported by @racketmodname[racket/base] because @racketmodname[racket/base] exports improved variants. The exact set of function bindings exported by @racket[racket/kernel] is unspecified and subject to change across versions. + + +@section[#:style '(hidden toc-hidden)]{} + +@defmodule[racket/kernel/init]{The @racketmodname[racket/kernel/init] +library re-provides all of @racketmodname[racket/kernel]. It also +provides @racket[#%top-interaction], which makes +@racketmodname[racket/kernel/init] useful with the @Flag{I} +command-line flag for @exec{racket}.} diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index e9c4264719..15f9daac0e 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -1,6 +1,8 @@ Version 5.3.3.6 Added "phase-collapse" module inference and instantiation compiler/zo-structs: added flags field to mod +racket/kernel: removed #%top-interaction +racket/kernel/init: added Version 5.3.3.4 Added impersonator-ephemeron