Commit Graph

4462 Commits

Author SHA1 Message Date
Matthew Flatt
f8448c4795 raco exe: disable --embed-dlls on RacketCS, for now
The RacketCS DLL currently doesn't work as embedded.
2019-01-25 12:42:17 -07:00
Matthew Flatt
7bc0364ec7 raco exe: fix --collects-dest for non-default "compiled" 2019-01-25 12:36:55 -07:00
Matthew Flatt
a80952e05f fix struct->vector on some renamed procedures
The repair is to give the structure type a name symbol. The rest is
cleanup and tests.

Closes #2454
2019-01-25 12:04:43 -07:00
Matthew Flatt
a97b3739a3 cs: add conversion to exn:fail:contract:non-fixnum-result 2019-01-24 19:44:04 -07:00
Matthew Flatt
77e362b27c io: fix 'update mode to not create a file 2019-01-24 19:30:29 -07:00
Matthew Flatt
74387d683b update racket/HISTORY.txt for 7.2
Please merge to v7.2
2019-01-24 08:26:58 -07:00
Matthew Flatt
0ae5ff7c1e fix typo in previous commit 2019-01-23 19:56:57 -07:00
Matthew Flatt
917a8f3aeb cs: fix GRacket-startup process-global registrations
This repair avoids an extra bounce and confused menu bar for DrRacket
startup, for example.
2019-01-23 19:51:09 -07:00
Matthew Flatt
8e5e5b9467 cs: improve procedure-result-arity 2019-01-22 17:34:49 -07:00
Matthew Flatt
3b99688275 regexp: repair extracting positions from string match 2019-01-22 10:32:36 -07:00
Matthew Flatt
82d8184ca9 cs: initial cut at procedure-result-arity 2019-01-22 10:32:36 -07:00
Matthew Flatt
602b797443 cs: eq? on flonums
Take advantage of a Chez Scheme patch that makes `eq?` work on
flonums.
2019-01-22 10:32:36 -07:00
Matthew Flatt
7bcf6afb62 cs: fix error message for vector* and box* operations 2019-01-22 10:32:36 -07:00
Matthew Flatt
1d7080fbb0 schemify: cover all too-early variable uses
Don't defer any too-early variable checks to Chez Scheme, because the
schmeify-inserted checks use the right names and include a reference
to the enclosing module.
2019-01-22 10:32:36 -07:00
Matthew Flatt
c47cbbf6c5 cs: add missing prompt-tag checks in mark lookup 2019-01-22 10:32:36 -07:00
Matthew Flatt
aed8d4f3e5 cs: left associativity for +, *, and variants 2019-01-22 10:32:36 -07:00
Matthew Flatt
fdb98da0b1 cs: repair primitives incorrectly exported in unsafe form 2019-01-22 10:32:36 -07:00
Matthew Flatt
299d80e830 cs: rewrite some error messages from Chez Scheme
At least interpose on the value->string part of constructing an
error message and use the Racket-level error-value->string handler.
2019-01-22 10:32:36 -07:00
Ryan Culpepper
218ed485e1 fix {DYLD,LD}_LIBRARY_PATH for starter with embedded dll-dir
closes #2450
2019-01-21 15:01:24 +01:00
Matthew Flatt
725af574fd io: fix some error corners of encoding conversion 2019-01-20 16:38:45 -07:00
Matthew Flatt
25a4f67912 fix char-numeric?
The `char-numeric?` function was missing some Unicode characters that
have the numeric property, because it was calculated from the wrong
field of UnicodeData.txt.
2019-01-20 15:04:42 -07:00
Matthew Flatt
53d4cdd2c7 cs: unbreal seconds->date 2019-01-20 09:33:05 -07:00
Matthew Flatt
dee990ff18 cs: implement phantom bytes
Mostly just connect to the implementation as a Chez Scheme addition.
2019-01-20 09:04:26 -07:00
Matthew Flatt
dc047d8922 cs & thread: enforce custodian limit on immediate allocations
For large vector, string, and byte string allocations, check
for limits on the current custodian.
2019-01-19 17:24:05 -07:00
Matthew Flatt
e93088dd2c cs: reject overlarge _array type
x
2019-01-19 15:07:43 -07:00
Matthew Flatt
c55c922e44 cs: fix callbacks from arbitrary threads
The "wakeup" function needs to be retained from the place
that will run the callback.
2019-01-19 15:03:03 -07:00
Matthew Flatt
dc58fccc4c cs: immutable string in seconds->date result 2019-01-19 13:54:24 -07:00
Matthew Flatt
bf2fac74f2 io: use PWD to initialize current-directory 2019-01-19 13:54:24 -07:00
Matthew Flatt
24121798bd io: more repairs to subprocess
Fix backwards tratment of `force?` in `subprocess-kill`, and
check for subprocess as valid supplied group.
2019-01-19 13:54:24 -07:00
Matthew Flatt
b4cc2d849c regexp: repair match results on large string 2019-01-19 13:54:24 -07:00
Matthew Flatt
74b34c210d io: fix decoding in get-output-bytes 2019-01-19 13:54:24 -07:00
Matthew Flatt
09b3b2fb3c io: fix file-stream? to always return a boolean 2019-01-19 13:54:24 -07:00
Matthew Flatt
cd56b670ca io: fix subprocess group creation 2019-01-19 13:54:24 -07:00
Matthew Flatt
21712fecc9 cs: print results of -e command-line expressions
Also, wrap an individual prompt around each evaluation.
2019-01-19 13:54:24 -07:00
Matthew Flatt
2fe2b7a8a7 cs: fix thread initial prompt and parameterization
The initial parameterization needs to be inside the initial prompt,
not outside.
2019-01-19 13:54:24 -07:00
Matthew Flatt
a2b1fbea3f io: speed up read-line a little 2019-01-19 13:54:24 -07:00
Robby Findler
962c7d4397 fix a bug in define/merge-cache
please include on the release branch
2019-01-18 21:08:36 +00:00
Jay McCarthy
7c08ded63b Fixes #2440 2019-01-18 16:20:47 +00:00
Matthew Flatt
422d5579b3 atan: exception on exact 0+1i or 0-1i, exact 0 on positive x
Change from treating exact 0+1i and 0-1i like the corresponding
inexact values.

Also, change from treating `(atan 0 x)` as exact 0 only when x is
exact. That's consistent with `angle` producing exact 0 for a positive
real number.
2019-01-17 20:08:49 -07:00
Matthew Flatt
f27c9330a5 magnitude: return +inf.0 for a complex with [+-]inf.0
... even if the oyther component is +nan.0. This change makes
`magnitude` consistent with the hypot() C-library function.
2019-01-17 19:58:39 -07:00
Matthew Flatt
f5babc4246 cs: more divide-by-zero exception conversions 2019-01-17 19:58:39 -07:00
Matthew Flatt
22b721be8a io: require absolute path for current-load-relative-directory 2019-01-16 21:29:01 -07:00
Matthew Flatt
a044c2ad05 io: conform to print-vector-length and print-struct 2019-01-16 21:15:34 -07:00
Matthew Flatt
11f12d69bd cs: fix hashing on vector cycles 2019-01-16 20:50:41 -07:00
Matthew Flatt
cddcd57267 regexp: fix O(size) behavior for large strings 2019-01-16 20:39:23 -07:00
Matthew Flatt
6c8ba483a1 regexp: fix consumption of bytes from a port 2019-01-16 20:39:19 -07:00
Matthew Flatt
b19671f0f5 regexp: fix matching on port given prefix bytes 2019-01-16 18:23:57 -07:00
Matthew Flatt
be19996953 read and string->number: fix large-exponent cutoff and # in fractions
The cutoff point for large-magnitude exponents (forcing a +inf,0 or
0.0 result) was wrong for bases below 10, and its did not take into
account the mantissa magnitude for some number forms.

Also, change the parsing of numbers with both `/` and `#` to be more
consistent. A `#` anywhere in the number should trigger an inexact
teratment 0 in the denominator (so inifnity or not-a-number instead of
divide-by-zero), even if `#` is only in the numerator. Meanwhile,
setting `read-decimal-as-inexact` to #f should count `#`s as `0`s and
not trigger inexact treatment.
2019-01-16 14:50:02 -07:00
Matthew Flatt
345339990f cs: repair some number-test failures 2019-01-15 20:30:53 -07:00
Matthew Flatt
349207d19f cs: repair procedure name, arity, and error-message support
The "procs.rktl" tests now pass.
2019-01-15 20:30:53 -07:00
Gustavo Massaccesi
c5a74c173e fix typos in error messages 2019-01-15 15:52:48 -03:00
Matthew Flatt
0aa2fdc476 cs: fix Mac OS install to include "Starter.app" 2019-01-14 20:04:44 -07:00
Matthew Flatt
95367b4b52 schmify: add some unsafe conversions
Explicitly substitute unsafe some non-primitives, which won't be
automatically substitued in Chez Scheme by compiling in unsafe mode.
2019-01-14 18:38:46 -07:00
Matthew Flatt
94a4f6d703 io: streamline bytes output port 2019-01-14 18:16:27 -07:00
Matthew Flatt
0e6c441f37 thread: break-suspend as a faster virtual register
Slightly speeds up atomic mode for io.
2019-01-14 18:03:21 -07:00
Matthew Flatt
ad2c0624b5 cs: fix struct proc names from make-struct-type 2019-01-14 14:53:49 -07:00
Matthew Flatt
40bc59d512 schemify: fix handling of #<void> as 'inferred-name
It's not supposed to suppress a srcloc-based name.
2019-01-14 09:07:42 -07:00
Matthew Flatt
8b9525f1c9 io: fix udp-set-receive-buffer-size! error reporting 2019-01-14 08:56:57 -07:00
Spencer Florence
75550e79cc fix finding first argument of make-pipe when more than one argument is provided 2019-01-14 08:45:47 -06:00
Matthew Flatt
2fe5f40dd7 io: fix logger bugs 2019-01-13 21:04:15 -07:00
Matthew Flatt
0602c7e21b cs: fix prop:chaperone-unsafe-undefined-triggered error 2019-01-13 18:13:14 -07:00
Matthew Flatt
4c53d3c380 cs: add missing unsafe-struct*-cas! 2019-01-13 09:42:50 -07:00
Matthew Flatt
f287f21ab2 cs: fix unsafe-[us]16vector-{set,set!} 2019-01-13 09:38:51 -07:00
Matthew Flatt
e9593749eb fix procedure names on syntax-source and related 2019-01-13 09:26:41 -07:00
Matthew Flatt
df93054d18 cs: dsiable srclocs for Rumble in stack trace by default 2019-01-13 08:41:53 -07:00
Matthew Flatt
6b52f9eedb cs: fill in procedure-name and srcloc interaction
Infer procedure names based on source locations, and suppress a
procedure name when it has #<void> for its 'inferred-name property.

