00:13:50 -!- yc has quit (Remote host closed the connection). 00:14:11 -!- yc has joined. 00:23:01 [[Turing tarpit]] https://esolangs.org/w/index.php?diff=169353&oldid=169332 * Corbin * (-412) /* Survey */ Remove languages which aren't TC or unimplemented; we're only interested in TC languages that can be implemented. Unknown class is fine as long as the language isn't likely to trivialize. 00:27:54 [[Talk:Turing complete regex]] N https://esolangs.org/w/index.php?oldid=169354 * Corbin * (+180) Might not be AI-generated. Want to explain? 00:45:39 -!- yc has quit (Remote host closed the connection). 00:46:02 -!- yc has joined. 00:52:58 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement). 01:01:35 [[Brainyay]] https://esolangs.org/w/index.php?diff=169355&oldid=169194 * PhiPhiPHipHi2.0 * (+209) 01:05:58 [[Nand1]] N https://esolangs.org/w/index.php?oldid=169356 * CraftyBLUE * (+5516) Created page with "{{infobox proglang |name=Nand1 |paradigms=imperative |author=[[User:craftyBLUE]] |year=[[:Category:2025|2025]] |class=[[:Category:Turing complete|Turing complete]] |majorimpl=[https://github.com/craftyBLUE/Nand1 Original] |files=.nand1 }} Nand1 is a progr 01:20:39 [[Brainyay]] https://esolangs.org/w/index.php?diff=169357&oldid=169355 * PhiPhiPHipHi2.0 * (+81) 01:33:18 -!- Sgeo has quit (Read error: Connection reset by peer). 02:06:16 -!- pool has joined. 02:30:28 -!- Sgeo has joined. 02:48:47 [[Tea]] N https://esolangs.org/w/index.php?oldid=169358 * Waffelz * (+6567) Created page with "{{infobox proglang |name=Tea |paradigms=Imperative |author=[[User:waffelz]] |year=[[:Category:2025|2025]] |memsys=[[:Category:Stack-based|Stack-based]] |refimpl=See [[#External resources|[1]]] |class=[[:Category:Unknown computational class|Unknow 03:24:59 -!- ais523 has quit (Ping timeout: 260 seconds). 03:25:30 -!- ais523 has joined. 04:44:13 -!- ais523 has quit (Quit: quit). 05:06:39 [[Tea]] https://esolangs.org/w/index.php?diff=169359&oldid=169358 * Yayimhere2(school) * (+543) /* Examples */ BF to tea translation 05:07:08 [[Tea]] https://esolangs.org/w/index.php?diff=169360&oldid=169359 * Yayimhere2(school) * (+34) /* Computational class */ fix the template thing 05:08:23 [[Tea]] https://esolangs.org/w/index.php?diff=169361&oldid=169360 * Yayimhere2(school) * (-12) /* External resources */ 05:09:25 [[Tea]] https://esolangs.org/w/index.php?diff=169362&oldid=169361 * Yayimhere2(school) * (+1) /* Computational class */ 06:11:50 -!- chomwitt has joined. 06:16:45 [[Tea]] https://esolangs.org/w/index.php?diff=169363&oldid=169362 * Yayimhere2(school) * (-33) /* Computational class */ proof credit is dumb, actually(IMO) 06:18:38 [[User talk:Waffelz]] https://esolangs.org/w/index.php?diff=169364&oldid=166188 * Yayimhere2(school) * (+215) 06:20:41 [[Talk:81]] N https://esolangs.org/w/index.php?oldid=169365 * Yayimhere2(school) * (+154) Created page with "Proof of turing completeness? were? --~~~~" 06:22:01 [[81]] https://esolangs.org/w/index.php?diff=169366&oldid=169351 * Yayimhere2(school) * (+3) 06:22:49 [[Talk:8]] N https://esolangs.org/w/index.php?oldid=169367 * Yayimhere2(school) * (+153) Created page with "where's the proof its TC though??? --~~~~" 06:27:06 [[Nand1]] https://esolangs.org/w/index.php?diff=169368&oldid=169356 * Yayimhere2(school) * (+3) /* Program flow */ spaces dont work in the sections. also add newline 07:50:54 [[Tea]] https://esolangs.org/w/index.php?diff=169369&oldid=169363 * Yayimhere2(school) * (-24) 07:56:27 -!- tromp has joined. 08:21:22 [[Fluid]] N https://esolangs.org/w/index.php?oldid=169370 * Yayimhere2(school) * (+1271) Created page with "'''Fluid''' is an [[esolang]] devised by [[User:Yayimhere]], in a few minutes, after reading the esolang article on [[BIX Queue Subset|BIX Queue Subset's]]. It is the BIX queue subset cfda ctda d. Note that the c is skipped if not in i 08:21:28 [[Fluid]] https://esolangs.org/w/index.php?diff=169371&oldid=169370 * Yayimhere2(school) * (+1) /* A non BIX definition */ 08:32:37 [[User:Yayimhere]] https://esolangs.org/w/index.php?diff=169372&oldid=169281 * Yayimhere2(school) * (+11) /* esolangs */ 08:49:30 [[Fluid]] https://esolangs.org/w/index.php?diff=169373&oldid=169371 * Yayimhere2(school) * (+451) 08:53:19 [[Fluid]] https://esolangs.org/w/index.php?diff=169374&oldid=169373 * Yayimhere2(school) * (+79) /* A non BIX definition */ 09:15:11 -!- b_jonas has quit (Quit: leaving). 09:34:25 [[Guh]] M https://esolangs.org/w/index.php?diff=169375&oldid=169339 * Ractangle * (+28) 09:49:24 [[8ial]] M https://esolangs.org/w/index.php?diff=169376&oldid=169085 * Ractangle * (+4) /* Interpreter */ 10:07:35 -!- svm has quit (Remote host closed the connection). 10:08:23 [[Fluid]] https://esolangs.org/w/index.php?diff=169377&oldid=169374 * Yayimhere2(school) * (+7) /* A non BIX definition */ 10:11:41 Hi 10:50:50 [[BIX Queue Subset]] https://esolangs.org/w/index.php?diff=169378&oldid=150196 * Yayimhere2(school) * (+11) /* See also */ add [[Fluid]] since its also a subset 10:57:52 [[Distressed]] https://esolangs.org/w/index.php?diff=169379&oldid=168417 * Yayimhere2(school) * (+5) /* Syntax */ 10:59:32 [[Stroke]] https://esolangs.org/w/index.php?diff=169380&oldid=135521 * Yayimhere2(school) * (+21) add distressed as a "bigger brother" 11:21:04 [[Intermediate language]] https://esolangs.org/w/index.php?diff=169381&oldid=148687 * Yayimhere2(school) * (+181) /* Some examples in alphabetical order */ add gotostart 11:32:18 -!- Sgeo has quit (Read error: Connection reset by peer). 11:45:37 [[Bitwise Cyclic Tack]] M https://esolangs.org/w/index.php?diff=169382&oldid=169242 * None1 * (-22) /* Computational class */ It's a PDA 11:45:38 [[Homunculus fallacy]] https://esolangs.org/w/index.php?diff=169383&oldid=168423 * Yayimhere2(school) * (+21) /* Commands */ 11:46:04 [[Homunculus fallacy]] https://esolangs.org/w/index.php?diff=169384&oldid=169383 * Yayimhere2(school) * (+47) /* Commands */ 11:46:48 [[Bitwise Cyclic Tack]] https://esolangs.org/w/index.php?diff=169385&oldid=169382 * None1 * (+45) 11:47:14 [[Bitwise Cyclic Tag]] M https://esolangs.org/w/index.php?diff=169386&oldid=169296 * None1 * (+46) 11:48:43 [[Q U I N E]] M https://esolangs.org/w/index.php?diff=169387&oldid=169244 * None1 * (+1) /* Quine */ 11:51:06 [[3 Bits, 1.5 Bytes]] https://esolangs.org/w/index.php?diff=169388&oldid=139581 * PrySigneToFry * (+66) 12:14:53 [[EternalGolf]] https://esolangs.org/w/index.php?diff=169389&oldid=167161 * None1 * (+31) /* Built-in constants */ 12:15:36 [[User:Hammy/Template:ASCII]] N https://esolangs.org/w/index.php?oldid=169390 * Hammy * (+4453) Created page with "{| class="wikitable sortable" |- ! Binary !! Decimal !! Hexadecimal !! Character |- | 0000000 || 0 || 00 || '''NULL''' |- | 0000001 || 1 || 01 || Start of Heading |- | 0000010 || 2 || 02 || Start of Text |- | 0000011 || 3 || 03 || End of Text |- | 000010 12:16:41 [[EternalGolf]] https://esolangs.org/w/index.php?diff=169391&oldid=169389 * None1 * (+44) Add cheating quine and fix som formatting 12:16:48 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 12:19:01 [[Oddjump]] N https://esolangs.org/w/index.php?oldid=169392 * None1 * (+1850) Add Oddjump esolang 12:22:26 [[OISC]] https://esolangs.org/w/index.php?diff=169393&oldid=160861 * None1 * (+111) /* List of OISCs */ 12:34:34 [[Language list]] https://esolangs.org/w/index.php?diff=169394&oldid=169348 * None1 * (+14) /* O */ 12:35:09 [[User:None1]] https://esolangs.org/w/index.php?diff=169395&oldid=169241 * None1 * (+89) /* My Esolangs */ 12:44:18 [[User:Hammy/Learn BF]] N https://esolangs.org/w/index.php?oldid=169396 * Hammy * (+1347) Created page with "{{WIP}} welcome! this page will teach you about bf in simple steps :D {| class="wikitable" |- | style="background-color:red;color:white" | Note: This is a work in progress, so maybe come back later and there will be new stuff. Hopefully? |} ==Lesson 1: Cells 12:55:48 [[Special:Log/upload]] upload * JIT * uploaded "[[File:Nothing-suspicious.png]]": ...nothing suspicious at all... 13:04:52 [[Special:Log/upload]] upload * Hammy * uploaded "[[File:RubiksCubeExtended-Cat.png]]" 13:05:23 [[Rubik's Cube extended]] N https://esolangs.org/w/index.php?oldid=169399 * Hammy * (+684) Created page with "Rubik's Cube Extended (shortened to RCE for the rest of the article) is by [[User:Hammy]] and is an extension of [[Rubik's Cube]] ==Commands== RCE uses a different commmand set to [[Rubik's Cube]].
 L increments cell  L' decrements cell  R goes to the ne
