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 has joined #kspacademia
<egg|laptop|egg> whitequark: https://twitter.com/whitequark/status/1338164068629311490 I suppose it makes sense, given what people tend to feed it, that the writers of the compiler would optimize for template madness
<egg|laptop|egg> see also: Principia
<egg|laptop|egg> or just the standard libraries
<egg|laptop|egg> !wpn whitequark
* galois gives whitequark a barium wired bread
<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
<whitequark> hm. it went here, it seems https://github.com/google/tracing-framework/
<galois> title: GitHub - google/tracing-framework: Web Tracing Framework libraries and extensions.
egg|laptop|egg has quit [Read error: Connection reset by peer]
egg|laptop|egg has joined #kspacademia
<egg|laptop|egg> meanwhile I can’t figure out how to get text services framework to look at alt-modified keys
<egg|laptop|egg> which makes it difficult to create an IME with an Alt Gr >_<
egg|laptop|egg has quit [Read error: Connection reset by peer]
<raptop> Huh, it's 63 F out
egg|laptop|egg has joined #kspacademia
<raptop> !8 Is this fine?
<galois> raptop: yes
egg|laptop|egg has quit [Remote host closed the connection]
egg|laptop|egg has joined #kspacademia
<egg|laptop|egg> !u 🪄🎀🧹
<galois> No info for U+1fa84 (I only know about Unicode up to 12.1.0)
<galois> 🎀: U+1f380 RIBBON
<galois> 🧹: U+1f9f9 BROOM