leafac
2017-4-26 10:24:24

@dan: Will do, thank you.


samth
2017-4-26 16:26:26

@cowbs I haven’t seen that before, but @mflatt might have an idea or maybe reporting on the mailing list or on github is the right thing


mflatt
2017-4-26 17:18:36

@cowbs Is the issue that raco setup should be able to write that ".dep" file, or that it shouldn’t be trying to write it? If it’s the latter, are all ".zo" and ".dep" files newer (by filesystem timestamp) than corresponding ".rkt" sources?


cowbs
2017-4-26 17:21:39

@mflatt What it looks like to me is parallel jobs racing each other to generate the same .dep and .zo files and stomping over each other as a result. Once everything has been built there is no issue. Ideally a user who syncs our 6.8 folder shouldn’t have to build them at all but that’s a separate issue.


mflatt
2017-4-26 17:27:12

Parallel jobs should not try to build the same file, at least if they’re all from the same raco setup, because there’s a managing process that hands out permission to build a given file. If you turn on output of debug@setup/parallel-build with something like racket -W "debug@setup/parallel-build error" -l- raco setup do you see multiple processes compiling the same file?


cowbs
2017-4-26 17:29:21

Sorry, should’ve clarified, this isn’t being invoked from raco setup but rather our own racket program’s main. I’ll run it with the debug.


samth
2017-4-26 17:38:53

@mflatt the Travis tests for the release branch consistently fail with an unbound variable, indicating the bug in the new expander that we’ve seen for a while


samth
2017-4-26 17:39:13

however, building those same tests on my machine does not produce that error, sadly


samth
2017-4-26 17:39:22

is there something useful we can do to debug on travis?


mflatt
2017-4-26 17:43:55

@cowbs see also the PLT_COMPILED_FILE_CHECK environment variable, added in v6.6, that turns off the file-timestamp check if you set it to exists


cowbs
2017-4-26 17:51:02

Okay, I e-mailed you the complete output


mflatt
2017-4-26 18:04:31

@samth I’m able to get that error with a release build on my machine, so I’ll investigate more


samth
2017-4-26 18:04:42

@mflatt ah, great!


mflatt
2017-4-26 18:05:16

Well, I’m able to get the same error as the Mac build on Travis; is that the right one?


mflatt
2017-4-26 18:05:39

exception raised while running test case contract-arrow-star-optional25b?


mflatt
2017-4-26 18:06:46

@cowbs It does look like multiple attempts to compile some files… I’m not sure the log means what I think it means, though, so I’ll still looking. Does your program drive compilation by calling parallel-compile-files?


cowbs
2017-4-26 18:07:50

Yes


samth
2017-4-26 18:08:24

@mflatt if it’s an unbound variable error in the contract tests, then that’s the right one


samth
2017-4-26 18:09:34

My recollection is that when this error has appeared in other places, the printed scope sets in the error message seem to be subsets in the right way


mflatt
2017-4-26 18:17:07

@cowbs Oh… Taking things from the top, using parallel-compile-files (or raco make) will not work if any modules involved in the implementation of parallel-compile-files are not already in sync. The raco setup tool has special bootstrapping support to be able to compile its own implementation, but compilation won’t work right otherwise.


cowbs
2017-4-26 18:18:35

Ahh okay.


danl-ndi
2017-4-26 18:38:01

@mflatt so ensuring that everything used by parallel-compile-files is built properly (using raco make or raco setup) should neatly sidestep this current issue?


mflatt
2017-4-26 18:39:29

I think probably so; I’m not 100% sure that an out-of-sync base is causing this specific problem, but an out-of-sync base will definitely cause problems


danl-ndi
2017-4-26 18:40:31

@cowbs it seems like everyone needs to run a “install” step after syncing racket 6.8


cowbs
2017-4-26 18:41:31

Or we push that exists check mode and rely on us keeping the zo’s in perforce up to date and correct.


danl-ndi
2017-4-26 18:42:46

i don’t think parallel-compile-files pays attention to that


mflatt
2017-4-26 19:25:51

@danl-ndi It should — this is the case (and client) that it was designed for


