Allows universe and world programs to specify which port they want to
communicate on. If omitted, universe and world use the default port
number. This enables multiple universe instances to run on the same
machine. For example:
(require 2htdp/universe 2htdp/image)
;; Run two client-server pairs
(define (run)
(launch-many-worlds (server 8080)
(client 8080)
(server 8081)
(client 8081)))
;; Port -> #f
(define (server p)
(define noop (make-bundle #f '() '()))
(universe #f
(port p)
(on-new (λ (_u _iw) noop))
(on-msg (λ (_u _iw _msg) noop))))
;; Port -> #f
(define (client p)
(big-bang #f
(port p)
(on-tick values)
(to-draw (λ (_) (empty-scene 400 400)))
(register LOCALHOST)))
These additions allow the GUI package manager to use `pkg-catalog-upload-local`
instead of having a its own copy of the same opertation. Not surprisingly,
with two copies of the code, the `pkg/lib` copy was missing support for tags.
1) Indentation rules to to count paren(indentation):
Return number of parenthesis till the outmost “@“ annotation,
if the there is "[", we check if it has "@" right after if and at the
same line, if so, we add the number of characters between "[" and
the beginning of the line it appears
2) line push back rules:
we do not push back lines begin with “@“ that
a) has keyworld "codeblock" or "verbatim" after
b) contains “[” and multiple lines before the closing “]”
The package dependency checking process was already gathering all the
reelvant information, or nearly all of it, so it's relatively cheap to
add the checks.
The bug was a kind of typo: using `&` where `%` was intended to
implement a counter wraparound.
This bug is an even more likely candidate to be resopnsible for the
occassional crashes from the DrRacket easter-egg test.
Avoids recording original syntaxes with a source or position
of #f, since these are usually intermediate syntax pairs that
don't correspond to actual source syntax.
For example, in a (#%module-begin . rst) in a submodule, the
underlying pair may contain an identifier and a cdr that is a
syntax object. That cdr will have #f source and position and also
does not correspond to any source syntax.
Leaving such syntax objects in the table means there are spurious
hits later when a syntax object with an unknown source location
is looked up.
Closes PR 14389
free-identifier=? expects, contrary to documentation, a syntax?, causing
contract errors. (and (identifier? ...) ...) solves this.
[Since the function is called only on fully expanded forms, it doesn't
look like the `identifier?` tests can ever fail, but it still seems
sensible to have them. -Matthew]