Age | Commit message (Collapse) | Author |
|
The new submodules and errortrace interact badly, for what i've seen.
In particular, even with the submodule[+*] loading correctly, its
namespace doesn't have all identifiers bound, and new ones seem to
appear in the bindings lists (things like a.1 or b.2, when a and b are
the actual identifiers defined inside the module).
Since moreover someone mentioned in the devel ML that errortrace is in
general terms buggy, i guess we can leave without it for the time
being.
|
|
Submodule (re)loading is not without pecularities. In particular,
module[*+] submodules are not visited the first time one enters its
parent, but once you load them once, they're revisited every time we
load the parent afterwards--racket's native enter! exhibits the same
behaviour, so i'm guessing we'll have to live with that.
There is however a glitch in that submodules can only be reloaded then
by loading the parent, so we need to confirm that this is expected
behaviour and, if it is, automating the parent's load when the
submodule's is requested.
On the other hand, entering a module[*+] is not working in Geiser yet,
and it does in plain racket, so this one is our fault. Working on it.
|
|
|
|
That is, complying to the submodule loading protocol (cf. racket's own
enter!).
|
|
Our module loader is receiving load requests for module names
represented as lists that are not exactly a submodule, in the sense
that the path does not represent an actual file.
This phenomenon happens for instance when specifying a reader in a
#lang tag. E.g.
#lang at-exp racket
will cause the loader to be called with module name '(main reader) and
path <cols-path>/at-exp/main.rkt, where main.rkt does not exist.
Afterwards, we see a call to load at-exp/lang/reader/rkt, with name
reader, which is the real code.
So, for now, i'm skipping all load requests with a list name,
forwarding them to racket's default loader.
|
|
Resolved module path can now be, besides symbols, a list representing
a submodule. When deciding whether what we are loading in enter's
current loader is a module or not, we have now to take that bit into
account.
|
|
|
|
|
|
This one probably requires Racket 5.3, and incorporates some
parameterization to the module compilation and evaluation code in
Geiser's version of enter.rkt. I'm mostly mirroring what the latter
does, and i'm probably not completely understanding all corner cases,
so the two users of Geiser should keep an eye open for possible
breakage introduced by this patch.
|
|
It's not perfect and undocumented, but useful nonetheless.
|
|
- We now correctly register submodules and handle main files.
- We contemplate the possibility that a module is accessed using
different paths.
|
|
|
|
|
|
|
|
|