Commit Graph

82 Commits

Author SHA1 Message Date
Ben Greenman
1e0fb22822 doc: fix zo struct typos
- remove `decode-module-binding`, because this function doesn't seem to
  be provided
- remove the `stx` struct
- fix small typos / broken links
2018-04-07 16:18:23 -04:00
Matthew Flatt
e01a21db0c raco exe: add --embed-dlls for Windows
Creating an executable with embedded DLLs means that the executable
can be truly stand-alone, instead of needing to be kept with its
DLLs in a relative subdirectory.

DLL embedding works by bypassing the OS's LoadLibrary and
GetProcAddress functions, and instead maps the DLL into memory
and performs relocations explicitly. Joachim Bauch's MemoryModule
(Mozilla license) implements those steps.
2018-03-25 16:35:42 -06:00
Matthew Flatt
59ef254318 switch to a new, Racket-implemented expander & module system
This commit merges changes that were developed in the "racket7" repo.
See that repo (which is no longer modified) for a more fine-grained
change history.

The commit includes experimental support for running Racket on Chez
Scheme, but that "CS" variant is not built by default.
2018-02-26 13:19:53 -07:00
Jay McCarthy
2b9b1b22f2 raco test --deps docs 2017-10-20 11:34:40 -04:00
Matthew Flatt
808bd1b897 raco setup: adjust --clean mode
Make `raco setup` propagate the original value of
`use-compiled-file-paths` in case it's reset to avoid loading bytecode
files. Then, `--clean` mode can remove bytecode relevant to that
setting, instead of always clearing "compiled" subdirectories.

There's no external way to initialize `use-compiled-file-paths` right
now, other than forcing it to `null` with the `-c` flag at the
`racket` level, but the current "racket7" implementation uses
different `use-compiled-file-paths` settings for different build
modes, and it seems to make sense in general.

Also, make `--clean` sensitive to `-D` and `-d`, so that it's easy to
clean just bytecode.
2017-07-17 14:45:43 -06:00
Matthew Flatt
31d82eb9a6 raco setup: add note in docs for --tidy
Related to #1718
2017-06-22 08:39:39 -06:00
Matthew Flatt
30e4e812ba raco test: doc and help tweaks
* Clarify shell context for `++args` note on quotes

 * Add `history` notes

 * Make the help output fit in 80 columns

 * Bump "compiler-lib" version
2017-06-22 08:36:30 -06:00
Conor Finegan
9852afe1b1 raco test: support ++arg <arg> and ++args <args>
Add a way for `raco test` to pass along arguments to the test program.
2017-06-22 08:09:22 -06:00
Matthew Flatt
c917434a86 improve cross-platform support
Detangle the target and host DLL and library directories by
making `get-lib-search-dirs` and `get-dll-dir` report the
host system's directories, and add `get-cross-lib-search-dirs`
and `get-cross-dll-dir`.

A new `-C`/`--cross` flag causes `racket` to save a host config and
collection directory and make them available via `(find-system-path
'host-{config,collects}-dir)`, while plus `(system-type 'cross)`
reports whether `-C` mode is in effect. Besides making the host paths
available, this change allows a same-platform build to run in
corss-platform mode.

The immediate problem to solve was the creation of Windows installers
on Windows, where recent changes to support 'gui-bin-dir configuration
need a clear distinction between the host Racket and the target Racket
being built, even if they're the same platform. (The "GRacket.exe"
executable didn't work, for example.)

The changes in this commit are more than needed for the immediate
problem, but they naturally build on the necessary `-C` flag, and they
support cross-platform package setup where native libraries are needed
during setup.
2017-04-25 08:31:26 -06:00
Matthew Flatt
1030e079c4 raco ctools docs: improve xref docs and mention "cext-lib" package 2017-03-28 19:11:44 -06:00
Matthew Flatt
572b96a6ef add 'gui-bin-dir as a separate configuration option
Allow the directory for GUI executables to be specified as different
from console executables. The defaults for those two are different
on Mac OS, and configuring them differently might be useful to
address #1575.

