Commit Graph

42181 Commits

Author SHA1 Message Date
Matthew Flatt
56049bcd47 update and expand IMPLEMENTATION.md
Incorporate text and explanation from Andy Keep at

  https://groups.google.com/d/msg/chez-scheme/dz6nn-8KDQE/FUaPu695BAAJ

original commit: 5b8a00fc3ef9b892de9af1ae05352fa204e72270
2020-07-24 14:30:43 -06:00
Matthew Flatt
f78dc5724e add pb (portable bytecode) backend
This commit does four things:

 * Adds "pb.ss" and "pb.c", which implement a portable bytecode
   backend and interpreter that is intended for bootstrapping. A
   single set of pb bootfiles can support bootstrapping on all
   platforms --- as long as the C compiler supports a 64-bit integer
   type. The pb machine supports foreign calls for only a small set of
   recognized prototypes, and it does not support foriegn callables.
   Use `./configure --pb` to build the pb variant.

 * Changes the kernel's casts between `ptr` and `void*` types. In a pb
   build, the `ptr` type can be a 64-bit integer type while `void*` is
   a 32-bit pointer type, so casts must go through an intermediate
   integer type.

 * Adjusts the compiler to accomodate run-time-determined endianness.
   Making the compiler agnostic to word size is not practical, but
   only a few pieces depend on the target machine's endianness, and
   those can generally be deferred to a run-time choice of byte-based
   operations. The one exception is that ftype bit fields are not
   allowed unless accompanied by an explicit endianness declaration.

 * Start reducing duplication among platform-specific makefiles. For
   example, `Mf-ta6osx` chains to `Mf-a6osx` to avoid repeating most
   of it. A lot more can be done here.

original commit: 97533fa9d8b8400b0dc1a890768c7d30c91257e0
2020-07-24 13:13:46 -06:00
Matthew Flatt
e9d01f1e4d reduce copied code among back ends
All back ends had essentially the same `define-instruction`, just with
slightly more functionality, checking, or abstraction each case. The
newly shared version better sorts out some inherent run-time checks
versus safe-mode assertions related to fp and non-fp arguments.

