←2022-09-10 2022-09-11 2022-09-12→ ↑2022 ↑all
01:19:26 -!- impomatic has quit (Quit: impomatic).
01:19:46 -!- impomatic has joined.
01:23:58 -!- impomatic has quit (Client Quit).
01:24:17 -!- impomatic has joined.
01:56:32 -!- FreeFull has quit.
03:53:59 <esolangs> [[Python is Magic]] https://esolangs.org/w/index.php?diff=103156&oldid=96872 * OllyTheFoldy * (-5044) added some better methods of getting constants
04:05:21 <esolangs> [[User:Xemt]] https://esolangs.org/w/index.php?diff=103157&oldid=101364 * Xemt * (+447)
04:06:01 <esolangs> [[User:Xemt]] https://esolangs.org/w/index.php?diff=103158&oldid=103157 * Xemt * (+1)
04:09:25 <esolangs> [[User talk:Xemt]] N https://esolangs.org/w/index.php?oldid=103159 * Xemt * (+29) Created page with "<h1> Xemts Talk Page </h1>"
04:43:55 -!- impomatic has quit (Quit: impomatic).
05:14:19 <esolangs> [[User:Xemt]] https://esolangs.org/w/index.php?diff=103160&oldid=103158 * Xemt * (+166)
05:57:08 -!- impomatic has joined.
06:07:01 -!- impomatic has quit (Quit: impomatic).
06:07:21 -!- impomatic has joined.
06:11:33 -!- impomatic has quit (Client Quit).
06:11:53 -!- impomatic has joined.
06:18:03 -!- tromp has joined.
06:28:50 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
06:37:01 -!- impomatic has quit (Quit: impomatic).
06:37:21 -!- impomatic has joined.
06:41:33 -!- impomatic has quit (Client Quit).
06:41:53 -!- impomatic has joined.
06:45:12 -!- tromp has joined.
07:04:02 -!- chiselfuse has quit (Remote host closed the connection).
07:04:20 -!- chiselfuse has joined.
07:56:43 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
08:11:47 <esolangs> [[It Is Not What It Is]] https://esolangs.org/w/index.php?diff=103161&oldid=103108 * Leomok2009 * (+0) Fixed errors
08:13:04 <esolangs> [[It Is Not What It Is]] https://esolangs.org/w/index.php?diff=103162&oldid=103161 * Leomok2009 * (+0)
08:14:47 <esolangs> [[It Is Not What It Is]] https://esolangs.org/w/index.php?diff=103163&oldid=103162 * Leomok2009 * (+0)
08:15:59 <esolangs> [[It Is Not What It Is]] https://esolangs.org/w/index.php?diff=103164&oldid=103163 * Leomok2009 * (-2)
08:37:17 <olsner> hm, I have a syntax idea (an old one that's been idly circulating my mind, thought I might implement it at last), but I don't really have a fun language to go with it... should I just throw it at the pile of brainfucks?
08:39:03 <olsner> (it's not a good idea anyway, just silly and a bit offensive)
09:02:55 -!- tromp has joined.
09:32:01 -!- impomatic has quit (Quit: impomatic).
09:33:13 -!- impomatic has joined.
09:33:40 -!- __monty__ has joined.
09:36:33 -!- impomatic has quit (Client Quit).
09:36:53 -!- impomatic has joined.
09:46:59 -!- FreeFull has joined.
10:01:49 -!- Noisytoot has quit (Quit: ZNC 1.8.2 - https://znc.in).
10:02:05 <b_jonas> olsner: don't throw it on the pile of brainfucks. instead do at least one of the following: (1) sit on it until you feel like creating a language, (2) tell it in chat, or (3) throw it on the other big pile https://esolangs.org/wiki/List_of_ideas
10:04:20 -!- Noisytoot has joined.
10:04:52 <b_jonas> olsner: I've had an idea for the esoteric syntax thing of making a syntax that is an intrinsically ambiguous context-free language (i.e. can be parsed by a non-deterministic pushdown automaton but not by a deterministic one) in 2014, by taking the union of two syntaxes, one where you have to balance one kind of parenthesis and one where you have to match the other;
10:05:39 <b_jonas> but didn't know how to use it and certainly didn't want to make a brainfuck-alike or underload-alike, until 2017 or 2018 when I realized that this would be the perfect syntax for Consumer Society and its sibling language,
10:05:49 <olsner> hm, and push-down automata aren't determinizable like normal finite ones are?
10:06:17 <b_jonas> which is why in Consumer Society one kind of parenthesis has to be balanced, while in its sibling language another kind has to be balanced.
10:07:55 <b_jonas> olsner: that's correct. you have to use your one stack to count how many parenthesis you've seen, pushing when you see an open and popping when you see a closer parent, but you might not know in advance which kind of parenthesis you should pay attention to. you find out when you see that the kind of parenthesis that you've been tracking mismatches, but by then it's too late.
10:10:28 -!- Sgeo has quit (Read error: Connection reset by peer).
10:10:45 <b_jonas> when I write my interpreter, it will just have to buffer all the input until either it can determine which language it is or the input ends. in typical non-obfuscated programs you'll just put a disambiguating thing near the start of the program so the interpreter can tell quick and doesn't have to buffer much, but for arbitrary programs the interpreter may have to buffer the whole thing
10:12:00 <olsner> anyway, I think I'll sit on that idea for a while longer
10:12:56 <b_jonas> luckily Consumer Society will probably be the more commonly used language in practice, and typical Consumer Society programs written in a natural style will usually have a short enough prefix that's invalid in the sister language (perhaps after a long comment block at the start)
10:13:52 <b_jonas> I think naturally written programs in the sister language would be much worse in this sense unless you deliberately insert a disambiguation near the start
10:14:03 <b_jonas> there are very simple disambiguations though
10:14:41 <olsner> of course if you want to be fancy, you'd write a program that is ambiguous to the end for both the interpreter and for human readers with misleading comments
10:14:43 <b_jonas> to be clear, the other kind of parenthesis, the one that doesn't have to be balanced, are an important part of the syntax of either language
10:15:44 -!- Noisytoot has quit (Read error: Connection reset by peer).
10:16:12 <b_jonas> olsner: I don't know if I could write such a thing. I don't know how I'd make it look ambiguous rather than just completely unreadable
10:16:34 <b_jonas> but it might be possible. there's a deliberately misleading IOCCC entry after all.\
10:17:17 -!- Noisytoot has joined.
11:15:08 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
11:19:00 -!- tromp has joined.
11:22:01 -!- impomatic has quit (Quit: impomatic).
11:22:20 -!- impomatic has joined.
11:26:33 -!- impomatic has quit (Client Quit).
11:26:53 -!- impomatic has joined.
11:36:16 -!- Noisytoot has quit (Quit: ZNC 1.8.2 - https://znc.in).
11:38:13 -!- Noisytoot has joined.
11:59:17 -!- chiselfuse has quit (Ping timeout: 258 seconds).
11:59:39 -!- chiselfuse has joined.
12:05:25 -!- Noisytoot has quit (Remote host closed the connection).
12:06:33 -!- impomatic has quit (Quit: impomatic).
12:06:52 -!- impomatic has joined.
12:10:06 -!- Noisytoot has joined.
12:11:33 -!- impomatic has quit (Client Quit).
12:11:54 -!- impomatic has joined.
12:21:16 -!- Noisytoot has quit (Ping timeout: 265 seconds).
12:35:52 -!- Noisytoot has joined.
12:38:09 -!- Noisytoot has quit (Quit: ZNC 1.8.2 - https://znc.in).
12:42:38 -!- Noisytoot has joined.
12:54:14 -!- Noisytoot has quit (Excess Flood).
12:57:54 -!- Noisytoot has joined.
13:02:01 -!- impomatic has quit (Quit: impomatic).
13:02:21 -!- impomatic has joined.
13:06:33 -!- impomatic has quit (Client Quit).
13:06:54 -!- impomatic has joined.
13:26:59 -!- impomatic has quit (Quit: impomatic).
13:27:21 -!- impomatic has joined.
13:31:32 -!- impomatic has quit (Client Quit).
13:31:54 -!- impomatic has joined.
13:50:11 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
13:58:10 -!- impomatic has quit (Remote host closed the connection).
14:11:47 -!- tromp has joined.
14:33:38 <esolangs> [[V^v]] M https://esolangs.org/w/index.php?diff=103165&oldid=103068 * Kaveh Yousefi * (+11) Amended a few orthographic mistakes.
14:40:30 -!- impomatic has joined.
14:41:24 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
14:43:52 -!- tromp has joined.
15:02:01 -!- impomatic has quit (Quit: impomatic).
15:02:21 -!- impomatic has joined.
15:06:32 -!- impomatic has quit (Client Quit).
15:06:54 -!- impomatic has joined.
15:26:30 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:30:27 -!- tromp has joined.
15:42:42 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:46:22 -!- tromp has joined.
17:02:01 -!- impomatic has quit (Quit: impomatic).
17:02:23 -!- impomatic has joined.
17:06:32 -!- impomatic has quit (Client Quit).
17:06:52 -!- impomatic has joined.
17:13:48 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:43:54 -!- chiselfuse has quit (Ping timeout: 258 seconds).
17:44:12 -!- chiselfuse has joined.
17:55:00 -!- tromp has joined.
18:44:25 -!- Everything has joined.
18:44:59 -!- Lord_of_Life has quit (Ping timeout: 252 seconds).
18:45:17 -!- Lord_of_Life has joined.
18:55:31 -!- impomatic has quit (Quit: impomatic).
18:59:14 -!- impomatic has joined.
18:59:35 -!- impomatic has quit (Remote host closed the connection).
18:59:54 -!- impomatic has joined.
19:05:02 -!- impomatic has quit (Quit: impomatic).
19:05:22 -!- impomatic has joined.
19:09:33 -!- impomatic has quit (Client Quit).
19:09:53 -!- impomatic has joined.
19:15:02 -!- impomatic has quit (Quit: impomatic).
19:15:24 -!- impomatic has joined.
19:18:09 -!- Sgeo has joined.
19:19:34 -!- impomatic has quit (Client Quit).
19:19:53 -!- impomatic has joined.
19:24:22 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:36:14 -!- impomatic has quit (Quit: impomatic).
19:40:57 <int-e> fungot: can you explain delta-swaps to me?
19:40:58 <fungot> int-e: that makes sence, i just assumed " liquor" would fnord work? i'm listening to a music piece by " crazy penis". it's striking because it's counterintuitive
19:41:31 <int-e> I'm dismayed that "sence" is frequent enough to not be "f****".
19:42:08 <int-e> `"
19:42:11 <HackEso> 1/1:1126) <mroman_> Bike: I refuse to believe in bottom <Bike> ass is an urban legend \ 1266) <quintopia> let's force all arabs to adopt more reasonable orthography <zzo38> quintopia: No that is not the correct solution <quintopia> zzo38: oh. okay. thanks.
19:44:44 -!- tromp has joined.
19:48:49 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:49:42 -!- tromp has joined.
20:29:56 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
20:30:46 <imode> fungot: how much do you weigh?
20:30:46 <fungot> imode: are you all so enthusiastic about answering that???
20:30:55 <imode> fungot: yes, I am. how big are you.
20:30:56 <fungot> imode: 80 characters they are considered pointers.
20:31:16 -!- tromp has joined.
20:31:18 <imode> fungot: 640 bytes is enough for you, then?
20:31:19 <fungot> imode: rulers of nations back then were pretty horrible. granted, that's usually quite simple. the only advantage today. i went to a private school
20:31:35 <imode> fungot: are you secretly bill gates?
20:31:35 <fungot> imode: how far is montreal?). since this is a fnord :) just don't like the font of emacs i read of??? is it 2d?
20:31:44 <imode> fungot: enjoy your fnords.
20:35:26 <int-e> Haha. Have you ever added 'volatile' to C code to make code *faster*?
20:36:21 <imode> oddly enough, no.
20:37:52 <fizzie> At the university, the CS students used to have all these "excursions" to companies and such, and there was an unwritten tradition to, after the host had done whatever presentation they had about the company and asked for questions, to ask "how much does this building weigh?"
20:38:05 <fizzie> A well-enough known tradition that sometimes the host had an answer prepared.
20:39:34 <fizzie> And now that I went and looked for that on the web, on the first page of results is when I told this same story about a decade ago, which is a little bit sad.
20:39:58 <int-e> Sadly it's not reliable enough anyway. I'm cheating differently now.
20:40:40 <fizzie> https://logs.esolangs.org/freenode-esoteric/2012-11-04.html#lYp
20:41:04 <int-e> Anyway, the thing is... I have code with /many/ 64 bit constands (from DES S-boxes, because somehow I thought implementing DES could be fun), and it's faster to fetch those from memory than to build constants inline... which is what both gcc and clang do when left to their own devices.
20:41:12 <int-e> constants even
20:41:43 <int-e> So now I have a constant table as a global variable. And a dummy function that modifies it. What a hack.
20:43:08 <int-e> > 2.385 / 2.930
20:43:10 <lambdabot> 0.8139931740614333
20:43:25 <int-e> > 2.930 / 2.385 -- err, this way
20:43:27 <lambdabot> 1.228511530398323
20:43:35 <int-e> 23% speedup. Not negligible.
20:50:02 <int-e> But meh, surely that'a s thing the compiler could do for me...
20:53:05 <int-e> This, btw, also makes the difference between the code being faster than the 32 bit version, and slower than the 32 bit version.
20:58:32 -!- Everything has quit (Quit: leaving).
21:02:55 <zzo38> What circumstances does adding 'volatile' to a C code make it faster?
21:04:29 <zzo38> Will it help with what you have described (with DES)? Although, might that depend on the target computer, though?
21:08:25 -!- Guest33 has joined.
21:10:51 -!- Guest33 has quit (Client Quit).
21:32:19 <int-e> Actually I'm unsure why this is making the code faster when movabsq exists? Having the constants in tables might relieve register pressure, hmm.
21:36:18 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:50:17 <int-e> uhm, dear compiler, why do you do... movabsq $1229782938247303440, %r8; orq$1, %r8 ...instead of just the movabsq?
21:50:30 <int-e> (incremented by 1)
21:54:14 <b_jonas> int-e: what are your compiler options?
21:54:18 <int-e> Yeah there are some stupid things going on here... the table-based code has 17 fewer instructions (114 instead of 131) for the actual computation... I wonder how it would perform with movabsq instead of those table loads
21:54:39 <int-e> 12.1.0 and 14.0.6, what Debian unstable has.
21:54:50 <b_jonas> *options*
21:54:52 <b_jonas> I said options, not version
21:54:56 <int-e> options
21:54:59 <int-e> just -O3
21:55:05 <b_jonas> thanks
21:55:14 <b_jonas> and yes, then that sounds odd
21:55:47 <int-e> b_jonas: The actual constant in the code is 0x1111111111111111UL
21:57:15 <b_jonas> "Have you ever added 'volatile' to C code to make code *faster*" => no. I've added volatile as a weak attempt to try to inhibit optimizations to measure the speed of some pure computation though.
21:58:42 <b_jonas> "So now I have a constant table as a global variable. And a dummy function that modifies it.
21:59:06 <b_jonas> " => with an alignas to page-align it?
21:59:08 <zzo38> I have once added volatile to a member of a structure to try to inhibit fast math optimizations for only that variable; I don't know if that is effective or if it is the only way to be done, though, or even if it is necessary
21:59:41 <int-e> b_jonas: I didn't bother with alignment. It'll be in cache anyway.
22:00:29 <b_jonas> you only need alignment if you have like a 16 or 32 byte array and you unaligned load sections from it. probably not the case for DES, but comes up elsewhere
22:00:41 <b_jonas> can even be 64 bytes
22:00:47 <int-e> Ah, *some* extra instructions are expected of course, because of m,r variants of instructions like andq c+8(%rip), %rdi
22:01:00 <int-e> (r,m if this were intel style)
22:01:05 <b_jonas> int-e: is there maybe a jump targeting the orq instruction?
22:01:24 <int-e> b_jonas: there's no label there, so nope
22:01:36 <int-e> (I'm looking at -S output, not disassembly)
22:01:57 <b_jonas> yeah... some compilers emit numeric jumps, but you probably don't have that much these days
22:02:18 <b_jonas> no idea why the orq is there then
22:02:22 -!- slavfox has quit (Quit: ZNC 1.8.2 - https://znc.in).
22:02:38 <b_jonas> maybe it's to set flags?
22:02:40 <b_jonas> clear flags rather
22:02:50 <b_jonas> does it check flags in a later instruction without overwriting them?
22:03:11 -!- slavfox has joined.
22:03:16 <b_jonas> any flag other than carry
22:03:23 <b_jonas> so sign, zero, overflow
22:03:53 <b_jonas> flag could come from different instructions in first loop iteration and later iterations
22:04:14 <b_jonas> overflow flag is suspect, so look for signed comparisons
22:04:18 <b_jonas> there's no direct way to clear it
22:04:42 -!- ^[ has quit (Quit: ^[).
22:06:21 <b_jonas> huh, the or instruction clears the carry flag too? ok
22:06:54 <b_jonas> so it doesn't tear the flags to half
22:07:05 -!- __monty__ has quit (Quit: leaving).
22:07:48 <b_jonas> int-e: my guess is, it wants to change the zero and/or sign and/or overflow flags for a later instruction
22:11:50 <int-e> b_jonas: here's some actual code (reduced, probably not minimal): http://paste.debian.net/1253549/
22:13:30 <int-e> b_jonas: I've seen a variant of that code where the 0x1111111111111110 value is actually used... and the orq $1, %rsi became lea 1(%rsi),%r10
22:18:38 <int-e> Oh, it also fails to recognize the bit rotations.
22:34:34 <b_jonas> int-e: ok, so it's not for flags either apparently
22:35:19 <b_jonas> no clue then
22:37:25 <b_jonas> thanks
22:40:27 <b_jonas> maybe it wants a nop and picks a weird one
22:40:43 <b_jonas> but it's a very weird one to pick
22:40:44 <int-e> Anyway, it's beginning to look like most of the slowdown comes from needless multiplication of constants... having both 0x11...10 and 0x11...11 around when the latter would work for the former is unfortunate.
22:41:41 <b_jonas> if it's hot code, try to rewrite it so it happens in a loop and the constants are loaded only once
22:41:54 <b_jonas> unless there's like too few registers, but it doesn't seem like that there
22:42:21 <int-e> I think this may be a lea 1(%rsi), %rsi at some point.
22:42:40 <int-e> or something equivalent to that in an intermediate code
22:42:55 <int-e> regardless, it's weird.
22:43:53 <int-e> there's also this pattern of replacing shifts by leas
22:44:08 <int-e> cf. lines 57-59 in the paste
22:44:14 <b_jonas> if it's on a critical path and actually makes your code worse (unlikely) and you can prove that by improving the assembly by hand, then you should report it as a compiler bug
23:00:11 <b_jonas> (but only if you're willing to follow the project-specific instructions for how to report a bug, which, if you've seen bug trackers you'll know, apparently 90% of bug ticket writers can't)
23:01:13 <b_jonas> (people on the internet are annoying sometimes, omitting important information that they have from their bug tickets)
23:03:08 <b_jonas> (it's especially annoying when your co-workers do that for a work project so you can't just ignore their request)
23:42:56 -!- ^[ has joined.
←2022-09-10 2022-09-11 2022-09-12→ ↑2022 ↑all