←2025-08-26 2025-08-27 2025-08-28→ ↑2025 ↑all
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-26 2025-08-27 2025-08-28→ ↑2025 ↑all