Commit Graph

548 Commits

Author SHA1 Message Date
Matthew Flatt
0cda14300d non-original code inspector => mark loaded bytecode as non-runnable
This change adjusts the way that trust is threaded through bytecode
and the code inspector. In Racket v6.x, reading bytecode would fail if
the code inspector is non-original and if the bytecode contains a
reference to an unsafe operation. Now, reading bytecode doesn't fail
for that reason, but all bytecode is marked as non-runnable (even
without references to unsafe operations) when loaded under a
non-original code inspector. A `read` operation by itself remains as
safe as ever.

This commit also disables the bytecode validator. For now, the
validate can be re-enabled with `PLT_VALIDATE_LOAD`.
2018-03-13 17:26:50 -06:00
Matthew Flatt
85ff4eee74 racket/fasl: switch to version-independent format
Make `s-exp->fasl` generate an encoding that can be parsed by any
future version of `fasl->s-exp`. The new format does not rely on the
runtime system's bytecode writer and reader.
2018-03-13 16:32:01 -06:00
Matthew Flatt
efe5d2d83f expander: fix module-path?
Fix `module-path?` to check the first character of a path string.

Closes #1988
2018-03-12 20:50:58 -06:00
Matthew Flatt
68a96e094e bytecode optimizer repair
Closes #1986
2018-03-12 20:17:54 -06:00
Matthew Flatt
994a4d4a35 expander: fix problem with syntax-local-expand-expression
Closes #1984
2018-03-12 07:11:31 -06:00
Matthew Flatt
2f930dd6f3 add syntax-property-remove 2018-03-11 11:31:56 -06:00
Matthew Flatt
f3596d96c2 bytes-converter: avoid unnecessary custodian registration
Some built-in bytes-converter combinations that were not
supposed to require custodian registration were neveretheless
registered, which created a small leak for some programs.
2018-03-10 07:20:41 -07:00
Matthew Flatt
3f2fd06cb0 expander: fix namespace-require/copy 2018-03-09 16:32:19 -07:00
Matthew Flatt
0d06ba2848 expander: treat unbound and top-level-bound as free-identifier=?
Restores quetionable but traditional behavior.
2018-03-09 16:07:37 -07:00
Matthew Flatt
35dc59ee07 expander: preserve syntax properties on let[rec]-values clauses 2018-03-09 15:44:11 -07:00
Matthew Flatt
e4e17db51d expander: fix origin tracking with a set! transformer 2018-03-08 14:14:28 -07:00
Matthew Flatt
83d792fca5 reader: fix locations on various kinds of errors 2018-03-08 10:14:44 -07:00
Matthew Flatt
d5d8249c12 reader: fix "original?" property on #lang-derived module name 2018-03-07 17:59:21 -07:00
Sam Tobin-Hochstadt
3438b888a2
Increase timeout for racket7 2018-03-07 11:06:48 -05:00
Matthew Flatt
ac2addeeb6 expander: fix 'origin on let-syntax-bound id-macro expansions 2018-03-07 08:20:57 -07:00
Matthew Flatt
c29e072f7e identifier-binding: don't lose nominals
Repairs ebef94435c
2018-03-06 13:33:24 -07:00
Matthew Flatt
ea7f973102 expander: repairs for top-level define-values and begin-for-syntax 2018-03-02 18:00:02 -07:00
Matthew Flatt
e78eb0563a expander: fix shadowing require after shadowing define
Refines the repair in 11fd70c3dd to properly handle a `require` that
should be allowed to shadow the initial require.
2018-03-02 13:37:48 -07:00
Matthew Flatt
11fd70c3dd expander: fix require after shadowing define 2018-03-01 14:14:24 -07:00
Matthew Flatt
7bdc3d626b adjust test that depends on keyword-argument expansion
Revert the test to go along with the "kw.rkt" reversion.
2018-02-28 20:12:04 -07:00
Matthew Flatt
b4f0499256 expander: add 'protected property to protected references
As documented and as implemented by the old expander.
2018-02-28 17:14:06 -07:00
Matthew Flatt
6018dcfdf6 expander: propagate module properties to #%module-begin
Closes #1968
2018-02-28 14:23:22 -07:00
Matthew Flatt
de27be536d expander: propagate srcloc on rename-transformer expansion 2018-02-28 13:59:13 -07:00
Matthew Flatt
25b0c23db7 expander: adjust bindings in module->namespace
Make the module path index for bindings in a `module->namespace` be a
"self" MPI (with #f for path and base), instead of the MPI associated
with bindings as view from the outside of the module instance. That
makes interactive evalaution in the namespace more closely approximate
expansion within the original module.

Example use: ASL detects a "self" MPI to determine when it should
allow assignment to module-defined variables in the REPL.
2018-02-28 10:30:24 -07:00
Ryan Culpepper
19df146ccf expand and expand-to-top-form unset observer parameter
This change means that if a macro transformer calls expand (not
local-expand, but top-level expand), the macro debugger won't
receive the inner expand's events. Previously, the macro debugger
tried to parse and then discard the inner expand, but that was
brittle and complicated the grammar.
2018-02-28 06:11:00 -07:00
Matthew Flatt
4e1e91a34e peek-{char,byte}-or-special: add 'special option
The old reader used an internal option to short-circuit special-value
reading when a special value acts as a terminating "character". Expose
that shortcut by allowing 'special as an argument to
`peek-{char,byte}-or-special`, and update the reader to use it.
2018-02-27 18:14:54 -07:00
Matthew Flatt
613de748df reader: fix another here-string problem 2018-02-27 13:48:40 -07:00
Matthew Flatt
e707d7decd expander: fix lift context for multiple #%module-begins
Also, restore the old syntax-error message for an `if`
without an "else" clause.
2018-02-27 13:44:11 -07:00
Matthew Flatt
6757a202d5 reader: fix/unbreak reading of here strings
The repair in 55a27e01a6 wasn't right.
2018-02-26 17:36:07 -07:00
Matthew Flatt
55a27e01a6 expander: fix tracking of MPIs for cross-submodule inlining 2018-02-26 17:18:54 -07:00
Matthew Flatt
014441bceb reader: fix parsing of here strings 2018-02-26 14:59:25 -07:00
Matthew Flatt
59ef254318 switch to a new, Racket-implemented expander & module system
This commit merges changes that were developed in the "racket7" repo.
See that repo (which is no longer modified) for a more fine-grained
change history.

The commit includes experimental support for running Racket on Chez
Scheme, but that "CS" variant is not built by default.
2018-02-26 13:19:53 -07:00
Matthew Flatt
38d717e98e fix "foreign-test.rktl" to work on Windows 2018-02-21 13:15:04 -07:00
Milo Turner
2e1a81b345 for/stream can use #:break as advertised (fixes #1910) 2018-02-11 18:59:18 -05:00
Matthew Flatt
ecde607a62 fix expander tracking of unbound phase-1 identifiers
Thanks to Mitchell McLean and Jacob Ginspark for the report.
2018-02-11 14:14:17 -07:00
Alexis King
02f6162283 Add splicing-parameterize to racket/splicing 2018-02-01 10:28:20 -08:00
Matthew Flatt
b8171611aa fix initial peek on file that attempts jump past the end
Closes #1938
2018-01-25 20:08:10 -07:00
Matthew Flatt
a9b658bb4c add test for define-serializable-cstruct at top level 2018-01-25 07:16:42 -07:00
Matthew Flatt
8dcfd3d266 improve define-serializable-cstruct tests
Failures were not reported in the right way, and some failures went
undetected.
2018-01-24 20:18:49 -07:00
Matthew Flatt
a12a4a51b0 vector-copy!: fix for impersonated overlapping regions
Ensure memmove-like behavior when source and destination
overlap.
2018-01-24 14:32:02 -07:00
Matthew Flatt
e2e469240f repair some tests
A recent test for `_bytes` had a memory bug. An old
test for weak hash tables had a race between GC and
hash-table lookup.
2018-01-20 08:37:33 -07:00
Matthew Flatt
62b8ca3ca7 ffi/unsafe: add _bytes/nul-terminated
Add a `_bytes` variant type that will work more consistently with
Racket-on-Chez, where the representation of a byte string does not
include an implicit nul terminator.
2018-01-19 15:17:36 -07:00
Matthew Flatt
d7421b5dc0 fix some exn:fail:contract:continuation
Some excepts that should be `exn:fail:contract:continuation`
were `exn:fail:contract`.

Closes #1920
2018-01-18 13:04:06 -07:00
Matthew Flatt
0c35905270 continuation-marks: fix caching problem in continuations
Closes #1931
2018-01-18 12:46:26 -07:00
Matthew Butterick
06bdd2f0c3 update copyright year to 2018 2018-01-12 15:44:07 -06:00
Matthew Flatt
36d563d7ce improve JIT impersonator property predicate/accessor fast path
Faster for the case that an impersonator has a small number of
impersonator properties. To enable hand-coded search, a small number
of properties are now kept in a vector instead of a hash tree.
2017-12-23 06:06:59 -07:00
Matthew Flatt
fe1d9ee517 document/test optional argument of impersonator propertry accessor
An impersonator-property accessor accepts a failure argument
in the same was as a structure-type--property accessor.
2017-12-22 19:07:36 -07:00
Matthew Flatt
8444b70bc1 improve JIT support for property reference with failure value
For a non-procedure failure value, stay in the fast path and
return that value.
2017-12-22 19:07:36 -07:00
Matthew Flatt
9092d31c29 JIT: fix property predicate & selector handling
Commit 89512eda had accientally disabled the JIT's fast
path for structure-type property predicates and selectors.

Re-enable it, but but repair a problem with the way that
impersonator-property operations are handled by the same
code.
2017-12-22 18:01:19 -07:00
Matthew Flatt
5dec488ec4 add custodian-shut-down? 2017-12-18 15:37:04 -07:00