< 1550966696 219499 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :@wn aegilops < 1550966697 771943 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :*** "aegilops" wn "WordNet (r) 3.0 (2006)" < 1550966697 911574 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Aegilops < 1550966698 62378 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : n 1: goat grass [syn: {Aegilops}, {genus Aegilops}] < 1550966705 536483 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Wordnet puts that in uppercase. < 1550966939 559015 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1550967125 927484 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Opportunistically combining two topics in one, the longest in-order x86 opcodes are 5 letters; there are several (addps, addss, cmovz, cmpps, cmpss, cmpsw, kmovw, knotw, loopz). < 1550967128 985252 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 246 seconds < 1550967129 95166 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1550967268 452529 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(And in fact it's the same length for all the architectures I had in the opcode quiz, unless you also count MMIX's "16addu".) < 1550967310 941401 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :opcode quiz? < 1550967327 768306 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :We were talking about it yesterday, http://zem.fi/2014-04-05-opquiz < 1550967348 880803 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :oh neat < 1550967427 233915 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I'm not good at this < 1550967446 97402 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I'm generally not much better than chance. < 1550967471 821653 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I'm worse than coin-flips < 1550967476 413956 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :I'm not sure what this tells me < 1550967499 855820 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :whoa, http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0593r3.html < 1550967510 370146 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A lot more things are technically UB in C++ than I thought? < 1550967527 574682 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :shachaf: oh yeah, basically everything < 1550967557 337967 :Remavas!~Remavas@unaffiliated/remavas QUIT :Read error: Connection reset by peer < 1550967565 229972 :Remavas-Hex!~Remavas@unaffiliated/remavas JOIN :#esoteric < 1550967625 521097 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I would've thought that struct T { int a, b; }; T *p = (T *)malloc(sizeof (T)); p->a = 5; ... would be OK. < 1550967801 320551 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :C++, or as I like to call it, C plus UB < 1550967825 75833 :Remavas-Hex!~Remavas@unaffiliated/remavas NICK :Remavas-Hex[AFK] < 1550967879 684995 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :what is C++'s deal < 1550969616 294436 :7GHAAAWSQ!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Remote host closed the connection < 1550970449 957905 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: because you didn't check the malloc for null < 1550970467 529816 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :No, even when malloc succeeds. < 1550970473 916366 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: supposedly malloc is allowed to return null I think < 1550970486 467231 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :http://wg21.link/p0593 < 1550970615 642821 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: wait, so malloc-ing any complex type is UB in C++? I'm glad the g++ dev's aren't stupid enough to take advantage of that UB by removing the entire function when that is done < 1550970627 714377 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you don't placement new it or something, apparently? < 1550970791 891948 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :augh < 1550970809 812556 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :maybe i'll just give up on c++ hth < 1550970817 418648 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :huge amounts of technically undefined C++ code exist in my codebase < 1550970842 64104 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :don't worry, only its behavior is undefined < 1550970960 767937 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :because a lot of code relies on being able to mmap arrays of structs and then read them < 1550971383 997977 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: ironically that issue was raised, but apparently not addressed, in 2014... http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1116 ("Additional note, February, 2014") < 1550971418 739838 :int-e!~noone@int-e.eu PRIVMSG #esoteric :also... that page is huge. < 1550971489 829153 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :int-e: so: scrap c++ and go back to c? < 1550971497 785246 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :or a different language < 1550971500 397537 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :please advise < 1550971536 728498 :int-e!~noone@int-e.eu PRIVMSG #esoteric :try some avr assembly < 1550971559 406969 :int-e!~noone@int-e.eu PRIVMSG #esoteric :ACTION could dust off his arduino... hmm... nah. < 1550971622 632114 :int-e!~noone@int-e.eu PRIVMSG #esoteric :You can just give up the illusion of ever writing portable C++ code. < 1550971638 952375 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :how about a language where the compiler+standard don't fight me < 1550971640 872026 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :twh < 1550971834 853213 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Remote host closed the connection < 1550971990 524704 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550972288 522979 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Ping timeout: 255 seconds < 1550973108 742572 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550973135 6067 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Remote host closed the connection < 1550973150 534999 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550973236 669301 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Remote host closed the connection < 1550973325 548527 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550973396 735899 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Read error: Connection reset by peer < 1550973423 210805 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550973677 157683 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Ping timeout: 245 seconds < 1550974250 17455 :oerjan!oerjan@sprocket.nvg.ntnu.no JOIN :#esoteric < 1550974521 117632 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 JOIN :#esoteric < 1550974833 334778 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :You can try other assembly language too < 1550974845 818964 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :zzo38: I'd like to write moderately portable programs, though. < 1550974854 241107 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I mean, I know you don't really need anything except MMIX. < 1550974897 323326 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, then you can use C, or you can write a program for a portable VM (Z-machine, Glulx, NES/Famicom emulators, etc) < 1550974942 498408 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, right. < 1550974953 3787 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I can just write all my programs for NES/Famicom < 1550974961 601083 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do you like this? < 1550974968 184199 :Remavas-Hex[AFK]!~Remavas@unaffiliated/remavas QUIT :Quit: Leaving < 1550974989 903381 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Depend on the program. It is especially good for many kind of game programs, at least. < 1550975037 248519 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What about the kind of game programs that do 3D rendering at 1920x1080 at 60fps? < 1550975144 993125 :danieljabailey!~danieljab@cpc75709-york6-2-0-cust725.7-1.cable.virginm.net JOIN :#esoteric < 1550975149 339290 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Then the resolution is too much for NES/Famicom. (Although also many game is having 3D rendering even without 3D game play geometry, which seems an unnecessary use of 3D rendering to me, in most cases) < 1550975177 249039 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That's true. 2D games are usually better. < 1550975195 156033 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I want a game that has two space dimensions and one time dimension, visualized as a third space dimension. < 1550975198 51061 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do you like this? < 1550975269 763197 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :You could try to make up some kind of game that does that if you want to do, and then see if it is good or isn't. < 1550975300 569144 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1550975513 411065 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: Let's make CDB == "C with Defined Behaviour". just enumerate all types of undefined behaviour in C, and define it < 1550975540 49676 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: I'd love to say that no sane compiler would ever optimize code based on that kind of undefined behavior... but I would have said the same thing about the x + y < x test for overflows (where y is known to be nonnegative) :-( < 1550975541 61491 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :didn't someone do that < 1550975574 233857 :int-e!~noone@int-e.eu PRIVMSG #esoteric :oerjan: gcc, quite infamously < 1550975585 857438 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :int-e which is why both my company and the linux kernel use -fwrapv option < 1550975588 553104 :int-e!~noone@int-e.eu PRIVMSG #esoteric :because the compiler writers didn't back down. < 1550975591 839919 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :um my response was to orin < 1550975599 812250 :int-e!~noone@int-e.eu PRIVMSG #esoteric :oerjan: ah sorry. < 1550975607 983747 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :int-e: I think undefined signed overflow can be justified in some cases? < 1550975614 994764 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Probably not a great default, though. < 1550975617 836862 :int-e!~noone@int-e.eu PRIVMSG #esoteric :oerjan: for once I believe this was not inferrable from context :) < 1550975640 909109 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: I mean the original justification was that some old computers used ones complement < 1550975677 294824 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There are other justifications. < 1550975680 170126 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :int-e: it could be inferrable from the fact i don't type that fast hth htht < 1550975684 241513 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oopes < 1550975684 539750 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: I imagine it was meant to allow signaling overflows... < 1550975697 425971 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Like doing 64-bit arithmetic on a 32-bit integer or something? < 1550975700 865241 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anyway, look, C is a mess. < 1550975704 75300 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Just gotta scrap it. < 1550975707 56121 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What can I use instead of C? < 1550975714 141042 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Maybe LLVM < 1550975724 554463 :int-e!~noone@int-e.eu PRIVMSG #esoteric :oerjan: MAYBE < 1550975725 732676 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: fortran 2003? < 1550975740 571706 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: it's object oriented < 1550975768 824890 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :and gcc supports it < 1550975818 606543 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: Java? < 1550975819 28376 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: also Ada I guess? < 1550975844 814545 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :orin: object oriented automatically rules it out hth < 1550975849 576672 :int-e!~noone@int-e.eu PRIVMSG #esoteric :ACTION runs . o O ( Over The Hills And Far Away ) < 1550975851 487015 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :LLVM doesn't have macros though; one use of macros is to help writing portable programs, since otherwise the program might not be portable < 1550975885 836326 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: well fortran objects are optional < 1550975888 439997 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`wisdom abject < 1550975889 605494 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :That's not wise. < 1550975895 720489 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`quote abject < 1550975896 453235 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :No output. < 1550975898 661485 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :hm < 1550975908 351278 :int-e!~noone@int-e.eu PRIVMSG #esoteric :@google "abject lesson" < 1550975909 442506 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :https://owlcation.com/humanities/abject-lesson-vs-object-lesson < 1550975954 286067 :int-e!~noone@int-e.eu PRIVMSG #esoteric :... that was much better than I hoped for. < 1550975980 625014 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: I think fortran is probably the smoothest drop-in replacement for C < 1550975990 967869 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`? eggcorn < 1550975991 921150 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :eggcorn? ¯\(°​_o)/¯ < 1550976024 461148 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :that was an unusually helpful cookie acceptance menu < 1550976101 509124 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :shachaf: but fortran has UB too, just not as much < 1550976109 936427 :int-e!~noone@int-e.eu PRIVMSG #esoteric :... didn't enable Javascript. No menu. > 1550976183 710990 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60050&oldid=60039 5* 03A 5* (+30) 10 < 1550976206 738877 :orin!~oren@ec2-18-212-11-99.compute-1.amazonaws.com PRIVMSG #esoteric :I guess there is rust, which prevents alot of runtime errors by creating lots of compile time errors < 1550976223 271037 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :zzo38: I've tried to create a Truth-machine for Stoned Go (nice concept!): (+1[]?)+2[|+1()]-1()-2[]+2[]+2()-1+1()+0-4[]+0+2 then append [] black for input 0 , () white for input 1. Output to be read from the column below the last stone placed. I'm abusing / misunderstanding the loop | section, but I'm not sure how else to conditionally loop, unless I set up a naturally looping capture configuration, but then I believe there are Go < 1550976277 946238 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :salpynx: It is meant there is no conditional loop; only the entire program can be looped (although the initialization part only runs the first time) < 1550976407 987306 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :I was "innovating" and was hoping each code block inside brackets could have an init and loop portion [|] < 1550976426 542854 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(There are other esolangs too, where the entire program runs in a loop; it is same here) < 1550976512 307838 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`thanks ants < 1550976513 93121 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Thanks, ants. Thants. < 1550976565 187608 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :I'll try to get the same effect another way, but wanted to suggest it in case you thought it was a good idea (code blocks being full programs too) < 1550976592 238050 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :salpynx: i think your long message got cut off < 1550976601 83769 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :salpynx: That could be a variant, I suppose < 1550976622 251777 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550976665 600701 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION only knows how to fix that in irssi < 1550976683 833544 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :oerjan: ah, yes, thanks! "I believe there are Go rules to prevent that." < 1550976737 958638 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :The rules prohibiting repeated positions do not apply here. < 1550976742 324709 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Perhaps I should mention) < 1550976750 41242 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :"A stone may not be played so as to recreate a previous board position with the same player to play again". Not that stoned go has multiple players < 1550976792 177890 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :Probably good to mention, I felt bound by it even though it was not mentioned as a restriction < 1550976880 236585 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Ping timeout: 246 seconds < 1550977014 941776 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :I seem to enjoy writing Truth-machines for IO limited esolangs. > 1550977033 790505 PRIVMSG #esoteric :14[[07Stoned-Go14]]4 10 02https://esolangs.org/w/index.php?diff=60051&oldid=60046 5* 03Zzo38 5* (+681) 10 < 1550977169 432640 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :zz038: thanks! Also for the / command. When I wrote my above code it didn't exist and I was using +0 for the same effect < 1550977372 673096 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :I tried a while ago to write a truth-machine in Thue-Mirr but got frustrated making bigger and bigger layouts that didn't do what I wanted, then losing track of the positions. < 1550977440 238642 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I don't know what is even possible with Thue-Mirr; it seems to be chaotic to me < 1550977448 37615 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :I'd need an interpreter to make more progress, paper and pencil didn't get me anywhere < 1550977498 125270 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 PRIVMSG #esoteric :yeah, I thought just trying semi-random input and see what happens would be a good way to get a feel for what is possible > 1550978340 153175 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60052&oldid=60050 5* 03A 5* (+372) 10 > 1550978405 869052 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60053&oldid=60052 5* 03A 5* (+17) 10 > 1550978490 557121 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60054&oldid=60053 5* 03A 5* (-17) 10/* Turing-completeness */ > 1550978512 710237 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60055&oldid=60054 5* 03A 5* (+29) 10 > 1550978751 956472 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60056&oldid=60055 5* 03A 5* (-89) 10/* 99 bottles of beer program (currently incomplete) */ > 1550978767 304783 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60057&oldid=60056 5* 03A 5* (+0) 10 > 1550978781 66196 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60058&oldid=60057 5* 03A 5* (-30) 10/* 99 bottles of beer program (currently incomplete) */ < 1550979300 859650 :xkapastel!uid17782@gateway/web/irccloud.com/x-epkgmrettokxcpie QUIT :Quit: Connection closed for inactivity > 1550979302 173614 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60059&oldid=60058 5* 03A 5* (+261) 10/* 99 bottles of beer program (currently incomplete) */ > 1550979694 957927 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60060&oldid=60059 5* 03A 5* (+144) 10/* 99 bottles of beer program (currently incomplete) */ > 1550979898 995404 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60061&oldid=60060 5* 03A 5* (+49) 10/* 99 bottles of beer program (currently incomplete) */ > 1550979964 962737 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60062&oldid=60061 5* 03A 5* (+24) 10/* 99 bottles of beer program (currently incomplete) */ > 1550980428 123383 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60063&oldid=60062 5* 03A 5* (+274) 10 > 1550980844 967156 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60064&oldid=60063 5* 03A 5* (+1) 10/* 99 bottles of beer program (currently incomplete) */ > 1550981054 720962 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60065&oldid=60064 5* 03A 5* (+85) 10/* 99 bottles of beer program (currently incomplete) */ > 1550981216 295377 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60066&oldid=60065 5* 03A 5* (+76) 10/* 99 bottles of beer program (currently incomplete) */ > 1550981240 19272 PRIVMSG #esoteric :14[[07Assembly language14]]4 10 02https://esolangs.org/w/index.php?diff=60067&oldid=60066 5* 03A 5* (+4) 10/* 99 bottles of beer program (currently incomplete) */ > 1550981330 336654 PRIVMSG #esoteric :14[[07Lenguage14]]4 10 02https://esolangs.org/w/index.php?diff=60068&oldid=40885 5* 03Cortex 5* (+91) 10 < 1550982053 550066 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :^bf ,[.,]!`le/rn philosophical zombie//Philosophical zombies are everyone in this channel except me. < 1550982053 632958 :fungot!~fungot@2a01:4b00:82bb:1341::2 PRIVMSG #esoteric :`le/rn philosophical zombie//Philosophical zombies are everyone in this channel except me. < 1550982056 58925 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Learned 'philosophical zombie': Philosophical zombies are everyone in this channel except me. < 1550982134 166226 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` hoag | grep '^' < 1550982136 632321 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​ le/rn philosophical zombie//Philosophical zombies are everyone in this channel except me. \ list `list < 1550982160 426151 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` hoag | grep '^' < 1550982162 801803 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​ list \ run echo 'lambdabot: @where hackegoloop' >lambdabotloop < 1550982228 765911 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`1 hoag | awk '{print substr($1,2,length($1)-2)}' | sort | uniq -c | sort -rn < 1550982231 511043 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :1/10: 3359 oerjän \ 1362 shachäf \ 609 ellioẗt \ 426 b_jonäs \ 396 boil̈y \ 357 hppavilion[1̈] \ 335 int-̈e \ 314 fizzïe \ 226 Jafët \ 222 tsweẗt \ 203 ais52̈3 \ 177 GreyKnigḧt \ 175 wob_jonäs \ 165 km̈c \ 162 rdocöc \ 148 Tanëb \ 144 zgrëp \ 138 Rouj̈o \ 113 mromän \ 107 moon̈_ \ 102 mroman̈_ \ 98 Phantom_Hoovër \ 97 Bik̈e \ < 1550982235 79640 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :10?! < 1550982237 959322 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`n < 1550982238 696034 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :2/10: 92 nortẗi \ 90 noood̈l \ 88 izaber̈a \ 85 FireFl̈y \ 74 coppr̈o \ 71 olsnër \ 68 Sgëo \ 64 mrhmous̈e \ 54 hagb4r̈d \ 52 monq̈y \ 52 Gregör \ 50 c00kiemon5tër \ 49 itidus2̈1 \ 48 Zarutiän \ 48 ThatOtherPersön \ 45 \oren̈\ \ 44 moon_̈_ \ 43 Moon̈_ \ 40 zzo3̈8 \ 38 guestböt \ 37 ran̈c \ 37 iön \ 36 FreeFul̈l \ < 1550982250 955304 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`n < 1550982252 179264 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :3/10: 33 Elronn̈d \ 32 quintopïa \ 31 xfïx \ 30 moonythedwar̈f \ 30 hppavilion̈1 \ 27 mnoq̈y \ 27 Hjull̈e \ 23 __kerbal__̈_ \ 22 orën \ 22 Moon_̈_ \ 22 blottër \ 22 alercäh \ 18 Sgeö_ \ 18 pikḧq \ 17 ZombieChenëy \ 16 Dongër \ 15 Kaynaẗo \ 15 gameman̈j \ 14 oren̈_ \ 13 moon̈y \ 12 zui438̈s \ 12 prooftechniqüe \ 12 < 1550982494 63737 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`n 10 < 1550982494 693472 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :10/10: 1 a`a`a`a`jo8äs \ 1 a`a`a`a`jo7äs \ 1 a`a`a`a`jo6äs \ 1 a`a`a`a`jo5äs \ 1 a`a`a`a`jo4äs \ 1 a`a`a`a`jo2äs \ 1 a`a`a`a`jo1äs \ 1 a`a`a`̈a \ 1 < 1550982502 49970 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :obviously < 1550982519 720499 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`n 7 < 1550982520 450728 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :7/10:ybdën \ 2 tswetẗ_ \ 2 Taneb|Hovercraf̈t \ 2 spiriẗy \ 2 sleff̈y \ 2 singingbanan̈a \ 2 salpyn̈x \ 2 oklopöl \ 2 noog̈a \ 2 mushroöm \ 2 Moon__̈- \ 2 monoton̈e \ 2 lezsakdom̈i \ 2 lexand̈e \ 2 lambdaböt \ 2 hppavilion1̈_ \ 2 greyooz̈e \ 2 fungöt \ 2 fcraẅl \ 2 carad̈o \ 2 a`a`a`a`jo3äs \ 1 Warrigal < 1550982533 918371 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :yikes, what happened to the encoding there? < 1550982539 872000 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`n 7 | xxd < 1550982540 299055 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :shocking < 1550982540 569642 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :7 | xxd/10:/bin/sed: -e expression #1, char 3: unknown command: `|' < 1550982543 959131 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` n 7 | xxd < 1550982544 633139 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/hackenv/bin/`: line 5: xxd: command not found < 1550982565 88153 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess the obvious thing happened < 1550982595 935701 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It got cut off mid-code-unit and so my IRC client interpreted that as ISO-8859-1 or whatever encoding it uses when a thing isn't valid UTF-8 < 1550982618 924944 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`thanks irc < 1550982619 957078 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Thanks, irc. Thirc. < 1550982643 448169 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh right < 1550982660 595849 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(mine too) < 1550982679 905342 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That is the de facto standard for how IRC encoding works. < 1550982686 598686 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` n 7 | hexdump < 1550982687 472131 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0000000 2f37 3031 793a 6462 cc65 6e88 5c20 2020 \ 0000010 2020 2020 3220 7420 7773 7465 cc74 5f88 \ 0000020 5c20 2020 2020 2020 3220 5420 6e61 6265 \ 0000030 487c 766f 7265 7263 6661 88cc 2074 205c \ 0000040 2020 2020 2020 2032 7073 7269 7469 88cc \ 0000050 2079 205c 2020 2020 2020 2032 6c73 6665 \ 0000060 cc66 7988 5c20 2020 2020 2020 3220 7320 \ 0000070 6e69 6967 676e 6162 616e cc6e 6188 5c20 \ 0000080 2020 2020 2020 3220 7320 6c61 7970 cc6e \ 0000090 78 < 1550982689 83571 :FreeFull!~freefull@defocus/sausage-lover QUIT : < 1550982797 33498 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :...endianness, tdnh < 1550982809 955626 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :When I'm emperor I'm going to ban big endian. < 1550982815 628829 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i vaguely recall handling this is a feature request i've previously refused < 1550982836 482787 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :are you refusing feature requests on shaventions now < 1550982838 478994 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :tdh < 1550982851 253126 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess you rewrote the thing that breaks lines up or something? I don't remember. < 1550982852 623051 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :yw < 1550982857 659094 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :yeah < 1550982891 76181 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Also on my list of things to ban: Long stack traces. < 1550982893 142609 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i made it break more accurately, but it doesn't care about utf-8 sequences < 1550982902 636053 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That'll take care of both Java and recursion. < 1550982911 883059 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :sounds like a plan < 1550982933 340635 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :fizzie: Can we send commits directly to HackEso instead of doing through IRC? < 1550982941 468724 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'll just rewrite everything in C. It'll be great. < 1550982948 908440 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :it < 1550983116 383614 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550983392 379147 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Ping timeout: 250 seconds < 1550984270 107367 :arseniiv!~arseniiv@94.41.3.137.dynamic.ufanet.ru JOIN :#esoteric > 1550985403 134517 PRIVMSG #esoteric :14[[07Pyhton (sic)14]]4 N10 02https://esolangs.org/w/index.php?oldid=60069 5* 03Something Fawful 5* (+7346) 10Added new Esolang that I created recently. > 1550985857 120551 PRIVMSG #esoteric :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=60070&oldid=60048 5* 03Something Fawful 5* (+32) 10/* P */ added Pyhton [sic] to the list. < 1550986254 243426 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I think small endian is generally better, but do not intend that big endian will be banned < 1550986407 504731 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Knuth seems to prefer big endian, as far as I can tell) < 1550986589 816561 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Why? < 1550986662 977017 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Do you mean why Knuth prefer big endian? < 1550986724 89958 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1550986747 844497 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I don't know why < 1550986974 51451 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Glulx is also big endian, and Z-machine is big endian (although version 3 Z-code can be big endian or small endian, but small endian was never used), and OASYS does not define endianness (OAI requires the endianness and int size to match the computer it is running on, although my own implementation of OASYS doesn't care), and TAVERN has no run-time endianness but the story file is small-endian except lump sizes are PDP-endian. < 1550987144 52461 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Free Hero Mesh also has no runtime endianness, but binary files in a puzzle set use small endian (except lump sizes in a Hamster archive, which are PDP-endian) < 1550987169 951804 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Knuth's MIX seems to have no endianness, although MMIX uses big endian. < 1550988741 281339 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Sometimes if aplay is interrupted when the audio is almost finished playing, I get a error message that says: Assertion 'pthread_mutex_destroy(&m->mutex) == 0' failed at pulsecore/mutex-posix.c:81, function pa_mutex_free(). Aborting. < 1550989144 412970 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :it's a feature hth < 1550989590 516070 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550989865 548040 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Ping timeout: 255 seconds < 1550991928 958286 :oerjan!oerjan@sprocket.nvg.ntnu.no QUIT :Quit: Nite < 1550993632 67835 :xkapastel!uid17782@gateway/web/irccloud.com/x-ifcrlcnuxoqmkaxr JOIN :#esoteric < 1550993922 67589 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1550995390 345118 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :zzo38: no, I read 7.1.3 as not expecting a clear preference either way between little-endian and big-endian. < 1550997899 590540 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :oh, an opcode quiz. let me try that. thanks, fizzie. < 1550998008 144571 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :aeyxa, kmc: https://esolangs.org/logs/2019-02-18.html#ldi for list of words whose letters are sorted alphabetically < 1550998192 899638 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ooh, that's hard < 1551000473 953278 :AnotherTest!~turingcom@d51A4B8E1.access.telenet.be JOIN :#esoteric < 1551001226 762452 :xkapastel!uid17782@gateway/web/irccloud.com/x-ifcrlcnuxoqmkaxr QUIT :Quit: Connection closed for inactivity < 1551001946 343578 :salpynx!794954f8@gateway/web/freenode/ip.121.73.84.248 QUIT :Quit: Page closed < 1551004307 941134 :Phantom_Hoover!~phantomho@cpc108439-cowc8-2-0-cust785.14-2.cable.virginm.net JOIN :#esoteric < 1551004308 20976 :Phantom_Hoover!~phantomho@cpc108439-cowc8-2-0-cust785.14-2.cable.virginm.net QUIT :Changing host < 1551004308 21046 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1551005216 321420 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? this page < 1551005217 451932 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :This page is under construction. < 1551005380 265231 :rain1!~My_user_n@unaffiliated/rain1 PRIVMSG #esoteric :There is a mastodon account that posts random screenshots of ZZT games, quite fun to see all sorts of random ones < 1551005397 313131 :rain1!~My_user_n@unaffiliated/rain1 PRIVMSG #esoteric :https://botsin.space/@worldsofzzt < 1551005488 424245 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? manometer < 1551005489 472401 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :A manometer is a device for testing real men by putting them under pressure. < 1551005652 900915 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`learn o is a popular comedy fantasy webcomic. It's about a group called the Order of the Stick, as they go about their adventures with minimal competence, and eventually stumble into a plan by an undead sorcerer to conquer the world, and they're out to stop him and conquer their personal problems at the same time. Hopefully not in that order. < 1551005655 372816 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Relearned 'o': o is a popular comedy fantasy webcomic. It's about a group called the Order of the Stick, as they go about their adventures with minimal competence, and eventually stumble into a plan by an undead sorcerer to conquer the world, and they're out to stop him and conquer their personal problems at the same time. Hopefully not in that order. < 1551008614 78518 :Essadon!~Essadon@81-225-32-185-no249.tbcn.telia.com JOIN :#esoteric < 1551008650 965191 :Essadon!~Essadon@81-225-32-185-no249.tbcn.telia.com QUIT :Max SendQ exceeded < 1551010020 722585 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? h4gb4rd < 1551010022 465310 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :hagb4rd is one spacey fellow. Spaaaaaaaaaaaaaaace. < 1551010022 614700 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? hagb4rd < 1551010024 656497 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :hagb4rd is one spacey fellow. Spaaaaaaaaaaaaaaace. < 1551010026 669620 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :hmm < 1551010062 268304 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :just how many dups are there? < 1551010076 445688 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` sha256sum wisdom/* | sort | uniq -D < 1551010077 484398 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :sha256sum: wisdom/8: Is a directory \ sha256sum: wisdom/le: Is a directory \ sha256sum: 'wisdom/'$'\302\257''\('$'\302\260''_o)': Is a directory \ sha256sum: 'wisdom/'$'\302\257''\('$'\302\260\342\200\213''_o)': Is a directory \ sha256sum: 'wisdom/'$'\302\257''\_('$'\343\203\204'')_': Is a directory < 1551010082 441448 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :oh gtf < 1551010169 655866 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` ls -ld wisdom/h?gb?rd < 1551010170 538065 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :lrwxrwxrwx 1 1000 1000 7 Jul 8 2017 wisdom/h4gb4rd -> hagb4rd \ -rw-r--r-- 1 1000 1000 51 Jul 8 2017 wisdom/hagb4rd < 1551010173 705379 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :oh, it's a symlink! < 1551010294 411370 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1551010382 679487 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` set -e; cd wisdom; find -type l -printf "%p -> %l\n" < 1551010383 572961 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​./СССР -> ссср \ ./the usual suspect -> usual suspect \ ./perpetuum mobile -> perpetual motion machine \ ./r.i.p. -> rip \ ./☆ -> * \ ./h4gb4rd -> hagb4rd \ ./issue -> .doorstop \ ./the reals -> real \ ./off by two error -> off by two \ ./wolfram -> stephen wolfram < 1551010385 541029 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 255 seconds < 1551010415 793310 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? doorstop < 1551010416 956504 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :doorstop? ¯\(°​_o)/¯ < 1551010418 733357 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? issue < 1551010419 818018 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :You do not have the clearance necessary to view this entry. < 1551010424 392091 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? .doorstop < 1551010425 464444 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :You do not have the clearance necessary to view this entry. < 1551010434 421179 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1551012009 801399 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :shachaf: I'm not sure if that's in the spirit of the thing. < 1551012304 655216 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :is it "resemblance" or "resemblence"? wisdom/ance is truncated too short, it's not in there < 1551012344 872500 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :resistance, resilience, < 1551012369 693339 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :repungance, resemblance. there it is < 1551012974 354385 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? bent-bill knot-hatch < 1551012975 348546 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :bent-bill knot-hatch? ¯\(°​_o)/¯ < 1551014114 310935 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? associate degree < 1551014115 384074 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :associate degree? ¯\(°​_o)/¯ < 1551014118 731406 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? ass. phd < 1551014119 931996 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :ass. phd? ¯\(°​_o)/¯ < 1551014120 813138 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :hmm < 1551014337 511378 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric < 1551018548 210658 :Essadon!~Essadon@81-225-32-185-no249.tbcn.telia.com JOIN :#esoteric < 1551019211 431365 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Remote host closed the connection < 1551019385 895085 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? canaima < 1551019387 160072 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Canaima is a secret Venezuelan project to overrun #esoteric with incomprehensible people who have no idea why they're here. < 1551020029 68527 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1551021451 769254 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :rain1: It is look like they are not making invisible walls to be invisible. < 1551026999 456761 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Huh, how have I missed out on hg histedit for all this time? It's basically the same as git rebase --interactive... and I've been missing that a lot. < 1551028034 812595 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Read error: Connection reset by peer < 1551028217 778309 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1551029264 733073 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :fizzie: Can you figure out a way to make it in the spirit? < 1551029554 586801 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :shachaf: I don't know, maybe I could make a built-in command like `fetch, except `patch (to pull in a diff to apply from a URL) or `pull (to pull a commit from a hg repo). I'd like it to have the usual safeguards, like the .hgignore handling and stuff. < 1551029806 411672 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :you could just download the patch to tmp with a fetch, then apply it with a command. that's two lines, but that's not too big of a problem, right? < 1551029834 519263 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :uses of fetch usually work like that < 1551029840 928257 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :because you can't do much with just fetch < 1551030076 855018 :xkapastel!uid17782@gateway/web/irccloud.com/x-umehqyighwkhjnps JOIN :#esoteric < 1551030110 998943 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :All the uses of `fetch I've seen have basically just updated a single "binary" or a data file. < 1551030139 774021 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :But it's true that you should be able to apply a patch via fetching to tmp. < 1551030155 124722 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :what if there was a directory you could edit in real-time < 1551030180 118457 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 JOIN :#esoteric < 1551030211 451893 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: I think I fetched a targz at least once < 1551030216 187176 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :and I think we have a working xz < 1551030231 495858 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` xz --help < 1551030232 352297 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Usage: xz [OPTION]... [FILE]... \ Compress or decompress FILEs in the .xz format. \ \ -z, --compress force compression \ -d, --decompress force decompression \ -t, --test test compressed file integrity \ -l, --list list information about .xz files \ -k, --keep keep (don't delete) input files \ -f, --force force overwrite of output file and (de)compress links \ -c, --stdout write to standard o < 1551030239 13504 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :so you could download a tarxz too < 1551030275 143252 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :admittedly I also fetched single files, like M:tG comp rules texts or yawgatog oracle dumps, for clarity of the commands < 1551030298 107838 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I guess you do have to provide your own URL though. It's not as convenient as just pushing a commit. < 1551030347 144258 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :well, you don't have to use fetch. you can also break up the patch in irc-line long chunks and tunnel it to hackeso < 1551030353 736877 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :but that's not very convenient, and freenode might ban you < 1551030380 401661 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :there was also a web interface that let you http upload text I think < 1551030383 352798 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :you could use that < 1551030409 156110 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :if there also a mail interface where you send commands and you receive the response? < 1551030413 327906 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Other way to do would be listen to one port on the server that you can write a filename and then upload all of the data and then close the connection, and then on the IRC you can move the file from the temporary "incoming" directory to where you want it and give it the filename you want. < 1551030641 134543 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric : https://twitter.com/x86instructions/status/1099115314766401536 "JTNJ - Jump To Next JTNJ" ← that's basically an ASM version of literate programming, isn't it? having a "toggle comment" marker is pretty much the hallmark of a literate programming language, and that's pretty much what JTNJ does in practice < 1551030702 10040 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :ais523_: I think that if the instruction is encoded then, you might not know what is another instruction or just some other data, unless it is defined as a macro. < 1551030807 324863 :int-e!~noone@int-e.eu PRIVMSG #esoteric :To be even marginally useful, the instruction should jump to the instruction *following* the next JTNJ. < 1551030880 757835 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: I don't think it's the hallmark of a literate programming language. C has a toggle comment, /*/ , and I don't think that makes it literate programming. < 1551030890 410641 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric : ais523: Were you the person who suggested something like, there should be a kind of struct in C that can only exist as an lvalue, not an rvalue? ← I don't remember saying that, but it's the sort of thing I'm interested in so maybe I did < 1551030913 729061 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: hmm, that might be an interesting style for writing a C program in < 1551030928 129798 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :really, a language being literate isn't a property of the language, but of how it's used < 1551030932 121190 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( "fault on first non-X-mapped page beyone RIP" ) < 1551030940 573878 :int-e!~noone@int-e.eu PRIVMSG #esoteric :*beyond < 1551030963 959780 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :does RIP here mean "64-bit instruction pointer" or "rest in peace"? < 1551030973 256510 :int-e!~noone@int-e.eu PRIVMSG #esoteric :yes. < 1551030985 980148 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(the former was the intended meaning) < 1551031116 796765 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric : Is the new article I added on esolang wiki good yet? ← you've defined the two possible current directions as "vertical" and "horizontal", then you have commands for moving in the current direction or the opposite of the current direction, but it matters whether the current direction is left or right, or up or down, due to the tiebreak for when a large group is captured < 1551031173 18657 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :also, the syntax for the inner loop variant is just weird, as | affects the whole block that contains it but the location of the | within the block doesn't seem to matter < 1551031235 134976 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? sober space < 1551031236 256615 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Sober spaces are the dual of Stoned spaces. Taneb invented them. < 1551031238 693690 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? stoned space < 1551031239 874431 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :stoned space? ¯\(°​_o)/¯ < 1551031241 865299 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :`? stone space < 1551031242 721963 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :ais523_: Ah, yes, but, negative numbers are the top left (perhaps should mention) for if multiple trigger programs are executed. Also, the | in the inner loop variant is supposed to still have the initialization part and loop part, although maybe it is not clear < 1551031242 852391 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Stone spaces were invented by P. T. Barnum as a hoax. < 1551031272 727842 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523_: Or maybe just some some structs shouldn't be assignable by value or something. < 1551031299 941954 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :oh right, I was definitely suggesting something that played around in that space < 1551031302 567114 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anyway I think I thought it was kind of silly but now I'm more sympathetic to it. < 1551031361 954567 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :shachaf: rust has structs that aren't assignable by value these days, non-Sized ones < 1551031426 264424 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :you also notionally have them in C, where you technically can copy the struct, but it's not really meaningful, because it's not the full struct, just a struct describing the header, and you can only meaningfully manipulate it through passing a pointer to it to library functions < 1551031430 280395 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I think I wanted a very clear difference between things which act like value types but are immutable, things that are mutable but persist and can't easily be copied or deallocated, and temporaries which are mutable but can't be used as anything but local variables and fields of other temporaries < 1551031435 225149 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :FILE is like that already < 1551031470 582224 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: non-Sized things aren't copiable by value only because Rust doesn't have enough information to generate the code that copies them, though, I think < 1551031478 937253 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I said this the other day: "People talk about const a lot, but the const/non-const distinction seems less important to me than the distinction between values and memory locations (in C terms, rvalues and lvalues). Most languages really muddle this distinction (although even C does make it)." < 1551031485 691977 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it's not a philosophical objection to the by-value copy, that's what !Clone is for < 1551031526 861553 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: it's not really "only". you use structs that are neither sized nor unsized if you don't want rust to move them. < 1551031532 15288 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :shachaf: I see this the opposite way round (which may be the contrapositive of your point of view?): if something is immutable, the distinction between value and memory location doesn't actually /matter/, and that's one of the big gains of immutability < 1551031543 81078 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :that could be because they're ones that have a pointer to themselves, or for other reasons < 1551031549 778910 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :whereas if something is mutable, it has an identity, and keeping track of that is very important < 1551031563 715778 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: isn't that what Pin is for? < 1551031582 101112 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: Pin can help too... hmm < 1551031605 31953 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :really I don't quite understand how Pin works < 1551031621 901166 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :nor do I < 1551031633 791949 :int-e!~noone@int-e.eu PRIVMSG #esoteric :@quote Ooooh! < 1551031634 227760 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :cjs says: I have to explain this shit to people. I mean, I start out right, "Hey, you know how you always have these bugs because what you thought was in the variable is not there?" And I get all of < 1551031634 366564 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :these nods of agreement. "Well, I've found a new language that solves that problem." Audience: "Ooooh! How?" Me: "There's no variables!" And then they all start moving away from me slowly.... < 1551031661 551589 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(no lvalues! bliss!) < 1551031669 836437 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :un... < 1551031691 262364 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :is "variable" there being used in the sense of "assignable variable" / "lvalue", or in the more general sense that also includes things like lambda bindings? < 1551031724 719478 :int-e!~noone@int-e.eu PRIVMSG #esoteric :It's the assignable thing. < 1551031733 259923 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :right < 1551031743 120357 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :maybe intermediate, so that global constants are still allowed? < 1551031743 580111 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Ah mutable is the word. < 1551031750 495757 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523_: Well, "const T *x" in C doesn't even say that *x is immutable < 1551031763 361706 :int-e!~noone@int-e.eu PRIVMSG #esoteric :b_jonas: their are defined, not assigned < 1551031767 80853 :int-e!~noone@int-e.eu PRIVMSG #esoteric :... they < 1551031788 565706 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I work in a CS department, "variable" has the second meaning by default here, so "assignable variable" is the phrase we came up with to unambiguously describe the sort of variable that most programmers mean < 1551031798 257421 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anyway I'd still quite like a language that doesn't have lvalues at all, only pointers. < 1551031832 588817 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :and then there's assign-once variables < 1551031834 168209 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :(other hazards of terminology include "while" being considered to be tail-recursion) < 1551031835 52141 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's really pretty odd that even pseudocode algorithms confuse a value with a memory location. < 1551031856 557652 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There's the implicit operation of "the value stored in this location at this time" and people don't even notice it < 1551031876 156009 :int-e!~noone@int-e.eu PRIVMSG #esoteric :b_jonas: In the pure Haskell setting that's not part of the semantics; it's an implementation detail of lazy evaluation. < 1551031881 111074 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I was very impressed by Algol 68, which gets the terminology right for the distinction (and then, unfortunately, went and invented a shorthand that caught on and caused all the terminological problems) < 1551031894 386715 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :int-e: I'm more thinking of the prolog version of assign-once variables < 1551031909 921860 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523_: I was also impressed by some parts of Algol 68 < 1551031913 635584 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What's the shorthand? < 1551031919 93927 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the C code "int x; x = 6;" translates to Algol 68 "ref int x = loc x; x := 6;" < 1551031929 481838 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the shorthand for that would be "int x := that < 1551031939 810131 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :**"ref int x = loc int; x := 6;" < 1551031949 856343 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, that. Right. < 1551031953 809998 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :there was shorthand like "ref int x := 6" < 1551031958 252570 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :something like that < 1551031962 998379 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think a shorthand is OK? < 1551031979 938517 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :also the Algol 68 is still wrong, I added a trailing semicolon by mistake (semicolon in algol is a separator, not a terminator) < 1551032001 424031 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the shorthand's useful, at least < 1551032026 1502 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but I really liked the concept of "variables are never named, only constants have names" < 1551032053 849275 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think I was going to have a thing like "x := var(6)" < 1551032060 522438 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :whereas in Forte, constants are never named, because the constants are variable too < 1551032069 971723 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :(for people reading this who don't already know, "ref int x = loc int" creates a new constant x which is the name of a stack slot, you can mutate the value within the stack slot) < 1551032088 708041 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: well, Forte is a joke, but it's a thought-provoking joke < 1551032090 682778 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Where var is an alloca-style thing that allocates memory for the rest of the block and also assigns a value to that memory. < 1551032106 73300 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 QUIT :Quit: brb < 1551032113 843750 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: right. it's thought provoking because the variable line numbers behave like a computed come from < 1551032175 397083 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523_: The thing I don't like is all the automatic coercions they needed to add to make code readable. It seems to make things very ambiguous. < 1551032267 641209 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :what does often lead to interesting design is that if you have a resource that can be named, then you should also allow to allocate instances of it that aren't named but only referenced indirectly < 1551032824 181747 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :but of course it can also lead to insane overuse and bad coding < 1551032850 118353 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 JOIN :#esoteric < 1551032864 68674 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :back < 1551032892 868776 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :shachaf: I also think the coercions were a mistake < 1551032957 242404 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :in my thesis I worked with Idealized Algol, which has no implicit coercions (it allows ! as an explicit ref x → x coercion, and is call by name so no explicit proc x → x coercion is needed) < 1551032979 921693 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :actually, forcing a thunk in Idealized Algol is really difficult < 1551033003 297947 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :you can force an integer by assigning it to a variable, and force a boolean using an if or while statement, and that's about it; most other types can't be forced at all < 1551033067 779990 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: is that like haskell without seq, where you can force an algebraic data using case, or force an integer using <, or force a function by calling it? < 1551033124 290329 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523_: But code without the coercions seems to have way too much dereferencing. < 1551033130 508122 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :To the point of being hard to read. < 1551033201 507455 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :fizzie: the opcode quiz gave me "FS" and I wasn't sure what to say because I was unclear about the definition of an opcode; "FS:" is a segment override prefix, but a) does the colon matter, b) do prefixes count as opcodes? it could do with some clarification < 1551033211 129925 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: yes < 1551033234 987476 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :shachaf: in Idealized Algol, incrementing an integer-holding variable x is "x := !x + 1" < 1551033244 705972 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes, that's simple enough. < 1551033247 674823 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it takes a bit of getting used to but it's not too bad to write in (and OCaml does it the same way) < 1551033258 899801 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :https://en.wikipedia.org/wiki/BLISS does this too < 1551033268 229746 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: is that where SML got the names for the operators for mutable cell? < 1551033274 804251 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :at least in the subset I implemented for my thesis, the only dereferencable things were integer-holding variables < 1551033279 24328 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But slightly more complicated code has a lot more dereferencing. < 1551033286 50796 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: I have no idea who borrowed from who < 1551033297 262627 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I always thought it strange that ! is a reader in SML but a writer in forth < 1551033305 69318 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Say the array indexing operator, which presumably returns a pointer rather than a value (so it's morel ike + in C), right? < 1551033314 481841 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :(we're implementing this in hardware, thus any assignable referenceable thing is a set of bits in memory somewhere, thus is an integer by definition) < 1551033358 671007 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :shachaf: the newarray statement in Idealized Algol produces a function from integers to variables < 1551033367 877212 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :eh, just because it's in hardware doesn't really make it an integer. except perhaps as much as it only has finitely many values. < 1551033396 472043 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm talking about the design of a language for programming computers, though. < 1551033401 908204 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Well, it is a sequence of bits which can be interpreted as and manipulated as a integer. < 1551033407 136207 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :so writing an array element would be, e.g., a(6) := 7, reading an array element would be, e.g., !(a(6)), which can be written !a(6) due to careful choice of operator precedence < 1551033426 915980 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :(the choice is harmless because (!a)(6) would necessarily be a type error, given that in the subset we were using, ! always returns an integer) < 1551033460 291724 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: hmm, and can you write multi-axis arrays? < 1551033491 220309 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: there isn't a builtin for them, but you can create them using a curried wrapper function that linearizes the index < 1551033500 789195 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :hmm < 1551033511 349566 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :arr[!i, !j] = min(!arr[!i, !j-1], !arr[!i-1, !j], !arr[!i-1, !j-1]) + 1 < 1551033531 580373 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It seems like worrying about where to dereference is a big part of the work of writing that line < 1551033542 901520 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :something like let a = newarray a0(25) in \x.\y.a0(x+y*5) would work < 1551033585 566262 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ok < 1551033590 328503 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :shachaf: it's fairly easy, every use of a variable name is dereferenced with either ! or := < 1551033601 302779 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the first use of arr is dereferenced with :=, thus you need ! everywhere else < 1551033627 443142 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm not saying it's conceptually difficult, only distracting < 1551033647 333185 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Switching between a.x and a->x in C is already annoying. < 1551033686 736566 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :shachaf: come to the rust side. we have implicit dereferencing, and lots of other false exaggerations about how perfect the language is. < 1551033716 612706 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Rust just has lvalues and rvalues, like C < 1551033731 72700 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :ais523_: Yes, it's a little unclear. The opcode list is from NASM, which allows "FS" as a standalone instruction, and as a rep-style prefix, in addition to the typical fs:... operand form: http://ix.io/1BWX < 1551033746 833731 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :shachaf: oh, is this still about not wanting lvalues? come to rust or scheme then. < 1551033749 855342 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :um < 1551033753 440660 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :s/rust or/ruby or/ < 1551033755 512540 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :fizzie: well, it considered IIRC it considered FS to be fake < 1551033777 809354 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but it's a surprisingly philosophical question for what you'd expect to be an objective quiz < 1551033779 493351 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: This is about wanting a language to replace C. < 1551033802 225057 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :shachaf: fwiw, my thoughts on lvalues and rvalues were more about wanting a language to replace Java than to replace C < 1551033836 584254 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :C-like languages have a number of considerations of their own, e.g. abstracting away low-level details is not always desirable < 1551033862 847726 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess ALGOL 68 is garbage-collected. < 1551033876 543775 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But I don't think that has much to do with any of these features. < 1551033972 805969 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Oh. Right, the exact definition for "opcode" I've used there is really a NASM implementation detail, it's everything in the nasm_insn_names[] array. Apparently prefixes (even if they can be used as a standalone statement) are handled separately. < 1551033974 947227 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I think Algol 68 is GCed because people weren't sure there were alternative schemes to stack allocation and a GCed heap at the time < 1551033987 625363 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :refcounting would have been considered a form of GC, but a broken one < 1551034024 72158 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :hmm, this reminds me of the problem I'm stuck on at work < 1551034040 523613 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The alternative scheme of manual memory management was presumably known? < 1551034114 846817 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm trying to prove a GC algorithm correct; however, the way it deals with reference cycles is by delegating cases with suspected reference cyclesto a second GC algorithm, which means I need to somehow prove "this GC algorithm is correct given an oracle for breaking cycles" < 1551034145 308611 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :shachaf: I'm not sure, manual deallocation feels like a more modern feature than GC/automatic deallocation < 1551034164 979530 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :probably because memory leaks have become more survivable over time < 1551034185 842738 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :(Rust does not consider memory leaks a correctness issue, for example) < 1551034199 208305 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :maybe it was GCed because they wanted to compile it to a web scripting language that would be ran on client side in browsers, and they didn't want webpages to leak memory in the browser < 1551034205 429222 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :hmm wait, did you say 68 < 1551034231 618867 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :they didn't want telex messages to leak memory in the receiving post office < 1551034242 506440 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523_: What, you're saying garbage collection predated malloc/free? < 1551034268 486717 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm not sure, but it wouldn't surprise me, at least in languages higher-level than assembly < 1551034281 336050 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :Lisp is GC'ed, and a very old language < 1551034284 237366 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: it does feel more modern, yes, because lisp was traditionally garbage collected < 1551034288 301566 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :exactly < 1551034293 707915 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :and isn't smalltalk too? < 1551034294 236310 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :and other languages of a comparable age were typically statically allocated < 1551034301 399764 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: yes, Smalltalk is GC'ed < 1551034343 763501 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :whereas some other languages just don't allow pointers, so everything is singly owned < 1551034369 931156 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But cons cells -- which I assumed were reference-counted in the original LISP for some reason, though I never checked -- are a much more specific thing than general GC < 1551034398 759474 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :or every variable is allocated once in the program and never freed, like in BASIC or FORTRAN < 1551034417 564158 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :shachaf: sure, the memory allocation and deallocation gets much simpler if every block is of the same size < 1551034421 888020 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :the gc sweep itself not much < 1551034429 367698 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :but the memory management does get much simpler < 1551034436 104597 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :so it's easier to implement on small machines < 1551034507 137737 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm reading the paper which is the first description of garbage collection (1959); it also talks about stack allocation as though it were a new/interesting innovation for the paper (maybe it was) < 1551034544 193777 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :apparently it used mark-and-sweep < 1551034556 610207 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :(stop-the-world mark-and-sweep, that is) < 1551034581 6121 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: if I understand correctly, it was sort of a new thing to store local variables on a stack to implement lexical scoped variables (without closures), which makes sense because you don't need that if you don't have recursive structs < 1551034586 452750 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it does sort-of imply that malloc/free came earlier, or at least was considered to be obvious to people reading the paper < 1551034599 855758 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: it was to implement recursive functions < 1551034600 831290 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :if you only have non-recursive structs, then you can give every local variable a static address < 1551034625 729421 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but stack allocation is often more efficient than static allocation even in the absence of recursion < 1551034640 210677 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :because it lets more variables share with each other and thus uses less memory < 1551034661 122761 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: exactly. I mean, look at the Knuth books, they don't take recursive functions granted, recursive functions are introduced in the future (not yet released) parts of vol 4, even though the normal MMIX calling convention puts locals on a stack < 1551034667 951417 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :in most programs that don't use recursion, there's no execution which would end up with every function running at the same time in one big long call chain < 1551034683 174531 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :unless the program is very simple < 1551034697 361555 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :it does technically mention recursive functions earlier, but doesn't go (sorry) deep into them < 1551034707 120071 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :hmm, now I'm starting to have an esolang idea < 1551034718 567333 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :ACTION thinks about a language where all the functions being in one big call chain is an essential part of the design < 1551034725 759731 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :presumably you do flow control by rearranging the call chain < 1551034746 253426 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: not really. if your call graph is known statically and acyclic (which is the most common case when you know there'll be no recursion) then you can maximally overlap variables so it's as efficient as a stack < 1551034757 590568 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :overlap them with a static address that is < 1551034759 822486 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :yes < 1551034768 711642 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :or, hmm, I'm not sure < 1551034773 229023 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :is the set of overlaps always solvable? < 1551034788 135177 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :sure, just go either from inside to out, or from outside to in, in the graph < 1551034791 420594 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :or in any partial order really < 1551034799 963886 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :and assign variables to the lowest addres slot that wasn't used yet < 1551034810 503490 :int-e!~noone@int-e.eu PRIVMSG #esoteric :stacks ware awful, they make it impossible to put the value of a variable into the immediate operand of an instruction ;-) < 1551034828 827364 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :say you have three functions, a, b, c, a(false) calls b(true), b(false) calls c(true), c(false) calls a(true) < 1551034836 567205 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: no < 1551034851 788581 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: I said the call graph, as in, the graph of possible calls, is known at compile time, and is acyclic < 1551034858 988917 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :as in, each function can only call functions defined earlier in the code < 1551034871 552363 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :if you do have three functions like that, then yes, you can't allocate the variables statically < 1551034876 4528 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :oh, a(false) calls b(true), a(false) calls c(true), b(false) calls c(true) < 1551034878 993389 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :that's acyclic < 1551034918 660348 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but it's still more efficient with a stack, because b's locals and c's locals need to share when called from a, but not when b is called directly < 1551035006 497717 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I think the difference here is that a→b→c is approximately a possible call chain but the full chain never actually happens in practice, thus you can implement it with only two functions' worth of stack space < 1551035013 915141 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but the static analysis thinks it needs three < 1551035018 667371 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :right < 1551035045 93657 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :and that's the kind of design that ends up with deadlocks in the kernel between the file system driver and two other modules < 1551035050 560763 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :we love it < 1551035093 534563 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :fizzie: Also about the opcode quiz: "TETRA" is a assembler directive in MMIX, but is not itself a instruction. Other things can apply to other instruction sets (although sometimes, it depend what assembler is in use). Also with 6502, which instruction are possible can also depend what variant of 6502, such as NMOS or CMOS or whatever. < 1551035135 156430 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :In Glulx, it is necessary to define the maximum amount of stack space needed, although the stack is not addressable in Glulx. < 1551035142 275645 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I kind-of assumed it wouldn't be using the unofficial instructions < 1551035156 537720 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :though on the other hand, if a calls b and b calls c and c calls d, and b and d have 4 bytes of stack frame, and a and c have 8 bytes of stack frame that must be aligned to an 8 byte boundary, then you end up using 28 bytes of stack or 24 bytes of statically allocated variables < 1551035156 601442 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :which don't even have consistent names < 1551035161 58788 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(I do not really know how to estimate though) < 1551035166 448792 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :or even functionalities, in some case < 1551035188 800244 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :ais523_: Even if you do not use unofficial instructions, still some instruction are difference from NMOS or CMOS 6502. < 1551035205 273335 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :we could also have separate versions of the x86 quiz for the intel notation and the at&t notation < 1551035206 488895 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :(there are stable instructions like LAX, and unstable instructions which are deterministic on some 6502s, deterministic with diferent behaviour on other 6502s, and nondeterministic on still other 6502s; their behaviour often doesn't make much sense even when it's stable) < 1551035209 188050 :galaxie!~galaxie@97.112.67.209 JOIN :#esoteric < 1551035250 225409 :galaxie!~galaxie@97.112.67.209 PRIVMSG #esoteric :Hi! My mind is blanking, I feel like I was on the esolang wiki or maybe WikiPedia but I think I remember another visual-based esolang that wasn't Piet or Piet++. Anyone have any idea what that might be? < 1551035255 54173 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :With LAX, there is actually a bug (even the bugs have bugs in 6502) with immediate operands < 1551035259 810085 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :but of course the x86 quiz is tricky because you would have to update it with new instruction names every year < 1551035268 547704 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :galaxie: No, but you can try looking in the categories in esolang wiki < 1551035293 693728 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :galaxie: do you mean https://esolangs.org/wiki/Piet%2B%2B < 1551035297 189088 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :oh < 1551035300 933849 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :you mean it wasn't Piet++ < 1551035311 824430 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :yeah, what zzo38 says then, try https://esolangs.org/wiki/Category:Non-textual < 1551035315 980637 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :galaxie: there are quite a few image-based esolangs; the massive polyglot on Stack Exchange implements many of them at once < 1551035359 802802 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :hmm, the Turing Tumble is listed in that category < 1551035394 447029 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm suspicious of the claims that it's TC, given that a) it doesn't have infinite memory and b) the most obvious means of giving it infinite memory (putting an infinite number of identical boards side by side) isn't obviously TC; it might be subtly TC though < 1551035396 405129 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: that category isn't only for image-based esolangs of course. it contains object-based ones like https://esolangs.org/wiki/Efghij < 1551035407 762231 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :yes, and music-based languages like Fugue < 1551035415 140859 :galaxie!~galaxie@97.112.67.209 PRIVMSG #esoteric :Non-texual, what didn't I see that.. < 1551035428 483076 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :ugh, now my Fugue hello world has got stuck in my head again < 1551035431 226630 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :aren't music-based in a different listing? < 1551035448 739629 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it's surprisingly catchy for generated music; perhaps being based on a specific BF program gives it a sort of structure that generated code normally lacks < 1551035451 651610 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :(most of which are garbage incidentally, but then, which esolang category isn't) < 1551035488 396793 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm tempted to say "Category:Shameful", which is arguably supposed to be entirely garbage, but I have a soft spot for ESME < 1551035494 718391 :galaxie!~galaxie@97.112.67.209 PRIVMSG #esoteric :Braincopter, that was it! Thanks! < 1551035510 63772 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :glad to help < 1551035514 594048 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :lol < 1551035518 952594 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :fwiw, my first thought was Brainloller < 1551035552 671614 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it's hard to define ESME as a terrible language because it's more performance art than language < 1551035575 605881 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it's like if TURKEY BOMB was defined by example rather than specification (I rather like TURKEY BOMB too) < 1551035581 771817 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :*were defined by example < 1551035597 416426 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: the trick is that the first esolang with any schtick is often great, but it gets boring when a dozen other articles on the wiki copy it < 1551035617 480696 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :eg. Ook! has a place in my heart, but it wouldn't if it were invented now < 1551035644 501188 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it is probably better than brainfuck for most of the things brainfuck is good at, except for code golf and the things where the two languages are identical < 1551035657 611292 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the language benefits from having an entirely meaningless syntax < 1551035698 326514 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I think there have been some uses of it in education, to help people understand what is and isn't important in a language < 1551035797 911552 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :hmm... showing that the syntax isn't important? dunno, grown up to meet both the original and the horrible Hungarian syntax versions of LOGO and Excel sort of shows that syntax in theory isn't important, but bad syntax can make you really hate the language < 1551035833 829910 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :there's a hungarian notation version of LOGO? < 1551035836 282407 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I'll keep the English FD BK LT RT PU PD thank you < 1551035865 58498 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :b_jonas: Not only with x86 there will eventually adding new instructions, although you could perhaps specify a version number (does it even have version numbers?). Glulx has version numbers, although Glulx also has "push" and "pull" which are not themself opcodes but are abbreviations for other opcodes. There are also some extensions which are not part of the core specification. < 1551035873 967939 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :fwiw, I wrote The Waterfall Model Online in Hungarian notation because JavaScript is untyped, and it helped me catch at least one error < 1551035886 915565 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but in general it's pointless doing it when the compiler does it for you < 1551035887 335290 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: I'm not sure how much ... there's definitely a library of function definitions that give hungarian abbreviation synonyms to common commands < 1551035898 238131 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :oh, Hungarian the language, not the naming style < 1551035940 510683 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :yes, the language. not the lpszFoo thing. < 1551035984 114279 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :And then, Z-machine is even more difficult. There are two sets of names for instructions (Infocom and Inform), and then different instructions per version (ZIP, EZIP, XZIP, YZIP), features which are Inform extensions, and features which are precluded by Inform extensions. < 1551036004 340383 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :"lpsz" seems broken as a type system, anyway; the zero-terminated string /is/ a pointer, under standard C conventions, thus a long pointer to it would be a char**, not a char* < 1551036035 272799 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Is it Microsoft who used "lpsz" for this purpose? < 1551036037 447290 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :zzo38: and x86 instructions that existed in certain old AMD cpus but are no longer in the latest ones < 1551036043 262429 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :because the intel extensions won out < 1551036046 370731 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :zzo38: I'm not sure they invented it but they're the most famous users of it < 1551036048 982731 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :b_jonas: OK, that too < 1551036061 487393 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :zzo38: Microsoft is just the most popular ones who use it, they're not the first ones < 1551036076 862519 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: haven't even some Intel instructions died out? < 1551036079 771492 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :like into < 1551036108 646240 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: I think only some really strange ones that were never intended to be used in mainstream programs, but only to debug the processor or something < 1551036129 25592 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: there are a lot that are not allowed in 64-bit mode, but still allowed in 32-bit code < 1551036140 954606 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :that's mostly done to free up some of the one-bit opcode space < 1551036151 211184 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I think x86 also has different instructions for 64-bits and 32-bits, and maybe also 16-bits I don't know < 1551036153 554044 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :this reminds me, there was a bit of a row in some minor processor semi-recently (last several years), because it had an instruction to switch the processor into a mode with an entirely different set of opcodes < 1551036174 130396 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :ais523_: Doesn't ARM do that? < 1551036176 730300 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :and it used a different security model, which in practice meant the feature was usable as a hardware backdoor even though that doesn't appear to have been the original intention < 1551036217 380923 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :zzo38: yes, ARM has like three different opcode modes, plus like two or three different vector extensions ... but then, x86 also has three vector extensions now < 1551036240 903673 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: also some instructions "died out" in the sense that the cpu still supports them but there isn't a good reason to use them < 1551036267 20270 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: more interestingly, there are some duplicate instructions which fit into different naming schemes and have different encodings < 1551036283 311115 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the processor treats them identically, but you're supposed to use one for ints and one for floats in case future processors care about the distinction < 1551036285 675364 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: yes, but MMIX does that to an extreme < 1551036299 191646 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: oh yes, that was the vector instructions, that mattered for performance for a while < 1551036336 541665 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :basically they had pseudo-register that were closer to integer vector execution units and ones that were closer to float vector execution units, and the cpu had to transfer between them if you used the wrong bitwise vector instrs < 1551036339 164837 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, MMIX has separate instructions for signed or unsigned 64-bit load/store, even though the function is same. < 1551036353 780917 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :also aligned and unaligned instructions that don't differ on new cpus unless you turn on some compatibility flag < 1551036357 482223 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :or something < 1551036359 502110 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :on wait < 1551036373 722236 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :maybe they differ, but the unaligned ones no longer have a penalty, so you can always write them even for aligned operands < 1551036381 916422 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :movaps versus movups really does matter, IIRC < 1551036400 283180 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: not in the latest cpu iirc, but let me look it up in the opt'n manuals < 1551036473 605401 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :actually, let me look it up in Agner's manuals, that's simpler < 1551036489 420546 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :some searches imply that movups is as fast as movaps at moving the data as of Nehalem if the data happens to be aligned < 1551036496 175632 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(I suppose one possible reason using LDO and LDOU even though is same is for profiling; I have used unofficial 6502 opcodes with same meaning as official ones for profiling in NES/Famicom emulators, before.) < 1551036500 228000 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but that the instruction decoder is apparently faster at decoding a movaps instruction < 1551036562 738102 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :zzo38: did you use the duplicate NOPs, or are there duplicate instructions that have an actual effect? < 1551036619 75176 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :ais523_: There are both. Mostly it is the duplicate NOPs I used, although the others can also be used. < 1551036647 289901 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Although I have also used unofficial instructions that do not duplicate any official instructions, in places where those unofficial instructions are seeming like useful.) < 1551036694 562672 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :LAX seems like it would be useful quite frequently; many of the others are rather specific but (if stable) would still help in places where their functionality happens to be needed < 1551036741 970386 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I only use the stable ones < 1551036744 672142 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :chapter 13.9 of https://www.agner.org/optimize/optimizing_assembly.pdf seems to imply that on modern cpus the movdqa have no advantage over the movdqu anymore < 1551036770 267663 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: hmm wait, you ask about the single float load instructions instead? hmm < 1551036795 900089 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :if the difference really is in the instruction decoder, I could believe that movdqa equals movdqu but movaps decodes faster than movups < 1551036809 49533 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :because even instructions that are equivalent in effect will decode in different ways < 1551036809 929300 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I'm not sure then, maybe this is only for some instructions < 1551036842 942661 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: yes, they're really not the same, because movups is for four bytes, whereas movdqa is for a full 16 or 32 byte register < 1551036862 635599 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :no, movups is the whole register I think < 1551036865 525948 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :that's what the p means < 1551036900 443168 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :oh < 1551036901 143086 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :right < 1551036901 893362 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :sorry < 1551036902 579514 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the difference in instruction naming is that movups is effectively treating the register as an array of scalars, whereas movdqu is treating it as one big number < 1551036905 995834 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :they're full register < 1551036908 59670 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but for a copy that doesn't matter < 1551036919 11895 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: no, I think the difference is that integer vs float like above < 1551036935 449549 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :they used to differ in older cpus, and you use the one that mathes the next instructions on that regiseter < 1551036956 689336 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :if you do float ops then you use the movups, if you do integer ops next then you use movdqu < 1551036981 14178 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :really, x86 is just a huge mess :-D < 1551037002 118636 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :this is not really the messy part < 1551037007 323182 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, especially the modern x86. The original 8088 was not so messy as the modern one. < 1551037013 302441 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There's a performance difference in some Core microarchitectures if you mix "domains" for SSE, the domains being integers vs. floats. < 1551037018 907784 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :it would be considered messy, if not for the fact that it has the rest of x86 to compete with < 1551037043 202904 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :oh, did you know that to compile 3 byte or longer nops for padding, you want to know which of the first eight integer registers have not been written for a while, because those nops have a false dependency? < 1551037051 928718 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :so the compiler has to think even to just insert a fucking padding < 1551037074 56840 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :You *can* use movdqa to move floats around, and movaps to move integers, but you should be using whatever matches the operations you're going to do with them next. < 1551037076 911730 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :is that on Intel or AMD or both? < 1551037088 904453 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: intel, and possibly only some intel cpus < 1551037089 574077 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :IIRC AMD's advice for long NOPs is to just keep stacking operand size modifiers on a NOP < 1551037104 685260 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :so it goes NOP, WORD PTR NOP, WORD PTR WORD PTR NOP, etc. < 1551037105 449700 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: yes, that's also a sad part, you need different nop instructions for the different cpus < 1551037109 251660 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :that is at least easy to remember < 1551037115 54950 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :Intel's advice is a lot more complex < 1551037117 425855 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: amd's decoder handles that well, intel's decoder is slow in that < 1551037119 800846 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I did not know that, but yes it is a messy thing in x86, and x86 is also extremely messy in too many ways < 1551037124 73138 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :MMIX is better. < 1551037129 515555 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: presumably this is why AMD advises it :-D < 1551037136 970669 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :yes, possibly < 1551037158 449339 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :this is intel optimization manual chapter 3.5.1.10 < 1551037171 381773 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :6502 has an unofficial two-byte NOP which is basically just NOP with an immediate argument < 1551037186 976505 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :And the "mixing SIMD data types" is right after, in 3.5.1.11. < 1551037187 171462 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :is there a NOP version with a two-byte argument, making an unofficial three-byte NOP? < 1551037218 777485 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :ais523_: Yes, and it is faster than just one byte NOP twice. There is NOP with two byte argument, although it isn't actually no operation; it reads from the specified address and then does nothing with the result. < 1551037240 528582 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :oh, OK, so that might actually do something with some mappers < 1551037246 588788 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :as they'll be able to observe the read even though the read value isn't used < 1551037254 254805 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: intel recommends LEA with a mod-m/r byte and a one-byte displacement < 1551037268 56534 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Which might be used if some addresses have side effects for reading, such as some PPU registers, and some mappers) < 1551037276 412259 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :the NES has some registers which have side effects when read < 1551037279 967813 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :it's strange, because there _is_ a nop with a two-byte opcode and one byte of mod-m/r < 1551037283 564242 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: where is the address being loaded? < 1551037284 111652 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :but apparently that's slower or something < 1551037296 801508 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: back in the same register < 1551037310 539163 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: like, loads the address 0[EAX] to EAX < 1551037314 950778 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm not even conviced that's a /false/ dependency at this point < 1551037318 501796 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :or 0[ESI] to ESI < 1551037327 770489 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :in C, I wouldn't expect "x = x;" to be a NOP < 1551037339 133275 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :like, I wouldn't be surprised if it did nothing, but I also wouldn't be surprised if it did something < 1551037354 754025 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: yes, but this isn't C, and the optimization manual explicitly says that it's a true nop < 1551037356 33055 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :especially if x was being changed concurrently in another thread < 1551037371 155099 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but I guess that as we're talking about a register here, it can't be shared with anything < 1551037379 973136 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :"The other NOPs have no special hardware support. Their input and output registers are interpreted by the hardware. Therefore, a code generator should arrange to use the register containing the oldest value as input, so that the NOP will dispatch and release RS resources at the earliest possible opportunity." < 1551037397 398490 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :in this case I believe the optimization manual knows what it's talking about. I know it has typos, I've reported at least one, but usually it's right. < 1551037398 168140 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :("Other" meaning anything else than the "xchg eax, eax" one-byte NOP.) < 1551037417 587303 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :do the other cases of xchg even have their same meanings? < 1551037437 357200 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: what do you mean "their same meanings"? < 1551037457 66747 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: well, the code of xchg eax, eax was repurposed for nop < 1551037458 477074 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :the statement talks about other nop instructions they recommend, not about other cases of xchg < 1551037464 195462 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :as on a 32-bit processor it's a true nop and was commonly used for that purpose < 1551037481 232930 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :but on a 64-bit processor, an actual xchg eax, eax instruction would clear the top 32 bits of rax < 1551037494 651177 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :so xchg eax, eax would have had to be given a different encoding < 1551037519 938956 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm wondering if the xchg r, r instructions with different registers than eax twice still have the same encoding as on 32-bit x86, or whether those were also moved < 1551037534 40335 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the linux kernel has a header with n-byte nops for various n < 1551037540 287418 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :on various microarchitectures < 1551037592 139147 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: hmm < 1551037593 230584 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Remote host closed the connection < 1551037594 147668 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :ais523_: The one-byte instruction has an implicit EAX as one operand. < 1551037600 229368 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :ais523_: Yes, NES has some registers that have side effects when read. Some mappers also have, such as my Famizork mapper, where the bankswitching register doesn't care about read/write. It does care the value in the data bus though; the bankswitching register is mapped in many addresses including some over the mirrors of the console's RAM, so it switches to the bank specified by the value in RAM. < 1551037613 755931 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :ais523_: It's 90+rd for "XCHG EAX, r32" (for the 32-bit size). < 1551037625 97547 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :fizzie: so instructions like xchg eax, ebx still keep their encodings? < 1551037634 374954 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :now I wonder what the canoncial way to clear the top 32 bits of rax are < 1551037653 242542 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :movzx eax, rax, possibly < 1551037672 697221 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(I don't know of any other mapper that maps stuff over stuff internal to the console, except that MMC5 spies on some of the PPU registers.) < 1551037677 772622 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes, they use 87 /r for XCHG r/m32, r32. < 1551037703 161449 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: that is a good question, now I'm confused. lookging up how this works in the manual. you know by the way that XCHG EAX with a register has a special one-byte shortcut encoding, and that's the one byte nop, right? < 1551037721 614914 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :yes < 1551037724 57811 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :whereas eg. XCHG EDX, EDX is a different encoding with a normal mod-r/m byte < 1551037727 919156 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :but that doesn't invalidate your question < 1551037814 633508 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :sadly this is the kind of info that is really hard to find in the intel manual < 1551037846 151323 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Famizork also uses the smallest bank size than all other mappers: A bank is only a single byte long.) < 1551037887 335684 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I assume "xchg eax, eax" encoded the long way (87 C0) would actually clear the top 32 bits, but I doubt that's the "canonical" way. < 1551037937 375088 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Fun fact: ndisasm decodes 90 to "nop" and 87 C0 to "xchg eax, eax", but assembles "xchg eax, eax" into a nop: http://ix.io/1BXb < 1551037945 930395 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :reading around this subject, I discovered that apparently "xor r10d, r10d" is a more efficient way to zero r10 than "xor r10, r10" is, even though you need a rex prefix either way < 1551037988 626853 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :because some processors only recognise the zero-extended 32-bit version as a special case (this is the case that matters for the first eight registers as those don't need the prefix) < 1551038064 383056 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :what a mess < 1551038073 506663 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :fizzie: Why does it do tat? < 1551038107 112464 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :zzo38: I would guess they haven't specifically considered that case, and it just falls out of how it got implemented. < 1551038207 385569 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :GNU as, on the other hand, assembles "xchg %eax, %eax" into 87 C0. < 1551038227 983168 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :incidentally, one processor architecture idea I had was to make the registers one bit wider than the memory that's intended to be read/written with them < 1551038239 644841 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :and then remove the flags, conditionals instead look at the values in a register < 1551038243 266206 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(...in 64-bit code. In 32-bit code it assembles it to a 90-nop.) < 1551038260 15972 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :so, e.g., jump-if-carry would jump if the top bit of a register were set < 1551038261 160485 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :So I guess for proper comparison I should've said bits 64 to nasm too. < 1551038271 441582 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: which makes a difference < 1551038278 557258 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes, it does. < 1551038283 72104 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Well, that's reasonable enough. < 1551038297 931938 :arseniiv!~arseniiv@94.41.3.137.dynamic.ufanet.ru QUIT :Ping timeout: 246 seconds < 1551038308 589309 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: the AMD manual says that the 0x90 opcode, if it would exchange EAX with EAX (that isn't always the case because of REX prefix), has special handling to preserve the upper dword of RAX < 1551038343 257182 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :that's a reasonable way to define the behaviour (although I think defining it as NOP would be even more reasonable!) < 1551038372 58714 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: it does say it's treated as a NOP < 1551038385 20443 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: also the intel manual also says that at the XCHG instruction's description < 1551038389 690013 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :it's just harder to fine < 1551038391 419871 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :find < 1551038395 874264 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Nevertheless that is strange < 1551038420 631986 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: the AMD manual actually uses the phrase "true NOP" < 1551038427 732074 :int-e!~noone@int-e.eu PRIVMSG #esoteric :zzo38: NOP-e. < 1551038472 279935 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :whereas the intel uses the phrase "alias for NOP" (as in, there's a set of NOP instructions documented separately) < 1551038507 235771 :int-e!~noone@int-e.eu PRIVMSG #esoteric :They'd have to invent a new one byte nop otherwise. And one byte opcodes are a very scarce resource. < 1551038543 152163 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: as for zeroing the register, I think that also depends on the cpu and you'd best check what the optimization manual for the right processor series says or what agner's manual says < 1551038584 46354 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :b_jonas: zeroing an entire register, the consensus is that if you don't care about the flags, 32-bit xor is the best option regardless of the register < 1551038598 30202 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Still it look like strange if 0x90 opcode does not normally do that, then why it should do then? < 1551038606 713369 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: yes, I also thought of putting the carry on top of the register in such a way that only a few instructions access it, the others that write the register write an unspecified value in that bit, and the ones that read the register usually ignore that bit, except for special ones that read the carry < 1551038612 511045 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :What is strange in Glulx is the "copys" and "copyb" instructions, which work differently from all other instructions. < 1551038620 416105 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :I'm more interested in partial zeroes of the high byes (e.g. rax %= 256) < 1551038627 988409 :grumble!~iceicebab@freenode/staff/grumble QUIT :Quit: grumble < 1551038630 907821 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :b_jonas: What happens if you put in a REX prefix that doesn't have REX.W set in front of 90? < 1551038655 613335 :grumble!~grumble@freenode/staff/grumble JOIN :#esoteric < 1551038666 668815 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523_: I'm quite sure the opt manual says things about that, both for index registers and vector registers < 1551038676 421913 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(ndisasm -b 64 decodes both "40 90" and "42 90" as plain nop, but not sure if I'd trust that.) < 1551038703 678175 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :anyway, I had better go home, I think < 1551038714 413386 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 PRIVMSG #esoteric :bye everyone (I typoed that as "byte", maybe I should have left it?) < 1551038731 592732 :ais523_!93bcc34b@gateway/web/freenode/ip.147.188.195.75 QUIT :Quit: quit < 1551038904 971605 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: IIUC if you make it exchange EAX with R8L or R8L with R8L then it will clear the bits above bit 32 of all registers involved, but check the manuals before you want to depend on that < 1551038977 957389 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Sure, I was just wondering what happens if you still make it "XCHG EAX, EAX" but just put in REX prefix, either just plain 40 or with the SIB index register extension bit (which doesn't affect anything) set. < 1551039179 23647 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ais523: hmm, interesting. the intel opt'n manual does talk about zeroing reigsters, but doesn't seem to say that to clear one of the high eight index reigsters with XOR or SUB, you should use 32-bit instead of 64-bit operands < 1551039214 576779 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :(or I'm looking at the wrong place) < 1551039282 163183 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: if you use the one-byte shortcut XCHG EAX,EAX with a REX prefix that does nothing, that will still be a nop < 1551039312 467645 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I'm not sure if you use the normal non-shortcut encoding that has the mod-r/m byte < 1551039340 942910 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1551039342 582961 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I think with the mod-r/m byte it will clear the top half of the registersso won't be a nop < 1551039381 635321 :int-e!~noone@int-e.eu PRIVMSG #esoteric :b_jonas: the question is whether the REX prefix does something in this case... namely turn the nop into a "proper" xchg eax,eax. < 1551039509 352615 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(I guess it could also raise a #UD, wouldn't that be fun :) ) < 1551039597 870087 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :int-e: no, I told you it doesn't < 1551039605 927153 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :even with the REX prefix, it would be a NOP < 1551039609 756630 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :or so I read the manual < 1551039623 604662 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :it might be a less efficient NOP of course, but still a NOP < 1551040352 600179 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net QUIT :Remote host closed the connection < 1551040393 392325 :int-e!~noone@int-e.eu PRIVMSG #esoteric :experimentally you're right < 1551041090 482498 :tromp!~tromp@ip-217-103-3-94.ip.prioritytelecom.net JOIN :#esoteric < 1551041211 257718 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` set -e; cd tmp; >a.c echo $'#include \n#include \n''int main() { uint64_t x = 0xC69B455dd809C270; asm(".byte 0x90" /* one-byte NOP */: "+a"(x)); printf("x=%016lX,\n", x); return 0; }'; gcc -fdiagnostics-color=never -Wall -O a.c; ./a.out < 1551041212 531499 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :x=C69B455DD809C270, < 1551041215 260318 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` set -e; cd tmp; >a.c echo $'#include \n#include \n''int main() { uint64_t x = 0xC69B455dd809C270; asm(".byte 0x87, 0xC0" /* ordinary XCHG EAX, EAX */: "+a"(x)); printf("x=%016lX,\n", x); return 0; }'; gcc -fdiagnostics-color=never -Wall -O a.c; ./a.out < 1551041216 460244 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :x=00000000D809C270, < 1551041261 149210 :int-e!~noone@int-e.eu PRIVMSG #esoteric :0x40 0x90 is what we were discussing < 1551041323 223509 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` set -e; cd tmp; >a.c echo $'#include \n#include \n''int main() { uint64_t x = 0xC69B455dd809C270; asm(".byte 0x40, 0x90" /* shortcut NOP with redundant REX prefix */: "+a"(x)); printf("x=%016lX,\n", x); return 0; }'; gcc -fdiagnostics-color=never -Wall -O a.c; ./a.out < 1551041324 700054 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :x=C69B455DD809C270, < 1551041329 583276 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :int-e: yep < 1551041470 308385 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :how do I request specifically the R8 register in a gcc extended asm statement? < 1551042275 125085 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` set -e; cd tmp; >a.c echo $'#include \n#include \n''int main() { uint64_t x = 0x0912A80D0A994D81; uint64_t y = 0xC8162E5AEE063460; asm("mov %1, %%r8\n\t.byte 0x45, 0x87, 0xC0\n\tmov %%r8, %1" /* XCHG R8D, R8D */: "+a"(x),"+r"(y):: "cc","r8"); printf("x=%016lX, y=%016lX,\n", x, y); return 0; }'; gcc -fdiagnostics-color=never -Wall -O a.c; ./a.out < 1551042276 287850 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :x=0912A80D0A994D81, y=00000000EE063460, < 1551042280 166521 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` set -e; cd tmp; >a.c echo $'#include \n#include \n''int main() { uint64_t x = 0x0912A80D0A994D81; uint64_t y = 0xC8162E5AEE063460; asm("mov %1, %%r8\n\t.byte 0x41, 0x90\n\tmov %%r8, %1" /* shortcut XCHG EAX, R8D */: "+a"(x),"+r"(y):: "cc","r8"); printf("x=%016lX, y=%016lX,\n", x, y); return 0; }'; gcc -fdiagnostics-color=never -Wall -O a.c; ./a.out < 1551042281 244074 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :x=00000000EE063460, y=000000000A994D81, < 1551043985 871859 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :``` set -e; cd tmp; >a.c echo $'#include \n#include \n''int main() { uint64_t x = 0x0912A80D0A994D81, z; register uint64_t y asm("%r8") = 0xC8162E5AEE063460; asm(".byte 0x41, 0x90" /* shortcut XCHG RAX, R8D */: "+a"(x),"+r"(y):: "cc"); z = y; printf("x=%016lX, y=%016lX,\n", x, z); return 0; }'; gcc -fdiagnostics-color=never -Wall -O a.c; ./a.out < 1551043987 136269 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :x=00000000EE063460, y=000000000A994D81, < 1551044013 679007 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :^ that's the official answer for how to get the value to the R8 register for the asm statement, per https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/Local-Register-Variables.html#Local-Register-Variables < 1551044656 310165 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :the required syntax is strange < 1551045063 118097 :xkapastel!uid17782@gateway/web/irccloud.com/x-umehqyighwkhjnps QUIT :Quit: Connection closed for inactivity > 1551045433 662236 PRIVMSG #esoteric :14[[07Pyhton (sic)14]]4 M10 02https://esolangs.org/w/index.php?diff=60071&oldid=60069 5* 03Something Fawful 5* (+2) 10/* Hello World */ fixed a typo in the second program that made it output "Hhllo World!" instead of "Hello World!" < 1551045509 219875 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I didn't know you could include the % in a local register variable, I've only seen it as `register uint64_t y asm("r8")`. < 1551045513 522992 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Both seem to work. < 1551045704 765605 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: the docs aren't specifically clear about this. I include the percent sign and hope that if I shouldn't include the percent then I'll get a warning or error. < 1551045802 780658 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :the inline asm expects at&t notation, so I expect I should name registers the way at&t notation names them < 1551045901 558880 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :That's reasonable, although so is the argument that % is just the sigil for a register in an assembly statement and not part of the register name. < 1551045932 975352 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :You do get an error for invalid names, so since both %r8 and r8 don't error out, I'm guessing they're treated the same. < 1551046118 376961 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: I don't know any sense in which it's not part of the register name, unless you're using intel syntax, which we clearly aren't using. the rust people argue that the name of the macro is `print` rather than `print!` and the `!` is a sigil to _invoke_ the macro, which makes sense because if you want to _define_ a macro, you don't use the bang. < 1551046136 186517 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I don't know a context where you refer to the register without the percent sign < 1551046150 490412 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :in C/C++ code with gcc or assembly code < 1551046361 353568 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Well, in a 'register' variable you can. :) < 1551046428 534202 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :More seriously, the GNU as manual says "AT&T register operands are preceded by ‘%’", which you can definitely read as saying the % part is not part of the register, but part of the syntax for referring to a register. < 1551046465 290962 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you can do intel syntax inline asm these days < 1551046489 749095 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Also, the canonical excample at https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/Extended-Asm.html#Extended-Asm puts "rdx" in the clobber list without a % prefix. < 1551046523 954377 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(Look for "rdtsc" on the page.) > 1551046539 133763 PRIVMSG #esoteric :14[[07Pyhton (sic)14]]4 M10 02https://esolangs.org/w/index.php?diff=60072&oldid=60071 5* 03Something Fawful 5* (+1) 10/* Truth Machine */ Fixed some errors in the code here too. I probably shouldn't have tried to copy the code directly from another computer. < 1551046560 998092 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(I don't know what an "excample" is.) < 1551046563 809352 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: hmm < 1551046575 823632 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :kmc: sure, by assembling with yasm < 1551046592 530644 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :You can use Intel syntax with GCC as well. < 1551046608 409717 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: ok, good point about that example in the manual < 1551046631 603750 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :By switching with -masm=intel globally, or by adding the right ".intel_syntax noprefix" directives around an inline asm segment. < 1551046669 932692 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(Though I don't think there is a "resume whatever the previous syntax was" directive, so you can't make an inline asm segment that works both with -masm=intel and not.) < 1551046672 752382 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :mhm < 1551046709 977994 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(They should have a .pop_syntax.) < 1551046718 109928 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yeah < 1551046730 786856 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :or like scoped to labels < 1551046745 311321 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :.intel_syntax noprefix 1f; ... 1: < 1551046748 993640 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the numbered relative labels are tg < 1551046762 152411 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :oh, there's popsection too < 1551046764 373575 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fizzie: youv'e seen the metadata table tricks that Linux does? < 1551046778 349562 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Probably not? < 1551046835 480104 :MDude!~MDude@71.50.54.203 QUIT :Ping timeout: 255 seconds < 1551046873 539440 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :here's an example https://github.com/torvalds/linux/blob/v4.20/arch/arm/include/asm/assembler.h#L246-L251 < 1551046908 539560 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :that macro inserts an instruction sequence x, and also writes an entry into a special section __ex_table. the linker is told with "a" to append all of these into that section < 1551046920 617583 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and the entry refers to the address of the instruction sequence < 1551046930 236474 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which is handled in object code using relocations in the usual way < 1551046936 877216 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :Linux uses this trick for many things < 1551046951 286164 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :this particular example, the goal is to annotate instructions which read from userspace memory < 1551046964 754541 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :so that if they fault, the kernel can return -EFAULT or whatever, instead of panicing as with a usual kernel-mode fault < 1551046966 974627 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :kmc: Linux used to have many dirty tricks back when gcc didn't have all the features they needed. these days less and less of them are needed. < 1551046983 514727 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :they also use it for various sorts of self modifying code < 1551046996 518556 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :for example, the kernel has a table of every single LOCK prefix in the code < 1551047007 278827 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :what? < 1551047012 32139 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :if a SMP-capable kernel is booted on single-core machine, it can overwrite those LOCKs with NOPs < 1551047024 357423 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :there are many forms of smc in the linux kernel < 1551047027 535231 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :wow that's scary < 1551047039 998012 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :in order to do tracing, debugging, and to reoptimize the same binary kernel for different CPUs at boot time < 1551047042 965132 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: what's even better < 1551047045 776511 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :if you hot(un)plug a CPU < 1551047050 258344 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :it will rewrite them /at runtime/ < 1551047053 461739 :MDude!~MDude@71.50.54.203 JOIN :#esoteric < 1551047053 624307 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :yeah, there was probably an intermediate time betweenm the time when everyone had non-SMP machines and when everyone had SMP machines < 1551047066 340322 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :mhm < 1551047067 854033 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :kmc: wait, seriously? < 1551047078 164036 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I know debian shipped a separate -smp kernel at one point, which would avoid the need for this < 1551047087 134671 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but it's useful in general to have a single kernel binary that works well on as many machines as possible < 1551047090 139020 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: I believe so < 1551047090 178722 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :there are machines with hotplugged cpus but only one core in a cpu? < 1551047094 519720 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I guess? < 1551047100 818339 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :kmc: sure, the separate smp makes sense because there are differences other than lock prefixes < 1551047106 277460 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yeah < 1551047118 369724 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :but that was back in x86_32 < 1551047121 900051 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and of course ksplice uses self modifying code too < 1551047126 178781 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which is how I know about thi sstuff < 1551047133 166533 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :because it also has to play nice with the OTHER forms of smc < 1551047144 568006 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :most x86_64 cpus have more than one core, so the non-smp kernels became irrelevant < 1551047154 788906 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :well < 1551047155 780950 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :not quite < 1551047164 613154 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :you might still want them in a virtualized environment < 1551047167 916675 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :smc tricks use stop_machine() which essentially gives one kernel thread full control of the machine (ignoring SMM and the other stuff that goes on below the OS layer) < 1551047177 246631 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: I think that's part of the justification, yeah < 1551047210 30427 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :and some people do run linux on underpowered arm machines < 1551047215 232602 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :those may still be single-cored < 1551047215 294804 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fun fact: the PowerBook Duo had a hot-plug FPU < 1551047222 199546 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :in the dock < 1551047234 37717 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :these things are scary < 1551047243 584338 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you could use it as a graphics workstation at your desk, then take it portable and run the same code, albeit slower, with soft FPU < 1551047247 647633 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :really neat imo < 1551047257 522797 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I guess the modern version is having a GPU on Thunderbolt or something < 1551047262 191067 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :features that are only ever used in servers in banking industry that have to be super-reliable < 1551047267 44735 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yeah < 1551047281 818447 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :do they have a hot-plug motherboard too? < 1551047286 775568 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I don't know how that would work < 1551047312 167849 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the powerbook? < 1551047317 223827 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :FPUs as discrete chips were common back then < 1551047330 180462 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you would need to run some bus lines from the internal mobo to the doct through the dock connector < 1551047336 15065 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but you'd probably need that for other things, anyway < 1551047359 290064 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :"run the same code, albeit slower, with soft FPU" => that was done a lot without hotplug too, on machines with optional cpus, such as the 386 and 486, where programs overwrite float operations at load time < 1551047361 168995 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think Lenovo has switched to Thunderbolt-based docks, and some of those do have external GPUs, like the https://www.lenovo.com/gb/en/accessories-and-monitors/docking/universal-cable-docks-thunderbolt/Thunderbolt3-Graphics-DockUK/p/G0A10170UK < 1551047361 412918 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the dock is a thing you slide the whole laptop into, like it's a huge tape cartridge or something :D < 1551047366 83743 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: right < 1551047391 565108 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: I think that was common on OS Classic because, even aside from this weird PowerBook, most macs didn't ship with a FPU, but many people would add one < 1551047392 723878 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :so that the first one and half bytes of the operation were either WAIT; ESC or INT < 1551047429 475058 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :unfortunately the 68LC040 has a hardware erratum which prevents kernel mode FPU emulation from working correctly :/ < 1551047439 95893 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :it needn't even be a discrete chip or anything, as long as the same binary is distributed to clients with different machines < 1551047462 519066 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :as I discovered when trying to install Debian on a LC 475 back... gosh, almost 20 years ago < 1551047469 887279 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :smh, i'm old now < 1551047475 667771 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :in fact I'm older than I've ever been < 1551047478 130063 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and now I'm older still < 1551047486 526838 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :oh, and it needn't even overwrite the individual calls in load time, so it doesn't need a symbol table, it can just have the emulation routines overwrite their caller < 1551047549 740985 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the 68k mac linux bootloader is an ordinary OS Classic program which kexecs linux < 1551047572 672803 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :it relies on macos to set up some of the hardware < 1551047583 367888 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and besides which the actual boot rom is only equipped to boot mac os < 1551047591 452241 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :(and maaaaybe A/UX) < 1551047658 115338 :SomethingFawful!63eb15ab@gateway/web/freenode/ip.99.235.21.171 JOIN :#esoteric < 1551047676 701115 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The PPC Mac Linux I was using ran the kernel hosted on the Mach microkernel. < 1551047679 898034 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :https://en.wikipedia.org/wiki/MkLinux < 1551047740 2989 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think the bootloader was slightly odd too. < 1551047742 83027 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yeah < 1551047746 293139 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I tried that as well < 1551047780 235146 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :kmc: I have no problem with that unless it slows down the boot process too much. doesn't windows do something like that too these days? < 1551047789 386360 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :hm? < 1551047803 906991 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you know, I've noticed that every bootloader eventually grows to be an OS, which needs its own bootloader < 1551047816 698362 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :as in, sometimes I suspect that it pre-loads some parts of the default windows during the boot menu, at least the parts it can safely discard if you choose to boot a different OS < 1551047820 589074 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(I think on the iBook I could run a more regular Linux? MkLinux was just on the Performa some-number-or-another.) < 1551047821 643040 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :maybe < 1551047825 651816 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :the windows bootloader that is < 1551047835 764169 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fizzie: yeah, the G3+ OpenFirmware macs are easier to do linux < 1551047841 394263 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I ran stock Debian on a toilet-seat iBook among others < 1551047852 812149 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :OFW can load an ELF (or whatever) image kernel easily < 1551047858 723817 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Right, yes, they did the OpenFirmware thing. < 1551047863 667010 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :"toilet-seat iBook"? what's that? < 1551047867 306027 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: google it > 1551047876 926646 PRIVMSG #esoteric :14[[07Pyhton (sic)14]]4 10 02https://esolangs.org/w/index.php?diff=60073&oldid=60072 5* 03Something Fawful 5* (+14) 10lowercased the title. < 1551047890 624109 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I don't know much about older apple hw, because they weren't too popular here < 1551047914 102749 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :the modern apple are more popular these days < 1551047928 244251 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :still not as popular as in the US, I believe < 1551047935 255299 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :OpenFirmware has a Forth shell, it's the greatest thing. < 1551048004 756182 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yep < 1551048028 868306 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :a friend of mine spent a while writing a QR code decoder in OFW forth, for OLPC < 1551048073 732900 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :they have a supported way to root the machines, but they ship locked down in order to deter theft. the idea is that you get the lock key out of band. and the easiest / cheapest way would be a qr code < 1551048082 607854 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but I think in the end it didn't work :/ < 1551048094 501102 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I used loadlin on DOS to load linux. DOS is less of an operating system than the stuff they cram into boot loaders these days. < 1551048120 318354 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :me too < 1551048127 599010 :int-e!~noone@int-e.eu PRIVMSG #esoteric :or BIOSes < 1551048165 434214 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you could use loadlin and then you could use other hacks to run your Linux root filesystem on FAT16 so they could coexist without partitioning < 1551048174 776200 :SomethingFawful!63eb15ab@gateway/web/freenode/ip.99.235.21.171 PRIVMSG #esoteric :okay uh, question, if I have a Python interpreter for the esolang I have recently made, would I be wanting to upload it on an external server somewhere or would I be uploading it to esolangs.org directly. < 1551048190 879063 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :C:\LINUX < 1551048244 353988 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: when i give up on all software should i write in c or should i make a new language first < 1551048246 323265 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :twh < 1551048248 886991 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :int-e: yes, those too < 1551048268 439688 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :When I was making sure my SS5 was still at least somewhat working (before giving it away), it turned out the EEPROM chip had given up, and the only way I could make it boot was to say "1 0 mkp real-machine-type 1 mkp 8 2 mkp 0 3 mkp 20 4 mkp 87 5 mkp cc 6 mkp 1d 7 mkp c0 c mkp ff d mkp ee e mkp 0 f 0 do i idprom@ xor loop f mkp" in the OpenBoot prompt on every restart. < 1551048275 88818 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :how large is grub2 these days? < 1551048289 592002 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I hope it still fits a floppy at least < 1551048294 125890 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :hmm < 1551048297 528304 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :that's quite a mouthful < 1551048307 886162 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: probably not including every single module < 1551048315 447921 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but for a minimal boot yeah < 1551048315 619898 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :cna loadlin append-load a kernel that's stored on more than one floppy disk? < 1551048320 686660 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :heh < 1551048327 569465 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :good question < 1551048333 610281 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :because these days kernels don't fit floppies either < 1551048386 504185 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :SomethingFawful: If it's of non-trivial size, it's probably a better bet to pick one of the code hosting sites (github, gitlab, bitbucket) and link to that. Or https://github.com/graue/esofiles if graue is actually still accepting pull requests. < 1551048403 53385 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :kmc: huh, I never tried to have linux and dos coexist without partitioning, except in as much as storing the kernel on the DOS partition < 1551048424 158861 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :I do know that you can use umsdos or whatever that thing is called to do that, but I don't think it's a particularly good idea < 1551048442 802998 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :hey wait < 1551048447 326299 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :someone came in with an on-topic question < 1551048457 77730 :SomethingFawful!63eb15ab@gateway/web/freenode/ip.99.235.21.171 PRIVMSG #esoteric :yes, yes I did. < 1551048495 944031 :SomethingFawful!63eb15ab@gateway/web/freenode/ip.99.235.21.171 PRIVMSG #esoteric :I want to say at less than 5 KiB it's size is currently qualifiable as Trivial, but we'll see when I get those last 2 functions done. < 1551048537 873045 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :SomethingFawful: if the interpreter isn't too large and you can and want to allow distributing it without license constraints per https://esolangs.org/wiki/Esolang:Copyrights , then you can put it on the wiki < 1551048552 978053 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :you can link from an externally hosted copy no matter what < 1551048574 177105 :SomethingFawful!63eb15ab@gateway/web/freenode/ip.99.235.21.171 PRIVMSG #esoteric :okay thanks < 1551048642 849887 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think somewhere between two and ten screenfuls of text is the boundary what's still reasonable to embed in a wiki article. < 1551048660 534873 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I don't know what you can do as a file upload, I think the existing ones are almost exclusively pictures. < 1551048698 540164 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :To run DOS program and Linux on same computer I just use Linux, and then use a emulator to run the DOS programs. (There is still the use with DOS; it boots much faster than Linux or Windows, and if you use only DOS programs then it may work much better than other operating systems. Or if you want a sufficiently small operating system for some simple thing, DOS will do.) < 1551048699 977713 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Apparently not "almost" but "entirely", per https://esolangs.org/wiki/Special:MediaStatistics < 1551048749 611026 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :zzo38: well sure, that is the reasonable thing to do _now_, when we have machines with tons of memory < 1551048751 125604 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(Why does Bitz hello world2.jpg have application/photoshop as its MIME type, and no links?) < 1551048759 744519 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :and a powerful video card < 1551048803 967987 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :fizzie: we're in esoteric-land. you could upload a polyglot that's both an image and an interpreter. < 1551048806 592343 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, but still if you have a machine with less memory or other video card, is another thing you might use DOS for, perhaps. < 1551048835 488986 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :b_jonas: In this case, looks like someone has uploaded a .psd file with a .jpg extension. < 1551048840 706988 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :zzo38: yes, that's why back when I only had such machines, I dual-booted rather than used an emulator < 1551048848 740404 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :also the emulator software was more buggy back then < 1551048880 228500 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :psd? what's that? < 1551048891 11124 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Photoshop's native file format. < 1551048892 4500 :SomethingFawful!63eb15ab@gateway/web/freenode/ip.99.235.21.171 PRIVMSG #esoteric :photoshop document < 1551048900 197499 :b_jonas!~x@catv-176-63-24-151.catv.broadband.hu PRIVMSG #esoteric :ah < 1551048909 714845 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(Gimp can open it, that's why I know what's inside.) < 1551049478 239201 :xkapastel!uid17782@gateway/web/irccloud.com/x-mntolrezwyifxmfz JOIN :#esoteric > 1551050895 649858 PRIVMSG #esoteric :14[[07Pyhton (sic)14]]4 10 02https://esolangs.org/w/index.php?diff=60074&oldid=60073 5* 03Something Fawful 5* (+108) 10added a link to the offical implementation. < 1551051149 954523 :AnotherTest!~turingcom@d51A4B8E1.access.telenet.be QUIT :Ping timeout: 246 seconds < 1551052071 755179 :oerjan!oerjan@sprocket.nvg.ntnu.no JOIN :#esoteric < 1551052335 573650 :Essadon!~Essadon@81-225-32-185-no249.tbcn.telia.com QUIT :Quit: Qutting