Although there is probably no demand on Windows or Unix for splitting
the console and GUI bin directories, this patch tries to make things
work sensible there. On Windows, there's a corner case where a
launcher that starts GRacket (especially with `-z`) is intended to be
a console executable. The launcher creator can be told that via a
`subsystem` option, but a new `#:console?` argument was needed for
`make-gracket-launcher-path` lets the path selector know.
2017-01-30 05:41:49 -07:00
Matthew Flatt
dc85374501 Add ignore-stderr submodule and test-ignore-stderrs "info.rkt"
These configuration options apply to `raco test` and mirror the
`--ignore-stderr` command-line flag.
2017-01-30 05:41:49 -07:00
Ben Greenman
88b2d5d4e6 document raco/all-tools, fix typos in raco documentation 2017-01-03 14:19:02 -05:00
Matthew Flatt
710320e3dc "Mac OS X" -> "Mac OS"
Although "macOS" is the correct name for Apple's current desktop OS,
we've decided to go with "Mac OS" to cover all of Apple's Unix-like
desktop OS versions. The label "Mac OS" is more readable, clear in
context (i.e., unlikely to be confused with the Mac OSes that
proceeded Mac OS X), and as likely to match Apple's future OS names
as anything.
2016-12-23 12:18:36 -07:00
Vincent St-Amour
00f0311473 setup-plt -> raco setup
Survived unnoticed for 6+ years.
2016-08-24 15:33:07 -05:00
Matthew Flatt
ad230d2ca0 improve structure-type property handling
Make the optimizer recognize and track `make-struct-property-type`
values, and use that information to recognize `make-struct-type`
calls that will defnitely succeed because a property that hs no
guard is given a value in the list of properties.

