replace "traditional Racket" references with "Racket BC"
This commit is contained in:
parent
e42dfffa3a
commit
7c256a051d
2
Makefile
2
Makefile
|
@ -246,7 +246,7 @@ native-for-cross:
|
||||||
cd racket/src/build/cross; $(MAKE) reconfigure MORE_CONFIGURE_ARGS="$(MORE_CROSS_CONFIGURE_ARGS)"
|
cd racket/src/build/cross; $(MAKE) reconfigure MORE_CONFIGURE_ARGS="$(MORE_CROSS_CONFIGURE_ARGS)"
|
||||||
cd racket/src/build/cross/racket; $(MAKE)
|
cd racket/src/build/cross/racket; $(MAKE)
|
||||||
|
|
||||||
racket/src/build/cross/Makefile: racket/src/configure racket/src/cfg-racket racket/src/Makefile.in
|
racket/src/build/cross/Makefile: racket/src/configure racket/src/cfg-bc racket/src/Makefile.in
|
||||||
cd racket/src/build/cross; ../../configure $(MORE_CROSS_CONFIGURE_ARGS)
|
cd racket/src/build/cross; ../../configure $(MORE_CROSS_CONFIGURE_ARGS)
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
29
build.md
29
build.md
|
@ -229,25 +229,24 @@ below.
|
||||||
|
|
||||||
The `make cs` target (or `make cs-as-is` for a rebuild, or `nmake
|
The `make cs` target (or `make cs-as-is` for a rebuild, or `nmake
|
||||||
win32-cs` on Windows with Visual Studio) builds a variant of Racket that
|
win32-cs` on Windows with Visual Studio) builds a variant of Racket that
|
||||||
runs on Chez Scheme. By default, the executables for the Racket-on-Chez
|
runs on Chez Scheme. By default, the executables for the Racket CS
|
||||||
variant all have a `cs` or `CS` suffix, and they coexist with a
|
variant all have a `cs` or `CS` suffix, and they coexist with a Racket
|
||||||
traditional Racket build by keeping compiled files in a machine-specific
|
BC build by keeping compiled files in a machine-specific subdirectory of
|
||||||
subdirectory of the `"compiled"` directory. You can remove the `cs`
|
the `"compiled"` directory. You can remove the `cs` suffix and the
|
||||||
suffix and the subdirectory in `"compiled"` by providing
|
subdirectory in `"compiled"` by providing `RACKETCS_SUFFIX=""` to
|
||||||
`RACKETCS_SUFFIX=""` to `make`. (One day, the default for
|
`make`. (One day, the default for `RACKETCS_SUFFIX` will change from
|
||||||
`RACKETCS_SUFFIX` will change from `"cs"` to `""`.)
|
`"cs"` to `""`.)
|
||||||
|
|
||||||
Building Racket on Chez Scheme requires either an existing Racket or pb
|
Building Racket CS requires either an existing Racket or pb (portable
|
||||||
(portable bytecode) boot files for Chez Scheme. By default, pb bootf
|
bytecode) boot files for Chez Scheme. By default, pb boot files are
|
||||||
iles are downloaded from a separate Git repository by `make cs`. If you
|
downloaded from a separate Git repository by `make cs`. If you have
|
||||||
have Racket v7.1 or later, then you can choose instead to bootstrap
|
Racket v7.1 or later, then you can choose instead to bootstrap using
|
||||||
using that Racket implementation with
|
that Racket implementation with
|
||||||
|
|
||||||
`make cs RACKET=racket`
|
`make cs RACKET=racket`
|
||||||
|
|
||||||
Use `make both` to build both traditional Racket and Racket on Chez
|
Use `make both` to build both Racket BC and Racket CS, where packages
|
||||||
Scheme, where packages are updated and documentation is built only once
|
are updated and documentation is built only once (using Racket BC).
|
||||||
(using traditional Racket).
|
|
||||||
|
|
||||||
### 1.7. Even More Instructions: Building Racket Pieces
|
### 1.7. Even More Instructions: Building Racket Pieces
|
||||||
|
|
||||||
|
|
|
@ -210,8 +210,8 @@ If you need even more control over the build, carry on to
|
||||||
The @exec{make cs} target (or @exec{make cs-as-is} for a rebuild, or
|
The @exec{make cs} target (or @exec{make cs-as-is} for a rebuild, or
|
||||||
@exec{nmake win32-cs} on Windows with Visual Studio) builds a variant
|
@exec{nmake win32-cs} on Windows with Visual Studio) builds a variant
|
||||||
of Racket that runs on Chez Scheme. By default, the executables for
|
of Racket that runs on Chez Scheme. By default, the executables for
|
||||||
the Racket-on-Chez variant all have a @litchar{cs} or @litchar{CS}
|
the Racket CS variant all have a @litchar{cs} or @litchar{CS}
|
||||||
suffix, and they coexist with a traditional Racket build by keeping
|
suffix, and they coexist with a Racket BC build by keeping
|
||||||
compiled files in a machine-specific subdirectory of the
|
compiled files in a machine-specific subdirectory of the
|
||||||
@filepath{compiled} directory. You can remove the @litchar{cs} suffix
|
@filepath{compiled} directory. You can remove the @litchar{cs} suffix
|
||||||
and the subdirectory in @filepath{compiled} by providing
|
and the subdirectory in @filepath{compiled} by providing
|
||||||
|
@ -219,17 +219,17 @@ and the subdirectory in @filepath{compiled} by providing
|
||||||
the default for @exec{RACKETCS_SUFFIX} will change from @tt{"cs"} to
|
the default for @exec{RACKETCS_SUFFIX} will change from @tt{"cs"} to
|
||||||
@tt{""}.)
|
@tt{""}.)
|
||||||
|
|
||||||
Building Racket on Chez Scheme requires either an existing Racket or
|
Building Racket CS requires either an existing Racket or pb (portable
|
||||||
pb (portable bytecode) boot files for Chez Scheme. By default, pb
|
bytecode) boot files for Chez Scheme. By default, pb boot files are
|
||||||
bootf iles are downloaded from a separate Git repository by @exec{make
|
downloaded from a separate Git repository by @exec{make cs}. If you
|
||||||
cs}. If you have Racket v7.1 or later, then you can choose instead
|
have Racket v7.1 or later, then you can choose instead to bootstrap
|
||||||
to bootstrap using that Racket implementation with
|
using that Racket implementation with
|
||||||
|
|
||||||
@commandline{make cs RACKET=racket}
|
@commandline{make cs RACKET=racket}
|
||||||
|
|
||||||
Use @exec{make both} to build both traditional Racket and Racket on
|
Use @exec{make both} to build both Racket BC and Racket CS, where
|
||||||
Chez Scheme, where packages are updated and documentation is built only
|
packages are updated and documentation is built only once (using
|
||||||
once (using traditional Racket).
|
Racket BC).
|
||||||
|
|
||||||
|
|
||||||
@; ------------------------------------------------------------
|
@; ------------------------------------------------------------
|
||||||
|
|
|
@ -2,13 +2,14 @@ Racket is distributed under the MIT license and the Apache version 2.0
|
||||||
license, at your option. However, the Racket runtime system includes
|
license, at your option. However, the Racket runtime system includes
|
||||||
components distributed under other licenses. In short:
|
components distributed under other licenses. In short:
|
||||||
|
|
||||||
* The traditional Racket runtime system includes code distributed
|
* The Racket CS runtime system embeds Chez Scheme, which is
|
||||||
under the GNU Lesser General Public License, version 3. This
|
distributed under the Apache version 2.0 license. This runtime
|
||||||
runtime system is built from code in racket/src/racket.
|
system is built from code in racket/src/cs and
|
||||||
|
racket/src/ChezScheme.
|
||||||
|
|
||||||
* The Racket on Chez Scheme runtime system embeds Chez Scheme, which
|
* The Racket BC runtime system includes code distributed under the
|
||||||
is distributed under the Apache version 2.0 license. This runtime
|
GNU Lesser General Public License, version 3. This runtime system
|
||||||
system is built from code in racket/src/cs.
|
is built from code in racket/src/racket.
|
||||||
|
|
||||||
Except for Windows executables that are created with the "embed DLLs"
|
Except for Windows executables that are created with the "embed DLLs"
|
||||||
option, the runtime system remains separate as a shared library or
|
option, the runtime system remains separate as a shared library or
|
||||||
|
@ -38,7 +39,7 @@ The following are used in all Racket executables:
|
||||||
rktio/rktio_sha2.c. mbed TLS is licensed under the Apache
|
rktio/rktio_sha2.c. mbed TLS is licensed under the Apache
|
||||||
v2.0 License.
|
v2.0 License.
|
||||||
|
|
||||||
The following are used only in the traditional Racket executable:
|
The following are used only in the Racket BC executable:
|
||||||
|
|
||||||
* libscheme. Code from libscheme can be found in
|
* libscheme. Code from libscheme can be found in
|
||||||
racket. See the file LICENSE-libscheme.txt
|
racket. See the file LICENSE-libscheme.txt
|
||||||
|
|
|
@ -26,66 +26,48 @@ Report bugs:
|
||||||
|
|
||||||
|
|
||||||
========================================================================
|
========================================================================
|
||||||
Traditional Racket versus Racket-on-Chez
|
Racket BC (ByteCode / Before Chez) versus Racket CS (Chez Scheme)
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
This source directory contains implementations for two different
|
This source directory contains implementations for two different
|
||||||
versions of Racket: the traditional implementation that is
|
versions of Racket: the original BC implementation that is
|
||||||
substantially implemented in C, and an implementation that builds on
|
substantially implemented in C, and the CS implementation that builds
|
||||||
Chez Scheme.
|
on Chez Scheme.
|
||||||
|
|
||||||
Traditional Racket
|
Racket BC
|
||||||
------------------
|
---------
|
||||||
|
|
||||||
By default, `configure` and the Windows scripts build the traditional
|
By default, `configure` and the Windows scripts build the BC
|
||||||
implementation of Racket.
|
implementation of Racket.
|
||||||
|
|
||||||
If you need more information specific to the traditional
|
To build Racket BC on Windows, see See "worksp\README.txt" for
|
||||||
implementation of Racket, see "racket/README.txt".
|
|
||||||
|
|
||||||
Racket on Chez Scheme
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
To build Racket-on-Chez on Unix variants or Mac OS:
|
|
||||||
|
|
||||||
* ... in addition to the traditional variant of Racket: supply
|
|
||||||
`--enable-cs` or `--enable-csdefault` to `configure`.
|
|
||||||
|
|
||||||
The generated Racket-on-Chez executables will have a "cs" suffix
|
|
||||||
for `--enable-cs`, and it will not have a "cs" suffix for
|
|
||||||
`--enable-csdefault`. Also, plain `make` will still build the
|
|
||||||
traditional Racket implementation with `--enable-cs`; use `make cs`
|
|
||||||
to build and `make install-cs` to install. With
|
|
||||||
`--enable-csdefault`, plain `make` and `make install` will build
|
|
||||||
and install Racket-on-Chez.
|
|
||||||
|
|
||||||
* ... by itself: supply `--enable-csonly` to `configure`.
|
|
||||||
|
|
||||||
The generated Racket-on-Chez executables will *not* have a "cs"
|
|
||||||
suffix. Unlike `--enable-csdefault`, you must specify an existing
|
|
||||||
Racket using `--enable-racket=...`.
|
|
||||||
|
|
||||||
Chez Scheme is included in a Racket source distribution and
|
|
||||||
`configure` detects that source, so no separate download or Git
|
|
||||||
checkout is needed in that case.
|
|
||||||
|
|
||||||
Chez Scheme is not included in the Racket Git repository. Building
|
|
||||||
Racket-on-Chez from a Git checkout requires a "ChezScheme" build
|
|
||||||
checkout within the build directory or at at an alternate location
|
|
||||||
specified by the `--enable-scheme=...` argument to `configure`.
|
|
||||||
|
|
||||||
Use the patched version of Chez Scheme at
|
|
||||||
|
|
||||||
https://github.com/racket/ChezScheme
|
|
||||||
|
|
||||||
We hope to eventually return to the current development version from
|
|
||||||
|
|
||||||
https://github.com/cisco/ChezScheme
|
|
||||||
|
|
||||||
To build Racket-on-Chez on Windows, see See "worksp\README.txt" for
|
|
||||||
information.
|
information.
|
||||||
|
|
||||||
If you need more information specific to Racket-on-Chez, see
|
If you need more information specific to Racket BC, see
|
||||||
|
"racket/README.txt".
|
||||||
|
|
||||||
|
Racket CS
|
||||||
|
---------
|
||||||
|
|
||||||
|
To build Racket CS on Unix variants or Mac OS:
|
||||||
|
|
||||||
|
* ... in addition Racket BC: supply `--enable-cs` to `configure`.
|
||||||
|
|
||||||
|
The generated Racket CS executables will have a "cs" suffix. Also,
|
||||||
|
plain `make` will still build Racket BC with `--enable-cs`; use
|
||||||
|
`make cs` to build and `make install-cs` to install.
|
||||||
|
|
||||||
|
* ... by itself: supply `--enable-csdefault` to `configure`.
|
||||||
|
|
||||||
|
The generated Racket CS executables will *not* have a "cs" suffix.
|
||||||
|
|
||||||
|
Chez Scheme is included in Racket source distributions and the source
|
||||||
|
repository.
|
||||||
|
|
||||||
|
To build Racket CS on Windows, see See "worksp\README.txt" for
|
||||||
|
information.
|
||||||
|
|
||||||
|
If you need more information specific to Racket CS, see
|
||||||
"cs/README.txt".
|
"cs/README.txt".
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,11 +95,11 @@ Quick instructions:
|
||||||
you don't anticipate updating/rebuilding, but it will be harder to
|
you don't anticipate updating/rebuilding, but it will be harder to
|
||||||
restart from scratch should you need to.
|
restart from scratch should you need to.
|
||||||
|
|
||||||
Some build modes may require GNU `make`. For example, when building
|
Some build modes may require GNU Make. For example, when building the
|
||||||
the traditional Racket implementation, the content of the "foreign"
|
Racket CS implementation, GNU Make is required. When building the
|
||||||
subdirectory requires GNU `make` if no installed "libffi" is
|
Racket BC implementation, the content of the "foreign" subdirectory
|
||||||
detected. If the build fails with another variant of `make`, please
|
requires GNU Make if no installed "libffi" is detected. If the build
|
||||||
try using GNU `make`.
|
fails with another variant of `make`, please try using GNU Make.
|
||||||
|
|
||||||
Detailed instructions:
|
Detailed instructions:
|
||||||
|
|
||||||
|
@ -358,9 +340,8 @@ Cross-compilation requires at least two flags to `configure`:
|
||||||
|
|
||||||
* `--enable-racket=RACKET`, where RACKET is a path to a Racket
|
* `--enable-racket=RACKET`, where RACKET is a path to a Racket
|
||||||
executable that runs on the build platform; the executable must be
|
executable that runs on the build platform; the executable must be
|
||||||
the same version of Racket and the same virtual machine (i.e.,
|
the same version of Racket and the same virtual machine (i.e., CS
|
||||||
traditional Racket or Racket on Chez Scheme) as being built for the
|
or BC) as being built for the target platform.
|
||||||
target platform.
|
|
||||||
|
|
||||||
This flag is needed because building and installing Racket requires
|
This flag is needed because building and installing Racket requires
|
||||||
running (an existing build of) Racket.
|
running (an existing build of) Racket.
|
||||||
|
@ -377,7 +358,7 @@ For Racket-on-Chez, an additional flag is needed:
|
||||||
current platform, and a cross-compiled Chez Scheme will be created
|
current platform, and a cross-compiled Chez Scheme will be created
|
||||||
in the same directory.
|
in the same directory.
|
||||||
|
|
||||||
Some less commonly needed `configure` flags for traditional Racket:
|
Some less commonly needed `configure` flags for Racket BC:
|
||||||
|
|
||||||
* `--enable-stackup`, if the target platform`s stack grows up.
|
* `--enable-stackup`, if the target platform`s stack grows up.
|
||||||
|
|
||||||
|
@ -393,8 +374,8 @@ Some less commonly needed `configure` flags for traditional Racket:
|
||||||
Cross-compiling for Android
|
Cross-compiling for Android
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
[Currently, cross-compilation for Android works only for the
|
[Currently, cross-compilation for Android works only for the Racket BC
|
||||||
traditional Racket implementation.]
|
implementation.]
|
||||||
|
|
||||||
As an example of cross-compiling, to compile for Android on ARM using
|
As an example of cross-compiling, to compile for Android on ARM using
|
||||||
the NDK, use (all on one line)
|
the NDK, use (all on one line)
|
||||||
|
@ -416,7 +397,7 @@ the [comp] of your choice and the [platform] used to compile.
|
||||||
Cross-compiling for iOS
|
Cross-compiling for iOS
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
[Currently, cross-compilation works only for the traditional Racket
|
[Currently, cross-compilation works only for the Racket BC
|
||||||
implementation.]
|
implementation.]
|
||||||
|
|
||||||
To compile the Racket runtime system as a Framework for iOS, use (all
|
To compile the Racket runtime system as a Framework for iOS, use (all
|
||||||
|
@ -459,16 +440,16 @@ of the `racket` executable (and variants), while "../collects"
|
||||||
contains the additional Racket libraries that are included in a
|
contains the additional Racket libraries that are included in a
|
||||||
minimal Racket distribution.
|
minimal Racket distribution.
|
||||||
|
|
||||||
Sources for the traditional Racket implementation
|
Sources for the Racket BC implementation
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
* "racket" --- traditional `racket` executable
|
* "racket" --- `racket` BC executable
|
||||||
|
|
||||||
This implementation can build from "scratch" with a C compiler, but
|
This implementation can build from "scratch" with a C compiler, but
|
||||||
first by building a CGC variant of Racket to transform the C
|
first by building a CGC variant of Racket to transform the C
|
||||||
sourses to build a (normal) 3m variant.
|
sourses to build a (normal) 3m variant.
|
||||||
|
|
||||||
* "gracket" --- traditional `gracket` executable
|
* "gracket" --- `gracket` executable
|
||||||
|
|
||||||
* "foreign" --- FFI implementation for "racket"
|
* "foreign" --- FFI implementation for "racket"
|
||||||
|
|
||||||
|
@ -482,13 +463,10 @@ Sources for the traditional Racket implementation
|
||||||
See also the shared sources below, which includes rktio and the macro
|
See also the shared sources below, which includes rktio and the macro
|
||||||
expander.
|
expander.
|
||||||
|
|
||||||
Sources for the Racket-on-Chez implementation
|
Sources for the Racket CS implementation
|
||||||
---------------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
* "cs" --- Racket-on-Chez `racket` executable
|
* "cs" --- `racket` CS executable
|
||||||
|
|
||||||
Building requires both an existing Racket (possibly created from
|
|
||||||
the "racket" sources) and an existing Chez Scheme build.
|
|
||||||
|
|
||||||
* "thread" --- thread scheduler
|
* "thread" --- thread scheduler
|
||||||
|
|
||||||
|
@ -508,13 +486,14 @@ Sources shared by both Racket implementations
|
||||||
|
|
||||||
This expander is both included in Racket executables and used to
|
This expander is both included in Racket executables and used to
|
||||||
expand itself for inclusion in executables. It's also used to
|
expand itself for inclusion in executables. It's also used to
|
||||||
expand other libraries for inclusion in Racket-on-Chez executables.
|
expand other libraries for inclusion in Racket CS executables, but
|
||||||
|
already-expanded versions are included with source in
|
||||||
|
"cs/schemified".
|
||||||
|
|
||||||
If you change the expander, run `make` in its directory to generate
|
If you change the expander, run `make` in its directory to generate
|
||||||
the "startup.inc" file that holds the expander's implementation for
|
the "startup.inc" file that holds the expander's implementation for
|
||||||
the traditional Racket variant. The Racket-on-Chez build (which
|
Racket BC. Also, run `make` in "cs" to rebuild expanded libraries
|
||||||
needs an existing Racket to build, anyway) picks up changes to
|
for Racket CS.
|
||||||
"expander" automatically.
|
|
||||||
|
|
||||||
* "rktio" --- portability layer for low-level I/O
|
* "rktio" --- portability layer for low-level I/O
|
||||||
|
|
||||||
|
@ -524,20 +503,19 @@ Sources shared by both Racket implementations
|
||||||
|
|
||||||
* "schemify" --- a Racket-to-Scheme compiler, used by "cs" and "cify"
|
* "schemify" --- a Racket-to-Scheme compiler, used by "cs" and "cify"
|
||||||
|
|
||||||
Similar to "expander", this layer is applied to itself and
|
Similar to "expander", this layer is applied to itself and other
|
||||||
other libraries for inclusion in "cs".
|
libraries for inclusion in "cs". If you change it, be sure to run
|
||||||
|
`make` in "cs".
|
||||||
|
|
||||||
* "cify" --- a Racket-to-C compiler
|
* "cify" --- a Racket-to-C compiler
|
||||||
|
|
||||||
This compiler is used only when embedding the expander as C code,
|
This compiler is used only when embedding the expander as C code in
|
||||||
instead of Racket bytecode, which is the default for platforms
|
Racket BC, instead of Racket bytecode, which is the default for
|
||||||
where the traditional Racket JIT is not supported.
|
platforms where the Racket BC JIT is not supported.
|
||||||
|
|
||||||
* "start" --- main-executable wrapper
|
* "start" --- main-executable wrapper
|
||||||
|
|
||||||
Startup wrappers used by both the tradition and Racket-on-CS
|
Startup wrappers used by both the Racket CS and BC implementations.
|
||||||
implementations.
|
|
||||||
|
|
||||||
* "worksp" --- Windows projects and build scripts
|
* "worksp" --- Windows projects and build scripts
|
||||||
|
|
||||||
|
@ -564,4 +542,3 @@ More shared utilities
|
||||||
* "lt" --- `libtool` and `configure` support
|
* "lt" --- `libtool` and `configure` support
|
||||||
|
|
||||||
* "utils" --- miscellaneous
|
* "utils" --- miscellaneous
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#|
|
#|
|
||||||
cd "`dirname \"$0\"`"
|
cd "`dirname \"$0\"`"
|
||||||
src="../racket/configure.ac"
|
src="../racket/configure.ac"
|
||||||
tgt="../cfg-racket"
|
tgt="../cfg-bc"
|
||||||
if [ ! -e "$src" ]; then echo "abort: did not find $src"; exit 1; fi
|
if [ ! -e "$src" ]; then echo "abort: did not find $src"; exit 1; fi
|
||||||
echo "Creating $tgt from $src"
|
echo "Creating $tgt from $src"
|
||||||
autoconf "$src" | racket "$0" > "$tgt"
|
autoconf "$src" | racket "$0" > "$tgt"
|
||||||
|
|
7
racket/src/configure
vendored
7
racket/src/configure
vendored
|
@ -1,10 +1,9 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
# Using `--enable-csdefault` or `--enable-csonly` avoids running `cfg-racket`
|
# Using `--enable-csdefault` or `--enable-csonly` avoids running
|
||||||
# and only uses `cfg-cs` and `cs/c/configure`.
|
# `cfg-racket` and only uses `cfg-cs` and `cs/c/configure`.
|
||||||
|
|
||||||
# Using `--enable-cs` or `--enable-csdefault` uses
|
# Using `--enable-cs` uses both `cfg-racket` and `cs/c/configure`.
|
||||||
# both `cfg-racket` and `cs/c/configure`.
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<The implementation of Racket on Chez Scheme (Racket CS) in this
|
The implementation of Racket on Chez Scheme (Racket CS) in this
|
||||||
directory is organized into two layers:
|
directory is organized into two layers:
|
||||||
|
|
||||||
* The immediate directory contains Scheme sources to implement Racket
|
* The immediate directory contains Scheme sources to implement Racket
|
||||||
|
@ -154,8 +154,7 @@ Racket CS currently supports three compilation modes:
|
||||||
the implementation into a pure interpreter.
|
the implementation into a pure interpreter.
|
||||||
|
|
||||||
* Interpreter mode --- The compiled form of a module is a "bytecode"
|
* Interpreter mode --- The compiled form of a module is a "bytecode"
|
||||||
tree (not unlike the traditional Racket's bytecode) that is
|
tree (not unlike Racket BC's bytecode) that is interpreted.
|
||||||
interpreted.
|
|
||||||
|
|
||||||
Select this mode by setting the `PLT_CS_INTERP` environment
|
Select this mode by setting the `PLT_CS_INTERP` environment
|
||||||
variable. Alternatively, set `PLT_LINKLET_COMPILE_QUICK` when
|
variable. Alternatively, set `PLT_LINKLET_COMPILE_QUICK` when
|
||||||
|
@ -355,8 +354,8 @@ compatibility.
|
||||||
FFI Differences
|
FFI Differences
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Compared to the traditional Racket implementation, Racket CS's FFI
|
Compared to the Racket BC implementation, Racket CS's FFI behaves in
|
||||||
behaves in several different ways:
|
several different ways:
|
||||||
|
|
||||||
* The `make-sized-byte-string` function always raises an exception,
|
* The `make-sized-byte-string` function always raises an exception,
|
||||||
because a foreign address cannot be turned into a byte string whose
|
because a foreign address cannot be turned into a byte string whose
|
||||||
|
@ -371,7 +370,7 @@ behaves in several different ways:
|
||||||
|
|
||||||
* A `_gcpointer` can only refer to the start of an allocated object,
|
* A `_gcpointer` can only refer to the start of an allocated object,
|
||||||
and never the interior of an 'atomic-interior allocation. Like
|
and never the interior of an 'atomic-interior allocation. Like
|
||||||
traditional Racket, `_gcpointer` is equivalent to `_pointer` for
|
Racket BC, `_gcpointer` is equivalent to `_pointer` for
|
||||||
sending values to a foreign procedure, return values from a
|
sending values to a foreign procedure, return values from a
|
||||||
callback that is called from foreign code, or for `ptr-set!`. For
|
callback that is called from foreign code, or for `ptr-set!`. For
|
||||||
the other direction (receiving a foreign result, `ptr-ref`, and
|
the other direction (receiving a foreign result, `ptr-ref`, and
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
This directory contains most of the source code to the traditional
|
This directory contains most of the source code to the Racket BC
|
||||||
implementation of Racket. See "../README.txt" for general information
|
implementation. See "../README.txt" for general information on
|
||||||
on building.
|
building.
|
||||||
|
|
||||||
|
|
||||||
========================================================================
|
========================================================================
|
||||||
CGC versus 3m
|
CGC versus 3m
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
Traditional Racket and GRacket have two variants: CGC and 3m. The CGC
|
Racket BC and GRacket BC have two variants: CGC and 3m. The CGC
|
||||||
variant is older, and it cooperates more easily with extensions
|
variant is older, and it cooperates more easily with extensions
|
||||||
written in C. The 3m variant is the default: it is more robust and
|
written in C. The 3m variant is the default: it is more robust and
|
||||||
usually provides better overall performance.
|
usually provides better overall performance.
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
This directory constraint source programs and fragments for wrapper
|
This directory constraint source programs and fragments for wrapper
|
||||||
executables used to start/embed Racket. The programs and fragments are
|
executables used to start/embed Racket. The programs and fragments are
|
||||||
used both for the traditional Racket virtual machine and Racket on
|
used both for the Racket CS and BC implementations.
|
||||||
Chez Scheme.
|
|
||||||
|
|
||||||
========================================================================
|
========================================================================
|
||||||
Embedded Paths in the Executables
|
Embedded Paths in the Executables
|
||||||
|
|
|
@ -2,7 +2,7 @@ This directory contains scripts, solution files, and project files for
|
||||||
building Racket using Visual Studio. Some parts or variants can be
|
building Racket using Visual Studio. Some parts or variants can be
|
||||||
built using projects, but most use Visual Studio command-line tools.
|
built using projects, but most use Visual Studio command-line tools.
|
||||||
|
|
||||||
The traditional Racket implementation also compiles with MinGW; see
|
The Racket BC implementation also compiles with MinGW; see
|
||||||
"...\README.txt".
|
"...\README.txt".
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,13 +26,12 @@ When using PowerShell, run the "msvcprep.ps1" script instead of
|
||||||
work, but will not actually change any environment variables.
|
work, but will not actually change any environment variables.
|
||||||
|
|
||||||
After you have Visual Studio command-line tools set up, then you can
|
After you have Visual Studio command-line tools set up, then you can
|
||||||
build either the traditional Racket implementation or Racket-on-Chez
|
build either the Racket BC or Racket CS implementations (or both).
|
||||||
(or both).
|
|
||||||
|
|
||||||
Traditional Racket
|
Racket BC
|
||||||
------------------
|
---------
|
||||||
|
|
||||||
Build the traditional Racket implementation using
|
Build the Racket BC implementation using
|
||||||
|
|
||||||
build.bat
|
build.bat
|
||||||
|
|
||||||
|
@ -44,32 +43,29 @@ the process of building "..\..\Racket.exe".
|
||||||
|
|
||||||
See also "Completing the Build" below.
|
See also "Completing the Build" below.
|
||||||
|
|
||||||
Racket-on-Chez
|
Racket CS
|
||||||
--------------
|
---------
|
||||||
|
|
||||||
Build the Racket-on-Chez implementation using
|
Build the Racket CS implementation using
|
||||||
|
|
||||||
build-cs.bat
|
build-cs.bat
|
||||||
|
|
||||||
which builds "..\..\Racket3m.exe" to bootstrap the build.
|
which builds "..\..\Racket3m.exe" to bootstrap the build, because the
|
||||||
|
main build script is implemented in Racket.
|
||||||
|
|
||||||
To instead build using an existing Racket installation, use
|
To instead build using an existing Racket installation (version 7.1 or
|
||||||
|
later), use
|
||||||
|
|
||||||
racket.exe csbuild.rkt --racketcs-suffix ""
|
racket.exe csbuild.rkt --racketcs-suffix ""
|
||||||
|
|
||||||
The result is "..\..\Racket.exe", DLLs and "GRacket.exe" in
|
The result is "..\..\Racket.exe", DLLs and "GRacket.exe" in
|
||||||
"..\..\lib", and other files in "..\..\lib", "..\..\etc", etc.
|
"..\..\lib", and other files in "..\..\lib", "..\..\etc", etc.
|
||||||
|
Many intermediate files will be put in "../build".
|
||||||
Many intermediate files will be put in "../build", including a Chez
|
|
||||||
Scheme checkout if it's not already present there; if a "ChezScheme"
|
|
||||||
directory exists in the Racket source directory, it is copied to the
|
|
||||||
build directory, otherwise it is cloned from a Git repository (in
|
|
||||||
which case `git` must be available).
|
|
||||||
|
|
||||||
See also "Completing the Build" below.
|
See also "Completing the Build" below.
|
||||||
|
|
||||||
Both Traditional Racket and Racket-on-Chez
|
Both Racket BC and Racket CS
|
||||||
------------------------------------------
|
----------------------------
|
||||||
|
|
||||||
When using "csbuild.rkt" directly, omit the `--racketcs-suffix ""`
|
When using "csbuild.rkt" directly, omit the `--racketcs-suffix ""`
|
||||||
arguments to create "..\..\RacketCS.exe" executable instead of
|
arguments to create "..\..\RacketCS.exe" executable instead of
|
||||||
|
@ -78,8 +74,8 @@ read and bytecode in a subdirectory of "compiled" as described in
|
||||||
"..\cs\README.txt".
|
"..\cs\README.txt".
|
||||||
|
|
||||||
A "CS" suffix and using a subdirectory of "compiled" means that a
|
A "CS" suffix and using a subdirectory of "compiled" means that a
|
||||||
Racket-on-Chez build as "RacketCS.exe" can coexist with a
|
Racket CS build as "RacketCS.exe" can coexist with a BC build as
|
||||||
traditional build as "Racket.exe". So, the sequence
|
"Racket.exe". So, the sequence
|
||||||
|
|
||||||
build.bat
|
build.bat
|
||||||
..\..\Racket.exe csbuild.rkt
|
..\..\Racket.exe csbuild.rkt
|
||||||
|
@ -111,11 +107,10 @@ Only if you are starting completely from scratch, see also
|
||||||
Building via Visual Studio Projects/Solutions
|
Building via Visual Studio Projects/Solutions
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
Traditional Racket implementation's CGC variant can be built and
|
The Racket BC implementation's CGC variant can be built and debugged
|
||||||
debugged using visual Studio solutions and project. (See
|
using visual Studio solutions and project. (See "..\racket\README.txt"
|
||||||
"..\racket\README.txt" for information on traditional Racket
|
for information on Racket BC variants.) Further steps using the
|
||||||
variants.) Further steps using the command line can then build the 3m
|
command line can then build the 3m variant and related executables.
|
||||||
variant and related executables.
|
|
||||||
|
|
||||||
The CGC implementation is split into several projects that are grouped
|
The CGC implementation is split into several projects that are grouped
|
||||||
into a few solutions. To build the `X' solution with Visual Studio,
|
into a few solutions. To build the `X' solution with Visual Studio,
|
||||||
|
@ -274,8 +269,8 @@ See also "..\start\README.txt" for information on the embedded
|
||||||
Embedding
|
Embedding
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
The traditional Racket implementation's DLLs can be used within an
|
The Racket BC implementation's DLLs can be used within an embedding
|
||||||
embedding application.
|
application.
|
||||||
|
|
||||||
The libraries
|
The libraries
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user