original commit: c70836fa04eb33442fd3ca273ce9ca08ce877fec
2020-07-24 12:51:23 -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
Paulo Matos
7e3417aa8c Move Implementation file to Markdown
Includes repairs for typos
original commit: b4a8eaffa4173ccd29a49d0e6d4cd0f3ad9386df
2020-07-24 07:28:44 -06:00
Sorawee Porncharoenwase
173fecdff4 Point to the release branch for other workflows 2020-07-20 15:23:24 -04:00
deeglaze
ef2132ced3 Fix some typos in expander comments 2020-07-20 10:38:00 -06:00
Paulo Matos
5daba1fbb1
If CI is running on release branch, use Chez release (#3303) 2020-07-20 16:57:45 +02:00
Paulo Matos
86c56fbc46 Initial workflow for the ARM64 runner (#25)
Introduces a workflow for an ARM64 self-hosted runner.
original commit: bd5ae74834108079a485c5f3e78a7eb73fd4bcd1
2020-07-20 16:22:50 +02:00
xxyzz
f477ed289c fix broken build guide link 2020-07-20 09:02:28 -04:00
Paulo Matos
fb3dd84ac9 Define USER to be root
Although we start with user root, the image does not define the USER
env variable to root, which some Chez tests expect.
2020-07-20 09:20:10 +02: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
Sorawee Porncharoenwase
0f49bc1079 Minor change to the issue template 2020-07-16 20:55:53 -04: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
b2aadcc2a5 docs: fix typo 2020-07-15 10:36:15 -06:00
Stephen De Gabrielle
bda8215447
Issue templates (#3254)
Add bug report and feature request templates.
2020-07-15 10:50:19 -04: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
Matthew Flatt
b8c1ce63c6 add option to omit RTD descriptions in fasl output
original commit: 294ca9da084d76aa7b649059856066a1f86fe21b
2020-07-14 20:22:59 -06:00
Matthew Flatt
ec05bac0cf add "externals" fasl support, allow non-strings in sfd
"Externals" supports fasling with some values lifted out an provided
separately.

Lifting the restriction on source file descriptor paths, formerly to
strings, means that paths can be represented in a different way, and
they can be fasled through a different means than the built-in
encodings.

original commit: b6b0ae67b08f2e9bc8b7fafe5ebad0375b6ce9db
2020-07-14 20:22:59 -06:00
Sam Tobin-Hochstadt
c135647d9c
Support -l for raco make. (#2091)
* Support `raco make -l <path>` by analogy to `racket -l <path>`.
2020-07-14 13:33:35 -04: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
24e226a540 inside: fix typos in CS API 2020-07-13 11:28:03 -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
Paulo Matos
f73220d0ec Update summary files for CI (#28)
Required for 6627417c0a5737cfb0d04d3ce13f52191c15c78f to work properly.
original commit: 184ecd9a2acf10746438e59dc550337b6d214ecc
2020-07-13 17:11:21 +02:00
Matthew Flatt
e4898ed85a Merge branch 'master' of github.com:racket/ChezScheme
original commit: 0f028cfa990352160698775dcb52970d882ec74c
2020-07-13 08:34:37 -06:00
Matthew Flatt
9e1c89b575 add compile-omit-concatenate-support
Perform slightly less work on every fasl or unfasl of compiled code
that does not need to support `concatenate-object-files`.

original commit: 410985b062a3e2a4cc48da583167254d4adad2d2
2020-07-13 07:38:41 -06:00
Paulo Matos
45fefb214d Add further tests to CI (#27)
original commit: 6627417c0a5737cfb0d04d3ce13f52191c15c78f
2020-07-13 15:22:21 +02: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
fd3b903c1c sync with https://github.com/cisco/ChezScheme on fasl compression
Merge changes in the way that fasl streams are compressed. The new
approach makes compression explicit in the fasl representation, which
means that tricks like uzing zcat on a fasl file will no longer work
(at least not efficiently).

original commit: 167ac7294a2dc400821e4336f0cfc4de621efe97
2020-07-12 19:07:05 -06:00
Matthew Flatt
a4fb72e84c unbreak arm32
original commit: 83221c32b4e8654f0f7d3b3857b7efab5be2bad4
2020-07-12 06:00:00 -06:00
Matthew Flatt
40f07236b9 add memory-order-{acquire,release} 2020-07-11 19:59:27 -06:00
Matthew Flatt
802daa10b1 add memory-order-acquire and memory-order-release
original commit: ea879863f2141ac30532586ff435f16dc4339a8b
2020-07-11 10:02:32 -06:00
Sam Tobin-Hochstadt
100597f9bb Repair 7f44aaf2bf to check argument length before /. 2020-07-09 21:29:49 -04:00
Matthew Flatt
32c5af0442 arm64: fix unsafe bitwise shift by 0 and unsafe $fxu< on 0
original commit: 742fe456e3b20caf02156f0c2e0f906cb6fa579f
2020-07-09 22:37:09 +00:00
Matthew Flatt
763c7981a4 add a guide implementation
This first cut is heavy on describing how backends work, because
that's fresh in mind and relevant to ongoing effort.

original commit: 964ce95dc910e6c1825b341bf05492af5903cc82
2020-07-09 14:22:43 -06:00
97jaz
276e3ff7d6
Clarify that synchronizing on a semaphore decrements its counter (#3292) 2020-07-09 10:45:05 -07:00
Matthew Flatt
b2f74f014e add AArch64 (aka Arm64) support as tarm64le
original commit: 9964f27f64cc743fd1dbff7418fce940a4291b01
2020-07-09 06:32:41 -06: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
Matthew Flatt
38a2b28f85 reference: update fixnum range for CS 2020-07-08 20:04:23 -06:00