UmbralRaptor changed the topic of #kspacademia to: https://gist.github.com/pdn4kd/164b9b85435d87afbec0c3a7e69d3e6d | Dogs are cats. Spiders are cat interferometers. | Космизм сегодня! | Document well, for tomorrow you may get mauled by a ネコバス. | <UmbralRaptor> egg|nomz|egg: generally if your eyes are dewing over, that's not the weather. | <ferram4> I shall beat my problems to death with an engineer. | We can haz pdf
egg|laptop|egg has joined #kspacademia
<egg|laptop|egg>
!u ʾ
<galois>
ʾ: U+02be MODIFIER LETTER RIGHT HALF RING
e_14159 has joined #kspacademia
e_14159_ has quit [Ping timeout: 378 seconds]
<egg|laptop|egg>
NABU?
<galois>
NABU: Nouvelles Assyriologiques Brèves et Utilitaires
<whitequark>
egg|laptop|egg: i need advice
<egg|laptop|egg>
mrow
<whitequark>
it's about naming.
<egg|laptop|egg>
MaDCoWS?
<galois>
MaDCoWS: Massive and Distant Clusters of WISE Survey
<whitequark>
o?
<egg|laptop|egg>
?
<whitequark>
oh, that wasn't an answer to me
<egg|laptop|egg>
well, it was more waving at at silly naming by astronomers
<whitequark>
o.
<raptop>
In the case of MaDCoWS, the PI explained that he's a fan of funny/memorable names. And when a random student came up with something that perfect...
* raptop
is still frustrated that an obvious name for my research would be "Pathfinder Exoplanet Radial Velocity Survey(s)"
* whitequark
licks egg
* egg|laptop|egg
purrs
* egg|laptop|egg
should probably sleep
<whitequark>
hrm
* egg|laptop|egg
scritches whitequark
<whitequark>
i need to name this thing something.
<egg|laptop|egg>
what is it
<whitequark>
ok so, cxxrtl is a compiler from RTL netlists to C++, right? it has debug information, and it can show statistics about debug information because that's how i improve it
<whitequark>
also it can provide some insight into the design but that's secondary
<egg|laptop|egg>
RTL netlists?
<whitequark>
register transfer level
<whitequark>
a flow graph running on discrete time
<whitequark>
with bit vectors.
<egg|laptop|egg>
OK
<whitequark>
i currently have four kinds of wires, classified by the kind of debug info they generate (and by "debug info" i really mean "reflection", it's kinda one of the most important parts of the design)
<whitequark>
- member, which is just normal class members that hold some state
<whitequark>
- const, which have a constant assigned to them, and never change
<whitequark>
- alias, which always follow some other member
<whitequark>
- other, which can reflect a wide variety of wild configurations, unified mostly by the fact that you don't really want to experience any of them
<whitequark>
well. until today, if you had a wire that is a combinatorial function of other wires, you could either make it a class member (introspectable, slow) or optimize it out (the opposite of that)
<whitequark>
today i *finally* implemented my old idea about having "zero cost" rematerialization for such wires, similar to what DWARF does with bytecode
<SnoopJ>
oh?
<whitequark>
and it actually works really well. 2x speed gain going from -Og to -Ofast, no perf difference between -Ofast with -g1 (rematerialization off) and -g2 (rematerialization on), only 20% increase in compile time from -g2
<whitequark>
the problem is that i have to give those rematerializable wires some sort of a name in the UI and the source code, and i hate everything i could come up with
<egg|laptop|egg>
not sure what « combinatorial function of other wires » means eggsactly, but maybe « composite » ?
<whitequark>
egg|laptop|egg: in this context, i think "combinatorial function" means just what you would call "function"
<egg|laptop|egg>
or « bundle », if you want a noun rather than an adjective, what with wires
<egg|laptop|egg>
hmm.
<whitequark>
so like, normal member wires, they can compute (say) `c = a + b * 10`. and if c is necessary for the design, then c will be a member wire, cuz it's a class member.
<SnoopJ>
whitequark, what are the things against which this name will distinguish?
<whitequark>
but let's say c was optimized out, and then pulled out back into existence by that -g2 switch that enables advanced debug info
<whitequark>
i need to call c something in this particular situation
<whitequark>
right now i call it "compute wire", but that's stupid, the only thing the entire program does is computes
<SnoopJ>
the wire part sounds sane, the adjective isn't all that discriminating; introspection wire?
<whitequark>
they're all introspection wires, since the context is debug information / reflection
<egg|laptop|egg>
whitequark: parametric perhaps ?
<SnoopJ>
oh I see, you're naming the combinaty boi
<whitequark>
what's really different about `c` is that until a debugger needs it, it doesn't even exist
<whitequark>
you know, the thing gdb should be doing instead of `$1 = <value optimized out>`
<egg|laptop|egg>
hah
<SnoopJ>
leaving a hook behind instead of a lobotomy scar
<egg|laptop|egg>
evanescent wire ?
<whitequark>
consider this, i wrote a compiler that NEVER loses ANY debug info regardless of optimization level
<SnoopJ>
ooo
<whitequark>
if you set -O to a higher number, it simply has to work a bit harder to reconstruct the lost info
<SnoopJ>
!wpn -add:adj evanescent
<galois>
Added adj 'evanescent'
<whitequark>
but it will never harm visibility
<SnoopJ>
!wpn -add:wpn Evanescence
<galois>
Added wpn 'Evanescence'
<whitequark>
hrm
<whitequark>
is there really nothing shorter
<whitequark>
feels like "member, const, alias, ?" has something that would fi tin
<SnoopJ>
mayberef
<egg|laptop|egg>
eh, evanescent is as long as whitequark :-p
<whitequark>
i almost called them "debug" but that whole interface is for debug
<egg|laptop|egg>
ghost wires ?
<whitequark>
hrm
<SnoopJ>
spukhafte firnwires
<whitequark>
that's not very descriptive but maybe
<egg|laptop|egg>
(my first thought was virtual but that word is way too overloaded)
<SnoopJ>
it reminds me of some virtual call elision I heard about during an interview today now that you say it
<whitequark>
i... could probably do that
<SnoopJ>
I guess "call" is not very meaningful in the context of HDL, but...
<whitequark>
member, const, alias, elided
<whitequark>
ok well it's still a problem because i have another unrelated thing i call "elision" and i'll have to rename *that*
<SnoopJ>
elided seems a little misleading if you can reinsert on demand, or is this name referring exclusively to the 'site' on the finished product of the compilation?
<whitequark>
basically yes
<SnoopJ>
oh, well then I'd say that's pretty descriptive indeed
<egg|laptop|egg>
if you want to go towards that kind of terminology there is inline, too
<egg|laptop|egg>
(or inlined)
<whitequark>
hmmm
<SnoopJ>
outlined
<whitequark>
yes
<SnoopJ>
yeeted
<egg|laptop|egg>
underlined
<SnoopJ>
flatlined
<whitequark>
maybe "erased"
<egg|laptop|egg>
tired wires, wired wires
<SnoopJ>
yes more seriously something that suggests the removal seems apropos
<whitequark>
it's like type erasure, the types are still there, they just become implicit
<SnoopJ>
fibres
<SnoopJ>
(they're easy to see through)
<egg|laptop|egg>
whitequark: or implicit, precisely
<egg|laptop|egg>
but then it sounds like the compiler hallucinates wires for you rather than the reverse
<SnoopJ>
compiler scoffing at your design
<SnoopJ>
"You're going to put *that* over *there*?"
<egg|laptop|egg>
whitequark: hint ? as in the wire isn’t there, but a hint of its former existence is left for the debugger
<SnoopJ>
trace
<whitequark>
hrm
<SnoopJ>
probe
<SnoopJ>
lead
<whitequark>
those two words are super overloaded in HDL context
<SnoopJ>
last one's probably too confusable with wire
<SnoopJ>
tap?
<whitequark>
hm
<egg|laptop|egg>
dormant wires
<SnoopJ>
wurms
<SnoopJ>
wait no wirms is dumber
<egg|laptop|egg>
I should do like the wires and go to sleep
egg|laptop|egg has quit [Remote host closed the connection]
<SnoopJ>
Wir(e) (re)m(oval) s(ite)
<SnoopJ>
or something more obvious but also more dull: rmwire or the like
<whitequark>
:s
<SnoopJ>
limewire
<SnoopJ>
I'm just dissociating over here to avoid bashing my head against how much doing it takes to get enumerate() in C++
<whitequark>
i eventually went for "inline wires"
<whitequark>
"outlined wires" is more correct from the POV of internals of CXXRTL, but from the POV of the user those are inlined wires with debug info
<whitequark>
thanks everyone, this helped!
<whitequark>
i can finally push it lol
<SnoopJ>
🚢
* raptop
hasn't heard of C++ causing dissociation before O_O
<SnoopJ>
the language gets very little credit for it I think
<egg|laptop|egg>
whitequark: glad to hear the naming suggestions were helpful
<whitequark>
:3
<whitequark>
i'm almost done now
<whitequark>
just have to figure out why clang is a-ok consuming megabytes of templates but chokes on a function that repeatedly passes a string and a POD to a metho
<whitequark>
oh wait you work at google
<whitequark>
can you tell me where chrome://tracing went
<whitequark>
and the repo behind the standalone tool, and the repo behind the fork of the standalone tool