00:06:43 -!- tromp has joined.
00:11:23 -!- tromp has quit (Ping timeout: 260 seconds).
00:13:25 -!- rain1 has quit (Quit: WeeChat 3.0).
00:41:36 -!- xelxebar has quit (*.net *.split).
00:44:10 -!- tromp has joined.
00:50:36 -!- tromp has quit (Ping timeout: 265 seconds).
00:53:48 -!- sftp has quit (Excess Flood).
00:54:25 -!- sftp has joined.
01:03:37 -!- xelxebar has joined.
01:04:01 <b_jonas> Apparently if I search for my real name on duckduckgo, I find: several aggregator pages listing scholarly articles in mathematics that I published under that name; a lot of obvious false positives that match only my given name and not my family name (which is a mythic rare word; the matches are usually to personal names, but I just learned there's a village in France named the same); my CPAN profile
01:04:07 <b_jonas> which is listed with my real name; the SQLite mailing list archive which doesn't show any emails unless you're subscribed but somehow still reveals my name; a pastebin entry with a git commit of a doc patch to I think perl that has my name in a list of authors in surrounding lines, I think because I sent a different doc patch to the same module.
01:05:30 <b_jonas> Also a profile on Mathematics Stack Exchange, where I put my real name because I also put my real name to MathOverflow because I asked questions clearly related to the professional work..
01:05:44 <b_jonas> Let's see if some plus signs can remove the false positives with only my given name.
01:07:52 <b_jonas> Oh yeah, I forgot. Without plus signs it also finds my homepage.
01:08:21 <b_jonas> And some bug reports to perl.
01:08:37 <fizzie> Hmm, been a while since I last searched for myself. These results seem *incredibly* boring: the Google Scholar page, the GitHub profile, the silly ResearchGate page, my own wobsite.
01:08:45 <fizzie> Okay, there's one kind of a funny one, which is the GLfunge98-0.0.04 package on the "HP-UX Porting and Archive Centre".
01:10:04 <b_jonas> It apparently even finds an email on the sqlite mailing list.
01:10:16 <b_jonas> With plus signs it finds very few results, but they include a bug report to texinfo.
01:10:50 <b_jonas> let me see with quotation marks, and swapped with quotation marks.
01:17:27 <b_jonas> I am mostly satisfied with what I'm seeing.
01:20:48 <b_jonas> whoa... I have a doc bug report for ruby? for ruby version 1.9? wow, the things I've done on the internet more than a decade ago and can't recall
01:21:55 <b_jonas> Obviously I also find other scholarly articles that cite my articles.
01:23:15 <b_jonas> quotation marks actually help find more relevant hits
01:24:21 <esowiki> [[Tarflex]] M https://esolangs.org/w/index.php?diff=80134&oldid=73745 * PythonshellDebugwindow * (+2) /* Quine */ fix header level
01:25:47 <fizzie> I wrote a Finnish keymap for NetBSD 20 years ago, and therefore ended up being mentioned in the CVS revision history, just because I didn't realize the existing Swedish one would've really been just fine.
01:30:43 <b_jonas> fizzie: if you did realize that, you'd still have your name with a one-line patch to make "se" a synonym for "fi" when choosing keymaps
01:30:43 <fizzie> (It's one of those cases where the ISO 639-1 language code doesn't match the ISO 3166 alpha-2 code for the country.)
01:30:54 <fizzie> (Even when the language is strongly associated with a specific country, I mean.)
01:31:11 <b_jonas> whoa, I found a scholarly article, with an author I know personally, that thanks me for "ideas for the proof", and I don't recall having seen this article yet.
01:31:16 <b_jonas> I'll have to look at what it is
01:33:36 <b_jonas> oh nice! the search with the name swapped and quotation mark finds the bug report to sqlite about a segmentation fault for a statement that should be an error
01:33:50 <b_jonas> as in, should be an error handled gracefully with an error message
01:34:41 <b_jonas> (it's old, the bug has been fixed in 2014)
01:35:44 <b_jonas> to state the obvious, for applying to jobs, I want to know what an interviewer finds when they search for my name
01:36:16 -!- sftp has quit (Ping timeout: 265 seconds).
01:36:40 <b_jonas> there's a lot of perl-related stuff
01:38:27 <b_jonas> I also found a false positive with the name of my father, who has the same family name
01:40:05 -!- tromp has joined.
01:44:58 -!- tromp has quit (Ping timeout: 265 seconds).
02:05:49 <esowiki> [[User:Robolta]] https://esolangs.org/w/index.php?diff=80135&oldid=74422 * Robolta * (+12) /* Created Esolangs */
02:05:55 <esowiki> [[User:Robolta]] https://esolangs.org/w/index.php?diff=80136&oldid=80135 * Robolta * (+1) /* Created Esolangs */
02:34:34 -!- tromp has joined.
02:38:42 -!- tromp has quit (Ping timeout: 246 seconds).
02:43:06 <esowiki> [[Patternfuck]] N https://esolangs.org/w/index.php?oldid=80137 * Robolta * (+1726) Created page with "{{WIP}} '''Patternfuck''' is an esolang made by [[User:Robolta]]. It uses a tape-based memory that resembles [[Brainfuck|brainfuck]] but differs in how it uses the square br..."
02:44:48 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=80138&oldid=80071 * Robolta * (+18) Added Patternfuck
03:04:58 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80139&oldid=80137 * Robolta * (+1281)
03:08:07 <esowiki> [[User:Robolta]] https://esolangs.org/w/index.php?diff=80140&oldid=80136 * Robolta * (+4) /* Created Esolangs */
03:09:40 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80141&oldid=80139 * Robolta * (-3) /* Negative to Positive */
03:10:07 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80142&oldid=80141 * Robolta * (+65) /* Overview */
03:10:22 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80143&oldid=80142 * Robolta * (+0) /* Overview */
03:18:52 -!- sftp has joined.
03:20:24 <esowiki> [[Parentheses only]] M https://esolangs.org/w/index.php?diff=80144&oldid=80123 * Hakerh400 * (+46)
03:26:39 <esowiki> [[Patternfuck]] M https://esolangs.org/w/index.php?diff=80145&oldid=80143 * Tetrapyronia * (+14) fixed link
03:32:29 -!- tromp has joined.
03:37:04 -!- tromp has quit (Ping timeout: 256 seconds).
03:46:14 -!- tromp has joined.
03:50:40 -!- tromp has quit (Ping timeout: 256 seconds).
03:55:35 <esowiki> [[User:Hakerh400/JavaScript Quiz]] https://esolangs.org/w/index.php?diff=80146&oldid=79308 * Hakerh400 * (+243)
04:01:59 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
04:09:15 <moony> devising calling conventions is haaard
04:09:26 <moony> trying to figure out one for the Parallax Propeller 2, as it doesn't have an official C calling convention
04:19:00 <b_jonas> moony: I'm not sure that matters. you only really get to define a calling convention if you port a compiler. not necessarily a C compiler, any compiler, or even an interpreter that lets you call or expose foreign functinos. and doing that is hard already.
04:20:15 <moony> i'd have the CC done by now
04:20:51 <moony> 496 allocatable registers that have to be shared with globals and sometimes even code
04:20:51 <moony> is just a pain to make a good balance for
04:23:00 <moony> i was thinking allocate 120-128 regs, but then i have to figure out how i want to categorize those
04:23:31 <moony> the CC on P2 also controls what registers can be used during code execution, not just calls, which is extra fun
04:27:56 -!- arseniiv has joined.
05:23:19 -!- tromp has joined.
05:28:06 -!- tromp has quit (Ping timeout: 246 seconds).
05:48:23 -!- cyvuybib has joined.
05:52:22 -!- cyvuybib has quit (Client Quit).
05:53:04 -!- bitx has joined.
06:05:54 -!- bitx has quit (Quit: Connection closed).
06:17:49 -!- tromp has joined.
06:18:49 -!- tromp has quit (Read error: Connection reset by peer).
06:19:21 -!- tromp has joined.
06:24:08 -!- tromp has quit (Ping timeout: 260 seconds).
06:32:37 -!- tromp has joined.
06:36:16 -!- spruit11 has quit (Read error: Connection reset by peer).
06:37:21 -!- tromp has quit (Ping timeout: 264 seconds).
06:38:54 -!- spruit11 has joined.
06:49:57 <kmc> I am reading about the "PIO" feature in the new RP2040 microcontroller from Raspberry Pi
06:50:03 <kmc> chapter 3 https://datasheets.raspberrypi.org/pico/sdk/pico_c_sdk.pdf
06:50:20 <kmc> it is kind of esolang-like
06:50:58 <kmc> a very simple and limited coprocessor core which is designed for bit-banging protocols
07:02:04 <esowiki> [[Vyxal]] N https://esolangs.org/w/index.php?oldid=80147 * JonoCode9374 * (+5888) Wow I actually made an esolangs page for Vyxal at long last
07:04:53 <esowiki> [[Vyxal]] https://esolangs.org/w/index.php?diff=80148&oldid=80147 * JonoCode9374 * (+527)
07:05:46 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=80149&oldid=80138 * JonoCode9374 * (+12) /* V */ is for Vyxal
07:14:33 -!- arseniiv has quit (Ping timeout: 264 seconds).
07:23:39 <kmc> it has some unusual ISA features, like a programmable number of delay cycles after every instruction, and the ability to set/reset output pins as an additional effect of any instruction
07:26:59 -!- tromp has joined.
07:28:14 <kmc> on the other hand it has only two general purpose registers, and each group of 4 PIO cores (there are 8 cores in total) share a single 32-instruction program memory
07:28:55 <kmc> (though host code can update that memory on the fly, and also send them instructions to execute immediately
07:31:34 <kmc> I think you could get them to execute from main memory using the OUT EXEC instruction in conjunction with the DMA peripheral
07:31:34 <kmc> but then you would lose the use of the output FIFO for other stuff
07:31:34 -!- sprock has quit (Ping timeout: 246 seconds).
07:31:57 -!- tromp has quit (Ping timeout: 264 seconds).
07:53:24 -!- tromp has joined.
08:00:41 -!- LKoen has joined.
08:12:59 -!- tromp has quit (Remote host closed the connection).
08:36:11 -!- tromp has joined.
08:47:14 -!- ArthurStrong has quit (Quit: leaving).
09:12:46 -!- Sgeo__ has quit (Read error: Connection reset by peer).
09:14:12 -!- Discordian[m] has quit (*.net *.split).
09:14:14 -!- myname has quit (*.net *.split).
09:15:04 -!- Discordian[m] has joined.
09:15:04 -!- myname has joined.
09:17:52 -!- Discordian[m] has quit (Ping timeout: 242 seconds).
09:21:26 -!- none30 has quit (Ping timeout: 240 seconds).
09:21:26 -!- acedic[m] has quit (Ping timeout: 240 seconds).
09:21:33 -!- wmww has quit (Ping timeout: 246 seconds).
09:26:54 -!- LKoen has quit (Remote host closed the connection).
09:30:53 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80150&oldid=79680 * Quadril-Is * (+98)
09:34:04 -!- wesleyac_test has joined.
09:35:52 <esowiki> [[User:Language]] M https://esolangs.org/w/index.php?diff=80151&oldid=77102 * Quadril-Is * (+0) I tested using a regex and unless there's something that shouldn't be counted 4 is the 46th link
09:36:37 <esowiki> [[User:Language]] M https://esolangs.org/w/index.php?diff=80152&oldid=80151 * Quadril-Is * (+0) Forgot about the other ones
09:39:33 -!- wesleyac has changed nick to wesleyac_.
09:39:39 -!- wesleyac_test has changed nick to wesleyac.
09:43:46 -!- wesleyac_ has quit (Quit: ZNC 1.8.2 - https://znc.in).
09:45:07 -!- kspalaiologos has joined.
10:04:31 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80153&oldid=80150 * Quadril-Is * (-71)
10:08:34 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80154&oldid=80153 * Quadril-Is * (+27) Test test test
10:10:09 -!- none30 has joined.
10:14:52 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80155&oldid=80154 * Quadril-Is * (-28)
10:16:35 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80156&oldid=80155 * Quadril-Is * (-8) /* Something */
10:19:29 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80157&oldid=80156 * Quadril-Is * (+0) /* Something */
10:19:37 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80158&oldid=80157 * Quadril-Is * (+2) /* Something */
10:19:47 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80159&oldid=80158 * Quadril-Is * (+0) /* Something */
10:20:12 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80160&oldid=80159 * Quadril-Is * (+0) /* Something */
10:20:21 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80161&oldid=80160 * Quadril-Is * (-2) /* Something */
10:36:27 -!- wmww has joined.
10:36:27 -!- acedic[m] has joined.
10:36:28 -!- Discordian[m] has joined.
10:53:53 -!- LKoen has joined.
11:10:55 -!- Lord_of_Life has quit (Ping timeout: 256 seconds).
11:15:42 -!- Lord_of_Life has joined.
11:45:56 -!- b_jonas has quit (Ping timeout: 240 seconds).
11:55:06 <esowiki> [[Special:Log/newusers]] create * Gilbert189 * New user account
12:13:02 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=80162&oldid=80131 * Gilbert189 * (+203) /* Introductions */
12:56:41 <esowiki> [[User:Gilbert189]] N https://esolangs.org/w/index.php?oldid=80163 * Gilbert189 * (+428) Created page with "Hi! I made esolangs! Um, I have some that I already made, but it's all in tio, so I can't share the here... :P I have a [https://github.com/Gilbert189 GitHub account] (or pa..."
13:07:43 -!- wesleyac has quit (Remote host closed the connection).
13:08:03 -!- wesleyac has joined.
13:14:51 -!- wesleyac has quit (Remote host closed the connection).
13:19:26 -!- wesleyac has joined.
13:24:33 -!- arseniiv has joined.
13:40:26 -!- Lord_of_Life has quit (Remote host closed the connection).
13:41:06 -!- wesleyac has quit (Remote host closed the connection).
13:41:22 -!- wesleyac has joined.
13:42:35 -!- Lord_of_Life has joined.
13:45:55 <esowiki> [[Patternfuck]] M https://esolangs.org/w/index.php?diff=80164&oldid=80145 * Robolta * (+117) /* Fibonacci */
13:46:09 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80165&oldid=80164 * Robolta * (+1) /* Fibonacci */
13:47:10 <esowiki> [[Patternfuck]] M https://esolangs.org/w/index.php?diff=80166&oldid=80165 * Robolta * (+22) /* Overview */
14:07:53 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80167&oldid=80166 * Robolta * (+1312)
14:11:19 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80168&oldid=80167 * Robolta * (+51)
14:15:28 -!- Arcorann has quit (Ping timeout: 260 seconds).
14:23:05 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80169&oldid=80168 * Robolta * (+96)
14:23:19 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80170&oldid=80169 * Robolta * (+1) /* Interpreters */
14:23:28 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80171&oldid=80170 * Robolta * (-2) /* Interpreters */
14:30:54 <esowiki> [[Patternfuck]] https://esolangs.org/w/index.php?diff=80172&oldid=80171 * Robolta * (+14) /* Examples */
15:04:26 -!- Remavas has joined.
15:09:42 -!- Remavas has quit (Quit: Leaving).
15:09:58 -!- naivesheep has quit (Quit: ZNC 1.8.2 - https://znc.in).
15:11:50 -!- naivesheep has joined.
15:13:23 -!- Sgeo has joined.
15:14:53 -!- naivesheep has quit (Client Quit).
15:15:54 -!- naivesheep has joined.
15:19:19 -!- LKoen has quit (Remote host closed the connection).
15:21:44 -!- rain1 has joined.
15:25:34 <esowiki> [[RomanF]] N https://esolangs.org/w/index.php?oldid=80173 * Gilbert189 * (+1177) Created page with "romanF is a [[brainfuck|Brainfuck]] derivative, but using Roman numerals. It is made by [[User:Gilbert189]]. ==Translation to Brainfuck== {| class="wikitable" |- ! romanF !!..."
15:25:45 <esowiki> [[User:Gilbert189]] https://esolangs.org/w/index.php?diff=80174&oldid=80163 * Gilbert189 * (-8)
15:30:14 -!- Lord_of_Life has quit (Remote host closed the connection).
15:32:47 -!- sprock has joined.
15:34:48 -!- Lord_of_Life has joined.
15:38:44 <esowiki> [[Talk:BackFlip]] https://esolangs.org/w/index.php?diff=80175&oldid=80116 * Orisphera * (-1562) /* Arrows are unnecessary */
15:58:12 <esowiki> [[Talk:BackFlip]] https://esolangs.org/w/index.php?diff=80176&oldid=80175 * Orisphera * (-46) /* Arrows are unnecessary */
16:01:08 <esowiki> [[Talk:BackFlip]] https://esolangs.org/w/index.php?diff=80177&oldid=80176 * Orisphera * (+2) /* Arrows are unnecessary */
16:03:49 -!- LKoen has joined.
16:04:21 -!- mmmattyx has joined.
16:14:08 -!- MDude has joined.
16:16:36 -!- arseniiv has quit (Ping timeout: 240 seconds).
16:22:15 -!- arseniiv has joined.
16:55:11 -!- Lord_of_Life_ has joined.
16:56:01 -!- Lord_of_Life has quit (Ping timeout: 256 seconds).
16:56:35 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
17:01:12 -!- b_jonas has joined.
17:01:12 <HackEso> olist https://www.giantitp.com/comics/oots1223.html: shachaf oerjan Sgeo FireFly boily nortti b_jonas
17:01:27 <Sgeo> Dangit I was reading it and totally forgot to olist
17:04:31 <b_jonas> kmc: so this is something you can use to implement the realtime part of a serial comms controller or a floppy disk controller? can they do DMA or do they only have a small (few bytes) buffer after which the CPU has to contact them?
17:34:30 -!- APic has quit (Quit: New Screen + irssi).
17:36:12 -!- APic has joined.
17:46:00 -!- TheLie has joined.
17:46:47 <esowiki> [[V]] M https://esolangs.org/w/index.php?diff=80178&oldid=80117 * Bo Tie * (+0) Something is wrong with me
18:02:55 <kmc> b_jonas: they have DMA. each PIO state machine (the 8 "cores" i mentioned) has a 4-word TX FIFO and a four-word RX FIFO, which can be filled (respectively, emptied) either by the main CPU or by the system DMA engine
18:05:43 <kmc> one of the example PIO programs is a "logic analyzer" which writes the state of all 32 GPIOs directly to memory, once per cycle, through the DMA engine
18:06:28 <b_jonas> kmc: oh nice! so you could implement an IO program that stores a sector to a memory buffer. Though it probably isn't good enough to decode the sector as well, you'll need a CPU (or perhaps a GPU) to do that.
18:06:34 <Hooloovo0> if there's hardware it's not bit-banging!
18:06:55 <Hooloovo0> iirc the reason a lot of people use the beaglebone for stuff is because it has a very good timing generator
18:07:27 <Hooloovo0> if the pi now has one, that's cool for them
18:07:45 <kmc> Hooloovo0: this isn't the main Raspberry Pi
18:08:02 <kmc> it's the "RP2040" which is a dual Cortex-M0 microcontroller
18:08:07 <kmc> sold on a $4 board
18:08:47 <Hooloovo0> ah, that one, heard about that the other day. I'm guessing it's losing money, and basically sounds like just another arduino to me
18:09:35 <kmc> it's aiming at the same niche as arduino but has a few unusual hardware features
18:09:53 <kmc> one of which is the PIO state machines I've been discussing
18:10:00 <b_jonas> hmm, looks like I'm disconnected from IRC
18:10:08 <kmc> b_jonas: you're still here
18:10:37 <esowiki> [[Parse this sic]] https://esolangs.org/w/index.php?diff=80179&oldid=80112 * Digital Hunter * (+269) /* Example programs */
18:11:34 <kmc> it's also clocked very fast for a microcontroller (133 MHz)
18:11:52 <b_jonas> kmc: I'm still here, but with a multiple minutes long delay to receive messages through this connection. I see the messages in https://esolangs.org/logs/2021-01-22.html way before I see them in the irc client.
18:11:53 <kmc> and the core clock PLL and Vcore LDO are both programmable, so it should be overclockable too :3
18:11:57 <kmc> b_jonas: odd
18:13:07 <b_jonas> kmc: I remember one time this happened on freenode, when the delay eventually grew to like 20 or 30 minutes between servers
18:13:07 <b_jonas> that was years ago of course
18:13:41 <b_jonas> apparently you all are on the side closer to the log bot
18:14:54 <b_jonas> hmm, it might have been a temporary delay clearing itself up
18:15:17 <b_jonas> must have been some temporary hiccup
18:19:03 <kmc> another thing I forgot to mention about the PIO state machines, each one has a programmable fractional clock divider, this combined with cycle-accurate execution (each PIO instruction takes one cycle, optionally followed by a delay of up to 31 cycles) makes them suitable for implementing protocols that require precise timing
18:20:24 <kmc> although the fractional clock divider is not an independent PLL but some sigma-delta cycle skipping thing that introduces jitter
18:20:34 <b_jonas> apparently other people experienced the problem too on the same server
18:23:00 <kmc> they can also cause and wait for interrupts
18:23:30 <b_jonas> useful when you have DMA, you somehow have to wake up the cpu after reading the whole sector to DMA
18:28:35 -!- TheLie has quit (Remote host closed the connection).
18:42:49 -!- Melvar has quit (Ping timeout: 240 seconds).
18:43:04 -!- Melvar has joined.
18:44:41 -!- delta23 has joined.
18:49:12 <kmc> Hooloovo0: I'm not sure if the RPi Pico is losing money. i mean, all new designs lose money initially, but compare it to those "bluepill" boards which have a (possibly counterfeit) STM32F1 and sell for under $2 shipped
18:49:26 <kmc> and those are a non-branded product so there is no reason why they would sell them at a loss
18:56:45 <Sgeo> Why am I finding myself fascinated by C#? (Probably because people are now looking at me to maintain a C# project)
18:57:06 <Sgeo> It has a REPL now, it's supposedly more cross-platform now
18:57:21 <kmc> I also wouldn't be surprised if the next version of the main RPi product line has one of these microcontrollers onboard
19:11:38 <kmc> that would be interesting, especially if they have a good way to orchestrate communication between the application processor and the microcontroller
19:12:55 <kmc> something more high level than "here's a UART"
19:13:04 -!- ubq323 has joined.
19:15:15 <kmc> imagine writing a Python program which runs in Linux on the app processor but with the ability to offload individual functions to MicroPython on the Cortex-M cores for timing sensitive stuff, and embedding PIO programs (they already have a Python EDSL for them) for the really low level stuff
19:20:35 <esowiki> [[Parse this sic]] https://esolangs.org/w/index.php?diff=80180&oldid=80179 * Digital Hunter * (-8)
19:30:33 <esowiki> [[User:Bo Tie]] https://esolangs.org/w/index.php?diff=80181&oldid=79881 * Bo Tie * (+35)
19:41:59 -!- kspalaiologos has quit (Quit: Leaving).
19:43:55 -!- delta23 has quit (Quit: Leaving).
19:48:09 <Sgeo> ....Microsoft officially acknowledges the existence of ILspy? Adobe doesn't acknowledge Flash decompilers and Oracle doesn't acknowledge Java decompilers, do they?
19:48:23 <Sgeo> https://github.com/microsoft/win32metadata
19:48:29 <Sgeo> > If you'd like to browse the metadata to see what we're emitting, download the NuGet package and load the included winmd file in ILSpy.
19:48:31 <lambdabot> <hint>:1:64: error: <hint>:1:64: error: parse error on input ‘,’
20:05:56 <fizzie> Ooh, I think this is a new category of spam for me (not that I follow them so closely).
20:06:10 <fizzie> Claims to be from "GoDaddy Cancellations", subject line "we inform you that the [domain of my email address] domain will expire on: 25/01/2021." Contains a "renewal link" where I'd (according to the message, didn't go check) just need to pay $1.99 with a credit card to renew it.
20:06:32 <fizzie> The domain is of an organization, not mine, and it's also not due to expire until 2025. But it's not a very "mainstream" organization; I imagine they won't be trying to send these to random people suggesting they should renew gmail.com.
20:16:59 <esowiki> [[Parse this sic]] M https://esolangs.org/w/index.php?diff=80182&oldid=80180 * Digital Hunter * (+49) /* Infinite loop */
20:43:55 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=80183&oldid=80130 * Tetrapyronia * (+49) Added Recursor
20:44:09 <esowiki> [[User:Tetrapyronia]] M https://esolangs.org/w/index.php?diff=80184&oldid=80012 * Tetrapyronia * (+15)
20:54:23 -!- Arcorann has joined.
20:55:36 -!- diverger has quit (Ping timeout: 240 seconds).
21:01:59 <b_jonas> `? #esoteric cookie policy
21:02:01 <HackEso> #esoteric cookie policy? ¯\(°_o)/¯
21:02:10 <b_jonas> `? #esoteric privacy policy
21:02:13 <HackEso> #esoteric privacy policy? ¯\(°_o)/¯
21:02:19 <b_jonas> `? #esoteric terms of services
21:02:21 <HackEso> #esoteric terms of services? ¯\(°_o)/¯
21:30:37 -!- Deewiant has quit (Ping timeout: 256 seconds).
21:30:55 -!- Deewiant has joined.
21:31:06 <arseniiv> Sgeo: yeah it’s nice to see how C# grows, even as a language
21:40:43 -!- MDude has quit (Read error: Connection reset by peer).
21:41:03 -!- MDude has joined.
21:48:43 -!- ubq323 has quit (Ping timeout: 260 seconds).
21:57:10 -!- SpaceDecEva has joined.
22:02:10 <esowiki> [[Parse this sic]] https://esolangs.org/w/index.php?diff=80185&oldid=80182 * Digital Hunter * (+2538) Talked about numbers. The kind I'd italicise. The special, not-to-be-messed-with kind.
22:02:20 -!- delta23 has joined.
22:02:53 -!- SpaceDecEva has quit (Quit: Connection closed).
22:06:36 -!- Arcorann has quit (Ping timeout: 256 seconds).
22:14:14 -!- ubq323 has joined.
22:17:36 <fizzie> Sgeo: Oracle acknowledges Forth decompilers. ;)
22:17:38 <fizzie> (In the OpenBoot documentation.)
22:17:38 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
22:18:52 <fizzie> IntelliJ IDEA has a built-in Java decompiler, I think that's the closest to one having "official" status, though of course just having the (presumably?) most popular Java IDE bundle one is not exactly the same.
22:33:06 -!- ais523 has joined.
22:34:20 <ais523> does the `volatile` keyword do anything useful nowadays? C compilers don't seem to allow for out-of-order execution when compiling it
22:34:46 <ais523> I tested the program «volatile int a; volatile int b; int main(void) { int a2 = a; int b2 = b; return a2 + b2; }»
22:35:44 <ais523> clang compiles it (at -O3) to movl a(%rip), %eax; addl b(%rip), %eax
22:36:11 <ais523> and gcc to movl a(%rip), %eax; movl b(%rip), %edx; addl %edx, %eax
22:36:19 <ais523> (plus the usual function prolog/epilog)
22:36:25 <ais523> both of them missed the lfence :-(
22:37:36 <ais523> not sure why I'm ranting here, I guess #esoteric is a good default channel for this sort of thing
22:40:02 <ais523> I guess machine code is basically an esolang of its own at this point
22:40:40 <ais523> it doesn't act like most people expect it to, and it's pretty much unreadable
22:41:40 <ais523> and it doesn't follow any of the major programming paradigms either, it's sort-of imperative but the order in which the commands are written doesn't really reflect the order in which they execute
22:41:44 <shachaf> volatile doesn't imply a memory fence, does it?
22:41:58 <ais523> well it has to mean something
22:42:00 <shachaf> If you want a fence you can write one.
22:42:13 <ais523> from my point of view, the C source says "load a before b"
22:42:25 <ais523> and the resulting machine code specifies two simultaneous loads
22:42:25 <fizzie> Yeah, it definitely doesn't mean that.
22:42:37 <fizzie> I don't think volatile has ever been fully defined in the standard. C11 atomics are rather more explicit about the model, though I don't think even those impose much of anything on loads of two unrelated atomic variables.
22:42:59 <kmc> volatile is still useful if reading or writing a memory location has a side effect
22:43:15 <kmc> which is common in the embedded world
22:43:26 <fizzie> Yeah, really what I think `volatile` is supposed to mean is "this is some kind of hardware register".
22:43:26 <ais523> if reading the memory had a side effect, I would expect the compiler to ensure that the memory was read in the order specified in the program
22:43:35 <kmc> https://gcc.godbolt.org/z/bKe3TP
22:43:44 <kmc> note how the read from reg1 is hoisted out of the loop, but the read from reg2 is not
22:43:59 -!- mmmattyx has quit (Quit: Connection closed for inactivity).
22:44:01 <shachaf> I think in that case volatile should mean something like, it'll emit the read instruction at the place you read from the variable.
22:44:15 <shachaf> As opposed to moving it out of a loop, for instance.
22:44:25 <kmc> (-Os might be clearer than -O3)
22:44:37 <ais523> kmc: that's only at the asm level, though; at the hardware level, that assembly language only reads reg2 once
22:44:52 <fizzie> In fact, there's a (non-normative) note where it deals with atomics which says that "the 'volatile as device register' semantics have not changed in the standard", not that that's all too clear.
22:44:53 <kmc> I mean, that depends on what the hardware is
22:45:11 <ais523> that's x86-64 you wrote, there's a specification for what memory read instructions do
22:45:21 <kmc> if the hardware is such that reading from reg2 has an important side effect then you can bet the hardware will perform that effect every time
22:45:28 <ais523> there are implicit store fences almost everywhere, but implicit laod fences almost nowhere
22:45:38 <kmc> okay. i didn't mean the example to be specific to x86-64
22:45:58 <kmc> anyway, yes volatile is still useful, especially in embedded, but it's not a substitute for fences or atomics
22:46:02 <ais523> it's possible for the kernel to configure the page tables so that a specific memory address has an implicit lfence, in addition to an implicit sfence
22:46:08 <kmc> it's more about synchronizing your code with respect to hardware, not with respect to other code
22:46:25 <ais523> kmc: I'm assuming a single-threaded program here
22:46:32 <ais523> just one that needs to read the memory address multiple times for some reason
22:47:02 <ais523> actually, if you're reading the same address twice, I don't think even lfence is sufficient, you would have to use clflush
22:47:14 <ais523> in order to get the processor to actually send two reads to the memory controller
22:47:18 <kmc> though also consider the case of a signal handler or callback which writes a flag
22:47:32 <kmc> in a single-threaded program
22:47:52 <ais523> in which case, you use volatile sig_atomic_t to specify that the flag should be written in a single machine instruction
22:48:18 <ais523> and that the program that reads the code needs to reload it in case the signal handler has written it
22:48:24 <kmc> yeah. volatile isn't meant to do anything to defeat transparent hardware caches
22:48:48 <kmc> in the embedded world if you're using a volatile variable then it's probably in uncached memory to begin with
22:49:09 <ais523> this is interesting because what the signal handler actually wants is an atomic variable, not a volatile variable, but signal handlers were invented before atomics were
22:50:02 <ais523> (I think the correct atomicity for this is "relaxed", not "sequentially consistent", isn't it? because all you care about is that you will correctly re-read a value that the same thread previously wrote)
22:50:59 <ais523> (or "release" if the signal handler is writing non-atomically into a buffer in order to send information to the main code)
22:51:47 <ais523> on a side note, I'm impressed by what -O3 did to sum1
22:52:00 <ais523> it multiplies by 5 before the loop, then by 2 when it adds it to sum2
22:53:18 <ais523> both times with a three-argument lea (which uses a lot of processor resources but isn't actually slow if you aren't doing much in parallel with it)
22:54:14 <Sgeo> Is it just me or does regsvr42 suck?
22:54:14 <ais523> actually I think it's wrong, though, it should imul before the loop because imul is capable of running in the background, then you can do a simple add after the loop which is faster than the lea
22:54:29 <Sgeo> (I might just add the features I need to it though)
22:55:58 <ais523> I've spent something like the past 3 days in despair at the state of current compilers
22:56:16 -!- delta23 has quit (Remote host closed the connection).
22:56:16 <ais523> the general problem is that they're applying optimisations without an understanding of the contexts in which they're useful
22:56:50 <ais523> like, multiplies are slow, but a multiply before a long chain of additions is effectively free if you don't use the result during the chiain
22:57:23 <ais523> because the multiplier is a different chip component from the adders, it would otherwise be doing nothing, and it will finish the multiplication before the additions finish
22:57:54 <ais523> the only potential issue is the time it would take to load the constant 10 into a register, which is quick but not instantaneous
23:02:26 <kmc> to get those kinds of optimizations you may need a more specific -march / -mtune
23:05:08 <ais523> ah right, yes, I can't remember what's used by default
23:05:33 <ais523> all modern Intel and AMD processors can do background multiplies and pipelined multiplies, but gcc/clang may optimise for something older by default
23:36:52 <ais523> oh, that reminds me, I recently discovered why libm isn't just part of libc
23:37:15 <ais523> it's so that you can swap out the implementation of the floating-point functions to match the FPU of the processor you're on
23:37:37 <kmc> ah that's good
23:38:34 <ais523> presumably that requires dynamic linking to make sense
23:39:34 <ais523> and probably it doesn't make sense on x86-64 nowadays because AVX1 has been around pretty much forever and there's no advantage from using anything newer when it comes to straightforward functions like sin and tan
23:39:55 <ais523> the sorts of things that benefit from AVX2, etc., don't appear in libm anyway
23:40:08 <ais523> I guess it might become useful if 128-bit floating point ever gets hardware support
23:41:17 <kmc> thicc floats
23:44:56 <ais523> actually, even then, it wouldn't, because a new size of float would imply a new calling convention for functions that took long doubles as arguments
23:45:14 <ais523> so the two libms wouldn't be binary compatible and you wouldn't be able to swap them out
23:45:16 -!- ArthurStrong has joined.
23:46:39 <esowiki> [[Parse this sic]] M https://esolangs.org/w/index.php?diff=80186&oldid=80185 * Digital Hunter * (-18) /* Commands and keywords */
23:55:18 <ais523> oh, someone here was asking about alignment a while back
23:55:52 <ais523> I think the situation on modern Intel x86-64 (probably also AMD) is that most alignments are fast, but there are occasional bad alignments that will slow things down
23:56:59 <ais523> the most notable in terms of data is that it takes twice as long to access memory that crosses a page boundary (normally 4096 bytes), e.g. you don't want to store a 64-bit value at an address like 0x3FFE
23:57:42 <ais523> with instructions, alignment can matter a lot more, but the details are very complicated and there's no obvious good alignment in many cases
23:58:12 <ais523> (although it's generally accepted that it's better for jump targets to be towards the start rather than the end of a 16-byte block, even that doesn't always seem to have an effect)
23:59:37 <ais523> anyway, in terms of main memory, bad alignments are rare and very spaced out, so if you're accessing memory in a loop, you would need to access a very large amount of memory before the cumulative effect of misaligned accesses is worse than the amount of time it took you to align your memory
23:59:57 <ais523> alignment was important on some older processors, though