Commit Graph

40219 Commits

Author SHA1 Message Date
Matthew Flatt
e7744efb7d expander: avoid unneeded namespace reference
This change avoids the stair-step effect that is depicted in the
"current Racket -M" build plot from the January 2019 blog post about
Racket on Chez Scheme.

The stair step in that plot is a result of a combination of effects,
but one key part is that the `.set-transformer!` linklet import (to
support macro definitions) has a reference back to the namespace.
While `.set-transformer!` normally would not be captured in any
closure, `db/private/generic/prepared` creates a thread that causes
the "prefix" part of a closure to be moved to a thread's runstack
before it can be pruned by the GC. The stair-step problem happens only
when running directly from machine-independent form, because that form
is recompiled in a way that doesn't optimize away the unused
`.set-transformer!` import. The change in this commit avoids a
reference to the namespace in some cases where it will not be useful,
which turns out to be sufficient to address the build problem.

A more complete repair would be to change the compiler to pair a
closure prefix on the runstack with a liveness mask. An even more
complete repair is to switch to Racket CS. Racket CS is immune to the
problem, even when running from machine-independent bytecode, because
its closures do not keep extra references (with the tradeoff that
there's less sharing).
2019-03-14 06:37:23 -06:00
Matthias Felleisen
077a11c84f
remove reference to Scheme Cookbook
This citation was too scholarly anyways for our Guideline. [[ The code could have been from anybody's library. ]]
2019-03-13 15:15:25 -04:00
Matthew Flatt
0257b5cf71 raco pkg: fix --source mode for some installations
Some package installation modes did not support `--source`
and similar strip modes on an intermediate directory.
2019-03-13 12:38:09 -06:00
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
Paulo Matos
e70006b5e5 Add cache to test cs jobs 2019-03-13 13:10:06 +01:00
Philip McGrath
4b69cf6995 typo fix in contracts documentation (#2530) 2019-03-13 12:39:51 +01:00
Paulo Matos
29551644d0 Show current directory 2019-03-13 11:02:26 +01:00
Paulo Matos
8cfdadce13 Add new target, arm-linux-user 2019-03-13 09:37:00 +01:00
Paulo Matos
9148649030 Pass arguments properly 2019-03-13 09:19:58 +01:00
Paulo Matos
31f0667695 Pass qemu path 2019-03-13 09:08:15 +01:00
Paulo Matos
0b715b5077 Fix path to qemu 2019-03-13 08:55:10 +01:00
Paulo Matos
2fc8f46b7e Enable use of qemu-3.1.0 2019-03-13 08:27:37 +01:00
Robby Findler
b8b0260e50 add examples for -> contract combinator
closes #2527

Thanks to Paulo Matos
2019-03-12 09:16:04 -05:00
Paulo Matos
3bd45fc0bb Set LLVM build type to minsizerel to minimize llvm build size 2019-03-12 14:46:22 +01:00
Marc
7ce28e8795 Update broken URL
Fixes #2518
2019-03-12 09:41:59 -04:00
Paulo Matos
a5514e684b Use llvm HEAD from release/8.x branch 2019-03-12 09:44:41 +01:00
Paulo Matos
d4097aeaca Fix image name 2019-03-11 20:59:17 +01:00
Paulo Matos
a4b0ed2202 Add qemu-3.1.0 build job 2019-03-11 20:57:51 +01:00
Alexis King
bb42476157 syntax/parse: Add prop:syntax-class 2019-03-11 12:18:36 -05:00
Paulo Matos
cbf21df284 Use annotate-output from devscripts 2019-03-11 17:05:43 +01: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
Paulo Matos
847f607536 Move cross testing to stage test 2019-03-11 13:26:33 +01:00
Paulo Matos
2dc3f08f19 Allow failure for x86_64:cs 2019-03-11 13:26:33 +01:00
Paulo Matos
95784935c6 Fix ppc64 arch name 2019-03-11 13:26:33 +01:00
Paulo Matos
0b4725b200 Add uuid-dev necessary for cs as GUEST 2019-03-11 13:26:33 +01:00
Paulo Matos
6dada950d9 Install guest dependencies if we are running tests natively 2019-03-11 13:26:33 +01:00
Paulo Matos
48c0f528fe Add native x86_64 testing and cross with cs. 2019-03-11 13:26:33 +01:00
Paulo Matos
0407af0e4d Fix location of chroot file 2019-03-11 13:26:33 +01:00
Paulo Matos
fed32eb4aa Fix recursive script call. 2019-03-11 13:26:33 +01:00
Paulo Matos
b65c4ed1ec Fix variable name 2019-03-11 13:26:33 +01:00
Paulo Matos
2f322efb62 Add environment information 2019-03-11 13:26:33 +01:00
Paulo Matos
037f07d744 Use CI_PROJECT_DIR, not CI_PROJECT_PATH 2019-03-11 13:26:33 +01:00
Paulo Matos
2761f31ef1 Fix a few issues 2019-03-11 13:26:33 +01:00
Paulo Matos
e157ee6415 Fix issues pointed to by shellcheck 2019-03-11 13:26:33 +01:00
Paulo Matos
f00286335a Add debug echo statement. 2019-03-11 13:26:33 +01:00
Paulo Matos
821158dcd8 apt-get update before running script 2019-03-11 13:26:33 +01:00
Paulo Matos
743f649fdc cross tests run in ubuntu 18.04 2019-03-11 13:26:33 +01:00
Paulo Matos
c09721c67c Force all scan-build jobs and prepare-cache to the same runner 2019-03-11 13:26:33 +01:00