Commit Graph

40586 Commits

Author SHA1 Message Date
Matthew Flatt
41cc442779 fix extraction of numbers into a 64-bit value on 32-bit platforms 2019-12-22 09:50:08 -07:00
Matthew Flatt
71fb5e0f6a schemify: expose more functions to lifting
This improvement affects the interpreter's implementation, for
example.
2019-12-22 08:35:54 -07:00
Matthew Flatt
73ed7141aa cs: fix local struct for interpreter mode
Keep in `make-struct-type` form for performance and to get names right.
2019-12-22 08:35:54 -07:00
Matthew Flatt
8a4f21c7c8 cs: avoid unnecessary procedure unnaming in core 2019-12-22 08:35:54 -07:00
Matthew Flatt
c8c3647da5 cs: interpret short-lived compile-time code
Instead of compiling the right-hand side of a `let-syntax`, interpret
using the schemify layer's safe-for-space interpreter. Similarly,
interpret the right-hand side of `define-syntax` when it is evaluated
during the enclosing module's expansion (compiling it for use when the
enclosing module is instantiated for expanding other modules).

This is an old idea, and it's effective in some cases: `racketcs -cl
racket/base` or `racketcs -cl racket` takes 20% less time with this
change. Various obstacles kept us from trying this earlier; most
significantly, the gap to finish the safe-for-space interpreter was
small enough to make it work. It's not clear that the result is an
improvement for `raco setup`, though.

The interpreter is not fast (it's about 1/4 the speed of the
traditional Racket interpreter), so there's room for improvement,
but even a slow interpreter pays off for building.
2019-12-22 08:34:41 -07:00
Matthew Flatt
53d7387f6c fix compilation manager for machine-independent conversion
When recompiling modules from machine-independent mode to
machine-specific mode, dependencies of the module to be recompiled
must be checked explicitly, but using `module-path-index-resolve` is
not a good strategy, because it doesn't load transitive dependencies.
That can create a failure later when a transitive dependency is needed
for compilation and it isn't loaded because the dependent module was
already loaded.

Relevant to #2928
2019-12-19 17:35:22 -07:00
Matthew Flatt
6a023cddfa improve internal organization of the compilation manager 2019-12-19 12:55:56 -07:00
Matthew Flatt
02b534d571 update source "foreign.rktc"
Copies change in 91fa5b6490 to original source.
2019-12-19 08:29:52 -07:00
Paulo Matos
91fa5b6490
Drop use of deprecated ffi_prep_closure (#2988)
Use ffi_prep_closure_loc instead.

Fixes #2985
2019-12-19 16:09:37 +01:00
Matthew Flatt
31636870a9 place channels: clean up allocation arena after failed message 2019-12-19 06:31:42 -07:00
Brian Wignall
ffa6d2ef74 Fix typos, via a Levenshtein-style corrector (#2982) 2019-12-19 08:28:13 +01:00
Matthew Flatt
b1d9201c13 refine test of compilation time
Relevant to #2977
2019-12-18 06:46:02 -07:00
Matthew Flatt
a135a868a8 cs: fix check for escaping procedure name 2019-12-18 06:42:33 -07:00
Matthew Flatt
c61dc30560 disable timing-sensitive thread test by default
Closes #2978
2019-12-18 06:38:22 -07:00
Matthew Flatt
22a784d25e raise timeout for raco pkg tests 2019-12-18 06:03:04 -07:00
Matthew Flatt
bf1eb4351b cs: avoid procedure names generated by schemify
Also, escape names that may look like internal encodings.
2019-12-17 20:28:39 -07:00
Matthew Flatt
27eb177b9d add {symbol,keyword}->immutable-string and string-append-immutable
There could be many more functions that produce immutable strings
directly, and we want the default functions to do that in some future
language. For now, these three rae the most immediately useful for
avoiding unnecessary allocation in Racket CS.
2019-12-17 19:41:41 -07:00
Matthew Flatt
2270513c27 cs: fix procedure-extract-target for applicable struct result 2019-12-17 17:13:07 -07:00
Matthew Flatt
63bc848f79 expander: another approach to fixing nested instantiation
Mostly reverts ee4ceb7ae4 and tries a different approach. The prevoius
approach did not handle the case where the module begin instantiated
was tiggered by a module at a different (higher) phase.

Closes #2981
2019-12-17 14:02:45 -07:00
Sam Tobin-Hochstadt
6b1dad21eb Trim requires.
Eliminates another ~300 instantiations from `racket -cl racket/base`.

small-scheme.rkt is no longer used in `racket/private`.

c.rkt was an accidentally-committe file.
2019-12-17 13:02:47 -05:00
Matthew Flatt
81d73d9849 adjust raco pkg tests to work with Racket CS overlay
Commands that use `raco` need to be `racocs`, etc.
2019-12-17 08:38:04 -07:00
Matthew Flatt
d7f2bd3e15 cs: eval multiple expressions provided with -e 2019-12-17 07:30:47 -07:00
Matthew Flatt
899aa24756 cs: avoid problem waking up on TCP connect completion
Maybe there's a problem in `rktio_poll_add_connect` that I just can't
see, or maybe it's a Mac OS bug, but `rktio_poll_add_connect` doesn't
seem to reliably wake up the process when the TCP connection becomes
ready. Traditional Racket happens to avoid the problem by registering
the connection file descriptor with the semaphore table; doing that
for Racket CS also avoids the problem there.
2019-12-17 07:08:57 -07:00
Matthew Flatt
61000a454e cs: cooperate with immutable strings for symbols in Chez Scheme
Take advantage of new guarantees/support for immutable strings within
a Chez Scheme symbol representation. Consistent use of immutable
strings at the boundary avoids potential non-determinism.
2019-12-16 18:14:16 -07:00
Matthew Flatt
c7388f9fa8 places: repair clean-up after serialize failure 2019-12-16 12:33:14 -07:00
Sam Tobin-Hochstadt
f7c39512ab Modules with tests for unsafe mode can be cross-phase persistent.
Also, mark several more modules as cross-phase persistent.
2019-12-16 13:58:35 -05:00
Matthew Flatt
2d695be78c racket/promise: repairs for custodian change
Closes #2973

Note that the test is in the "lazy" package, commit 2cc3a24343.
2019-12-16 08:58:08 -07:00
Matthew Flatt
15c0e34bed cs: fix default constructor name and initial accessor/mutator name 2019-12-16 08:39:56 -07:00
Matthew Flatt
c3a57f6fb7 docs: update license text 2019-12-15 11:17:36 -07:00
Matthew Flatt
c8877055da avoid absolute CPU time requirement in test
Relevant to #2964
2019-12-14 10:21:49 -07:00
Ryan Culpepper
6380df8aca
update expander logging (#2968)
This simplifies the expander logging in some places and adds logging for arming/disarming and scope changes (eg syntax-local-introduce) so the macro stepper can better track term identity.

This relies on corresponding changes to the racket/macro-debugger repo.
2019-12-14 01:27:24 +01:00
Brian Wignall
bcd8de5c9a Fix typos 2019-12-13 06:31:50 -07:00
Paulo Matos
b14b2400fd
Add comment to CI step (non-functional)
@samth requested a clarification of the condition under #2959 
Hopefully this comment makes it clear that we require the condition in order not to tarball and upload the clang artifact on Linux.

The choice not to test both the gcc and clang builds was made to save time and because we are not testing the compiler itself, but racket. 
Hopefully by the time we get these production compilers, they are generating correct code.
2019-12-13 08:52:28 +01:00
Matthew Flatt
58f51f15ed repair test of memory use
Fix a test to be less sensitive to the cost of non-tail recursion when
the goal is to check reachability of values from the current
continuation.

Related to #2963
2019-12-12 16:12:47 -07:00
Matthew Flatt
bf41fee58d fix argument check for instantiate-linklet
Closes #2962
2019-12-12 12:08:08 -07:00
Matthew Flatt
387f90ed92 document and test dict behavior on bad association lists
Follows up on ce3992dbf3 to document and test the constraints
that required reverting the earlier change.
2019-12-11 16:33:18 -07:00
Sam Tobin-Hochstadt
ce3992dbf3 Revert "Fix gen:dict methods for alists with duplicate keys (#2846)"
This breaks existing packages; see https://github.com/greghendershott/aws/issues/64
for an example.

Unfortunately, we probably have to live with this limitation of the
interface because of existing code.

This reverts commit 966399dec6.
2019-12-11 15:59:07 -07:00
Matthew Flatt
a191f77c15 rktio: fix Android workaround
When dynamic-library support moved to rktio, only one of two references
to (an arbitrary exported) function was updated.

Closes #2947
2019-12-11 15:21:17 -07:00
Matthew Flatt
e311eed538 increase core-tests timeout
Relevant to #2961
2019-12-11 15:08:14 -07:00
Matthew Flatt
843824c94e build with musl
Skip libunwind support for musl-based Linux environments, and avoid
`__FLOAT_BITS`, etc., in xform.
2019-12-11 14:32:56 -07:00
Fred Fu
4405ed669f add struct-type-property-predicate-procedure? 2019-12-10 10:01:11 -07:00
Paulo Matos
56afa77a2a
On Linux build with clang as well (#2959)
We build on Linux with clang and gcc, but test only the gcc-compiled version. 
On macos we only build with clang.
2019-12-10 17:55:56 +01:00
Julien Delplanque
2e56976dab Fixed small typo. 2019-12-10 06:09:32 -07:00
Paulo Matos
529c0e93a8
Correct which racket is built for CS bootstrap (#2952) 2019-12-10 09:17:43 +01:00
Matthew Flatt
a319b7e073 cs: wake up main thread blocked on fsemaphore
If a future posts to an fsemaphore that the main thread is waiting on
but went to sleep, then be sure to wake up the main thread.

Relevant to #2957
2019-12-09 07:18:16 -07:00
Matthew Flatt
6db1bdda1b cs: fix touch on a future blocked on a fsemaphore
Relevant to #2957
2019-12-09 06:25:39 -07:00
Ben Greenman
8e884089a2
doc: pidefterm -> deftech (#2956)
Use `deftech` for "structure subtype" so that Typed Racket can more
easily reference it
2019-12-08 17:55:26 -05:00
Matthew Flatt
db626bde3d schemify: don't copy uninterned symbols across module boundary
As pointed out by @gus-massa at racket/ChezScheme#15
2019-12-08 06:22:20 -07:00
Matthew Flatt
602c7b0331 avoid some GC tests on CGC
Relevant to #2954 #2955
2019-12-07 17:10:31 -07:00
Matthew Flatt
6e958d8339 net/sendurl: doc correction 2019-12-07 16:39:44 -07:00