< 1759106705 197992 :amby!~ambylastn@host-92-17-32-126.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 < 1759106862 695068 :Sgeo_!~Sgeo@user/sgeo PRIVMSG #esolangs :Someone should document IBM RPG as though it was an esolang < 1759106893 711586 :Sgeo_!~Sgeo@user/sgeo PRIVMSG #esolangs :There's a lot of vintage computing stuff that seems esoteric to modern eyes, huh. > 1759111202 620856 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 N10 02https://esolangs.org/w/index.php?oldid=165335 5* 03Ashli Katt 5* (+6950) 10Create page > 1759111227 297331 PRIVMSG #esolangs :14[[07User:Ashli Katt14]]4 M10 02https://esolangs.org/w/index.php?diff=165336&oldid=165059 5* 03Ashli Katt 5* (+54) 10/* Languages I've Made */ > 1759111232 996471 PRIVMSG #esolangs :14[[07Nothing Of-course, Timeless Hitchhikes In New Gardens14]]4 10 02https://esolangs.org/w/index.php?diff=165337&oldid=165225 5* 03Jk.NDC 5* (+55) 10 > 1759111498 965039 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165338&oldid=165335 5* 03Ashli Katt 5* (+8) 10Edit wording to make it clear that '>' instruction is += and not =, so to speak > 1759111743 369210 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165339&oldid=165338 5* 03Ashli Katt 5* (+197) 10Clarify behavior when WRITING invalid UTF-8 characters. > 1759111772 986966 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165340&oldid=165339 5* 03Ashli Katt 5* (-3) 10Fix list > 1759111801 611227 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165341&oldid=165340 5* 03Ashli Katt 5* (+13) 10Clarify exit code of previous UTF-8 change. Whoops! < 1759112696 169972 :FreeFull!~freefull@79.186.197.114.ipv4.supernova.orange.pl QUIT :Quit: Lost terminal > 1759113974 375649 PRIVMSG #esolangs :14[[07User:Jk.NDC14]]4 10 02https://esolangs.org/w/index.php?diff=165342&oldid=165270 5* 03Jk.NDC 5* (-6) 10/* semi-Weekly Riddle */ > 1759113991 850158 PRIVMSG #esolangs :14[[07User:Jk.NDC14]]4 10 02https://esolangs.org/w/index.php?diff=165343&oldid=165342 5* 03Jk.NDC 5* (+8) 10/* semi-Weekly Riddle */ > 1759114003 753966 PRIVMSG #esolangs :14[[07User:Jk.NDC14]]4 10 02https://esolangs.org/w/index.php?diff=165344&oldid=165343 5* 03Jk.NDC 5* (+1) 10/* semi-Weekly Riddle */ > 1759114023 53267 PRIVMSG #esolangs :14[[07User:Jk.NDC14]]4 10 02https://esolangs.org/w/index.php?diff=165345&oldid=165344 5* 03Jk.NDC 5* (+18) 10/* semi-Weekly Riddle */ > 1759119510 992436 PRIVMSG #esolangs :14[[075D Brainfuck With Multiverse Time Travel14]]4 10 02https://esolangs.org/w/index.php?diff=165346&oldid=88264 5* 03Quuxplusone 5* (+102) 10/* Examples */ per my last email... > 1759124307 267905 PRIVMSG #esolangs :14[[07Siyu14]]4 N10 02https://esolangs.org/w/index.php?oldid=165347 5* 03None1 5* (+1251) 10Created page with "'''Siyu''' (Pinyin of Chinese word meaning dead fish) is an esolang invented by [[User:None1]]. It is a [[deadfish]] derivative. ==Commands== {| class="wikitable" |- ! Command !! Corresponding Chinese word !! Meaning |- | z || zeng jia (increase) || Increment the accumula > 1759125937 973327 PRIVMSG #esolangs :14[[07Bleh14]]4 M10 02https://esolangs.org/w/index.php?diff=165348&oldid=144085 5* 03Ashli Katt 5* (-11) 10Edit User: link to remove alias > 1759125976 558113 PRIVMSG #esolangs :14[[07Foreach14]]4 M10 02https://esolangs.org/w/index.php?diff=165349&oldid=126931 5* 03Ashli Katt 5* (-11) 10Edit User: link to remove alias > 1759126267 361720 PRIVMSG #esolangs :14[[07User:Ashli Katt14]]4 M10 02https://esolangs.org/w/index.php?diff=165350&oldid=165336 5* 03Ashli Katt 5* (+3) 10Reword sheep link > 1759126669 670355 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165351&oldid=165341 5* 03Ashli Katt 5* (+286) 10/* IO */ Clarify that STDIN behavior still reads byte-by-byte < 1759126843 315812 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 JOIN #esolangs * :Textual User < 1759127640 812052 :Sgeo_!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1759130698 269903 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) > 1759131282 873871 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165352&oldid=165351 5* 03Ashli Katt 5* (-428) 10/* IO */ Clarify IO and allow binary data > 1759131335 493632 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165353&oldid=165352 5* 03Ashli Katt 5* (-34) 10/* Error States */ Add new error state > 1759131434 551151 PRIVMSG #esolangs :14[[07Smoothbrain14]]4 M10 02https://esolangs.org/w/index.php?diff=165354&oldid=165353 5* 03Ashli Katt 5* (+9) 10/* IO */ Adjust position of (U+000A) < 1759132003 248385 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1759132525 522171 PRIVMSG #esolangs :14[[07Isec14]]4 10 02https://esolangs.org/w/index.php?diff=165355&oldid=165304 5* 03U 5* (-137) 10 > 1759132766 337097 PRIVMSG #esolangs :14[[07Isec TC proof14]]4 10 02https://esolangs.org/w/index.php?diff=165356&oldid=165318 5* 03U 5* (+36) 10 < 1759136581 343585 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 JOIN #esolangs * :Textual User < 1759137032 93295 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :is it possible on Linux for a process running as root to change the memory map permissions (i.e. ability for its owner to read/write/execute a given memory map) for a different process, in a case where the process couldn't make that change itself? < 1759137081 1606 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I know how to do it when the process could make that change itself – you ptrace the other process, break at a system call, change the call to be an mprotect call, then once the mprotect happens rewind over the system call and run the original call) < 1759137166 786210 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the motivating use of this is for a sandboxed JIT – it creates the code it wants to run, then asks a higher-privileged process to verify that the machine code it generated fulfils certain constraints, and if that process agrees it changes the memory from writable to executable < 1759137352 437434 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1759138406 54239 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, I wonder if process_vm_writev could overwrite a map that's already executable-and-not-writable – the documentation doesn't rule it out, but I suspect that's a documentation mistake < 1759138640 946044 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 JOIN #esolangs * :Textual User < 1759139120 494717 :roper!~b@98.96.185.4 JOIN #esolangs roper :b < 1759140250 3022 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs * :[https://web.libera.chat] wob_jonas < 1759140379 836889 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: I don't see how such a sandbox would work. how would you ensure that the process only jumps to the correct entry points in the code? < 1759140423 869870 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wob_jonas: you could have verified the outer process first to make sure it only jumps in certain ways – otherwise, it's probably useless < 1759140442 288880 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :also if you want to change a mapping to executable then I don't see how you'd also have to stop the process from just making an anonymous executable mapping < 1759140455 673543 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's much easier to verify code for type safety and jump targets than it is to verify that it's only capable of outputting type-safe asm < 1759140483 521583 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, that's easy, most OSes allow you to restrict a process from making certain types of mapping nowadays < 1759140497 414087 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :on Linux you can do it using seccomp to ban certain parameters to the mmap and mprotect system calls < 1759140580 950384 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :hmm, but at that point either you trust your verifier enough that you allow the process to make mprotect calls itself, or you put a full filter on all the system calls that the process is allowed to do, with like selinux or bpf or whatever, and allow the one mmap/mprotect call through the filter < 1759140593 242074 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess what you'd have to do is to put the filter into ptrace mode (i.e. "a debugger can approve this system call but it's banned by default") < 1759140613 180963 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :right, put a hole in the filter to temporarily allow a call < 1759140623 831382 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and then when you attach the debugger to inject the mprotect call, it can allow itself < 1759140791 483467 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I'm not sure it even has to be a debugger -- at least as long as you checked a previous recvmsg system call to make sure the process received the file descriptor for the specific compiled code that you allowed, then filter all the system calls like close and fcntl to make sure nothing overwrites that file descriptor, then allow the one mmap call < 1759140791 983068 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :mapping that file descriptor. < 1759140858 903307 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that's interesting but seems a bit fragile < 1759140875 744490 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you would probably need to use a fixed fd number for it < 1759140911 242024 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which, logically, should be 3 – but then you need a workaround for if the calling process tried to pass information using an open FD 3 < 1759140953 707281 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :no, you read the process's memory after the recvmsg call to see what file descriptor number it received -- I guess that counts as a debugger, unless your system call bps filter can do that for you < 1759141070 387035 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :admittedly it's a bit ugly, because you need to dereference two levels of pointers from what the process passed to the recvmsg call < 1759141091 260856 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :and you might even need to verify that the process doesn't do overlapping pointer shenanigans < 1759141097 822688 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :hmm < 1759141131 671610 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if you're reacting to what the process does dynamically you need/are a debugger < 1759141139 429082 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :yeah < 1759141141 986812 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :bpf isn't stateful < 1759141148 568976 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :it is a debugger at that point < 1759141171 819103 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, I realised that this can be useful even if you haven't verified the existing code, as long as you're on a processor that requires branch targets to be marked < 1759141183 869396 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because you can just scan for branch target sequences that are in the wrong place < 1759141248 71603 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :you can probably at least skip verifying the dup2/fcntl/close calls if you require that the mmap is the immediately following syscall after recvmsg, and retry both calls a few times if it isn't < 1759141256 252119 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although I think this means you can't use a traditional linker, in case it created a branch target sequence using a relocation) < 1759141298 567771 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ooh, dup2 lets you pick the new file descriptor number even if it wasn't previously open < 1759141314 310716 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so you could use an fd of 65534 or whatever < 1759141358 247244 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :yes, but there's a setrlimit for that < 1759141382 157171 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :and I think a system-global limit too < 1759141450 76375 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I thought it was on the number of FDs that were open, not on the FD number itself < 1759141476 109452 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :hmm, let me look that up < 1759141507 496849 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :https://man7.org/linux/man-pages/man2/setrlimit.2.html "a value one greater than the maximum file descriptor number that can be opened by this process." < 1759141542 933834 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :for RLIMIT_NOFILE < 1759141565 415966 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I agree, I just tested, I can't use an FD number greater than the open file limit < 1759141613 331521 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now I'm wondering if the FDs are stored in a contiguous array < 1759141722 327181 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :they probably are. outside of dup2/dup3/fcntl, every new file descriptor number is guaranteed to be the first unused one for the process, and this requires synchronization between multiple processors running threads of the process. this came up because the synchronization is ugly in high-performance network servers, but Linux didn't dare to just < 1759141722 827491 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :break the guarantee that's been there for as long as there was a unix < 1759141759 606013 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :It's also a POSIX guarantee. < 1759141801 940384 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I think this was part of the motivation to create all those new system calls that take an extra argument for an O_CLOFD flag, so that if it's ever needed they could add an O_* flag to indicate that you don't insist on the least unused file descriptor number < 1759141826 646016 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_06 "All functions that open one or more file descriptors shall, unless specified otherwise, atomically allocate the lowest numbered available (that is, not already open in the calling process) file descriptor at the time of each allocation." < 1759141843 475411 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fizzie: we're talking specifically about dup2, which lets you choose the new file descriptor number < 1759141874 519577 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: no, we're talking about why the file descriptors are stored in a contiguous array < 1759141881 313433 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah, I see < 1759141886 725668 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but wouldn't dup2 be a reason not to? < 1759141919 928384 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :no, if the process abuses dup2 it's their problem that they're allocating too much kernel memory, and if you don't want that then you rlimit it < 1759141957 204326 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :there are other ways that a process can allocate lots of kernel memory, and most of them, including this one, has knobs in /proc or sysctl or something to limit it < 1759142022 4172 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :oh, also < 1759142070 157923 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :select/pselect, they take a dense array indexed by file descriptor numbers. you can use alternate APIs these days, but select/pselect are still useful, so that's another reason why a process won't use unnecessarily large file descriptors < 1759142127 514532 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes < 1759142135 38054 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Interestingly, my shell has open file descriptors 0, 1, 2 and 255 (all pointing at the same pty), where the latter is -- well, okay, it's not a *big* number, but still. < 1759142163 368420 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` set -e; cd /proc/fd; ls -dF < 1759142167 849661 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/hackenv/bin/`: line 5: cd: /proc/fd: No such file or directory < 1759142177 16912 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` set -e; cd /proc/self/fd; ls -dF < 1759142178 694610 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​./ < 1759142184 774012 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :duh < 1759142187 647243 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` set -e; cd /proc/self/fd; ls -F < 1759142189 130198 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :0@ \ 1@ \ 2@ < 1759142191 194585 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fizzie: mine too, but it seems to be specifically the shell, other processes don't do that < 1759142213 576441 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` bash -ic 'set -e; cd /proc/self/fd; ls -F' < 1759142215 427549 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :bash: cannot set terminal process group (-1): Inappropriate ioctl for device \ bash: no job control in this shell \ 0@ \ 1@ \ 2@ \ 255@ < 1759142227 761062 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :huh, it does < 1759142236 205720 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :at least when it runs ls < 1759142245 706061 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` bash -ic 'set -e; cd /proc/self/fd; printf "(%s)" *' < 1759142247 255806 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :bash: cannot set terminal process group (-1): Inappropriate ioctl for device \ bash: no job control in this shell \ (0)(1)(2)(255)(3) < 1759142262 626346 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ooh, even more interesting: I tried with dash, and it had fds 0, 1, 2, 10 open < 1759142265 414298 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :(Got curious about the process with the largest-numbered file descriptor, which on this system is (unsuprisingly) Chrome, with 719 open files, with the highest number of 829.) < 1759142277 5859 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :0, 1, 2 were all /dev/pts files, 10 was /dev/tty (which I think is an alias for the same /dev/pts) < 1759142319 699793 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zsh has 10 as the same /dev/pts as 0, 1, 2, also 12 and 13 holding completion databases open < 1759142399 885926 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so I guess there's some need for shells to hold a reference to their terminal in a weirdly-numbered fd, it's hard to imagine them all doing that otherwise < 1759142418 715483 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: only login shells, which use the terminal for job control < 1759142421 516514 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :busybox sh is also holding /dev/tty open on fd 10 < 1759142422 578751 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` bash -c 'set -e; cd /proc/self/fd; printf "(%s)" *' < 1759142424 376261 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​(0)(1)(2)(3) < 1759142429 963926 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` bash -ic 'set -e; cd /proc/self/fd; printf "(%s)" *' < 1759142431 242878 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :bash: cannot set terminal process group (-1): Inappropriate ioctl for device \ bash: no job control in this shell \ (0)(1)(2)(255)(3) < 1759142437 499997 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :sorry, not login shells, *interactive* shells < 1759142451 86268 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes, interactive seems like the right condition < 1759142470 714726 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :they need to be able to use the controlling terminal for job control even if their input/output is redirected, since redirecting is allowed < 1759142471 433854 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :https://sources.debian.org/src/bash/4.3-11%2Bdeb8u1/jobs.c/#L3813 "move_to_high_fd" (in an `else` branch of `if (interactive == 0 && force == 0)`). < 1759143000 805421 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` script -c 'set -e; cd /proc/self/fd; printf "(%s)" *' # wait, you can't even open a pty in HackEso because devpts isn't mounted? < 1759143004 270159 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :script: openpty failed: No such file or directory < 1759143043 936106 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ouch, I thought it was possible to open one < 1759143182 646449 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think it's theoretically possible to open one without devpts, but it probably involves manually setting device numbers and HackEso probably doesn't like that either < 1759143207 919595 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`` ls -l /dev/pty* < 1759143209 732243 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :ls: cannot access '/dev/pty*': No such file or directory < 1759143271 923381 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`` ls -l /dev/ptmx < 1759143273 456480 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :lrwxrwxrwx 1 0 0 8 Jul 1 2024 /dev/ptmx -> pts/ptmx < 1759143282 41163 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Mm. `umlbox` mounts /dev as read-only hostfs mount from outside the UML, which is a pretty dubious choice, but I guess it is expedient in the sense that there's no need to create the expected /dev nodes. < 1759143284 830975 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :`` cat /proc/mounts | grep /dev < 1759143286 179742 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :none /dev hostfs ro,nosuid,relatime,/dev/ 0 0 < 1759143288 455757 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah, OK, I was wondering how that one was going to work < 1759143304 7257 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(ptmx, that is) < 1759143346 476027 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now I'm wondering if anything abusive can be done with read-only access to all a system's devices < 1759143369 210182 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :isn't there one that contains a screenshot of boot messages? < 1759143384 929114 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: I don't think you really access them, because when you open them, UML will just look at their stat and opens the right device *inside* the guest, not in the host < 1759143394 204153 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wob_jonas: ah right < 1759143446 885554 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`? hackego < 1759143449 870264 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. HackEgo is the slowest bot in all Mexico! < 1759143452 735135 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :`` ls /dev # it's a pretty minimal /dev because the host is a systemd-nspawn namespaced container of a minimal Debian system < 1759143454 347286 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :char \ console \ core \ fd \ full \ initctl \ log \ mqueue \ net \ null \ ptmx \ pts \ random \ shm \ stderr \ stdin \ stdout \ tty \ urandom \ zero < 1759143564 445815 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :yeah, but some of those few devices are used by a lot of user-mode processes, so a minimal /dev is still worth, even if it's not the host's /dev but a specially created directory < 1759143616 606864 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`` head -c 40 /dev/urandom | base64 < 1759143619 706602 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :BcGOW7+Mns5Sj/LhmKlzTsbP77vHUCqV/APwXOg21MJprUwFucbdTQ== < 1759143643 448697 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`` cat test > /dev/tty < 1759143645 103388 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/hackenv/bin/`: line 5: /dev/tty: No such device or address < 1759143662 787308 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think I've seen that errno code before < 1759143700 417659 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I think /dev/tty is your controlling terminal, which you don't have, and you won't have without being able to create pseudo-terminals < 1759143762 396922 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wob_jonas: yes – I knew it "shouldn't" have one but was wondering if the framework would point it to its normal stdout/stderr stream somehow < 1759143798 349484 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Funny note about (u)random, by the way: there's a bit in the umlbox init where the Python script that invokes it can optionally give it a few bytes of randomness to preload the entropy pool with. < 1759143803 419461 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :https://github.com/fis/umlbox/blob/master/umlbox#L66-L68 -> https://github.com/fis/umlbox/blob/master/umlbox#L206-L207 -> https://github.com/fis/umlbox/blob/master/init.c#L131-L132 -> https://github.com/fis/umlbox/blob/master/init.c#L151-L163 < 1759143811 605470 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`` readlink /dev/console # though I think the top-level process has access to a terminal, but then a startup script spawns your command with its standard handles redirected < 1759143812 651969 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :looks like this errno code is ENXIO < 1759143812 955354 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :pts/0 < 1759143847 586251 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and the specific cause listed in the open(2) documentation was "The file is a device special file and no corresponding device exists." < 1759143869 179058 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`` cat test > /dev/ttyS4 < 1759143870 349893 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :​/hackenv/bin/`: line 5: /dev/ttyS4: Read-only file system < 1759143878 58827 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`` cat /dev/ttyS4 < 1759143879 575307 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :cat: /dev/ttyS4: No such file or directory < 1759143896 588857 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, I see, there aren't 4 serial terminals so it was trying to create a new file in /dev < 1759143902 208989 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`` cat /dev/ttyS0 < 1759143904 528029 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :cat: /dev/ttyS0: No such file or directory < 1759143928 39004 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :aren't any serial terminals, boring (I thought the device for one might be defined even though the terminal itself probably doesn't exist) < 1759143992 878472 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: I think you only proved that our /dev/ doesn't have any entry for them, not that there aren't serial terminals < 1759143998 519266 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, I just realised that that /dev doesn't have any disks < 1759144003 485375 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wob_jonas: good point < 1759144040 999980 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :`cat /proc/consoles < 1759144042 691286 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :tty0 -W- (EC p a) 4:0 \ mc-1 -W- (E ) < 1759144048 506800 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :when I rand the emulated DOS machine connected to IRC, the emulated machine actually communicated through serial port to and from IRC < 1759144053 26491 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I'm not exactly sure what "mc-1" is. < 1759144111 23758 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :an emulated serial port that is < 1759144210 324310 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :VPSes often allow access via the serial console to recover them if ssh or the like breaks < 1759144228 826089 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I assume it's an emulated serial console rather than an actual serial port, but am not sure what level of the stack it gets emulated at < 1759144234 858692 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :maybe the hypervisor? < 1759144591 693444 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :UML does provide emulated "consoles" and "serial lines"; on the outside, you can connect them to terminals, TCP ports (that speak telnet) or just existing open file descriptors. umlbox uses up to three: one for the command, one as the system console (for kernel messages) for troubleshooting, and one for the "mudem" (a program to multiplex TCP and Unix domain socket connections over a single < 1759144593 799267 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :link). < 1759144608 336933 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I don't think the current installation uses mudem though. < 1759145034 435711 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :wait, unix domain sockets? I've heard of tunneling out IP network through an emulated ethernet stream, I think the linux host has built-in support for that. but I assumed the unix sockets would just be restricted to within the UML instance < 1759145249 166300 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I hope they at least can't send FDs < 1759145296 716144 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I think CLC-INTERCAL has an option to steal FDs from other processes over a network – sending FDs across the UML boundary would be similar) < 1759145449 847081 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :is that from other CLC-INTERCAL processes? < 1759145469 250298 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :wait, since when does INTERCAL even know the concept of file descriptors? < 1759145478 386457 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :isn't INTERCAL too old for that? < 1759145489 778864 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wob_jonas: other CLC-INTERCAL processes, yes < 1759145617 582529 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 264 seconds < 1759145716 979794 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1759145827 30496 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I looked it up: CLC-INTERCAL has a system call interface, you can store filehandles (not quite FDs) in variables < 1759145832 518774 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and if you steal the variable you steal the filehandle along with it < 1759145947 108099 :wob_jonas!~wob_jonas@business-37-191-60-209.business.broadband.hu QUIT :Ping timeout: 250 seconds < 1759146358 285056 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1759146570 367945 :roper!~b@98.96.185.4 QUIT :Read error: Connection reset by peer < 1759146809 178318 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I'm pretty sure umlbox-mudem can't forward file descriptors, it just reads and writes normal data. But you can use it to connect a Unix domain socket on one side into a TCP socket on the other, if you want. < 1759146824 837949 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :There's an `--x11` flag in the wrapper script which will configure the guest mudem instance to listen on TCP port :6000 and for every connection attempt, tell the host mudem instance to connect to /tmp/.X11-unix/X0 (hardcoded path), with the intention that you can use X11 applications inside the UML wrapper. < 1759146834 263656 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :(I've never used it.) < 1759146914 42636 :roper!~b@98.96.185.4 JOIN #esolangs roper :b < 1759147121 997792 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :(I guess that would probably even magically work without having to worry about xauth complications, since from the X server's perspective the UML process is just like any other X client? TBH, I've never really followed the X11 authorization thing.) > 1759147219 101530 PRIVMSG #esolangs :14[[07Joke language list14]]4 10 02https://esolangs.org/w/index.php?diff=165357&oldid=165156 5* 03None1 5* (+58) 10 > 1759147244 977134 PRIVMSG #esolangs :14[[07User:None114]]4 10 02https://esolangs.org/w/index.php?diff=165358&oldid=164727 5* 03None1 5* (+58) 10/* My Esolangs */ < 1759147894 683847 :APic!apic@apic.name QUIT :Ping timeout: 260 seconds < 1759148253 729786 :APic!apic@chiptune.apic.name JOIN #esolangs APic :A. Pic. - my name since YOLD 3149 < 1759148310 394217 :APic!apic@chiptune.apic.name PRIVMSG #esolangs :Hi < 1759151273 198722 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 JOIN #esolangs * :Textual User < 1759152973 557876 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1759154348 371405 :roper!~b@98.96.185.4 QUIT :Read error: Connection reset by peer < 1759154707 564417 :roper!~b@98.96.185.4 JOIN #esolangs roper :b < 1759156405 38784 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1759157875 558271 PRIVMSG #esolangs :14[[07 bits, 0 Bytes14]]4 M10 02https://esolangs.org/w/index.php?diff=165359&oldid=148247 5* 03TheBigH 5* (-25) 10Made character table readable without having the font Consolas installed. < 1759158417 548609 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 JOIN #esolangs * :Textual User > 1759158598 654019 PRIVMSG #esolangs :14[[07 bits, 0 Bytes14]]4 10 02https://esolangs.org/w/index.php?diff=165360&oldid=165359 5* 03Aadenboy 5* (+60) 10undoing to add a proper font stack > 1759159319 263350 PRIVMSG #esolangs :14[[07-2147483648 bytes .-.14]]4 N10 02https://esolangs.org/w/index.php?oldid=165361 5* 03TheBigH 5* (+4385) 10Page creation > 1759159411 474093 PRIVMSG #esolangs :14[[07Joke language list14]]4 M10 02https://esolangs.org/w/index.php?diff=165362&oldid=165357 5* 03TheBigH 5* (+69) 10Added -2147483648 bytes .-. > 1759159814 479564 PRIVMSG #esolangs :14[[07User:TheBigH14]]4 M10 02https://esolangs.org/w/index.php?diff=165363&oldid=165172 5* 03TheBigH 5* (+67) 10Added -2147483648 bytes .-. > 1759160708 120420 PRIVMSG #esolangs :14[[075D Brainfuck With Multiverse Time Travel14]]4 10 02https://esolangs.org/w/index.php?diff=165364&oldid=165346 5* 03Quuxplusone 5* (+163) 10/* hello world */ < 1759160726 641887 :ais523!~ais523@user/ais523 QUIT :Quit: sorry about my connection < 1759161115 564323 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1759162153 68965 :roper!~b@98.96.185.4 QUIT :Read error: Connection reset by peer < 1759162501 451919 :roper!~b@98.96.185.4 JOIN #esolangs roper :b < 1759164455 65060 :simcop2387!~simcop238@perlbot/patrician/simcop2387 QUIT :Ping timeout: 250 seconds < 1759164484 796430 :perlbot!~perlbot@perlbot/bot/simcop2387/perlbot QUIT :Ping timeout: 260 seconds < 1759166309 420378 :perlbot!~perlbot@perlbot/bot/simcop2387/perlbot JOIN #esolangs perlbot :ZNC - https://znc.in < 1759166523 387558 :simcop2387!~simcop238@perlbot/patrician/simcop2387 JOIN #esolangs simcop2387 :ZNC - https://znc.in < 1759166737 269249 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1759167944 375119 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I have a terminology question. So in the Enchain standard library, I want to provide an array of integers type. This means I expose to Enchain code a type and four functions that look basically like this: < 1759167951 352690 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :#include \ typedef uint32_t *array; array aalloc(uint32_t len) { return (array)calloc(len, sizeof uint32_t); } void afree(array arr) { free(arr); } uint32_t aget(array arr, uint32_t ind) { return arr[ind]; } void aset(array arr, uint32_t ind, uint32_t val) { array[ind] = val; } < 1759167961 827144 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :The plan is that Enchain should be typesafe and doesn't allow using uninitialized values. If this is sound and the compiler is implemented correctly, then in a pure Enchain code you can only call afree, aget, aset with a value that was returned by aalloc earlier in the program. < 1759167972 705627 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :But there's still a safety problem: you could try to use an array that has been freed, or index past the end of an array. To avoid this, the library lets you use a compile-time setting (probably just a C define) to enable one of two alternate implementations for arrays. < 1759167985 43171 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :One alternate implementation is completely memory safe, which means that the afree, aget, aset functions always verify that the array was allocated by aalloc and hasn't been freed yet and the index isn't too large, and if those conditions fail then the program aborts safely. This is useful for eg. developing an Enchain program. < 1759167991 580249 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :The other alternate implementation can't always fully verify the conditions, but if you misuse the functions then it can only corrupt the array memory. < 1759167996 412430 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :That means that the incorrect call or any future call to alloc, afree, aget, aset may abort the program safely, or an incorrect aget call or any future aget call may return any integer, but apart from those effects on these four functions, the program executes correctly. This can be useful for eg. running untrusted Enchain code, like a browser client-side script. < 1759168005 849606 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :My question is, what do you call these two types of memory safety, in particular what do I call the macro that enables them? < 1759168122 604734 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 JOIN #esolangs * :Textual User < 1759168370 624932 :zzo38!~zzo38@host-24-207-46-238.public.eastlink.ca PRIVMSG #esolangs :I don't know, although for type and memory safety something I used in another program is storing the type together with the value, and for object references to have a generation number to detect errors. However, this is not necessarily suitable for what you are making. < 1759168738 861065 :APic!apic@chiptune.apic.name PRIVMSG #esolangs :cu < 1759168785 82403 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : The other alternate implementation can't always fully verify the conditions, but if you misuse the functions then it can only corrupt the array memory. ← the implementation you've given doesn't have that property, if the index is far enough out of bounds it could hit another valid allocation < 1759168805 664536 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :as for the naming thing, I have these concepts existing in my head but don't think I've named them yet < 1759168958 675457 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess my thoughts for the second version are along the lines of "contained undefined behavior" < 1759168966 423471 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I don't think that's a standard name for it < 1759168985 74869 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in Rust documentation I normally write it as "may return an arbitrary value or panic" < 1759169098 446458 :ais523!~ais523@user/ais523 QUIT :Quit: quit < 1759169199 271866 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: I didn't give that implementation. there are three implementations, and I only gave code for one, the least safe one. < 1759169961 325265 :roper!~b@98.96.185.4 QUIT :Read error: Connection reset by peer < 1759170294 456834 :roper!~b@98.96.185.4 JOIN #esolangs roper :b < 1759170373 470773 :Sgeo_!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1759170565 563732 :Sgeo!~Sgeo@user/sgeo QUIT :Ping timeout: 264 seconds < 1759173468 754720 :roper!~b@98.96.185.4 QUIT :Quit: zzz < 1759174293 574587 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :here's an untested implementation (probably has lots of bugs) of the arrays in the three different memory safety modes => https://dpaste.org/eusge < 1759174356 698684 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :the actual implementation for enchain will use different names, and it'll probably be included three times, once for array of 32-bit integer, once for array of 16-bit integer, and once for array of 8-bit integer, each a separate type. and of course I'll have to fix all the bugs. < 1759175027 18207 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and there might be other functions, eg. copy_n a range from an array to another array (may be the same array), lexicographically lexicographically_compare_three_way two ranges, and, for arrays of 8-bit integers, fwrite or fread a range < 1759176842 674191 :amby!~ambylastn@host-92-17-32-126.as13285.net JOIN #esolangs amby :realname < 1759178475 259801 :lynndotpy60!~rootcanal@134.122.123.70 QUIT :Quit: bye bye < 1759178559 155154 :lynndotpy60!~rootcanal@134.122.123.70 JOIN #esolangs lynndotpy :lynn < 1759178630 846036 :lynndotpy60!~rootcanal@134.122.123.70 QUIT :Client Quit < 1759178688 46174 :lynndotpy60!~rootcanal@134.122.123.70 JOIN #esolangs lynndotpy :lynn > 1759178883 639786 PRIVMSG #esolangs :14[[07Arbitrary memory emulation14]]4 10 02https://esolangs.org/w/index.php?diff=165365&oldid=157608 5* 03Aadenboy 5* (+214) 10 > 1759178969 818320 PRIVMSG #esolangs :14[[07Arbitrary memory emulation14]]4 M10 02https://esolangs.org/w/index.php?diff=165366&oldid=165365 5* 03Aadenboy 5* (+0) 10 > 1759179322 460093 PRIVMSG #esolangs :14[[07Arbitrary memory emulation14]]4 10 02https://esolangs.org/w/index.php?diff=165367&oldid=165366 5* 03Aadenboy 5* (+128) 10 > 1759179672 263469 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Sprock 5* 10New user account < 1759180287 51791 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1759180380 451410 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 JOIN #esolangs * :Textual User < 1759183068 893117 :tromp!~textual@2001:1c00:3487:1b00:5d4:dfa6:7d7:2af3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1759184300 910354 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine < 1759184353 586691 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord > 1759187276 551616 PRIVMSG #esolangs :14[[07Malfunge14]]4 10 02https://esolangs.org/w/index.php?diff=165368&oldid=87626 5* 03Kaveh Yousefi 5* (+737) 10Added a hyperlink to my implementation of the Malfunge programming language on GitHub, marked the extant implementation's provenance as absent, and improved the code fragments' formatting. > 1759187435 519351 PRIVMSG #esolangs :14[[07Malfunge14]]4 10 02https://esolangs.org/w/index.php?diff=165369&oldid=165368 5* 03Kaveh Yousefi 5* (+124) 10Introduced an infinitely repeating cat program as a third example and changed the example programs' headings to subsections. < 1759190327 354171 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine < 1759190349 585752 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord