Commit Graph

6341 Commits

Author SHA1 Message Date
Alex Knauth
f66b3312df match: check duplicate identifiers across list-no-order patters (#2000)
* match: check duplicate identifiers across list-no-order patters

* match: document that list-no-order doesn't support duplicate ids between sub-pats

* match: put duplicate id docs in a margin note between the two variants
2018-04-11 00:00:14 -04:00
Alexis King
d0e6a5839f
Fix a documented default value for syntax-local-make-definition-context 2018-04-10 15:50:11 -05:00
Robby Findler
1e93424f67 adjusted the blame objects so that equality tests (and equal hashing) work better 2018-04-09 14:00:29 -05:00
Ryan Culpepper
a48259ba29 syntax/loc: only use loc arg if it has source or position 2018-04-09 11:40:12 +02:00
Ryan Culpepper
7f12dc567c bump version 2018-04-09 11:40:12 +02:00
Ryan Culpepper
84ca256029 rename ??,?@ to ~?,~@ (see PR #2031) 2018-04-09 11:40:12 +02:00
Matthew Flatt
5bb2c1f16e upgrade native libraries
Update the build scripts, patches, and notes.
2018-04-09 09:14:05 +02:00
Ben Greenman
1e0fb22822 doc: fix zo struct typos
- remove `decode-module-binding`, because this function doesn't seem to
  be provided
- remove the `stx` struct
- fix small typos / broken links
2018-04-07 16:18:23 -04:00
Kieron Hardy
9b72423545 Fix typo and rephrase
Fix typo and rephrase for better readability and search-ability.
2018-04-03 13:38:50 -05:00
Ryan Culpepper
a4eddbd63d tests for wrap-expr/c, no build-time paths 2018-04-01 02:50:36 +02:00
Ryan Culpepper
6f628b2531 fix error messages 2018-03-30 12:43:36 +02:00
Ryan Culpepper
954823ec5f fix test: ?? in syntax template broke with new ?? template form 2018-03-30 12:43:36 +02:00
Ryan Culpepper
c2eab77cec update version number and fix history for syntax/?@/?? 2018-03-29 11:40:35 +02:00
Ryan Culpepper
a486d05bef add minimal ?@, ?? tests to racket-test-core 2018-03-29 11:40:35 +02:00
Ryan Culpepper
f4ab18716b update tests for syntax / template 2018-03-29 11:40:35 +02:00
Ryan Culpepper
fab1c812d2 update expobs regression test 2018-03-29 11:40:35 +02:00
Ryan Culpepper
72a7bbcefc update docs for syntax, template 2018-03-29 11:40:35 +02:00
Ryan Culpepper
8d607b83f9 merge syntax/parse's template into core (syntax, syntax/loc, etc) 2018-03-29 11:40:35 +02:00
Matthew Flatt
e01a21db0c raco exe: add --embed-dlls for Windows
Creating an executable with embedded DLLs means that the executable
can be truly stand-alone, instead of needing to be kept with its
DLLs in a relative subdirectory.

DLL embedding works by bypassing the OS's LoadLibrary and
GetProcAddress functions, and instead maps the DLL into memory
and performs relocations explicitly. Joachim Bauch's MemoryModule
(Mozilla license) implements those steps.
2018-03-25 16:35:42 -06:00
Matthew Flatt
7fd6e07ad7 io: another repair to Windows path parsing 2018-03-23 21:46:12 -06:00
Matthew Flatt
0ebcb23244 io: repairs for Windows path maniplation
Perpetuate a failure to make Windows paths behave reasonably with
path-manipulation functions.

In one case, the new implementation seemed better than the old one, so
I've changed the old implementation (by deleting code) and test cases.
The old code would split "x /y" to "\\?\REL\x " and "y", and the new
one splits to "x /" and "y"; the trailing separator is now enough to
preserve the space character, and it also preserves the directoryness
of the path. Of course, "x /" splits to 'relative and "\\?\REL\x " as
it strips away the trailing "/".

A remaining problem in both implementations: some Windows API
functions implicitly erase a trailing "." in a directory name, making
"x./y" equivalent to "x/y". The Racket path-manipulation functions
don't do that, so splitting and recombining "x./y" does not access the
same path as the original. This apparently hasn't been a problem in
practice, and there are so many terrible hacks already, so I left it
alone.

The new implementation perpetuates also the implementation mistake of
representing paths internally as byte strings. If, in some terrible
universe, I'm forced to do this again, the right choice is probably to
keep the path in a parsed form with enough information to reconstruct
the original, but with the information sorted nicely to make various
normalizations and combinations easy.
2018-03-23 10:37:59 -06:00
Robby Findler
26d1e94421 correct typo 2018-03-23 08:45:10 -05:00
Robby Findler
11d6664b7e stop referring to functions that don't appear to exist 2018-03-22 18:03:31 -05:00
Paulo Matos
42017fa671 Add example showing +nan.0 is a number 2018-03-22 09:35:05 -05:00
Philip McGrath
8db1c39a7a Typo fix 2018-03-21 14:18:55 -05:00
Matthew Flatt
b0424737a7 places: handle impersonated values by copying
Recognize vector, hash table, and prefab impersoantors/chaperones,
and allow them as place0channel messages by copying.

Closes #2001
2018-03-21 08:57:16 -06:00
Leandro Facchinetti
b8341f1559 Fix grammar 2018-03-20 14:58:45 -05:00
Robby Findler
c442e9707f fix bugs with error checking for ->* and ->
closes 1997
2018-03-20 08:34:27 -05:00
Matthew Flatt
93e3b44fd2 expander: repair phase >= 1 undefined-variable checking
Closes #1996
2018-03-20 07:20:24 -06:00
Matthew Flatt
547e027118 compiler/zo-unmarshal: unbreak
Fill in a missing piece for 37a985a681.
2018-03-18 10:56:47 -06:00
Matthew Flatt
37a985a681 compile expander in "static" linklet mode
The expander as a linklet will be instantiated once, so there's no
need to capture references in closures among functions within the
expander. Add a "static" linklet compilation mode to inline the
variable addresses that would otherwise be referenced via a closure.

Although the change is intended to speed up the expander by avoiding
some indrections, it also reduces the bytecode size of the expander.
Bitmaps that track which linklet variables are used in closures turn
out to have been about 25% of the expander's bytecode size, since the
linklet has so many definitions.
2018-03-17 07:24:50 -06:00
Matthew Flatt
ad3ab8b352 optimizer: fix guarded-constructor tracking
Some parts of the optimizer were inconsistent in whether a tracked
structure type needed to have a constructor that always succeeds
(i.e., no associated guard). Increase precision to track both kinds of
structure types, and avoid some unnecessary space-safety clearing in
the vicinity of nonfailing constructors.
2018-03-17 07:24:50 -06:00
Paulo Matos
11e3d7a1f8 Fix function name imap-get-messages
The function is called `imap-get-messages` but the example refers to `imap-get-message`, which does not exist.
2018-03-15 10:06:10 -05:00
Paulo Matos
6d74c37b05 Simple typo fix in net/imap documentation
Typo fix in `net/imap` documentation for `imap-get-updates` documentation.
2018-03-15 10:05:01 -05:00
Matthew Flatt
67a982ad6a cs: add lock on equal?-based weak hash table
Also, repair a test that didn't properly retain weak-hash keys.
2018-03-14 14:37:41 -06:00
Matthew Flatt
aad799f09e racket/cmdline: add missing checks in command-line
Closes #1989
2018-03-14 06:32:50 -06:00
Matthew Flatt
1dd0a83333 racket/path: add #:more-than-same? argument to find-relative-path
Closes #1980
2018-03-13 20:14:04 -06:00
Matthew Flatt
6db03c7eb9 racket/promise: fix promise/force on the result of delay/sync
Closes #1933
2018-03-13 19:39:52 -06:00
Matthew Flatt
7af67af119 missed updates to the sandbox test suite
Tests need to change due to 0cda14300d.
2018-03-13 17:48:47 -06:00
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
Sam Tobin-Hochstadt
2195efa08d Don't eval in fuzz tester. 2018-03-13 18:21:46 -04: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
Vincent St-Amour
b4fec19c40 Fix link to TR test suite.
Closes #1985.
2018-03-12 09:08:00 -05:00
Leandro Facchinetti
e7a421d08c Fix typo in package documentation 2018-03-12 09:04:25 -05: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
af4c23fa72 variable-reference->namespace: ensure that module is available 2018-03-09 11:06:49 -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
d8dce77984 input-port-append: add #:name argument 2018-03-06 20:01:47 -07:00
Matthew Flatt
c29e072f7e identifier-binding: don't lose nominals
Repairs ebef94435c
2018-03-06 13:33:24 -07:00
Paulo Matos
80ae3394aa Update function name
Function reference `supervise-named-dynamic-place-at` should be `supervise-place-at`.
2018-03-06 09:19:49 -07:00
Matthew Flatt
be371aa2cc doc repair
Closes #1954
2018-03-06 09:12:48 -07:00
Matthew Flatt
efb9a919fc ffi docs: clarification on unsafe-socket->port
Thanks to Hong Feng for suggesting the clarification.
2018-03-06 08:51:49 -07:00
Milo Turner
275d7974cd Added #:cut pattern directive 2018-03-05 15:03:45 +01:00
Matthew Flatt
c6579bbdcf expander: fix provide of prop:exn:missing-module 2018-03-04 07:21:18 -07:00
Matthew Flatt
ea7f973102 expander: repairs for top-level define-values and begin-for-syntax 2018-03-02 18:00:02 -07:00
Robby Findler
34189b38f7 attmpet to clarify define/contract's boundary a bit more 2018-03-02 14:44:46 -06: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
Robby Findler
081b1cc3f3 add for-label require; closes #1967 2018-03-02 07:42:56 -06:00
Matthew Flatt
11fd70c3dd expander: fix require after shadowing define 2018-03-01 14:14:24 -07:00
Matthew Flatt
82d761aef0 at-exp: use "..." for literals in error messages
Match the corresponding change in the Racket reader.
2018-03-01 07:00:11 -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
Matthew Flatt
a6e585a72e racket/unit: update expected error messages in tests 2018-02-28 07:02:11 -07:00
Matthew Flatt
e4296f5c1e add stdout logging in the same style as stderr logging
Use stdout log reporting instead of stderr log reporting for status
reporting during the build, so that the status report is not
misinterpreted as an error.
2018-02-28 06:52:55 -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
3e5e2cc30d raco decompile: support non-module programs 2018-02-27 20:23:12 -07:00
Matthew Flatt
bd231cd75d restore syntax-local-make-delta-introducer
Closes #1965
2018-02-27 20:23:12 -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
586feb6df0 expander: fix problems with cross-phase persistence 2018-02-26 20:29:22 -07:00
Matthew Flatt
9fec456335 fix tests that relied on a specific internal hashing function 2018-02-26 19:46:33 -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
40219b88f3 adjust expected error message in test 2018-02-26 15:54:57 -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
Robby Findler
d56eb03432 attempt to improve the evt guide section 2018-02-22 17:37:58 -06:00
Vincent St-Amour
606ec2955c Fix contract in docs.
Closes #1960.
2018-02-22 12:04:41 -06:00
Matthew Flatt
38d717e98e fix "foreign-test.rktl" to work on Windows 2018-02-21 13:15:04 -07:00
Paulo Matos
1ea340144a Fix typo
'suitiable' should read 'suitable'
2018-02-21 13:19:25 -06:00
Matthew Flatt
32b274dee1 make syntax/moddep more useful
This tool seems misplaced, but improve it a little to be practical for
larger module hierarchies.
2018-02-19 07:03:52 -07:00
Matthew Flatt
11e81f8776 add variable-reference-from-unsafe?
For now, the result is always #f, but this is a bridge to slightly
more useful functionality in the racket7 branch.
2018-02-19 07:03:52 -07:00
Robby Findler
8393f0b2f6 fix opt/c for flat-contract?
Thanks to Philip McGrath for spotting the problem

Also, along the way, discover the setup for chaperoneness for opt
contracts was bogus, so fix that up too
2018-02-17 19:52:58 -06:00
Hashim Muqtadir
95dab07e47 Update port-lib.scrbl (minor typo) 2018-02-16 12:28:23 -06:00
Philip McGrath
670f89a85b Fix source of package catalog server
`(collection-file-path "pkg-catalog" "meta")` raises an exception.
2018-02-14 15:11:37 -05:00