Threading this information through the Chez Scheme layer involves a
hack, where a name starting with "[" indicates either "no name" or
"inferred from path".
2019-01-13 08:41:53 -07:00
Matthew Flatt
3b76e44730 cs: path adjustments on write and read of compiled code
Use `current-write-relative-directory`, etc.
2019-01-13 08:41:53 -07:00
Matthew Flatt
56846a9ca2 cs: guard against cyclic quoted constants
But only mutable hash tables and prefabs are relevant, since
no other serializable data has cycles and can get through
`datum->syntax`.
2019-01-12 14:25:58 -07:00
Matthew Flatt
a039248b9f cs: unbreak unsafe-get-place-table 2019-01-11 20:10:43 -07:00
Matthew Flatt
11120977b8 cs: add PLT_LINKLET_SHOW_CP0 2019-01-11 20:09:17 -07:00
dharmatech
0108bf43a9 cs/README.txt - fix typos 2019-01-09 15:31:28 -03:00
Matthew Flatt
7810232b67 no warning for unsupported long-term poll set operations 2019-01-08 18:52:32 -07:00
Matthew Flatt
1888663702 cs: fix unsafe-f64vector-{ref,set!} 2019-01-08 18:52:32 -07:00
Matthew Flatt
77c7b2b147 make-readtable: fix argument checking 2019-01-08 18:52:32 -07:00
Matthew Flatt
9aa0965aaa cs: switch to some system primitives
Replace some hacks with other hacks that are slightly more
respectible.
2019-01-08 18:52:32 -07:00
Matthew Flatt
eb3ba2052e cs: repair prompt around top-level evaluation 2019-01-08 18:52:32 -07:00
Matthew Flatt
8777d89eaf cs: fix exception raised by check-not-unsafe-undefined 2019-01-08 18:52:32 -07:00
Vincent St-Amour
09d25777d6 Post-release version for the v7.2 release 2019-01-07 10:29:01 -06:00
Matthew Flatt
53baa3f8cc src/makefile: adjust cs target to explain configure 2019-01-05 19:16:59 -07:00
Matthew Flatt
edcd1833e7 cs: move build/cs to build/cs/c
Use "cs/c" to be parallel to the source tree, because making them
different is asking for trouble (e.g., using `configure` without
a separate "build" directory goes wrong).
2019-01-05 19:00:32 -07:00
Matthew Flatt
f9c2a9395b remove "2018"s and "PLT Design"s 2019-01-05 16:31:57 -07:00
Matthew Flatt
52358ec42e small adjustments to udp-set-receive-buffer-size!
Minor adjustments to a commenably complete addition.
2019-01-05 16:31:57 -07:00
Greg Hendershott
4cd34ce10d Add udp-set-receive-buffer-size! 2019-01-05 14:56:25 -07:00
Greg Hendershott
ea663550a9 Fix rktio_create_console decl
The rktio/parse.rkt grammar doesn't handle empty argument lists and
was choking on this line, before it even got to my new line adding
rktio_udp_set_receive_buffer.

Fix by following example of using `(void)` instead of `()`. Two notes:

- I forget which variation of C or C++ requires (void) instead of ().

- Strictly speaking, this commit isn't part of the theme of this PR.
  If I squash the other commits down to one, maybe I should leave this
  separate.
2019-01-05 14:56:25 -07:00
Matthew Flatt
e99de2bf79 cs: implement custodian memory limits 2019-01-05 11:02:27 -07:00
Matthew Flatt
bcc9b2264e improve reporting of primitive-count startup error 2019-01-03 10:24:05 -07:00
Matthew Flatt
5a12d7bf71 cs: remove bound-identifier=? from '#%kernel table 2019-01-02 10:41:41 -07:00
Matthew Flatt
9731394e2a cs: ensure that arguments to foreign functions are retained
Make a call to a foreign function behave as in traditional Racket: the
arguments are considered reachable un their unwrapped forms until the
foreign function returns.
2019-01-01 16:30:39 -07:00
Matthew Flatt
709f327e4e io: remove incorrect symbol shortcut for format and "~s"
As exposed by a "print.rktl" test, the shortcut was wrong for symbols
that write with escapes.
2019-01-01 14:33:26 -07:00
Matthew Flatt
f85d18aed6 io: fix printing of '|| 2019-01-01 13:58:48 -07:00
Matthew Flatt
13e2817a2d fix typo in comment and sync "startup.inc" 2019-01-01 13:58:39 -07:00
Matthew Flatt
c60a081115 expander: fix bootstrap to work on RacketCS
The expander relies on an extra primitive when running on RacketCS.
2019-01-01 13:43:04 -07:00
Matthew Flatt
b9e1d23f0d cs: allow unsafe-undefined in variables
Distinguish "not initialized" from "value is unsafe-undefined".
Otherwise, `(dynamic-require 'racket/unsafe/undefined 'unsafe-undefined)`
 fails.
2019-01-01 13:27:05 -07:00
Matthew Flatt
dbabafa147 cs: support second argument to primitive-table
The two-argument mode is needed to support building RacketCs using
RacketCS.
2019-01-01 13:14:07 -07:00
Matthew Flatt
7797d3672b fix 'interior mode for malloc 2019-01-01 11:30:11 -07:00
Matthew Flatt
5cec8d52c2 schemify: fix quoted box in interpret mode 2019-01-01 09:19:18 -07:00
Matthew Flatt
7e83a6038a schemify: fix pessimization of constructor applications
A missing `unwrap` caused references to structure constructors to be
treated as potentially non-primitive procedures, which significantly
slows down calls to the constructor.

Probably, this started going wrong at a point where original names
were more consistently associated to defined identifier.
2018-12-31 14:16:31 -07:00
Matthew Flatt
21bbf1b42e cs: vfasl for Windows and Unix variants 2018-12-31 11:24:35 -07:00
Matthew Flatt
47d42d88cb cs: add -luuid for linking Chez Scheme on Linux 2018-12-31 10:09:24 -07:00
Matthew Flatt
846c40ff6c cs: restore vfasl 2018-12-31 08:16:45 -07:00
shhyou
c21beab167 Add sub-range-binder for define-logger 2018-12-30 18:39:34 -06:00
Matthew Flatt
e7c6efdaa8 cs: disable vfasl for now
Further testing uncovered a problem with vfasl loading.
2018-12-30 16:10:35 -07:00
Matthew Flatt
3c2003d01e cs: fix for fasl-related definition 2018-12-30 14:00:05 -07:00
Matthew Flatt
1052bc8dff unbreak cify build 2018-12-30 06:10:11 -07:00
Matthew Flatt
59246a0107 cs: fix call-with-immediate-continuation-mark and chaperones
Also, repair `call-with-immediate-continuation-mark` in tail
position with respect to a prompt.
2018-12-30 06:00:50 -07:00
Matthew Flatt
e37199cd7a cs: fix letrec
Report source name when accessing a variable too early, and allow
multiple returns (based on continuation capture) for the right-hand
side of a `letrec`.

