Commit Graph

39630 Commits

Author SHA1 Message Date
Matthew Flatt
43f90b4781 makefile: support server-package install options 2019-03-13 10:56:56 -06:00
Matthew Flatt
5a96e89f95 cs: reduce communication for cross compilation
Communicating in terms of S-expression is convenient but wasteful,
so communicate in bytes.
2019-03-13 10:40:10 -06:00
Matthew Flatt
00a50ca772 no --recompile-only for "distro-build-client" step
The `--recompile-only` flag makes sense if machine-independent
bytecode can be deterministically generated from all Racket builds.
While the current compiler is close, there are obstacles such as the
lack of support for single-precision floating-point literals in Racket
CS. We settle for using `--recompile-only` in the main bundle phase,
which is the part that most needs to go fast.
2019-03-13 09:32:33 -06:00
Matthew Flatt
4248f9bea0 fix hash-table sorting of symbols with non-ASCII characters
Non-ASCII characters sorted before ASCII characters, instead of after.
2019-03-13 09:32:33 -06:00
Matthew Flatt
6d9ea44830 add unsafe-make-srcloc
This function was already in Racket CS.
2019-03-13 09:32:33 -06:00
Matthew Flatt
861ddac5bc expander: sort submodule names in a linklet bundle 2019-03-13 09:32:33 -06:00
Matthew Flatt
7c0a978f28 cs: remove some incorrect kernel exports
Remove `make-date[*]`, `double-flonum?`, `f[xl]vector-copy`, and
`compile`, which should not be exported by built-in modules.
2019-03-13 09:32:33 -06:00
Matthew Flatt
e79f07b6cc racket/fasl: fixed representation for +nan.0
To make fasl writing as determinsitic and portable as possible, write
+nan.0 and +nan.f always with a specific bit pattern.

