< 1568851213 692287 :FreeFull!~freefull@defocus/sausage-lover QUIT : < 1568851416 4856 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: I'm not sure about whether it's *too* much. :P < 1568851446 968295 :oerjan!oerjan@sprocket.nvg.ntnu.no JOIN :#esoteric < 1568851536 930125 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :just backed up echidna-uno < 1568851578 951809 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`` date && time; < 1568851579 829816 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :real: 0m0.000s, user: 0m0.000s, sys: 0m0.000s \ Thu Sep 19 00:06:19 UTC 2019 < 1568851595 831957 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The empty command: it's fast. < 1568851607 808348 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Running commands isn't that fast. < 1568851633 619107 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :takes several seconds to compile echidna < 1568851816 895217 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i'll go time it < 1568851889 588908 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :`datereal 0m0.901s < 1568851889 805425 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :user 0m0.512s < 1568851889 805459 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :sys 0m0.264s < 1568851890 342608 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: datereal 0m0.901s: not found < 1568851897 406806 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :oops < 1568851938 21080 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :stupid scrollwheel < 1568852014 291568 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION scrolls a bit in the logs and notices someone called PaniniTheDevelop < 1568852034 866937 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i'm now hoping for a sanskrit-grammar-based esolang < 1568852051 891147 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION won't read all the logs these days, alas < 1568852057 849706 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :real 0m2.296s < 1568852058 22178 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :user 0m1.595s < 1568852058 58310 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :sys 0m0.674s < 1568852067 707782 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :that's another machine < 1568852111 877190 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :the one i do most my coding on < 1568852143 215077 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :hi oerjan < 1568852150 722408 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :hi Lykaina < 1568852162 367362 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :how's agora? < 1568852181 300432 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i don't know, i'm about a month backlogged, although it's still alive < 1568852187 228507 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :wow < 1568852193 620898 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :make that 1 month 11 days < 1568852224 134370 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :where i'm at they were doing a Birthday Tournament based on the Fantasy Rules Committee < 1568852256 963189 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i'm thinking of rejoining < 1568852269 647077 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and trying to clear up bugs for a broken space minigame < 1568852279 843318 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(in Agor itself) < 1568852282 770160 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :*Agora < 1568852342 505409 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :but i need to find out if any of my email addresses are still receiving stuff < 1568852346 653229 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION is actually trying to read _that_ log, but has about 450 messages left < 1568852398 826901 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :So is there a nomic-style thing based on something computer-interpretable which is good? < 1568852416 362560 :int-e!~noone@int-e.eu PRIVMSG #esoteric :oerjan: are you adding messages to the log faster than you read them? < 1568852453 337020 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :shachaf: i don't know but i had some fun in schemenomic way back < 1568852500 946594 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :int-e: not on average but i go several days between binges < 1568852510 987168 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :well, it's about the same days i'm on irc < 1568852517 85159 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :a bit fewer < 1568852861 700661 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :once again schlock mercenary (from yesterday) triggers my fridge logic: what's to prevent the pa'anuri from obliterating the station with their long gun the moment they notice it's been retaken? < 1568852898 205892 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :unlike the ship, it's unlikely to be able to do massive evasion maneuvers < 1568853082 50136 :Cale!~cale@2607:fea8:995f:fb71:9518:1517:596c:356f QUIT :Remote host closed the connection < 1568853110 730327 :int-e!~noone@int-e.eu PRIVMSG #esoteric :oerjan: nothing? it is a great risk :P < 1568853168 668730 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(I don't know where Howard Taylor is going with this atm. My thought was that if you want to kill off a nigh-indestructible amorph, this is one way to do it.) < 1568853182 523565 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru QUIT :Ping timeout: 276 seconds < 1568853202 891609 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :he's been killed off before, restored from backup < 1568853210 485729 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and these days everyone has backups < 1568853216 46193 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Yeah that's the hole in my idea. < 1568853229 405967 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Maybe the backup servers... but those have never been talked about. < 1568853263 622985 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i hope they do multiple redundancy. < 1568853335 557865 :int-e!~noone@int-e.eu PRIVMSG #esoteric :This is the last book... will he bring up old, forgotten lore? Gate keepers, attorney drones (too bad about that contract)... < 1568853375 63445 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and it's not clear how distributed they are. many people might not want Petey / the Oafans to have that complete control so maybe they have their own servers. < 1568853388 749965 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Anyway. I like the characters, I've always liked the grand scheme of things so far... I forgive the details :) < 1568853406 694594 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I < 1568853414 786396 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I'll wait to see where this is going. < 1568853420 151416 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :another fridge logic: _if_ petey controls all the backups then he could essentially do the Gatekeeper scheme without killing people < 1568853465 880087 :int-e!~noone@int-e.eu PRIVMSG #esoteric :But he's benevolent... right?! :P < 1568853491 432932 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i'm hoping to see Pa'anuri talk at some point. for other enemy races, tayler has pretty much always shown that not everyone is evil, but not for the pa'anuri. < 1568853551 979163 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Again, I'm happy to wait and see. < 1568853555 191899 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :well maybe not always. but often. < 1568853581 452638 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( attorney drones are another exception :P ) < 1568853586 998988 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i'm thinking there are so many loose ends, how can they possibly fit in one book. < 1568853591 63242 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :true < 1568853597 481788 :Cale!~cale@2607:fea8:995f:fb71:9518:1517:596c:356f JOIN :#esoteric < 1568853622 771612 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I suspect some loose ends will be left behind for good. < 1568853628 930994 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Especially from the early books. < 1568853831 328521 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :yeah < 1568853915 151593 :int-e!~noone@int-e.eu PRIVMSG #esoteric :In the meantime I'm wondering who exactly the attacker in GG is. (Is it Lucrezia? Is it a van Rijn clank?) < 1568853935 173057 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i thought it was pretty clearly lucrezia < 1568853948 524410 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :she admits to having killed Queens before, after all < 1568853961 121842 :int-e!~noone@int-e.eu PRIVMSG #esoteric :It's just... time travel is so weird. < 1568853998 791182 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and she can hop bodies too < 1568854001 555710 :int-e!~noone@int-e.eu PRIVMSG #esoteric :But yeah maybe for this particular question I'm just stupid. < 1568854029 555022 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :i'm also wondering whether she's organic or a clank, though, the color is a bit ambiguous < 1568854338 223055 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :lucrezia's time travel appears to be of the novikov self consistency principle kind, which is still mind bending but a bit saner than rewriting timelines < 1568854472 219868 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :incidentally, that purple extradimensional gentleman apparently has a name that is only visible in the chapter selection menu < 1568854493 874595 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(although people on the girl genius wiki have picked it up) < 1568855181 649860 :imode!~imode@unaffiliated/imode QUIT :Ping timeout: 268 seconds < 1568855610 980247 :b_jonas!~x@catv-176-63-24-53.catv.broadband.hu PRIVMSG #esoteric :"This is the last book..." => ah yes. and it's the last book of OotS too. it's crazy how far we've gone. we've been reading it for a while. < 1568859063 270229 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1568861554 307988 :imode!~imode@unaffiliated/imode JOIN :#esoteric < 1568863022 360873 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 265 seconds < 1568863055 687024 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: does this have enough from echidna? http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc.pdf < 1568863105 492144 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :oh, 256 1-byte memory on this one < 1568864460 419675 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :correction: http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_1.pdf < 1568867183 435418 :tromp_!~tromp@2a02:a210:1585:3200:4488:d02a:6f94:a883 QUIT :Remote host closed the connection < 1568867242 202925 :oerjan!oerjan@sprocket.nvg.ntnu.no QUIT :Quit: Nite < 1568867846 594275 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 276 seconds < 1568867916 931906 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1568869750 540327 :tromp!~tromp@2a02:a210:1585:3200:5b3:382d:64ed:7ec JOIN :#esoteric < 1568870030 519359 :tromp!~tromp@2a02:a210:1585:3200:5b3:382d:64ed:7ec QUIT :Ping timeout: 276 seconds < 1568873713 347871 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :correction: http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_0002.pdf < 1568873747 900552 :rodgort!~rodgort@static.38.6.217.95.clients.your-server.de QUIT :Quit: Leaving < 1568874000 38482 :rodgort!~rodgort@static.38.6.217.95.clients.your-server.de JOIN :#esoteric < 1568874097 953577 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :night < 1568874106 879882 :Lykaina!~lyka@unaffiliated/schrodingerscat QUIT :Quit: leaving < 1568875662 527715 :tromp!~tromp@2a02:a210:1585:3200:5b3:382d:64ed:7ec JOIN :#esoteric < 1568875775 962679 :tromp_!~tromp@2a02:a210:1585:3200:755b:ea9c:ac9f:4afe JOIN :#esoteric < 1568876036 521162 :tromp!~tromp@2a02:a210:1585:3200:5b3:382d:64ed:7ec QUIT :Ping timeout: 276 seconds < 1568876737 485039 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Read error: Connection reset by peer < 1568877035 913979 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1568878795 2287 :b_jonas!~x@catv-176-63-24-53.catv.broadband.hu QUIT :Remote host closed the connection > 1568880255 704085 PRIVMSG #esoteric :14[[07User talk:Fizzie14]]4 N10 02https://esolangs.org/w/index.php?oldid=66249 5* 03YamTokTpaFa 5* (+365) 10/* Requesting to install Extension:Math to this wiki */ new section > 1568880312 677705 PRIVMSG #esoteric :14[[07Totally Accurate Malbolge14]]4 10 02https://esolangs.org/w/index.php?diff=66250&oldid=55343 5* 03YamTokTpaFa 5* (+29) 10 > 1568880341 95753 PRIVMSG #esoteric :14[[07Cubestate14]]4 10 02https://esolangs.org/w/index.php?diff=66251&oldid=53053 5* 03YamTokTpaFa 5* (+24) 10 < 1568880567 362209 :imode!~imode@unaffiliated/imode QUIT :Ping timeout: 265 seconds > 1568880622 71704 PRIVMSG #esoteric :14[[07Template:Disambig14]]4 10 02https://esolangs.org/w/index.php?diff=66252&oldid=30340 5* 03YamTokTpaFa 5* (+160) 10 > 1568880638 499673 PRIVMSG #esoteric :14[[07Template:Disambig14]]4 M10 02https://esolangs.org/w/index.php?diff=66253&oldid=66252 5* 03YamTokTpaFa 5* (-1) 10 > 1568880830 884703 PRIVMSG #esoteric :14[[07Esolang talk:Introduce yourself14]]4 N10 02https://esolangs.org/w/index.php?oldid=66254 5* 03YamTokTpaFa 5* (+255) 10/* Shall we archive this project page regularly? */ new section > 1568880896 128175 PRIVMSG #esoteric :14[[07Mindcrush14]]4 10 02https://esolangs.org/w/index.php?diff=66255&oldid=40559 5* 03YamTokTpaFa 5* (+60) 10 > 1568880924 724295 PRIVMSG #esoteric :14[[07Codesine/implementation14]]4 10 02https://esolangs.org/w/index.php?diff=66256&oldid=44357 5* 03YamTokTpaFa 5* (+30) 10 < 1568881686 870642 :cpressey!~cpressey@5.133.242.4 JOIN :#esoteric < 1568881715 958206 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric > 1568882555 804544 PRIVMSG #esoteric :14[[07FISHQ9+14]]4 10 02https://esolangs.org/w/index.php?diff=66257&oldid=53379 5* 03Dtuser1337 5* (+4) 10/* C */ < 1568883163 360391 :tromp_!~tromp@2a02:a210:1585:3200:755b:ea9c:ac9f:4afe QUIT :Remote host closed the connection < 1568883253 565364 :tromp!~tromp@2a02:a210:1585:3200:cc8a:2e46:2301:50de JOIN :#esoteric < 1568883386 975222 :tromp_!~tromp@2a02:a210:1585:3200:c490:6708:de31:2ddc JOIN :#esoteric < 1568883553 569773 :tromp__!~tromp@2a02:a210:1585:3200:94f6:a8b7:5dd5:cb6a JOIN :#esoteric < 1568883563 542222 :tromp!~tromp@2a02:a210:1585:3200:cc8a:2e46:2301:50de QUIT :Ping timeout: 276 seconds < 1568883639 977137 :tromp_!~tromp@2a02:a210:1585:3200:c490:6708:de31:2ddc QUIT :Ping timeout: 252 seconds < 1568883875 529780 :tromp__!~tromp@2a02:a210:1585:3200:94f6:a8b7:5dd5:cb6a QUIT :Ping timeout: 276 seconds < 1568884367 990344 :tromp!~tromp@2a02:a210:1585:3200:94f6:a8b7:5dd5:cb6a JOIN :#esoteric > 1568884709 13347 PRIVMSG #esoteric :14[[07User talk:Fizzie14]]4 10 02https://esolangs.org/w/index.php?diff=66258&oldid=66249 5* 03Fizzie 5* (+901) 10/* Requesting to install Extension:Math to this wiki */ Thoughts. < 1568884856 951610 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1568885110 878391 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :fizzie: "0b10" is a pp-number (n1570 6.4.8p1), thus by 6.4p4 parsing it as "0 b 10" is not allowed; so this is a syntax error as there's no valid parses < 1568885138 314084 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's a nice example in 6.4p5 that specifically talks about this case, and it's compared to the example of x+++++y (which is also a syntax error) < 1568885158 689221 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although I guess this is more about lexing than parsing < 1568885243 257810 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :now, you can certainly make a reasonable argument that pp-numbers shouldn't allow random letters embedded in them, but they dod < 1568885244 940802 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*do < 1568885311 241400 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :ais523: Oh, I didn't notice it has got /identifier-nondigit/ in it. < 1568885317 214452 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, re the discussion of time(1): how does that command actually work? what's the API for timing commands? < 1568885317 912265 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :That's a bit funky. < 1568885341 125172 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I just saw it's got special formats for e, E, p, P and thought it'd be an exhaustive list. < 1568885356 923989 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :e, E, p, P are the only letters that bridge a sign to their right < 1568885369 255252 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :other letters are allowed but don't incorporate a + or - to their right as part of the number < 1568885374 530102 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 JOIN :#esoteric < 1568885415 953837 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, this reminds me of a huge annoyance I have with languages that allow - in identifiers < 1568885433 995232 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the problem is that identifiers then end up with a random mix of hyphens and underscores in and it's hard to remember which to use < 1568885435 399562 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: that is at least more consistent with C++'s relaxed rules, which allow most combinations of numbers and letters as a token lexed to a user-defined literal < 1568885442 784981 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :By the way, the context for this was whether GNU C (with -fno-gnu-keywords, otherwise it's clear) is a superset of C in the sense that all strictly conforming programs behave the same. < 1568885448 133337 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if a language allows hyphens in identifiers, it should probably ban underscores, and vice versa < 1568885449 110913 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :(and their more relaxed rules for string literals and character literals) < 1568885459 753963 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :this way we can have one preprocessor that works for all language variants < 1568885484 294049 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah right, the preprocessor is meant to be the same between C and C++, isn't it? < 1568885484 381263 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I was reading through the extensions and landed on binary literals in the hopes of making those valid, but looks like the pp-number thing precludes that. < 1568885531 864118 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in C89/GNU89, you can use // comments to tell the two languages apart using the //*…*/ trick < 1568885558 764637 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, there's also the extern inline thing < 1568885559 238134 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: I think the opposite way, a language should allow hyphens, underscores, and one or two more characters in identifiers, because that way you can conveniently put base64-encoded stuff into generated identifiers, and still have a delimiter < 1568885581 866653 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but of course printable ascii characters are sparse, so this may not be practical in some languages < 1568885582 229267 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but maybe -fno-gnu-keywords would disable that? logically it should < 1568885613 798905 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and hyphens are already used for other meanings in C and many languages, so we shouldn't allow hyphens in particular < 1568885618 935023 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :ais523: I think it disables 'inline' in C90 mode. < 1568885622 485651 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :isn't that just an argument for allowing two punctuation marks as part of an identifier? < 1568885631 980665 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Er, GNU90 mode. < 1568885636 405670 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :many languages have that, the most common choices being $ and _ < 1568885637 899532 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do you think languages should allow spaces in identifiers, like ALGOL 68? < 1568885661 889393 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: oddly the use of _ within identifiers may have indirectly come from ALGOL 68 < 1568885667 531813 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: yes, it doesn't need to be hyphen specifically, though there's some precedent for hyphens < 1568885685 700069 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in ambiguous situations you used a leading . to mark something a keyword and leading or trailing _ to mark something as an identifier < 1568885691 372556 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :there's also precedent for not allowing hyphens, but allowing _ @ $ . and I think one more in assembly syntax < 1568885694 643908 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :let me check < 1568885697 661422 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and with two-word identifiers it was usual to put the _ between the words to mark them both as identifiers < 1568885716 732008 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :though this is used more on windows < 1568885727 615293 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: it makes a lot of sense for asm to allow at least one character the source language doesn't < 1568885731 397614 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so that you can generate temporary identifiers < 1568885740 300997 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: yes, or mangled identifiers < 1568885763 702389 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :some languages allow arbitrary strings as identifiers, but you can't write them literally in source code < 1568885771 579058 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but on the other hand, it also makes sense to allow that character in the source language, possibly with some escaping, but heavily discourage using it in production, because it may clash with temporary or mangled identifiers, < 1568885784 268624 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's some escape syntax, normally similar to that for strings but with a different delimeter < 1568885796 554582 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :ais523: afaik php does that < 1568885807 331041 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :so that if you _really_ want to, you can write C code that directly refers to C++ identifiers, even if they're mangled the windows way with @ signs, rather than the unix way with ZZ prefix < 1568885821 514474 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :like, you can happily define $GLOBALS[""] but you cannot access it via $ < 1568885823 468748 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :we already have this working as the de facto way to access fortran identifiers from C < 1568885831 241681 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :you just append an underscore < 1568885866 894076 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :VHDL actually disallows two consecutive underscores from appearing anywhere in an identifier < 1568885868 308348 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523: Was this on plaforms that didn't support bold keywords? < 1568885871 29079 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :presumably for this sort of reason < 1568885874 621189 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: i.e. all of them < 1568885878 168911 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :"arbitrary strings as identifiers, but you can't write them literally in source code" => yeah. perl allows arbitrary or almost arbitrary strings, definitely much more freely than the ordinary identifier syntax < 1568885892 701914 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and in fact this is used for some internal hidden stuff, although somewhat inconsistently < 1568885893 817499 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"keywords in bold, identifiers in italic" is the "official" definition of the language but nobody actually stores programs like that < 1568885898 167758 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Should I support spaces in identifiers? < 1568885911 548726 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, why not? < 1568885920 122406 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It works for colorForth. < 1568885991 660365 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :https://sourceware.org/binutils/docs-2.32/as/Symbol-Intro.html#Symbol-Intro says that gas allows $ _ . as punctuation < 1568886007 138708 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :details depend on the architecture conventions < 1568886063 914213 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :shachaf: that too depends on the language. in some languages it makes sense, in others it doesn't. it can also make sense to allow but _ignore_ spaces in identifiers. < 1568886102 641453 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: :: and ' are treated as synonymous inside an identifier < 1568886123 743786 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in Perl < 1568886130 562979 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: IIRC only if you use symbolic references, not if you access the symbol table directly < 1568886132 715958 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :let me check < 1568886146 167234 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :also :: is special because it delimits packages < 1568886213 9606 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if you're accessing the symbol table directly, is it even an identifier any more? < 1568886288 252253 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :anyway, ${":'::"} and ${"::':"} turn out to be different variables (the latter is the same variable as ${":::::"}) < 1568886301 353882 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :also :: is special because it delimits packages < 1568886310 427143 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :`perl -e $f::g = 3; $t = 4; $u = 5; $::{"f::g"} = *t; $::{"f'g"} = *u; print join(",", ${"f::g"}, ${"f'g"}, ${$::{"f::g"}}, ${$::{"f'g"}}); < 1568886311 278942 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :3,3,4,5 < 1568886329 194627 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :^ right. though I think a few of the rules have changed at some point after perl 5.12 < 1568886340 832392 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes, I know, ' is special for the same reason < 1568886357 929546 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this is mostly useless in modern Perl, but it has lead to some interesting modules like ACME::Don't < 1568886364 311449 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Ah, the T_PAAMAYIM_NEKUDOTAYIM token. < 1568886397 804070 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think they at least changed the error message to no longer say that in PHP, and added T_DOUBLE_COLON as an alias for the token. < 1568886416 326197 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :is there an explanation for why it was in Hebrew in the first place? IIRC the other tokens weren't < 1568886418 810202 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: yeah, maybe it doesn't count as an identifier then, I don't know. the symbol table still doesn't behave like an ordinary hash, but its keys mostly do, only its values don't < 1568886427 524390 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :…did PHP's parser use strlen for hashing too? :-D < 1568886460 268773 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think it was in Hebrew just as a little easter egg about the developers. < 1568886627 272928 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(the reason PHP's built-in functions are named so inconsistently is that they used to be hashed using strlen, and thus needed a wide distribution among the possible names) < 1568886684 107409 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :ew < 1568886698 593249 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :One odd thing is that "nekudatayim" would be a more correct transliteration. < 1568886776 882775 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :one of my favorite php bugs was that matching for class names or interfaces is made on lowercase of the name. this results in class Foo implement BarInterface not working on turkish locales because lowercase will result in a small i without a dot which does not match the small i with the dot that it's matched against < 1568886885 902877 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :myname: right. which is why compilers shouldn't care about the locale, not even as much as javac does, to decide what encoding to decode string literals from < 1568886929 459145 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if a program uses locale-sensitive operations (e.g. is written case-insensitively), it should have an explicit locale declaration, just like programs typically have an explicit encoding declaration < 1568886977 471953 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :also excel cares about the number and date formats that are set globally to the user, so some more obscure things that you can do with macros (that effectively eval a formula) will break if you use the spreadsheet on a machine with different settings, < 1568887042 605275 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's a very common mistake to use an IO routine intended for human-readable numbers on machine-readable numbers or vice versa < 1568887047 758710 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :because on locales with dot as the decimal separator, dot is parsed as decimal point, comma as argument separator, and semicolon as magic; on machines with comma as the decimal point, comma is parsed as decimal point, semicolon as function argument separator, and backslash as magic. < 1568887073 475288 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and these stupid industry systems that we use at work are even worse in this respect, depending on the global locale, as well < 1568887095 930396 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :though not quite in the way that excel is, they depend on the locale in different ways < 1568887117 194039 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but the end result is also that you sometimes have to set global locale settings to be able to run a program < 1568887332 970608 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the locale settings for a program should in theory tell it how to interact with the user and the user's files, terminals, etc. < 1568887345 4021 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so that means you need two different APIs, one for the user's files, one for the program's own files < 1568887352 241425 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but this is a distinction that not enough languages draw < 1568887365 4647 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and most that do, don't draw in a useful manner < 1568887389 653100 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(Java, for example, has a concept of a "program's own files" when working out the security implications of opening a file, but this doesn't extend to encoding/locale as far as I know) < 1568887520 853426 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :there's also the strange but tolerable results that you get on windows when a program uses a stock message box and the message in it is in a different language than the captions of the "Yes" and "No" buttons, because the latter come from windows's message language, the former from the program's < 1568887640 158891 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right, the Windows library has an API for "show me a dialog box with yes/no buttons" that's orders of magnitude easier to use than a custom dialog box would be < 1568887650 717961 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so that helps to get the dialog boxes standardised < 1568887671 918518 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(arguably it'd make sense to have an API for "show me a dialog box with n buttons, here's the text to show on them" but last time I checked, it didn't) < 1568887688 206582 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I wish platform APIs were much simpler, with things like that moved into a standard library that you can link if you want. < 1568887690 390474 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :Luckily I finally managed to get a configuration of windows at work where the message language of every program is english, even that of office and firefox. Though firefox breaks that config once every few years. < 1568887739 311671 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I assume your workplace normally uses Hungarian? < 1568887753 508522 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :So I only get mixed language stuff on machines other than my main one, though I do have to touch other machines (by remote access) often. < 1568887771 710086 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: yes, or at least mixed hungarian and english, because many programs aren't localized to hungarian < 1568887825 404530 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :surely the appropriate fallback for programs with no hungarian localisation would be Finnish? ;-) < 1568887835 189312 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :mind you, windows 10 sort of requires you to install the message localization of windows in order to be able to use hungarian keyboard layout, even when that's not the primary keyboard layout. so I do have a full copy of hungarian messages on windows on the hard disk. < 1568887887 91013 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oóőö < 1568887905 445557 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: they don't have localization in finnish too. they're Siemens programs, they sometimes have parts that are accidentally localized only in german, not in english, or that can be switched to english but default to german, or where a list in the english help file is sorted by the german order. < 1568887906 481775 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`òh nó´ < 1568887907 130703 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: òh: not found < 1568887909 439014 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I guess Hungarian isn't /that/ hard to type on a UK keyboard (at least under X/Gnome) < 1568887910 802607 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oops. < 1568887911 299414 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :double accents? < 1568887933 889188 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I use the keyboard layout US International (AltGr deadkeys) < 1568887945 60171 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's great. Everyone should have an AltGr key. < 1568887947 74085 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :myname: Hungarian has a double acute, which is basically an acute and umlaut at the same timee < 1568887949 191104 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :*time < 1568887972 179388 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :i have no idea on how to pronounce that, but i like it < 1568887974 562870 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although the "acute" is more of a length mark, the macron is more standard for that < 1568888000 561338 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: does that include uppercase letters like ÁÉŐ, and common punctuation like „a” b – c … d? < 1568888005 25686 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: what does altgr-` produce on that? < 1568888031 285381 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ÁÉÓ are easy enough < 1568888038 89819 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It behaves like a deadkey, so altgr-` a produces à < 1568888044 82125 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as are “”, but I don't know where the inverted ” is < 1568888045 435424 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But ` by itself produces ` < 1568888065 383038 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah, I see, so it's different from the UK layout but mostly just a rearrangement of keys it has < 1568888073 352756 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Which UK layout? < 1568888080 822858 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :on a UK layout, dead grave is AltGr-# < 1568888087 208828 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Aha. < 1568888101 864874 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The default US English layout has no deadkeys and no way to type à < 1568888138 42037 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and this is the standard UK English layout < 1568888149 161833 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there are variants but they're mostly things like Dvorak that make really major changes < 1568888166 942785 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that said, the altgr-combinations work differently on Linux and Windows, and kind-of suck on Windows < 1568888168 685419 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I should probably make my own layout or at least my own compose key file at one point. < 1568888177 562690 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: in theory yes, but I can be the devil's advocate and argue against. The letters á and é are overwhelmingly more common than any other accented letter in Hungarian, and "é" changes openness compared to "e" and "á" changes every vowel quality compared to "a". < 1568888177 801471 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Since I often don't know how to type the things I want. < 1568888181 126575 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :The length of vowels is hard to perceive in some context, you find situations where the length is uncertain in writing or can be changed deliberately for meter, and this is the most common for words ending in "ú", but very rarely happens for "e" vs "é". < 1568888181 282045 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Linux has a really complete set of them < 1568888193 247672 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Fortunately I have a good Unicode searcher and selector. < 1568888207 50516 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the only real change I made to the layout was to move Compose to Caps Lock (and Caps Lock to Shift-Shift), because Compose is used often enough that the default binding of Shift-AltGr is awkward < 1568888293 679048 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think I might also have re-enabled Ctrl-Alt-Backspace? but I don't want to try pressing it to find out < 1568888329 457396 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: I don't usually bother with the altgr combinations on windows. I mostly just switch back to the US-english layout for typing fancy puntuation. There are even some ascii characters for which I really can't remember which key is it on with altgr on the Hungarian layout. The ampersand is somewhere in the z-m row, but I don't know where. < 1568888345 749608 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(I know I re-enabled a lot of Alt-SysRq sequences but those don't have much to do with the keyboard layout, and in fact are IIRC typed in QWERTY regardless of what the layout is) < 1568888349 918940 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, I use Caps Lock for Esc. Maybe I should map Esc to compose. < 1568888361 314188 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :As for typing non-ascii stuff on windows, I mostly just open either Wordpad or Word, type the unicode character code in hex, press alt-x, and copy-paste. < 1568888389 955067 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :having a dedicated key for Esc that means something on its own is an antipattern :-( < 1568888452 927605 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's convenient but it's ambiguous with a lot of things that use Esc as a prefix < 1568888463 754036 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What uses Esc as a prefix? < 1568888468 465873 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I do type some hungarian text occasionally in mails, and for that I sometimes use the hungarian layout for words. < 1568888470 224683 :Taneb!~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0 PRIVMSG #esoteric : on a UK layout, dead grave is AltGr-# Oooh, this is helpful < 1568888499 472190 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Apparently in my layout, AltGr-Shift-3 a produces ā < 1568888531 592782 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ā is altgr-shift-] a for me < 1568888558 324373 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the dead accents are basically all AltGr + punctuation on the right side of the keyboard < 1568888580 21093 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :shachaf: I type that one by character code, 0x101 < 1568888587 767428 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's a sort-of logic to it, with AltGr-; AltGr-' AltGr-# acute, circumflex, grave < 1568888610 32222 :Taneb!~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0 PRIVMSG #esoteric :äåãāáâǎàă < 1568888621 724189 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"dead grave" sounds a lot scarier than it actually is < 1568888623 739369 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :AltGr-' AltGr-6 AltGr-` seems much more logical. < 1568888658 138949 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :indeed, but sequences like altgr-6 are risky to use for forward compatibility reasons < 1568888664 765737 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as that's where newly discovered punctuation marks go < 1568888677 728783 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(most notably, altgr-4 for €) < 1568888695 440991 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :AltGr-Shift-4 produces £ here < 1568888705 342397 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :there's a logic to the character codes in the iso-8859-1 and latin-extended-A regions too. the order is always the same: grave, acute, circumflex, tilde, umlaut, macron, brevis for vowels. < 1568888722 630599 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: ugh, I'd expect £ variants to be tied to 3 < 1568888824 175552 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :(It gets uglier for consonants.) < 1568888857 925044 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What does the x86-64 extension do? < 1568888859 579484 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :you must have lots of fun on international shippings < 1568888880 551404 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Presumably it gives you access to a second set of punctuation marks. < 1568888890 266290 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :huh? < 1568888924 821848 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you use the REX prefix on ISO-8859-1, I mean. < 1568888938 976661 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :aren't the REX prefixes capital letters? < 1568888948 24328 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :apart from the null REX prefix, which is @ < 1568888981 766177 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That's true. < 1568888985 568965 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm not sure whether rex.b or rex.x would be more appropriate for the second set of punctuation marks < 1568889013 176531 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0x41, 0x90, 0x42, 0x90, 0x44, 0x90, 0x48, 0x90 < 1568889013 771815 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Or rex.r? I don't think puncutation marks even use memory addressing. < 1568889015 405274 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 41 90 xchg %eax,%r8d \ 2: 42 90 rex.X xchg %eax,%eax \ 4: 44 90 rex.R xchg %eax,%eax \ 6: 48 90 rex.W nop < 1568889069 613646 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :actually, yes, rex.r is the only one that makes sense in almost every context < 1568889080 922864 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although, hmm, no < 1568889099 330954 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as the examples above show, rex.b is the relevant bit when you have only the one non-fixed argument < 1568889112 803123 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :presumably because most commands can take either register or memory < 1568889132 413922 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, hmm. < 1568889148 575227 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so I'm guessing we use a prefix of capital A to switch to the other set of punctuation marks < 1568889177 964014 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm xchg %al, %sil < 1568889179 54167 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 40 86 c6 xchg %al,%sil < 1568889186 388166 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But https://www.felixcloutier.com/x86/xchg says 90+rd is XCHG EAX,r32 < 1568889201 748048 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Why would that use REX.B instead of REX.R? < 1568889229 815292 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :more to the point, why doesn't one affect the EAX and the other affect the r32? < 1568889231 319385 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, I was mixed up. < 1568889249 972042 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :REX.R specifically affects the "reg" field of the ModR/M byte. < 1568889270 344141 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Actually, no, this is still kind of odd. < 1568889315 974745 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0x87, 0324 < 1568889317 36158 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 87 d4 xchg %edx,%esp < 1568889331 910732 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0x44, 0x87, 0324 < 1568889332 822349 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 44 87 d4 xchg %r10d,%esp < 1568889345 692384 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0x41, 0x87, 0324 < 1568889346 777965 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 41 87 d4 xchg %edx,%r12d < 1568889347 849131 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric : REX.B: 1-bit (msb) extension of the ModRM r/m field 1 , SIB base field 1 , or opcode reg field, permitting access to 16 registers. < 1568889360 516804 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, that's better than the source I read. < 1568889362 606346 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's very clear < 1568889373 650543 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :AMD invented this instruction set, so I use their documentation to learn about it < 1568889394 807153 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the " 1 " should be "¹", there was a character encoding mishap < 1568889401 486278 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's just a reference to a footnote < 1568889413 461206 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I wonder why it's not REX.R, though. < 1568889431 534385 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :To me the opcode reg field seems a lot like the modr/m reg field. < 1568889447 279475 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :"a prefix of capital A to switch to the other set of punctuation marks" => actually it's more like a prefix  in utf-8 < 1568889479 581401 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`unicode U+00C2 < 1568889480 541704 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​ < 1568889526 864540 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: your statement is really confusing, not because I don't understand it, but because trying to make sense of it means mixing character encodings in a really weird way < 1568889544 855335 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :are you assuming that the encoding is UTF-8-as-Latin-1 mojibake? < 1568889563 846760 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although mojibake isn't really a character encoding, it's something else < 1568889576 966499 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :/encoded/ mojibake is a character encoding < 1568889594 326817 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you should be able to set the locale to, say, "UTF-8 misinterpreted as Latin-1 and then encoded in UTF-8" < 1568890171 908424 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, actually Latin-2 would be the appropriate set to mojibake into in Hungary < 1568890192 320372 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but C2 is still  there < 1568891111 142725 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Is there any reason to target 32-bit x86 nowadays? < 1568891150 966684 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 246 seconds < 1568891223 559903 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :my current attitude towards 32-bit x86 is to not worry about performance at all on it < 1568891233 315005 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'll write programs that are only efficient on 64-bit systems < 1568891246 441588 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Will they still work on 32-bit systems? < 1568891261 888476 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :at the source code level, yes < 1568891270 997461 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't normally write raw asm, but when I do it's processsor-specific < 1568891450 489986 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :is there such a thing as processor-indipendent asm? < 1568891522 218891 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: "UTF-8 misinterpreted as Latin-1 and then encoded in UTF-8" is called double-utf, but yes < 1568891540 91802 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :myname: WebAssembly is created as that < 1568891545 848308 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there were a few attempts before then that didn't catch on < 1568891552 341411 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and the more common version is à before a letter to turn it to an accented letter < 1568891554 453136 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, C gets described at that sometimes, but I don't think it's an accurate description < 1568891667 766764 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and yes, it might not make more sense, but using a REX prefix to switch punctuation marks also doesn't make much sense < 1568891704 486441 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There's certainly various degrees of processor-dependedness, in the sense that you can target the lowest common denominator of a specific instruction set. > 1568892088 721329 PRIVMSG #esoteric :14[[07Salary program14]]4 N10 02https://esolangs.org/w/index.php?oldid=66259 5* 03A 5* (+410) 10Created page with "The [[Salary program]] is a well-known [[Golf]]-oriented [https://esolangs.org/wiki/Category:Program_forms program form] on [https://codegolf.stackexchange.com/ CGCC] [https:/..." < 1568892272 756063 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :myname: There's also LLVM. The idea is quite old (see e.g. https://en.wikipedia.org/wiki/P-code_machine) < 1568892381 200917 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :IIRC LLVM isn't portable, in the sense that different targeted platforms will have slightly differently looking LLVM < 1568892533 454184 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :Right, LLVM is lower level in the sense that if you want to generate good optimized machine code through LLVM, then you already optimize the LLVM code you write to the particular cpu and instr set and other circumstances. In particular, you tell LLVM where to use 32-bit integers and where 64-bit ones, and that's a decision that depends on your cpu. < 1568892577 571511 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :That seems like a rather ungenerous definition of "portable" to me < 1568892586 11615 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I wonder if it's portable in the sense of being able to transpile any LLVM IR onto any CPU < 1568892606 773659 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, more, compile/assemble, I guess < 1568892611 205202 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :not sure what the right verb for this is < 1568892663 195020 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It occurred me recently that "compiler", "assembler", and "linker" all have roughly the same meaning. < 1568892665 801664 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :At any rate, it bills itself as portable, and it's fairly widely used, so one should at least be aware of it. < 1568892704 29621 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It also billed itself as low-level, and as a virtual machine. < 1568892735 111697 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I didn't think of LLVM as a universal asm because I didn't think of it as an asm < 1568892999 175695 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :idk but the first line of the manual is "This document is a reference manual for the LLVM assembly language." < 1568893062 840837 :ais523!~ais523@unaffiliated/ais523 QUIT :Ping timeout: 258 seconds < 1568894103 884448 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The LLVM modules generated by clang aren't portable in the sense that they contain datalayout -- https://llvm.org/docs/LangRef.html#data-layout -- and target triple -- https://llvm.org/docs/LangRef.html#target-triple -- specifications that identify the target processor. But I think those are optional, and it's probably possible to write LLVM modules that are applicable to more than one target. < 1568894241 373024 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :cpressey: when LLVM bills itself portable, doesn't that mean that it can produce output machine code to multiple architecutres, but not necessarily from the same input? just like how gas and the rest of binutils are portable, they can assemble ARM assembly code to ARM machine code or x86_64 assembly code to x86_64 machine code, but not ARM assembly < 1568894241 877540 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :code to x86_64 machine code. < 1568894264 764735 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ah yes, that's what ais hints about the word "portable" I guess < 1568894336 65367 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :AIUI, the LLVM IR also encodes assumptions about the platform's ABI if you call anything external to the program, so it's not portable in that sense. < 1568894359 422360 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :http://llvm.org/docs/FAQ.html#can-i-compile-c-or-c-code-to-platform-independent-llvm-bitcode "Also, since many platforms define their ABIs in terms of C, and since LLVM is lower-level than C, front-ends currently must emit platform-specific IR in order to have the result conform to the platform ABI." < 1568894424 270045 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :But a self-contained program written in the LLVM IR might be "portable" to some degree. > 1568894685 518487 PRIVMSG #esoteric :14[[07Greentext14]]4 10 02https://esolangs.org/w/index.php?diff=66260&oldid=55935 5* 03YamTokTpaFa 5* (+9) 10 > 1568894743 527963 PRIVMSG #esoteric :14[[07Template:WIP14]]4 M10 02https://esolangs.org/w/index.php?diff=66261&oldid=66184 5* 03YamTokTpaFa 5* (-2) 10 > 1568895034 822262 PRIVMSG #esoteric :14[[07Salary program14]]4 10 02https://esolangs.org/w/index.php?diff=66262&oldid=66259 5* 03A 5* (+209) 10 < 1568895061 873673 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1568895209 391084 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :OK, so LLVM is portable as a language in its own right, but can't be portable when used as a backend for something else because the "something else" may need to vary things based on the details of the platform and LLVM can't vary them the same way < 1568895412 782993 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: no, I think it's more like that most of LLVM is portable, so it's portable enough that you can write working programs that LLVM can compile on multiple systems, but that's not typically what you do, because you use LLVM to make optimized programs, and you can't write good optimized program that LLVM compiles from the same source on multiple < 1568895413 261527 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :platforms < 1568895425 830675 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :this is even true to a lesser extent for C or C++ actually < 1568895439 428215 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but more true for LLCM < 1568895444 12631 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :for LLVM < 1568895514 713993 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: well, you could write the program in "high-level" LLVM and optimise it for the target platform < 1568895524 402843 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's not like LLVM translates directly into asm anyway, e.g. you need to do register allocation < 1568895609 262905 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :yes, and LLVM knows a lot about the platform-specific stuff, it abstracts away most of the unportability, but not all of it < 1568895645 31503 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :anyway, I don't really know much about this, because luckily I don't write programs in LLCM < 1568895651 484802 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :in LLVM -- darn, I can't type this < 1568895665 358865 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :that's for serious compiler maintainers to know about < 1568896082 335428 :APic!apic@apic.name QUIT :Ping timeout: 265 seconds < 1568897228 47630 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :lol... I'm reading the intel x86 architecture reference manual. it has some statements that are necessary but still funny. < 1568897257 948597 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru JOIN :#esoteric < 1568897319 436296 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :in particular, it has a note about when you execute from memory that is also used as paging table entries, and how when the cpu updates the dirty and accessed bits of those page table entries because of paging, it has less guarantees than usual about self-modifying code < 1568897379 538088 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :they need this statement because, for legacy 386 compatibility reasons, x86 provides very strong guarantees about the semantics of self-modifying code (even though the performance of such is abysmal) < 1568897447 858439 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :executing a page table is admittedly not something I had thought of < 1568897479 827808 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there are similarly silly cases, like executing an interrupt vector, which are at least likely to be easy to implement < 1568897520 388460 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(although I imagine that in some architectures, interrupt vectors are actually executable code rather than a list of addresses) < 1568897657 97816 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :yes, 6502 has executable interrupt vectors, as in, the interrupts jump to a fixed address rather than load the jump address from a fixed address < 1568897977 870703 :APic!apic@apic.name JOIN :#esoteric < 1568899335 188622 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :It also has the ridiculous statement "Processors need not implement any TLBs." about caching page translation info < 1568899415 764339 :Lykaina!~lyka@unaffiliated/schrodingerscat JOIN :#esoteric < 1568899435 773217 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_0002_1.pdf < 1568899608 514790 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i mean, hi < 1568899722 864490 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :wib_jonas: hi < 1568899781 353783 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :a thought I've been having: currently, assemblers do two jobs, one is converting asm to machine code, the other is resolving things like jump destinations and .align directives and the like < 1568899789 145506 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but the latter job duplicates what the linker does < 1568899827 765014 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :perhaps it would make sense for assemblers to /only/ do the first job, and the linker is the only thing that does the second < 1568899847 483686 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(for performance, this means that you would probably want to link individual object files as they were created, and then link those object files together later in the build) < 1568899871 625702 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :current linkers support incremental link, I think, even though it isn't the normal way to do things; this would be an extreme version of that < 1568899970 707820 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the advantage of doing things this way is that the exact layout of an object file in memory could be deferred to later in the build if necessary < 1568899986 391952 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: I think that would be rather inefficient in the common case, when and a lot of references are quickly resolved by the assembler, and would be inefficient to emit symbolically to the linker, since the linker would have to do all the tasks of the second pass of the assembler, plus the assembler is usually not run separately but is built into < 1568899986 849734 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :the compiler in such a way that it doesn't go through actual assembly syntax. < 1568900034 263721 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :as in, the assembler resolves all the local references, so the linker only moves larger sections around < 1568900091 738411 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, the advantage of leaving the local references unresolved is that you can move small parts of the code around, e.g. to substitute a short jump for a long jump in the case where the target happens to be nearby < 1568900105 8129 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :present compilers have to leave enough space for the longest possibile jump < 1568900113 483292 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :How much this matters may depend on the cpu architecture of course, in some older cpus you'd have a lot of local references because there are few ways to avoid jumps and you have to load large constants as memory accesses rather than immediates. < 1568900146 107844 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if your large constants are memory accesses you'd often be loading from rodata anyway (= you need the linker) < 1568900154 382740 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although I guess there's an argument for putting them in text < 1568900200 631333 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: I don't think that will often happen, because each function (in the low-level sense) will be assembled to the same section, and you use calls and returns rather than jumps between functions, and those can't be short even if the functions are close to each other. < 1568900221 803571 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :if there's an opportunity for a short jump, then the functions will be compiled together at the optimizer and inliner state already. < 1568900224 324245 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :tail calls are jumps, in some calling conventions < 1568900276 325234 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: no, you can't load all the constants from rodata, because then you have to load their _address_ somehow, and you'd have to load those from rodata too etc < 1568900290 731055 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you have relocations < 1568900299 315005 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but I see, assuming PIC < 1568900316 603904 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :then rodata probably isn't in a constant space relative to text due to ASLR, and you don't want to do the relocation at runtime < 1568900321 360249 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :on those older cpus, you load the long immediates from the text with IP-relative or similar accesses. you can still do that on modern cpus like x86_64, it's just usually not worth because they have more convenient immediates. < 1568900327 597209 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although, hmm < 1568900336 289031 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :this is for old cpus which don't have a way to load a full immediate < 1568900340 390157 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :maybe rodata is in a constant location relative to text, because rodata is constants too < 1568900342 123369 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :a full sized immediate < 1568900344 266628 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :only a small one < 1568900354 755193 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: modern CPUs can't load full sized immediates either < 1568900368 345862 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: sure, but they're closer to it < 1568900386 841715 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :on x86-64 largest possible immediate is 64 bits for movabs, largest register is typically 256 bits wide < 1568900421 91621 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :right, but the 64 bit load is enough to give the address into anywhere else at least < 1568900486 515001 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but I guess you're right, you could load such constants (or even index small tables) from the code section and place them close to the function < 1568900494 81061 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :that still usually works on x86_64 < 1568900797 177064 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :basically, by putting the read-only data and the code into the same section (but not in the same cache line), you guarantee that they're no farther than 2**31 bytes, so you can access them with a simple and efficient RIP-relative access, and the linker doesn't have to translate the addresses < 1568900830 263977 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :now I'm wondering if it's bad to have executing code and read-only data on the same cache line < 1568900858 43283 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's obviously bad to have executing code and writable data on the same cache line, but there's no obvious reason why in the former case you couldn't just load it into both L1 caches < 1568900966 2901 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :fwiw, the thing that inspired the "let's do the linking outside the assembler" idea was that I was reading about how TLS is implemented < 1568900986 559061 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and there are four different ways to implement TLS, some of which are faster but less general, and the optimisation is done by the linker < 1568901001 439948 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which means it has to delete code sequences from the executable and replace them by sequences of different length, sometimes < 1568901018 397443 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :currently this is implemented by leaving padding in the code so that the linker can overwrite it, but that seems ridiculous < 1568901024 723426 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: also, if the linker moved around code in small parts, then the assembler would have to be able to tell it not only how to move the code, but also how to adjust the detailed debugging information and the unrolling info. that would make the linker even more complicated than it already is. < 1568901090 836886 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: same cache line => only bad in the sense that it can waste the L1 cache, because the L1 cache is separated to an L1D cache that is used for data access only and an L1C cache that is used for code access only, and both are small, so you'd have a half-used entry for the same cache line in both; < 1568901120 173730 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, it depends on whether you can fit other useful data into the same cache line < 1568901128 883444 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if not there's no actual loss < 1568901145 61043 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :plus to some amount the same thing for decode caches and branch prediction and branch target caches, but those usually work at 16-bit sized units rather than 64-bit ones currently < 1568901152 908587 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :err, depending on where the code ends < 1568901174 186289 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if you have 1½ cache lines of code and ½ a cache line of data, you want to merge them into 2 cache lines, not separate them into 3 < 1568901197 88984 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as either way you end up with 3 cache lines between the two L1 caches < 1568901201 617593 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: yes, if you can fit read-only data without losing space, then it's not bad, but separating data and code to separate cache lines is a good enough general rule and you rarely lose from following it < 1568901230 436015 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so why not have rodata in a fixed location relative to text, and put the constants in rodata? < 1568901275 377830 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"rodata in a fixed location relative to text" is probably required anyway (especially if you don't have a PIC base register), otherwise the references to data from rodata will be too expensive < 1568901275 752717 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: in fact it may make sense to separate them to separate pages, at least on some cpus... I don't recommend the recommendations taht the optimization manual says < 1568901297 296778 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but even if they're in separate pages, they can be within 2**31 bytes from each other, which is still useful < 1568901304 568524 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :fwiw, many compilers seem to prefer using multiple movabs instructions < 1568901382 499515 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: sort of, but putting them to fixed location can be done in the linker, which places those two segments and resolves references between them at link time. I think it could even place them within 2**31 from enough (unless they're very large of course) < 1568901447 238019 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :multiple movabs instructions => sure, if you can use them, use them < 1568901477 37755 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :interestingly, AMD doesn't use the term "movabs" < 1568901480 682604 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :at that point it's a tricky call, can depend on what's tight in that part of the code, L1 cache accesses or decoding < 1568901480 929843 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :to them it's just a variant of the mov instruction < 1568901495 840852 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :does intel use it? I think they don't either\ < 1568901512 848336 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I think movabs is just an AT&T assembly syntax thing < 1568901521 176734 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I would have thought movabs would decode quickly; it's easy to find the end of it, for example < 1568901722 654766 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0x66, 0x66, 0x48, call 0x12345678 < 1568901726 342005 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk at end of line, first unrecognized character is `0' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk at end of line, first unrecognized character is `0' < 1568901729 208701 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0x66, 0x66, 0x48; call 0x12345678 < 1568901731 226466 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 66 66 48 e8 00 00 00 00 data16 data16 callq 0x8 < 1568901743 631043 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0x66, 0x66, 0x48; call $0x12345678 < 1568901744 838156 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 66 66 48 e8 00 00 00 00 data16 data16 call 0x8 < 1568901745 998675 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: it's not just about the speed of decoding, it's also that if you use, say, four movabses to load a 32 byte constant rather than a single 32-byte memory load, then you get longer code, which uses up more of the decoded cache < 1568901767 656852 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0x66, 0x66, 0x48; callq $0x12345678 < 1568901768 819277 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 66 66 48 e8 00 00 00 00 data16 data16 call 0x8 < 1568901774 137013 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :it could also decode slowly, but that's less of a problem < 1568901785 977256 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, I wonder what's happening to the argument to call < 1568901799 786607 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but I guess most of the time the decoding won't be the problem < 1568901804 389561 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh right, the µop cache < 1568901823 670666 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's kind-of crazy that something like that is beneficial < 1568901829 661100 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: that, and the other cache that runs very short loops, but you don't put constant loads in those < 1568901905 41401 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the branch predictors on modern processors predict loop counts for loops with a small fixed loop count < 1568901923 994279 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: it's beneficial only in intel cpus, not on amds, because intel has a broken decoder that only decodes one aligned 16-bit block of code per cycle, and if you write floating point machine learning code that never hits an L1 cache miss, then it will execute four floating-point add-multiplies in a clock cycle, and those four instructions are < 1568901924 493058 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :longer than 16 bytes < 1568901929 937630 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :arguably it'd make more sense just to have a processor instruction for a loop with a small fixed count, then the prediction could be perfect < 1568901933 575202 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :s/16-bit/16-byte/ < 1568901997 357835 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in AMD processors there are three decode units and an instruction can take up one, two, or all three of them (the three-unit instructions also cause a pipeline stall in the decode, so they're recommended against) < 1568902028 556303 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :at least, that's how it worked last time I checked, it might have changed since < 1568902100 569137 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm nopw %cs:0x0(%rax,%rax,1) < 1568902101 570759 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 2e 66 0f 1f 04 00 nopw %cs:(%rax,%rax,1) < 1568902114 944376 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's not as long as I thought it would be < 1568902159 627336 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :perhaps there should be a VEX version of a NOP? < 1568902173 924978 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :"2E" for segment override, "66" for data size override, "0F 1F" for the opcode, "04" for mod/rm byte, "00" for SIB byte < 1568902212 482258 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but you can add a displacement if you want a longer one < 1568902221 956230 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and drop the segment override, that never helps < 1568902274 918132 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: the intel manual and the amd manual both describe what nops you should use, and the intel gives a 9-byte nop as the longest, but all the nops that are longer than one byte have an input dependency on a general register that you can choose < 1568902290 847060 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :the amd version is easier < 1568902342 228137 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :that said, when writing or compiling actual code, you can use instructions that are technically not nops, but are fast and don't do anything that matters in the context of the particular code, such as zero a register < 1568902381 898906 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :that works for shorter nops only I think, but there it may sometimes be easier than following intel's recommendations < 1568902390 547887 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :for longer nops I think you're out of luck < 1568902426 24233 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0xc4, 0xe1, 0x79, 0x1f, 0x04, 0x00 < 1568902427 67201 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: c4 e1 79 1f (bad) \ 4: 04 00 add $0x0,%al < 1568902441 864863 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :no no < 1568902446 185526 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that was an attempt to encode a NOP using VEX, just for fun < 1568902459 436123 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(I know you can't actually use VEX on non-SSE instructions) < 1568902473 377118 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(but it's in an opcode map that means the syntax exists, at least, the processors just reject it) < 1568902475 419401 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I mean like sub %r8w, %r8w < 1568902493 81571 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :no wait < 1568902497 18675 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm sub %r8w, %r8w < 1568902498 42524 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 66 45 29 c0 sub %r8w,%r8w < 1568902501 546218 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :it shouldn't be word-sized < 1568902506 292985 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although that isn't a no-op, of course < 1568902510 393323 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :it should be dword or qword size < 1568902517 615871 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :sub %r8d, %r8d < 1568902521 765197 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :which is only three bytes < 1568902529 947178 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0x67; and %r8, %r8 < 1568902530 864592 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 67 4d 21 c0 addr32 and %r8,%r8 < 1568902534 750760 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :yeah, I think you can do this only for two or three byte long nops < 1568902555 12352 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :maybe more if you zero an SSE register, but on newer cpus only < 1568902556 846916 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's no reason you /can't/ stick an 0x67 prefix on there < 1568902563 730015 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :even if 0x66 would cause trouble < 1568902572 572130 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although, both sub and and change flags < 1568902579 137134 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(and is better because at least it doesn't change the register) < 1568902598 868176 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :doesn't the 0x67 prefix cause a decoding slowdown? < 1568902615 210523 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :not sure; it's used so rarely that maybe it does < 1568902637 334501 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :yes, but it doesn't _read_ the flags, and doesn't _read_ the registers, it only writes them < 1568902651 737439 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :surely lea is the best instruction, anyway? < 1568902686 137852 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm leaq 0(%r8), %r8 < 1568902688 574293 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 4d 8d 00 lea (%r8),%r8 < 1568902697 66685 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you could use a 4-byte displacement there < 1568902706 216733 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm leaq 0(%r12), %r12 < 1568902707 190193 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 4d 8d 24 24 lea (%r12),%r12 < 1568902710 296455 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :on newer cpus, you can get four and five byte instructions to zero an xmm register < 1568902732 208973 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that can be terrible for performance in some cases, initializing the FPU takes ages < 1568902740 700385 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if it's switched off for power-saving purposes < 1568902745 219633 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(probably bad for power drain, too) < 1568902754 168659 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :admittedly, lots of things use vector registers nowadays < 1568902769 609366 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm leaq 0x12345678(%r12), %r12 < 1568902770 631185 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 4d 8d a4 24 78 56 34 12 lea 0x12345678(%r12),%r12 < 1568902780 689332 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :or more likely, if you're using 32-byte ymm registers and you suddenly zero a 16-byte one < 1568902799 128498 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm .byte 0x4d, 0x8d, 0xa4, 0x24, 0x00, 0x00, 0x00, 0x00 < 1568902800 240384 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 4d 8d a4 24 00 00 00 00 lea 0x0(%r12),%r12 < 1568902806 201028 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :"lea is the best instruction" => again, that depends on what for and where < 1568902806 499214 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that should be a true NOP, I think < 1568902814 627422 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and might be pretty fast to both decode and run < 1568902826 249037 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :doesn't play well with 0x66 prefixes, though < 1568902940 657190 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and I think on intel it's strictly worse than nopw 0(%rax,%rax,1) < 1568902970 657639 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :according to AMD, an lea runs in one cycle if it only has one register and no scale on the LHS < 1568902983 843991 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :no, I mean worse than nopw 0(%r12,%r12,1) < 1568902992 195374 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :sorry < 1568902997 311754 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :worse or equal, obviously < 1568902998 80583 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although, on AMD (and probably also Intel), a nop runs in zero cycles (the only time it spends is the time spent in decode) < 1568903043 622953 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think that only applies to 0x90 nop, though < 1568903056 943040 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which is why the recommended pattern on AMD is 0x66 0x66 0x66 0x90 < 1568903062 252865 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :repeated to fill space < 1568903077 968742 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :the eight-byte nop doesn't execute, the only cost it has is that it has a false _read_ dependency on %r12, so it won't be scheduled until the value of %r12 is available < 1568903105 369766 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :it doesn't actually compute the address or attempt access the memory if I understand correctly < 1568903123 71518 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and I think it doesn't even tie up any execution core, but that doesn't typically matter < 1568903128 93798 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :s/core/unit/ < 1568903139 217239 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :0x90 NOP has the benefit that it isn't scheduled at all, though < 1568903186 122928 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :whereas an instruction like sub %r12d,%r12d is three bytes long, doesn't depend on any input register, and only writes flags, not any register in execution < 1568903204 447280 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :0x90 nop is very magical < 1568903205 16933 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes it does, it writes 0 in %r12d < 1568903222 649364 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :do you mean sub $0, %r12d < 1568903224 27352 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: the effect writes the register, but the execution units and the register file don't know that < 1568903238 337675 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :it's handled in decoding/scheduling by renaming the register < 1568903256 54314 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :so that %r12 will refer to a zero register rather than whatever entry contained the value before the instruction < 1568903264 898072 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh I see, in that case you should be using xor I think < 1568903272 201871 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :xor vs sub doesn't matter < 1568903284 961596 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :it does also write the register for the purpose of dependencies (but doesn't read) < 1568903298 854888 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :don't the processors that special case sub-of-itself also special case mov 0? < 1568903314 496175 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I don't think so, but I'm not sure < 1568903325 538074 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :mov $0 seems to be superior in two ways: a) it doesn't change flags (thus removing potential false dependencies on flags), b) the encoding is longer < 1568903349 732860 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movq 0x00000000, %r12d < 1568903350 729491 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `movq' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `movq' < 1568903352 660958 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movq 0x00000000, %r12 < 1568903353 666200 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 4c 8b 24 25 00 00 00 00 mov 0x0,%r12 < 1568903363 596555 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I dunno < 1568903384 617091 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :maybe it depends on how the 0 is encodedd < 1568903388 656264 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movq 0x00, %r12 < 1568903389 723063 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 4c 8b 24 25 00 00 00 00 mov 0x0,%r12 < 1568903398 192652 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although I don't think there is an 8-bit mov into a non-8-bit register < 1568903404 576306 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movzxq 0x00, %r12 < 1568903409 920617 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: unsupported syntax for `movzx' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: invalid instruction suffix for `movzx' < 1568903413 783779 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movzx 0x00, %r12 < 1568903416 157532 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 4c 0f b6 24 25 00 00 00 00 movzbq 0x0,%r12 < 1568903428 838991 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that one probably isn't optimized, to be fair < 1568903440 209348 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, I forgot the $ < 1568903442 33168 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :for a long nop, I'd also suggest prefetcht2 0, which is 8 bytes long < 1568903443 933996 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so it segfaults :-) < 1568903448 689007 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movq $0x00, %r12 < 1568903449 802676 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 49 c7 c4 00 00 00 00 mov $0x0,%r12 < 1568903452 572407 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and can be 9 byte if you add a redundant REX prefix < 1568903461 768928 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movzxbq $0x00, %r12 < 1568903462 745933 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: no such instruction: `movzxbq $0x00,%r12' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: no such instruction: `movzxbq $0x00,%r12' < 1568903473 974851 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :movzx doesn't allow an immediate, right < 1568903484 778363 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm movzbq $0x00, %r12 < 1568903485 949272 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `movzb' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movzb' < 1568903489 893626 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :hi Lykaina < 1568903493 640840 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: r12 is callee-saved, that's why it segfaults < 1568903497 870044 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes, it helps if you get the instruction name right, but not enough ;-) < 1568903505 217106 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: no, I dereferenced NULL, that's why it segfaults < 1568903509 534741 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :oh < 1568903534 915645 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I find the "numbers are memory addresses by default" pattern pretty unintuitive < 1568903569 391859 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I wonder if you could also use a two-byte short jump as a nop of between 2 and 120something bytes long < 1568903611 495771 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :of course that's also not always applicable, it works best if you have no other jump in the 16-byte block < 1568903632 154906 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :or something like that, I'm not sure how all that works < 1568903729 354305 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :is there an unconditional two-byte jump? < 1568903747 623964 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm jmp 0x8 < 1568903749 77934 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: e9 00 00 00 00 jmpq 0x5 < 1568903755 237554 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm jmp $0x8 < 1568903756 411667 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: e9 00 00 00 00 jmp 0x5 < 1568903768 528044 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`asm jmp a; .align 8; a: nop < 1568903770 379578 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: eb 06 jmp 8 \ 2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) \ \ 0000000000000008 : \ 8: 90 nop < 1568903774 339902 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes, there is < 1568903904 603184 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :... < 1568903990 913852 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :If you search the web for static deadlock detection you get papers on statically detecting deadlock in Go, Java, C with pthreads, C#, Erlang, the Linux kernel, and a language called "SHIM" < 1568904046 945384 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Odd way to do that. < 1568904050 537322 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm… Rust doesn't guarantee deadlock-freedom, so that would be an obvious language to try < 1568904051 770627 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :there's no unconditional jump with 16-bit offset by the way, despite that there are conditional jumps with 16-bit offset, all for historical reasons < 1568904052 667885 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm jmp .+8 < 1568904053 582341 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: eb 06 jmp 0x8 < 1568904066 745193 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :I think the basic idea is simple - every place you acquire a resource, check what resources you already could've acquired. Form a graph. If it's got a cycle, you've got a problem. < 1568904077 957192 :cpressey!~cpressey@5.133.242.4 PRIVMSG #esoteric :Something like that anyway < 1568904083 205841 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: conditional and unconditional jumps normally have different rules on what offset sizes they allow, not just on x86 < 1568904125 559058 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, that boils down to the well-known algorithm of "always take locks in a specific order" < 1568904142 183171 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :the 8-bit unconditional jump comes from the original 8086, or perhaps before, yet it's still actually useful on x86_64 < 1568904152 553079 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's a Valgrind plugin that looks for locks being taken in an inconsistent order at any point during the program lifetime, even if no actual deadlock happens < 1568904171 821117 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and sure < 1568904179 97111 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :an 8-bit unconditional jump is frequently used to implement "else", so it makes sense that it'd still be around < 1568904231 587740 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :yeah, it comes from before: the z80 already had an unconditional jump with 8-bit offset < 1568904282 434294 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :on the 6502, I think unconditional jumps are 16 bits (absolute, not offset), conditional jumps are 8-bit (offset) < 1568904317 617600 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's a 16-bit-address processor so you don't need any more bits than that < 1568904508 457827 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm reading the LLVM spec: there's a lot of behaviour that's target-specific in subtle ways, but so far I haven't seen anything that forces you to use it < 1568905812 299429 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 QUIT :Remote host closed the connection > 1568907147 573103 PRIVMSG #esoteric :14[[07Seed14]]4 10 02https://esolangs.org/w/index.php?diff=66263&oldid=66019 5* 03Palaiologos 5* (+117) 10 > 1568907192 248138 PRIVMSG #esoteric :14[[07User:Palaiologos14]]4 10 02https://esolangs.org/w/index.php?diff=66264&oldid=63560 5* 03Palaiologos 5* (+69) 10 < 1568908159 144732 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru QUIT :Quit: gone completely :o < 1568908408 452394 :cpressey!~cpressey@5.133.242.4 QUIT :Quit: A la prochaine. > 1568908844 606323 PRIVMSG #esoteric :14[[07Hexar14]]4 M10 02https://esolangs.org/w/index.php?diff=66265&oldid=66245 5* 03Enchant3d 5* (+41) 10 > 1568908915 216943 PRIVMSG #esoteric :14[[07Hexar14]]4 M10 02https://esolangs.org/w/index.php?diff=66266&oldid=66265 5* 03Enchant3d 5* (-20) 10 < 1568909656 870045 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :effing fire drill in my building. couldn't find my keys and got locked out < 1568909686 876216 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :(since then, found keys after being let back in) < 1568909740 9039 :Taneb!~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0 PRIVMSG #esoteric :Fun fun fun < 1568910131 533305 :imode!~imode@unaffiliated/imode JOIN :#esoteric < 1568911046 373812 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1568911140 912472 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 258 seconds < 1568911141 184619 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1568911215 340937 :sebbu!~sebbu@unaffiliated/sebbu QUIT :Read error: Connection reset by peer < 1568911265 620438 :sebbu!~sebbu@unaffiliated/sebbu JOIN :#esoteric < 1568912754 87644 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric < 1568913318 271004 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1568913441 378602 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu JOIN :#esoteric < 1568913496 63748 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: by the way, shachaf asked for one of your esolangs in https://esolangs.org/logs/2019-09-18.html#lgd < 1568913587 715055 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right, in MiniMAX commands have a read word and a write word so overlapping them is the only way to produce a memory location that can be both read and written < 1568914297 703403 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :heh < 1568914305 747843 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :https://twitter.com/volatile_void/status/1174015227924570119 "Little-known fact “NaN” is a recursive acronym, it stands for “Not a NaN”" < 1568914353 199811 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I was going to say "how can an x be a not-x" but then realised that NaN isn't comparable with itself < 1568914353 637903 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so that's cleverer than it seems < 1568914410 969840 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :exactly < 1568914420 867578 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :it's like those numbers used in bistromathic drives < 1568914474 828144 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, is it the case that NaN != NaN? or just that !(NaN == NaN)? < 1568914480 513125 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :both of those < 1568914608 467228 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ooh < 1568914614 146390 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :this one you ais might be qualified to answer < 1568914618 858979 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :https://twitter.com/gro_tsen/status/1174039625347846144 < 1568914628 373329 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :"Serious question: what plausible use cases exists for a “char ****p” (or more indirections)? I only once used a “char ***p” and that already seemed very contrived (and I was confused every time I re-read this code)." < 1568914812 145983 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm not sure there is one < 1568914823 954637 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the void ***** referenced in Three Star Programmer's documentation is a joke < 1568914884 565784 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I guess a page table is sort-of like a void ****** or so with a constant but large number of *s < 1568915046 580236 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :https://github.com/boostorg/mpl/blob/develop/include/boost/mpl/assert.hpp#L222 uses a 13-star type < 1568915087 102455 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The standard use for char *** is when you want to pass &argv to a function that wants to muck with it. < 1568915122 172485 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :olsner: lol < 1568915157 137912 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :olsner: is that testing for compiler brokenness of some sort? < 1568915205 295048 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :hm, and the line above that is a typedef with 12-star pointer to pointer-to-member of the 13-star type, so that's effectively a 26-star type or something < 1568915206 158370 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :actually, no, it looks more like it's trying to come up with a type that isn't in use elsewhere in the program < 1568915217 539256 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :yeah, I think that's what they're doing < 1568915303 509254 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Should I write "int const x;" instead of "const int x;"? < 1568915326 561601 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :shachaf: it doesn't matter < 1568915336 917379 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :they're the same thing < 1568915336 962377 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Or "int const *x;", I suppose that's more relevant. < 1568915357 499798 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I know they have the same meaning. < 1568915379 186381 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :I always use "const int" for those, even though it requires you to change const placement when making fancier types < 1568915379 669304 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :after a code formatter taught me how to do it, I started always using *const (no whitespace) for situations where the pointer itself is const < 1568915384 851393 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A program without whitespace is also "the same thing" as a program with whitespace, but you can still ask questions about it. < 1568915387 153681 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :if you are writing code for an existing project, or your supervisor asks you to follow a certain coding style, write it in a way to match the style of that code or follow those recommedations. otherwise, write whatever. < 1568915400 44906 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :the same is true for int *x; versus int* x; < 1568915407 325824 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so I prefer "const int x;", "const int *x;", etc., because that makes it clearer that it's the pointer referent that's const, not the pointer itself < 1568915435 290530 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523: The idea of "int const x;" is that it's consistent with "int *const x;" < 1568915472 359860 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :shachaf: sure, but these are points of coding style where even people who write good C/C++ programs don't agree, and they mostly came to the agreement that either is fine < 1568915484 809529 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: What if I don't have a supervisor and I just want things to be good instead of bad? < 1568915493 969651 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: yes, but when you move up to "int const *const x;" the pattern doesn't feel like it holds any more < 1568915495 217203 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I try not to write C/C++ polyglots. < 1568915498 185673 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :so for some stupid whitespacing or style, people might complain if it's code that they'll read, but for this one, nobody will complain unless you have to match an existing coding style < 1568915514 652323 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :isn't "C/C++" undefined behaviour? < 1568915533 392123 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :sure < 1568915542 361601 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ok, let's say C++ programs < 1568915551 977708 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`! c float C = 4.0; printf("%f", C/C++); < 1568915554 242421 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :1.250000 < 1568915557 718711 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :and if shachaf asks about this in C programs, then I can't help much < 1568915560 377348 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I don't understand C < 1568915565 635177 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I was expecting a warning < 1568915593 20946 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :does `! c build with all the warnings on? < 1568915624 389412 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't understand C++. < 1568915632 402180 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I mostly understand C. < 1568915646 313379 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think very few people understand C++. < 1568915675 983711 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :olsner: probably not; I actually wasn't expecting it to work at all < 1568915729 202585 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`` printf '#include \nint main(void) { float C = 4.0; printf("%f", C/C++); }' | gcc -Wall -Wextra -x c /dev/stdin < 1568915731 971344 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/dev/stdin: In function ‘main’: \ /dev/stdin:2:40: warning: too many arguments for format [-Wformat-extra-args] \ /dev/stdin:2:55: warning: operation on ‘C’ may be undefined [-Wsequence-point] < 1568915753 767462 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`` printf '#include \nint main(void) { float C = 4.0; printf("%f", C/C++); }' | gcc -fno-diagnostics-color -Wall -Wextra -x c /dev/stdin < 1568915755 218272 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/dev/stdin: In function ‘main’: \ /dev/stdin:2:40: warning: too many arguments for format [-Wformat-extra-args] \ /dev/stdin:2:55: warning: operation on ‘C’ may be undefined [-Wsequence-point] < 1568915766 412545 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you do it in C++ constexpr you might get useful information about UB. < 1568915777 726352 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :``` set -e; gcc -fdiagnostics-color=never -Wall -O -o tmp/a.out -x c - <<< $'#include\n''int main(void) { float C = 4.0; printf("%f", C/C++); return 0; }'; tmp/a.out # there is a warning < 1568915779 103076 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​: In function 'main': \ :2:49: warning: operation on 'C' may be undefined [-Wsequence-point] \ 1.250000 < 1568915785 595562 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ah, you've been faster < 1568915786 609690 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`` printf '#include \nint main(void) { float C = 4.0; printf("%f", C/C++); }' | gcc -fno-diagnostics-color -Wall -Wextra -x c /dev/stdin < 1568915787 903007 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/dev/stdin: In function ‘main’: \ /dev/stdin:2:40: warning: too many arguments for format [-Wformat-extra-args] \ /dev/stdin:2:55: warning: operation on ‘C’ may be undefined [-Wsequence-point] < 1568915793 728097 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`` printf '#include \nint main(void) { float C = 4.0; printf("%%f", C/C++); }' | gcc -fno-diagnostics-color -Wall -Wextra -x c /dev/stdin < 1568915796 514626 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/dev/stdin: In function ‘main’: \ /dev/stdin:2:49: warning: operation on ‘C’ may be undefined [-Wsequence-point] < 1568915798 253642 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there we go < 1568915809 971021 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I had to look up -fdiagnostics-color=never , I didn't remember the option syntax < 1568915811 545645 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :both printf(1) and my IRC client use % as an escape symbol < 1568915820 742097 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: so did I, I just looked it up faster < 1568915853 950160 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :info is such a good documentation format in terms of the user experience (some of its internals are ridiculous, though) < 1568915869 204492 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :write a filter that translates color escape sequences to IRC colors < 1568915903 346983 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What? I hate using info. < 1568915944 55732 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: I don't use printf for this. I just use the $'foo' literals. < 1568915973 816778 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :shachaf: info as in the program, or info as in the format? < 1568916020 294256 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :because I think what gives the good user experience is when the docs are written in texinfo format well, which is hard to write, but when it's written that way, it compiles to multiple different formats including info, html, pdf, each of which you can read with multiple clients. < 1568916026 346311 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :"including" < 1568916036 879400 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :well, it compiles to info, html, pdf, but not much else. < 1568916053 399491 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I mean the program. < 1568916088 453553 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :shachaf: that I can understand. read one of the outputs with a different client < 1568916102 10414 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :very few other formats allow both index search (often in multiple indexes by subject) /and/ free text search /and/ have a hierarchical table of contents < 1568916113 245688 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :the html output produced is decent, not the one overloaded with client-side scripts that you see on the web these days < 1568916126 575795 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I found the appropriate gcc option by typing "idiagnostics-" and a newline < 1568916133 806676 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in about 5 seconds < 1568916136 728372 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :*ahem* chm < 1568916139 661312 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :but can info produce man pages? < 1568916161 283614 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :olsner: I don't think so, at least not in a sane way < 1568916163 468755 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: in chm's predecessor, .hlp, the free text search took several minutes < 1568916172 877325 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although that was likely related to the computers at the time < 1568916216 775447 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, AFAIK neither .chm nor .hlp allow the whole thing to be easily read in depth-first order (whereas info does) < 1568916218 88170 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :is chm basically just restricted html wrapped up in a compressed file with some extra info about the table of contents? < 1568916222 412342 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes < 1568916250 801538 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :what I don't know is how you can sanely export the extra info in some easily usable format < 1568916262 973798 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I can export the html < 1568916395 964105 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :that reminds me, there's a certain documentation format that I find somewhat annoying < 1568916440 249193 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Documentation in UHS format, so that you don't accidentally reveal too much to the user. < 1568916441 521501 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :namely when the help is embedded in the program, and you can print it by invoking it with like programname help topic, but you have to do it one node at a time, and it can be hard to find out what all the nodes are, plus you may have to iterate over multiple programs < 1568916447 864669 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :for some reason, version control software uses this < 1568916464 859393 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :it's the most annoying for subversion, which has really good user reference documentation, but tucked away this way < 1568916486 844787 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :you have to iterate over all svn* programs, run them with help, then with help topic, then with help topic again for topics that are two levels deep < 1568916508 536899 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :hg technically does it too, but it also comes with all that documentation installed as a single manpage, which negates all the drawbackzs < 1568916510 956819 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: "man git-commit", etc. < 1568916524 380647 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, I'm not talking about git, only svn, hg, and fossil < 1568916529 752729 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah, OK < 1568916543 631573 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I also don't understand why it's only version control software that do this < 1568916562 100940 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because they're copying svn < 1568916575 216505 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :if only they had a command like programname help all, that would also fix the problem < 1568916593 678438 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :at one point I started to write a script to export all the docs from svn, but I haven't finished it < 1568916599 295203 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :"helpfull" is a flag with a good name. < 1568916600 476510 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I should do that so I can do full text searches < 1568916607 7237 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :fizzie: yeah, that could work too < 1568916607 681377 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, well, a likely reason is that VCS is particularly likely to want to bundle a large number of commands with separate behaviour into one executable < 1568916620 234887 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :fizzie: as long as (programname help) tells that that command exists < 1568916622 600093 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that said, busybox does this correctly < 1568916670 421966 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I'm not too familiar with busybox. I only use it when running the debian installer. < 1568916697 536609 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's basically one executable that implements cut-down versions of a lot of different commands < 1568916709 249376 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :to benefit from being able to share code between them < 1568916725 835826 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :basically, it's a size-optimized minimal userland < 1568916744 57547 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, but for svn it's not even one executable, it's twenty, with zero or one or two levels deep help depending on which program it is < 1568916773 481835 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Somehow my system supports "man git commit", with a space. < 1568916776 706802 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :of course, you only need five of those twenty programs, but how would you know which five unless you can read their help? < 1568916791 194603 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :shachaf: yes, that's a little magic built into man < 1568916808 362419 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Built in? That's scow. < 1568916821 48681 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anticompetitive. < 1568916856 808594 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :heh, busybox's documentation is comparable to the program itself < 1568916857 328903 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It should be forced to show a dialog on first use listing possible alternatives. < 1568916881 112735 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :clear is documented by busybox as "Clear screen", not even a full stop < 1568916885 159095 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :shachaf: try (man apt get) < 1568916894 449313 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :whereas the manual page for clear(1) is one and a half pages < 1568916918 590715 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: the manual is shorter because the busybox programs usually have fewer options or features than the programs that they mimic though < 1568916929 448644 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes < 1568916933 196126 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :busybox clear doesn't have any < 1568916940 711855 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but then, clear(1) only has three < 1568916965 429060 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :most of it is a discussion of the history of clearing screens < 1568917038 258209 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :huh, busybox actually is a complete userland, it has things like init and crond < 1568917065 603220 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, that's its point, you put it on a disk with a libc plus a few device files and directories, you get a full tiny userland < 1568917094 52322 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :it's used in debian's generated initrd so you get a small rescue system if it can't mount root for some reason < 1568917099 327294 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also dpkg, which I guess makes sense if you're using it as a rescue system for Debian < 1568917109 270001 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :mind you, busybox is configurable at compile time, so which programs it has may depend on which system < 1568917114 692854 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :you can probably compile it to not have init < 1568917176 391056 :tromp!~tromp@2a02:a210:1585:3200:94f6:a8b7:5dd5:cb6a QUIT :Remote host closed the connection < 1568917187 558714 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :init isn't really big anyway, all the complicated parts are off-loaded to getty and login < 1568917269 41952 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :complicated parts like setting up the serial terminal for logins when you don't know in advance what sort of modem and terminal the remote party has < 1568917302 596571 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :setting environment variables from key=value entries that the user writes after their username < 1568917331 214937 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it has mke2fs, which is a bit of a surprise and seems out of place < 1568917341 946944 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :printing /etc/issue and interpreting all the possible escape sequences in ity < 1568917352 566561 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I wouldn't want a cut-down simplified program to be making my filesystems < 1568917352 602936 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :why? < 1568917361 136724 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :mke2fs is exactly what you want on a rescue system < 1568917370 492172 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :to be able to set up a real system, or repair a half-working one < 1568917374 519566 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :especially as ext2 is pretty old by now and it doesn't to ext3/ext4 < 1568917386 567273 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: why would you want to reformat a disk when repairing a half-working system? < 1568917397 485178 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: not a whole disk, just a partition, like a boot partition < 1568917402 168483 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :especially as you're only going to have to rereformat it later using mkfs.ext4 < 1568917424 559081 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and generally if I'm trying to solve a problem, I'd expect reformatting things to make it worse, not better < 1568917428 12176 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :or a temporary fs to which you copy files from some cds or network < 1568917443 153467 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :fsck (which it doesn't have) would be a much more useful program to include < 1568917447 323582 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think it has a getty as well. < 1568917462 933352 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: obviously you don't want to reformat a part of the disk from which you want to save the data < 1568917468 4113 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :A lot of the OpenWRT userland is in busybox. < 1568917476 86590 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: and mkfs is a much simpler smaller program than fsck < 1568917494 345670 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: fsck has to know a lot of things about the file system, including handling all the invalid states that it shouldn't be in < 1568917507 816892 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :mkfs only has to know about valid and empty states, the rest is handled by the kernel afterwards < 1568917555 48497 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: as for ext2 vs ext3, you can add an ext3 journal to an existing ext2 partition afterwards with tune2fs < 1568917560 98666 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :with the -j option < 1568917581 220914 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ext4 would be nice, but I think the mkfs required for that would be bigger < 1568917608 231825 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :And Android uses toybox, which also has a bunch of programs: http://landley.net/toybox/status.html < 1568917615 173 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :and ext2 is a good enough common denominator for when you need a scratch filesystem to store things on but don't need it to be maximally efficient, just readable and writable by most software < 1568917672 791478 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: even my custom dos bootfloppy has the format program to format a partition, both for this sort of temporary thing, or to bootstrap a bootable dos onto a hard disk < 1568917747 609984 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :of course that boot floppy is highly obsolete now < 1568918133 155853 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ais523: also, at some point I ran a system with the grub-l boot loader on a different disk from the root file system. in that case, if the hard disk with the boot loader breaks down, I can repair it by creating a boot partition on the other disk, format it to either ext[23] or vfat, and installing the grub-l boot loader and config files for it there. nowadays the simpler option would be to install grub2 < 1568918139 149967 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :of course, but imagine the same thing before grub2 was stable. < 1568918168 994889 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :(actually my system is still configured that way, but there is a boot file system already on the other disk, so I don't have to create it) < 1568918254 11937 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I'll have to stop using grub-l when I use a hard disk larger than 2 terabyte as root disk, but not before < 1568918282 876705 :ais523!~ais523@unaffiliated/ais523 QUIT :Ping timeout: 240 seconds < 1568918574 818718 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1568919399 952046 :tromp!~tromp@ip-213-127-58-74.ip.prioritytelecom.net JOIN :#esoteric < 1568919673 846008 :tromp!~tromp@ip-213-127-58-74.ip.prioritytelecom.net QUIT :Ping timeout: 258 seconds < 1568919763 544147 :tromp!~tromp@2a02:a210:1585:3200:7999:3fd9:de7e:cd3e JOIN :#esoteric < 1568920067 547728 :tromp!~tromp@2a02:a210:1585:3200:7999:3fd9:de7e:cd3e QUIT :Ping timeout: 276 seconds < 1568920597 699110 :ais523!~ais523@unaffiliated/ais523 QUIT :Ping timeout: 268 seconds < 1568923281 363342 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :wait what < 1568923318 575855 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :do you recall what I said a few days ago about Sonic and Zelda? < 1568923369 220863 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :it turns out that in the Banjo-Kazooie video games, the name of the player characters are Banjo and Kazooie, Kazooie being the bird and Banjo the big creature. I never suspected that. Just what kind of Nintendo game is that to have such a title? < 1568923566 844927 :MrBismuth!~ArcMrBism@2600:6c58:4200:ad9:4479:369a:ec9a:4eb8 QUIT :Read error: Connection reset by peer < 1568923722 135999 :Lykaina!~lyka@unaffiliated/schrodingerscat QUIT :Quit: leaving < 1568925136 374909 :MrBismuth!~ArcMrBism@2600:6c58:4200:ad9:50d3:2974:4353:5b98 JOIN :#esoteric < 1568926383 889590 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru JOIN :#esoteric < 1568927672 537769 :imode!~imode@unaffiliated/imode QUIT :Ping timeout: 276 seconds < 1568927890 539300 :tromp!~tromp@2a02:a210:1585:3200:7999:3fd9:de7e:cd3e JOIN :#esoteric < 1568929087 521073 :imode!~imode@unaffiliated/imode JOIN :#esoteric < 1568930401 517895 :Lykaina!~lyka@unaffiliated/schrodingerscat JOIN :#esoteric < 1568930413 909265 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :hi < 1568930455 852950 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :this is the now-working arduino subset: http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_0003.pdf < 1568931288 990201 :atslash!~atslash@static.231.107.9.5.clients.your-server.de QUIT :Ping timeout: 258 seconds < 1568931310 917495 :atslash!~atslash@46.188.0.82 JOIN :#esoteric < 1568931770 881219 :atslash!~atslash@46.188.0.82 QUIT :Ping timeout: 240 seconds < 1568931812 344084 :atslash!~atslash@static.231.107.9.5.clients.your-server.de JOIN :#esoteric < 1568932296 162461 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :oh by the way < 1568932328 789241 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I said earlier that at work, I finally have a windows installation where none of the software messages are localized to hungarian. < 1568932332 291775 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :Including office. < 1568932367 192432 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :Well, this almost bit me back. The result is that MS Word defaults to letter paper size, and I have to change that explicitly. < 1568932930 659310 :FreeFull!~freefull@defocus/sausage-lover QUIT : < 1568933156 902593 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :how much time and money is wasted annually by the fact that letter and A4 are slightly different < 1568933670 60415 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :kmc: probably not much money, it just bothers the sense of aesthetic of geeks like us when people zoom documents down to fit the paper < 1568933825 420959 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :also the form that I have to fill for sending registered mail on snailmail post is half a centimeter higher than the envelopes that you usually use as the outer layer of such mail, so if I put them together in a folder to be able to find the pair easily at the post office, the top and bottom of the form likely gets crumpled < 1568933900 145642 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :the post office has been using the same form for decades, they probably have a huge warehouse filled with them because they were printed in a high quantity when they didn't yet know how unpopular the internet would make snail mail < 1568933961 265712 :imode2!~imode@unaffiliated/imode JOIN :#esoteric < 1568934029 519548 :imode!~imode@unaffiliated/imode QUIT :Ping timeout: 276 seconds < 1568934094 324960 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :ah no! it's not the same warehouse full, because I have two different versions, and one of them refers to a government law dated to 2012 < 1568934100 687629 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :and a web address < 1568934137 649051 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :they still all have the checkbox saying package, despite that you need the other red form for packages, not this green form < 1568934146 653100 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :I don't understand < 1568934236 969418 :pikhq!~pikhq@70-59-9-101.hlrn.qwest.net PRIVMSG #esoteric :kmc: too much < 1568934265 134152 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :and I have one of the versions on two different colored paper sheets, so they probably weren't all printed together < 1568934297 618279 :b_jonas!~x@catv-176-63-24-251.catv.broadband.hu PRIVMSG #esoteric :heck, I think I have at least three different versions, even ignoring the paper color < 1568934698 895038 :olsner!~salparot@c80-217-180-83.bredband.comhem.se QUIT :Ping timeout: 240 seconds < 1568935488 706533 :imode2!~imode@unaffiliated/imode QUIT :Remote host closed the connection < 1568935636 785539 :imode!~imode@unaffiliated/imode JOIN :#esoteric < 1568935990 457323 :olsner!~salparot@c80-217-180-83.bredband.comhem.se JOIN :#esoteric < 1568936306 870017 :olsner!~salparot@c80-217-180-83.bredband.comhem.se QUIT :Ping timeout: 240 seconds