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 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 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 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 Let's see if some plus signs can remove the false positives with only my given name. 01:07:52 Oh yeah, I forgot. Without plus signs it also finds my homepage. 01:08:21 And some bug reports to perl. 01:08:37 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 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 It apparently even finds an email on the sqlite mailing list. 01:10:16 With plus signs it finds very few results, but they include a bug report to texinfo. 01:10:50 let me see with quotation marks, and swapped with quotation marks. 01:17:27 I am mostly satisfied with what I'm seeing. 01:20:48 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 Obviously I also find other scholarly articles that cite my articles. 01:23:15 quotation marks actually help find more relevant hits 01:24:21 [[Tarflex]] M https://esolangs.org/w/index.php?diff=80134&oldid=73745 * PythonshellDebugwindow * (+2) /* Quine */ fix header level 01:25:47 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 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 "sv", actually. 01:30:43 ah yes 01:30:43 (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 (Even when the language is strongly associated with a specific country, I mean.) 01:31:11 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 I'll have to look at what it is 01:32:21 it's from 2011 01:33:36 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 as in, should be an error handled gracefully with an error message 01:34:41 (it's old, the bug has been fixed in 2014) 01:35:44 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 there's a lot of perl-related stuff 01:38:27 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 [[User:Robolta]] https://esolangs.org/w/index.php?diff=80135&oldid=74422 * Robolta * (+12) /* Created Esolangs */ 02:05:55 [[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 [[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 [[Language list]] M https://esolangs.org/w/index.php?diff=80138&oldid=80071 * Robolta * (+18) Added Patternfuck 03:04:58 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80139&oldid=80137 * Robolta * (+1281) 03:08:07 [[User:Robolta]] https://esolangs.org/w/index.php?diff=80140&oldid=80136 * Robolta * (+4) /* Created Esolangs */ 03:09:40 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80141&oldid=80139 * Robolta * (-3) /* Negative to Positive */ 03:10:07 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80142&oldid=80141 * Robolta * (+65) /* Overview */ 03:10:22 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80143&oldid=80142 * Robolta * (+0) /* Overview */ 03:18:52 -!- sftp has joined. 03:20:24 [[Parentheses only]] M https://esolangs.org/w/index.php?diff=80144&oldid=80123 * Hakerh400 * (+46) 03:26:39 [[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 [[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 devising calling conventions is haaard 04:09:26 trying to figure out one for the Parallax Propeller 2, as it doesn't have an official C calling convention 04:19:00 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:19:28 i'm porting LLVM 04:19:29 fun times 04:20:15 i'd have the CC done by now 04:20:17 but 04:20:51 496 allocatable registers that have to be shared with globals and sometimes even code 04:20:51 is just a pain to make a good balance for 04:23:00 i was thinking allocate 120-128 regs, but then i have to figure out how i want to categorize those 04:23:31 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 I am reading about the "PIO" feature in the new RP2040 microcontroller from Raspberry Pi 06:50:03 chapter 3 https://datasheets.raspberrypi.org/pico/sdk/pico_c_sdk.pdf 06:50:20 it is kind of esolang-like 06:50:58 a very simple and limited coprocessor core which is designed for bit-banging protocols 07:02:04 [[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 [[Vyxal]] https://esolangs.org/w/index.php?diff=80148&oldid=80147 * JonoCode9374 * (+527) 07:05:46 [[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 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 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 (though host code can update that memory on the fly, and also send them instructions to execute immediately 07:28:58 ) 07:31:34 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 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 [[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 [[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 [[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 [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80153&oldid=80150 * Quadril-Is * (-71) 10:08:34 [[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 [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80155&oldid=80154 * Quadril-Is * (-28) 10:16:35 [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80156&oldid=80155 * Quadril-Is * (-8) /* Something */ 10:19:29 [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80157&oldid=80156 * Quadril-Is * (+0) /* Something */ 10:19:37 [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80158&oldid=80157 * Quadril-Is * (+2) /* Something */ 10:19:47 [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80159&oldid=80158 * Quadril-Is * (+0) /* Something */ 10:20:12 [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=80160&oldid=80159 * Quadril-Is * (+0) /* Something */ 10:20:21 [[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 [[Special:Log/newusers]] create * Gilbert189 * New user account 12:13:02 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=80162&oldid=80131 * Gilbert189 * (+203) /* Introductions */ 12:56:41 [[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 [[Patternfuck]] M https://esolangs.org/w/index.php?diff=80164&oldid=80145 * Robolta * (+117) /* Fibonacci */ 13:46:09 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80165&oldid=80164 * Robolta * (+1) /* Fibonacci */ 13:47:10 [[Patternfuck]] M https://esolangs.org/w/index.php?diff=80166&oldid=80165 * Robolta * (+22) /* Overview */ 14:07:53 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80167&oldid=80166 * Robolta * (+1312) 14:11:19 [[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 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80169&oldid=80168 * Robolta * (+96) 14:23:19 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80170&oldid=80169 * Robolta * (+1) /* Interpreters */ 14:23:28 [[Patternfuck]] https://esolangs.org/w/index.php?diff=80171&oldid=80170 * Robolta * (-2) /* Interpreters */ 14:30:54 [[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 [[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 [[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 [[Talk:BackFlip]] https://esolangs.org/w/index.php?diff=80175&oldid=80116 * Orisphera * (-1562) /* Arrows are unnecessary */ 15:58:12 [[Talk:BackFlip]] https://esolangs.org/w/index.php?diff=80176&oldid=80175 * Orisphera * (-46) /* Arrows are unnecessary */ 16:01:08 [[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 `olist 1223 17:01:12 olist https://www.giantitp.com/comics/oots1223.html: shachaf oerjan Sgeo FireFly boily nortti b_jonas 17:01:27 Dangit I was reading it and totally forgot to olist 17:04:31 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 [[V]] M https://esolangs.org/w/index.php?diff=80178&oldid=80117 * Bo Tie * (+0) Something is wrong with me 18:02:55 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 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 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 if there's hardware it's not bit-banging! 18:06:55 iirc the reason a lot of people use the beaglebone for stuff is because it has a very good timing generator 18:07:27 if the pi now has one, that's cool for them 18:07:45 Hooloovo0: this isn't the main Raspberry Pi 18:08:02 it's the "RP2040" which is a dual Cortex-M0 microcontroller 18:08:07 sold on a $4 board 18:08:47 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 it's aiming at the same niche as arduino but has a few unusual hardware features 18:09:53 one of which is the PIO state machines I've been discussing 18:10:00 `ping 18:10:00 hmm, looks like I'm disconnected from IRC 18:10:04 pong 18:10:08 b_jonas: you're still here 18:10:37 [[Parse this sic]] https://esolangs.org/w/index.php?diff=80179&oldid=80112 * Digital Hunter * (+269) /* Example programs */ 18:11:34 it's also clocked very fast for a microcontroller (133 MHz) 18:11:52 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 and the core clock PLL and Vcore LDO are both programmable, so it should be overclockable too :3 18:11:57 b_jonas: odd 18:13:07 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 that was years ago of course 18:13:41 apparently you all are on the side closer to the log bot 18:14:28 heh 18:14:54 hmm, it might have been a temporary delay clearing itself up 18:14:54 `ping 18:14:55 pong 18:14:59 yeah, it seems gone now 18:15:17 must have been some temporary hiccup 18:19:03 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 although the fractional clock divider is not an independent PLL but some sigma-delta cycle skipping thing that introduces jitter 18:20:34 apparently other people experienced the problem too on the same server 18:23:00 they can also cause and wait for interrupts 18:23:30 useful when you have DMA, you somehow have to wake up the cpu after reading the whole sector to DMA 18:24:01 yeah 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 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 and those are a non-branded product so there is no reason why they would sell them at a loss 18:56:45 Why am I finding myself fascinated by C#? (Probably because people are now looking at me to maintain a C# project) 18:57:06 It has a REPL now, it's supposedly more cross-platform now 18:57:21 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 that would be interesting, especially if they have a good way to orchestrate communication between the application processor and the microcontroller 19:12:55 something more high level than "here's a UART" 19:13:04 -!- ubq323 has joined. 19:15:15 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 [[Parse this sic]] https://esolangs.org/w/index.php?diff=80180&oldid=80179 * Digital Hunter * (-8) 19:30:33 [[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 ....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 https://github.com/microsoft/win32metadata 19:48:29 > 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 :1:64: error: :1:64: error: parse error on input ‘,’ 20:05:56 Ooh, I think this is a new category of spam for me (not that I follow them so closely). 20:06:10 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 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 [[Parse this sic]] M https://esolangs.org/w/index.php?diff=80182&oldid=80180 * Digital Hunter * (+49) /* Infinite loop */ 20:43:55 [[Truth-machine]] M https://esolangs.org/w/index.php?diff=80183&oldid=80130 * Tetrapyronia * (+49) Added Recursor 20:44:09 [[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 `? #esoteric cookie policy 21:02:01 ​#esoteric cookie policy? ¯\(°​_o)/¯ 21:02:10 `? #esoteric privacy policy 21:02:13 ​#esoteric privacy policy? ¯\(°​_o)/¯ 21:02:19 `? #esoteric terms of services 21:02:21 ​#esoteric terms of services? ¯\(°​_o)/¯ 21:06:39 `? gdpr 21:06:41 gdpr? ¯\(°​_o)/¯ 21:06:45 Aw, nothing snarky. 21:30:37 -!- Deewiant has quit (Ping timeout: 256 seconds). 21:30:55 -!- Deewiant has joined. 21:31:06 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 [[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 Sgeo: Oracle acknowledges Forth decompilers. ;) 22:17:38 (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 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 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 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 clang compiles it (at -O3) to movl a(%rip), %eax; addl b(%rip), %eax 22:36:11 and gcc to movl a(%rip), %eax; movl b(%rip), %edx; addl %edx, %eax 22:36:19 (plus the usual function prolog/epilog) 22:36:25 both of them missed the lfence :-( 22:37:36 not sure why I'm ranting here, I guess #esoteric is a good default channel for this sort of thing 22:40:02 I guess machine code is basically an esolang of its own at this point 22:40:40 it doesn't act like most people expect it to, and it's pretty much unreadable 22:41:40 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 volatile doesn't imply a memory fence, does it? 22:41:58 well it has to mean something 22:42:00 If you want a fence you can write one. 22:42:13 from my point of view, the C source says "load a before b" 22:42:25 and the resulting machine code specifies two simultaneous loads 22:42:25 Yeah, it definitely doesn't mean that. 22:42:37 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 volatile is still useful if reading or writing a memory location has a side effect 22:43:15 which is common in the embedded world 22:43:26 Yeah, really what I think `volatile` is supposed to mean is "this is some kind of hardware register". 22:43:26 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 https://gcc.godbolt.org/z/bKe3TP 22:43:44 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 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 As opposed to moving it out of a loop, for instance. 22:44:25 (-Os might be clearer than -O3) 22:44:37 kmc: that's only at the asm level, though; at the hardware level, that assembly language only reads reg2 once 22:44:52 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 I mean, that depends on what the hardware is 22:45:11 that's x86-64 you wrote, there's a specification for what memory read instructions do 22:45:21 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 there are implicit store fences almost everywhere, but implicit laod fences almost nowhere 22:45:38 okay. i didn't mean the example to be specific to x86-64 22:45:58 anyway, yes volatile is still useful, especially in embedded, but it's not a substitute for fences or atomics 22:46:02 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 it's more about synchronizing your code with respect to hardware, not with respect to other code 22:46:25 kmc: I'm assuming a single-threaded program here 22:46:32 just one that needs to read the memory address multiple times for some reason 22:47:02 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 in order to get the processor to actually send two reads to the memory controller 22:47:18 though also consider the case of a signal handler or callback which writes a flag 22:47:32 in a single-threaded program 22:47:52 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 and that the program that reads the code needs to reload it in case the signal handler has written it 22:48:24 yeah. volatile isn't meant to do anything to defeat transparent hardware caches 22:48:48 in the embedded world if you're using a volatile variable then it's probably in uncached memory to begin with 22:49:09 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 (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 (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 on a side note, I'm impressed by what -O3 did to sum1 22:52:00 it multiplies by 5 before the loop, then by 2 when it adds it to sum2 22:53:18 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 Is it just me or does regsvr42 suck? 22:54:14 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 (I might just add the features I need to it though) 22:55:58 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 the general problem is that they're applying optimisations without an understanding of the contexts in which they're useful 22:56:50 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 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 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 to get those kinds of optimizations you may need a more specific -march / -mtune 23:05:08 ah right, yes, I can't remember what's used by default 23:05:33 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 oh, that reminds me, I recently discovered why libm isn't just part of libc 23:37:15 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 ah that's good 23:38:34 presumably that requires dynamic linking to make sense 23:39:34 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 the sorts of things that benefit from AVX2, etc., don't appear in libm anyway 23:40:08 I guess it might become useful if 128-bit floating point ever gets hardware support 23:41:17 thicc floats 23:44:56 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 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 [[Parse this sic]] M https://esolangs.org/w/index.php?diff=80186&oldid=80185 * Digital Hunter * (-18) /* Commands and keywords */ 23:55:18 oh, someone here was asking about alignment a while back 23:55:52 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 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 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 (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 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 alignment was important on some older processors, though