<@U06A03HV1> I'm working on the UX for `check` for...
# development
h
@witty-crayon-22786 I'm working on the UX for
check
for Java and Go. 🧵
I agree with your decision to stream compilation results in the compile rules, rather than waiting for
check
to finish for the whole language. Meaning,
CheckResult
has no std{out,err}
We're currently returning multiple
CheckResult
objects, which you explain is for preserving all the error codes. But it results in that weird
partition #1
thing - super verbose and confusing imho (as the author of it!). Even if we preserve error codes there,
check.py
throws it out by calling
next()
to get first non-zero, if any How about we simply do that in the language file, meaning there's no partitions?
w
eeeeexcceeellent
🚀 1
❤️ 1
h
The UX would be the same as before, except the
CheckResults
streaming workunit will simply be
javac succeeded
or
javac failed
, with the error occurring higher up in logs
oh the other idea: don't log at INFO for success, only DEBUG. And ERROR for errors
w
…i’ve got to run, but will respond in a bit.
👋 1
i think that removing stuff that is only logged at the end in favor of streaming stuff makes sense
1
for mypy too: might as well stream rather than rendering partitions at the end
💯 1
❤️ 1
re: INFO/DEBUG: this is part of why i think it’s important not to render if we haven’t actually done anything (e.g. for memoization hits): i think INFO is fine as long as it only renders when we have done something (…or on startup to warm memoization)
back in a bit.
h
INFO vs DEBUG is easy to change in a dedicated followup. This gives me enough to work with for now 🙂
Go is interesting re: INFO vs. DEBUG. There are two parts that can fail:
go list
to determine the metadata for compilation, and then
go tool compile
. We almost certainly want to do DEBUG for the former, and I suspect for the latter too
w
possibly… on the JVM side, compilation is more a fact of life, and something that you might actually spend a significant amount of time waiting for (certainly for scala) and so you want to see progress happening
p
What is the
check
goal for? Is that similar to the python
typecheck
goal?
w
yes: in 2.8,
typecheck
is renamed to
check
, and includes “the lightest form of compilation” for compiled languages (currently
java
and
go
, soon
scala
), as well as continuing to contain
mypy
for
python
p
cool
w
sorry for the churn: there is a deprecation in place though, so
typecheck
will continue to work with a warning
p
np
a
What does the streaming mean for cache hits? Can you get cache hits for these processes? Will you still see warnings that show up if you get a cache hit?
w
this is streaming just in the sense of rendering process outputs as they finish, rather than streaming while the processes run. so yea: you can still get cache hits, and they’ll still render their output
👍 1