stalker mode ↑2025 ↑all
2025-08-25
[...]
21:29:57 <esolangs> [[Topple/Source Code]] https://esolangs.org/w/index.php?diff=163810&oldid=163517 * H33T33 * (-8422) Replaced content with "[[Topple| Back to Topple]] [[Topple/Source_Code/Topple_1.0|Topple 1.0]]"
21:43:35 <esolangs> [[Oops i shared an infohazard.]] N https://esolangs.org/w/index.php?oldid=163811 * Tommyaweosme * (+2485) Created page with "{{lowercase}}{{wrongtitle|title=oops i shared an infohazard. oops i shared an infohazard. oops i shared an infohazard. oops i shared an infohazard. (continues on forever)}} oops i shared an infohazard. is an esolang made where every program is
21:47:28 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:55:42 <esolangs> [[Topple/Source Code]] https://esolangs.org/w/index.php?diff=163812&oldid=163810 * H33T33 * (+587)
22:02:12 <esolangs> [[Topple/Source Code]] M https://esolangs.org/w/index.php?diff=163813&oldid=163812 * H33T33 * (-46)
22:26:44 -!- GregorR2 has joined.
22:28:11 -!- GregorR has quit (Ping timeout: 258 seconds).
22:28:11 -!- GregorR2 has changed nick to GregorR.
22:31:23 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
22:32:54 -!- Lord_of_Life has joined.
23:04:13 -!- SGautam has quit (Quit: Connection closed for inactivity).
23:14:35 -!- Sgeo has joined.
2025-08-26
00:19:44 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163814&oldid=163794 * Tommyaweosme * (+12) added to server 2
00:28:47 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=163815&oldid=163337 * Hotcrystal0 * (-337)
00:33:48 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=163816&oldid=163815 * Hotcrystal0 * (+156)
00:38:15 <esolangs> [[Oops i shared an infohazard.]] https://esolangs.org/w/index.php?diff=163817&oldid=163811 * Hotcrystal0 * (+52) Categories
00:47:03 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=163818&oldid=163816 * Hotcrystal0 * (+372)
01:30:10 <esolangs> [[Unifuck]] M https://esolangs.org/w/index.php?diff=163819&oldid=163687 * SzszszszszszszsZ * (+18)
01:34:35 -!- voxpelli has quit (Server closed connection).
01:34:46 -!- voxpelli has joined.
01:36:08 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163820&oldid=163814 * PrySigneToFry * (+157)
01:43:28 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163821&oldid=163820 * Aadenboy * (-157) already implied? also those aren't esolangs
02:09:49 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163822&oldid=163821 * AlephSquirrel * (+13) Add to server 3
02:23:32 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163823&oldid=163822 * Aadenboy * (+46) add to servers 14
02:40:10 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163824&oldid=163823 * PrySigneToFry * (+73)
02:41:43 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163825&oldid=163824 * PrySigneToFry * (+46) Add a new server.
02:45:54 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163826&oldid=163825 * Aadenboy * (+58) /* Server 4 */ marking the death of this server
03:00:42 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163827&oldid=163826 * AlephSquirrel * (+47) Add to servers 5 and 6
03:08:17 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163828&oldid=163827 * Aadenboy * (+36) adding to server 5 (ridiculous)
03:14:56 <esolangs> [[Schaftenstein]] N https://esolangs.org/w/index.php?oldid=163829 * PrySigneToFry * (+2827) Created page with "Schaftenstein is a programming language designed by PSTF. The goal of this language is to be completely OOP and be Turing-complete. = Overview = As the author stated, this language is designed to be quite like Java but different(mix with Python). = Basic S
03:19:51 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=163830&oldid=163786 * PrySigneToFry * (+20)
03:51:42 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163831&oldid=163828 * PkmnQ * (+190)
04:50:51 <esolangs> [[Talk:Oops i shared an infohazard.]] N https://esolangs.org/w/index.php?oldid=163832 * Corbin * (+176) Share a gentle fun memetic infohazard.
06:33:05 -!- Sgeo has quit (Read error: Connection reset by peer).
06:36:23 -!- tromp has joined.
07:30:22 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
07:50:01 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163833&oldid=163831 * Ractangle * (-521) bro
07:50:29 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163834&oldid=163833 * Ractangle * (+521) nvm
07:51:40 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163835&oldid=163834 * Ractangle * (+10) /* Server 2 */
08:06:53 <APic> Hi
08:54:18 -!- Melvar has quit (Ping timeout: 248 seconds).
08:55:44 <esolangs> [[User:PkmnQ/Sandbox]] https://esolangs.org/w/index.php?diff=163836&oldid=163800 * PkmnQ * (+604)
09:03:49 -!- wib_jonas has joined.
09:14:42 -!- chiselfuse has quit (Remote host closed the connection).
09:14:57 -!- chiselfuse has joined.
09:23:00 -!- Melvar has joined.
09:24:08 <esolangs> [[R + S]] https://esolangs.org/w/index.php?diff=163837&oldid=163289 * C++DSUCKER * (+552)
09:25:16 <esolangs> [[R + S]] https://esolangs.org/w/index.php?diff=163838&oldid=163837 * C++DSUCKER * (+0)
09:33:08 <esolangs> [[R + S]] https://esolangs.org/w/index.php?diff=163839&oldid=163838 * C++DSUCKER * (+143)
09:52:01 -!- wib_jonas has quit (Quit: Client closed).
10:36:26 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163840&oldid=163835 * Pifrited * (+12) /* Server 2 */
11:24:18 -!- chloetax has quit (Quit: Ping timeout (120 seconds)).
11:24:51 -!- chloetax has joined.
11:25:44 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
11:27:21 -!- chloetax has quit (Client Quit).
11:27:40 -!- chloetax has joined.
11:29:53 -!- chloetax has quit (Client Quit).
11:30:13 -!- chloetax has joined.
11:46:15 -!- Lord_of_Life has joined.
11:50:27 -!- Lord_of_Life has quit (Client Quit).
11:51:32 -!- Lord_of_Life has joined.
12:11:15 <esolangs> [[Tercet]] https://esolangs.org/w/index.php?diff=163841&oldid=163356 * Insulation * (+18)
12:16:39 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163842&oldid=163840 * I am islptng * (+52)
12:41:03 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163843&oldid=163842 * C0ffee * (+9) /* Server 2 */
12:44:50 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163844&oldid=163843 * C0ffee * (+10) /* Server 5 */
12:49:59 <esolangs> [[Stop writing your code]] N https://esolangs.org/w/index.php?oldid=163845 * I don't like programming * (+751) Created page with "[[stop writing your code]] an esolang developed by [[User:I don't like programming]] where every character prints random string from [" Stop writing your code!", "Stop write code!", " Stop writing your fucking code"]. The idea behind the
12:52:01 <esolangs> [[Stop writing your code]] https://esolangs.org/w/index.php?diff=163846&oldid=163845 * I don't like programming * (+92)
12:52:28 <esolangs> [[Stop writing your code]] https://esolangs.org/w/index.php?diff=163847&oldid=163846 * I don't like programming * (+0) Categories
12:52:39 -!- int-e has quit (Server closed connection).
12:52:48 -!- int-e has joined.
12:58:15 -!- Melvar has quit (Ping timeout: 245 seconds).
12:59:06 <esolangs> [[User:I don't like programming]] https://esolangs.org/w/index.php?diff=163848&oldid=163746 * I don't like programming * (+183)
13:05:41 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
13:06:33 <esolangs> [[User:I don't like programming]] https://esolangs.org/w/index.php?diff=163849&oldid=163848 * I don't like programming * (+0)
13:07:25 -!- Lord_of_Life has joined.
13:11:42 -!- Melvar has joined.
13:33:03 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163850&oldid=163844 * AlephSquirrel * (+37) Add to servers 2 and 6
13:33:06 -!- SGautam has joined.
13:34:40 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163851&oldid=163850 * PkmnQ * (+38)
13:42:21 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163852&oldid=163851 * PrySigneToFry * (+60) Adding to server 5 and adding a new thread.
13:43:27 -!- APic has quit (Server closed connection).
13:43:46 -!- APic has joined.
13:45:47 <esolangs> [[R + S]] https://esolangs.org/w/index.php?diff=163853&oldid=163839 * C++DSUCKER * (+0)
13:46:23 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163854&oldid=163852 * Aadenboy * (+88) change underscores to arrows for readability + add to server 7
14:04:20 <esolangs> [[R + S]] https://esolangs.org/w/index.php?diff=163855&oldid=163853 * C++DSUCKER * (+507)
14:05:12 -!- Melvar has quit (Ping timeout: 248 seconds).
14:19:00 -!- Melvar has joined.
14:38:44 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163856&oldid=163854 * Ractangle * (+10)
14:41:41 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163857&oldid=163856 * Ractangle * (+12) /* Server 7 */
15:24:34 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163858&oldid=163857 * PkmnQ * (+27)
15:28:57 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163859&oldid=163858 * PkmnQ * (+4) /* Server 5 */
15:32:00 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163860&oldid=163859 * PkmnQ * (+6) /* Server 5 */
15:57:00 <esolangs> [[User:X-540]] N https://esolangs.org/w/index.php?oldid=163861 * X-540 * (+601) Created page with "Hi, I'm X/O, also known as x_540 (or x-540 if I can't use an _), as you might have guessed based on the fact that this page exists, I like esolangs. I'm also lazy so yoy can expect me to take months or even years to add my esolangs to this wiki... I currently have two
16:11:22 <korvo> Hm. I should reword the bullshit I put at the top of [[Category:Output only]]. Deadfish isn't the worst example, but it's a little misleading; when considered as a free monoid, the "output" of a Deadfish program includes a ghost output which stores the current register. This means that it should really be [0-255]+, but also it's actually generated by postcomposition with the inclusion [0-255]* -> [0-255]+.
16:12:50 <korvo> ...Nope, got the arrow backwards. It's postcomposition with a truncation [0-255]+ → [0-255]* which removes the final element of each sequence. Gotta drop the ghost element.
16:27:15 <korvo> ...Deadfish isn't coherently defined? Well, that makes it a very bad example indeed! Is there a better output-only language to illustrate the point, or should I remove that section entirely?
16:27:56 -!- tromp has joined.
16:43:20 <esolangs> [[e]] N https://esolangs.org/w/index.php?oldid=163862 * WarzokERNST135 * (+254) Created page with "e is an esolang made by [[WarzokERNST135]] which is named after its 3 flags: {{cd|}}, {{cd|e}}, and {{cd|}}. Here is a Hello World example in it: eee eeee ee ee"
16:44:30 <esolangs> [[User:WarzokERNST135]] https://esolangs.org/w/index.php?diff=163863&oldid=163633 * WarzokERNST135 * (+16)
16:45:42 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
16:51:36 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163864&oldid=163860 * WarzokERNST135 * (+19) /* Server 5 */
16:55:29 -!- tromp has joined.
16:58:25 <esolangs> [[Deadfish]] https://esolangs.org/w/index.php?diff=163865&oldid=162899 * Corbin * (+719) Basic complexity analysis.
17:00:55 <esolangs> [[Category:Output only]] https://esolangs.org/w/index.php?diff=163866&oldid=163595 * Corbin * (-838) Remove (my) overly-simplistic attempt at attaching monoids to output-only languages.
17:10:19 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163867&oldid=163864 * Ractangle * (-41) /* Server 4 */ not anymore
17:25:31 <esolangs> [[User:BoundedBeans/Weird Befunge Conditionals]] https://esolangs.org/w/index.php?diff=163868&oldid=111764 * BoundedBeans * (+0) Corrected "Rhree" to "Three"
17:31:16 -!- Melvar has quit (Ping timeout: 256 seconds).
17:43:01 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:45:46 -!- Melvar has joined.
18:01:39 -!- tromp has joined.
18:09:17 <esolangs> [[PDAsephtwo]] https://esolangs.org/w/index.php?diff=163869&oldid=150121 * BoundedBeans * (+321) Clarified w and V commands
18:12:33 -!- SGautam has quit (Quit: Connection closed for inactivity).
18:16:00 <esolangs> [[Lete]] https://esolangs.org/w/index.php?diff=163870&oldid=129359 * BoundedBeans * (+41) Converted command list to table and removed _ command
18:20:12 <esolangs> [[Talk:Game:Esochain]] N https://esolangs.org/w/index.php?oldid=163871 * Aadenboy * (+334) Created page with "== Server 4 == was [[e]] created for this? ~~~~"
18:23:23 <esolangs> [[Sugueziume]] https://esolangs.org/w/index.php?diff=163872&oldid=129928 * BoundedBeans * (+139) Convert original commands to wikitable
18:26:43 <esolangs> [[Talk:Game:Esochain]] M https://esolangs.org/w/index.php?diff=163873&oldid=163871 * Ractangle * (+174) /* Server 4 */
18:44:13 -!- Everything has joined.
19:03:55 -!- Everythi1g has joined.
19:04:25 -!- Everything has quit (Ping timeout: 258 seconds).
19:41:09 -!- Everythi1g has quit (Quit: leaving).
19:45:27 -!- SGautam has joined.
19:59:33 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163874&oldid=163867 * Ractangle * (+13) /* Server 2 */
20:35:55 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163875&oldid=163874 * Tommyaweosme * (+23) /* Server 5 */
20:42:33 <esolangs> [[User:Tommyaweosme]] https://esolangs.org/w/index.php?diff=163876&oldid=161963 * Tommyaweosme * (+3204)
20:44:49 <esolangs> [[Fusion Tag]] M https://esolangs.org/w/index.php?diff=163877&oldid=163265 * Ractangle * (-8) /* Implementations */ mini
20:46:29 <esolangs> [[Fusion Tag]] M https://esolangs.org/w/index.php?diff=163878&oldid=163877 * Ractangle * (+8) Rhor66r96t8r8r9otft
20:56:29 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:04:52 -!- tromp has joined.
21:17:28 -!- chiselfuse has quit (Ping timeout: 272 seconds).
21:19:02 -!- chiselfuse has joined.
21:57:27 <esolangs> [[)]] https://esolangs.org/w/index.php?diff=163879&oldid=148982 * Tommyaweosme * (+34)
22:01:43 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163880&oldid=163875 * Aadenboy * (+37) add to servers 2 (self-promo) and 7
22:02:01 <APic> 222cu
22:02:05 <APic> -222
22:04:53 -!- SGautam has quit (Quit: Connection closed for inactivity).
22:12:04 -!- ais523 has joined.
22:12:24 <ais523> korvo: I think you may misunderstand Deadfish – the range of the register isn't 0-255, it is the set of nonnegative integers that are not 256
22:12:44 <ais523> 0 to 255 inclusive are OK, so is 257 and upwards
22:13:40 <korvo> ais523: Yes. As such, I've edited [[Category:output only]] to entirely omit my aside on monoids. If there is a better language that serves as an example, I'd be happy to write that up.
22:14:17 <korvo> That said, please LMK if my recent edit to [[deadfish]] was wrong. I started from the assumption that the program which squares 17, listed in the prior section, was valid and that there wasn't a further ceiling or wraparound.
22:14:28 <ais523> on a separate topic: I have been wondering about whether you can mremap the stack on Linux (to a different address) while the stack is in use, as long as you change the stack pointer to match afterwards
22:14:38 <zzo38> Some implementations have other limits than that, such as 16-bits or 32-bits
22:14:55 <ais523> obviously you can't do this through any sort of library wrapper, as a library function wouldn't be able to return if you moved the stack out from underneath it
22:15:15 <ais523> but, maybe doing the system call directly with inline asm works?
22:15:47 <ais523> (you would need to make sure there were no pointers to the stack at the time, which probably means implementing your whole program in asm as compilers don't try to avoid doing that)
22:16:34 <ais523> the "theoretical standard for Deadfish" is normally considered to have no maximum limit on the integer
22:16:41 <korvo> Some compilation schemes basically don't use the stack pointer, but that doesn't mean that they don't have some stack usage from e.g. the C runtime, either.
22:16:51 <ais523> but as zzo38 says, individual implementations often just use native integer types rather than bignums
22:17:09 <ais523> korvo: right
22:17:39 <ais523> the context is that I have been considering writing my own ABI, one of the rules (that was created for an entirely different reason) was that there could be no pointers to the %sp stack (there is a second stack you can have pointers to)
22:18:05 <ais523> and then I realised it would be possible to realloc the stack larger while the program was running, which would make a number of threading-related issues much easier
22:18:22 <ais523> but I wasn't sure if a system call would even be able to return if the stack had moved while it was running
22:18:38 <ais523> I think it probably would be? the syscall instruction doesn't use the stack
22:18:56 <ais523> but some system calls do, like vDSO system calls, so this may be a case in which the kernel is underspecified
22:19:59 <zzo38> Do you intend to work with multiple instruction sets? Some might not support that.
22:20:17 <ais523> in general, Linux not having a specification is annoying, e.g. several people noticed during the high performance FizzBuzz thing that the documentation of vmsplice(2) doesn't match its actual behaviour, but we have no way to tell which is wrong or whether that's even a meaningful thing to say
22:20:46 <zzo38> One thing I was thinking of before is if it can be made to support saving the state of the program and then to restore it later from disk (but excluding I/O).
22:20:53 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:21:00 <ais523> zzo38: well an ABI is somewhat processor-specific – I want the general ABI design techniques to potentially generalise to other processors, but it's OK if not all of them can handle it, and the ABI itself of course wouldn't
22:21:35 <ais523> e.g. I was also planning to take advantage of having a large virtual address space, which you can't do on 32-bit processors or processors without MMUs
22:22:07 <b_jonas> ais523: if you mean mremap to replace the stack contents to a different accessible page then I don't see why you couldn't do it even without special precautions. if you call the mremap system call directly it shouldn't use your stack. if instead you want to replace the stack with a page that isn't accessible then you have to make sure the kernel doesn't try to invoke signal handlers on that stack while
22:22:13 <b_jonas> it's inaccessible: either sigaltstack, or block every signal that would invoke a handler
22:22:26 <ais523> oh yes, this definitely needs sigaltstack
22:22:28 <b_jonas> on x86_64 at least; other architectures could differ
22:25:46 <b_jonas> ais523: try to look in programs like DOSEMU or Wine that set up for running 16-bit protected mode programs (typically Win16) natively in an x86_32 linux host executable, maybe they have to do similar crazy magic
22:26:03 <ais523> I thought this ABI would need sigaltstack just generally, but thinking about it, it actually doesn't – receiving a signal doesn't create new pointers to the stack
22:26:33 <zzo38> Glulx has the stack in a separate address space (which is not fully accessible), but there has been a C compiler written to target it. (I think it is not only Glulx that does this, though)
22:26:46 <ais523> b_jonas: I think they normally just map the bottom of virtual memory to simulate real mode
22:26:57 <zzo38> (Glulx does not have signals though)
22:27:01 <ais523> that's the reason why the kernel lets you configure the setting that disables mapping over NULL
22:27:24 <ais523> although, hmm, protected mode
22:27:33 <ais523> the issue there would be segment registers
22:28:22 <ais523> zzo38: I think "stack in a separate address space" is correct, but x86-64 doesn't support it, so the best I can do is put it somewhere random and prevent any pointers ever being taken to it
22:28:22 <b_jonas> ais523: that's for real mode, sure, but can't some of them run Win16 programs in protected mode with the code segment set to 16-bit too like windows 3.11 in 386 enchanced mode does? surely at least some later Win16 programs depend on that, don't they?
22:28:31 <esolangs> [[Talk:Game:Esochain]] https://esolangs.org/w/index.php?diff=163881&oldid=163873 * PkmnQ * (+351)
22:28:55 <b_jonas> ais523: this is specifically for an x86_32 host, rare these days but the source code supporting it should still exist
22:29:19 <ais523> IIRC on x86_32, you need the kernel's help to set legal values for segment registers
22:29:26 <b_jonas> at least the linux program that invokes it is x86_32, not necessarily the kernel
22:29:34 <ais523> like, the kernel creates an array of possible legal segments, and you put one of those into the segment register in userspace
22:30:35 <b_jonas> I don't know, I never tried this kind of magic. The most I did was to map a new writable and executable segment, write a function into it, then call it.
22:30:37 <ais523> ah, found it: modify_ldt(2)
22:31:54 <ais523> it used to be used for thread-local storage, but Linux added a special case for that after a while
22:32:32 <b_jonas> ais523: good, so somebody probably uses that system call, and you can probably find such code
22:32:39 <ais523> (on x86, TLS is normally done via %gs; on x86_64, it's done via %fs, using WRFSBASE if the processor has it or help from the kernel on old x86_64 processors)
22:34:06 <ais523> and the reason they changed from %gs to %fs is that there's a SWAPGS instruction but not a SWAPFS instruction, which as far as I can tell doesn't actually matter semantically, but perhaps there's a performance difference as a consequence
22:35:24 <b_jonas> ais523: isn't it because the x86_64 cpu only allows FS to point to a nonzero address in true 64-bit mode, so they had to use FS, whereas the x86_32 convention existed before x86_64 was invented?
22:36:05 <ais523> b_jonas: FS and GS are both allowed to have a nonzero base
22:36:18 <b_jonas> ok, it's not that then
22:36:33 <ais523> the only segmentation details you can change on x86-64 are base of FS and GS, and bitness of CS
22:38:45 <ais523> I did have an interesting idea for an x86-series processor feature recently: the ability to link specific memory map entries to segment registers, so that they could only be accessed by instructions prefixed (explicitly or implicitly) with that prefix
22:39:26 <b_jonas> also, I don't think it will help you with such deep magic, but http://software.schmorp.de/pkg/libcoro.html has like five different implementation on how to set up new stacks and switch between stacks on linux-like systems (including possibly other unixes)
22:40:34 <ais523> this would let you simulate the segment-limit feature of 32-bit x86, which I think is helpful as an assertion (security / catching accidental out-of-bounds accesses)
22:43:10 <b_jonas> sorry? how would you simulate the segment limit?
22:44:57 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163882&oldid=163880 * Tommyaweosme * (+68) cutting a loophole and reglueing the rules back together
22:47:43 <b_jonas> the x86_64 instruction WRPKRU and its linux interface pkeys(7) might be able to do something like that, but the code would be less dense than just segment prefixes
22:48:07 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163883&oldid=163882 * Tommyaweosme * (+162)
22:50:01 <esolangs> [[Talk:Game:Esochain]] https://esolangs.org/w/index.php?diff=163884&oldid=163881 * Tommyaweosme * (+123)
22:51:18 <ais523> b_jonas: by tagging memory outside of the segment limit so that it couldn't be accessed by the segment's prefix
22:51:46 <ais523> this was inspired by pkeys, but I think it's an improvemet
22:52:34 <ais523> sudden realisation: people use the xor operator in things like W^X and "shared xor mutable", but it is the wrong operator: this isn't an xor but a nand, because it is OK to have things that are neither writable nor executable
22:52:50 <zzo38> I noticed that too
22:53:29 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163885&oldid=163883 * Tommyaweosme * (+167)
22:56:40 -!- Sgeo has joined.
23:02:47 -!- nitrix_ has joined.
23:03:28 -!- nitrix has quit (Ping timeout: 272 seconds).
23:15:46 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163886&oldid=163885 * Aadenboy * (+16) add to revres 2 (self-promo)
23:22:17 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163887&oldid=163886 * Hotcrystal0 * (+21)
23:42:25 -!- Artea has quit (Server closed connection).
2025-08-27
00:05:39 <esolangs> [[User:Hotcrystal0/Sandbox]] https://esolangs.org/w/index.php?diff=163888&oldid=163338 * Hotcrystal0 * (+32)
00:06:13 -!- Artea has joined.
00:06:38 <esolangs> [[User:Hotcrystal0/Sandbox]] https://esolangs.org/w/index.php?diff=163889&oldid=163888 * Hotcrystal0 * (-1019)
00:21:50 -!- purism has joined.
00:27:34 <esolangs> [[Merriment]] https://esolangs.org/w/index.php?diff=163890&oldid=163787 * AlephSquirrel * (+413) Add v0.2 stuff
00:28:37 <ais523> <C99 rationale, as quoted by Wikipedia in the article about NaN> The result of pow(−2, ∞) is +∞, because all large positive floating-point values are even integers.
00:28:39 <ais523> this is amazing
00:36:28 <korvo> Deeply inspirational. I feel much better about my own crimes against IEEE 754 now.
00:36:55 <ais523> I feel like the programming community still hasn't decided on what floats actually are – are they approximations of real numbers, or are they a number system that is only able to represent a finite set of numbers that is denser near the origin?
00:37:51 <ais523> or are they one used to represent the other?
00:38:23 <korvo> Or are they a data structure best understood as a disjoint union of rows of bits? Is the true nature of floats NaN smuggling, fast inverse sqrt and fast log2, mantissa twiddling, etc?
00:38:27 <ais523> most operations on floats individually make sense in at least one of the three views, but the ways in which they're typically combined don't really, and the distinction isn't normally clarified well
00:38:57 <ais523> oh right, the integer/float reinterpret thing is also relevant sometimes
00:39:36 <ais523> although less so than it used to be, e.g. fast inverse sqrt and integer log2 are both processor builtins on recent x86-64 and probably also on its competitors
00:41:13 <ais523> ooh, this conversation reminds me of an idea I had recently – when reference counting, you want to avoid reference count overflows as that can lead to memory unsoundness, which is normally implemented by saturating the reference count, but saturating integer arithmetic is a bit more verbose in asm than I'd like it to be
00:41:30 <ais523> especially as the operation you want here is "when trying to increment or decrement INT_MAX, it stays as INT_MAX"
00:41:56 <ais523> but! there is an operation that does automatically saturate in exactly that way: doubling and halving floats, which saturates at infinity
00:42:21 <ais523> so it has made me wonder whether storing reference counts as floats might actually make sense
00:42:51 <korvo> Yeah! There *are* other data structures with this property, particularly Gosper-style continued logarithms, but they're pretty rare.
00:43:20 <ais523> (unfortunately, unless you're using a DAZ+FTZ FPU configuration, which would be nonstandard and break the semantics of many programs, you wouldn't be able to make use of the underflow-to-zero behaviour without a huge performance penalty)
00:43:30 <korvo> And we could argue that a continued logarithm is just a really bad way of writing a float which is mostly exponent and has maybe one bit of mantissa.
00:49:12 <ais523> the main reason I don't want to write my reference counting in terms of floats is that all the mantissa bits would be wasted, unless I can figure out something to store in them that's OK to lose when the reference count saturates
00:50:22 <ais523> I guess converting an 8-bit reference count to a float mantissa, doubling it, and converting back might still be faster than the branchy implementation of saturating arithmetic, but it probably isn't
00:50:44 <korvo> The mantissa *is* a fairly nice binary fraction in [0, 1]. But yeah, it's kind of delicate.
00:51:42 <ais523> well, you can store a pointer there – sort-of like NaN-boxing but with a valid exponent
00:51:53 <ais523> but the pointer would disappear when the refcount saturated
00:52:10 -!- purism has quit (Quit: purism).
00:52:23 -!- purism has joined.
00:53:56 <ais523> ooh – I just realised that reference count saturation is the way you implement it in kernels and similar high-availability software that can't fail-fast
00:54:01 -!- purism has quit (Client Quit).
00:54:28 <ais523> but for regular usermode software, you normally want reference count saturation to give you a crash instead; I just thought that that would be slower because you would have to test for the saturation case
00:54:33 -!- based299792458 has joined.
00:55:59 <ais523> however: if you are reference-counting a pointer (which admittedly isn't the common case because normally the reference count is pointed to, not on the pointer), a reference overflow would set the float to infinity, which has a zero mantissa, so it would null out the pointer
00:56:24 <korvo> Ah, that's fun. The unified theory of GC says that there should be a mirrored concept, and I think it's the phenomenon of an object which lives forever because it's been accidentally promoted to eden/paradise (in a generational setup) or that just got leaked.
00:57:10 <korvo> Clever. Maybe too clever?
00:57:26 <ais523> so now I'm trying to figure out a way to get that null dereference to give you the fail-fast behaviour on reference count overflow
00:57:31 <korvo> It sounds portable to IEEE 754, though.
00:57:35 <ais523> I guess the obvious thing to put there would be a vtable
00:58:17 <ais523> oh, this is something that 99% of programmers would consider too clever, but from my point of view, as long as it's sound and you can prove it works, and it's more efficient, why not use it?
00:58:25 <zzo38> Store the destruction function in the fraction bits if it bits, but I do not expect it to fit.
00:59:07 <ais523> the code address of it would fit, at least if using double-precision floats
00:59:36 <ais523> you have 53 bits, most processors don't have a virtual address space that big, even on processors that do you could just ensure you loaded the program at a low enough address
00:59:41 -!- based299792458 has changed hostmask to ~based2997@user/based299792458.
01:00:35 <zzo38> If you are programming it in a way that can guarantee that it is working like that, then yes, but if you are trying to write a portable program in C then it will not work, unless it points to VM code or something like that instead, in which case maybe it will work.
01:01:24 <based299792458> have you guys ever worked with sea of nodes ir
01:01:42 <ais523> right – although this is an interesting portability problem because processors that were even physically capable of loading code at addresses that high only started to be produced in the last few of years
01:01:46 <ais523> * last few years
01:01:56 <ais523> and even the ones that are have no reason to do so
01:02:32 <ais523> but, the C standards maintainers would obviously be reluctant to say "code and static data is never loaded at an address that doesn't fit within the range of a 52-bit signed integer" :-D
01:02:32 <esolangs> [[User:Tommyaweosme]] https://esolangs.org/w/index.php?diff=163891&oldid=163876 * Tommyaweosme * (+11)
01:03:35 <ais523> I guess it'd break on platforms like CHERI where pointers are authenticated and 128 bits wide
01:05:54 <ais523> (it almost works even on CHERI by treating the data half of the pointer as a float and the auth data as an integer, but CHERI doesn't support the operation of "offset a pointer a very long distance out of bounds and then back to its original location" which is what the float-boxing would effectively do to it)
01:09:52 <ais523> ooh! I figured out how to store a pointer in the mantissa, even on saturation – you just arrange things so that the pointer is accessed after the reference count update, while the old value is still in a register, and handle the segfault!
01:10:40 <ais523> reference count saturation should be a very rare event, after all
01:11:39 <ais523> I hate so much that our current programming abstractions are bad at implementing this sort of thing – the problem is that this requires a change at the lower levels of abstraction, but it's still nicely contained because the higher levels don't break, so you can reason about it in isolation
01:12:04 <ais523> but in our current models, the higher levels of abstraction generally all regard the lower levels as either fixed, or entirely controlled by higher levels
01:12:45 <ais523> I think this is why I care about creating my own ABI, it lets me control the low-level details in a way that doesn't break existing higher-level programs (which are generally designed to be portable to multiple ABIs)
01:13:25 <zzo38> There are other things I had wanted to do that the levels of abstraction in C (and in LLVM, and possibly also the .o file format) make it difficult to do in a reasonably portable way, since otherwise you would have to write a non-portable code
01:13:41 <zzo38> So, maybe it will help? I don't know.
01:13:53 <ais523> I think C's notion of non-portable code is the wrong one
01:14:12 <ais523> if I want to write something non-portable I want to do it at the lower levels of abstraction without breaking the higher levels, and C has that backwards
01:16:06 <ais523> like, instead of writing C code that sees through the abstraction, I would want instead to write low-level code in a lower-level language like asm, that provides an extra feature to the higher-level language that it can then make use of
01:16:31 <ais523> and those features often appear in the form of guarantees rather than the form of functions
01:16:57 <ais523> e.g. rules on what pointers look like when converted to integers
01:17:39 <ais523> a C implementation can add such rules without breaking the standard – and I think a C implementation would be more useful if it let you customize that sort of thing
01:19:15 <ais523> the thing about this sort of guarantee is that it's really easy to break by accident, e.g. Rust has functions like f32::from_bits and f64::from_bits and they are the only thing preventing you adding a low-level guarantee like "all NaNs are quiet"
01:19:32 -!- based299792458 has quit (Ping timeout: 260 seconds).
01:21:37 <korvo> ...Drat, I walked away. Sorry, based; I *have* worked with Sea of Nodes and have opinions.
01:22:46 * ais523 suddenly starts wondering why code/function pointers are 64 bits wide – is it just to give more space for ASLR?
01:22:59 <ais523> like, using more than 4GiB of data, I get it, sometimes that's useful
01:23:04 <ais523> but using more than 4GiB of code?
01:24:02 <esolangs> [[BCSD]] N https://esolangs.org/w/index.php?oldid=163892 * Tommyaweosme * (+1075) Created page with "BCSD, or Bit Counts Spiraling Down, is an [[esolang]] created by [[User:Tommyaweosme]]. == Commands == 00xx - do nothing 01xx - flip xx and print it 10xx - print xx without flipping 11xxx - print the first xxx bits Every line may show the next evolution; only the
01:24:51 <zzo38> Yes, I think that could be useful, but I had also wanted to do such things as: making the addresses of a set of global variables defined in one file to overlap with the addresses of a set of global variables defined in a different file, and making a boolean or other value modified only during initialization of the program to affect a condition or something else in another part of the program.
01:26:06 <zzo38> And, also declaring variables that are not mapped and are allowed to overlap other memory, in case you only care that the addresses are unique (and possibly how much gap after one address before the next one).
01:26:56 <ais523> likewise it is probably OK to force vtables to the low 4GiB – that both saves you 4 bytes on every object that uses one (in some languages, every object), and prevents an attacker tricking the code into interpreting arbitrary attacker-controlled data as vtables unless they can allocate it in the low 4GiB somehow
01:39:22 <esolangs> [[P2WFuck]] N https://esolangs.org/w/index.php?oldid=163893 * Tommyaweosme * (+973) Created page with "P2wFuck is a [[PaidFuck]] derivative, which is slightly more serious than [[PaidFuck]] itself. == Commands == Running a specific program for the first time costs $2.99 on top of the command charges, but every subsequent time afterwards, the run fee is $0.49. > $0.0
01:55:44 <ais523> `as-encoding .byte 67; mov %rcx, (%rdx)
01:55:47 <HackEso> 43: rex.XB \ 48 89 0a: mov %rcx,(%rdx)
01:56:03 <ais523> `as-encoding .byte 0x67; mov %rcx, (%rdx)
01:56:05 <HackEso> 67 48 89 0a: mov %rcx,(%edx)
01:56:32 <ais523> aww, for a moment I thought this was gadget-proof, but a gadget could just start reading halfway through the instruction to skip the 0x67 prefix
01:56:42 <ais523> well, one quarter of a way through
01:57:32 <ais523> I guess we could use a dedicated register that only ever stores 32-bit values…
01:58:00 <ais523> "asm intended to be safe even in the presence of exploits" is an esolang, and a fairly interesting one at that
02:06:26 <zzo38> Then, hopefully it can be written in esolang wiki
02:11:25 <esolangs> [[Special:Log/newusers]] create * Kaascevich * New user account
02:14:21 <ais523> I would need to work out what the specification is, which is likely to be pretty difficult
02:17:26 <esolangs> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=163894&oldid=163784 * Kaascevich * (+149) /* Introductions */
02:18:08 <zzo38> OK
02:18:48 -!- ais523 has quit (Quit: quit).
02:22:04 -!- based299792458 has joined.
02:23:15 <esolangs> [[Brainfuck implementations]] https://esolangs.org/w/index.php?diff=163895&oldid=161359 * Kaascevich * (+188) /* Optimizing implementations */
02:24:36 <esolangs> [[Brainfuck implementations]] https://esolangs.org/w/index.php?diff=163896&oldid=163895 * Kaascevich * (+219) /* Normal implementations */
02:30:44 -!- based299792458 has quit (Ping timeout: 256 seconds).
02:33:20 <esolangs> [[Nuwora]] N https://esolangs.org/w/index.php?oldid=163897 * GluonVelvet * (+2921) Created page with "Nuwora is a language made by [[user:GluonVelvet]] to be as difficult as possible to program in. It uses reverse imperative processing to read code. What this means is it reads code from the bottom to the top and reads all lines from finish to start including all the
02:37:07 <esolangs> [[Nuwora]] https://esolangs.org/w/index.php?diff=163898&oldid=163897 * GluonVelvet * (+2) /* Cat Program */
03:54:54 -!- nitrix_ has changed nick to nitrix.
04:12:39 <esolangs> [[User:PkmnQ/Sandbox]] https://esolangs.org/w/index.php?diff=163899&oldid=163836 * PkmnQ * (+2814)
04:12:41 -!- visilii has joined.
04:20:38 <esolangs> [[One Time Cat]] https://esolangs.org/w/index.php?diff=163900&oldid=134790 * Mayx * (+27) add Malbolge
04:56:24 <b_jonas> ais523: wait, why doubling and halving the floats, instead of adding and subtracting one to a float, so that only the *exponent* bits are wasted rather than the significand bits
05:04:31 <b_jonas> that said, I don't see why I'd want to use saturating reference counts for anything
05:04:44 -!- leah2 has quit (Server closed connection).
05:05:07 -!- leah2 has joined.
05:07:44 <strerror> It sounded like ais523 was going to put the address in the mantissa bits
05:18:12 <strerror> I don't know if amd64 has a fast way to halve and double floats, though, and using fmul64 for this seems inefficient
05:19:47 <strerror> ais523: ARMv8.3+ uses those extra pointer bits for a checksum: https://www.qualcomm.com/content/dam/qcomm-martech/dm-assets/documents/pointer-auth-v7.pdf
05:30:58 <zzo38> A program I wrote in MMIX once, used integer arithmetic to make half of a floating point number (which will not work in some circumstances)
05:38:58 <b_jonas> "saturating integer arithmetic is a bit more verbose in asm than I'd like it to be" => I think this is false on x86_64.
05:43:23 <b_jonas> say you store your reference count as an unsigned integer, 8 or 16 or 32 or 64 bits wide at your choice, it's 0 when there's no references and some large constant unsigned integer, call it MAXREFCNT, when there's so many references that you no longer want to increment or decrement the counter. if you have your reference count in a memory byte/word/dword/qword called refcnt addressible directly with an
05:43:29 <b_jonas> instruction, then it takes two simple integer instructions to do an increment or decrement by one that doesn't change numbers above MAXREFCNT: with intel syntax first `cmp refcnt, MAXREFCNT` so the carry bit is true iff the refcnt is finite, then `adc refcnt, 0` to increment a finite reference count or `sbb refcnt, 0` to decrement a finite refcount, and in the latter case the zero flag indicates if the
05:43:35 <b_jonas> last reference is freed.
05:44:11 <b_jonas> I don't think you can hope for anything better than this to increment or decrement with a floating-point value in memory, and with floating-point you'll need extra instructions to figure out when the last reference was decremented off the counter, it won't just appear in a flag for free.
06:18:53 -!- Sgeo has quit (Read error: Connection reset by peer).
06:37:58 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
06:39:54 -!- b_jonas has quit (Ping timeout: 248 seconds).
06:43:04 -!- wib_jonas has joined.
06:55:35 -!- Lord_of_Life has joined.
06:56:20 <esolangs> [[Topple/Source Code]] M https://esolangs.org/w/index.php?diff=163901&oldid=163813 * H33T33 * (+43)
06:58:42 <esolangs> [[Topple]] M https://esolangs.org/w/index.php?diff=163902&oldid=160791 * H33T33 * (-114)
07:01:34 -!- based299792458 has joined.
07:01:38 -!- based299792458 has quit (Remote host closed the connection).
07:04:57 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
07:07:03 -!- Lord_of_Life has joined.
07:27:32 <wib_jonas> and I think even if you want to store the reference count in just a subfield of a 4 or 8 byte value, it's still unlikely that floating-point ops help. unless of course you're going for pure esotericness points, like sacrificing all performance by setting a floating point underflow handler that's called whenever you decrement the reference count to
07:27:32 <wib_jonas> zero references.
07:36:47 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
07:38:09 -!- Lord_of_Life has joined.
07:42:31 <esolangs> [[User:Cycwin/maIsTc]] https://esolangs.org/w/index.php?diff=163903&oldid=160185 * Cycwin * (+440)
07:47:28 -!- shikhin has quit (Server closed connection).
07:47:35 -!- shikhin has joined.
07:58:24 -!- tromp has joined.
08:02:37 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163904&oldid=163887 * Ractangle * (+5)
08:54:56 <APic> Hi
08:57:03 <wib_jonas> new video by the 8-bit guy https://www.youtube.com/watch?v=-0Jtv8hvau4 about the TI-99/4a early home microcomputer. starts with the claim "Of all of the computers I’ve covered this machine has to be the most bizarre architecture". do you suppose that will mean any esoteric interest?
08:59:11 <esolangs> [[User:PkmnQ/Sandbox]] https://esolangs.org/w/index.php?diff=163905&oldid=163899 * PkmnQ * (-5731) Replaced content with "Major overhaul in progress."
09:34:35 <esolangs> [[Permufuck]] N https://esolangs.org/w/index.php?oldid=163906 * Pro465 * (+1426) Created page with "{{WIP}} {{stub}} Permufuck, an esolang created by [[User:Pro465]] in [[:Category:2025|2025]], is a much harder variant of [[brainfuck]]. Each Permufuck program corresponds noninjectively to a brainfuck program, which is given by a pseudorandom permutation of the Permu
09:41:08 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
09:54:16 -!- tromp has joined.
10:06:11 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
10:17:25 -!- tromp has joined.
11:23:28 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163907&oldid=163904 * C0ffee * (+107)
11:25:10 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163908&oldid=163907 * C0ffee * (+2)
11:26:10 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163909&oldid=163908 * C0ffee * (+31)
11:26:16 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
11:33:39 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
11:38:38 -!- tromp has joined.
12:00:41 <esolangs> [[Permufuck]] https://esolangs.org/w/index.php?diff=163910&oldid=163906 * Pro465 * (+8)
12:04:03 -!- Lord_of_Life has joined.
12:10:21 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
12:13:50 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163911&oldid=163909 * Tommyaweosme * (+26)
12:14:21 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163912&oldid=163911 * Tommyaweosme * (+2)
12:16:36 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:19:29 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163913&oldid=163912 * PrySigneToFry * (+181)
12:20:51 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163914&oldid=163913 * PrySigneToFry * (+44)
12:33:18 -!- Lord_of_Life has joined.
12:45:29 <esolangs> [[Permufuck]] https://esolangs.org/w/index.php?diff=163915&oldid=163910 * Pro465 * (+614) add python program
12:49:42 <esolangs> [[Permufuck]] https://esolangs.org/w/index.php?diff=163916&oldid=163915 * Pro465 * (+150) /* Description */ clarify on when the program is considered valid
13:06:27 <esolangs> [[Permufuck]] https://esolangs.org/w/index.php?diff=163917&oldid=163916 * Pro465 * (-13) /* Conversion program (Python) */
13:15:56 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=163918&oldid=163914 * Ractangle * (+54)
14:00:05 <esolangs> [[Unpseudorandom]] https://esolangs.org/w/index.php?diff=163919&oldid=123063 * Krolkrol * (-40)
14:11:55 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163920&oldid=163918 * AlephSquirrel * (+67) Add to servers 2 and 5
14:13:06 -!- Melvar has quit (Ping timeout: 256 seconds).
14:13:32 -!- Melvar has joined.
14:18:52 -!- Melvar has quit (Ping timeout: 260 seconds).
14:31:23 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163921&oldid=163920 * Aadenboy * (+52) add to server 2
14:32:55 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163922&oldid=163921 * Aadenboy * (+37) /* Server 2 */ fix link and add note
14:35:15 <wib_jonas> When did Windows's window manager switch away from its traditional behavior that when you switch from a maximized window to another window then the former gets minimized? Was it right away between Win16 and Windows 95, or some time later?
14:51:25 -!- shikhin has changed hostmask to ~shikhin@offtopia/offtopian.
14:53:28 -!- Melvar has joined.
14:53:48 -!- chloetax4 has joined.
14:56:55 <wib_jonas> A BASIC variant where the command to delete (program) files from the casette is spelled DELETE rather than KILL? what kind of censorship is this?
15:02:00 -!- Lord_of_Life has quit (*.net *.split).
15:02:00 -!- visilii has quit (*.net *.split).
15:02:01 -!- nitrix has quit (*.net *.split).
15:02:01 -!- chloetax has quit (*.net *.split).
15:02:02 -!- chloetax4 has changed nick to chloetax.
15:02:57 -!- Lord_of_Life has joined.
15:02:57 -!- visilii has joined.
15:02:57 -!- nitrix has joined.
15:09:33 -!- Everything has joined.
15:17:40 -!- tromp has joined.
15:34:31 -!- wib_jonas has quit (Quit: Client closed).
15:35:41 -!- visilii has quit (Ping timeout: 258 seconds).
15:50:38 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:52:50 <esolangs> [[User:Pro465]] https://esolangs.org/w/index.php?diff=163923&oldid=156107 * Pro465 * (+18) /* Esolangs created */ add permufuck
15:55:12 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=163924&oldid=163830 * Pro465 * (+16) /* P */ add Permufuck
15:57:53 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=163925&oldid=163922 * Aadenboy * (+9) /* revreS 2 */ fix server
16:03:34 <esolangs> [[Permufuck]] https://esolangs.org/w/index.php?diff=163926&oldid=163917 * Pro465 * (+151) add cat program
16:07:31 <int-e> does esolangs have colors mised into the [[Page]] things?
16:07:42 <int-e> I guess I should check logs
16:07:49 <korvo> Yes, they're quite colorful.
16:08:13 <int-e> so that's why that ignore isn't working, meh
16:09:29 -!- tromp has joined.
16:09:43 <int-e> (The Esochain thing annoys me.)
16:11:12 <korvo> I'd ask for the power to do something about it, but we all know that I should never be given administrative powers.
16:14:04 -!- tromp has quit (Client Quit).
16:17:42 -!- ais523 has joined.
16:18:27 <ais523> <b_jonas> ais523: wait, why doubling and halving the floats, instead of adding and subtracting one to a float, so that only the *exponent* bits are wasted rather than the significand bits ← because adding 1 to a float repeatedly doesn't overflow to infinity
16:19:03 <ais523> it could work if you used a round-upwards rounding mode, but setting that is slow on most processors (I think AVX-512 adds instructions to do it efficiently? although I can't remember whether they work on scalars)
16:24:26 <ais523> I do like your idea of using the carry flag, but I think it might still be verbose than you're expecting because the reference count isn't normally in a register already
16:25:17 <ais523> `as-encoding add $1, %eax
16:25:22 <HackEso> 83 c0 01: add $0x1,%eax
16:25:31 <ais523> `as-encoding add $1, 0x4(%eax)
16:25:33 <HackEso> 67 83 40 04 01: addl $0x1,0x4(%eax)
16:26:03 <esolangs> [[Permufuck]] M https://esolangs.org/w/index.php?diff=163927&oldid=163926 * Pro465 * (+9) make the text less janky
16:26:27 <ais523> `as-encoding cmp $7ffffffe, 0x4(%eax)
16:26:29 <HackEso> ​{standard input}: Assembler messages: \ {standard input}:1: Error: junk `fffffe' after expression \ {standard input}:1: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
16:26:35 <ais523> `as-encoding cmp $0x7ffffffe, 0x4(%eax)
16:26:36 <HackEso> ​{standard input}: Assembler messages: \ {standard input}:1: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
16:26:48 <ais523> `as-encoding cmpl $0x7ffffffe, 0x4(%eax)
16:26:50 <HackEso> 67 81 78 04 fe ff ff: cmpl $0x7ffffffe,0x4(%eax) \ 7f
16:27:15 <ais523> `as-encoding cmpl $0x7ffffffe, 0x4(%rax)
16:27:17 <HackEso> 81 78 04 fe ff ff 7f: cmpl $0x7ffffffe,0x4(%rax)
16:27:18 <ais523> whoops
16:32:25 <ais523> `as-encoding adc $0x00, 0x4(%rax)
16:32:26 <HackEso> 83 50 04 00: adcl $0x0,0x4(%rax)
16:32:48 <ais523> hmm, I wonder why the assembler requires an operand size suffix for cmp but not add
16:33:41 <int-e> `as-encoding adcb $0x00, 0x4(%rax)
16:33:42 <HackEso> 80 50 04 00: adcb $0x0,0x4(%rax)
16:33:48 <int-e> yeah, weird
16:35:06 <int-e> `as-encoding cmp $0x00, 0x4(%rax)
16:35:08 <HackEso> 83 78 04 00: cmpl $0x0,0x4(%rax)
16:35:30 <int-e> `as-encoding adc $0x7ffffffe, 0x4(%rax)
16:35:31 <HackEso> ​{standard input}: Assembler messages: \ {standard input}:1: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
16:35:40 <int-e> `as-encoding cmp $0x01, 0x4(%rax)
16:35:42 <HackEso> 83 78 04 01: cmpl $0x1,0x4(%rax)
16:35:47 <int-e> `as-encoding cmp $0x101, 0x4(%rax)
16:35:48 <HackEso> ​{standard input}: Assembler messages: \ {standard input}:1: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
16:35:57 <int-e> `as-encoding cmp $0x81, 0x4(%rax)
16:35:58 <HackEso> ​{standard input}: Assembler messages: \ {standard input}:1: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
16:36:21 <int-e> so if it fits into a signed byte it doesn't complain, is my gues now...
16:36:52 <int-e> (but at least it's consistent between cmp and adc)
16:42:42 <ais523> <int-e> (The Esochain thing annoys me.) ← we really need to have a wiki-wide discussion about topicality at some point
16:43:11 <ais523> especially, the extent to which people should be allowed to use the site like a social network rather than a documentation site
16:43:41 <ais523> I normally don't try to shut this sort of thing down immediately, but maybe I should
16:45:40 <int-e> Do we have enough hammers to shut it down?
16:46:04 <ais523> if there are clear, agreed rules I would probably be able to enforce them
16:46:13 <int-e> I mean, I don't think this is a proper use for a Wiki. Any Wiki, really.
16:46:50 <ais523> when I don't moderate things, partly it's due to a lack of time, and partly it's due to a lack of mental capacity to handle the ensuing arguments
16:47:11 <ais523> together with the general Esolang rule of "if in doubt, close the browser"
16:47:28 <ais523> it used to be that I just enforced the rules, I didn't make them – but nowadays nobody else is making them, there are other admins but they rarely do anything
16:47:32 <int-e> But if it's confined to a single pager I can ignore the esolangs messages and be happy enough... I just had trouble getting the pattern right.
16:47:51 <int-e> (/ignore is an IRC equivalent to closing the browser)
16:48:04 <int-e> pager -> page
16:48:16 <int-e> I had a similar thing for all of User:A's edits
16:48:39 <int-e> (Whom you probably remember.)
16:48:44 <ais523> it would be hard not to
16:49:37 <ais523> I am not sure how much consensus there is about "should the wiki be usable like a social network?" nor even who I'd get consensus from – I think someone (korvo?) argued in favour of that sort of thing on Wikipedia a while ago
16:50:50 <ais523> I would personally generally prefer everything on the wiki to be kept esolang-related in the sense of "does this help you develop, program in, document or understand esolangs and esoteric programming?"
16:50:57 <korvo> ais523: I'm in favor of inclusion in the main namespace and also in favor of special-interest groups, wikiprojects, etc. But really what I mean by that is that I left English WP because Esperanza was dissolved and admins kept deleting articles that I had put effort into.
16:50:57 <int-e> Well there's a whole User: namespace for socializing.
16:51:15 <ais523> int-e: oh yes, the esochain thing is in the wrong namespace
16:51:17 <korvo> I'm not in favor of ad-hoc namespaces or going against consensus.
16:51:47 <ais523> but I also think that there's a resonable argument that socializing should be banned everywhere, including the User: namespace
16:52:30 <korvo> I've been waffling over whether I should signal to PTSF and others that their pastebins and other misuses of user:. Maybe I waffled too long.
16:52:48 <ais523> fwiw my current position on the "correct inclusionism/deletionism policy for Wikipedia" is that it should be almost entirely driven by verifiability
16:52:56 <int-e> My main problem with the Esochain thing is that it feels like it's just a way to generate edits. Which, sitting on this channel translates to spam.
16:52:59 <ais523> err, verifiability by secondary sources
16:53:12 <ais523> if it is, that implies that at least some people care – if it isn't, you can't write an article about it anyway
16:53:15 <int-e> If it just existed as a mostly static page... I wouldn't even care.
16:53:48 <ais523> ah, my main problem with the Esochain thing is that a game that uses a list of esolang names as input isn't esolang-related enough to be ontopic
16:54:01 <int-e> (Though if you asked whether it should exists I probably would still say no, but out of sight, out of mind works well!)
16:54:13 <ais523> and even for games that are esolang-related, they should be documented on the wiki, but not played on the wiki
16:54:34 <ais523> like, BF Joust has its own servers, we don't play it by editing wiki pages, instead we edit the wiki pages to document the game
16:55:18 -!- b_jonas has joined.
16:55:32 <int-e> I'll say that having subsections called "server" at least makes it look like a Discord parody, which was good for a singular giggle.
16:56:09 <korvo> I would like wikiprojects, BTW. Boxes. Knowledge snippets. Generic pages. The wiki is getting to be broad, and it needs better organizational tools to create a more uniform and cohesive presentation of knowledge.
16:56:33 <ais523> anyway, for people who do think it shouldn't be there, I encourage you to say so on the talk page, because doing that makes it easier to delete
16:56:56 <ais523> korvo: wikiprojects in the sense of content organisation rather than in the sense of "here's a list of people who have committed to working on this"?
16:57:22 <ais523> I don't think we have enough editors – especially enough editors who care about content curation rather than just adding new esolang ideas – to staff a wikiproject
16:59:37 <korvo> I'll leave a note in a minute. I'd like to point out here that anybody with a database dump can programmatically play the game with (stochastic) perfect play. The goal of such a game, when given to children, is to help them learn to spell and pronounce e.g. animal names; there's no similar need for esoteric language names.
16:59:44 <ais523> fwiw, I have also been considering deleting the language list and making the "semi-serious language list" (which is a silly name for it) into the new Language List, using Category:Languages to replace the purpose of the old language list
17:00:24 <ais523> korvo: fwiw I believe perfect play in that is very difficult because it's a multiplayer game with more than two players, and if that wasn't hard enough, you don't know how many players there are or what the turn order is
17:00:36 <korvo> ais523: Or just in the sense of "this article is part of a series on brainfuck", TBH. I'm a brutalist though and I'm not going to insist on a specific presentation without supporting structure, both in the code and in the community.
17:01:08 <ais523> korvo: oh yes, lists and navboxes and series and the like are what I think the best form adding structure to the wiki si
17:01:10 <ais523> * is
17:01:17 <ais523> esolangs often form related groups
17:01:46 <ais523> one of the ones I remember best is the whole set of nopfunge derivatives
17:02:21 <ais523> but esolangs are varied enough that I don't think those should be forced into some overarching structure, I think we should do whatever makes the most sense for the series itself, even if it's incompatible with other series
17:02:53 * ais523 laments how the plural of singular "series" pronounced differently, yet there's no way to distinguish the singular from the plural when writing
17:03:20 <ais523> or, maybe not?
17:03:57 <ais523> I thought the singular was pronounced with a short /i/ near the end and the plural with a long /iː/, but Wiktionary tells me that that's actually a US vs. UK distinction
17:04:14 <ais523> are Americans more likely to talk about one series at a time than Brits are, and it lead to me inferring an incorrect rule?
17:05:00 <korvo> Sure. I'm a postmodernist, so I look at [[category:concepts]] or [[category:data types and structures]] as already forcing a lot of structure onto the situation, but that's not necessarily a bad thing. Can't have tomatoes, peanuts, pumpkins, or even beans without a supporting pole.
17:05:29 <ais523> I was thinking more that categories are for what consistent overarching structure we have, which there are bits of (like computational class categories)
17:05:49 <ais523> and lists and cross-links are more for things that make sense locally within a group of pages but that we wouldn't want to apply to every page on the wiki
17:06:13 <esolangs> [[Talk:Game:Esochain]] https://esolangs.org/w/index.php?diff=163928&oldid=163884 * Int-e * (+378) meh
17:06:17 <ais523> when I write an esolang page, I check it against every category on Esolang:Categorisation to see if it fits
17:12:15 <int-e> (stepping away from the annoyance, it's kind of interesting that as a spam vehicle, this page has been more successful than that other page that was supposed to be edited one character at a time)
17:14:49 <esolangs> [[Talk:Game:Esochain]] https://esolangs.org/w/index.php?diff=163929&oldid=163928 * Corbin * (+557) /* This is a spam machine, please delete */ A game that can be played by a script running on a database dump? And it's not even educational.
17:14:52 <ais523> I think I might have pointed out that that page was impractical for spamming reasons
17:17:33 <ais523> hmm, maybe there should also be a rule along the lines of "an esolang must exist independently of the page that describes it" – that doesn't mean that it needs to be documented anywhere else or the like, but it must be a case of "think of the esolang, write a page about it" rather than creating a page first and hoping it turns into an esolang
17:18:21 <ais523> there are so many pages which are just "you can edit whatever commands you like onto this page" or the like – that's potentially a way to create an esolang (although it tends to not work in practice) but the esolang doesn't exist until later, so maybe the design process should happen offsite
17:18:42 <int-e> be careful not to outlaw https://esolangs.org/wiki/Real_Fast_Nora%27s_Hair_Salon_3:_Shear_Disaster_Download
17:18:45 <int-e> ;)
17:20:04 <ais523> int-e: I don't think that breaks the rules – naming an esolang after a spam page is allowed because the esolang existed before the page about it did
17:20:23 <ais523> the original spam page would have broken the rules, the later page with the same name doesn't
17:20:39 <ais523> creating a spam page with the intent of later editing it into an esolang would be disallowed, but probably should be?
17:23:05 <ais523> `as-encoding cmpl $0xfffffffe, (%rax)
17:23:09 <HackEso> 83 38 fe: cmpl $0xfffffffe,(%rax)
17:23:11 <int-e> It's hard to /define/ a minimum standard for an esolang. And is anybody going to wade through the existing slop of stubby, non-computing, and example-only languages?
17:23:24 <ais523> `as-encoding cmpq $0xfffffffe, (%rax)
17:23:26 <HackEso> ​{standard input}: Assembler messages: \ {standard input}:1: Error: operand type mismatch for `cmp'
17:23:49 <ais523> `as-encoding cmpq $0xfffffffffffffffe, (%rax)
17:23:50 <HackEso> 48 83 38 fe: cmpq $0xfffffffffffffffe,(%rax)
17:23:51 <int-e> (non-computing: there are a number of constant output languages, for starters)
17:24:23 <ais523> a constant output language is still well-defined, the main issue is whether it even counts as a programming language (although I think it's OK for esolangs.org to investigate that issue / document thoughts about it)
17:24:49 <ais523> but it might make sense to group those languages onto a single page, especially if there is nothing to say about them beyond what string they print
17:25:03 <korvo> ais523: Suppose I come across a page like [[esolang:awesome commons liscence]]. How would you like me to mark it? I can create talk pages in every case if you like.
17:25:21 <int-e> That could be done on a single "meta" page that captures the whole class of constant output languages.
17:25:47 <ais523> int-e: right
17:26:08 <ais523> korvo: I'm not sure, normally I just delete those things when someone brings my attention to them
17:26:30 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Esolang:Awesome commons liscence]]": offtopic
17:26:32 <korvo> int-e: Is it time to make [[constant language]]? We just have to figure out the bikeshed at https://esolangs.org/wiki/Esolang_talk:Categorization#Constant_languages
17:29:37 -!- tromp has joined.
17:29:38 <int-e> korvo: Hmm, I see that the point has been made there already.
17:31:57 <int-e> (ais523 brought it up)
17:32:52 <esolangs> [[ALMBARC12YO]] https://esolangs.org/w/index.php?diff=163930&oldid=127498 * Corbin * (+32) Identify a TBS.
17:33:32 <b_jonas> ais523: I wasn't thinking that it overflows to infinity, I thought it would overflow to a finite number from which if you subtract 1 it doesn't change, but you're right, that doesn't work. I'll have to think if there's something similar that could work though, like maybe if you add 0.5 bias or something.
17:33:54 <korvo> Apparently many of the youngsters are refugees from a Fandom wiki: https://amogus.fandom.com/wiki/Amogus_Wiki
17:34:28 <esolangs> [[Talk:Game:Esochain]] M https://esolangs.org/w/index.php?diff=163931&oldid=163929 * Int-e * (+1) /* This is a spam machine, please delete */ fix typo
17:34:42 <esolangs> [[AmogusScript]] https://esolangs.org/w/index.php?diff=163932&oldid=117800 * Corbin * (-51) Fix categories.
17:34:56 <b_jonas> isn't normally in a register alraedy => that's the advantage of using an integer, because the instructions that I use (cmp, test, adc, sbb) work with a memory output operand
17:36:15 <b_jonas> whereas eg. the cmovb instruction only works with register output operand, and I think that's true for SSE2 floating point operands too, but maybe AVX512 changes that or something
17:36:37 <int-e> korvo: A lot of this is a matter of finding the energy to actually consolidate existing contents. Though I guess that there's also value in having a page to point to for new additions, lowering the bar for deletions.
17:36:55 <esolangs> [[User talk:Pifrited/PasteBin]] N https://esolangs.org/w/index.php?oldid=163933 * Corbin * (+407) Use a proper pastebin please.
17:37:04 <int-e> I, for one, don't see myself actually going through pages looking for existing constant languages.
17:37:13 <b_jonas> I admit that the just two instructions for incrementing or decrementing only works in the simplest case, often you'll have more instructions than that
17:37:21 <korvo> int-e: I hope to demonstrate that I have the energy and what I am mostly looking for is consensus on what to do.
17:38:32 <esolangs> [[Among Us]] https://esolangs.org/w/index.php?diff=163934&oldid=117793 * Corbin * (+1) Fix categories.
17:39:56 <b_jonas> but I would like to hear the details of how you'd use the floating point method, I can't tell yet how simple it is
17:40:37 <esolangs> [[AMONGUSISABIGSUSSYBAKAHAHAHAHAHATHISLANGUAGEISREALLYCOOLPLEASEUSEITMYLIFEDEPENDSONITORELSEPLSPLSPLSPLSPLSPLSPLSkahyghdfhm]] https://esolangs.org/w/index.php?diff=163935&oldid=117855 * Corbin * (-40) Fix categories.
17:41:12 <esolangs> [[Point]] https://esolangs.org/w/index.php?diff=163936&oldid=83342 * Unlimiter * (-8)
17:41:33 <esolangs> [[AZZTURBLICHINORTYEUSIACNOSIPTYRUTIEOSUNEMEEETIRMSPLAORRRRRRRRRRRRRRHSIFUGISSFGIUUUUUUUUUUUUGUIGSEIUFGYUSGNYGNXWGNYX123456789012345678901145141919810TROSHPPAOCONALMELANGUAGE]] https://esolangs.org/w/index.php?diff=163937&oldid=125068 * Corbin * (-22) Fix categories.
17:42:40 <ais523> b_jonas: changing the referencing count is just a multiply by 2 / divide by 2, but you would indeed need another instruction to check if it had become zero (only for decrements, though, for obvious reaosns)
17:42:55 <esolangs> [[JamogusLamogusAmogus]] https://esolangs.org/w/index.php?diff=163938&oldid=120041 * Corbin * (+1) Fix categories.
17:43:11 <ais523> err, multiply by 0.5, not divide by 2, obviously
17:43:31 <ais523> I think the float instructions don't allow literals, so you would need an extra instruction to load the value of the constant to multiply/divide by
17:43:35 <ais523> so, the float method is probably less efficient
17:43:59 <esolangs> [[LOLSUS]] https://esolangs.org/w/index.php?diff=163939&oldid=117799 * Corbin * (+1) Fix categories.
17:44:33 <ais523> that said, the float versions would SIMDify much better, but it's hard to imagine how that situation would ever come up
17:44:52 <ais523> I guess if you were using scatter/gather to operate on four different reference-counted things in parallel…
17:45:22 <int-e> ais523: Oh I think I've just arrived at the same preexisting esolang idea... because while the wiki is ostensibly about documenting esolangs, as a reader it's much more valuable to have a diversity of ideas. And if you make up an esolang just because you want to leave a mark on the wiki... well... it's likely to be another instance of the most unoriginal concepts that we already have a dozen...
17:45:23 <b_jonas> ok, I got that part, but I'm less familiar with how the floating point instructions work than the integer, especially how easily you can do a conditional call when the last reference is freed, and whether avx2 or avx512 could help with this in some way.
17:45:28 <int-e> ...times on the wiki.
17:46:06 <esolangs> [[Sus]] https://esolangs.org/w/index.php?diff=163940&oldid=117791 * Corbin * (+1) Fix categories.
17:46:50 <esolangs> [[Suscript]] https://esolangs.org/w/index.php?diff=163941&oldid=117795 * Corbin * (-17) Fix categories.
17:47:10 <ais523> b_jonas: looks like the instruction you'd need is UCOMISS (SSE and later)
17:47:25 <int-e> . o O ( Maybe we should require rationales... "Why another esolang?" :-P )
17:47:34 <esolangs> [[Suscript 2.0]] https://esolangs.org/w/index.php?diff=163942&oldid=119407 * Corbin * (+1) Fix categories.
17:48:08 <b_jonas> oh, that's nice
17:48:10 <ais523> UCOMISS a, b is very similar to CMP a, b except that it sets the parity flag if either a or b is a NaN
17:48:19 <ais523> and works on floats rather than ints
17:48:30 <ais523> there's UCOMISD too, for doubles
17:49:08 <esolangs> [[SusLang]] https://esolangs.org/w/index.php?diff=163943&oldid=117798 * Corbin * (+8) Fix categories.
17:50:10 <esolangs> [[This esoteric programming language has one of the longest titles, and yet it only has one command, which is such a shame, but there is no way to undo it so we may as well stick with it]] https://esolangs.org/w/index.php?diff=163944&oldid=149502 * Corbin * (-36) Fix categories and formatting.
17:50:47 <esolangs> [[When the Imposter is Sus]] https://esolangs.org/w/index.php?diff=163945&oldid=124399 * Corbin * (-16) Fix categories.
17:51:54 <esolangs> [[]] https://esolangs.org/w/index.php?diff=163946&oldid=120451 * Corbin * (-17) Fix categories.
17:53:09 <esolangs> [[lang]] https://esolangs.org/w/index.php?diff=163947&oldid=158968 * Corbin * (-17) Fix categories.
17:53:33 <esolangs> [[lang without Quine]] https://esolangs.org/w/index.php?diff=163948&oldid=132865 * Corbin * (-17) Fix categories.
17:54:23 -!- Everything has quit (Ping timeout: 256 seconds).
17:58:33 <b_jonas> ok, so there's still one extra instruction to load a constant 0.5 into a register before you mulsd for decreasing the reference count, but you only need one instruction to tell whether the last reference is gone and put the result into eflags on which you can do a conditional jump
17:59:33 <b_jonas> or perhaps it's better to say that there's an extra instruction to store the reference count after
18:03:41 <ais523> a good property of the adc/sbb implementation is that you can do it directly on memory with a RMW instruction and have the flags set already
18:05:49 <ais523> looks like LLVM doesn't produce an implementation anything like that one, from naive code: https://rust.godbolt.org/z/PPf9ErjTr
18:06:25 <ais523> using u32 rather than i32 doesn't help either
18:07:34 <b_jonas> I hadn't realized the float comparison would be so simple, I thought you needed a longer sequence of instructions
18:07:56 <ais523> …and now I'm wondering whether it's faster to read the same memory address twice in a row with the second being an RMW, or to load the value into a register, read and RMW the register, and store the register again
18:08:50 <int-e> oh, you want sbb to avoid the conditional jump
18:09:09 <int-e> and floats because inf/2 = inf
18:09:12 <b_jonas> ais523: I think it can go either way depending on what else you do around that.
18:09:22 <ais523> int-e: right
18:09:24 * int-e is piecing together the context, slowly
18:10:09 <ais523> oh, the optimisation is probably actually invalid in Rust, I forgot that Rust's current semantics ban speculative writes to &mut data
18:10:31 <b_jonas> int-e: I don't specifically want to avoid the conditional jump, it's just that this is fewer instructions either way... although to be fair the cpu can often merge a cmp followed by a conditional jump to a microinstruction so it might be almost as good
18:10:38 <ais523> i.e. the compiler is not allowed to generate a write to a memory address unless it is written in the naive program execution, even if mutably borrowed (what if you had an &mut to a read-only page and used its value to determine whether it was read-only or not?)
18:11:01 <ais523> but adding a *refcount += 0 at the start doesn't change things
18:11:15 <b_jonas> and I don't claim that the sbc solution that I said is optimal either, I only said that it's simpler than I can imagine any solution with floats will be
18:11:32 <ais523> it is simpler than I was expecting for an integer-register solution
18:13:17 <int-e> ais523: https://rust.godbolt.org/z/17ezf3Pbj produces a cmov
18:14:16 <int-e> (but you could say that it's also very much on the nose about what kind of code I want)
18:14:59 <ais523> int-e: you changed the sense of the return value there
18:15:09 <ais523> it's supposed to return true if the refcount fell to 0
18:15:16 <int-e> huh
18:15:35 <int-e> it won't matter, it's just setne vs. sete
18:15:37 <ais523> my best so far is https://rust.godbolt.org/z/x49dKMov7
18:15:46 <ais523> int-e: no, you are returning the result of the comparison to INT_MAX
18:15:56 <ais523> not whether the decrement made the value
18:15:56 <int-e> oh!
18:15:59 <ais523> * made the value 0
18:16:28 <int-e> right, I'd have to use rc == 1... and that does produce worse code
18:16:39 <int-e> (instead of true)
18:16:47 <int-e> okay, I retract my "huh"
18:17:23 <ais523> my version which unreachable_unchecked the subtraction to not negative-overflow does seem to be able to reuse the carry bit from the subtraction
18:17:37 <ais523> but it isn't using it as an input to sbb
18:21:37 <ais523> I tried writing b_jonas's assembly as a direct translation to Rust, using «let (new_refcount, _) = refcount.borrowing_sub(0, *refcount <= u32::MAX - 1);», but it still didn't generate an sbb instruction (which is a bit of a shame because borrowing_sub exists more or less directly as an interface to the sbb instruction)
18:21:46 <ais523> or, I should say will exist, it's still unstable
18:22:11 <b_jonas> ais523: what type is refcount?
18:22:15 <ais523> u32
18:22:17 <ais523> err, *mut u32
18:22:21 <ais523> * &mut u32
18:22:34 <b_jonas> ok, I saw an i32 in int-e's code and that's what got me scared here
18:22:46 <ais523> I started with i32 then changed to u32 because this doesn't need to go negative
18:23:07 <b_jonas> ais523: and the problem isn't that rust is doing some overflow checking here?
18:23:29 <ais523> I have an unreachable_unchecked to tell the compiler to optimise as though there can't be a negative overflow
18:23:51 <ais523> (and it does indeed do that, by using the carry flag after the subtraction as the return from the function)
18:25:26 <int-e> ais523: *refcount -= (*refcount != u32::MAX) as u32; behaves decently too
18:25:30 * int-e shrugs
18:25:33 <int-e> (but no sbb)
18:25:50 <ais523> I did that earlier, same decent but sbbless code
18:26:28 <ais523> there are all these processor instructions like sbb and rcr that compilers will hardly ever generate (I do see sbb in code that operates on 128-bit integers but it may be a special case in the compiler)
18:26:57 <int-e> related: https://github.com/llvm/llvm-project/issues/43016
18:26:59 <ais523> rcr has horrible performance if the shift argument isn't a hardcoded 1, but that's usually the argument you actually want in practice
18:28:10 <ais523> int-e: I agree it's related, although it looks like a different optimisation
18:28:38 <int-e> yeah the pattern is a bit different, more about producing an intermediate 0 or -1
18:28:39 <esolangs> [[Constant language]] N https://esolangs.org/w/index.php?oldid=163949 * Corbin * (+2746) Stub a concept.
18:29:00 <ais523> in particular it's generating specifically code that sbbs a register from itself
18:29:15 <ais523> and points out that the performance of that depends on the processor (some processors have a false dependency on that, others don't)
18:30:55 <int-e> does LLMV have sbb "natively" or only in a late peephole phase, I wonder.
18:31:39 <korvo> ais523, int-e: ^^ This is the page that I'll use as a bluelink when tearing down [[category:nope. derivatives]]. I'm also willing to tear down [[category:User Edited]], which wasn't discussed. In general, it seems PaxtonPenguin isn't really fond of following rules about creating pages; they also have a sandbox.
18:31:46 <b_jonas> in BASICs, what's the semantics of NEXT when GOTOs into or out of the loop can be involved? does NEXT effectively scan backwards in the code in line number order to find the matching FOR skipping balanced FOR-NEXT pairs, ignoring actual GOTO control flow? or, in older BASICs, scan backwards in line number order to find the FOR with the same variable name, ignoring actual control flow? or does it work
18:31:52 <b_jonas> differently and you have to execute the FOR to remember at runtime where NEXT will jump to?
18:32:02 <b_jonas> and similar question for WEND in later BASICs
18:32:26 <ais523> I don't think I ever actually tried it, even though I used to write quite a lot of BASIC when I was young
18:32:34 <APic> Nighty-Night! cu! *wave*
18:32:37 <ais523> night APic
18:33:07 <ais523> I generally thought of goto-based and structured-programming-based programming styles as separate and didn't try to mix them
18:33:59 <ais523> and I don't think I thought of the possibility even of jumping out of a loop until I started writing in extremely-old-fashioned C++ instead
18:34:12 <esolangs> [[Computable]] M https://esolangs.org/w/index.php?diff=163950&oldid=163708 * Corbin * (-10) /* History */ Bluelink.
18:34:23 <b_jonas> I'm asking because the new video https://www.youtube.com/watch?v=-0Jtv8hvau4 shows a BASIC code that has jumps out then back into the FOR-NEXT loop, because this is the dialect of BASIC where the IF statement can only GOTO, and the bodies of the IF conditionals are written outside of the loop rather than written inline and skipped over
18:34:53 <b_jonas> but it only jumps into a FOR loop when it recently jumped out of it
18:35:12 <b_jonas> I'm not asking about the semantics of that code in particular, but in general for more tricky programs
18:36:02 <ais523> it's a perfectly reasonable question, I just don't know the answer because I never tried it
18:36:14 <ais523> my guess would be the "scan backwards" approach but it's just a guess
18:36:43 <ais523> (although I kind-of expect most BASICs with FOR…NEXT to cache which FORs match which NEXTs, so that no actual scan is needed)
18:39:10 -!- visilii has joined.
18:41:22 <b_jonas> maybe
18:42:18 <esolangs> [[Constant language]] https://esolangs.org/w/index.php?diff=163951&oldid=163949 * Corbin * (+222) Technically recognizing a quine-avoiding constant language is at most L, not NONE; some effort is required. But I bet it's more like AC.
18:42:23 <b_jonas> well, I don't have a use for this now, I am not writing BASIC programs to old systems with limited memory where I'd want tricks like that for optimization, and I don't want to write a basic interpreter
18:44:09 <esolangs> [[Constant language]] https://esolangs.org/w/index.php?diff=163952&oldid=163951 * Corbin * (+101) /* Quine avoidance */ More words. Trying to keep a reasonable amount of humor.
18:52:50 <esolangs> [[GRAND LEMURE!!1]] N https://esolangs.org/w/index.php?oldid=163953 * WarzokERNST135 * (+145) Created page with "This is a weird esolang in which I JUST WANNA EXIST ==Hello World:== so grand man oui oui Andes le krouche "Worlde' Hllo" Crunde le vange."
18:54:12 <esolangs> [[GRAND LEMURE!!1]] https://esolangs.org/w/index.php?diff=163954&oldid=163953 * WarzokERNST135 * (+84) /* Hello World: */
18:54:18 -!- ais523 has quit (Quit: quit).
18:55:34 <esolangs> [[Special:Log/newusers]] create * V tgbjmehny * New user account
18:56:21 <esolangs> [[ewankalite]] N https://esolangs.org/w/index.php?oldid=163955 * WarzokERNST135 * (+348) Created page with "[[ewankalite]] is an esolang made by [[WarzokERNST135]] in which valid programs are ''''- wait... lemme focus <br>[[GRAND LEMURE!!1]] <br>and it's even weirder than grand lemure <br>Look: oot$hift 454t68 'gheloaWreLed' ===\=++ e bottles of beer on the wa
18:57:22 <esolangs> [[User:WarzokERNST135]] https://esolangs.org/w/index.php?diff=163956&oldid=163863 * WarzokERNST135 * (+49)
19:04:47 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=163957&oldid=163894 * V tgbjmehny * (+160) /* Introductions */
19:05:12 <esolangs> [[lang without Quine with Quine]] N https://esolangs.org/w/index.php?oldid=163958 * WarzokERNST135 * (+3391) Created page with "lang without Quine with Quine is an esolang made by WE135. As in lang without Quine, if you put <code></code>, then it outputs: <pre> 1956 -..."
19:06:10 <esolangs> [[lang without Quine with Quine]] M https://esolangs.org/w/index.php?diff=163959&oldid=163958 * WarzokERNST135 * (+0)
19:16:24 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:17:54 -!- tromp has joined.
19:17:59 <esolangs> [[MODULARBALL]] N https://esolangs.org/w/index.php?oldid=163960 * Aadenboy * (+2896) not sure if it would be possible to implement anything using this but I'll throw it out here anyways
19:20:07 <esolangs> [[Constant language]] https://esolangs.org/w/index.php?diff=163961&oldid=163952 * Corbin * (+300) Hack out a denotative abstraction.
19:20:50 <esolangs> [[User:V tgbjmehny]] N https://esolangs.org/w/index.php?oldid=163962 * V tgbjmehny * (+996) Created page with "== mfsbpltthann == My name is V tgbjmehny, which as you can see is just random letters my esolang: === Name: === my first stack based programming language that totally has a normal name === How it works: === new [name of varable] push [name of var
19:21:22 <esolangs> [[User:Aadenboy]] https://esolangs.org/w/index.php?diff=163963&oldid=163359 * Aadenboy * (+84) /* my own esolangs */ add [[MODULARBALL]]
19:21:30 <esolangs> [[User:V tgbjmehny]] https://esolangs.org/w/index.php?diff=163964&oldid=163962 * V tgbjmehny * (+3) /* Truth-machine */
19:22:39 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=163965&oldid=163924 * Aadenboy * (+18) /* M */ add [[MODULARBALL]]
19:22:53 <esolangs> [[User:V tgbjmehny]] https://esolangs.org/w/index.php?diff=163966&oldid=163964 * V tgbjmehny * (+1) /* Hello, World! */
19:23:19 <esolangs> [[User:V tgbjmehny]] https://esolangs.org/w/index.php?diff=163967&oldid=163966 * WarzokERNST135 * (+14) /* How it works: */ code structuring
19:24:57 <esolangs> [[lang]] https://esolangs.org/w/index.php?diff=163968&oldid=163947 * Corbin * (+4) Identify a CL.
19:25:33 <esolangs> [[User:V tgbjmehny]] https://esolangs.org/w/index.php?diff=163969&oldid=163967 * V tgbjmehny * (+11) /* Hello, World! */
19:25:46 <esolangs> [[User:V tgbjmehny]] https://esolangs.org/w/index.php?diff=163970&oldid=163969 * V tgbjmehny * (-11) /* Hello, World! */
19:25:52 <esolangs> [[lang without Quine]] https://esolangs.org/w/index.php?diff=163971&oldid=163948 * Corbin * (+28) Identify a QACL.
19:27:56 <esolangs> [[Nope.]] https://esolangs.org/w/index.php?diff=163972&oldid=163096 * Corbin * (-49) Identify a CL.
19:28:25 <esolangs> [[Template:BG]] N https://esolangs.org/w/index.php?oldid=163973 * WarzokERNST135 * (+144) Created page with "<includeonly> <p style="background-color: {{{1}}};">{{{2}}}</p> </includeonly> <noinclude> This is used to give a background color to your text."
19:28:35 <esolangs> [[User:V tgbjmehny]] https://esolangs.org/w/index.php?diff=163974&oldid=163970 * V tgbjmehny * (+13) /* Hello, World! */
19:29:14 <esolangs> [[No.]] https://esolangs.org/w/index.php?diff=163975&oldid=160719 * Corbin * (-87) Identify a CL.
19:29:21 <esolangs> [[User:V tgbjmehny]] https://esolangs.org/w/index.php?diff=163976&oldid=163974 * V tgbjmehny * (+13) /* Truth-machine */
19:30:43 <esolangs> [[No.pe.]] https://esolangs.org/w/index.php?diff=163977&oldid=136251 * Corbin * (+26) Identify a QACL.
19:32:17 <esolangs> [[No.]] M https://esolangs.org/w/index.php?diff=163978&oldid=163975 * Corbin * (-24) /* Interpreters */ Bluelinks.
19:33:32 <esolangs> [[]] https://esolangs.org/w/index.php?diff=163979&oldid=140987 * Corbin * (+39) Identify a CL.
19:34:18 <esolangs> [[User:WarzokERNST135/SIGNATURE SANDBOX]] N https://esolangs.org/w/index.php?oldid=163980 * WarzokERNST135 * (+343) Created page with "{{SUBST:BG|blue|{{SUBST:Font color|yellow|}}}}{{SUBST:BG|green|{{SUBST:Font color|white|}}}}{{SUBST:BG|yellow|{{SUBST:Font color|red|}}}}Don't ask me. [[WarzokERNST135]]"
19:35:46 <esolangs> [[ without a Quine]] https://esolangs.org/w/index.php?diff=163981&oldid=141390 * Corbin * (+113) Identify a QACL.
19:37:33 <esolangs> [[]] https://esolangs.org/w/index.php?diff=163982&oldid=163562 * Corbin * (-31) Fix categories.
19:40:37 <esolangs> [[Violation]] https://esolangs.org/w/index.php?diff=163983&oldid=135687 * Corbin * (+115) Identify a CL.
19:42:31 <esolangs> [[User:WarzokERNST135/SIGNATURE SANDBOX]] https://esolangs.org/w/index.php?diff=163984&oldid=163980 * WarzokERNST135 * (-46)
19:45:18 <esolangs> [[User:V tgbjmehny]] M https://esolangs.org/w/index.php?diff=163985&oldid=163976 * WarzokERNST135 * (-2) /* bye! */
19:50:54 <korvo> [[template:lang]] is curious. I wish that they *discussed* this sort of thing first.
19:50:54 <esolangs> [[Talk:Game:Esochain]] https://esolangs.org/w/index.php?diff=163986&oldid=163931 * WarzokERNST135 * (+383) /* Server 4 */
19:52:23 <esolangs> [[Talk:Game:Esochain]] M https://esolangs.org/w/index.php?diff=163987&oldid=163986 * WarzokERNST135 * (+1)
19:53:10 <esolangs> [[Unmatched (]] https://esolangs.org/w/index.php?diff=163988&oldid=151391 * Corbin * (-43) Identify a CL.
19:54:42 <esolangs> [[Minim]] M https://esolangs.org/w/index.php?diff=163989&oldid=123494 * KakkoiiChris * (+2) Fixed spelling, added formatting, and changed some wording.
19:54:46 <esolangs> [[TW'sLE!!!]] https://esolangs.org/w/index.php?diff=163990&oldid=145894 * Corbin * (-22) Identify a CL.
19:58:57 <esolangs> [[Permission denied]] https://esolangs.org/w/index.php?diff=163991&oldid=149943 * Corbin * (-40) Identify a CL.
20:00:33 <esolangs> [[NOP (esolang)]] https://esolangs.org/w/index.php?diff=163992&oldid=149109 * Corbin * (-8) Identify a CL.
20:01:40 <esolangs> [[Nil]] https://esolangs.org/w/index.php?diff=163993&oldid=151386 * Corbin * (+37) Identify a CL.
20:02:32 <esolangs> [[MAIACORD]] https://esolangs.org/w/index.php?diff=163994&oldid=156711 * Corbin * (-31) Fix categories.
20:04:45 -!- ursa-major has quit (Server closed connection).
20:04:54 -!- ursa-major has joined.
20:06:32 <esolangs> [[Machine-language]] https://esolangs.org/w/index.php?diff=163995&oldid=162175 * Corbin * (+143) Fix categories. This joke isn't actually a language and certainly isn't TC, although it is funny and good food for thought.
20:08:18 <esolangs> [[Anti-Machine language]] https://esolangs.org/w/index.php?diff=163996&oldid=162247 * Corbin * (-82) Fix categories. This language cannot be implemented on a machine, so it hasn't actually been implemented.
20:09:34 <esolangs> [[Kiwiscript]] https://esolangs.org/w/index.php?diff=163997&oldid=150461 * Corbin * (-105) Identify a CL.
20:11:35 <esolangs> [[Hello,world!]] https://esolangs.org/w/index.php?diff=163998&oldid=160068 * Corbin * (-108) Identify a CL.
20:13:16 <esolangs> [[Fizzbuzz]] https://esolangs.org/w/index.php?diff=163999&oldid=146667 * Corbin * (-130) Identify a CL.
20:13:54 <esolangs> [[Output (WarzokERNST135)]] N https://esolangs.org/w/index.php?oldid=164000 * WarzokERNST135 * (+197) Created page with "{{lowercase}} this is an esolang made by WE135 in which every thing inputted to it just makes it output "output". == Quine == output == Self interpreter == <pre></pre> Make your own interpreters!!"
20:15:18 <esolangs> [[FH]] https://esolangs.org/w/index.php?diff=164001&oldid=163512 * Corbin * (-52) Identify a CL.
20:15:58 <esolangs> [[Durge]] https://esolangs.org/w/index.php?diff=164002&oldid=156040 * Corbin * (-31) Fix categories.
20:16:58 <esolangs> [[Compute]] https://esolangs.org/w/index.php?diff=164003&oldid=126216 * Corbin * (-11) Fix categories.
20:22:08 <esolangs> [[User:Tommyaweosme/recursive]] N https://esolangs.org/w/index.php?oldid=164004 * Tommyaweosme * (+31) Created page with "{{User:Tommyaweosme/recursive}}"
20:26:00 <esolangs> [[Category:Pages with template loops]] N https://esolangs.org/w/index.php?oldid=164005 * WarzokERNST135 * (+58) Created page with "This category is about the pages that have template loops."
20:27:56 <esolangs> [[Brainfuck]] https://esolangs.org/w/index.php?diff=164006&oldid=154681 * Corbin * (+65) Identify a CL.
20:28:42 <esolangs> [[Hello, golf!]] https://esolangs.org/w/index.php?diff=164007&oldid=125959 * Corbin * (+1) Identify a CL.
20:29:24 <esolangs> [[6]] https://esolangs.org/w/index.php?diff=164008&oldid=160706 * Corbin * (-22) Identify a CL.
20:30:21 <esolangs> [[Arch is the best!]] https://esolangs.org/w/index.php?diff=164009&oldid=163049 * Corbin * (+36) Identify a CL.
20:31:02 <esolangs> [[NoQuinebrainfuck]] N https://esolangs.org/w/index.php?oldid=164010 * HyperbolicireworksPen * (+64) Created page with "same as brainfuck but using H returns a error"
20:31:22 <esolangs> [[Category talk:Pages with template loops]] N https://esolangs.org/w/index.php?oldid=164011 * Corbin * (+151) Discuss first, please.
20:32:04 <esolangs> [[Segmentation fault]] https://esolangs.org/w/index.php?diff=164012&oldid=139788 * Corbin * (-55) Fix categories.
20:32:58 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164013&oldid=163486 * WarzokERNST135 * (+468)
20:33:53 <esolangs> [[Nope. without a quine]] https://esolangs.org/w/index.php?diff=164014&oldid=137699 * Corbin * (+62) Identify a QACL.
20:34:54 <esolangs> [['Python' is not recognized]] M https://esolangs.org/w/index.php?diff=164015&oldid=163807 * HyperbolicireworksPen * (+1)
20:34:56 <esolangs> [[APLWSI]] https://esolangs.org/w/index.php?diff=164016&oldid=133490 * Corbin * (-12) Identify a CL.
20:35:16 <esolangs> [[Nope. without a quine]] https://esolangs.org/w/index.php?diff=164017&oldid=164014 * Corbin * (-31) Fix categories.
20:37:03 <esolangs> [[Arch is the best!]] https://esolangs.org/w/index.php?diff=164018&oldid=164009 * WarzokERNST135 * (+54) /* See also */
20:39:49 <esolangs> [[Rickroll]] https://esolangs.org/w/index.php?diff=164019&oldid=119667 * Corbin * (-36) Identify a CL. Note that [[Never Gonna Give You Up]] doesn't actually require the entire lyrics to be emitted, so the quine's only correct if this is in fact a CL.
20:40:12 <korvo> ais523: [[category:nope. derivatives]] has been emptied out.
20:40:29 <esolangs> [[Topple/Source Code]] M https://esolangs.org/w/index.php?diff=164020&oldid=163901 * H33T33 * (+9)
20:42:36 <esolangs> [[Unmatched (]] https://esolangs.org/w/index.php?diff=164021&oldid=163988 * Corbin * (-41)
20:42:58 <esolangs> [[Language of Laughing]] https://esolangs.org/w/index.php?diff=164022&oldid=119819 * Corbin * (-27) Fix categories.
20:43:20 <esolangs> [[Stupidc]] https://esolangs.org/w/index.php?diff=164023&oldid=86386 * Corbin * (-27) Fix categories.
20:43:35 <esolangs> [[StupidBASIC]] https://esolangs.org/w/index.php?diff=164024&oldid=81532 * Corbin * (-27) Fix categories.
20:43:50 <korvo> [[category:stupid family]] has been emptied out too.
20:45:09 <esolangs> [[Output (WarzokERNST135)]] https://esolangs.org/w/index.php?diff=164025&oldid=164000 * Corbin * (+114) Identify a CL. Add some categories.
20:45:11 <esolangs> [[Talk:TheSquare]] https://esolangs.org/w/index.php?diff=164026&oldid=8546 * WarzokERNST135 * (+43)
20:46:14 <esolangs> [[Arch is the best! without a quine]] https://esolangs.org/w/index.php?diff=164027&oldid=163458 * Corbin * (+13) Identify a QACL.
20:53:15 <esolangs> [[ConstantLanguage()]] N https://esolangs.org/w/index.php?oldid=164028 * WarzokERNST135 * (+662) Created page with "[[ConstantLanguage()]] is an esolang made by [[WarzokERNST135]] in which its only functionality is to make a constant language. <br>Here is an example of the constant language "Hello, world!": ConstantLanguage("Hello, world!") It works like this: :When
20:53:32 <esolangs> [[User:WarzokERNST135]] https://esolangs.org/w/index.php?diff=164029&oldid=163956 * WarzokERNST135 * (+27)
21:05:43 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164030&oldid=164013 * Aadenboy * (+386) /* Category: Templates with page loops */
21:06:53 <esolangs> [[Talk:Psychopaths]] N https://esolangs.org/w/index.php?oldid=164031 * Corbin * (+424) Unusable for programming? Maybe.
21:09:03 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164032&oldid=164030 * WarzokERNST135 * (+362) /* Category: Templates with page loops */
21:10:08 <esolangs> [[User:/w/api.php/hidebots=1/urlversion=1/days=30/limit=50/action=feedrecentchanges/feedformat=atom]] N https://esolangs.org/w/index.php?oldid=164033 * WarzokERNST135 * (+65) Created page with "THIS IS A FREE LANGUAGE FOR EVERYONE!!!! [[Category:User Edited]]"
21:13:58 <esolangs> [[Special:Log/newusers]] create * Unicornloverinf * New user account
21:15:06 <esolangs> [[User:/w/api.php/hidebots=1/urlversion=1/days=30/limit=50/action=feedrecentchanges/feedformat=atom]] M https://esolangs.org/w/index.php?diff=164034&oldid=164033 * Aadenboy * (+194)
21:15:15 <esolangs> [[User:/w/api.php/hidebots=1/urlversion=1/days=30/limit=50/action=feedrecentchanges/feedformat=atom]] M https://esolangs.org/w/index.php?diff=164035&oldid=164034 * Aadenboy * (-1) keyboard fumble
21:15:56 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164036&oldid=164032 * Aadenboy * (+0) /* Category: Templates with page loops */ bamboozled!
21:18:10 <esolangs> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=164037&oldid=163957 * Unicornloverinf * (+245) /* Introductions */
21:21:03 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:29:55 <esolangs> [[P2WFuck]] https://esolangs.org/w/index.php?diff=164038&oldid=163893 * Tommyaweosme * (+70)
21:47:04 <esolangs> [[]] https://esolangs.org/w/index.php?diff=164039&oldid=163979 * WarzokERNST135 * (+22) /* Interpreter */
21:53:18 <esolangs> [[ewankalite]] https://esolangs.org/w/index.php?diff=164040&oldid=163955 * WarzokERNST135 * (+23)
21:57:08 <esolangs> [[Special:Log/upload]] upload * Tommyaweosme * uploaded "[[File:Tpcs print.png]]"
21:58:27 <esolangs> [[Special:Log/upload]] upload * Tommyaweosme * uploaded "[[File:Tpcs set variable pretzel.png]]"
22:04:10 <esolangs> [[Special:Log/upload]] upload * Tommyaweosme * uploaded "[[File:Tpcs repeat until.png]]"
22:04:19 <esolangs> [[Special:Log/upload]] upload * Tommyaweosme * uploaded "[[File:Tpcs hello world.png]]"
22:04:59 <esolangs> [[Special:Log/upload]] upload * Tommyaweosme * uploaded "[[File:Tpcs truth machine.png]]"
22:05:33 <esolangs> [[Twisted Python Chat Server]] https://esolangs.org/w/index.php?diff=164046&oldid=25232 * Tommyaweosme * (+240)
22:31:30 -!- simcop2387 has quit (Server closed connection).
22:31:52 -!- simcop2387 has joined.
22:58:11 -!- Sgeo has joined.
23:37:32 <esolangs> [[Talk:YOUR TAKING TOO LONG]] https://esolangs.org/w/index.php?diff=164047&oldid=161022 * Tommyaweosme * (+233)
23:42:42 <esolangs> [[User:Cinnamony]] https://esolangs.org/w/index.php?diff=164048&oldid=154214 * Cinnamony * (+202) this is actually tommyaweosme, cinnamony is my former account
2025-08-28
00:15:25 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Category:Nope. derivatives]]": unapproved category that is very likely misnamed, and would have had a better name if it were discussed (but we may end up using a list page instead)
00:15:43 <esolangs> [[Esolang:Categorization]] https://esolangs.org/w/index.php?diff=164049&oldid=160188 * Ais523 * (-34) /* Derivatives */ rm undiscussed category
00:16:21 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=164050&oldid=163818 * Hotcrystal0 * (-689)
00:16:24 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:/w/api.php/hidebots=1/urlversion=1/days=30/limit=50/action=feedrecentchanges/feedformat=atom]]": page in userspace that does not correspond to an existing user
00:17:42 <esolangs> [[Category talk:Pages with template loops]] https://esolangs.org/w/index.php?diff=164051&oldid=164011 * Ais523 * (+389) this s a MediaWiki auto-category
00:19:23 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Category:Joke examples]]": undiscussed category, currently unused
00:19:59 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Category:Process measurement and control]]": undiscussed category, currently unused this may have been a category created in the hope that people would create languages to add to it, but that isn't how the categorisation system works
00:20:14 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Category:Stupid family]]": unapproved category
00:20:23 <korvo> ki'esai! Thank you so much.
00:21:16 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Category:Tutorials]]": unapproved category (this is possibly a good idea, but in any case it contains no pages, so it isn't useful unless someone actually writes some tutorials, and those could probably go in [[Category:Programming techniques]])
00:22:13 <esolangs> [[Esolang:Categorization]] https://esolangs.org/w/index.php?diff=164052&oldid=164049 * Ais523 * (+97) /* Miscellaneous */ add [[Category:Programming techniques]], which predates the "categories must be discussed" rule and was added by the same person
00:24:32 <esolangs> [[Esolang talk:Categorization]] M https://esolangs.org/w/index.php?diff=164053&oldid=164036 * Ais523 * (-558) /* Category: Templates with page loops */ edit out overly long signature
00:25:21 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164054&oldid=164053 * Ais523 * (+536) /* Category: Templates with page loops */ some thoughts
00:26:51 -!- ais523 has joined.
00:27:31 <ais523> korvo: I'm not convinced your mention of Rice's theorem on the constant language page is correct – Rice's theorem has two conditions, a) that the property is true for at least one program and false for at least one program, and b) that the language is able to represent all computable functions
00:27:52 <ais523> although constant languages make a) impossible to satisfy, they don't satisfy b) either, making the lack of satisfaction of a) irrelevant
00:28:19 <ais523> condition a) is mostly there to exclude trivial properties like "the program starts executing", which would otherwise be counterexamples
00:29:23 <korvo> ais523: That's fair. (b) is really the issue there.
00:30:48 <korvo> FWIW the computable-universe perspective has a natural excuse for (a). We're given a blackbox semantic computer N → N and asked to figure out *any* property of it. Well, since the blackbox can be partial, we can't *run* the computer. That'd immediately risk not returning. The only thing we can do without poking the box is return a chosen point of the codomain.
00:31:35 <korvo> Since the codomain is traditionally 2, there are two natural points that we can choose, each given by a constant arrow.
00:33:40 <esolangs> [[Constant language]] https://esolangs.org/w/index.php?diff=164055&oldid=163961 * Corbin * (-18) Rice's theorem is basically not relevant since constant languages can't represent any interesting computations. Pointed out by ais523 on IRC.
00:34:18 <ais523> right, the codomain doesn't really matter here, 2 is just the smallest codomain needed to give a useful result and it's possible to generalise up to bigger codomains from there
00:35:34 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164056&oldid=163925 * Hotcrystal0 * (-1) fixing typo
00:38:37 <esolangs> [[User talk:Tommyaweosme]] https://esolangs.org/w/index.php?diff=164057&oldid=160736 * Hotcrystal0 * (+129)
00:38:47 <esolangs> [[User talk:Tommyaweosme]] https://esolangs.org/w/index.php?diff=164058&oldid=164057 * Hotcrystal0 * (+251)
01:51:21 <esolangs> [[User talk:Tommyaweosme]] https://esolangs.org/w/index.php?diff=164059&oldid=164058 * Tommyaweosme * (+127) /* HTML programs */
01:58:08 <esolangs> [[Special:Log/upload]] upload * Tommyaweosme * uploaded "[[File:Esolang wiki graph with 24 nodes.png]]"
01:58:30 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=164061&oldid=164050 * XP2PHOENIX * (+208) /* Ideas */
01:58:35 <esolangs> [[User:Tommyaweosme]] https://esolangs.org/w/index.php?diff=164062&oldid=163891 * Tommyaweosme * (+46)
01:58:45 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=164063&oldid=164061 * XP2PHOENIX * (+92) /* Ideas */
02:02:29 -!- ProofTechnique_ has quit (Server closed connection).
02:02:38 -!- ProofTechnique_ has joined.
02:14:52 -!- lambdabot has quit (Server closed connection).
02:16:08 -!- lambdabot has joined.
02:27:06 -!- integral has quit (Server closed connection).
02:27:19 -!- integral has joined.
02:28:39 -!- tetsuo-cpp has quit (Server closed connection).
02:28:53 -!- tetsuo-cpp has joined.
02:48:58 -!- ManDeJan has quit (Server closed connection).
02:49:08 -!- ManDeJan has joined.
03:39:22 <esolangs> [[Psychopaths]] M https://esolangs.org/w/index.php?diff=164064&oldid=122940 * None1 * (+26) Change description
03:46:29 <esolangs> [[Brainfucking]] N https://esolangs.org/w/index.php?oldid=164065 * None1 * (+652) Created page with "{{lang|a=User:None1}} It ignores the code and always executes a [[brainfuck]] interpreter. Since it ignores the code, it is a [[no-code esolang]]. ==Examples== ===[[brainfuck]] interpreter=== Any text can go here. ===[[Self-interpreter]]=== Any text can go here. ==
03:46:36 <esolangs> [[Brainfucking]] M https://esolangs.org/w/index.php?diff=164066&oldid=164065 * None1 * (+0)
03:47:05 <esolangs> [[Brainfucking]] https://esolangs.org/w/index.php?diff=164067&oldid=164066 * None1 * (+28)
03:48:40 <esolangs> [[Joke language list]] https://esolangs.org/w/index.php?diff=164068&oldid=163039 * None1 * (+82) /* General languages */
03:49:01 <esolangs> [[Joke language list]] https://esolangs.org/w/index.php?diff=164069&oldid=164068 * None1 * (+0) /* General languages */
03:50:36 <esolangs> [[User:None1]] https://esolangs.org/w/index.php?diff=164070&oldid=163754 * None1 * (+82)
03:52:05 <esolangs> [[Permission denied]] https://esolangs.org/w/index.php?diff=164071&oldid=163991 * None1 * (+0) /* Example Programs */
03:53:45 <esolangs> [[Permission denied]] https://esolangs.org/w/index.php?diff=164072&oldid=164071 * None1 * (+45) /* Implementations */
03:56:29 -!- ais523 has quit (Quit: sorry about my connection).
04:03:38 <esolangs> [[Constellation Cradle]] N https://esolangs.org/w/index.php?oldid=164073 * RainbowDash * (+1630) stars and stuff i guess
04:05:51 <esolangs> [[Constellation Cradle]] https://esolangs.org/w/index.php?diff=164074&oldid=164073 * RainbowDash * (+142) credit
04:21:11 -!- ais523 has joined.
04:26:17 -!- ais523 has quit (Quit: quit).
06:06:51 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=164075&oldid=164056 * Ractangle * (+103) /* Server 2 */
06:17:14 -!- tromp has joined.
06:31:38 -!- Sgeo has quit (Read error: Connection reset by peer).
07:06:41 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
07:16:29 <esolangs> [[StupidStackLanguage]] https://esolangs.org/w/index.php?diff=164076&oldid=145296 * Lebster * (-1868) Rework interpreters
07:26:14 -!- Lord_of_Life has quit (Excess Flood).
07:27:12 -!- Lord_of_Life has joined.
07:44:34 <APic> Hi
07:59:36 -!- b_jonas has quit (Quit: leaving).
08:14:36 -!- chiselfuse has quit (Remote host closed the connection).
08:14:52 -!- chiselfuse has joined.
08:24:47 -!- tromp has joined.
09:08:46 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164077&oldid=164075 * Pifrited * (+40) /* Server 2 */
09:18:07 <esolangs> [[Permufuck]] https://esolangs.org/w/index.php?diff=164078&oldid=163927 * Pro465 * (+106) /* Cat program */ add smaller cat
09:51:47 <esolangs> [[Special:Log/newusers]] create * ClickUp * New user account
10:08:23 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=164079&oldid=164077 * C0ffee * (+13)
10:10:56 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164080&oldid=164079 * C0ffee * (+11)
10:12:25 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164081&oldid=164080 * C0ffee * (+33)
10:42:48 <esolangs> [[Permufuck]] M https://esolangs.org/w/index.php?diff=164082&oldid=164078 * Pro465 * (-106) /* Cat program */ Olus hasn't gotten got
10:56:38 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
11:26:10 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
11:38:49 -!- tromp has joined.
11:42:19 <esolangs> [[Special:Log/newusers]] create * Intiha420 * New user account
11:43:47 -!- Lord_of_Life has joined.
11:51:46 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:04:25 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164083&oldid=164081 * PrySigneToFry * (-14) Add to server 2/4/4.5
12:06:56 <esolangs> [[Wenyan]] https://esolangs.org/w/index.php?diff=164084&oldid=146226 * PrySigneToFry * (+150)
12:45:28 -!- Melvar has quit (Ping timeout: 256 seconds).
12:45:47 -!- tromp has joined.
12:58:17 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164085&oldid=164054 * PrySigneToFry * (+963) /* "Nope. derivatives" VS "Constant languages" */ new section
13:12:47 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164086&oldid=164085 * PrySigneToFry * (+105) /* "Nope. derivatives" VS "Constant languages" */
13:30:01 -!- Melvar has joined.
13:32:31 <esolangs> [[Merriment]] https://esolangs.org/w/index.php?diff=164087&oldid=163890 * AlephSquirrel * (+28) Add Turing complete category (I'm practically certain it is, but I don't have an explicit construction)
13:34:58 <esolangs> [[PureFun]] N https://esolangs.org/w/index.php?oldid=164088 * PrySigneToFry * (+3731) Created page with "PureFun is designed by PSTF, where everything are functions. It is based on [[Lambda calculus]]. = Core Principles = All values are functions: Booleans, numbers, pairs, and even control structures are defined as functions. Evaluation Strategy: Use lazy evaluati
13:36:11 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=164089&oldid=163965 * PrySigneToFry * (+14)
14:15:48 -!- Sgeo has joined.
14:31:25 <esolangs> [[Special:Log/newusers]] create * Ahineya * New user account
14:35:46 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=164090&oldid=164037 * Ahineya * (+204) /* Introductions */
14:36:06 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=164091&oldid=164090 * Ahineya * (-1) /* Introductions */
14:37:08 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
14:48:55 <esolangs> [[Special:Log/upload]] upload * PrySigneToFry * uploaded "[[File:Velato Hello, world! program in double sheets.png]]": This is the dual stave version of the program "Hello, world!" in Velato, created by PrySigneToFry on Musescore 3.
14:53:28 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=164093&oldid=164086 * Corbin * (+750) /* "Nope. derivatives" VS "Constant languages" */ Too little too late.
14:55:09 <esolangs> [[Talk:PureFun]] N https://esolangs.org/w/index.php?oldid=164094 * Corbin * (+126) Tastes like RLHF.
15:04:53 <korvo> I have lmarena.ai open in a tab and I'm feeding snippets of wiki to it. I promise that I'm not being nefarious; I want to understand what some of our younger non-Anglophone speakers are grasping, given that they appear to be heavily reliant on LLMs for translation and generation.
15:19:58 <esolangs> [[Merriment]] https://esolangs.org/w/index.php?diff=164095&oldid=164087 * AlephSquirrel * (+17) Add links to other languages
15:30:04 -!- tromp has joined.
15:34:06 <esolangs> [[Semi-serious language list]] https://esolangs.org/w/index.php?diff=164096&oldid=163791 * Ais523 * (+25) /* R */ +[[Reversible Bitfuck]] I think this is different enough from the original language to count (the programming style is somewhat different)
15:38:57 <korvo> Hm. I'm reading the old discussions about quines, particularly about quineless TC languages, and it feels like there's some incommensurability. Like, folks are aware of Kleene's fixed point, but not of its implications.
15:41:32 <korvo> My thinking is that the set of natural numbers N has the fixed-point property in a computable universe: all computable maps N → N have a fixed point, and moreover they're defined at that fixed point. The theorem is constructive and proceeds directly from the fact that a computable universe has enumerations for all objects, including internalized maps [N, N].
15:42:55 <korvo> So, if one wants to have a quineless TC language, then one must start by reckoning with how their language will handle natural numbers and codes. I suspect that they'll find that they didn't really have a computable universe; they aren't actually able to enumerate some specific sort of first-class object.
15:50:29 <korvo> I'm gonna work the example from https://wwwep.stewartsplace.org.uk/quines/quineless.html which is attributed to ais523. Consider the language that is the union of Iota and question-mark-prefixed strings like "?asdf", but without the empty string. The attached semantics: if question-marked, emit the string; otherwise, reduce the string as an Iota program.
15:50:30 <int-e> I thought the typical quine-less TC language just picked program and output encodings that are disjoint
15:51:32 <korvo> This language has semidecidable output! Just check whether the first bits are "?". So calling it "quineless TC" is a little unfair. It's TC in the sense that Iota is TC: interpreted as Iota, it's undecidable whether a program has a normal form under reductions.
15:53:58 <int-e> (and you can combine that with ais523's idea for adding arbitrary output capability)
15:55:20 <korvo> I guess, but I don't see how those can be usefully interleaved.
15:57:20 <int-e> take a language whose programs are non-empty strings over {0,1}, and whose outputs are strings over {a,b}; that's quine-less but can easily be TC. Add question-mark-followed-by-string-over {?,0,1,a,b} to make it "output-complete".
15:57:33 <korvo> Like, I don't see how a clever encoding gets around the pipeline of TC-ness => Kleene's recursion => Rogers' fixed point => Gödel's diagonal lemma => Turing bird => self-application => WLOG access to own source code => quine.
15:58:29 <int-e> The last step, "access to own source code => quine", runs into the output restriction.
15:58:56 <int-e> I think the rest works, because you can pick suitable encodings for everything.
16:00:38 <int-e> (IIUC ais523 takes this to its extreme by having a TC fragment that has no output at all)
16:00:40 <korvo> Okay, then I think that the concept as documented is incoherent, or at least "evil" (varying under isomorphisms).
16:01:49 <korvo> To me, a quine is an instance of Quine's construction, where "is preceded by some quoted text" is preceded by some quoted text. It's a natural consequence of the existence of Turing birds, themselves ensured by the diagonal lemma.
16:03:00 <korvo> Like, category-theoretically I cannot be stopped from reading "a language whose programs are non-empty strings over 2 and whose outputs are strings over 2"; in FinSet (or Set!) there's no way to tell the difference between two-element sets, so there's no way to use labeling to artificially separate the domain and codomain.
16:09:54 <int-e> In the final step of your quine recipe, you have to be able to take a quotation and output its contents. And that's easy to subvert if you're willing to cripple the language's output capabilities.
16:10:54 <int-e> informally, you want to be able to print an arbitrary string that your program computed
16:11:07 <int-e> (assuming your programs are strings)
16:12:08 <int-e> And lacking that capability feels rather artificial... especially if the sole reason you're doing that is to prevent quines.
16:12:40 -!- zemhill has quit (Server closed connection).
16:12:50 -!- zemhill has joined.
16:13:11 <int-e> You can do more silly things... like, the interpreter can track program and output and the moment the output matches the program, append a multi-ocular o.
16:13:40 <korvo> It also contradicts the spirit of the concept, as introduced and explained by Hofstadter. I popped open GEB. He has an entire dialogue on the topic of Quine's construction where he focuses on use-mention. He talks about programming ergonomics but only to note that a language can make it *easier* to write a quine, not harder or impossible.
16:13:48 <int-e> Which also prevents quines, though it almost certainly won't prevent you from printing a program that's equivalent to the original program.
16:14:25 <int-e> (Not without giving the interpreter super-computable powers)
16:15:15 <korvo> His main goal was DNA, a non-output barely-language! p531: "There is a biochemical analogue to the use-mention dichotomy: when DNA is treated as a mere sequence of chemicals to be copied, it is like mention of typographical symbols; when DNA is dictating what operations shall be carried out, it is like use of typographical symbols."
16:16:59 <korvo> p530: "It is not by any means coincidental that the phrases 'sufficiently strong support system' and 'sufficiently powerful formal system' sound alike. One is the precondition for a self-rep to arise, the other for a self-ref to arise. In fact there is in essence only one phenomenon going on in two very different guises..."
16:20:14 <korvo> p449, mapping between truthiness and provability: "preceding a predicate by itself, in quotes ('quining')" <=> "substituting the Gödel number of an open formula into the formula itself ('arithmoquining')"
16:23:55 <korvo> p499, anticipating Muriel and ais523 somewhat: "In some computer language it might be a convention that nay program whose first symbol is an asterisk is to be copied before being executed normally. Then the program consisting of merely one asterisk is a self-rep! ...It is almost cheating to use the phrase 'this sentence' to achieve self-reference — it relies too much on the processor, and not enough on explicit directions for self-reference."
16:25:00 <korvo> "Using an asterisk as an example of a self-rep is like using the word 'I' as an example of a self-ref: both conceal all the interesting aspects of their respective problems. ... Before we call something a self-rep, we want to have the feeling that, to the maximum extent possible, it *explicitly* contains the directions for copying itself."
16:27:57 <korvo> On p499 Hofstadter says that what we call quines, he calls "self-reproducing object[s]" or "self-rep[s]". Quining can build a self-rep in a sufficiently-strong system, but other self-reps are possible too.
16:28:46 <korvo> int-e: This isn't to yell at you, but to suggest that we've culturally misunderstood Hofstadter's definition and examples.
16:30:55 <int-e> . o O ( Hehe, an author being misunderstood? Get in line... )
16:32:54 <int-e> korvo: one way to get around output restrictions, btw, is to change the interface: rather than "asking" the program to print is own source code, ask it to answer computable queries about its source code.
16:36:14 <int-e> (Though you need input capabilities for this. But we're far more used to dealing with encodings on that side.)
16:36:39 <korvo> I'm not sure I see much of a difference there. I'm still puzzled about output because the traditional formalisms I've listed on [[computable]] (lambda calculus, Diophantine equations, Turing machines, computable universes) don't have any notion of output. I'm not sure what I/O has to do with the story.
16:38:00 <int-e> Well, TMs do have output conventions. (At least two, a dedicated output tape, or the final state of the tape when the program terminates.)
16:38:56 <int-e> But anyway, output enters the picture because otherwise you have no mechanism for replication.
16:39:06 * int-e shrugs
16:40:12 <korvo> Quining isn't about replication, but about quoting and self-reference. Self-reps can be generated by quining in sufficiently strong systems; that's the extent of the relationship between them.
16:41:08 <int-e> But the programming term "quine" has become to mean a program that prints its own source code and that requires output. I'm working backwards from that.
16:41:16 <korvo> I suppose that this is merely yet another case of programmers ignoring computer science.
16:42:34 <int-e> I just don't think it's a big deal.
16:44:36 <korvo> It's not globally a big deal, no. I do think that the whole "quineless TC" meme is a good example of programmer hubris. I also think that there are global issues that fundamentally arise from programmer hubris. But it's not worth editing the page.
16:46:48 <korvo> Similarly, although it's not a big deal, TMs *don't* have output. TMs generalize pen-and-paper work, and there's no notion of output there. We have grown used to a particular fancy machine that Turing did not describe, and we justify ourselves because we can craft an output by summarizing the tape, or craft an input by preparing the tape, etc.
16:48:09 <int-e> Let me guess, when you say "TM" you insist on using Turing's original paper as the sole defintion, and exclude all the other flavors that people tend to use, some of which do have output.
16:48:39 <korvo> It's the same sort of imprecision as saying that a language has semantics. Nope! A language has syntax: letters, grammar, etc. We typically *equip* a language with a chosen semantics and want all operations to be semantics-preserving. This is the difference between a standard category and a slice category.
16:49:21 <korvo> When it matters, yes, I'd like to use *exactly* the same abstracta as other mathematicians.
16:49:22 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
16:49:56 <int-e> Mathematicians can't even agree on whether 0 is a natural number.
16:51:19 <korvo> 0 is an element of the initial semiring, regardless of whether people say "natural number" or "whole number". I mean, I could literally analogize this with a functor: programmers can't even agree on whether the always-failing regex is a legal regex.
16:55:45 -!- tromp has joined.
17:23:35 -!- b_jonas has joined.
17:25:27 <APic> cu
17:31:12 -!- ais523 has joined.
17:33:52 <ais523> fwiw, I always understood the "TC languages have a quine" rule as "any TC language is able to compute a representation of its own source code and perform arbitrary operations on it that the language allows" – but there is no requirement that the language is actually capable of outputting arbitrary strings, so it might not be able to output the source code even though it can compute it
17:37:12 <ais523> but this conversation has got me thinking about alternative formulations – some suggestions (above and on linked pages) more or less collapse to "any programming language that you can compile brainfuck into has a quine" and I think that may be correct
17:37:45 <ais523> and it may be correct even with BF-without-, (i.e. output only, no input)
17:39:02 <ais523> it feels like there should be a diagonal argument here
17:39:36 <ais523> (but the existence of the BF-to-language-X compiler is important as that compiler itself – i.e. its source code – is one of the inputs to the diagonalisation proof)
17:42:35 <int-e> ais523: You can do basically everything in Brainfuck for this: Write the compiler in Brainfuck, use quining so that it runs on itself as input. The other language just becomes an intermediate representation for a Brainfuck interpreter.
17:42:46 <ais523> OK, yes, this is an easy argument: suppose you have a compiler from BF-without-input to language X, written in BF; you can write a BF program that starts by creating data structures containing the compiler's source code and (using standard quine tricks) its own source code, then uses a BF self-interpreter to run the compiler on its own source code, then prints the output
17:42:56 <ais523> right, we had the same idea I think
17:43:09 <ais523> the BF-to-language-X compiler must produce a quine when written on that program, if it didn't it would be incorrect
17:43:16 <ais523> * when run on that program
17:44:22 <int-e> There's that multi-language "Ouroboros" quine; that's related.
17:44:25 <ais523> interestingly, this argument seems to only work because BF is deterministic
17:45:29 <int-e> https://esoteric.codes/blog/the-128-language-quine-relay -- oh 7 years old already
17:45:42 <ais523> ah, it still works as long as the compiler is guaranteed to produce output that is a correct implementation, even if it doesn't always produce the same output
17:46:23 <ais523> int-e: I find that uninteresting because it doesn't require any actual logic in most of the languages – you can use one language that contains 128 compilers from outputs to programs that print a constant string
17:46:34 <ais523> and only have to do the quining logic once, in that language
17:47:24 <ais523> normally, to avoid this problem, a multilanguage quine is defined to be a program that takes a language name or identifier as input, and outputs itself translated into the given language
17:48:11 <int-e> True; it's degenerate in that for many language you don't actually have a compiler, just something that can print arbitrary strings.
17:48:42 <ais523> right, only one of the languages even needs to be TC
17:48:59 <ais523> you can relay through Deadfish if you like (especially if the next language in the chain has a syntax that's a list of numbers)
17:51:11 <int-e> It's a bit more interesting if you optimize for size.
17:51:14 <int-e> > fix show
17:51:15 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\...
17:52:08 <ais523> I've seen some quine relays optimised for size, unless you're very careful with proper quine rules they normally end up as literals that print themselves
17:52:27 <ais523> like, program A is "1\n" which prints "1" in language A, program B is "1" which prints "1\n" in language B
17:52:47 <ais523> and I don't think there was ever a consensus about what specificially it is that makes a quine into a proper quine
17:53:48 <ais523> come to think of it, with error quines you can probably create a really big quine relay through thousands of languages that has distinct source code in all of them and reaches its starting point, but none of the programs do any interesting computation
17:56:05 <ais523> I guess the "payload-capable" definition would help a lot (i.e. you can insert (an encoding of) an arbitrary string into the quine and it survives around the whole loop), and is probably objectively definable
17:58:39 <int-e> I also imagined that we'd fix a set of languages to use. Or maybe the full cycle (with order). Like, that 128 languages quine-relay thing feels non-artificial in that it includes a ton of mainstream languages and goes through them in lexicographic order. I don't know whether candidate languages were specifically rejected for being too unwieldy of course.
17:59:25 <int-e> Heh, one of them is Piet.
18:01:02 <int-e> You'll still cover the majority of languages with just string encoding of course, and pick the more expressive ones to actually do more elaborate recoding of everything.
18:04:20 -!- ais523 has quit (Quit: quit).
18:05:28 <korvo> To bridge between "is deterministic" and "is guaranteed to produce output that is a correct implementation", note that quining has some sort of quotation, and the contents of a quote have to be mentioned literally. It's the same use-mention quirk as with first-class and second-class syntactic constructs in general.
18:35:39 <esolangs> [[Topple/Source Code]] https://esolangs.org/w/index.php?diff=164097&oldid=164020 * H33T33 * (+589)
18:36:53 <esolangs> [[Topple/Source Code]] M https://esolangs.org/w/index.php?diff=164098&oldid=164097 * H33T33 * (+89)
18:37:09 <esolangs> [[Topple/Source Code]] M https://esolangs.org/w/index.php?diff=164099&oldid=164098 * H33T33 * (+0)
18:46:57 -!- plutoasc333 has joined.
18:49:43 -!- plutoasc333 has quit (Client Quit).
18:49:56 -!- plutoasc333 has joined.
19:09:35 -!- xelxebar has quit (Server closed connection).
19:09:56 -!- xelxebar has joined.
19:16:29 -!- plutoasc333 has quit (Ping timeout: 250 seconds).
19:17:35 <esolangs> [[FP trivia]] https://esolangs.org/w/index.php?diff=164100&oldid=102420 * Fpstefan * (-11) /* Program Combinators are used in Infix Notation */
19:20:58 -!- plutoasc333 has joined.
19:23:52 -!- plutoasc333 has quit (Client Quit).
19:24:03 -!- plutoasc333 has joined.
19:25:07 -!- plutoasc333 has quit (Client Quit).
19:26:10 -!- plutoasc333 has joined.
19:37:49 -!- plutoasc333 has quit (Quit: Client closed).
19:42:33 <esolangs> [[Game:Esochain]] M https://esolangs.org/w/index.php?diff=164101&oldid=164083 * Ractangle * (+15) /* revreS 1 */
20:40:41 -!- joast has quit (Quit: Leaving.).
20:49:27 <esolangs> [[User:Tommyaweosme/deadfish programs generated with the genetic algorithm]] N https://esolangs.org/w/index.php?oldid=164102 * Tommyaweosme * (+143) Created page with "== 5-length programs == 6: isiso 8: issso == 9-length programs == 29: isisissio 32: isssssdio 65: issssssio 80: iisisssso 128: iisssssso"
20:50:29 <esolangs> [[User:Tommyaweosme/deadfish programs generated with the genetic algorithm]] https://esolangs.org/w/index.php?diff=164103&oldid=164102 * Tommyaweosme * (+15) /* 9-length programs */
21:09:07 -!- ais523 has joined.
21:23:34 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:11:35 -!- Pixton has joined.
22:12:44 -!- Pixton has quit (Client Quit).
22:21:34 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164104&oldid=164101 * WarzokERNST135 * (+16) /* Server 7 */
22:21:52 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164105&oldid=164104 * WarzokERNST135 * (+13) /* Server 5 */
22:24:04 <esolangs> [[Game:Esochain]] https://esolangs.org/w/index.php?diff=164106&oldid=164105 * WarzokERNST135 * (+13) /* Server 4 */
23:40:11 <esolangs> [[While true (cat)]] https://esolangs.org/w/index.php?diff=164107&oldid=147183 * Hotcrystal0 * (+14) lowercase
23:51:31 <esolangs> [[User:PrySigneToFry/Silicon dioxide in a polypropylene box/Chess between HCr0 and PSTF]] https://esolangs.org/w/index.php?diff=164108&oldid=163463 * Hotcrystal0 * (+56)
2025-08-29
00:34:23 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=164109&oldid=164063 * Hotcrystal0 * (+140)
00:34:33 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=164110&oldid=164109 * Hotcrystal0 * (+6)
00:34:44 <esolangs> [[User:Hotcrystal0/Sandbox/OotT ideas]] https://esolangs.org/w/index.php?diff=164111&oldid=164110 * Hotcrystal0 * (+0)
01:14:20 -!- joast has joined.
01:31:59 <esolangs> [[Brainfuck/Esointerpreters]] https://esolangs.org/w/index.php?diff=164112&oldid=150416 * None1 * (+30) /* Cheating */
01:39:18 <esolangs> [[User:PrySigneToFry/Silicon dioxide in a polypropylene box/Chess between HCr0 and PSTF]] https://esolangs.org/w/index.php?diff=164113&oldid=164108 * PrySigneToFry * (+122)
01:40:28 <esolangs> [[PureFun]] https://esolangs.org/w/index.php?diff=164114&oldid=164088 * PrySigneToFry * (+47)
01:50:43 -!- bongino has joined.
01:51:11 -!- bongino has quit (Client Quit).
01:51:29 -!- bongino has joined.
02:07:25 -!- chloetax has quit (Quit: Leaving).
02:07:53 -!- chloetax has joined.
03:20:45 <esolangs> [[Talk:PureFun]] https://esolangs.org/w/index.php?diff=164115&oldid=164094 * PrySigneToFry * (+218)
03:21:06 <esolangs> [[Talk:PureFun]] https://esolangs.org/w/index.php?diff=164116&oldid=164115 * PrySigneToFry * (+13)
03:22:14 <esolangs> [[Machine-language]] https://esolangs.org/w/index.php?diff=164117&oldid=163995 * PrySigneToFry * (+24)
03:25:18 <esolangs> [[Anti-myself language]] M https://esolangs.org/w/index.php?diff=164118&oldid=142412 * PrySigneToFry * (+49)
03:35:48 <esolangs> [[Constant language]] https://esolangs.org/w/index.php?diff=164119&oldid=164055 * PrySigneToFry * (+103)
03:38:14 <esolangs> [[lang without Quine]] https://esolangs.org/w/index.php?diff=164120&oldid=163971 * PrySigneToFry * (+798)
03:39:41 <esolangs> [[ZeroDivisionError: Division by 0]] https://esolangs.org/w/index.php?diff=164121&oldid=137966 * PrySigneToFry * (+20)
03:46:03 <esolangs> [[Rebellent Brainfuck]] https://esolangs.org/w/index.php?diff=164122&oldid=114999 * PrySigneToFry * (+137)
03:55:34 <esolangs> [[Translated SLet/3/Hotcrystal0 3rd time]] M https://esolangs.org/w/index.php?diff=164123&oldid=163246 * PrySigneToFry * (+7)
04:23:34 -!- bongino has quit (Ping timeout: 260 seconds).
To update automatically, stalker mode requires a reasonably modern browser with scripts enabled. If this message does not disappear, it's either because of that or a bug. Feel free to get in touch on channel for debugging. Or just work around the issue by manually reloading.