< 1771373253 194778 :APic!apic@apic.name PRIVMSG #esolangs :cu 😴 > 1771374964 159866 PRIVMSG #esolangs :14[[07Yet Another Stack-Based Esoteric Programming Language14]]4 10 02https://esolangs.org/w/index.php?diff=176230&oldid=176226 5* 03Hotcrystal0 5* (+7) 10formatting fix < 1771375637 166223 :amby!~ambylastn@host-81-178-152-95.as13285.net QUIT :Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement > 1771375949 520023 PRIVMSG #esolangs :14[[07Brainfuck14]]4 M10 02https://esolangs.org/w/index.php?diff=176231&oldid=173481 5* 03Lemonsandlimes 5* (+41) 10(made it more lighthearted) > 1771376109 795853 PRIVMSG #esolangs :14[[07Brainfuck14]]4 M10 02https://esolangs.org/w/index.php?diff=176232&oldid=176231 5* 03Corbin 5* (-41) 10Undo revision [[Special:Diff/176231|176231]] by [[Special:Contributions/Lemonsandlimes|Lemonsandlimes]] ([[User talk:Lemonsandlimes|talk]]): Revert vandalism. > 1771376242 653755 PRIVMSG #esolangs :14[[07BitBitJump14]]4 10 02https://esolangs.org/w/index.php?diff=176233&oldid=165796 5* 03Lemonsandlimes 5* (+6) 10 > 1771376434 169734 PRIVMSG #esolangs :14[[07FlipJump14]]4 10 02https://esolangs.org/w/index.php?diff=176234&oldid=158975 5* 03Lemonsandlimes 5* (+29) 10 > 1771376788 454241 PRIVMSG #esolangs :14[[07Ook!14]]4 10 02https://esolangs.org/w/index.php?diff=176235&oldid=126808 5* 03Lemonsandlimes 5* (+102) 10 > 1771377032 851048 PRIVMSG #esolangs :14[[07Deadfish14]]4 M10 02https://esolangs.org/w/index.php?diff=176236&oldid=164304 5* 03Lemonsandlimes 5* (+132) 10 > 1771377182 264809 PRIVMSG #esolangs :14[[07BitBitJump14]]4 M10 02https://esolangs.org/w/index.php?diff=176237&oldid=176233 5* 03Corbin 5* (-6) 10Undo revision [[Special:Diff/176233|176233]] by [[Special:Contributions/Lemonsandlimes|Lemonsandlimes]] ([[User talk:Lemonsandlimes|talk]]): revert vandalism. > 1771377195 683748 PRIVMSG #esolangs :14[[07Fish14]]4 10 02https://esolangs.org/w/index.php?diff=176238&oldid=173764 5* 03Lemonsandlimes 5* (+65) 10 > 1771377195 806238 PRIVMSG #esolangs :14[[07FlipJump14]]4 M10 02https://esolangs.org/w/index.php?diff=176239&oldid=176234 5* 03Corbin 5* (-29) 10Undo revision [[Special:Diff/176234|176234]] by [[Special:Contributions/Lemonsandlimes|Lemonsandlimes]] ([[User talk:Lemonsandlimes|talk]]): revert vandalism. > 1771377207 790013 PRIVMSG #esolangs :14[[07Ook!14]]4 M10 02https://esolangs.org/w/index.php?diff=176240&oldid=176235 5* 03Corbin 5* (-102) 10Undo revision [[Special:Diff/176235|176235]] by [[Special:Contributions/Lemonsandlimes|Lemonsandlimes]] ([[User talk:Lemonsandlimes|talk]]): revert vandalism. > 1771377218 31804 PRIVMSG #esolangs :14[[07Deadfish14]]4 M10 02https://esolangs.org/w/index.php?diff=176241&oldid=176236 5* 03Corbin 5* (-132) 10Undo revision [[Special:Diff/176236|176236]] by [[Special:Contributions/Lemonsandlimes|Lemonsandlimes]] ([[User talk:Lemonsandlimes|talk]]): revert vandalism. > 1771377319 847921 PRIVMSG #esolangs :14[[07Fish14]]4 M10 02https://esolangs.org/w/index.php?diff=176242&oldid=176238 5* 03Corbin 5* (-65) 10Undo revision [[Special:Diff/176238|176238]] by [[Special:Contributions/Lemonsandlimes|Lemonsandlimes]] ([[User talk:Lemonsandlimes|talk]]): revert vandalism. > 1771377336 565284 PRIVMSG #esolangs :14[[07User talk:Lemonsandlimes14]]4 N10 02https://esolangs.org/w/index.php?oldid=176243 5* 03Corbin 5* (+383) 10Hi! Please stop vandalising for a moment and read the rules. Thanks! > 1771380612 831788 PRIVMSG #esolangs :14[[07User:Gilbert189/A way to golf Baba is You esolangs14]]4 10 02https://esolangs.org/w/index.php?diff=176244&oldid=150207 5* 03Gilbert189 5* (+50) 10added the new words < 1771383394 353579 :impomatic!~impomatic@cpc146328-oldh12-2-0-cust1012.10-1.cable.virginm.net JOIN #esolangs * :[https://web.libera.chat] impomatic > 1771384404 380280 PRIVMSG #esolangs :14[[07Befunge14]]4 10 02https://esolangs.org/w/index.php?diff=176245&oldid=170190 5* 03JeffCalc84 5* (+214) 10/* Calculator */ < 1771384420 641917 :impomatic!~impomatic@cpc146328-oldh12-2-0-cust1012.10-1.cable.virginm.net QUIT :Quit: Client closed > 1771385709 892592 PRIVMSG #esolangs :14[[07Enn14]]4 M10 02https://esolangs.org/w/index.php?diff=176246&oldid=175929 5* 03Las-r 5* (+32) 10 > 1771396751 458852 PRIVMSG #esolangs :14[[07Output (WarzokERNST135)14]]4 M10 02https://esolangs.org/w/index.php?diff=176247&oldid=176196 5* 03Dragoneater67 5* (-7) 10/* Example programs */ SHORTEB > 1771396768 967718 PRIVMSG #esolangs :14[[07Output (WarzokERNST135)14]]4 10 02https://esolangs.org/w/index.php?diff=176248&oldid=176247 5* 03Dragoneater67 5* (+1) 10/* In Free2Edit */ casing < 1771396799 802690 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1771396896 865992 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: my understanding is that CCC does have a 16-bit backend but the resulting code is very verbose, so it doesn't work to compile Linux because the code it's trying to compile doesn't fit into a single segment and thus doesn't work in the memory model they were using < 1771396938 700845 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(remember memory models? apparently 64-bit processors have them too, but almost everyone uses the "the code fits into 4GiB and so does the data" memory model because it's rare to have more than 4GiB of code or static data) < 1771397028 640246 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if you think about it, if your compiler doesn't do register allocation and is ignoring constraints on the size of the output, generating 16-bit asm or 32-bit asm or 64-bit asm are effectively equivalent (the only hard part would be arithmetic on values that are too wide for the processor) < 1771397380 10486 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the «while self.pos < self.input.len() && self.input[self.pos].is_ascii_whitespace()» from korvo's link is also interesting – korvo was commenting on the "looks like generated code", but most notable to me is that it implies that the source code is being treated as a sequence of bytes (not unreasonable for a lexer), but interpreted as ASCII (which seems wrong nowadays) < 1771397443 510138 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and it's very unidiomatic for a handwritten Rust lexer (which would likely be using an iterator over bytes or characters, together with Peekable to do lookahead) < 1771397687 277878 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ooh… the comments talk about "GEP" (using an acronym directly without expanding it) and that language is clearly plagiarised from LLVM – in LLVM one of the most important operations is called "getelementptr", or "GEP" for short, but IIRC the LLVM devs consider it a bad idea and are trying to get rid od it < 1771397701 141813 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and other compilers are unlikely to implement that operation in the same way < 1771397729 341098 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :of course, copying teminology from a widely-used compiler doesn't necessarily mean that you've copied code, but it's a bad sign < 1771398727 460622 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: what's the problem with ASCII whitespace only in this context? < 1771398795 866029 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: it's the «self.input[self.pos]» which implies that the lexer can't see multibyte characters at all, because it is reading the input a byte at a time and not using a state machine to recognise, e.g., UTF-8 leading bytes < 1771398840 873920 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so the problem isn't so much that it's only matching ASCII whitespace, but that it's unable to match multibyte characters for any purpose (which is why it had to use is_ascii_whitespace – Rust has is_whitespace too but it doesn't work given the way that input was read) < 1771398898 621388 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(there's also the side problem that "ASCII whitespace" isn't well-defined – Rust uses a definition that excludes \v) < 1771398924 36025 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…and that includes \r, which I guess is inevitable so that \r\n parses, but \r isn't a whitespace character < 1771398958 854463 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(except on MacOS classic) < 1771398978 493644 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: oh, you didn't say what type self.input is, and I assumed it's just a [u8] containing utf-8 encoded bytes read directly from the source code file, in which case that works fine even if there can be multi-byte characters < 1771398992 676569 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I also assume it's just a [u8] < 1771399009 787803 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I agree that this could technically be mixed with something that processes multibyte characters < 1771399021 274765 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :Unless the multibyte characters are a part of the syntax, or if it uses Shift-JIS or something like that (where the ASCII characters that are in the range of the second byte of Shift-JIS are used), te lexer should just treat them as several bytes. < 1771399030 36016 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :and I think it's fine to accept bare \r as a whitespace character, though I don't know what the C or C++ standard specifically says < 1771399035 786239 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but if so it would be weird to limit the whitespace handling to ASCII < 1771399053 686565 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: the C standard is flexible in the matter, it permits doing that but doesn't require it < 1771399055 84273 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :(Although, Shift-JIS is not as good as other encodings such as EUC-JP) < 1771399055 416194 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :no, in source code I would accept only ascii whitespace < 1771399064 364994 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :like in C or rust source code < 1771399082 485023 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :does Rust really not accept non-ASCII whitespace (outside string literals / comments)? < 1771399124 866904 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : Whitespace is any non-empty string containing only characters that have the Pattern_White_Space Unicode property. < 1771399133 258679 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :I think it is reasonable to only parse ASCII, and non-ASCII can only be used in string literals and comments < 1771399142 146741 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it explicitly lists U+2028 and U+2029 as being whitespace < 1771399171 129113 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :you're right, https://doc.rust-lang.org/nightly/reference/whitespace.html says it accepts some non-ASCII whitespace. I didn't know that. < 1771399175 492916 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although, in situations where it cares about the distinction between horizontal and vertical whitespace, it treats them as horizontal which leads to some weird consequences) < 1771399219 518957 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: I think this depends on the context – there are definitely contexts where doing that is reasonable < 1771399275 693206 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :(Non-ASCII could also be used in character literals, although in that case maybe you should need to declare the character encoding before that should work) < 1771399282 140221 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for example Perl doesn't assume the source code's encoding unless you explicitly specify it within the source code itself – on systems that are expected to be ASCII- or UTF-8-based it assumes that bytes in the 0x00-0x7F range are ASCII but doesn't make assumptions about what bytes outside that range might mean < 1771399328 585539 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :I think that is a reasonable way to do it; it is compatible with both ASCII and UTF-8, as well as many other things such as EUC-JP < 1771399407 803185 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :I was thinking about something like this for trying to design the syntax of the esoteric language Enchain, and I decided that it's best to say that LF is the only vertical whitespace for the purpose that in a double-quoted string you are allowed to have any bytes other than LF and double quotes for its literal meaning. a future extension could still accept other multi-byte characters as vertical < 1771399413 989938 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :whitespace in other context, but they have to accept those vertical whitespace in double-quoted strings. < 1771399457 615652 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :Is there the document for the Enchain? < 1771399515 964468 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :What you say can work (although depending on how the programming language works, it might or might not be reasonable to also disallow null characters) < 1771399523 315270 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :mind you, the first version of Enchain probably won't have double-quoted strings, but it WILL probably have an escape to output the rest of the line unchanged into the C source code output, and that will also output any whitespace other than LF literally, because I'm not parsing those C lines < 1771399570 576611 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :zzo38: I described some details of Enchain on IRC, but I don't have a full document, and I don't even have a full design in my head yet, because I have a lot of questions about how control flow and variables should work, there's part of the theory that I don't understand and might have to ask about it here < 1771399580 56284 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :OK < 1771399964 512601 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :so in the compiler I want to track the graph of all possible control flow to be able to check that any local variable is initialized before it's used, and run a very simple typechecking. this much is simple. but, possibly not in the first version of the language but later, I might want to allow nested functions that can access local variables from their surrounding function, and it's not clear to me yet < 1771399970 511749 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :how this combines with tracking the variables. < 1771400141 652776 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :the most likely situation is that the first version of the language will just forbid nested functions entirely, and I'll never make a later more advanced version < 1771400186 210209 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :so I'll only have local variables and compilation unit global variables < 1771401025 646454 :laerling!~laerling@user/laerling QUIT :Server closed connection < 1771401035 816277 :laerling!~laerling@user/laerling JOIN #esolangs laerling :lærling < 1771401474 899016 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1771401701 156716 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de JOIN #esolangs * :Textual User < 1771404483 346146 :ais523!~ais523@user/ais523 QUIT :Quit: quit > 1771405790 213822 PRIVMSG #esolangs :14[[07A+B Problem14]]4 10 02https://esolangs.org/w/index.php?diff=176249&oldid=175073 5* 03RikoMamaBala 5* (+34) 10 < 1771407430 744136 :APic!apic@apic.name PRIVMSG #esolangs :Hi > 1771407778 125091 PRIVMSG #esolangs :14[[07Tip14]]4 10 02https://esolangs.org/w/index.php?diff=176250&oldid=132738 5* 03Yayimhere2(school) 5* (+13) 10/* Relationships to other languages / language families */ > 1771408899 184456 PRIVMSG #esolangs :14[[07User:NoWhy14]]4 M10 02https://esolangs.org/w/index.php?diff=176251&oldid=166118 5* 03NoWhy 5* (-21) 10 > 1771408920 619386 PRIVMSG #esolangs :14[[07User:NoWhy14]]4 M10 02https://esolangs.org/w/index.php?diff=176252&oldid=176251 5* 03NoWhy 5* (-106) 10 > 1771409712 752637 PRIVMSG #esolangs :14[[07Talk:End14]]4 10 02https://esolangs.org/w/index.php?diff=176253&oldid=137513 5* 03Blashyrkh 5* (+179) 10 < 1771412297 303602 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1771413450 740015 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hi APic < 1771413865 646971 :int-e!~noone@int-e.eu QUIT :Server closed connection < 1771413875 61490 :int-e!~noone@int-e.eu JOIN #esolangs int-e :Bertram < 1771413993 396638 :APic!apic@apic.name PRIVMSG #esolangs :Heya ais523 😌 < 1771414744 94646 :amby!~ambylastn@host-81-178-152-95.as13285.net JOIN #esolangs amby :realname < 1771416396 834650 :lisbeths!uid135845@id-135845.lymington.irccloud.com JOIN #esolangs lisbeths :lisbeths > 1771418399 193247 PRIVMSG #esolangs :14[[07User:PKMN Trainer/Sandbox14]]4 N10 02https://esolangs.org/w/index.php?oldid=176254 5* 03PKMN Trainer 5* (+64) 10Created page with "Function is a programming language made by [[User:PKMN Trainer]]" < 1771419654 350955 :impomatic!~impomatic@cpc146328-oldh12-2-0-cust1012.10-1.cable.virginm.net JOIN #esolangs * :[https://web.libera.chat] impomatic < 1771422571 31392 :ais523!~ais523@user/ais523 QUIT :Quit: quit < 1771424884 65881 :msv!~msv@user/msv QUIT :Remote host closed the connection < 1771424908 160750 :msv!~msv@user/msv JOIN #esolangs msv :msv < 1771425079 699633 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1771426691 788412 PRIVMSG #esolangs :14[[07M14]]4 10 02https://esolangs.org/w/index.php?diff=176255&oldid=172968 5* 03Yayimhere2(school) 5* (+29) 10Undo revision [[Special:Diff/172968|172968]] by [[Special:Contributions/Yayimhere2(school)|Yayimhere2(school)]] ([[User talk:Yayimhere2(school)|talk]]) > 1771426702 997996 PRIVMSG #esolangs :14[[07M14]]4 10 02https://esolangs.org/w/index.php?diff=176256&oldid=176255 5* 03Yayimhere2(school) 5* (+152) 10Undo revision [[Special:Diff/172967|172967]] by [[Special:Contributions/Yayimhere2(school)|Yayimhere2(school)]] ([[User talk:Yayimhere2(school)|talk]]) > 1771426751 656124 PRIVMSG #esolangs :14[[07M14]]4 10 02https://esolangs.org/w/index.php?diff=176257&oldid=176256 5* 03Yayimhere2(school) 5* (-38) 10 < 1771427267 150085 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de JOIN #esolangs * :Textual User < 1771427690 789822 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) > 1771429360 273589 PRIVMSG #esolangs :14[[07Yet Another Stack-Based Esoteric Programming Language14]]4 10 02https://esolangs.org/w/index.php?diff=176258&oldid=176230 5* 03Fly 5* (+415) 10 > 1771429397 453656 PRIVMSG #esolangs :14[[07Yet Another Stack-Based Esoteric Programming Language14]]4 10 02https://esolangs.org/w/index.php?diff=176259&oldid=176258 5* 03Fly 5* (+32) 10 > 1771429449 935200 PRIVMSG #esolangs :14[[07Yet Another Stack-Based Esoteric Programming Language14]]4 10 02https://esolangs.org/w/index.php?diff=176260&oldid=176259 5* 03Fly 5* (-24) 10 < 1771429669 773470 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: What I find interesting is what *wasn't* copied from LLVM. I'm very surprised that the backend isn't using NOLTIS and tiling. < 1771429696 599887 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: isn't that copied from the lecture notes of every compiler course ever? :-D < 1771429704 517825 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :It was kind of fun to see the exact same logic in my lexer and theirs. < 1771429733 320200 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if you just want an instruction selection algorithm that's correct, and don't care about performance at all, there probably isn't a reason to use actual registers < 1771429756 324799 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yeah! Or nowadays, at least. It's like a 2008 algorithm, so it doesn't show up in some older compilers. It also doesn't show up in ad-hoc compilers like the older GL shader compilers. < 1771429772 698991 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :"let's create a stack allocation for every temporary and just use %rax to move them back and forth" is both simple and obviously correct, it's just horrifying performance-wise < 1771429819 959098 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, I was reading up on NOLTIS and suspect that it isn't the last word in instruction selection – it's fast and near-optimal on its own, but doesn't interact well with register allocation algorithms < 1771429847 842104 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so I think there might be space for a "near optimal, linear-time, instruction selection and register allocation" algorithm < 1771429852 812571 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(but I don't know how it works) < 1771429934 361209 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw I have a suspicion that in code with large inner loops, a good register allocation (especially one that minimizes the number of registers used) is more important than a good instruction selection algorithm (ccc fails horribly at register allocation, to the extent that it's hard to tell how good the instruction selection algorihtm is) < 1771429987 247208 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :most compilers use a spilling algorithm in which everything starts off in spill slots, and then those get optimised to overlap each other and/or replaced by registers < 1771430009 169392 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think that's backwards – my approach would be to start with everything in (virtual) registers and force it into spill slots only when necessary < 1771430038 318953 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although I suspect the two approaches might just end up equivalent when nontrivial amounts of optimisation are applied, it would make a big difference at -O0 > 1771430561 12008 PRIVMSG #esolangs :14[[07Yet Another Stack-Based Esoteric Programming Language14]]4 M10 02https://esolangs.org/w/index.php?diff=176261&oldid=176260 5* 03Dragoneater67mobile 5* (+5) 10/* Stack manipulation */ typo fix > 1771430617 912269 PRIVMSG #esolangs :14[[07Yet Another Stack-Based Esoteric Programming Language14]]4 M10 02https://esolangs.org/w/index.php?diff=176262&oldid=176261 5* 03Dragoneater67mobile 5* (+13) 10formatting > 1771430664 398657 PRIVMSG #esolangs :14[[07Yet Another Stack-Based Esoteric Programming Language14]]4 10 02https://esolangs.org/w/index.php?diff=176263&oldid=176262 5* 03Dragoneater67mobile 5* (+5) 10 < 1771430812 163555 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yeah. I wonder whether we've been scared for too long due to the NP-hardness of register allocation. Folklore says that a greedy virtual-register algorithm, which first computes a program using hundreds of registers and then slowly pares it down by spilling, must miss some optimal solutions or else P=NP. But maybe optimal solutions aren't actually that big of a deal? < 1771430848 867389 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Like, AFAIK there's usually not a performance impact from *using* a GPR on the typical architecture. So if you already have a solution that fits within your GPR budget then there's no need to push for an optimal solution. < 1771430849 729026 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the real question is as to whether there's a good polynomial time approximation < 1771430878 267517 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Instead the reason to avoid using registers is to avoid imposing spill or save/restore costs on *callers*. < 1771430885 441879 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so I think there is a reason to try to push the GPR budget smaller < 1771430919 538259 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and that's that it allows for better interprocedural optimisations, which both help beyond the point where you can't reasonably inline, and reduce the amount of inlining that's required for good performance < 1771430933 161450 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, you keep the GPR budget low so that the caller doesn't have to spill so mich < 1771430934 619905 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* much < 1771430999 209078 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :looks like https://en.wikipedia.org/wiki/APX is the relevant computational class for this sort of thing < 1771431600 404743 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I wonder whether this is another win for static linking. I could imagine that DLLs/DSOs could be separately optimized prior to release, or perhaps optimized on-device during installation, to reduce the cost of fastcalls. I don't remember which ABIs support that sort of dynamic fastcall though. < 1771431657 7500 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :...Maybe I skipped ahead a little. I was imagining that whole-program compilation of an executable would use a different register-allocation strategy than compiling a reusable DSO. < 1771432202 748568 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I can imagine the equivalent of a DLL import library stating how many registers each function uses, so that the importing code could optimise around that < 1771432218 38762 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it probably wouldn't be too useful because then you wouldn't necessarily be able to swap the DLL out with a newer version < 1771432257 952259 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, what's the generic term for "callable things provided by a DLL"? "symbol" is too general but "function" not general enough < 1771432341 534827 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Same reasoning applies to GOT and PLT. We want the early binding, but we still hardcoded some of the names so it's already partially bound. A compromise between the early- and late-binding camps. < 1771432436 289973 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, maybe "procedure" is the generic term, the acronym "PLT" uses it for that purpose < 1771432483 291272 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although when I was first learning programming, the terminology of the time was that a "procedure" was unable to return a value) < 1771432546 291464 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :(And then there's "routine" from the dinosaur years) < 1771432710 711966 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, is a subroutine like a smaller routine? < 1771433700 684364 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1771434482 175725 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Maybe it's a static call stack depth thing. `main` is the (only) routine, the things it directly calls are sub-routines, the things called from there are sub-sub-routines, and so on. < 1771434661 219958 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de JOIN #esolangs * :Textual User < 1771434679 688920 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, does this make the shell a superroutine? < 1771434708 329747 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or maybe the dynamic loader > 1771435233 844331 PRIVMSG #esolangs :14[[07User:PKMN Trainer/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=176264&oldid=176254 5* 03PKMN Trainer 5* (+1107) 10 > 1771435586 227874 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03PKMN Trainer 5* 10moved [[02User:PKMN Trainer/Sandbox10]] to [[Functionable]]: moving to namespace > 1771435752 745655 PRIVMSG #esolangs :14[[07Functionable14]]4 10 02https://esolangs.org/w/index.php?diff=176267&oldid=176265 5* 03PKMN Trainer 5* (+56) 10 < 1771436360 241858 :impomatic!~impomatic@cpc146328-oldh12-2-0-cust1012.10-1.cable.virginm.net QUIT :Quit: Client closed < 1771437514 364502 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: what's the difference between a spill slot and a virtual register? < 1771437535 913955 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :spill slots have a memory address < 1771437572 333696 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :whereas virtual registers can be a single GPR, or repeatedly moved between GPRs, or spilled onto the stack into a spill slot < 1771437601 630907 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523 “the terminology of the time was that a ‘procedure’ was unable to return a value” => because that's the Pascal terminology. now we use scheme terminology, where a procedure can return a value or even multiple values < 1771437661 185322 :gAy_Dragon!A_D@libera/staff/dragon QUIT :*.net *.split < 1771437676 83884 :A_Dragon!A_D@libera/staff/dragon JOIN #esolangs ad :Roy Mustang, The Flame Alchemist < 1771437691 23130 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1771437808 362061 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de JOIN #esolangs * :Textual User < 1771437991 274792 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I think canonical FORTRAN terminology is that you can have a FUNCTION (can return a value), or a SUBROUTINE (cannot return a value), but both of them are a type of procedure. < 1771438101 805755 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :FORTRAN 77: "A subprogram is a program unit that has a FUNCTION, SUBROUTINE, or BLOCK DATA statement as its first statement. A subprogram whose first statement is a FUNCTION statement is called a function subprogram. A subprogram whose first statement is a SUBROUTINE statement is called a subroutine subprogram. Function subprograms and subroutine subprograms are called procedure subprograms." < 1771438114 484325 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I have to say, "subroutine subprogram" is a bit of a mouthful. < 1771438178 204635 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Should be popular with streamers with all those subs. < 1771438204 721795 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I wonder if people discussing the FORTRAN 77 standard sometimes abbreviated them to "funsubs" and "subsubs". < 1771438359 456742 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :int-e: yeah, the terminology there is just as confusing. "subscribe" on Youtube and "follow" on Twitch are the free thing; "subscribe" on Twitch is and "join" on Youtube is where you pay money to the provider < 1771438398 650168 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Remeber to like and subscribe, and click the bell. < 1771438528 210198 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`? like < 1771438532 714688 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :like? ¯\(°​_o)/¯ < 1771438538 527634 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`' like < 1771438539 801787 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :51) actually just ate some of the dog food because i didn't have any human food... after a while they start tasting like porridge \ 82) Well yeah, but furthermore unlike, oh, say, an Apple product, you don't have to sign their "we own your sperm" license agreement to GET that SDK and the requisite libraries. [...] pikhq: Sure, but it's the only way Apple could get a first-born-son clause into a modern licensing agreement without < 1771438547 643235 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`? this < 1771438549 369632 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :This is something people on the channel like to talk about. We're often unsure what this is, though. Nobody likes this. < 1771438558 791098 :pikhq!sid394595@user/meow/pikhq PRIVMSG #esolangs :ACTION meows after a random ping < 1771440141 350203 :impomatic!~impomatic@86.9.23.245 JOIN #esolangs * :[https://web.libera.chat] impomatic < 1771440159 147751 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Oh, is there no anti-ping mechanism in HackEso quote listing? I guess there isn't. > 1771440471 674431 PRIVMSG #esolangs :14[[07Binary-encoded Minsky machine14]]4 10 02https://esolangs.org/w/index.php?diff=176268&oldid=144805 5* 03RikoMamaBala 5* (+275) 10Corrected grammar errors < 1771440527 834772 :ais523!~ais523@user/ais523 QUIT :Quit: quit > 1771440708 963617 PRIVMSG #esolangs :14[[071BNWL14]]4 M10 02https://esolangs.org/w/index.php?diff=176269&oldid=155592 5* 03RikoMamaBala 5* (+0) 10 < 1771440935 367841 :lisbeths!uid135845@id-135845.lymington.irccloud.com QUIT :Quit: Connection closed for inactivity < 1771443385 473223 :iovoid!iovoid@hellomouse/dev/iovoid QUIT :Quit: iovoid has quit! < 1771443631 41152 :iovoid!iovoid@hellomouse/dev/iovoid JOIN #esolangs iovoid :MPCitH is when you read a book < 1771443942 334730 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1771444001 831271 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 272 seconds < 1771444115 976338 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 NICK :Lord_of_Life < 1771444429 586451 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Ugh, had a good pun, now must resist the urge. Viola: a derivative of Cello which is capability-safe, mostly by omitting features of C. Like Vixen, compiles to execline. Could be practically used to make lightweight syscall wrappers. < 1771444646 963669 :A_Dragon!A_D@libera/staff/dragon NICK :gAy_Dragon < 1771444701 557674 :APic!apic@apic.name PRIVMSG #esolangs :cu < 1771446151 146099 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1771446651 898879 :JAA!~JAA@user/meow/JAA QUIT :Server closed connection < 1771446662 53641 :JAA!~JAA@user/meow/JAA JOIN #esolangs JAA :JustAnotherArchivist < 1771446782 941901 :impomatic!~impomatic@86.9.23.245 QUIT :Quit: Client closed < 1771447299 470592 :pikhq!sid394595@user/meow/pikhq QUIT :Server closed connection < 1771447310 111193 :pikhq!sid394595@user/meow/pikhq JOIN #esolangs pikhq :Ada Worcester < 1771447596 82377 :ais523!~ais523@user/ais523 QUIT :Quit: quit < 1771449310 693862 :int-e!~noone@int-e.eu QUIT :Quit: Reconnecting < 1771449319 187168 :int-e!~noone@int-e.eu JOIN #esolangs int-e :Bertram < 1771452651 895753 :jix_!~jix@user/jix QUIT :Server closed connection < 1771452670 202433 :jix!~jix@user/jix JOIN #esolangs jix :Jannis Harder < 1771453841 789958 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine < 1771453894 342391 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1771455882 135270 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1771457819 137658 :tromp!~textual@2001:1c00:3487:1b00:8db8:aaff:f8b5:b4de QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1771458490 844684 :pool!~nathan@user/PoolloverNathan JOIN #esolangs PoolloverNathan :nathan