Commit Graph

5264 Commits

Author SHA1 Message Date
Matthew Flatt
af651ca435 Merge branch 'master' of github.com:racket/racket 2020-07-29 05:20:13 -06:00
Paulo Matos
a20f55cf47 Remove Boehm GC from Racket
Boehm GC has not been regularly tested or even used - therefore
removal avoid bit-rot.
2020-07-28 13:23:17 -06:00
Matthew Flatt
62a3f6ec91 change CS build to use a subtree Chez Scheme and a bootstrapped pb
Also, schemified "thread", "io", "regexp", "schemify", and "expander"
layers are checked in. Overall, building Racket CS no longer requires
first building Racket BC.
2020-07-28 12:56:42 -06:00
Matthew Flatt
c6e0c54a4f repair for pb on FreeBSD 2020-07-28 12:54:43 -06:00
Paulo Matos
139c1de00f Call recursive make through $(MAKE)
This fixes the build under FreeBSD 12.1 where the system `make` is not compatible with the Chez makefiles and gmake is needed instead.
2020-07-28 12:54:42 -06:00
Matthew Flatt
89831c01f6 bc: fix optimizer bug
Fix inlining problem when inlining has been explicitly disabled.

Closes #3309
2020-07-28 12:43:39 -06:00
Matthew Flatt
d44fcbf041 import Chez Scheme sources as racket/src/ChezScheme
The imported sources are from the `racket/ChezScheme` repository,
which branched from `cisco/ChezScheme`. The commit history is
preserved, but all of the commit IDs have shifted, because bootfiles
have been pruned from the history.
2020-07-27 07:41:56 -06:00
Matthew Flatt
5022107489 cs windows: fix build
Nested `includes` for ".def" files need compile before load.
2020-07-25 17:23:36 -06:00
Matthew Flatt
efc95c2e19 remove "cs-bootstrap" package
The "cs-bootstrap" package is now in the `racket/ChezScheme` repo,
because it needs to track the Chez Scheme implementation instead of
the Racket implementation.
2020-07-25 16:32:05 -06:00
Matthew Flatt
914db0b549 cs-bootstrap: support nested include and define-constant-default 2020-07-25 12:40:21 -06:00
Matthew Flatt
a69111c1bd sync with updated Chez Scheme 2020-07-24 15:43:45 -06:00
Matthew Flatt
574e8e32e2 unbreak non-xform 3m embedding setjmp
Commit 023681947c fixed a problem cooperating with xform, but the
repair assumes xform. The "embed-in-c.rkt" test, for example, uses 3m
without xform (and instead uses macros like `MZ_GC_DECL_REG`.
2020-07-24 10:47:33 -06:00
Matthew Flatt
93a7b5d29c more detail in racket/HISTORY.txt
It's not clear that adding to "HISTORY.txt" is all that useful. But as
long as we do, at least include milestones that were signficant enough
to mention in release announcements.
2020-07-24 08:59:19 -06:00
deeglaze
ef2132ced3 Fix some typos in expander comments 2020-07-20 10:38:00 -06:00
sorawee
7c903871bd
Fix unchecked struct with custom constructor (#3301)
Fix a bug introduced in #3267

Related to: #3300

Sounds good to me!
2020-07-18 16:32:58 -07:00
Matthew Flatt
39b37dd892 repair inconsistencies with simplify-path
CS didn't always return a complete path when simplifying in
use-filesystem mode. On Windows, CS and BC were inconsistent with each
other and the Unix behavior.
2020-07-17 05:50:16 -06:00
Matthew Flatt
6e3c111728 repairs for build-path on \\?\RED\ paths
A `\\?\RED\` path is Racket- and Windows-specific, and it's an extreme
corner case: a drive-relative absolute path that include elements that
must eb specially esacped. BC's `build-path` incorrectly allowed
`\\?\RED\` to extend an absolute path. CS's `build-path` incorrctly
allowed various absolute-path extensions, including `\\?\RED\` paths.
The documentation was slightly off.
2020-07-17 05:50:16 -06:00
Matthew Flatt
7709287e03 cs: fix split-path on a \-less Windows drive root 2020-07-17 05:50:16 -06:00
Matthew Flatt
6805145e10 cs: protect special filenames from directory-list
For example, return `\\?\REL\\aux` instead of `aux`.
2020-07-17 05:50:16 -06:00
Matthew Flatt
9867d11d68 cs: fix resolve-path to just cleanse when there's no link
Don't convert thet path to absolute, and don't normalize separators on
Windows.

Also, fill in `current-drive`.
2020-07-17 05:50:16 -06:00
Matthew Flatt
c18dcd72c7 rktio: fix (consistent) typo in variable name 2020-07-16 07:07:12 -06:00
Matthew Flatt
d2f8c83368 add file-or-directory-type
Since file links and directory links on Windows are disjoint, and the
difference is relevant for operations such as deleting a file,
`link-exists?` is not enough information. Add `file-or-directory-type`
to provide more information and also avoid separate calls to
`file-exists?`, `directory-exists?`, etc.

The `delete-directory/files` function now uses `file-or-directory-type`
so that it will work right with Windows directory links.

Relevant to #3288
2020-07-16 06:53:30 -06:00
Matthew Flatt
1a7c898ea2 windows: allow symlink creation when developer mode is enabled
Relevant to #3288
2020-07-15 16:57:35 -06:00
Matthew Flatt
c8c7fd7043 rktio: avoid over-large read or write request 2020-07-15 16:57:32 -06:00
Matthew Flatt
91acb4293e racket/HISTORY.txt for v7.8 2020-07-15 10:36:15 -06:00
Matthew Flatt
454a586a79 cs: support source-location paths in compiled code
Procedures in compiled code could not previously have source-location
paths that are managed through the write-relative and load-directory
configuration. Instead, paths were always converted to strings that
start "..." --- and those strings were sometimes incorrectly converted
back to paths in context information extracted from a continuation
mark set.

This commit takes advantage of changes to Chez Scheme `fasl-write` and
`fasl-read` (and related for compiling code) to lift paths out where
linklet-level marshaling can take care of them.
2020-07-15 06:44:42 -06:00
Bogdan Popa
3e08f50944
win32: add Power Shell script to set env vars
The added PS script runs msvcprep.bat in a sub shell then reads the environment
variables line by line and sets them in the current shell.
2020-07-14 06:52:18 -06:00
Matthew Flatt
740f345937 bc: improve FFI handling of unions and arrays on Arm
libffi doesn't support unions or arrays, so we have to simulate them,
and the simulation depends on ABI details.
2020-07-13 10:01:04 -06:00
Matthew Flatt
5cc686526b cs: sync with revised fasl compression for code
Sync with changes from cisco/ChezScheme. The specific code fragments
that are compressed and the chunks that are used for compression
remain essentially the same as before for Racket CS, but a different
organization at the Chez Scheme level takes over some of the work that
was on the Racket CS linklet layer, and load times may improve
slightly.
2020-07-13 06:57:45 -06:00
Matthew Flatt
c56b837692 cs: fix addition of memory-order-{acquire,release} 2020-07-13 06:50:15 -06:00
Matthew Flatt
40f07236b9 add memory-order-{acquire,release} 2020-07-11 19:59:27 -06:00
Sam Tobin-Hochstadt
100597f9bb Repair 7f44aaf2bf to check argument length before /. 2020-07-09 21:29:49 -04:00
Matthew Flatt
7dda76b7ce cs: add aarch64-linux
Just a few configuration lines here, since all of the porting work was
at the Chez Scheme level.
2020-07-08 20:22:11 -06:00
John Clements
39a8a50d0a
apparent typo in collection-search looks like error should be raise-argument-error (#3285) 2020-07-08 11:16:22 -07:00
John Clements
38d92bdb30 Post-release version for the v7.8 release 2020-07-08 08:47:14 -07:00
Robby Findler
ac4ae9ebba adjust ->i to fall back to the slow path to signal the error
because the existing shortcut didn't gave the right message all the
time.

Closes #3286
2020-07-04 17:41:46 -05:00
Ryan Culpepper
497bb25917 read-xml: use {open,get}-output-string instead of list->string 2020-07-02 19:33:13 -04:00
Matthew Flatt
e0f390c8c8 syntax/strip-context: handle hash tables
Closes racket/scribble#245
2020-07-02 14:42:18 -06:00
Luka Hadzi-Djokic
8464896255
Add combine-output-ports 2020-07-02 14:14:48 -06:00
Matthew Flatt
c40a7ae2fc cs: limit debugging context in continuation marks
In CS, if you interrupt an especially tight non-tail recursion, such
as

 (let loop ()
   (cons 1 (loop)))

then the "context" view of the continuation (as recorded in a
continuation mark set) can take space that is a multiple of the size
of the continuation itself. That's a particular problem if the
too-deep recursion triggers the memory limit in DrRacket, because
DrRacket will then need a multiple of its current heap space to report
"out of memory".

(Note: Just keeping the continuation itself is not a good option,
because that may retain other data referenced by the continuation.)

This commit reduces the heap space used to gather a continuation
context, relying in part on new Chez Scheme support, but mostly it
limits the context length to roughly the same maximum as in BC. The BC
limit is an implementation artifact, but it turns out to have good
properties; informaiton on more than 64k continuation frames is rarely
useful. The limit could be a parameter, but a large built-in limit
seems likely good enough.

(Another note: Adding a limit argument to
`continuation-mark-set->context` doesn't help enough, because it's too
late by that point; too much memory has been used to repersent the
information that's in the mark set.)

The commit also tightens tracking of continuations for memory
accounting, reducing the chance that a thread's large continuation
will be charged to the wrong custodian.
2020-07-02 10:59:02 -06:00
Matthew Flatt
7c7f16ba02 bc: system-library-subpath for aarch64-linux 2020-07-02 08:50:56 -06:00
Bogdan Popa
96c93abe7f rktio: fix demo.c compilation errors 2020-07-01 06:10:54 -06:00
Matthew Flatt
c0a525db60 bc: repair --enable-shared install
Don't try to install librktio.a when building in shared-library mode.
2020-06-30 07:40:29 -06:00
Matthew Flatt
3bb607d46f makefile: fix location of 3m arm assembly output 2020-06-29 18:43:53 -06:00
Sorawee Porncharoenwase
ee773b2835 Fix contract-out for struct
- A part of contract-out's code generation for struct assumes that
there's no parent struct and uses the provided struct name for
everything. This causes duplicate definitions when there are duplicate
field names where one is in a child struct and another is
in a parent struct. This PR fixes the problem.
- Disallow multiple #:omit-constructor
- Deprecate super-id. This information is unnecessary since we can
extract it from static struct information already. Attempting to
check that super-id is well-formed is error-prone due to how
the super struct type could be contracted which shields us from
detecting that they are indeed the super type.
- Utilize static struct field name information, and provide
the information when exporting a struct.

This PR is largely based on #732.

Fixes: #3266, #3269, #3271, and #3272
2020-06-29 19:35:19 -05:00
Matthew Flatt
b9770f6869 cs: remove outdated porting note 2020-06-29 16:49:20 -06:00
Matthew Flatt
b00e8415b7 cs: check memory limit in make-phantom-bytes 2020-06-29 16:49:20 -06:00
Sam Tobin-Hochstadt
7f44aaf2bf io: format error message fixes. 2020-06-29 16:10:30 -04:00
Matthew Flatt
0af11de62b ffi: another spurious CAS accommodation
Also adjust the futures test suite.
2020-06-29 12:45:14 -06:00
sorawee
dff6259ff0
Add prop:struct-field-info
This commit adds `prop:struct-field-info` which is implemented to provide
static information about field names. The property is attached to all
struct types generated by `define-struct`.

The commit also modifies kernstructs to have the property.
Finally, the commit switches `struct-copy` to use the static field name
information when it's available.

It remains to change `contract-out` and `match`'s `struct*` to
recognize/attach this new property, but this could be done
separately in the future.

This PR is largely based on racket/racket#732, though the approach is slightly
different.
2020-06-29 11:06:38 -06:00