This choice risks losing information that is potentially useful, but
given the way that Racket treats all NaN encodings as equivalent, that
rick seems low.
2019-03-13 09:32:33 -06:00
Matthew Flatt
6a35d64e95 repairs for change for machine-independent bytecode
Fix problems with moving some VM-specific handlign to schemify, and
fix some interning issues that the change exposed.
2019-03-13 09:32:33 -06:00
Matthew Flatt
df8501d8f0 make empty immutable hash tables unique
For example, `#hasheq()` is `eq?` to `(hasheq)` and `(hash-remove
(hasheq 'x 2) 'x)`. Making empty hash table unique avoids some
potential and actual inconsistencies between traditional Racket and
Racket CS, such as in machine-independent bytecode.
2019-03-13 09:32:33 -06:00
Matthew Flatt
6e958b627f expander: avoid VM-specific expansion
Move different handling of serialized syntax data to the schemify
layer instead of te expander, so that the result of compiling in
machine-independent form is the same for traditional Racket and Racket
CS.
2019-03-13 09:32:33 -06:00
Matthew Flatt
d0d391d76b raco setup: add --recompile-only
The `--recompile-only` flag is intended to help dectect build
problems, especially distribution builds where packages are
supposed to be in built form.
2019-03-13 09:32:33 -06:00
Matthew Flatt
ce708478e7 raco setup: add time to section printouts 2019-03-13 09:32:33 -06:00
Philip McGrath
4b69cf6995 typo fix in contracts documentation (#2530) 2019-03-13 12:39:51 +01:00
Robby Findler
b8b0260e50 add examples for -> contract combinator
closes #2527

Thanks to Paulo Matos
2019-03-12 09:16:04 -05:00
Marc
7ce28e8795 Update broken URL
Fixes #2518
2019-03-12 09:41:59 -04:00
Alexis King
bb42476157 syntax/parse: Add prop:syntax-class 2019-03-11 12:18:36 -05:00
Sam Tobin-Hochstadt
25efc68b17 Make sql-null a transparent struct.
This allows it to cooperate better with Typed Racket, particularly
regarding the `Any` type. The guard and use of `#:authentic` also
check that it's still a singleton in all cases.
2019-03-11 14:02:57 +01:00
Matthew Flatt
de82588e08 cs: fix cross-compile fasl 2019-03-09 13:01:23 -07:00
Matthew Flatt
17e5a56569 raco setup: allow dependency checking to continue after error
When reading a bytecode file fails, record the error and continue.
2019-03-09 08:42:54 -07:00
Matthew Flatt
e46e791724 cs: delayed parsing of cross-linklet info
Avoid parsing cross-linklet optimization information until it is
needed. This change also avoids a problem with saving hash codes
that are platform-specific.
2019-03-09 08:13:03 -07:00
Matthew Flatt
b7e0d52b96 setup/dirs: improve host lib dir search for cross-compile
Insteda of just consulting `lib-search-dirs` in the host system's
config during cross-build mode, use `lib-dir` if set to arrive at
the expected default when `lib-search-dirs` is not set.
2019-03-08 18:21:34 -07:00
Matthew Flatt
e4517afb56 expander: reject internal sequence that ends in define-syntaxes
For example, don't allow

 (let ()
   8
   (define-syntax-rule (m) 9))
2019-03-08 15:40:33 -07:00
John Clements
2cfc7ac8ae
phases->phase grammar typo (#2516) 2019-03-07 08:28:56 -08:00
Marc
8aead39bef Typo: "four identifier" -> "four identifiers" 2019-03-07 09:48:29 -05:00
Marc
7783ae22eb Typo: missing 'of' (#2517)
"the growth our code" -> "the growth of our code"
2019-03-07 14:04:28 +01:00
Matthew Flatt
d9d8d39f00 cs: fix truncation of path information in optimization info
Handle not-this-platform paths that manage to evade the heuristics for
converting paths to and from relative form. Otherwise, building can go
wrong on on Windows when using machine-independent starting files
generated on Unix-like systems.
2019-03-06 14:00:27 -07:00
Matthew Flatt
875e3b290d raco setup: add --error-out and --error-in
The `--error-out` and `--error-in` flags are meant to work together to
chain a sequence of `raco setup` steps where one of them might fail,
but other steps should proceed. The last step in that sequence should
use only `--error-in`, so that it exits with failure if any of the
steps failed.

The `both` target of the toplevel makefile uses `--error-out` and
`--error-in` to let a Racket CS build proceed as long as the
traditional Racket build made it to the last `raco setup` step, which
means that it survives package-build errors.
2019-03-06 09:43:18 -07:00
Matthew Flatt
fe6d243a71 repair for recent 32-bit MinGW 2019-03-06 08:05:02 -07:00
Matthew Flatt
fa972f0476 cs: unbreak cross compilation
Better checking in a7988c3813 exposed a problem with the expander's
recompiler in the case of cross compiling.
2019-03-06 06:44:17 -07:00
Matthew Flatt
ed807f8584 cs: use cross-compiler server for fasl
The Chez Scheme fasl format is not machine-independent when record
types are involved, so use the process that serves compilation to also
serve fasl encoding.
2019-03-06 06:25:18 -07:00
Matthew Flatt
f68248ee3b setup/setup: expose package-dependency functionality
Closes #2512
2019-03-05 20:43:09 -07:00
Matthew Flatt
828dc1f276 raco setup: allow catching cycle errors
In parallel build mode, if attempting to compile a file triggers a
cycle error that is caught and discarded, don't leave behind a
dependency (that is effectively resolved by the error) in the
parallel-worker manager.
2019-03-05 20:27:20 -07:00
Alexander McLin
01edfbbfcf *BSD: add "111" to libcrypto.rkt
Allows `libcrypto.so.111` to be discovered by racket on FreeBSD
variants such as TrueOS.
2019-03-05 20:27:11 -07:00
Matthew Flatt
a7988c3813 cs: fill in recompile-linklet
It doesn't do anything, but make it a conforming variant of the
identity function. Also, fill in checking for `compile-linklet`,
and correction documentation errors for `compile-linklet` and
`recompile-linklet`.
2019-03-05 18:11:19 -07:00
Matthew Flatt
85571bb542 cs: fix cross-compiler initialization
Disable debugging information, for example.
2019-03-05 11:47:22 -07:00
Matthew Flatt
853efb5ec9 cs: fix PLT_LINKLET_SHOW_CP0
Repair the internal call to `expand/optimize` to convert Racket
correlateds to Chez Scheme annotations.
2019-03-05 11:22:59 -07:00
Matthew Flatt
c63ee19c78 makefile: propoagate jobs config for post-unpack setup 2019-03-05 08:21:35 -07:00
Matthew Flatt
a00dd06793 further makefile and compiler/cm repairs for cross-build 2019-03-05 06:55:00 -07:00
Matthew Flatt
e921fe9709 remove accidentally added vim stackdump 2019-03-04 20:35:33 -07:00
Matthew Flatt
9981effa4b cs: revise cross-compilation protocol and fill in build steps
Makefile and configure refinements, including targets to let the
distro-build package drive a cross-build from scratch. A cross
build on Mac OS for Windows now works, for example.
2019-03-04 07:00:59 -07:00
Matthew Flatt
29ad80905e log-message: make data argument optional
The intent was never for the data argument to be optional, but a
mistake in traditional Racket's argument dispatch for `log-message`
made it optional in some cases, so the simplest way forward is to make
it consistently optional. Repair traditional Racket to use `#f`
instead of a random value when the data argument is not provided.
2019-03-03 20:37:07 -07:00
Matthew Flatt
d71d68e72a cs: add cross-compilation hooks for Racket
Add options to load a "plug-in" cross compiler, which should be a Chez
Scheme patch file plus declarations for the built-in libraries. Since
loading a patch file replaces the initial compiler, a separate
cross-compiler process is used to load the plug-in.
2019-03-03 08:04:25 -07:00
Matthew Flatt
f720220c41 io: fix file-truncate to return (void) 2019-03-02 20:17:58 -07:00
Matthew Flatt
17e873bee8 cs: unbreak Windows build 2019-03-02 19:51:31 -07:00
Matthew Flatt
2c09b2c86d cs: unbreak ffi/unsafe immobile cells 2019-03-02 11:02:00 -07:00
Matthew Flatt
068cfc6330 cs: unbreak Makefile for non-cross build 2019-03-02 06:42:40 -07:00
Matthew Flatt
c890edeea4 json: fix checking of word boundary after true, false, and null
Thanks to Greg Hendershott for pointing out the problem.
2019-03-02 05:38:06 -07:00
Matthew Flatt
33a5c30073 first step of Racket CS cross-compilation for Windows
Adjust build process to be able to generate Racket.exe, etc, for
Racket CS using MinGW. Much of this cross-compilation support can work
for building other platforms, too, but some of the details are filled
in only for generating Windows executables.
2019-03-02 05:33:26 -07:00
Paulo Matos
961454e011 Show cache contents for debugging purposes 2019-03-01 17:15:32 -05:00