Skip to content
This repository was archived by the owner on Sep 13, 2019. It is now read-only.

Commit 3defca0

Browse files
committed
a few more notes on the implementation organization
1 parent 3905680 commit 3defca0

File tree

1 file changed

+43
-13
lines changed

1 file changed

+43
-13
lines changed

racket/src/README

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -494,39 +494,69 @@ Directories in "src":
494494

495495
"racket" --- starting point for the traditional Racket implementation
496496

497+
This implementation can build from "scratch" with a C
498+
compiler, but first by building a CGC variant of Racket to
499+
transform the C sourses to build a (normal) 3m variant.
500+
497501
"cs" --- starting point for the Racket-on-Chez implementation
498502

503+
Building the implementation requires both an existing Racket
504+
(possibly created from the "racket" sources) and an existing
505+
Chez Scheme build.
506+
499507
"rktio" --- portability layer for low-level I/O, used by "racket" and
500-
"cs"
508+
"cs"
509+
510+
If you change "rktio.h", then be sure to regenerate
511+
"rktio.rktl" and "rktio.inc" using an existing Racket
512+
implementation that has the "parser-tools" package installed.
501513

502514
"start" --- main-executable wrapper, used by "racket" and "cs"
503515

504516
"foreign" --- the FFI implementation for "racket", including "libffi"
505-
(as needed for some platforms)
517+
(as needed for some platforms)
518+
519+
"expander" --- the macro expander implementation, used by "racket"
520+
and "cs"; doubles as the "expander" package
506521

507-
"expander" --- the macro expander's implementation, used by "racket"
508-
and "cs"; doubles as the "expander" package
522+
This expander is both included in Racket builds and used to
523+
expand itself for including in "racket" or "cs". It's also
524+
used to expand other libraries included in "cs".
509525

510-
"thread" --- the thread scheduler's implementation, used by "cs"
526+
If you change the expander, run `make` in its directory to
527+
generate the "startup.inc" file that holds the expander's
528+
implementation for inclusion in the traditional Racket
529+
variant. The "cs" build (which needs an existing Racket to
530+
build, anyway) picks up changes automatically.
511531

512-
"io" --- the Racket I/O implementation, used by "cs"
532+
"thread" --- the thread scheduler implementation, used by "cs"
513533

514-
"regexp" --- the regexp matcher's implementation, used by "cs"
534+
"io" --- the I/O implementation, used by "cs"
535+
536+
"regexp" --- the regexp matcher implementation, used by "cs"
515537

516538
"schemify" --- a Racket-to-Scheme compiler, used by "cs" and "cify"
517539

518-
"cify" --- a Racket-to-C compiler, used by "racket" when embedding
519-
the expander as C code instead of Racket bytecode
540+
Similar to "expander", this layer is applied to itself and
541+
other libraries for inclusion in "cs".
542+
543+
"cify" --- a Racket-to-C compiler, used by "racket"
544+
545+
This compiler is used only when embedding the expander as C
546+
code, instead of Racket bytecode, which is the default for
547+
platforms where the Racket JIT is not supported.
520548

521549
"common" --- Racket libraries used by "thread", "io", etc.
522550

523-
"gracket" --- implementation of the GRacket layer
551+
"gracket" --- implementation of the GRacket layer for the traditional
552+
Racket implementation
524553

525-
"mzcom" --- implementation of the MzCOM layer (for Windows)
554+
"mzcom" --- implementation of the MzCOM layer (for Windows)for the
555+
traditional Racket implementation
526556

527557
"mysink" --- `ffi/unsafe/com` helper DLL implementation (for Windows)
528558

529-
"mac" --- scripts for Mac OS ".app"s, used by "gracket"
559+
"mac" --- scripts for Mac OS ".app"s, used by "gracket" and "cs"
530560

531561
"worksp" --- Windows projects and build scripts for "racket"
532562

@@ -537,4 +567,4 @@ Directories in "src":
537567
"utils" --- miscellaneous
538568

539569
"setup-go.rkt" --- helper script used by parts of the build that need
540-
to run substantial Racket programs
570+
to run substantial Racket programs

0 commit comments

Comments
 (0)