ShellExecute can dispatch Windows events, which means that it needs to
be called in a way that's consistent with the environment expected by
event-handling callbacks.
Relevant to #3832
This rewrite writes around a possible misinterpretation. This version hopes to distinguish between the necessary conditions to add the namespace scope and the details about where it's added.
The prior version says "the top-level form", but it is not obvious which top-level form the reference means to single out. I also replace 'result' with 'consequence' to avoid punning a technical term with non-technical English language use.
As written the prose describes a 'body definition'; I can't find that phrase used elsewhere. I suspect it may be an artifact of an earlier rewrite. If correct as written, that term wants a definition or a pointer.
"if the number of surrounding @racket[begin-for-syntax] forms and the number of surrounding @racket[define-syntaxes] forms sum to @math{N}---" would probably be unambiguous, but this sentence is already long as it is.
I found the text as written slightly misleading. The phrase "referenced by a value" intends to describe a state of being; generally, a value *is* a reference. One might misinterpret this English phrase, though, as describing an action that can occur: "reference" being an action that a value can perform, like "walk", "jump", or "skip". Further, because objects aren't limited to holding merely those data that some variable references, I thought it improved reading to remove that qualification.
I imagine a reader misunderstanding the causal relationship in the sentence as currently written. I hope for this to disambiguate. I believe this point in the document describes a design decision we the reader are presently considering. The reader should not imagine that an existing capacity to change `x` itself materially /prevents/ substitution---that we cannot substitute---the way a buoy's ability to float prevents it from sinking. I believe the writer means to say that the intended goal, supporting mutation, makes us (the author + the reader) reject direct substitution as an evaluation strategy.
When a glib message is logged in an OS thread not created by Racket,
then the current-future and async-callback-queue thread-local
variables were not initialized. The failure mode tended to be an
unending and memory-consuming cycle of triggering an error while
attempting to report an error.
Although there was a test for proper handling of logging calls from
foreign threads, the test previously created the "foreign" thread with
`call-in-os-thread`, which is not foreign enough.
Related to #3832