←2021-11-26 2021-11-27 2021-11-28→ ↑2021 ↑all
00:02:26 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90107&oldid=90106 * Squidmanescape * (+116)
00:22:07 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90108&oldid=90107 * Squidmanescape * (+705) /* Instructions */
00:24:32 -!- yuu_ has quit (Ping timeout: 240 seconds).
00:27:00 -!- yuu_ has joined.
00:27:08 <esolangs> [[Eek!]] https://esolangs.org/w/index.php?diff=90109&oldid=90042 * Zero player rodent * (+106)
00:33:16 -!- Argorok has quit (Ping timeout: 245 seconds).
00:33:29 <esolangs> [[Struffoli]] https://esolangs.org/w/index.php?diff=90110&oldid=90000 * Zero player rodent * (+23)
00:36:01 -!- Argorok has joined.
00:44:53 -!- u0_a3911 has joined.
00:48:41 -!- u0_a391 has quit (Ping timeout: 245 seconds).
00:54:53 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90111&oldid=90108 * Squidmanescape * (+344)
01:00:50 -!- Thelie has quit (Ping timeout: 260 seconds).
01:04:46 -!- imode has joined.
01:28:25 <esolangs> [[Eek!]] https://esolangs.org/w/index.php?diff=90112&oldid=90109 * Zero player rodent * (-18)
01:30:20 -!- u0_a3911 has quit (Quit: Melvar).
01:37:25 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90113&oldid=90111 * Squidmanescape * (+133) /* Instructions */
02:03:23 -!- delta23 has quit (Quit: Leaving).
02:19:21 <esolangs> [[NLRNIS]] N https://esolangs.org/w/index.php?oldid=90114 * Fmbalbuena * (+756) NLRNIS
02:19:40 <esolangs> [[NLRNIS]] https://esolangs.org/w/index.php?diff=90115&oldid=90114 * Fmbalbuena * (+3)
02:20:09 <esolangs> [[NLRNIS]] https://esolangs.org/w/index.php?diff=90116&oldid=90115 * Fmbalbuena * (+18)
02:21:06 <esolangs> [[NLRNIS]] https://esolangs.org/w/index.php?diff=90117&oldid=90116 * Fmbalbuena * (-8)
02:27:02 <esolangs> [[Special:Log/newusers]] create * ProjectEuler * New user account
02:27:37 <esolangs> [[NLRNIS]] https://esolangs.org/w/index.php?diff=90118&oldid=90117 * Fmbalbuena * (+109)
02:31:14 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=90119&oldid=90091 * ProjectEuler * (+286) The main page was deleted so this user was created.
02:33:05 <esolangs> [[Esolang talk:Introduce yourself]] https://esolangs.org/w/index.php?diff=90120&oldid=89872 * ProjectEuler * (+213)
02:34:12 <esolangs> [[User:ColorfulGalaxy]] https://esolangs.org/w/index.php?diff=90121&oldid=83033 * ProjectEuler * (+38)
02:46:18 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90122&oldid=90113 * Squidmanescape * (+2816) /* Instructions */
02:59:12 -!- dyeplexer has joined.
03:01:45 <esolangs> [[User:ProjectEuler/pagebar]] N https://esolangs.org/w/index.php?oldid=90123 * ColorfulGalaxy * (+200) Created page with "{|class="wikitable" ! < | [[Project Euler/1|1]] | ... | [[Project Euler/{{{1}}}|{{{1}}}]] | ... | [[Project Euler/6|6]] <!-- The last Project Euler page --> ! > |}<noinc..."
03:02:06 <esolangs> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=90124&oldid=89572 * ColorfulGalaxy * (+33)
03:02:47 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90125&oldid=90122 * Squidmanescape * (+350)
03:03:26 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90126&oldid=90125 * Squidmanescape * (-8) /* Instructions */
03:13:36 <esolangs> [[Timers]] M https://esolangs.org/w/index.php?diff=90127&oldid=89632 * Rphii * (+0) change ` to ! in numbers
04:12:06 <esolangs> [[User:ProjectEuler]] N https://esolangs.org/w/index.php?oldid=90128 * ColorfulGalaxy * (+925) Chart
04:19:05 <esolangs> [[Truth Machine (language)]] https://esolangs.org/w/index.php?diff=90129&oldid=83981 * ColorfulGalaxy * (+40)
04:41:01 <esolangs> [[User:Squidmanescape]] https://esolangs.org/w/index.php?diff=90130&oldid=90101 * Squidmanescape * (+70) /* My Languages */
04:44:01 <esolangs> [[(top, height)]] https://esolangs.org/w/index.php?diff=90131&oldid=90126 * Squidmanescape * (+178) Fixed Version Number, Explained Versions
05:01:40 -!- oerjan has joined.
05:23:10 <oerjan> <riv> https://tech.marksblogg.com/fastest-fizz-buzz.html <-- "I've been unable to uncover this person's real-life identity" hah
05:23:47 <riv> GNU yes was mentioned
05:24:01 <riv> printing y in a loop was considered not fast enough
05:25:54 <oerjan> admittedly i'm not sure how easy his real name is to find if you're not in one of those places he has revealed it.
05:26:21 <oerjan> but then i'm biased, i managed to find his _middle_ name.
05:28:32 <riv> I always wondered what the I stands for
05:30:30 <oerjan> iirc it was listed in the UK olympics maths team list, and on wikipedia when he had a page there
05:37:43 -!- LostLemon has joined.
05:37:48 <oerjan> heh the wikipedia info is still there, if you know how to look
05:37:49 -!- LostLemon has quit (Excess Flood).
05:38:50 -!- LostLemon has joined.
05:38:51 -!- LostLemon has quit (Excess Flood).
05:38:59 <oerjan> (it was turned into a redirect, but the history is still there)
05:39:05 -!- LostLemon has joined.
05:39:06 -!- LostLemon has quit (Excess Flood).
05:39:19 -!- LostLemon has joined.
05:39:20 -!- LostLemon has quit (Excess Flood).
05:39:34 -!- LostLemon has joined.
05:39:35 -!- LostLemon has quit (Excess Flood).
05:46:07 <esolangs> [[Special:Log/newusers]] create * YouHardDrive * New user account
05:49:37 <esolangs> [[Project Euler/1]] N https://esolangs.org/w/index.php?oldid=90132 * ColorfulGalaxy * (+2600) Created page with
05:52:16 <esolangs> [[FizzBuzz]] https://esolangs.org/w/index.php?diff=90133&oldid=89493 * ColorfulGalaxy * (+97) /* See also */
05:59:43 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Cat.jpg]]": likely copyright violation
05:59:49 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Elephant.jpg]]": likely copyright violation
05:59:58 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Turtle.jpg]]": likely copyright violation
06:00:08 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Toucan.jpg]]": likely copyright violation
06:00:15 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Rabbit.jpg]]": likely copyright violation
06:00:22 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Lion.jpg]]": likely copyright violation
06:00:34 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Dog.jpg]]": likely copyright violation
06:00:39 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[File:Chicken.jpg]]": likely copyright violation
06:13:12 <esolangs> [[User talk:ColorfulGalaxy]] https://esolangs.org/w/index.php?diff=90134&oldid=89783 * Oerjan * (+490) /* User:ProjectEuler */ new section
06:13:12 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=90135&oldid=90119 * YouHardDrive * (+206) /* Introductions */
06:13:56 <esolangs> [[Icarus]] N https://esolangs.org/w/index.php?oldid=90136 * YouHardDrive * (+2197) Created page with "Icarus is an attempt at a completely typeless programming language. == Description == === Variables === Each variable does not really have a type. Instead, they have multipl..."
06:15:35 <esolangs> [[User talk:ColorfulGalaxy]] https://esolangs.org/w/index.php?diff=90137&oldid=90134 * ColorfulGalaxy * (+453) /* User:ProjectEuler */
06:15:53 <esolangs> [[Icarus]] https://esolangs.org/w/index.php?diff=90138&oldid=90136 * YouHardDrive * (+58)
06:16:10 <esolangs> [[Icarus]] https://esolangs.org/w/index.php?diff=90139&oldid=90138 * YouHardDrive * (+4)
06:17:12 <esolangs> [[Icarus]] https://esolangs.org/w/index.php?diff=90140&oldid=90139 * YouHardDrive * (+45)
06:17:47 <esolangs> [[Project Euler/2]] N https://esolangs.org/w/index.php?oldid=90141 * ColorfulGalaxy * (+618) Created page with
06:17:56 <esolangs> [[Project Euler/2]] https://esolangs.org/w/index.php?diff=90142&oldid=90141 * ColorfulGalaxy * (+1)
06:19:56 <esolangs> [[Fibonacci sequence]] https://esolangs.org/w/index.php?diff=90143&oldid=66688 * ColorfulGalaxy * (+121) See also
06:20:06 <esolangs> [[Burn]] https://esolangs.org/w/index.php?diff=90144&oldid=90068 * Ais523 * (+2117) some other things I remember about Burn
06:20:10 <oerjan> ooh
06:22:51 <oerjan> i'd already guessed the 00 part
06:23:14 <riv> wow
06:23:28 -!- ais523 has joined.
06:23:32 <ais523> you're welcome
06:23:49 <ais523> some of it is pretty obvious, but stating the obvious is helpful when it comes to esolangs because they sometimes avoid it
06:25:08 <ais523> there were some very strange guesses on the talk page
06:25:54 <ais523> oh, and there was no I/O, I should probably mention that too
06:26:27 <oerjan> yes, it seemed like no one took the 2d CA info completely seriously
06:26:35 <esolangs> [[Burn]] https://esolangs.org/w/index.php?diff=90145&oldid=90144 * Ais523 * (+46) +no IO cat
06:26:54 <oerjan> i've been thinking about it, and also thinking that the 1-color containing parts looked like wires
06:27:01 -!- tromp has joined.
06:27:57 <oerjan> although my main intuition has been to take the _name_ of the language seriously... what you call flood fill i've been thinking of as burning fuel
06:29:13 <oerjan> and 0 as perhaps the absense of fuel
06:29:48 <esolangs> [[Project Euler/5]] N https://esolangs.org/w/index.php?oldid=90146 * ColorfulGalaxy * (+816) Created page with
06:31:09 <ais523> btw, ColorfulGalaxy went and created a separate username so that they could create Project Euler spaces in that user's userspace (which is dubious enough as it is), and is now creating them in mainspace anyway for some reason
06:32:04 <riv> http://cheddarmonk.org/papers/laver.pdf
06:34:24 <ais523> (also, Guy Fawkes Rep was obviously ColorfulGalaxy, right? I haven't checked, but it was obvious just based on behaviour and on ColorfulGalaxy getting caught up in the resulting autoblock)
06:34:26 <oerjan> laver was discussed here some years ago
06:34:45 <oerjan> ais523: i suspected but didn't bother to bother
06:35:56 <oerjan> i wasn't sure whether ColorfulGalaxy actually got blocked or just pretended as part of their game, but after that it seemed obvious they were just having fun
06:37:04 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
06:38:55 <oerjan> although if they're one person, and _expected_ to be blocked and to get hit by the autoblock, then it would explain Guy Fawkes Rep's last pre-blocking message
06:41:48 <oerjan> in some strange, crazy way.
06:42:44 * oerjan is confused by seeing a math paper on a darths & droids (fan) site
06:57:50 <esolangs> [[Project Euler/6]] N https://esolangs.org/w/index.php?oldid=90147 * ColorfulGalaxy * (+1988) Created page with
06:59:35 <ais523> I think someone who'd been blocked that much would have an intuitive idea of how the autoblocker worked, even if some of the details were wrong
07:03:43 <riv> lol
07:03:54 <riv> what is a cheddar monk
07:04:00 <esolangs> [[Fairytale]] https://esolangs.org/w/index.php?diff=90148&oldid=90098 * Doubi * (+59) /* Print */
07:04:03 -!- tromp has joined.
07:04:56 <esolangs> [[Fairytale]] https://esolangs.org/w/index.php?diff=90149&oldid=90148 * Doubi * (-4) /* Specification */
07:06:30 <oerjan> riv: see darths & droids webcomic
07:06:40 <riv> i had alook
07:06:53 <oerjan> i haven't followed it in a while, though
07:06:57 <riv> it was a rhetorical question though
07:07:02 <oerjan> okay
07:08:02 <esolangs> [[Aheui]] https://esolangs.org/w/index.php?diff=90150&oldid=89788 * ColorfulGalaxy * (+454) More code
07:33:42 <riv> https://www.youtube.com/watch?v=JvhSRCfCHb4 fun game
08:01:50 <oerjan> ais523: "or maybe only ever increase, but decreasing seems more likely" <-- i'm going to disagree based on the simple observation that decreasing + 00 = unchangeable would make it impossible to have flood fill along 01 or 10 paths.
08:03:26 <oerjan> unless, hm, i suppose if 01/10 -> 00 if its number of non-00 neighbors _decrease_
08:05:43 <esolangs> [[2Deadfish]] https://esolangs.org/w/index.php?diff=90151&oldid=90076 * Squidmanescape * (+99)
08:06:41 <oerjan> although that violates _my_ intuition of what the language does, it may not violate what you've said.
08:08:34 <ais523> I think it was probably only ever decreasing
08:08:45 <ais523> but it's hard to be confident about something I created in my head over 10 years ago without writing down any details
08:09:54 <ais523> but, hmm, maybe it does increase?
08:10:11 <ais523> perhaps I should have tried harder to remember / work out the details at the time
08:10:38 <ais523> fwiw, the modification date on the file containing that program is Aug 9 2006
08:10:46 <ais523> so over 15 years ago now
08:10:57 <ais523> (and it's the only thing in the directory)
08:12:56 <oerjan> that's not very long after i got here
08:13:17 <oerjan> 2006 was a good year for the channel
08:14:15 <oerjan> if it actually _is_ only decreasing, it may simplify things because it reduces the number of things that can happen with those 01 and 10 cells
08:18:37 <ais523> you've really shaken my confidence now, I'm seriously considering the possibility that it's only increasing, and that could make more sense
08:18:47 <oerjan> another obvious thing given what it's supposed to compute: the program code given is probably a stable configuration that doesn't change without some kind of signal coming in.
08:19:11 <ais523> right, in order for anything to happen you'd have to disrupt the tiling slightly (which I mentioned in my original set of hints)
08:19:46 <ais523> rule 110 has 000 → 0 so a tiling of 0s would be stable
08:19:57 <oerjan> my guess is that what is disrupted, is the one non-00 cell at the top line
08:20:04 <ais523> yes, that makes sense to me too
08:20:30 <ais523> ooh… I don't think a channel value could change "past" the value of its neighbours, I'll add that to the list
08:20:41 <oerjan> huh
08:21:16 <ais523> as in, any change would be to a value that was within the range of values that existed in its neighbours
08:21:26 <oerjan> i see
08:21:44 <oerjan> well you pretty much always have 0s nearby
08:22:21 <esolangs> [[Burn]] https://esolangs.org/w/index.php?diff=90152&oldid=90145 * Ais523 * (+266) another thing I remembered
08:22:37 <ais523> I'm trying to remember whether or not 0 was a special case, but I can't remember
08:23:39 <ais523> the fact that I mentioned "levels 0-3" in a comment implies that they may have been configurable…
08:25:23 <esolangs> [[2Deadfish/Constants]] N https://esolangs.org/w/index.php?oldid=90153 * Squidmanescape * (+801) Created page with "This page serves to find the shortest way to output a number as the final one in Deadfish using the fewest commands. Note that this is different from [[Deadfish/Constants]] b..."
08:35:21 <esolangs> [[2Deadfish/Constants]] https://esolangs.org/w/index.php?diff=90154&oldid=90153 * Squidmanescape * (+132) /* Constants */
08:37:26 <esolangs> [[2Deadfish/Constants]] https://esolangs.org/w/index.php?diff=90155&oldid=90154 * Squidmanescape * (+4) /* Constants */
08:38:38 -!- Thelie has joined.
08:40:21 <esolangs> [[2Deadfish/Constants]] https://esolangs.org/w/index.php?diff=90156&oldid=90155 * Squidmanescape * (+37) /* Constants */
08:42:42 <esolangs> [[2Deadfish/Constants]] https://esolangs.org/w/index.php?diff=90157&oldid=90156 * Squidmanescape * (+35) /* Constants */
08:42:55 <esolangs> [[2Deadfish/Constants]] https://esolangs.org/w/index.php?diff=90158&oldid=90157 * Squidmanescape * (+2) /* Constants */
09:02:33 -!- Thelie has quit (Read error: Connection reset by peer).
09:10:15 -!- ais523 has quit (Quit: quit).
09:42:25 <riv> https://simonsapin.github.io/wtf-8/
09:50:18 -!- Sgeo_ has quit (Read error: Connection reset by peer).
09:54:19 -!- Oshawott has joined.
09:58:16 -!- archenoth has quit (Ping timeout: 265 seconds).
10:00:54 -!- Lord_of_Life_ has joined.
10:02:05 -!- Lord_of_Life has quit (Ping timeout: 250 seconds).
10:03:43 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
10:16:21 <esolangs> [[User:Hakerh400/Ideal programming language]] https://esolangs.org/w/index.php?diff=90159&oldid=89033 * Hakerh400 * (-9754) Removing the content for now. Will probably decide what to put here in the future.
10:27:00 -!- oerjan has quit (Quit: Later).
11:38:08 <esolangs> [[User talk:Hakerh400/What we could do if we could solve the halting problem]] N https://esolangs.org/w/index.php?oldid=90160 * Corbin * (+1364) Explain the halting problem in a bit of detail.
12:28:57 -!- arseniiv_ has joined.
12:30:00 -!- SGautam has joined.
12:33:16 <esolangs> [[User talk:Hakerh400/Conjectures]] N https://esolangs.org/w/index.php?oldid=90161 * Corbin * (+1249) Comments on conjecture 4.
12:39:40 <int-e> fungot: what's a happy life?
12:39:40 <fungot> int-e: that,, i honestly do not know, the ncs. co-operation between the canadian government, the uk has a very proud day for him,
12:44:02 -!- Koen has joined.
13:15:45 <esolangs> [[Duh]] M https://esolangs.org/w/index.php?diff=90162&oldid=90095 * PythonshellDebugwindow * (+73) /* Implementations */ Categories
13:20:07 <esolangs> [[Truth Machine (language)]] M https://esolangs.org/w/index.php?diff=90163&oldid=90129 * PythonshellDebugwindow * (+1) /* Interpreter in Python */ Python
13:28:17 -!- dutch has quit (Quit: WeeChat 3.3).
13:41:48 -!- lagash has quit (Ping timeout: 268 seconds).
13:56:47 -!- dutch has joined.
14:01:06 -!- lagash has joined.
14:01:32 -!- arseniiv_ has quit (Ping timeout: 268 seconds).
14:18:00 -!- impomatic has joined.
15:31:32 -!- impomatic has quit (Ping timeout: 240 seconds).
15:31:46 -!- impomatic has joined.
15:38:32 -!- impomatic has quit (Ping timeout: 265 seconds).
15:38:45 -!- impomatic has joined.
15:49:26 -!- SGautam has quit (Quit: Connection closed for inactivity).
16:26:35 <esolangs> [[NLRNIS]] https://esolangs.org/w/index.php?diff=90164&oldid=90118 * Fmbalbuena * (+110)
16:30:24 -!- Digit has left (ERC (IRC client for Emacs 27.2)).
16:39:50 -!- Koen_ has joined.
16:42:32 -!- Koen has quit (Ping timeout: 256 seconds).
17:00:35 -!- delta23 has joined.
17:07:26 -!- impomatic has quit (Ping timeout: 245 seconds).
17:07:32 <esolangs> [[Struffoli]] https://esolangs.org/w/index.php?diff=90165&oldid=90110 * Zero player rodent * (-18)
17:20:46 <b_jonas> "<oerjan> admittedly i'm not sure how easy his real name is to find if you're not in one of those places he has revealed it." => I think the channel log has a link to ais523's thesis, and to fizzie's and shachaf's, but they're not easy to find
17:24:41 <riv> what's fizzies on ?
17:25:02 <fizzie> It's titled "Feature Enhancement and Uncertainty Estimation for Recognition of Noisy and Reverberant Speech".
17:25:30 <fizzie> (I was doing speech recognition things.)
17:30:16 <b_jonas> the nethack4 and clc-intercal source code repositories give ais523's other name
17:30:47 <b_jonas> so does the ayacc source code
17:30:48 <int-e> . o O ( speech recognition for echo chambers )
17:31:31 <b_jonas> but I think I only saw ais523's middle name in his thesis
17:31:32 <fizzie> We had a pretty nice anechoic chamber at the university, it was fun to visit.
17:32:17 <fizzie> Felt weird. You couldn't really hear people well if they were talking away from you.
17:44:22 <b_jonas> "ARM CPUs, like those found in newer Apple computers, Smartphones or Raspberry Pis, won't support AVX2." hehe (still from https://tech.marksblogg.com/fastest-fizz-buzz.html)
17:45:08 <b_jonas> that's the case when the kernel will just refuse to load the program though, not when you get a mysterious undefined behavior or hopefully an illegal instruction fault from AVX2
17:45:34 <b_jonas> "You should see "sse2" at a minimum." => umm....
17:47:33 -!- ais523 has joined.
17:47:47 <ais523> that blog post is terrible, it doesn't seem to show any understanding of the material it's covering
17:48:08 <ais523> much of it is just paraphrases of what I said, there's no detail on the interesting bits, and most of the new material is outright wrong
17:48:47 <ais523> (e.g. it doesn't seem to realise that AVX is newer than / subsumes the SSE family)
17:49:31 <b_jonas> yeah
17:51:52 <ais523> fwiw, I feel like AVX1 on %xmm registers only is a good choice for general-purpose vector programming (AVX2 is better for very high performance when you want big vectorised loops, but AVX1 instructions have very little cost to them so you can just scatter them around a program when they're useful rather than really needing to dedicate your program to them)
17:53:21 <esolangs> [[Muppp]] https://esolangs.org/w/index.php?diff=90166&oldid=90087 * Kaveh Yousefi * (+433) Adjusted the capitalization of the section title Example programs and added an EBNF description of the language.
17:54:09 <b_jonas> ais523: yes, RDX and kin are called "general purpose" registers only for legacy reasons, same way as two-byte blocks are called "words" in the intel manual. in reality, XMM0 and kin are the general purpose registers, RDX and kin are index registers.
17:54:54 <b_jonas> with SSE4_2 and AVX, we have enough nice instructions on the XMM registers that you can do most calculations in them conveniently
17:55:40 <ais523> I've seriously wondered about what it would be like to habitually compile all code with vector registers (using scatter/gather instructions to do memory access, as they take the address from a vector register)
17:55:54 <ais523> if you do that you end up with a model very similar to that of GPU programming
17:56:17 <b_jonas> there's still the problem that the ABI relies on the index registers a lot: arguments are usually passed there, and some of them are callee-saved
17:56:29 <ais523> where you get small amounts of parallelism for free, but the situation with conditionals is pretty akin to INTERCAL
17:56:43 <ais523> I hate the existing ABI anyway :-D
17:56:48 <b_jonas> ais523: well there's still a bunch of utility instructions that operate on index registers, even after scatter-gather, so you can't just ignore them
17:57:34 <ais523> I think that having a fixed ABI should only be useful for special cases, and compilers should instead pick an ABI on a function-by-function basis
17:58:15 <ais523> e.g. the vast majority of functions don't care about stack alignment, many functions can preserve the argument registers at no extra cost, some functions prefer to have the return value share a register with an argument, etc.
17:58:39 <ais523> this would also fix the problem with 256-bit vector arguments on x86-64
17:59:15 <ais523> (depending on compiler options, they can be passed either in a 256-bit vector register or two 128-bit vector registers, and it's fairly easy to accidentally link code compiled with one ABI against code compiled with the other ABI)
18:00:14 <int-e> sure, just break all tracrs and debuggers
18:03:03 <shachaf> b_jonas: Wait, a link to my thesis?
18:03:08 <ais523> at least DWARF is sufficiently expressive to be able to represent this already
18:03:29 <b_jonas> ais523: compilers can certainly do that, they are only required to use the ABI for functions exported fro mthe compilation unit, and even so only when they guarantee a stable ABI, unlike eg. rust which doesn't guarantee that you can link to a native ABI compilation unit from a different minor version of compiler
18:03:36 <shachaf> I'd like to read that, since I wasn't aware it existed.
18:03:57 <ais523> and anyway, I treat "letting existing debuggers work" as a pretty low priority when it comes to designing compilers – design the compiler first, then work out what the appropriate debugger looks like and write it if necessary
18:04:01 <b_jonas> shachaf: then I just guessed wrong. I'm not sure what I say that hinted at that. I only found the link to fizzie's thesis
18:04:04 <ais523> b_jonas: yes but they don't
18:05:02 <b_jonas> ais523: yeah, the solution there is that either you need a recent enough version of the debugger and even then nothing is guaranteed, or you have to compile with -O0 . obviously some changes in the compiler can output the info in the existing debugger format, but not all.
18:05:48 <b_jonas> "this would also fix the problem with 256-bit vector arguments on x86-64" => wait, isn't that unfixable with an ABI?
18:06:13 <ais523> b_jonas: well, if the function says what registers it's expecting arguments in, it can just say "pass this in %ymm3" or whatever
18:06:33 <b_jonas> at least it's unfixable locally, you can only fix it if your whole program and every library linked to it uses the new ABI, I think
18:06:51 <ais523> then the function that calls it can do that even if it isn't compiled with AVX – because the function is indicating that it uses AVX instructions, they're going to be used anyway so the caller can use them too
18:07:10 <int-e> b_jonas: that is the proposal
18:07:50 <int-e> function pointers will be fun too btw
18:07:54 <b_jonas> int-e: ok, that wasn't clea5r to me, because ais523 started with "compilers should instead pick an ABI on a function-by-function basis"
18:07:55 <ais523> fwiw, I also think that nowadays, it makes sense to just compile multiple versions of the program (for different processor ages) as a matter of course and just get the dynamic loader to choose between them
18:08:16 <ais523> obviously, the sticking points are a) linking to precompiled libraries, b) dynamic libraries, c) function pointers
18:08:48 <int-e> in fact function pointers may render this infeasible for non-static functions (for static ones you'll be able to tell whether a function pointer is created or not)
18:08:48 <b_jonas> "depending on compiler options, they can be passed either in a 256-bit vector register or two 128-bit vector registers, and it's fairly easy to accidentally link code compiled with one ABI against code compiled with the other ABI" => yes, but 128 bit vs 256 vector registers causes a lot of problems in ways other than argument passing
18:09:04 <ais523> b_jonas: which problems are you thinking of?
18:09:12 <int-e> I guess you could duplicate code too
18:10:04 <ais523> one way to make function pointers work is to have wrappers around functions to which pointers are taken that use a fixed ABI – this is inefficient, but unlikely to be substantially worse than the current way of doing things
18:10:55 <b_jonas> ais523: (1) ABI differences not on the compiler level but on the level of a C++ library like eigen where the same high-level matrix class can be represented differently depending on whether you're compiling the library for AVX/AVX2-optimized, as chosen by preprocessor conditionals and also the instruction set extensions that you are compiling to by default
18:11:15 <ais523> wow
18:11:22 <b_jonas> ais523: (2) performance problems when switching between SSE2 and AVX instructions
18:11:24 <ais523> I didn't realise that that sort of thing happened in practice
18:11:38 <b_jonas> it has to happen
18:11:58 -!- kspalaiologos has joined.
18:12:01 <b_jonas> we can't just break compatibility with everything that already exists, but sometimes we want to optimize the code better using new instructions
18:12:17 <ais523> for 2), the situation that causes the performance cost is specifically using an SSEx instruction on a register whose top half (or top three-quarters under AVX-512) is not 0
18:12:20 <b_jonas> for the Eigen library, there are enough exposed preprocessor macros that you can make everything compatible
18:12:40 <ais523> err, but I think on some processors, it isn't enough for it to be 0, it needs to have been explicitly zeroed with a zeroing instruction
18:12:48 <ais523> this is what VZEROUPPER is for
18:13:39 <b_jonas> there's also some low-level problems, I don't quite understand correctly but I think on old MSVC compilers you can't force the stack to be aligned to 32 bytes; and there was or is a bug with the gcc C++ name mangling where two overloaded functions with different types of arguments that differ only in the width of vector arguments passed would mangle to the same name and could both exist in the library
18:14:13 <ais523> huh, I decided to look up the performance of VZEROUPPER out of curiosity
18:14:34 <ais523> on Intel, it appears to cost one CPU cycle (i.e. the cost of four integer instructions), which is faster than I expected
18:14:54 <b_jonas> and possibly one more gcc ABI incompatibility thing that I don't understand, but that might just be the same thing as the previous one
18:15:08 <ais523> on recent AMD, it is as fast as NOP (i.e. it costs space in the decode unit but nothing else), which is very surprising
18:15:38 <ais523> this implies that it's being implemented in the register renamer somehow – maybe the top and bottom half of vector registes are renamed separately
18:15:51 <b_jonas> ais523: yes, the switching thing is probably not much of a problem these days with modern cpus
18:16:04 <ais523> b_jonas: it's actually worse than it used to be, at least if you forget the VZEROUPPER
18:16:14 <ais523> older processors had fairly big costs per switch
18:16:30 <ais523> on newer processors, the cost for switching isn't as big, but there's a cost *per instruction* after an invalid switch
18:17:29 <ais523> so running a single movdqa into a 256-bit vector register, without properly clearing it afterwards, can make the rest of the program run slower if it uses SSE instructions
18:19:48 <b_jonas> makes sense
18:21:55 <b_jonas> I wonder if the penalties for denormal numbers in floating-point arithmetic increse or decrease
18:23:01 -!- kspalaiologos has quit (Quit: Leaving).
18:24:24 <ais523> IIRC recent processors are better at denormals than they used to be
18:24:58 <ais523> although there are things like gcc using --std=gnu99 and friends disabling them entirely (they're supported under --std=c99 and friends)
18:25:22 <b_jonas> does "better at denormals" mean that they have to invoke a penalty in fewer situations, or that when there's a penalty they can handle it more gracefully eg. by pausing everything else for a few cycles to handle it rather than rerolling everything and rescheduling?
18:28:26 <b_jonas> this might also differ between the brands
18:28:47 <ais523> it seems like Intel still has a high penalty but it's been happening in fewer situations over time, but there's a lot of fluctuation between processor families
18:28:56 <ais523> (140 to 190 cycles)
18:29:12 <esolangs> [[2Deadfish/Constants]] https://esolangs.org/w/index.php?diff=90167&oldid=90158 * Squidmanescape * (-14)
18:29:23 <ais523> meanwhile AMD has a very small penalty by comparison, on the recent processors
18:29:44 <ais523> some cases of denormals are handled in hardware, it seems to be denormal results that cause the biggest problem as opposed to denormal inputs
18:39:57 <ais523> in particular, Intel handles normal + denormal = normal in hardware nowadays, no microcode required and no penalty
18:41:16 <b_jonas> I see
18:42:25 -!- dyeplexer has quit (Remote host closed the connection).
18:45:23 -!- Koen_ has quit (Quit: Leaving...).
18:47:00 -!- Sgeo has joined.
18:48:47 -!- ais523 has quit (Remote host closed the connection).
19:31:58 -!- Koen has joined.
19:33:19 <esolangs> [[JR]] https://esolangs.org/w/index.php?diff=90168&oldid=73337 * Kaveh Yousefi * (+12) Marked the hyperlink to the interpreter by the language author as invalid, because the respective page cannot be found.
19:49:33 -!- x88x88x has joined.
19:51:45 -!- Everything has joined.
19:53:35 <riv> 99% of people love filling out surveys
19:59:52 -!- x88x88x has quit (Quit: Using Circe, the loveliest of all IRC clients).
20:21:49 -!- dutch has quit (Quit: WeeChat 3.3).
20:27:59 <esolangs> [[Truth-machine]] https://esolangs.org/w/index.php?diff=90169&oldid=90014 * Zero player rodent * (+4) /* Eek */
20:37:26 -!- Everything has quit (Ping timeout: 268 seconds).
20:39:38 -!- sprock has quit (Quit: brb).
20:51:45 -!- x88x88x has joined.
20:58:18 -!- x88x88x has quit (Remote host closed the connection).
21:00:31 <esolangs> [[Magritte]] https://esolangs.org/w/index.php?diff=90170&oldid=13033 * Kaveh Yousefi * (+377) Added an implementation of the language in Common Lisp.
21:05:58 -!- dutch has joined.
21:07:21 -!- x88x88x has joined.
21:11:45 -!- sprock has joined.
21:15:15 -!- Koen has quit (Remote host closed the connection).
21:15:24 -!- x88x88x has quit (Remote host closed the connection).
21:15:30 -!- Koen has joined.
21:18:49 -!- x88x88x has joined.
22:04:01 -!- Koen has quit (Remote host closed the connection).
22:28:32 -!- x88x88x has quit (Ping timeout: 240 seconds).
22:45:14 <esolangs> [[User:Squidmanescape]] https://esolangs.org/w/index.php?diff=90171&oldid=90130 * Squidmanescape * (+32) /* Languages I Explicitly Won't Ever Implement */
22:48:10 -!- Koen has joined.
23:05:45 -!- Koen has quit (Quit: Leaving...).
←2021-11-26 2021-11-27 2021-11-28→ ↑2021 ↑all