Combined with the change to require-keyword expansion, this
change allows the optimizer to inline `f` in

 (define (g y)
   (f #:x y))

 (define (f #:x x)
   (list x))

because the `make-struct-type` that appears between `g` and `f`
is determined to have no side-effect that would prevent `f` from
having its expected value.
2016-08-07 15:59:02 -06:00
Matthew Flatt
fc345ed249 add use-compiled-file-check
Along with the `PLT_COMPILED_FILE_CHECK` environment variable, allows
the timestamp check to be disabled when deciding whether to use a
compiled bytecode file.

In accomodating this change, `raco make` and `raco setup` in all modes
check whether the SHA1 hash of a module source matches the one
recorded in its ".dep" file, even if the timestamp on the bytecode
file is newer. (If the compile-file check mode is 'exists, the
timestamp is completely ignored.)
2016-07-26 10:27:08 -06:00
Leif Andersen
28f693a976 A few more changes based on Matthew's feedback.
Updated docs
2016-07-26 10:14:38 -04:00
Leif Andersen
a6b7af9733 Made changes based on Matthew's comments.
1. Changed the API documentation for scheme_make_hash_tree, adding primitives for:

* SCHEME_hashtr_eq
* SCHEME_hashtr_equal
* SCHEME_hashtr_eqv

2. Changed direct uses of scheme_make_hash_tree to use these enumed values.

3. Fixed bugs in documentation

4. Defaults to racket/interactive (and racket/gui/interactive) if there is nothing in the config file
2016-07-26 10:14:38 -04:00
Ben Greenman
c21d5e780b typo: with-immed-mark-val -> with-immed-mark-def-val 2016-06-08 18:34:36 -04:00
Leif Andersen
81eb6bf4c0 The 'dummy' field in 'mod' really should be in its own paragraph. 2016-06-01 15:22:04 -04:00
Leif Andersen
eb17a041ab Updated ZO documentation for global-bucket. 2016-05-18 16:32:38 -04:00
Matthew Flatt
1e597a885c reorganize docs for raco make-related APIs
Closes #1293
2016-04-16 11:06:20 -06:00
Matthew Flatt
467979cd8b improve docs for compile-file
Clarify that it expects to be called via
`with-module-reading-parameterization`.

Closes #1291
2016-04-16 10:56:50 -06:00
Matthew Flatt
e1a5e41ddc The set of environment variables accessible via getenv is
restricted through `get-info`, which prunes the environment
variable set before it loads the "info.rkt" file. All
environment variables are pruned except those listed in
`PLT_INFO_ALLOW_VARS` (separated by semicolons).

Related to emina/rosette#17.
2016-04-15 09:56:59 -06:00
Matthew Flatt
6369e56709 add support for tethering to a config or addon dir
Add a hook to `raco setup` to make copies of installed executables,
where the copies start with the configuration or addon directory
of creation time, instead of the default installation or user-specific
path.

Although the same effect can be achived by setting environment
variables such as PLTADDONDIR, tethered executables can be easier
to work with and compose better with other programs.

See also #1206 for some discussion, although this change does
not exactly address the original idea there.
2016-04-15 06:42:15 -06:00
Matthew Flatt
ce15a558c7 Improve docs for raco ctool --c-mods 2016-03-30 21:02:30 -06:00
Robby Findler
20e2e839cb add current-path->mode 2016-03-26 18:39:17 -05:00
Robby Findler
040078ab01 fix some @racket[] references 2016-03-16 16:53:31 -05:00
Matthew Flatt
7e4d7dfdee repairs and clarification for raco exe docs 2016-03-05 05:17:37 -07:00
Matthew Flatt
f317f906d8 small repairs to docs on 'scribblings in "info.rkt"
Merge to v6.4
2016-01-16 08:20:36 -07:00
Matthew Flatt
6ea9e963c4 add context properties to a module expansion
Add 'module-body-inside-context, 'module-body-outside-context, and
'module-body-context-simple? properties to the expansion of a
`module` form. These properties expose scopes that are used by
`module->namespace` and taht appear in marshaled bytecode.
2016-01-13 07:44:31 -07:00
Leif Andersen
533c0d16ec Fix typo in raco documentation for scribblings. 2016-01-05 15:47:00 -05:00
Matthew Flatt
d37ee8c5b1 fix place and raco exe
The repair involves making `raco exe` detect a sub-submodule
whose name is `declare-preserve-for-embedding` as an indication
that a submodule should be carried along with its enclosing module.

Normally, `define-runtime-module-path-index` would do that, but
the submodule for `place` is created with `syntax-local-lift-module`,
and the point of `syntax-local-lift-module` is to work in a
nested experssion context where definitions cannot be lifted
to the enclosing module.
2016-01-04 11:01:48 -07:00
Leif Andersen
2aa9d8cca3 Fixed typo in zo docs. 2016-01-02 23:07:31 -07:00
Jay McCarthy
2e34599ce3 Support custom categories on root documentation page
When custom categories are used in older versions, raco setup will
report a warning, but the documentation will still appear under the
Miscellaneous section. Thus, this is a backwards compatible
implementation of the idea.
2015-12-19 16:56:48 -05:00
Vincent St-Amour
270bbccf6b Fix history annotations to refer to 6.3.
Please merge to 6.3.
2015-10-12 13:49:55 -05:00
Matthew Flatt
1a48418844 infrastructure for raco ctool --c-mods <dest> --runtime <dir>
Make the runtime-file gatherer, which is normally used by `raco exec`,
work also for modules prepared for an executable that embeds Racket.
2015-09-18 18:55:22 -06:00
Matthew Flatt
3963f30070 document new configure-runtime behavior of raco test 2015-09-07 11:58:41 -06:00
Matthew Flatt
e1333d0616 fix compilation-top contract in docs
The associated change in the "zo-lib" package fixes #1038.
2015-09-07 08:28:52 -06:00
Matthew Flatt
06841bbaff doc typo and clarification 2015-09-05 17:59:19 -06:00
Matthew Flatt
16c198805b prevent compile from binding in the current namespace
When `compile` is used on a top-level definition, do not
create a binding in the current namespace, but arrange for
a suitable binding to be in place for the target namespace.

Closes #1036
2015-09-05 10:58:44 -06:00
Matthew Flatt
efe056f18d update documentation for preserved syntax-object source locations 2015-09-02 18:21:38 -06:00
Matthew Flatt
0e4d9a68af fix executable creation for cross-installation 2015-08-29 20:54:27 -06:00
Matthew Flatt
29784bda8e add cross-system-type and cross-system-library-subpath
Adjust installation tools to support cross-installation (i.e.,
installation for a platform other than the current one) as triggered
by "system.rktd" in "lib" having different information than the
running Racket executable.
2015-08-27 12:01:31 -06:00
Matthew Flatt
96292cdf27 raco exe --ico: replace icon set wholesale
Use exactly the icons in the given icon file for the executable,
instead of coercing to the sizes and depths already in the executable.
2015-08-24 15:08:21 -06:00
Leif Andersen
c0dac75b7d Fix typo in zo structs documentation:
Which -> When
2015-08-24 12:19:57 -04:00
Matthew Flatt
66df8a2b9f document raco test conversion to get-module-suffixes 2015-08-22 09:48:46 -06:00
Matthew Flatt
a135c78baf add module-suffixes and doc-module-suffixes to "info.rkt"
A `module-suffixes` entry in a collection's "info.rkt" adds a
file suffix that is meant to be recognized globally (i.e., in
all collections) by all Racket tools.

The new fields are reported by `compiler/module-suffix` library, which
is (so far) used by `raco setup`.

Note that if package A includes files with a suffix that is registered
by package B, then A should have a dependency on B, but `raco setup`
cannot currently detect that such a dependency is needed. That
dependency is likely to happen, anyway, since package A is likely
using libraries form package B.
2015-08-22 09:36:19 -06:00
Matthew Flatt
f63220682b add support for compile-include-files as an "info.rkt" field
The `compile-include-files` entry lists additional files to be
compiled (when their extensions do not trigger compilation).
2015-08-22 07:41:49 -06:00