The repair directly implements `letrec` as needed in terms of `let`
and `set!`, instead of relying on Chez Scheme's `letrec`, unless
right-hand sides are simple enough. Implementing `letrec` that way
risks losing Chez Scheme optimizations, but schemify takes care
of many improvements already.
2018-12-30 05:18:16 -07:00
Matthew Flatt
cea82c1ddc cs: use vfasl for boot files 2018-12-30 05:18:16 -07:00
Matthew Flatt
326e555146 expander: adjust stx serialization for RacketCS
Get more of the benefit of traditional Racket's lazy bytecode
unmarshaling by using an explicit `fasl->s-exp` stap on the serialized
form of syntax objects. This approach also avoids generating pointless
machine code for constructing the serialized form, effectively using
`fasl->s-exp` as an interpreter. The result is significantly smaller
".zo" files for RacketCS and slightly faater load times.
2018-12-30 05:18:16 -07:00
Matthew Flatt
75c30b4e2e cs: faster srcloc unmarshaling 2018-12-30 05:18:16 -07:00
Matthew Flatt
2c1cf20d17 cs: fix build to uncompress boot files
The uncompress step was broken by the switch to use "setup-go.rkt".
2018-12-22 18:35:56 -07:00
Matthew Flatt
86bbdab1de cs: reduce startup code size 2018-12-22 18:35:56 -07:00
Matthew Flatt
2fc594fcc4 cs: make public udp-bound? and udp-connected? safe 2018-12-20 21:31:43 -07:00
Matthew Flatt
d14238ae31 cs: fix udp-receive!
Closes #2433
2018-12-20 21:24:55 -07:00
Matthew Flatt
b38d437a00 file/untar: allow \0s for user and group ids
Some .tar packer (on Windows?) zeros out the user and group fields,
and `file/untar` doesn't use them anyway.
2018-12-19 19:34:39 -07:00
Sam Tobin-Hochstadt
9a42fab7fe Rebuild expander for b1e765ca31. 2018-12-13 16:00:17 -05:00
Sam Tobin-Hochstadt
c77388eeef Include radix in low-level error message. 2018-12-13 16:00:17 -05:00
Sam Tobin-Hochstadt
d2fdfe973e Fix expander demo to go with 19e709d27b. 2018-12-13 16:00:17 -05:00
Dan Feltey
a0fdee59b4
Add support for collapsible contracts (#2367)
* Add support for space-efficient vector and arrow contracts.

When an eleventh contract would be applied to a function or vector,
switch representation for the wrapper and try eliding redundant
checks. The resulting value keeps a constant number of
chaperone/impersonator wrappers regardless of the number of contracts
applied to it, and won't run any (provably) redundant checks.

This avoids a pathological case where, e.g., a function crosses a
boundary inside a loop, and gets wrapped N times (or worse, 2^N).

The optimization for function contracts currently only applies for
fixed-arity functions and contracts, and only for functions with known
result-arity of 1. These limitations are not fundamental.

Checking specific checks is not as optimized as for regular arrow
contracts yet. (Specifically: arity-specific wrappers and
tail-marks-match support is missing.) Again, not a fundamental
limitation.

Further described in the OOPSLA 2018 Paper: "Collapsible Contracts: Fixing a Pathology of Gradual Typing"

In collaboration with Ben Greenman, Christophe Scholliers, Robby Findler, and Vincent St-Amour.
2018-12-13 14:58:56 -06:00
Alexis King
15d0ccc2c0 Fix splicing-parameterize around begin 2018-12-13 14:28:50 -06:00
Alexis King
1d1245b092 Allow explicitly providing a parent logger to define-logger 2018-12-13 10:22:31 -06:00
Matthew Flatt
347f5b8ccf compiler/cm: unbreak dependency checking
Recent changes to adapt cm to cross-multi mode also attempted to
improve dependency checking to avoid prematurely committing to
compiling an old dependency, but that improvement was broken.
2018-12-12 08:44:06 -07:00
Matthew Flatt
aded42468e expander: fix use of root namespace for readers 2018-12-10 20:38:42 -07:00
Sam Tobin-Hochstadt
b1e765ca31 Check result of reading linklet hash. 2018-12-10 10:40:52 -05:00
Sam Tobin-Hochstadt
404964ea08 Reduce some build system dependencies. 2018-12-10 10:40:52 -05:00
Caner Derici
48cf9e54e3 regexp: add a target for writing the zo 2018-12-10 05:50:22 -07:00
Matthew Flatt
140043fb65 in-indexed: repair call to wrapped continue-after-pos+val?
Closes #2418
2018-12-09 12:27:29 -07:00
Matthew Flatt
24aeea28c1 file-position: repair for OS pipe after peek
Closes #2419
2018-12-09 12:16:10 -07:00
Matthew Flatt
db2ac559a7 compiler/cm: avoid rewriting machine-indepedent files
The multi-cross mode, don't rewrite a machine-indepedent file
by recompiling it to itself. This shouldn't matter, but not
touching files makes the result cleaner.
2018-12-09 11:02:09 -07:00
Matthew Flatt
344b72b4f8 cs: reconstruct let* in fallback interpreter
Representing nested `let`s as `let*` avoids a limitation
in Chez Scheme's `fasl-read`, for now.
2018-12-09 08:54:23 -07:00
Matthew Flatt
476bc8b879 schemify: lift "empty" closures to top of a module body
When a `[case-]lambda` form's only free variables are at the module
level, the Schemified form is a `[case-]lambda` form whose only free
variables are in an enclosing `lambda` for a linklet. Since those are
not completely closed, to make the allocation pattern consistent with
traditional Racket, Chez Scheme needs a hint to allocate the closures
once per linklet instantiation.
2018-12-09 08:54:23 -07:00
Matthew Flatt
0261332ac3 io: avoid closure allocations for pipes and byte-string ports 2018-12-09 08:54:23 -07:00
Matthew Flatt
bcf6492d56 io: reduce overhead of a byte string output port
Make it a thinner wrapper around the output half of a pipe.
2018-12-09 08:54:23 -07:00
Matthew Flatt
9f27b90e31 io: change port from table of functions to table of methods
Adjust the internal port representation to that it doesn't inherently
require allocating lots of closures.
2018-12-09 08:54:23 -07:00
Ben Greenman
0c2ada98ff json: improve 'bad input' error message (#2420)
When 'read-json' finds "bad input", print the input to try to show what
went wrong.
2018-12-08 16:31:58 -05:00
Matthew Flatt
a66038a427 io: shortcut for common format patterns 2018-12-07 11:03:53 -07:00
Matthew Flatt
0f413d38c5 cs: faster path for simple foreign calls 2018-12-07 09:53:49 -07:00
Matthew Flatt
45046f4c5d fix placement of "instantiate" starting counter 2018-12-07 07:53:56 -07:00
Matthew Flatt
99feebf070 ephemeron-value: add optional "retain" argument
When an ephemeron is accessed through a weak mapping from the same key
that is used in the ephemeron, and when the key is not otherwise
reachable, there can be a race between extracting the value from the
ephemeron and performing a GC that reclaims the key. Avoid that race
by supplying the key back to `ephemeron-value`, which ensures that the
key remains reachable until the value is extracted.

In many cases, supplying the key as the second argument would also
work --- since that argument is used as a replacement value when the
key is inaccessible, but the key can't become inaccessible if it's
pending as a replacement value. A separarate optional argument to
`ephemeron-value` seems clearer and more general, though.
2018-12-07 06:31:18 -07:00
Matthew Flatt
9ce4dd8770 raco exe: fix excessive memory use
Avoid retaining namespaces that are created to gather runtime paths.
If expansion generates a lot of instances with a lot of type
information, for example, this repair can save a lot of space.
2018-12-07 05:31:43 -07:00
Matthew Flatt
f9551bcaa5 remove accidentally committed debugging file 2018-12-06 16:48:49 -07:00
Matthew Flatt
beb8445d14 cs on Windows: almost support embedded DLLs
Wire in the pieces to make embedded DLLs work, but a DLL based
on Chez Scheme doesn't actually work as embedded, yet.
2018-12-06 16:46:48 -07:00
Matthew Flatt
fed7e5e95c reader: immutable vectors and boxes from read-syntax
Closes #1745
2018-12-05 16:26:57 -07:00
Gustavo Massaccesi
561fe7e2e7 cs: more pure primitives 2018-12-04 22:03:27 -03:00
Gustavo Massaccesi
ff5f2ae69a optimizer: (cdr <list?>) is a <list?>
In case it is not an error, the result is a list.
2018-12-04 18:34:21 -03:00
Ben Greenman
88b165314a
fix pair accessor error messages (#2413)
Change the error message for some functions like `caddr` so they
describe pair structures that they expect
2018-12-04 16:04:01 -05:00
shhyou
8043768b4c Support unsyntax-splicing in vector quasisyntax
If the sub-template inside #(...) is unsyntax-splicing instead
of list, produce the template #((~@! . ????)) instead of calling
(datum->syntax o list->vector o syntax->list). Fixes #2402.
2018-12-04 12:00:01 -06:00
Philip McGrath
b3104a6acd add #:result clause to for/lists and for*/lists 2018-12-04 10:12:43 -07:00
Matthew Flatt
6d8596bae3 raco setup: repair more problems with multi-cross mode
Fix some race conditions involving concurrent setup tasks that are
each trying to generate both machine-independent bytecode and
machine-specific bytecode.
2018-12-04 06:05:53 -07:00
Ben Greenman
b38ce36c92
glob: add 'glob-quote' (#2397)
add a function to escape any glob wildcards in a path or string

also add a private `glob-element->filename` function so that, e.g., the pattern
`a\*` matches the file named `a*` (previously, the match would fail and
I think it was impossible to match for only `a*`)
2018-12-04 00:21:14 -05:00
Matthew Flatt
e729d35915 bump version number
Should have bumped with 37929f2191.
2018-12-03 20:24:13 -07:00
Matthew Flatt
37929f2191 cs: make interp layer safe-for-space
Fix the fallback interpreter (which is used for the "outside" of a
module that is too big to compile) so that it's safe-for-space.

This change is unlikely to repair any immediate problems, but space
safety problems are difficult to detect and avoid when the underling
implementation is not safe-for-space so fixing the interpreter is
likely worthwhie in the long run.
2018-12-02 15:58:59 -07:00
Matthew Flatt
74abc61f03 cs: fix module-prompt handling in interpret mode 2018-12-01 09:33:23 -07:00
Matthew Flatt
0c6d22a04a hash-ref: guard against fixnum argument when JIT-inlined
Closes #2409
2018-12-01 06:22:08 -07:00
Matthew Flatt
3a19809268 compiler/cm: protect a ".dep" use against old versions 2018-12-01 06:00:49 -07:00
Matthew Flatt
b94f84a909 expander: load modules on demand for recompile 2018-11-30 22:54:10 -07:00
Matthew Flatt
68e105c0ed cs: prompts for module-body expressions
Module definitions and expression need to have a prompt around them to
delimit continuation capture, variable assignment needs to happen at
the right point to ensure that reassignment is guarded and
non-assignment is detected. But avoid the prompt when it's not needed,
such as around function definitions.

Closes #2398
2018-11-30 22:54:10 -07:00
Matthew Flatt
6f0748108c cs: fix module-variable initialization order
Similar to a255def019, but for side effects potentially
exposed by definition RHS expressions, instead of
expressions not in a definition. Improve that commit and
this one by only forcing variable assignments at non-simple
expressions.
2018-11-30 22:54:10 -07:00
Matthew Flatt
8b15ad971c cs: fix embedded modules in places 2018-11-30 22:54:10 -07:00
Matthew Flatt
f2fb2ebc55 racketcs: fix command-line handling after non-flag argument 2018-11-30 22:54:10 -07:00
Philip McGrath
bd7de80d98 raco pkg new: Remove deprecated sudo: false from .travis.yml
Travis is eliminating its container-based infrastructure
and deprecating the `sudo` keyword.

This commit also updates the example build matrix to use
more recent Racket versions.

Corresponds to https://github.com/greghendershott/travis-racket/pull/29
2018-11-29 19:21:13 -05:00
Matthew Flatt
2e3b16f77c makefile: fix redundant path separators 2018-11-29 10:08:19 -07:00
Matthew Flatt
e607ae09de makefile: speed up make in "cs" build directory
Take advantage of ".d" files that are already generated to speed up a
`make` in the "cs" build dierctory when nothing needs to be done.
2018-11-29 09:41:49 -07:00
Philip McGrath
2798608ccd cs: fix error message from raise-argument-error
Closes https://github.com/racket/racket/issues/2400
2018-11-28 06:19:12 -07:00
Matthew Flatt
a7499ab854 expander: more determinsitic machine-independent "bytecode"
Discard local-variable names to avoid `gensym` artifacts in the same
way that a more complete compilation would discard the names. This
change does not affect function names, which are preserved through
separate properties.
2018-11-27 20:01:43 -07:00
Matthew Flatt
8c6af1a234 expander: avoid format in common paths
Use `string-append`, `symbol->string`, etc., instead of `format` for
constructing some symbols.
2018-11-27 19:26:59 -07:00
Matthew Flatt
432dfcdb4a hash-{map,for-each}: strengthen try-order? guarantee
Promise a specific order for a hash table that uses only certain
primitive, non-compound datatypes for keys.
2018-11-27 17:50:48 -07:00
Matthew Flatt
5f940e462e call-with-atomic-output-file: option to make Windows moves more atomic
It most cases, it's more important for `compiler/cm` to reliably
replace a file that might be busy than to make the file update atomic.
To suport that kind of use, `call-with-atomic-output-file` implemented
a fairly reliable, multi-step, non-atomic process for replacing a file
on Windows.

For recompilation of bytecode in machine-independent form, however,
`compiler/cm` now really wants to atomically write a replacement
bytecode file. That's not generally possible on Windows (except on
NTFS with transactions, which are discouraged...), but MoveFileEx work
atomically in some cases and it's likely to work for the cases needed
by `compiler/cm`. Probably.

So, add a mode to `call-with-atomic-output-file` to get "more atomic"
updates on Windows. This mode is enabled by a callback that makes the
caller responsible for deciding what to do with the move fails, such
as waiting a while and trying again. And `compiler/cm` now waits a
while and tries again, up to a limit, which should be good enough for
recompilation.
2018-11-27 09:47:11 -07:00
Robby Findler
b68866db0f added object=-hash-code 2018-11-27 16:00:24 +01:00
Matthew Flatt
a001b5b231 raco setup: multi-machine cross-compile support
Enable `raco {setup|make}` to build two sets of compiled files: one
set that is suitable for the current machine, and another set that is
suitable for a different machine or for all machines (i.e.,
machine-independent bytecode).

In the long run, this new `raco setup` mode support cross compilation
where the build machine and target machine have different bytecode
formats --- unlike the current cross-compliation mode, which relies on
there being a single bytecode format in traditional Racket for all
platforms.

In the short run, the new mode enables the faster creation of
Racket-on-Chez distribution builds. The build server can send out
machine-independent bytecode to client machines while using
machine-specific bytecode for itself to drive the build process.

The new compilation mode relies on a somewhat delicate balance of the
`current-compile-target-machine` and `current-compiled-file-roots`
parameters (as reflected by the `-M` and `-R` command-line flags for
Racket) as well as cross-compilation mode (as enabled by the `-C`
command-line flag).
2018-11-26 19:49:33 -07:00
Matthew Flatt
4a080ada04 system-type: add 'target-machine
The 'target-machine result from `system-type` reports the
default value of `current-compile-target-machine`.

Also, fill in pieces to make `setup/cross-system` work
for RacketCS, although cross-compilation is still several
steps away.
2018-11-25 12:10:09 -07:00
Matthew Flatt
7cdf9f1c0b raco setup: remove -M/--compile-any
This commit mostly reverts 9441f7075f, because it looks like relying
on `racket`-level configuration is the right idea after all.
2018-11-25 12:10:09 -07:00
Matthew Flatt
695e270197 compiler/cm: avoid race in recompile
The new path for recompiling from machine-independent files
trues to read a ".zo" file without holding the recmopilation
lock and without an `exn:fail:filesystem` handler.
2018-11-25 08:11:21 -07:00
Matthew Flatt
3833a22f75 setup: leave cm trace handler alone in places
When `--vv` is not provided, leave the default `compiler/cm` trace
handler in place so that logging works as intended.
2018-11-25 08:06:28 -07:00
Matthew Flatt
055642a40a raco setup: less eager removal of ".zo" files
Wait until replacement is more assured before deleting an existing
".zo" file.

Also, don't delete a ".zo" file that is later in the
`current-compiled-file-roots` search path than the one being written.
This refinement supports setting up a search path to try
machine-specific compiled files and fall back to machine-independent
files, for example.
2018-11-24 19:39:01 -07:00
Matthew Flatt
a70c1b5242 compiler/cm: add missing version check 2018-11-24 12:02:41 -07:00
Matthew Flatt
1d2a7dec62 raco setup: show target machine in startup info 2018-11-24 11:46:36 -07:00
Matthew Flatt
9441f7075f raco setup: add -M/--compile-any
Add `-M`/`--compile-any` to `raco setup`, `raco pkg install`, etc., to
build machine-independent bytecode, which is useful in the process of
building distributions.
2018-11-24 11:19:09 -07:00
Matthew Flatt
0bc010d972 raco setup: avoid recompilation in parallel mode
The `parallel-lock-client` protocol expects a #f back when a
file was meanwhile compiled by another process. So, don't
just forget about a file after it is compiled, in case there
is still a lock request on the way for that file.
2018-11-23 18:14:42 -07:00
Matthew Flatt
4946196c91 recompile-linklet: accept option argument
Add an options argument for consistency with `compile-linklet`.
2018-11-23 18:04:48 -07:00
Matthew Flatt
ac70e9a058 compiler/cm: detect and take recompilation shortcut
When a module is compiled to platform-independent form, recompile from
that form for the current platform, instead of recompiling from source.
2018-11-23 17:59:20 -07:00
Matthew Flatt
1c437793a6 expander: fix another recompilation problem
Fix merging of extra-inspector sets, which recompilation ignores
anyway.
2018-11-23 11:28:51 -07:00
Matthew Flatt
600a6b4c29 expander: fix compiled-expression-recompile
Linklets other than the body linklet may need conversion from
machine-independent form to machine-specific form.
2018-11-23 09:58:02 -07:00
Matthew Flatt
d6802444fa cify: repair bytes-ref and bignum handling
These problems were exposed by cifying `racket/fasl`.
2018-11-23 08:03:45 -07:00
Matthew Flatt
f47f685af9 schemify: fix srcloc marshaling
Partly fix it, anyway. More is needed in general to reduce
recording build-time paths in compiled code.
2018-11-22 19:31:46 -07:00
Matthew Flatt
19e709d27b revise compile-target parameter
Replace `compile-machine-independent` with
`current-compile-target-machine` to set up
better for future cross-compilation support.
2018-11-22 17:36:31 -07:00
Matthew Flatt
c5f000c4fc expander: recompile converts from machine-independent to -specific
Actually, the machine-independent-to-specific part is trivial. The
hard part was making `compiled-expression-recompile` enable
cross-linklet optimization as it recompiles, since that involves
pulling apart metadata and putting it back together afterward.
2018-11-22 16:39:55 -07:00
Matthew Flatt
2bbaa64cd6 add machine-independent compilation mode
The `compile-machine-indendent` parameter controls whether `compile`
creates a compiled expression that writes (usually in a ".zo" file) to
a machine-independent form that works for anhy Racket platform and
virtual machine. The parameter can be set through the
`-M`/`--compile-any` command-line flag or the `PLT_COMPILE_ANY`
environment variable.

Loading machine-independent code is too slow for many purposes, but
separating macro expansion from backend compilation seems likely to be
a piece of the puzzle from cross-compilation and faster distribution
builds.
2018-11-22 13:41:36 -07:00
Matthew Flatt
d84d35870a expander: fix set! in namespace from module->namespace
Closes #2369
2018-11-22 07:21:30 -07:00
Matthew Flatt
ad14cca1e8 expader: fix caching for flattening 2018-11-22 06:39:38 -07:00
Matthew Flatt
fd462604bd cs: make gensym add a counter for the printed form
Although the counter doesn't make the generated symbol any more
distinct, it's often a helpful hint.

Closes #2396
2018-11-22 05:43:53 -07:00
Sam Tobin-Hochstadt
df88852e24 Additional files to ignore. 2018-11-21 12:39:56 -05:00
Sam Tobin-Hochstadt
18afdb54d6 Use linklet functions from '#%linklet instead of from lower level. 2018-11-21 12:39:56 -05:00
Matthew Flatt
744d440ab9 schemify: ensure that deserialized constants are immutable
Closes #2394
2018-11-21 10:16:19 -07:00
Matthew Flatt
669e51768d io: normalize path to current-directory[-for-user]
Closes #2393
2018-11-21 09:58:16 -07:00
Matthew Flatt
299692a38a io: fix initial print-as-expression value
Closes #2391
2018-11-21 09:48:14 -07:00
Matthew Flatt
e5bfba5f3c cs: repairs for byte-string comparison operators 2018-11-21 09:38:32 -07:00
Matthew Flatt
7231f11b60 cs: don't treat crashes as constract errors
Converting "invalid memory reference" to an `exn:fail:contract` (which
is the default conversion) hides crashes as success when a test
expects an error.

Also, fix a bug that was hiding as an expected excdeption.
2018-11-21 09:28:28 -07:00
Matthew Flatt
701854a404 expander: remove unused require of racket/fasl 2018-11-21 09:08:48 -07:00
Matthew Flatt
13fa23e79a unbreak cify build 2018-11-21 08:37:48 -07:00
Matthew Flatt
6f6d121611 move linklet bundle and directory to expander layer
The Racket and RacketCS implementations had separate copies of
linklet-directory and linklet-bundle reading and writing. Move the
implementation into the expander layer.

The primitive '#%linklet instance now omits directory and bundle
operations and `read-compiled-linklet`. It intead must provide
`write-linklet-bundle-hash`, `read-linklet-bundle-hash`, and
`linklet-virtual-machine-bytes`.
2018-11-21 07:23:50 -07:00
Robby Findler
8cee5a09da improve the redundancy checking for class contracts
In particular, when there isn't any redundancy detected, then
just make a single call into the projection and create just a single
class.

This seems to help on at least one of the configurations of
dungeon, which completes in about 6 minutes with this commit
and I gave up waiting after 15 minutes for the version of
racket that didn't have it
2018-11-20 21:30:39 -06:00
Gustavo Massaccesi
b4e3030a0d rumble: fix some type checks in bytes.ss 2018-11-20 16:50:50 -03:00
Sam Tobin-Hochstadt
940e46df6c Rebuild expander.
Should have been included in 1258d9d28.
2018-11-20 11:56:28 -05:00
Sam Tobin-Hochstadt
1258d9d28a
Point to body forms in missing-expression error. (#2356)
Improves the error message for:

```
(define-syntax (like-lambda stx)
  (syntax-case stx  ()
    [(_ e) #'(lambda () e)]))

(like-lambda (define x 1))
```

Based on a report from @pkoronkevich.
2018-11-20 11:43:28 -05:00
Matthew Flatt
daed85e1dc setup/dirs: fix cases where paths are unavailable
When an executable distibution is created, some path become
unavailable at run time, such as the result of `find-links-file`.

Change the contract on those functions and adjust the implementation
to return `#f` in those cases. This is a backward-compatible change in
the sense that uses that now return `#f` would have crashed before
(although it does shift the blame in that case).

Based on an initial patch by Shu-Hung.

Closes #2352
2018-11-19 19:15:49 -07:00
Sam Tobin-Hochstadt
c1d2e4031e
Guard free-identifier=? comparisons in shared. (#2382)
Fixes #2381.
2018-11-17 22:26:11 -05:00
Alex Feldman-Crough
c4189ff934 untar: treat the tag #\nul as a synonym for #\0
The GNU Tar manual (at
https://www.gnu.org/software/tar/manual/html_node/Standard.html) says
that older archives may have the typetag AREGTYPE (\0) instead of
REGTYPE ('0'), and that AREGTYPE should silently be treated as
REGTYPE.
2018-11-17 18:00:15 -07:00
Matthew Flatt
ef9e9e3f7e cs: check initialization of variables on instance linking 2018-11-17 16:44:08 -07:00
Matthew Flatt
a255def019 cs: fix state of module instance interrupted by error
Closes #2380
2018-11-17 16:30:56 -07:00
Matthew Flatt
d47d036239 cs: fix dynamic-wind on chaperoned procedure 2018-11-17 15:58:46 -07:00
Matthew Flatt
64069a5792 cs: initialize error-value->string-handler per place
Closes #2377
2018-11-17 15:15:23 -07:00
Matthew Flatt
f6eb956199 cs: fix error with a single symbol argument
Closes #2379
2018-11-17 15:06:55 -07:00
Matthew Flatt
c1c110f662 makefile: accomodate current Mingw-64
As of version 5.0.5, Mingw-64 adds an ".exe" extension even if it's
not in the `-o` argument. Adjust the makefiles to consistently use
".exe".
2018-11-17 15:03:15 -07:00
Matthew Flatt
c44c8b9cc0 cs: implement best-effort-ordered hash table traversal 2018-11-16 16:53:54 -07:00
Matthew Flatt
a6e37fc947 racket/fasl: improve determinism of output
When traversing hash tables, try to sort the keys.
2018-11-16 16:36:56 -07:00
Matthew Flatt
624918d399 expander: remove obsolete and broken to-source? compile mode
Source mode was a leftover from early iterations of the expander. A
bootstrapping mode that uses replacement `compile-linklet`, etc.,
turned out better.
2018-11-16 16:21:28 -07:00
Matthew Flatt
709258d88c reorganize and update "README.txt"s about sources and builds
Integrate Racket-on-Chez information better and reorganize information
to reflect the way that the makefiles and build scripts have evolved.
2018-11-16 07:49:53 -07:00
Matthew Flatt
337aec3436 cs: fix -C flag to set (system-type 'cross) 2018-11-15 18:17:05 -07:00
Matthew Flatt
7c1326a120 io: fix subprocess waiting for Windows 2018-11-15 14:57:09 -07:00
Caner Derici
331b383103 fasl: make sure every write-bytes know where to write (#2373)
adding tests that fail without this fix
2018-11-15 16:53:53 -05:00
Matthew Flatt
06101ffb89 cs & io: fix current-directory initialization 2018-11-15 10:02:57 -07:00
Matthew Flatt
6d1b287467 io: fix (find-system-path 'orig-dir) 2018-11-15 09:37:28 -07:00
Matthew Flatt
a6cc19648f cs: allow Racket framework to find itself not in "CS"
The installer-signing process can copy the framework to an application
directory that does not have "CS" in its name.
2018-11-15 06:35:03 -07:00
Matthew Flatt
a9b02d5956 schemify: fix some function names when saving "bytecode" 2018-11-15 05:29:36 -07:00
Matthew Flatt
3e480f1c93 io: fix current-directory and related parameters
For consistency with traditional Racket, the guards need to be
implemented through derived parameters instead of chaperones.
2018-11-15 05:29:36 -07:00
Matthew Flatt
caf28648e3 cs: fix schemify of non-rator call-with-values 2018-11-15 05:29:36 -07:00
Matthew Flatt
4068b9097d io: fix some test failures 2018-11-15 05:29:36 -07:00
Matthew Flatt
1e726581ef io: TCP port does not count as a file-stream port 2018-11-15 05:29:36 -07:00
Matthew Flatt
bf7eee0f65 thread: fix atomic-timeout-callback implementation
Closes racket/drracket#238
2018-11-14 16:59:16 -07:00
Sam Tobin-Hochstadt
cf34c22380
fasl: find shared values in hash tables. (#2371)
Also, add test to check sharing of uninterned symbols.
2018-11-14 18:45:54 -05:00
Matthew Flatt
c51616ecfd cs: fix typo in Windows build script 2018-11-14 15:47:57 -07:00
Matthew Flatt
60a6dc1796 setup: adjust command-name hack for case-insensitive Windows 2018-11-12 14:58:30 -08:00
Matthew Flatt
0b7072eed3 cs: communicate DLL directory to rktio
rktio needs the DLL directory path to load iconv.
2018-11-12 15:50:14 -07:00
Paulo Matos
28a28e4244 Use constant defined in header 2018-11-12 15:34:44 -07:00
Matthew Flatt
ccbef59e96 io: print: handle paths that don't convert cleanly to a string 2018-11-12 14:33:09 -08:00
Matthew Flatt
7abfdab35e io: repair directory-list for Windows 2018-11-12 14:25:44 -08:00
Matthew Flatt
9e4ebd9196 rktio Windows: fix truncate-file to not move file position
A call intended to restore the position was in place, but it
was wrong.
2018-11-12 09:37:02 -08:00
Matthew Flatt
8e4cecf215 io: flush before performing file truncate
For consistency with traditional Racket and currently matters on
Windows. The Windows implementation of file-truncate should probably
not move the file position as it does, though.
2018-11-12 09:59:35 -07:00
Matthew Flatt
0d4674a6e1 cs Windows: fix manifest on GRacket 2018-11-11 07:18:34 -08:00
Matthew Flatt
7ab69142f4 cs: fix exec-file and run-file setup
Allow embedded command-line argument to adjust exec-file, for
example.
2018-11-11 08:11:17 -07:00
Matthew Flatt
f10e6d43bf rktio: avoid triggering console when starting a place 2018-11-11 05:57:03 -08:00
Matthew Flatt
67b721e5b7 Windows: move on-demand console to rktio
In GUI-application mode (e.g., running GRacket), a console is allocated
on demand if a program tries to use the original ports. Move that
on-demand handling into rktio, where it's simpler and works for
RacketCS.
2018-11-11 06:14:22 -07:00
Matthew Flatt
7fa31684e9 io: show a string as a port name 2018-11-10 15:18:09 -07:00
Matthew Flatt
d0fab4027b net/win32-ssl: repairs for CS 2018-11-10 14:17:07 -08:00
Matthew Flatt
350ecf3d49 expander: don't duplicate properties in 'origin handling
One more take on the problem addressed by 990e1f1e30. This adjustment
avoids copying properties from the original form to the identifier
that is preserved in 'origin.
2018-11-10 07:52:04 -07:00
Paulo Matos
fca1c430af Fix typo 2018-11-10 08:43:12 -03:00
Matthew Flatt
90aac96cde expander: fix taint problem with 'origin handling
Repairs a problem with commit 990e1f1e30.
2018-11-09 20:50:10 -07:00
Matthew Flatt
990e1f1e30 expander: fix origin tracking for int-defn contexts
Closes #2346
2018-11-09 13:51:16 -07:00
Alexis King
bc34ba884b Reinstate the stop list after #%module-begin performs partial expansion 2018-11-08 19:13:03 -06:00
Matthew Flatt
b7c2359026 compiler/cm: adapt as intended to old .dep files
Try again on 1293674ddb.
2018-11-03 17:05:34 -04:00
Matthew Flatt
1293674ddb compiler/cm: don't misue old .dep files
The `get-compiled-file-sha1` function assumed that a ".dep" file is
up-to-date when present. That may not be consistent with all uses,
including in `file-stamp-in-paths` as used by DrRacket for "populate
compiled", and an old file can go wrong with the recent ".dep" format
change. Make `get-compiled-file-sha1` at least check the version on
the ".dep" content before trying to use it.

Relevant to #2354
2018-11-02 20:28:08 -06:00
Alexis King
93def1f753 Fix stream contracts to work with impersonator contracts 2018-11-02 11:24:39 -05:00
Matthew Flatt
62a674fa80 io: exn:fail:network for TCP-port errors 2018-11-02 05:00:16 -07:00
Matthew Flatt
6a7f9773d1 cs: fix _stdbool 2018-11-01 16:49:10 -06:00
Kevin Robert Stravers
22cf2750a7 cmdline: three/four items -> three items 2018-11-01 14:48:20 -05:00
Leif Andersen
209a90d281
Make racket/private/serialize-struct cross-phase (#2270)
This makes sense because a serializable struct should probably remain
serializable, even if it was inserted into a bit o' 3d syntax.
2018-10-30 15:41:08 -04:00
Matthew Flatt
c0fac954e1 windows: declare Windows 10 compatibility in manifest 2018-10-30 09:55:33 -07:00
Matthew Flatt
7e926d1d86 raco exe: fix alignment in PE resource writer 2018-10-30 09:55:33 -07:00
Matthew Flatt
b9c042329b cs makefiles: fix a make that should be $(MAKE)
Relevant to #2344
2018-10-29 20:42:03 -06:00
Matthew Flatt
0242a46396 cs: more portable approach to errno
Have the main Racket executable export a function to get errno, which
avoids portability problems trying to access it via the FFI.

Related to #2344
2018-10-29 20:39:01 -06:00
Matthew Flatt
063fa65872 cs: add (system-type 'machine)
Closes #2343
2018-10-29 20:10:13 -06:00
Ryan Culpepper
ec406dd301 cs: fix lookup-errno 2018-10-29 11:12:58 +01:00
Matthew Flatt
933e3c14b5 bytecode: fix "preserves marks" annotation w.r.t call/immediate-mark
A function that uses `call-with-immediate-continuation-mark` in tail
position should not be flagged as "preserves marks", because the JIT
needs to bump the mark stack if the function is called in non-tail
position.

Closes #2333
2018-10-28 18:52:41 -06:00
Matthew Flatt
d1fe6a6e3e repair allocation bug in delimited continuations
The repair is more precisely a repait to xform, which incorrectly
parsed a C function definition that starts "struct" as a struct
declaration. (The function starts "struct" because the return type is
"struct Scheme_Overflow_Jmp *".) Since the function wasn't recognized,
xform didn't convert it to cooperate with the garbage collector.

Closes #2341
2018-10-28 17:09:45 -06:00
DarrenN
2dc96b365a Implement hash/c random generate and exercise 2018-10-28 14:37:59 -05:00
Matthew Flatt
dbcc9dddc3 xform: updates for recent MinGW 2018-10-28 13:14:14 -06:00
Matthew Flatt
b5084977c0 cs Windows: fill in GUI mode for GRacket
Still need to create console on demand.
2018-10-28 13:14:14 -06:00
Matthew Flatt
a24c6fe4f9 cs Windows: move kernel and boot files to DLL 2018-10-28 11:37:04 -06:00
Matthew Flatt
c6a3d4629d cs: register a nul-terminated byte string for WM_CLASS 2018-10-27 15:22:00 -06:00
Matthew Flatt
a08aed7dde configure help: clarification on --enable-sgcdebug
Closes #2340
2018-10-27 13:43:38 -06:00
Paulo Matos
c6a2843ba2 Fix simple typo in configure help message 2018-10-27 13:42:24 -06:00
Paulo Matos
071406d10d Mark variables as used so they are not removed by LTO
Fixes #2324
2018-10-27 13:39:12 -06:00
Matthew Flatt
de53dc3c5e cs: add Windows GRacket.exe 2018-10-27 13:23:40 -06:00
Matthew Flatt
c128c5aad6 cs: support ptr-ref and ptr-set! on string types 2018-10-27 11:14:42 -06:00
Matthew Flatt
3f6a7b3e06 cs: add icon and other resources to RacketCS.exe 2018-10-27 11:14:42 -06:00
Matthew Flatt
457a673506 Windows: avoid environment variables with empty name 2018-10-26 13:42:16 -07:00
Matthew Flatt
29a80fd7e5 io: repairs for Windows environment variables 2018-10-26 14:19:54 -06:00
Matthew Flatt
23648ba165 cs: repairs relevant to running `racket/gui/ programs on Unix 2018-10-26 14:05:33 -06:00
Matthew Flatt
3b9bc21304 cs: repairs to Windows build client 2018-10-26 11:04:45 -06:00
Matthew Flatt
7d86fddbdc cs: add strip on install for CS executables 2018-10-25 11:30:17 -06:00
Matthew Flatt
c0f14373ab cs: on Linux record embedded boot relative to ".rackboot" section 2018-10-24 21:06:11 -06:00
Matthew Flatt
8c3956a272 cs: update Windows build
Support non-"CS"-suffix mode, and avoid installing bytecode for
traditional Racket when builing a bootstrap traditional Racket.
2018-10-24 18:44:23 -07:00
Alexis King
af554933ef Fix arity mask upper bound calculation in curry
fixes #2332
2018-10-24 12:16:09 -05:00
Matthew Flatt
fce5554695 io: fix tcp-abandon-port so that the socket gets closed 2018-10-24 09:53:00 -06:00
Ryan Culpepper
e8832fbcc7 cs: remove plumber flush callback when custodian closes fd output port
Previously, the following program would print "error writing to
stream port" on program exit.

  (define cust (make-custodian))
  (define out
    (parameterize ((current-custodian cust))
      (open-output-file "test.data" #:exists 'truncate)))
  (write-string "This needs flushing...\n" out)
  (custodian-shutdown-all cust)
  (exit 0)
2018-10-24 17:46:29 +02:00
Ryan Culpepper
ddba2812ba cs: fix unsafe-file-descriptor->port mode 2018-10-24 17:46:29 +02:00
AlexKnauth
df19625c6c syntax/parse: fix Check-Syntax arrows within syntax classes 2018-10-24 17:45:30 +02:00
Matthew Flatt
23f6d2b43f cs: setup compiled subdirectory for gracket like racket 2018-10-23 21:38:43 -06:00
Sam Tobin-Hochstadt
423ce5e5a2 This file doesn't need match. 2018-10-23 11:56:49 -04:00
Matthew Flatt
8473666af3 cs install: remove old file before coying new files into place 2018-10-23 09:45:53 -06:00
Ryan Culpepper
d4691fb219 fix flush-output when write-out is port indirection 2018-10-23 12:00:31 +02:00
Matthew Flatt
31d35ebe88 cs: another fix for racketcs linking configure on Linux 2018-10-22 20:38:29 -06:00
Matthew Flatt
76f868f287 cs: fix racketcs linking configure for Linux 2018-10-22 20:32:07 -06:00
Matthew Flatt
f8e6b22544 cs: fix makefile chaining for bootstrap Racket variant 2018-10-22 20:14:50 -06:00
Matthew Flatt
7481eb6fed update another test for the VM identifier in bytecode 2018-10-22 19:53:21 -06:00
Matthew Flatt
cbd195201a cs: disable use of ncurses when building Chez Scheme
RacketCS doesn't currently access the Chez Scheme expeditor, and
avoiding curses make the build work in a more mininal environment.
2018-10-22 19:18:35 -06:00
Matthew Flatt
aa6ec1f0cd comiler/compile-file: adapt to use-compiled-file-paths setting 2018-10-22 17:14:49 -06:00
Matthew Flatt
9498c521cf cs: make build without "cs" suffix use "compiled" directly
When building RacketCS as just "racket", put compiled files in
"compiled" instead of a platform-specific subdirectory.
2018-10-21 18:27:00 -06:00
Matthew Flatt
8bed64f44f add virtual-machine identifier to bytecode and ".dep" files
So far, bytecode for traditional Racket has been kept separate from
RacketCS bytecode by using a different "compiled" subdirectory for
RacketCS. That makes sense for development work to allow the
implementations to coexist, but it creates trouble for packaging and
distributions, and it (hopefully) won't seem necessary in the long
run. Treating the different virtual machines like different versions
seems more generally in line with our current infrastructure.
2018-10-21 17:33:24 -06:00
Matthew Flatt
e3f25a6159 reorder configure scripts
Run last one of the scripts that can show the
installation-directory information correctly.
2018-10-21 08:07:45 -06:00
Matthew Flatt
3c4fa62e28 cs: configure and makefile corrections for --prefix installation 2018-10-21 07:40:18 -06:00
Matthew Flatt
abc5c9cdef cs: propagate CC, etc., to Chez Scheme configure 2018-10-21 06:38:12 -06:00
Matthew Flatt
51258bc77c cs: add support for -A 2018-10-21 05:59:00 -06:00
Matthew Flatt
de98529c13 cs configure: support SDK options
For example, enable a 32-bit Mac OS build.
2018-10-21 05:59:00 -06:00
Matthew Flatt
3591a685fc reorganize configure to better support racketcs
Rearrange the configure scripts so that it will be possible to build
RacketCS from a source distribution and have it installed in the right
place. Also, when building Racket3m just to bootstrap RacketCS, don't
install Racket3m.
2018-10-20 20:19:36 -06:00
Matthew Flatt
0f18df2c1a makefile: set up for cs client build 2018-10-20 20:19:36 -06:00
Matthew Flatt
18f7b96828 makefile: add way to build RacketCS as racket 2018-10-19 11:19:44 -06:00
Matthew Flatt
8f7a5b6dd5 Add Racket HISTORY.txt note for v7.1 2018-10-19 07:42:55 -06:00
Matthew Flatt
b1dfb61223 racocs exe: fill in implementation 2018-10-17 12:55:53 -06:00
Paulo Matos
703deedb66 Avoid integer overflow
A runtime error was detecting and overflow on e which this fixes.
Fixes part of #2314.
2018-10-17 07:57:39 -06:00
Matthew Flatt
eb6705be3c thread: fix futures in a non-main place 2018-10-17 07:41:38 -06:00
Matthew Flatt
65e464e626 cs: fix concurrency problems in prefabs & interned datums 2018-10-17 07:41:38 -06:00
Alexis King
86bb85931d units: Fix an improper use of syntax instead of quote-syntax 2018-10-16 18:23:13 -05:00
Alexis King
5fb75e9f82 Fix handling of the scopes of contracted signature bindings
fixes #1652
2018-10-16 16:52:45 -05:00
Matthew Flatt
8b22ebbfbe cify: fix more GC problems 2018-10-16 15:03:45 -06:00
Paulo Matos
6d7ab42b56 Fix fasl read fasl string.
Add a new test for the failing case.
2018-10-16 09:29:55 -06:00
Matthew Flatt
a7ae05a414 thread: fix place-channel ephemeron problem
Retains a strong link to a place-channel write end when there's at
least one waiting thread. This is symmetic to keeping a strong link to
the read end when the place-channel queue is non-empty. The change
repairs a problem building documentation with places in `racocs
setup`.
2018-10-16 09:29:55 -06:00
Paulo Matos
c78787a259 Simplify copy-port
Simplify copy-port by removing the several `(let loop...` constructs.
2018-10-16 09:26:41 -06:00
Matthew Flatt
fa6bd87bcd jit: fix nary unsafe-{fx,fl}{=,<,>,<=,>=}
Fix a incorrectly nested "tiny jump" mode that turned off the
surrounding "short jump" mode.

Closes #2313
2018-10-15 21:03:57 -06:00
Matthew Flatt
e9855fa64f cs: fix assignment to auto struct fields 2018-10-15 17:22:14 -06:00
Matthew Flatt
c347bc0c99 cs: clone ChezScheme repo with --depth 1 2018-10-15 17:22:11 -06:00
Matthew Flatt
f9a69105bc cs: small repairs for chaperones
The "struct.rktl" and "chaperone.rktl" tests now pass.
2018-10-15 08:52:13 -06:00
Matthew Flatt
7bb3750ebc cs: fix some structure and imperonsator problems 2018-10-15 08:52:13 -06:00
Matthew Flatt
2b39e61c4e cs, thread, io: fix problems with evt chaperones 2018-10-15 08:52:13 -06:00
Matthew Flatt
7ecb663a6f cs: fix procedure-name problems 2018-10-15 08:52:13 -06:00
Ryan Culpepper
2166c56179 fix typo in error message 2018-10-15 10:50:59 +02:00
Matthew Flatt
48f7082bdc cs: fix problems with procedures, arity, and impersonators 2018-10-13 13:06:06 -04:00
Matthew Flatt
2051bdfc6a schemify: don't incorrectly inline a recursive function 2018-10-13 13:06:06 -04:00
Matthew Flatt
9310b1e14c cs: recognize more Scheme errors
We'll want a better approach eventually.
2018-10-13 13:06:06 -04:00
Matthew Flatt
a7989924fa regexp: don't equate #rx and #px 2018-10-13 13:06:06 -04:00
Matthew Flatt
c43e42c903 cify: fix a GC problem 2018-10-13 13:06:06 -04:00
Robby Findler
b97811d4db improve error checking in the struct form of contract-out
closes #2303
2018-10-12 20:37:39 -04:00
Matthew Flatt
51e08c48f1 thread: repair for killing a thread blocked on itself 2018-10-12 05:56:39 -06:00
Matthew Flatt
e260aef958 cs: fix more printer problems exposed by "print.rktl" tests 2018-10-11 20:32:22 -06:00
Paulo Matos
ad7797e2cf Fix memory leak
Free env variable if it was allocated.
2018-10-11 09:34:42 -06:00
Paulo Matos
9020f5aac5 Clarify the use of foff as a base pointer in foreign malloc
Fixes #2285.
2018-10-11 09:34:03 -06:00
Matthew Flatt
9f839c1161 expander: avoid retaining some syntax objects
During the expansion of an internal-definition contexts, don't
retain full forms, and instead keep just enough to perform
syntax tracking, if any.
2018-10-11 06:55:04 -06:00
Matthew Flatt
26f785e64e cs: fix some printer problems exposed by "print.rktl" tests 2018-10-11 06:01:07 -06:00
Matthew Flatt
d25058c94a cs: fix problems exposed by "read.rktl" tests 2018-10-11 06:01:07 -06:00
Matthew Flatt
16347b434d cs: fix raise-result-arity-error 2018-10-11 06:01:07 -06:00
Matthew Flatt
191d17461f hash-ref: adjust error message for bad failure thunk
Refines 2ef8d60cc6 to avoid characterizing the failure as a `(-> any)`
contract on `hash-ref`, since `hash-ref` doesn't enforce that contract
in general. Go back to an `exn:fail:contract:arity` error, but keep
the specialization of the error message to clarify that it's from
`hash-ref`. Also, bring RacketCS into sync.
2018-10-11 06:01:07 -06:00
Alexis King
15280640d4 Track disappeared define-syntaxes in internal definition contexts 2018-10-10 11:54:44 -05:00
Matthew Flatt
2b9c0c4689 avoid using directory-exists? as part of a contract
Although a `directory-exists?` check is useful for providing better
error messages, it's fundentally a race condition, since an external
process can always remove a directory between the check and a use of
the directory. Because of that limitation of `directory-exists?`, we
normally avoid making it part of a contract. This commit adjust
937aa3cdb1 to follow that convention while preserving the helpful
check and documentation improvements.
2018-10-10 06:26:57 -06:00
Alexander McLin
937aa3cdb1 pkg: fix check-strip-compatible and generate-stripped-directory
Their semantics assume all directory `path-string?` arguments point
to existing directories in the filesystem but they do not actually
check to verify resulting in unhelpful inner exceptions
breaking the functions' semantic abstractions.

Fixed by adding appropriate checks.

Test cases included too.

Documentation updated to reflect the requirement for paths to
refer to existing directories.

Also added note that `generate-stripped-directory` does not
compile or render source files.
2018-10-10 05:51:20 -06:00
Alexander McLin
aecc786b7f pkg: repair file:// URL handling for strip modes
When catalog is specified via file:// URL to a local directory with local
package directories that have been stripped in various modes, `raco pkg install`
will incorrectly error out with an incompatible package content error when
a binary strip mode is selected and a file-system error when source strip
mode is selected.

The cause is due to the file:// URL's resolved file path not being passed
along to the helper functions in the various code paths handling the different
strip modes; instead the full original file:// URL is passed along and is
misinterpreted as an actual filesystem path resulting in the observed failure
modes.

The repair is simple; change the relevant argument so the resolved filesystem path
is used instead of the original file:// URL.

Test cases added to test various combinations of strip modes when using
`raco pkg install` and local catalog directory.
2018-10-10 05:51:20 -06:00
Matthew Flatt
ec837e8eb1 places: fix serialization of hash tables as place messages
I'm not sure why thinsg seemed to work before, but an existing
test fails after recent chages.
2018-10-09 15:51:54 -06:00
Matthew Flatt
de753399b6 racketcs: add support for -m flag 2018-10-09 15:07:49 -06:00
Matthew Flatt
238e2c7861 places: fix handling of OS-level errors during serialization
When a file descriptor cannot be `dup`ed for a place message, the
error message has to be delayed until the partially copied message is
cleaned up. Various problems with the message-serialization code
caused that delay to work incorrectly or incompletely.

Closes #2305
2018-10-09 15:07:49 -06:00
Matthew Flatt
fcf080cf93 fix typo in comment 2018-10-09 15:07:49 -06:00
Matthew Flatt
3acb1a5162 cs: fix build with non-threaded scheme 2018-10-08 15:27:53 -06:00
Matthew Flatt
076684b123 bytecode compiler: fix mishandling of export names
The repair in 4396b841c0 for internal names exposed a problem with the
way `linklet` handled renaming on export, where it mixed up the names
that should be used internally and externally in errors.

Merge to v7.1
2018-10-08 15:05:39 -06:00
Matthew Flatt
70bfd55696 schemify: add a missing unwrap
Anothe repair related to the 'source-name property.
2018-10-08 12:57:12 -06:00
Matthew Flatt
c102673339 thread: add some reminders to the implementation
These comments were meant to be part of e60a78aad9.
2018-10-08 12:57:12 -06:00
Paulo Matos
62c63de7a2 Remove unused modpath->string 2018-10-08 12:56:15 -06:00
Vincent St-Amour
1d8806e0bb Post-release version for the v7.1 release 2018-10-07 10:23:13 -05:00
Matthew Flatt
e60a78aad9 thread: custodian shutdown of current suspend-to-kill thread 2018-10-05 20:55:21 -06:00
Matthew Flatt
b57b9be2f8 schemify: repair after adding 'source-name property 2018-10-05 20:55:21 -06:00
Matthew Flatt
e94a519d44 cs: fix integer->integer-bytes
Closes #2277
2018-10-04 19:20:34 -06:00
Matthew Flatt
4396b841c0 fix expander+compiler to report source name for use-before-init
Lots of plumbling was in place to preserve the source name (instead of
the symbol generated to avoid collisions for macro-introduced
definitions), but some small pieces were missing.

Closes #2288
2018-10-04 18:52:05 -06:00
Matthew Flatt
daba4f518b places: repair detection of mutable prefabs 2018-10-04 15:37:06 -06:00
Matthew Flatt
c2b5e4404a rumble: fix hash-set error message 2018-10-04 15:36:51 -06:00
Matthew Flatt
adfe862a0b cs: make make expander-demo work in a fresh checkout 2018-10-03 08:58:44 -06:00
Matthew Flatt
8a5de6c27f reader: remove some broken tests 2018-10-03 08:58:44 -06:00
Paulo Matos
5bbbe44a7b Fix ubsan runtime error due to large shift 2018-10-02 14:14:04 -06:00
Paulo Matos
15523f68ec Fix sizeof argument 2018-10-01 10:56:36 -05:00
Paulo Matos
5834a4b938 Remove unused code
Fixes #2290.
2018-10-01 10:56:12 -05:00
Paulo Matos
bc3777792d Only copy argv if not NULL
Fixes #2283.
2018-09-24 05:28:47 -06:00
Matthew Flatt
e83ca7a9e5 native-libs: merge Pango repair for emoji iteration 2018-09-22 20:37:34 -06:00
Matthew Flatt
27bb075113 native-libs: restore a Cairo patch
When upgrading native-library versions, a still-relevant
patch got lost. The patch corrects a problem with empty
glyphs getting treated as missing glyphs.

Closes racket/pict#42
2018-09-22 20:28:13 -06:00
Matthew Flatt
45af149fc0 dynamic-place: fix use of expanders module-predefined?
Closes #2278
2018-09-22 18:34:43 -06:00
Matthew Flatt
d06f6e7c4e cs: offer compiler-pass statistics
When `PLT_LINKLET_TIMES` is set, enable pass timing and report
a simple summary along with other times.
2018-09-22 18:34:43 -06:00
Paulo Matos
48302284a8 Avoid shift by negative number by turning condition around
Avoid undefined behaviour in condition which could shift by negative i. By checking first if `i >= 0` we avoid that case.
2018-09-22 14:19:10 -06:00
Paulo Matos
49d31414b7 Fix condition to avoid undef behaviour
Coverity scan uncovered an issue where by if `p == 31`, the following shift `1 << (p + 1)` will cause undefined behaviour.
2018-09-21 09:02:25 -06:00
Ryan Culpepper
0ceb67ebc6 openssl: guard default cert location setup with libcrypto check
Commit dc8a2ca6 removed the check, which caused problems
when libcrypto.so is not found.
2018-09-17 15:51:58 +02:00
Ben Greenman
710cbd25bf stream*: allow 1 argument 2018-09-16 21:21:06 -04:00
Ryan Culpepper
2670a932f8 fix bugs caught by optimizer etc warnings 2018-09-15 21:05:04 +02:00
Alexis King
c0788127ae Make cond track disappeared-uses for => and else 2018-09-13 13:15:34 -05:00
Matthew Flatt
d5aa191fb2 custom-hash: fix ephemeron race
The pattern

  (ephemeron-value
   (hash-ref! intern key
     (lambda ()
       (make-ephemeron key (wrap key)))))

is wrong, because a GC might happen between the time that the
epehemeron is found in the table (or the time that the key was just
added to the table) and the time that `ephemeron-value` is called to
extract the value. If the key is not otherwise accessible, the value
may no longer be in the ephemeron.
2018-09-13 11:11:27 -06:00
Matthew Flatt
9772c05040 cs: fix more problems with GC in an arbitrary Scheme thread 2018-09-13 10:48:26 -06:00
Matthew Flatt
4a763c72d0 cs: repairs for Windows build 2018-09-13 10:48:26 -06:00
Matthew Flatt
2a053caa1a makefile: always make automatic checkout of Chez Scheme
If `make cs` is run without specifying a SCHEME_SRC, then make sure
that `configure` and `make` are re-run in the Chez Scheme checkout,
in case it was updated.
2018-09-13 10:48:26 -06:00
Matthew Flatt
287157cc6d cs: _stdcall for Windows -> __stdcall for Windows x86 2018-09-13 10:48:26 -06:00
Matthew Flatt
2e8e479a52 thread & io: makefile repairs to work with nmake 2018-09-13 10:48:26 -06:00
shhyou
40b8ae7a33 Coerce the arg in contract-random-generate/choose 2018-09-13 10:48:43 -05:00
Matthew Flatt
efd601cb51 cs: avoid thread misuse during GC
A collection can only invoke certain callabcks (e.g., for DrRacket's
GC icon) when the collection is performed in the main thread. Also,
delay posting GC logging events to receivers that cannot work at
interrupt time.
2018-09-13 06:05:58 -06:00
Alexis King
6b56156d55 Revert "Allow local-expand to opt-out of implicit extension of the stop list"
This reverts commit 41fd4f3a5e.

The problems this change was intended to solve can be solved in other
ways, without loosening guarantees about expansion order. See the
discussion in #2154 for more details.

closes #2154
2018-09-12 15:06:33 -05:00
Ryan Culpepper
5be4109495 openssl: change dummy path name to avoid spaces 2018-09-12 15:32:03 +02:00
Ryan Culpepper
fc19d75b40 openssl: add workaround for natipkg openssl lib cert locations
Reference: https://www.happyassassin.net/2015/01/12/a-note-about-ssltls-trusted-certificate-stores-and-platforms/
2018-09-12 15:32:03 +02:00
Ryan Culpepper
dc8a2ca6ec openssl: log error if no existing cert locations
This may help with situations like #1919 and #2184.
2018-09-12 15:32:03 +02:00
Matthew Flatt
b2e4d51b1b raco setup: fix problem with processes-based build
The procsses-based build was technically broken with the addition of a
"prefetch" thread (some time back) to improve parallelism, because the
`write`-based implementation of messages did not protect again
interleaving by different threads. The problem turns out to be easier
to expose when running with RacketCS.
2018-09-12 06:17:47 -06:00
Matthew Flatt
fd730a6772 raco setup: add --places and --processes flags
Provide access to subprocess-based parallel builds even when places
are available.
2018-09-11 19:08:59 -06:00
shhyou
dabbfed09f Randomly shuffle contracts in contract-exercise 2018-09-11 16:15:24 -05:00
Matthew Flatt
9cf9be60b0 io: fix retention of blocked log receiver
Don't GC a log receiver that is blocked on a logger that
might receiver relevant events.
2018-09-11 12:15:07 -06:00
Matthew Flatt
862c05d64a thread & cs: fix place bugs 2018-09-11 09:55:11 -06:00
Matthew Flatt
30fb62e438 cs: add sanity check for proper callbacks during blocking callouts 2018-09-11 09:55:11 -06:00
Matthew Flatt
2e7d608fb3 native-libs: update openssl build, especially for natipkg
Record a recoganizable dummy path as the default location for
certificates.
2018-09-11 08:39:52 -06:00
Matthew Flatt
0e2ad7d596 raco pkg: change --scope-dir search-path handling
Formerly, `--scope-dir` would include only the specified directory in
the search path for already installed packages, etc., which means that
it would only work right as a kind of installation scope that is a
step beyond "installation" on the "user"-to-"installation" spectrum.
The `'pkgs-search-dirs` confiugration entry, meanwhile, provides more
control over search ordering in installation scope. Make `--scope-dir`
work more consistently with that search-path configration.

This change also makes "instllation"-scope operations use the search
path more consistently, since some actions used to use the whole
search list while others pruned any prefix before the main
installation directory in the search list.
2018-09-10 06:14:34 -06:00
Matthew Flatt
292dac4e51 cify: repair for big-endian platforms
Relevant to #2018
2018-09-09 14:01:09 -06:00
Matthew Flatt
138e6c11c0 ffi/objc: add with-blocking-tell
Add a way to declare an Objective-C method call as blocking in the
sense of the `#:blocking?` argument to `_cprocedure`.

Usingf `with-blocking-tell` should allow the Cocoa backend for
`racket/gui` to wait for events in the main place without blocking
other places.
2018-09-09 11:56:26 -06:00
Matthew Flatt
9776e4cd8e cs: fully enable places
Fix various problems with the implementation of places, and let
`processor-count` return the actual number of processors. A parallel
build via `raco setup` seems to work but not scale well.
2018-09-09 11:33:33 -06:00