Commit Graph

38538 Commits

Author SHA1 Message Date
Matthew Flatt
d3aa7e90e7 rktio: fix Windows file timestamp dst correction
The old correction was broken in at least a couple of ways; use
the more tested DST calculation in the implementation of
`seconds->date`.
2018-03-29 20:45:26 -06:00
Matthew Flatt
e95c3fe6d5 sgc: fix unmapping of temporary GC space
Instead of unmapping directly, return temporary space to
the page-allocation cache.
2018-03-29 14:48:11 -06:00
Ryan Culpepper
0f3f338b22 delay evaluation of default-make-fail argument until use
This reverts part of 778b1845.
2018-03-29 11:48:59 +02:00
Ryan Culpepper
0083f5c858 fix error reporting for define/syntax-parse (closes #2003) 2018-03-29 11:41:01 +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
2c627c300b unwind: avoid passing NULL to memcpy
In response to #2021
2018-03-28 05:31:30 -06:00
Matthew Flatt
330bb2cfb8 expander flattener: recognize gensym
An unreferenced call to `gensym` can be discarded.
2018-03-27 20:33:21 -06:00
Ryan Culpepper
5fadcb38b8 update openssl .so version list 2018-03-27 22:31:10 +02:00
Ryan Culpepper
5f68f0d5a5 trim requires 2018-03-27 22:31:10 +02:00
Ryan Culpepper
778b184526 avoid generating macro definition; use compile-time helper instead 2018-03-27 22:31:10 +02:00
Matthew Flatt
f6424ff7c2 Windows: adjust DLL embedding implementation
Define `__pfnDliNotifyHook2` instead of declaring it as `extern` seems
to make it work in more build environments.
2018-03-27 13:57:41 -06:00
Matthew Flatt
5ec71d45e8 Restrict W+X based on signal handlers to intended pages
Make 9d0ab74e9e more responsible by limiting permission changes to
pages that are intended to be both writable and executable for code
generation. That way, the signal handler doesn't just reopen holes in
loaded foreign libraries that W^X would close.
2018-03-27 11:34:42 -06:00
Kieron Hardy
9498f52c71 Update misc.rkt 2018-03-27 10:01:13 -05:00
Matthew Flatt
f67d4f349e Windows: unbreak loading of "longdouble.dll"
Changes to support embedded DLLs make loading worked only
in embedded mode.
2018-03-26 18:15:18 -06:00
Matthew Flatt
bf0a739991 raco exe: fix section alignment for PE rewriting
A new resource section was aligned based on the old section's
virtual address, instead of the PE's specified section
alignment. That could make alignment round up too far, leaving
a disallowed gap in the sections' virtual addresses.
2018-03-26 17:41:59 -06:00
Matthew Flatt
f8dac3d47d byte compiler: fix excessive fixnum assumptions in unsafe mode
The comparison operations `=`, `<`, etc., were incorrectly compiled as
fixnum operations in the expander's implementation.
2018-03-26 17:27:54 -06:00
Matthew Flatt
9d0ab74e9e OpenBSD: follow the letter of W^X
Conform to W^X by using a signal handler that switches between W and X
mode on any fault. That's not the spirit of W^X, certainly, but it
should make Racket work without special configuration.

Beware that this change can turn some crashes into infinite loops.
It may be possible to detect those loops, but I didn't find a
good and portable way, so far.
2018-03-26 14:08:16 -06:00
Michael Myers
a70e6bdfc9 Fix typo 2018-03-26 08:08:51 -05: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
1803e647e1 net/win32-ssl: repairs for RacketCS 2018-03-24 07:04:31 -06:00
Matthew Flatt
7fd6e07ad7 io: another repair to Windows path parsing 2018-03-23 21:46:12 -06:00
Matthew Flatt
2754f22844 cs & io: repairs for locks & DLL errors 2018-03-23 19:20:14 -06:00
Matthew Flatt
f048f23ade schemify: fix problem with inlining
Recently added support for inlining functions with a "rest" arg
exposed a problem in constructing an inlining environment.
2018-03-23 17:01:21 -06:00
Kieron Hardy
e0a8f475a7 Update misc.rkt 2018-03-23 14:31:03 -05: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
e031e04f62 improve error message for xml contract violation 2018-03-23 08:45:34 -05: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
Kieron Hardy
13c31221d6 Update thread.c
Fix typo in comment.
2018-03-21 11:49:35 -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
Matthew Flatt
f4db704b5b --help on Windows: fix misleading description of "racketrc.rktl"
The path usually is found some other way than through `HOMEDIRVE`
and `HOMEPATH`.
2018-03-21 07:20:05 -06:00
Matthew Flatt
808bdb6d0b JIT-inline symbol-interned? 2018-03-20 17:44:35 -06:00
Matthew Flatt
811ae4f72a change unsafe immutable hash table iteration 2018-03-20 17:44:35 -06:00
Leandro Facchinetti
b8341f1559 Fix grammar 2018-03-20 14:58:45 -05:00
Matthew Flatt
3fef5de8b9 cs: fix options-argument handling in compile-linklet 2018-03-20 08:27:54 -06: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
5ed0cdf563 expander: sync cify with recently newly used operations 2018-03-19 16:54:47 -06:00
Matthew Flatt
b177a5c908 hash-update! and similar: minor performance reorg
Reorganize the implementation of `hash-update!` and related fuctions
to help the bytecode compiler a little.
2018-03-19 10:42:09 -06:00
Matthew Flatt
f138469464 reverse and map: skip checks in unsafe mode
Since only the expander is compiled in unsafe mode right now, the
checks are skipped only when the implementations of `reverse`, `map`,
etc., are part of the flattened expander.
2018-03-19 10:11:48 -06:00
Matthew Flatt
b82d6e2204 expander: remove backend-specific vector handling
Backend-specific handling is no longer useful, since the rules have
changed for code inspectors, bytecode, and unsafe operations.
2018-03-19 08:01:50 -06:00
Matthew Flatt
77a978fb10 expander: another cache layer for binding
Add a cache on binding lookup that is like the old expander --- a
small cache that is consulted before the more general cache that is
already in place.

The new cache layer primarily helps when a single identifier is
compared to a sequence of other identifiers.
2018-03-18 15:28:51 -06:00
Matthew Flatt
60471c2691 improve continuation-mark fast path
Follow the metacontinuation chain, and also distinguish between
"definitely not found" and "not easily found, so try the slow path".
2018-03-18 13:10:01 -06:00