13:06:15 -!- tromp has joined.
13:10:22  [[Brainsteg]] N https://esolangs.org/w/index.php?oldid=169400 * JIT * (+1365) Created page with "Brainsteg is an esolang by [[User:JIT]], 2025  ''"What if [[StegFuck]] was a bit better in [[Steganography]]?"''  : -[[User:JIT]], 2025  it does it on all last channels on the least significant bit {| class="wikitable" |+ yaaaay |- ! action !! what it does |- | same bit a
13:11:08  [[Language list]]  https://esolangs.org/w/index.php?diff=169401&oldid=169394 * JIT * (+16) 
13:14:39 -!- chomwitt has quit (Read error: Connection reset by peer).
13:14:59 -!- chomwitt has joined.
13:23:33 -!- chomwitt_alt has joined.
13:24:24 -!- chomwitt has quit (Ping timeout: 252 seconds).
13:30:49 -!- Lord_of_Life has joined.
13:43:21  [[Language list]]  https://esolangs.org/w/index.php?diff=169402&oldid=169401 * Yayimhere2(school) * (+12) /* F */
13:48:12  [[Fluid]]  https://esolangs.org/w/index.php?diff=169403&oldid=169377 * Yayimhere2(school) * (+895) /* A non BIX definition */
13:50:12  [[Fluid]]  https://esolangs.org/w/index.php?diff=169404&oldid=169403 * Yayimhere2(school) * (-465) /* A non BIX definition */
13:51:18  [[Language list]]  https://esolangs.org/w/index.php?diff=169405&oldid=169402 * CraftyBLUE * (+12) added Nand1
14:05:43  [[Brainsteg]] M https://esolangs.org/w/index.php?diff=169406&oldid=169400 * JIT * (+1) oops
14:07:00  [[DerpScrp]] M https://esolangs.org/w/index.php?diff=169407&oldid=166213 * Kaveh Yousefi * (+0) Meliorated an instance of cacography by exchanging extention for the correct extension.
14:14:49  [[Fluid]]  https://esolangs.org/w/index.php?diff=169408&oldid=169404 * Yayimhere2(school) * (+71) /* Implementations */
14:16:51 -!- Yayimhere has joined.
14:16:59  hello!
14:21:18  [[Brainfucker]]  https://esolangs.org/w/index.php?diff=169409&oldid=135241 * JIT * (+9) 
14:25:24  [[Selfermodif]]  https://esolangs.org/w/index.php?diff=169410&oldid=130441 * JIT * (+23) 
14:25:45  [[ByteByteIfJump]]  https://esolangs.org/w/index.php?diff=169411&oldid=168963 * Timm * (+40) 
14:27:39  [[ByteByteIfJump]]  https://esolangs.org/w/index.php?diff=169412&oldid=169411 * Timm * (+50) 
14:31:02  [[Cat do end]] N https://esolangs.org/w/index.php?oldid=169413 * Timm * (+829) Created page with " CatDo: name of cat  start the cat all code executes in cats   :End  stop the cat can new run ex:   CatDo: fur  :End  CatDo: fur  :End  same cat same remember   meu|text|  prints text   cat = 42  cat remember 42   c.name  get memory from other cats   c.name = 42  cat nam
14:31:14  [[ByteByteIfJump]] M https://esolangs.org/w/index.php?diff=169414&oldid=169412 * JIT * (-21) fixed
14:31:55  [[User:Timm]]  https://esolangs.org/w/index.php?diff=169415&oldid=168973 * Timm * (+26) 
14:33:05  [[Selfermodif]]  https://esolangs.org/w/index.php?diff=169416&oldid=169410 * Yayimhere2(school) * (+9) add stub
14:33:27  [[Cat do end]]  https://esolangs.org/w/index.php?diff=169417&oldid=169413 * Timm * (-5) 
14:34:38  [[Nand1]]  https://esolangs.org/w/index.php?diff=169418&oldid=169368 * CraftyBLUE * (-1) fixed critical typo: "Input byte" was spelled as "Output byte"
14:37:23  [[NoQuinebrainfuck]]  https://esolangs.org/w/index.php?diff=169419&oldid=164010 * JIT * (+13) 
14:58:13 -!- Yayimhere has quit (Ping timeout: 250 seconds).
15:12:57 -!- Yayimhere has joined.
15:19:27 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:40:04 -!- Yayimhere has quit (Quit: Client closed).
15:47:36 -!- tromp has joined.
15:48:49  [[Dipsh!t]]  https://esolangs.org/w/index.php?diff=169420&oldid=169275 * HeckYeah100 * (+57) 
15:49:46  [[Non]] M https://esolangs.org/w/index.php?diff=169421&oldid=169252 * HeckYeah100 * (+26) 
15:50:00  [[Non]]  https://esolangs.org/w/index.php?diff=169422&oldid=169421 * HeckYeah100 * (+1) 
15:50:46  [[Non]]  https://esolangs.org/w/index.php?diff=169423&oldid=169422 * HeckYeah100 * (-3386) 
15:53:31  [[Non]] M https://esolangs.org/w/index.php?diff=169424&oldid=169423 * HeckYeah100 * (+104) 
16:40:31  [[Main Page]]  https://esolangs.org/w/index.php?diff=169425&oldid=168605 * Jay * (+5) 
16:40:48  [[Main Page]]  https://esolangs.org/w/index.php?diff=169426&oldid=169425 * Jay * (-5) 
16:57:20  [[Main Page]]  https://esolangs.org/w/index.php?diff=169427&oldid=169426 * Corbin * (-156) Clean up some lingering vandalism.
17:01:10 -!- ais523 has joined.
17:23:28  [[Talk:FlipJump]] N https://esolangs.org/w/index.php?oldid=169428 * Yayimhere2(school) * (+214) Created page with "It cant do *every* computation, since its a bounded memory machine, so its not turing complete. --~~~~"
17:29:23  I see that Yay has discovered the classic question, "Is C Turing-complete?"
17:30:08  korvo: I believe the answer is "yes because the standard doesn't inherently place limits on the length of a file"
17:31:00  ais523: I think so. Or yes via unbounded stack, perhaps.
17:31:36  so the problem when using unbounded stack to try to prove C TC is that the only way to refer to deeper stack frames is by pointer
17:32:11  and It's not immediately obvious that C doesn't limit how many different pointers can exist simultaneously in a program
17:32:44  I think, because intptr_t is optional, it may be strictly conforming to have a C implementation that does in fact allow infinitely many different pointers
17:34:04  Rust has slightly more guarantees, which leads to fun bugs like this: https://github.com/rust-lang/rust/issues/130388
17:35:33  that leads to the other classic question, "does C guarantee Liskov substitutability for numerically equal pointers"; CHERI says no
17:35:53  (tl;dr: you can convert a pointer's address to an integer, then compare it to every possible integer, and get a mismatch on all the comparisons)
17:36:29  sorear: I think the consensus at this point is no – the standard doesn't require it and the C standards body has mostly been convinced to use an address-exposure provenance model
17:37:15  intptr_t is optional but in a non-provenance world you can memcpy pointers, with memcpy being defined as operating on unsigned char[n[
17:37:15  the situation with some C compilers is more complex, LLVM doesn't even guarantee substitution of numerically equal *integers* in some cases where they were derived from pointer addresses
17:37:45  which at least the Rust people consider a bug
17:37:52  * substitutability
17:39:01  fwiw, I think there's an increasing consensus along the lines of "whatever memcpy does to copy arbitrary memory around, it isn't using pure integers, and the "unsigned char" that's capable of aliasing any type therefore isn't a pure integer type"
17:39:23  C++ and Rust have both added types to represent a memory byte that has possible provenance (std::byte and MaybeUninit respectively)
17:40:02  ais523: We can also refer to older stack using recurrence. I don't think we have to be fancy about it; it's enough to show that it's undecidable whether a C program halts, and a program can always spend infinite time recursing.
17:40:25  korvo: how does that get you Turing-completeness rather than just a PDA?
17:40:30  Does this mean that memcpy/memmove necessarily has semantics beyond a loop copying std::bytes one at a time?
17:40:45  ais523: I assert that we can emulate any Turing machine in C. Hopefully that's not a tough sell.
17:41:06  [[Needle]]  https://esolangs.org/w/index.php?diff=169429&oldid=163625 * ChuckEsoteric08 * (+184) /* Computational class */  Added translation for halting
17:41:29  OK, so Rust's view of this (which I disagree with) is that the provenance of a pointer is somehow attached to the individual bytes of it, if you use the same bytes in the same order (and copy them with only provenance-aware operations) you will get the same pointer back with the same provenance, if you rearrange the bytes or combine bytes from different pointers you have no useful provenance
17:41:47  (that was a reply to sorear)
17:41:49  personally I don't feel the need to distinguish between Turing-complete and EXPSPACE-complete for practical purposes
17:42:18  ais523: Or, more aggressively, I assert that we can encode a Diophantine search using structural recursion only. I think that folks get caught up on the idea that an infinite TM tape has to correspond to some specific C data structure in memory.
17:43:10  korvo: doesn't that require an unlimitedly large "heap" (specifically, "area from which the memory allocation functions allocate", doesn't have to be an actual heap) to exist?
17:43:28  otherwise you can't create the structures to recurse over
17:43:45  structures or arbitrarily large integers?
17:43:55  ais523: I don't think so? It only needs an infinitely large stack. We can exit() when we find a solution, and we can encode any particular Diophantine search's finite row of variables as finitely many arguments to each procedure call.
17:44:12  sorear: I'm not sure there's any distinction in C, because it lets you run sizeof on anything including integer types
17:44:29  Like, I'm not imagining something which runs successfully on Linux.
17:44:41  korvo: but I can implement this on a push-down automaton, so it can't be TC
17:45:19  MRDP-type equations have _very_ large solutions...
17:45:50  ...at which point we need someplace to store them, and so the heap is relevant. Okay, I see.
17:45:50  unless you allow either a) the variables to be arbitrarily large, or b) the variables to be pointers that provide access to potentially arbitrarily large structures
17:46:41  [[Formin]]  https://esolangs.org/w/index.php?diff=169430&oldid=167669 * Yayimhere2(school) * (-85) /* External links */ delete/replace non existent categories
17:46:52  [[Formin]]  https://esolangs.org/w/index.php?diff=169431&oldid=169430 * Yayimhere2(school) * (-66) /* External links */
17:47:18 -!- b_jonas has joined.
17:47:41  fwiw I am increasingly thinking that the "bytes have provenance" model is wrong for programming in general (it is of course correct for CHERI) – I do think that provenance *exists* and is important, but am not convinced that it attaches to individual bytes of memory
17:47:58  or, well, it's correct for CHERI only if you copy a word at a time rather than a byte at a time
17:49:20  Provenance is a social construction. We have to choose to attach it to each bytestring.
17:50:28  The reason that we're pressured to say that it physically exists is because lawyers think that it physically exists. There's a great Moglen essay about this: https://moglen.law.columbia.edu/publications/anarchism.html
17:51:10  [[Intermediate language]]  https://esolangs.org/w/index.php?diff=169432&oldid=169381 * ChuckEsoteric08 * (+179) /* Some examples in alphabetical order */
17:51:26  korvo: I'm actually increasingly coming to think that (from the programming, not social, point of view) there are actually two or three different forms of provenance that attach to individual pointers
17:52:10  which allocation/object the target belongs to, what accesses are allowed through the pointer, and what the aliasing rules of the pointer are
17:52:30 -!- joast has quit (Quit: Leaving.).
17:53:14  (the second and third might be the same, that's why I'm not sure whether there are two or three)
17:54:02  the first is qualitatively different in that if two pointers mismatch on that provenance, they are conceptually unequal even if they have the same address, pointers that mismatch on the other forms of provenance are conceptually pointing to the same thing but not interchangeable
17:54:23  Aliasing is definitely its own thing. In cap theory, we traditionally say that caps are copyable; you can alias a pointer as much as you like. But some caps, like physical tokens, are *not* copyable; shouldn't our theory have something to say about that? We usually trivialize it: if you've issued k different caps, you get to spend O(k) time tracking them precisely.
17:54:27  * pointers that mismatch only on the other forms of provenance
17:55:37  Right. This occurs e.g. in instruction selection; if we have two nodes which share a subnode, but it's actually going to be cheaper to duplicate the subnode and inline it into each parent, then we want the subnodes to be "conceptually unequal" so that they get emitted twice.
17:55:43  korvo: so at least this is fairly easy for me to think about because of the pirated-reference thing, my mental model now is "just start with a model where nothing is copyable/sharable and then add pirating", with the only question being about just which operations work on pirated references and which operations need the original
17:56:15  what if the problem is that "equality of two pointers" cannot be treated with classical logic
17:56:21  It also occurs in E-style network-transparent references. Two refs are only equal if we've *proven* that they're equal, which is expensive enough that the user has to explicitly E.join() refs instead of asking for equality.
17:56:55  sorear: well, "equality" on its own is insufficiently well defined, I think you have to talk about what notion of equality you want
17:57:37  a lot of miscompiles in Rust are caused by the compiler confusing the various different notions of pointer equality with each other
17:57:44  ais523: Oh, that's a fun tangent. Usually we want a cap to be genuinely delegated; if I give you a cryptographic signature then you should be able to take it offline and sign stuff without my knowledge or presence. But if the cap can be revoked then usually that means that you somehow have to signal me before invoking the cap, to double-check that you didn't get revoked already.
17:58:24  The bookkeeping of checking for a revokable cap sounds similar to the bookkeeping for pirated references, although I think that you hope to do it at compile time?
17:58:34  korvo: right, this is why pirating has a lifetime – Rust enforces lifetimes with a compile-time check, but that doesn't conceptually be a requirement
17:59:06  I think of lifetimes conceptually as "the thing that lended can revoke this" and Rust's borrow checker is basically ensuring statically that the program doesn't attempt to use anything after it's been revoked
17:59:17  but that check doesn't conceptually have to be static, it just happens to be static in Rust
17:59:55  actually, in *unsafe* Rust it is defined as a dynamic check (that causes undefined behaviour if it fails)
18:00:17  the exact definition hasn't been nailed down yet but all the proposed deginitions agree on that
18:00:36  Yeah, in E it's fully late-bound; a revokable cap includes a non-revokable ref back to the original issuer, and the issuer's local machine has a Boolean flag encapsulated by its own object. Can't decide if it's perfectly sensible or utterly mad.
18:01:53  Something like: to run() { return when (def ok := callHomeAndCheck<-()) -> { if (ok) { actuallyRun() } else { throw("sorry, we've been revoked") } } }
18:02:15  I guess this sort of logic leaves me concerned about race conditions
18:02:36  [[Formin]]  https://esolangs.org/w/index.php?diff=169433&oldid=169431 *  * (+29) This seems AI
18:02:37  there might be some separate way to prevent them being a problem
18:03:18  Sure. More seriously, this is what we'd actually do: to run(x) { return try { callHomeAndCheck<-(x)<-actuallyRun() } catch _ { throw("sorry") } }
18:04:13  Promise pipelining tends to have the correct ordering of events. There's a deep thermodynamic reason for that, but also the obvious surface reason: you can't act on objects whose refs you don't have yet.
18:04:30  I suspect that Rust lifetimes can be interpreted in a fully linear manner where references aren't so much revoked as passed back up and consumed
18:04:48  sorear: this conversation has become very close to what I'm planning for my next blog post
18:05:22  the "revoke a lifetime versus consume a reference" distinction is something I've been thinking about a whole lot (especially because I'm pretty sure Rust's current design gets it wrong)
18:05:42  I imagine, just from physics intution, that Rust lifetimes are naturally partially ordered? I don't know Rust well enough to know whether lifetimes can be cyclic, or if that even makes sense.
18:06:15  lifetimes have an "outlives" relationship which is the inverse of "contained-in", if you have a cycle in that relationship it proves the lifetimes are equal
18:07:16  Oh. That's so clean! I continue to not understand Rust haters.
18:10:19  I guess this is actually a mathematical relation, not just an informal relationship
18:27:16  "LLVM doesn't even guarantee substitution of numerically equal *integers* in some cases where they were derived from pointer addresses" => you aren't just referring to the thing where the language sometimes allows you to write an expression that counts as constant expression by language standard but its value isn't actually known at compile time because the address is decided at link time or even 
18:27:22  dynamic link time, right? 
18:27:30 -!- msv has joined.
18:32:34  "yes because the standard doesn't inherently place limits on the length of a file" => so how relevant are files here? is it less cheating if you use standard functions like fopen, fwrite, fread, rewind to access a tape drive with unlimited tape length, because you happen to know that open("/dev/tapedrive1", "r+") behaves that way on the implementation, than if you just call a bunch of custom library 
18:32:40  functions on the implementation that directly let you access unbounded amount of memory?
18:34:59  b_jonas: no, was referring to outright bugs in which pointers-converted-to-integers are sometimes optimised by LLVM as though they were the original pointers, then compared lie pointers
18:35:01  * like pointers
18:35:20  rather than being compared like integers (which they should be, given that they actually are integers)
18:35:59  re: files, I was more talking about how a theoretical implementation running with unbounded memory would be allowed to provide that memory to the program without violating the standard
18:36:05  hmm is there a deep reason why Debian dropped https://packages.debian.org/bookworm/libpcre3 from trixie, or is it just "it's old"
18:36:42  but yes, you could do it with implementation-specific builtins instead, just give them a name that starts with two underscores
18:37:16  ais523: yes, but the standard also allows the implementation to just provide extra functions in its library. there are some limits on the names and header files but they're not really limiting us.
18:37:26  yes, what you said
18:37:42  [[Gstvnts]] N https://esolangs.org/w/index.php?oldid=169434 *  * (+592) Created page with "'''Gstvnts''' is an [[OISC]] created by [[User:]]. Here's how it works:  a b c d  command. if (*a > *b+*c) {a=b-c; goto command;} else {a=b+c; goto *d;} Where a is the variable to write to, b and c are the variables/numbers to write data to a, and d is the jump destination. ==T
18:38:50  int-e: perhaps because no packages in trixie depend on it
18:39:00  and it can even be compiler extensions, not just functions, like what you get in a DOS compiler if normal pointers are near pointers but you can access objects outside of one segment, or if normal pointers are far/huge pointers that point into the real mode address space but you can access extended memory
18:39:52  of course those don't give you infinite memory, and you can even run into very real limits, like how most DOS programs won't be able to use more than 64 M of memory even if you emulate them on a modern system that has tons of RAM
18:40:01  64 megabytes
18:40:19 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
18:40:51  BF is TC, so you could just add inline BF as an extension
18:41:06  [[OISC]]  https://esolangs.org/w/index.php?diff=169435&oldid=169393 *  * (+125) /* List of OISCs */
18:43:06  int-e: it looks like Debian recommends upgrading to the newer version, naturally named libpcre2
18:44:05  Yeah. This may not be as bad as I thought.
18:47:48  Oh, libpcre3 is ABI version 3 of PCRE v1, and libpcre2 is PCRE v2. So not an SDL situation.
18:47:48  [[Gstvnts]]  https://esolangs.org/w/index.php?diff=169436&oldid=169434 *  * (-40) /* Infinite loop */
18:48:00  ais523 re "which allocation/object the target belongs to" => incidentally, does this mean that if you want to implement a memory allocator similar to malloc/free in C or C++, and want to allow the compiler to optimize using the rule that you can't access one allocation from another using pointer arithmetic, you need a non-standard compiler feature like a gcc attribute? 
18:48:32  b_jonas: I think so – actually I've been complaining about a similar situation in Rust over the last few days
18:48:58  I see
18:49:09  b_jonas: Yes. Or, if we think of e.g. file descriptors as caps, then it matters which UID/GID the cap was allocated under, which Linux admin cap flags it has set, etc.
18:49:51  korvo: I don't get the context, is that for me?
18:50:11  this also affects "retrofit memory-safety onto C" implementations that don't implement automatic narrowing of capability scopes (and in a different way affects implementations that do, in that it will end up breaking many "manually implemented memory allocators" if they try to access their own metadata through the pointer that's being deallocated)
18:50:28  strerror: fine, they win: https://github.com/lambdabot/lambdabot/blob/libera/patches/misfortune-0.1.2.1.patch -- could be worse
18:50:36  Linux UIDs are "virtual" in a very specific sense: they pretend that there's a gap between different users, but everybody's actually colocated, so a central controller can manage all of the different relationships and revokation isn't actually a remote action. There's a parallel with e.g. k8s having "virtual" clusters with Namespaces.
18:50:43  I don't think file descriptors carry that kind of information. files do, but file descriptors have much fewer bits.
18:51:06  (fortunately somebody already created the bindings)
18:52:48  b_jonas: They definitely have some context which acts as a provenance. It's ambient whether an integer happens to represent a valid descriptor, just like whether it's a valid pointer. But when it does, there's a kernel struct that has some of that information.
18:53:59  I'm just explaining why provenance matters locally; it's how we emulate the unknowability of remote resources and create a uniform security model from the gaps between those resources.
18:54:18  ...Sorry, that sounds like salad. I should go do something else.
18:55:17 -!- tromp has joined.
18:56:35  korvo: I mean the file descriptors don't carry anything like an UID/GID specifically. the UID/GID and similar of the process is checked to the UID/GID and permissions when you create the file descriptor, and after that all the file descriptor just carries one of the open modes that tell what you can do with that descriptor like O_RDONLY, O_WRONLY, O_RDWR (there are a bunch of more exotic ones), plus a 
18:56:41  few weird magic permission bits like whether it's append-only, whether it's your controlling terminal, etc.
18:59:36  and you can retreive most of that info with system calls like fcntl, getsockopt. the only hard part is finding out which two descriptors refer to the same file description, which is hard to do without cooperation of the file descriptor's users.
19:02:08  b_jonas: You're right. For some reason, I had thought that Linux's file_struct had UID and GID attached, set when the descriptor was created.
19:02:45  io_uring lets you write a file descriptor that's tied to a specific io_uring instance
19:02:54  With the appropriate CONFIG, Linux *does* have fown_struct attached to each descriptor, which has a UID and EUID, but that's apparently for specific security modules: https://docs.huihoo.com/doxygen/linux/kernel/3.7/structfown__struct.html
19:02:58  but that isn't intended for security, but rather for performance because it means that less locking is needed
19:04:37 -!- ais523 has quit (Quit: quit).
19:05:05 -!- amby has joined.
19:20:08 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:23:50  [[8ial]] M https://esolangs.org/w/index.php?diff=169437&oldid=169376 * Ractangle * (+1291) 
19:26:42  [[8ial]] M https://esolangs.org/w/index.php?diff=169438&oldid=169437 * Ractangle * (+23) /* Simulating a Minsky machine */
19:28:55 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
19:28:56 -!- Lord_of_Life_ has joined.
19:31:43 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:31:44  LOL what an idiotic failure: Install dictd, then install 5 dictionaries at once... and run into an error because systemd thinks that the service is restarting too frequently?!
19:34:18  [[8ial]] M https://esolangs.org/w/index.php?diff=169439&oldid=169438 * Ractangle * (-7) /* Simulating a Minsky machine */
19:35:53  [[8ial]] M https://esolangs.org/w/index.php?diff=169440&oldid=169439 * Ractangle * (-694) /* Computational Class */
19:39:00  [[8ial]] M https://esolangs.org/w/index.php?diff=169441&oldid=169440 * Ractangle * (+19) /* Computational Class */
19:39:12  Oh it was 6, not 5: https://paste.debian.net/1410888/
19:44:13  On libpcre and its package names, I just recently saw something particularly ridonkulous in Debian package names, let's see if I could recall what it was.
19:46:03  Oh yes, it was libzmq. The runtime library package is named `libzmq5`, the *corresponding* development package for it is named `libzmq3-dev`, and the actual (upstream) version of the library is 4.3.5.
19:46:29  I'm sure there's a rational process that led to this situation, which I didn't bother to look up.
19:47:56  (Oh, and the source package that generates those two binary packages is named `zeromq3`, which at least matches one of them.)
19:47:56  [[8ial]] M https://esolangs.org/w/index.php?diff=169442&oldid=169441 * Ractangle * (+106) /* Computational Class */
20:08:32 -!- Sgeo has joined.
20:15:34  we've been on libc6 version 2.x for (looks at changelog) 26 years
20:50:37  G'Night
21:15:59  If a Magic: the Gathering card says "Sacrifice target permanent: You gain 3 life." then how would you expect it to work? I would expect that the target is no longer valid when it is time to resolve (unless something changes the target), so you would not gain 3 life. Although a permanent you do not control is a valid target, you would not be able to pay the cost in that case.
21:41:29 -!- ais523 has joined.
21:46:10 -!- recook has joined.
21:46:34 -!- recook has left.
21:49:08  [[8ial]] M https://esolangs.org/w/index.php?diff=169443&oldid=169442 * Ractangle * (+2) minor fix
21:49:20 -!- tromp has joined.
22:05:01  [[ASTLang]]  https://esolangs.org/w/index.php?diff=169444&oldid=169352 * NTMDev * (+154) /* List Utilities */
22:05:39  zzo38: my guess is that the Magic templating team intentionally don't word costs like that, so that the question never comes up
22:05:58  it's like a legalistically-written document version of undefined behaviour
22:06:45  and when they write confusing wording then they usually add reminder text or a judgement into the set FAQ
22:07:18  [[8ial]] M https://esolangs.org/w/index.php?diff=169445&oldid=169443 * Ractangle * (-8) I just realised that it's the OUT command prints the registry and not the tos
22:07:19  or if a wording becomes confusing because of later rule changes then they errata the text or errata in reminder text
22:07:21  [[ASTLang]]  https://esolangs.org/w/index.php?diff=169446&oldid=169444 * NTMDev * (+192) /* Sort */
22:11:17  besides the problem with the target being valid, I think they would also never write "sacrifice target permanent" in an effect (rather than a cost), they'd either write "sacrifice target permanent you control", or write "target permanent's controller sacrifices it"
22:11:32  so there's like double the confusion
22:14:34  b_jonas: they recently changed the template for edicts to "target opponent sacrifices a creature they control of their choice"
22:14:42  which I think supports your theory
22:16:58  I know Wizards of the Coast does not write things like I mentioned (they do not put targets in costs, probably because of the confusion), but I was trying to see what it would be if it was like I wrote.
22:22:02  I always find it interesting when people interact with esolangs in a way other than what the author intended
22:22:31  just treating Magic as an esolang in the first place is that kind of interaction, I think – but trying to combine the rules in ways they were never intended to be combined is another
22:23:31  I remember when Keymaker wrote a quine in Acyclic Tag, and writing quines is basically unrelated to the idea behind / purpose of the language, so I was surprised
22:23:47  (especially given the nature of tag systems, which you wouldn't really expect to be a good choice for writing quines in)
22:24:11  ais523: funnily there's a difference here. Wizards doesn't write rules text that would often make you sacrifice a permanent that someone else controls, like "sacrifice target permanent", but they do write text that would instruct you to do that in rare cases, like when the controller of the permanent changes the permanent in response to a trigger. the rules say that the sacrifice just doesn't happen in 
22:24:17  that case. meanwhile,
22:25:55  Yu-Gi-Oh! has a couple of cards that explicitly use the opponent's monstesr to pay costs that you can normally pay only with your own monsters, e.g. https://yugipedia.com/wiki/Soul_Exchange and https://yugipedia.com/wiki/Underworld_Goddess_of_the_Closed_World
22:25:59  * monsters
22:27:14  unlike in Magic, tributing an opponent's monster or using it as material works if a card explicitly instructs you to do that
22:27:45  Wizrds doesn't write rules text that would often make you put an object into a hand or library or graveyard of a player other than the object's owner, but they can write rules text that would rarely result in that. but I think when the rules instruct you to do that, the object moves into its owner's hand or library or graveyard instead.
22:28:35  yu-gi-oh also has a rule like that but rules text is written to trigger it stupidly often
22:29:07  like, cards say the equivalent of "return that card to its owner's hand" when 99% of the time it'll be used to put a card back into the extra deck (because it's a sort of card that can't exist in a hand)
22:29:59  oddly, yu-gi-oh rules do allow a card to exist in its owner's opponent's hand (although mostly not in any of the other hidden zones belonging to the opponent, apart from that one card that gets shuffled into the opponent's deck face up which is generally considered a mistake)
22:30:45  I spent a couple of years learning yugioh in an attempt to prove it TC
22:30:57  hehe
22:31:29  I currently think that it probably is, but don't have a stable proof, and it needs more assumptions than Magic does (in Magic you can prove TCness with player choices being irrelevant, in Yugioh I think you need the "players do not make choices that would obviously lose them the game" that I used for Netrunner)
22:31:39  sorear: and TeX 3.14159 for three decades now
22:38:24  [[User:Buckets]] M https://esolangs.org/w/index.php?diff=169447&oldid=169347 * Buckets * (+17) 
22:38:55  [[Language list]] M https://esolangs.org/w/index.php?diff=169448&oldid=169405 * Buckets * (+18) 
22:39:02  [[Knock knock]] N https://esolangs.org/w/index.php?oldid=169449 * Buckets * (+1175) Created page with "Knock knock Is An Esoteric programming Language created By [[User:Buckets]] in 2020. {| class="wikitable" |- ! Commands !! Instructions |- | Knock! || Go left If the Command to The right is knock!, Else go downwards. |- | Knock || Go downwards Once. |- | knock || Go
22:39:34  [[Knock knock]] M https://esolangs.org/w/index.php?diff=169450&oldid=169449 * Buckets * (-2) 
22:42:54  @check 1 == 0
22:42:55   *** Failed! Falsifiable (after 1 test):
22:43:01  @check 1 == 1
22:43:04   +++ OK, passed 100 tests.
22:43:51  hmm, so quickcheck doesn't stop early if it's tried every possibility?
22:48:10  100 tests for such a simple statement counts as stopping early
22:55:17  [[Nand1]]  https://esolangs.org/w/index.php?diff=169451&oldid=169418 * CraftyBLUE * (-53) unset computation class, because I (the creator of the language) don't know it
22:56:47  @check \x -> x || not x
22:56:49   +++ OK, passed 100 tests.
22:57:52  @check \a b c d e -> even (a * b * c * d * e)
22:57:54   *** Failed! Falsifiable (after 8 tests and 5 shrinks):
22:57:54   -1 -5 -7 -3 3
22:58:46 -!- joast has joined.
23:02:41  Actually quickcheck might be sampling with replacement, so 100 cases might not be enough to cover n < 100 values
23:03:26  without replacement you wouldn't be able to get 100 tests for 1 == 1
23:03:58  so yes, that command should fail to find a counterexample from time to time
23:07:53  @check \a -> a != 123456789
23:07:54   error:
23:07:54   • Variable not in scope: (!=) :: t0 -> t2 -> t1 • Perhaps you meant one of t...
23:08:03  @check \a -> not (a == 123456789)
23:08:06   +++ OK, passed 100 tests.
23:08:09  ais523: it's /=
23:08:24  int-e: I thought I would just have had the name wrong
23:08:58  I can see how adding `not` is the path of least resistance :)
23:10:23  recently I was working on an algorithm which had a codepath that was only used 1 in 2³² of the time
23:11:17  which was especially interesting because it was effectively operating on random numbers (not quite random but there were highly arbitrary constants involved which would affect when the codepath was taken)
23:15:42  bignum carry chains...
23:16:53  Somebody mentioned something like this on #crypto recently.
23:17:35  (in some contexts a failure to carry carries can completely break a cryptographic system)
23:17:53  (as in, enable private key recovery)
23:19:37  actually pretty common because of how the proofs work for rabin, sigma protocols, etc
23:20:17  this was a double-carry when adding two large numbers and one small one
23:20:33  "this is as hard as private key recovery because if you can perform a private key operation in two different ways you have the private key" well uh something went wrong and the private key operation happened in two ways, now what?
23:20:46  I think rare code paths are normal. My code has a lot that should never run, in there in case I made a mistake or make a mistake in the future when changing the code.
23:21:13  I feel like code paths that never run are qualitatively different from code paths that run extremely rarely in normal operation
23:21:40  …even though the odds of "this codepath should never run" codepaths actually running due to a programmer mistake are higher than 1 in 4 billion, those odds don't compound every time the piece of code is used
23:21:56  yeah
23:25:36  for a lot of the code paths I don't know how often they'll run or if they'll ever run, because the data comes from external sources where I don't have a good guess on their distribution
23:45:22  [[$ESOLANG]]  https://esolangs.org/w/index.php?diff=169452&oldid=160803 *  * (+1)