danl-ndi
2017-4-26 19:30:43

ah… that might be a good fix us


danl-ndi
2017-4-26 19:31:20

we also just discovered that —compiled parameter can take an absolute path and the empty entry to preserve usage of the racket distro’s zo files


cowbs
2017-4-26 19:34:28

With that environment variable set I’m not seeing any of our own zo’s build with parallel-compile-files


danl-ndi
2017-4-26 19:34:48

they’re not getting *re*built, right?


cowbs
2017-4-26 19:35:34

I deleted all *.zo and *dep files from our plt compiled directories, and they’re not regenerated when I do dco.cmd —precompile


cowbs
2017-4-26 19:35:42

the directories are still there, however


cowbs
2017-4-26 19:36:07

(doesn’t seem to make a difference)


cowbs
2017-4-26 19:36:35

I do still have -W "debug@setup/parallel-build error" as an argument, and nothing is printed from that.


samth
2017-4-26 19:39:19

@mflatt looking at your patch, am I correct that this is the relevant portion of the code in Chez (https://github.com/mflatt/not-a-box/blob/master/core-hamt.ss#L348-L351) and that the code argument that’s wrong isn’t present in the Chez code?


mflatt
2017-4-26 19:41:38

Yes


jeapostrophe
2017-4-26 20:35:36

samth: You know how TR displays all the type errors, not just the first one. That’s cool. Do any of the papers explain that? There’s some subtlety it seems like because rule might have to return a type even if it doesn’t have a type or something that should be an arrow isn’t so the structure of the rule breaks down


pnwamk
2017-4-26 20:41:04

@jeapostrophe Bottom/Error (I forget exactly which when) get inserted at times when things don’t check. Both are valid arrow types via subtyping


pnwamk
2017-4-26 20:41:20

I don’t think is is described in any TR papers


jeapostrophe
2017-4-26 20:42:58

pnwamk: Cool, and rather than destructing the return type, you just check that it is in the sub-type relation, then at the end do something like “Is the set of errors empty?”


pnwamk
2017-4-26 20:43:56

I believe so — I’d have to double check (I haven’t hacked much on the error handling code but that seems right based on everything I’ve seen)


jeapostrophe
2017-4-26 20:44:29

It’s very cute


jeapostrophe
2017-4-26 20:44:44

It’s really easy to write a type-checker that sucks and just errors once


samth
2017-4-26 21:03:31

@jeapostrophe the type checking is handled as @pnwamk describes


samth
2017-4-26 21:03:41

the error handling is basically done via side effect


samth
2017-4-26 21:04:16

raise-type-error is a effectively a function that adds an error to a global list, and returns the Error type


samth
2017-4-26 21:04:40

and then we call a function at the end that iterates over that list, and raises errors unless the list is empty


samth
2017-4-26 21:04:58

note that it uses (error-display-handler) to raise multiple errors


samth
2017-4-26 21:05:28

one thing to think about: it’s easy for the Error type to leak places, and we don’t do a perfect job of eliminating downstream errors


pnwamk
2017-4-26 21:10:29

to add to the fun of Error implementation wise, it’s both the top and bottom type (w.r.t. subtyping - yikes!), so we have to do special checks for it when computing things like type intersections to ensure operations have certain desirable properties (e.g. commutativity)


notjack
2017-4-26 21:11:14

….how on earth can it be both the top and bottom type?


pnwamk
2017-4-26 21:11:32

the subtyping function says it is


pnwamk
2017-4-26 21:11:43

:wink:


notjack
2017-4-26 21:13:06

sigh


pnwamk
2017-4-26 21:13:16

(recall that Error is not a type that describes program values, but a tool to make the typechecker more user friendly, e.g. let us report all type errors in a program effectively)


greg
2017-4-26 21:41:40

Any Frog users: I’d welcome input on https://github.com/greghendershott/frog/pull/194


danl-ndi
2017-4-26 22:56:08

@greg as a rank Frog dabbler that seems good at first glance


danl-ndi
2017-4-26 22:56:23

a slightly more racket-y way to do .frogrc seems good


jeapostrophe
2017-4-27 01:27:39

samth - cool