@@ -517,6 +517,50 @@ (define-public racket-vm-bc
This package is the normal implementation of Racket BC with a precise garbage
collector, 3M (``Moving Memory Manager'').")))
+
+(define-public racket-vm-cs
+ (package
+ (inherit racket-vm-bc)
+ (name "racket-vm-cs")
+ (inputs
+ (modify-inputs (package-inputs racket-vm-cgc)
+ (prepend zlib lz4)
+ (delete "libffi")))
+ (native-inputs
+ (modify-inputs (package-native-inputs racket-vm-cgc)
+ (delete "libtool")
+ (prepend chez-scheme-for-racket
+ chez-nanopass-bootstrap
+ racket-vm-bc)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments racket-vm-cgc)
+ ((#:phases those-phases #~%standard-phases)
+ #~(modify-phases #$those-phases
+ (add-after 'unpack 'unpack-nanopass+stex
+ (lambda args
+ (with-directory-excursion "racket/src/ChezScheme"
+ #$unpack-nanopass+stex)))))
+ ((#:configure-flags _ '())
+ #~(cons* "--enable-csonly"
+ "--enable-libz"
+ "--enable-lz4"
+ (string-append "--enable-scheme="
+ #$(this-package-native-input
+ "chez-scheme-for-racket")
+ "/bin/scheme")
+ #$(racket-vm-common-configure-flags)))))
+ (synopsis "Racket CS implementation")
+ (description "The Racket CS implementation, which uses ``Chez Scheme'' as
+its core compiler and runtime system, has been the default Racket VM
+implemetation since Racket 8.0. It performs better than the Racket BC
+implementation for most programs.
+
+Using the Racket VM packages directly is not recommended: instead, install the
+@code{racket-minimal} or @code{racket} packages.")
+ ;; https://download.racket-lang.org/license.html
+ ;; The LGPL components are only used by Racket BC.
+ (license (list license:asl2.0 license:expat))))
+
;;
;; Chez Scheme:
;;