[...]
01:35:16 -!- tromp has quit (Client Quit).
01:35:19 <esolangs> [[Fingerfuck]] https://esolangs.org/w/index.php?diff=168385&oldid=165021 * EvilRodentOfEVil * (-2) /* Commands */
01:37:56 -!- somefan has joined.
01:38:05 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168386&oldid=168383 * Sawyer.go0923 * (-112)
01:39:49 <esolangs> [[Fingerfuck]] https://esolangs.org/w/index.php?diff=168387&oldid=168385 * EvilRodentOfEVil * (-303) /* Commands */
01:43:19 -!- somefan has quit (Remote host closed the connection).
01:44:19 <esolangs> [[Fingerfuck]] https://esolangs.org/w/index.php?diff=168388&oldid=168387 * EvilRodentOfEVil * (-43) /* Commands */
01:58:58 <esolangs> [[Tskastic/Command Table]] https://esolangs.org/w/index.php?diff=168389&oldid=166658 * PrySigneToFry * (+274)
01:59:36 -!- 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).
02:10:31 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168390&oldid=168386 * Sawyer.go0923 * (+6893)
02:15:53 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168391&oldid=168390 * Sawyer.go0923 * (+2338)
02:19:10 <esolangs> [[Category:Turing Complete]] N https://esolangs.org/w/index.php?oldid=168392 * Sawyer.go0923 * (+59) Created page with "Yes, you can create anything in these languages, like GTA6."
02:21:11 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168393&oldid=168313 * NTMDev * (-4) /* Edit a List */
02:21:49 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168394&oldid=168393 * NTMDev * (+2) /* Edit a List */
02:24:21 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168395&oldid=168391 * Sawyer.go0923 * (+18)
02:25:43 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Category:Turing Complete]]": unapproved category, redundant to [[Category:Turing complete]]
02:36:17 -!- somefan has joined.
02:38:32 <esolangs> [[User:NTMDev]] https://esolangs.org/w/index.php?diff=168396&oldid=167963 * NTMDev * (+8)
02:59:41 <esolangs> [[Fingerfuck]] https://esolangs.org/w/index.php?diff=168397&oldid=168388 * EvilRodentOfEVil * (+709) /* Examples */
03:00:18 -!- somefan has quit (Remote host closed the connection).
03:00:31 <esolangs> [[Fingerfuck]] https://esolangs.org/w/index.php?diff=168398&oldid=168397 * EvilRodentOfEVil * (-4) /* 3 Character Password */
03:05:04 -!- op_4 has quit (Remote host closed the connection).
03:05:40 -!- op_4 has joined.
03:12:54 <esolangs> [[Brafuck]] https://esolangs.org/w/index.php?diff=168399&oldid=165567 * PrySigneToFry * (+264)
03:16:35 -!- impomatic has quit (Ping timeout: 250 seconds).
03:54:20 <esolangs> [[Special:Log/newusers]] create * Mysonandadthatnosense * New user account
04:01:24 -!- Guest41 has joined.
04:01:59 <Guest41> Omg let's goooo, I'm accessing this from a Scratch project (technically Turbowarp)
04:02:26 -!- Guest86 has joined.
04:03:20 -!- Guest86 has quit (Client Quit).
04:06:50 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168400&oldid=168394 * NTMDev * (+460) /* Enumeration */
04:08:24 -!- Guest41 has quit (Quit: Client closed).
04:19:35 -!- pool has quit (Read error: Connection reset by peer).
04:21:40 -!- pool has joined.
04:22:18 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=168401&oldid=168324 * Mysonandadthatnosense * (+218) /* Introductions */
04:29:23 <esolangs> [[Apraxia]] https://esolangs.org/w/index.php?diff=168402&oldid=168284 * Yayimhere2(school) * (-20) /* Semantics */
04:29:37 <esolangs> [[Apraxia]] https://esolangs.org/w/index.php?diff=168403&oldid=168402 * Yayimhere2(school) * (-178) /* Examples */
04:30:38 <esolangs> [[Apraxia]] https://esolangs.org/w/index.php?diff=168404&oldid=168403 * Yayimhere2(school) * (-20) /* Semantics */
04:34:15 <esolangs> [[Apraxia]] https://esolangs.org/w/index.php?diff=168405&oldid=168404 * Yayimhere2(school) * (+61) /* Examples */
04:49:30 <esolangs> [[User:Yayimhere]] https://esolangs.org/w/index.php?diff=168406&oldid=168287 * Yayimhere2(school) * (-251) /* esolangs */
04:50:51 <esolangs> [[()()(())]] https://esolangs.org/w/index.php?diff=168407&oldid=136415 * Yayimhere2(school) * (+25) /* definitions */
04:51:49 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168408&oldid=168395 * Corbin * (+6) Fix categories yet again.
04:52:13 <esolangs> [[Talk:()NEST()]] https://esolangs.org/w/index.php?diff=168409&oldid=168088 * Yayimhere2(school) * (-269) deleted some dumb talks I did a while ago
04:53:56 <esolangs> [[Talk:()NEST()]] https://esolangs.org/w/index.php?diff=168410&oldid=168409 * Yayimhere2(school) * (+446)
05:04:53 <esolangs> [[()NEST()]] https://esolangs.org/w/index.php?diff=168411&oldid=136382 * Yayimhere2(school) * (-920) /* how it works */
05:08:19 -!- Sgeo has quit (Ping timeout: 250 seconds).
05:11:08 <esolangs> [[Talk:()NEST()]] https://esolangs.org/w/index.php?diff=168412&oldid=168410 * Yayimhere2(school) * (+666)
05:19:45 -!- pool has quit (Read error: Connection reset by peer).
05:21:49 -!- pool has joined.
05:40:35 -!- ais523 has quit (Quit: quit).
05:44:01 -!- zzo38 has joined.
05:44:06 <zzo38> Why does X.690 says that the canonical form of a floating point number in decimal format must have a plus sign for the exponent iff the exponent is zero?
05:47:19 <esolangs> [[Atamagaokashii]] https://esolangs.org/w/index.php?diff=168413&oldid=168345 * RaiseAfloppaFan3925 * (+497) /* Factorial operator example */ Silly me was too sleepy to complete the factorial program
05:51:46 <esolangs> [[Atamagaokashii]] M https://esolangs.org/w/index.php?diff=168414&oldid=168413 * RaiseAfloppaFan3925 * (+1) /* Factorial operator example */ operator, not literal
05:52:18 -!- Sgeo has joined.
06:03:29 -!- Sgeo has quit (Read error: Connection reset by peer).
06:19:56 -!- pool has quit (Read error: Connection reset by peer).
06:20:22 -!- pool has joined.
06:20:34 <esolangs> [[SletScript]] M https://esolangs.org/w/index.php?diff=168415&oldid=168382 * Cycwin * (+470) /* single-time lambda runner */
06:29:46 <esolangs> [[Dynamic CE]] N https://esolangs.org/w/index.php?oldid=168416 * Yayimhere2(school) * (+405) Created page with "{{WIP}} '''Dynamic CE''' is an esolang created by [[User:Yayimhere]], as a more dynamic, and "usable"(to some extent) version of [[Contains everything]]. It is currently a WIP. == Description == === Builtins === Below are some Dynamic CE built in variables,
06:35:02 <esolangs> [[Distressed]] https://esolangs.org/w/index.php?diff=168417&oldid=168232 * Yayimhere2(school) * (+4) /* Computational class */
06:37:28 <esolangs> [[Homunculus fallacy]] https://esolangs.org/w/index.php?diff=168418&oldid=168334 * Yayimhere2(school) * (+65) /* Commands */
06:37:36 <esolangs> [[Homunculus fallacy]] https://esolangs.org/w/index.php?diff=168419&oldid=168418 * Yayimhere2(school) * (+1) /* Tricks and tips */
06:40:19 <esolangs> [[Homunculus fallacy]] https://esolangs.org/w/index.php?diff=168420&oldid=168419 * Yayimhere2(school) * (+69) /* Commands */
06:40:56 <esolangs> [[User:RaiseAfloppaFan3925]] M https://esolangs.org/w/index.php?diff=168421&oldid=168343 * RaiseAfloppaFan3925 * (+501) /* Languages I like */ Add Atamagaokashii
06:43:06 -!- impomatic has joined.
06:44:44 <esolangs> [[Homunculus fallacy]] https://esolangs.org/w/index.php?diff=168422&oldid=168420 * Yayimhere2(school) * (-4) /* Commands */
06:49:52 <esolangs> [[Homunculus fallacy]] https://esolangs.org/w/index.php?diff=168423&oldid=168422 * Yayimhere2(school) * (-36) /* Commands */
06:52:04 -!- Yayimhere has joined.
06:53:37 <Yayimhere> Hello. I have a question. Is the command set Increment, multiply by 10, add a cell and point to it, delete current cell, go back N commands, goto command N(only forwards), goto current cell value(may wrap around the program).
07:01:28 <esolangs> [[SletScript]] M https://esolangs.org/w/index.php?diff=168424&oldid=168415 * Ractangle * (+33)
07:01:58 <esolangs> [[SletScript]] M https://esolangs.org/w/index.php?diff=168425&oldid=168424 * Ractangle * (-11) /* External Resources */
07:34:29 <Yayimhere> Is the before mentioned command set turing complete
07:34:36 <Yayimhere> i had not realized it was incomplete
08:01:43 -!- Yayimhere has quit (Ping timeout: 250 seconds).
08:08:55 -!- Yayimhere has joined.
08:14:10 -!- tromp has joined.
08:28:32 -!- chiselfuse has quit (Ping timeout: 272 seconds).
08:28:50 -!- chiselfuse has joined.
08:51:54 -!- impomatic has quit (Quit: Client closed).
09:35:58 <esolangs> [[Ikiwekiwow]] M https://esolangs.org/w/index.php?diff=168426&oldid=166009 * Saumus Paskevi * (+7)
09:36:47 <esolangs> [[Ikiwekiwow]] M https://esolangs.org/w/index.php?diff=168427&oldid=168426 * Saumus Paskevi * (+7)
09:37:42 <esolangs> [[Ikiwekiwow]] https://esolangs.org/w/index.php?diff=168428&oldid=168427 * Saumus Paskevi * (-51)
09:38:34 <esolangs> [[User:RaiseAfloppaFan3925]] https://esolangs.org/w/index.php?diff=168429&oldid=168421 * RaiseAfloppaFan3925 * (+2592) Tier lists
09:39:28 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
09:41:20 <esolangs> [[Ikiwekiwow]] https://esolangs.org/w/index.php?diff=168430&oldid=168428 * Yayimhere2(school) * (+0) /* Operations */ correct the number of instructions
09:41:45 <esolangs> [[Confusion]] M https://esolangs.org/w/index.php?diff=168431&oldid=90799 * Saumus Paskevi * (+11) marked dead link
09:51:51 <esolangs> [[SletScript]] https://esolangs.org/w/index.php?diff=168432&oldid=168425 * I am islptng * (+29) fix typo and format
09:56:12 <sorear> moderately tempted to throw in a version of Henkin's theorem to prove that there are no surprises connected to the logical axioms
09:59:41 <sorear> as it is the logic is only developed enough to prove that 0 and 1 have the expected nature
10:35:08 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168433&oldid=168364 * C++DSUCKER * (+171)
10:39:31 <esolangs> [[Special:Log/newusers]] create * Samski * New user account
10:44:49 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=168434&oldid=168401 * Samski * (+378)
10:45:05 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=168435&oldid=168434 * Samski * (+81)
10:47:10 <esolangs> [[Talk:Contains everything]] https://esolangs.org/w/index.php?diff=168436&oldid=168366 * C++DSUCKER * (+244)
10:47:28 <esolangs> [[Talk:Contains everything]] https://esolangs.org/w/index.php?diff=168437&oldid=168436 * C++DSUCKER * (+63)
10:50:22 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168438&oldid=168433 * C++DSUCKER * (+0)
10:51:19 <esolangs> [[Dynamic CE]] https://esolangs.org/w/index.php?diff=168439&oldid=168416 * Yayimhere2(school) * (-405) Blanked the page
10:52:57 <esolangs> [[User:RaiseAfloppaFan3925/Testing Facility]] https://esolangs.org/w/index.php?diff=168440&oldid=168267 * RaiseAfloppaFan3925 * (+709) Syntax highlighting
10:53:30 -!- tromp has joined.
11:11:26 <esolangs> [[User:RaiseAfloppaFan3925]] M https://esolangs.org/w/index.php?diff=168441&oldid=168429 * RaiseAfloppaFan3925 * (+164) /* Tier List of Languages */
11:16:53 <esolangs> [[User:RaiseAfloppaFan3925/Interpreters]] https://esolangs.org/w/index.php?diff=168442&oldid=168111 * RaiseAfloppaFan3925 * (+316) /* Nope. */ Add the Atamagaokashii interpreter of Nope.
11:19:21 -!- DOS_User has joined.
11:19:36 -!- DOS_User has quit (Client Quit).
11:19:55 -!- DOS_User_webchat has joined.
11:21:31 -!- DOS_User_webchat has quit (Client Quit).
11:21:46 -!- DOS_User_webchat has joined.
11:22:08 -!- DOS_User_webchat has quit (Client Quit).
11:22:24 -!- DOS_User_webchat has joined.
11:25:44 <Yayimhere> Working on an extension of contains everything
11:28:21 <DOS_User_webchat> Because a rite of passage for esolangers is bf dericative apparently
11:38:43 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168443&oldid=168438 * C++DSUCKER * (+246)
11:58:25 <esolangs> [[User talk:Yayimhere2(school)]] https://esolangs.org/w/index.php?diff=168444&oldid=167857 * PrySigneToFry * (+219)
11:59:33 <esolangs> [[User talk:Yayimhere2(school)]] https://esolangs.org/w/index.php?diff=168445&oldid=168444 * Yayimhere2(school) * (+159)
11:59:42 <esolangs> [[Contains everything]] M https://esolangs.org/w/index.php?diff=168446&oldid=168443 * C++DSUCKER * (-4)
12:03:15 <esolangs> [[User:None1/InDev]] https://esolangs.org/w/index.php?diff=168447&oldid=166161 * None1 * (+721)
12:05:41 -!- Yayimhere has quit (Ping timeout: 250 seconds).
12:06:22 -!- DOS_User_webchat has quit (Quit: Client closed).
12:08:12 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168448&oldid=168446 * C++DSUCKER * (+141)
12:08:37 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168449&oldid=168448 * C++DSUCKER * (+2)
12:15:28 <esolangs> [[User talk:Yayimhere2(school)]] https://esolangs.org/w/index.php?diff=168450&oldid=168445 * PrySigneToFry * (+315)
12:20:15 -!- pool has quit (Read error: Connection reset by peer).
12:21:23 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168451&oldid=168449 * C++DSUCKER * (+321)
12:21:24 -!- impomatic has joined.
12:22:22 -!- pool has joined.
12:26:53 <esolangs> [[User talk:Yayimhere2(school)]] https://esolangs.org/w/index.php?diff=168452&oldid=168450 * Yayimhere2(school) * (+383) /* ? */
12:28:09 -!- Yayimhere has joined.
12:40:47 -!- Yayimhere has quit (Quit: Client closed).
12:44:38 <esolangs> [[Atamagaokashii]] https://esolangs.org/w/index.php?diff=168453&oldid=168414 * Hammy * (+150) /* Member/Method Access */
12:53:41 -!- impomatic has quit (Quit: Client closed).
13:00:27 <esolangs> [[Atamagaokashii]] https://esolangs.org/w/index.php?diff=168454&oldid=168453 * Hammy * (+690) /* User:Esolangist */
13:01:28 <esolangs> [[]] N https://esolangs.org/w/index.php?oldid=168455 * Hammy * (+28) Redirected page to [[Atamagaokashii]]
13:13:40 <esolangs> [[Talk:INTERCAL]] https://esolangs.org/w/index.php?diff=168456&oldid=167964 * Jasper * (+53) /* Useful functions made using INTERCAL's unary / binary operators */
13:20:28 -!- pool has quit (Read error: Connection reset by peer).
13:22:29 -!- pool has joined.
13:23:38 <esolangs> [[Atamagaokashii]] M https://esolangs.org/w/index.php?diff=168457&oldid=168454 * RaiseAfloppaFan3925 * (+144) /* Extensions */ This
13:32:35 <int-e> > logBase 2 3 * 23
13:40:49 <esolangs> [[Just a bit]] https://esolangs.org/w/index.php?diff=168458&oldid=168271 * Esolangist alt * (+169)
13:50:30 <esolangs> [[Talk:Abyssal-9]] https://esolangs.org/w/index.php?diff=168459&oldid=168384 * Int-e * (+363) I think either delete them or mark pages like this with a big "AI slop" banner...
13:58:05 -!- impomatic has joined.
14:05:34 <esolangs> [[Abyssal-8]] N https://esolangs.org/w/index.php?oldid=168460 * Sawyer.go0923 * (+21282) Created page with "{{proglang | name = Abyssal-8 | year = 2025 | designer = Sawyer Macia | file extension = .aby8 | paradigm = Esoteric language deterministic, massively obfuscated, self-modifying VM | influences = Malbolge, Brainfuck (conceptual), cryptographic permutations }}
14:10:45 <int-e> Oh we're also inventing nonexistant templates? "Template:Proglang"
14:20:32 -!- pool has quit (Read error: Connection reset by peer).
14:22:36 -!- pool has joined.
14:35:49 -!- amby has joined.
14:42:32 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168461&oldid=168408 * Sawyer.go0923 * (-281)
14:59:36 <esolangs> [[Abyssal-7]] N https://esolangs.org/w/index.php?oldid=168462 * Sawyer.go0923 * (+6020) Created page with "{{infobox proglang |name=Abyssal-7 |paradigms=imperative |author=[[User:YourUsernameHere]] <!-- Replace with your esolangs username --> |year=[[:Category:2025|2025]] |influence=[[Abyssal-8]], [[Abyssal-9]], [[Malbolge]] |class=[[:Category:Turing complete|Turing
15:04:21 <int-e> Hmm I can feel a wiki user ban coming.
15:07:48 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168463&oldid=168400 * NTMDev * (+89) /* Floor, Ceiling */
15:08:23 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168464&oldid=168463 * NTMDev * (+16) /* LogicalOperation */
15:09:58 <int-e> (Aside from these pages being pure slop, they haven't reacted on their talk page either.)
15:13:34 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168465&oldid=168464 * NTMDev * (-31) /* Floor, Ceiling */
15:14:03 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168466&oldid=168465 * NTMDev * (+90) /* Advanced Math Operations */
15:29:34 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168467&oldid=168466 * NTMDev * (+474) /* Square root, Logarithm */
15:42:08 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168468&oldid=168467 * NTMDev * (+77) /* Square root, Logarithm */
15:44:12 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168469&oldid=168468 * NTMDev * (+306) /* Trig Functions */
15:49:47 <esolangs> [[Talk:Contains everything]] https://esolangs.org/w/index.php?diff=168470&oldid=168437 * Corbin * (+911)
15:51:53 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168471&oldid=168461 * Corbin * (+2) Fix categories.
15:52:23 <esolangs> [[Abyssal-8]] https://esolangs.org/w/index.php?diff=168472&oldid=168460 * Corbin * (+6) Fix categories. This was clearly generated.
15:52:52 <esolangs> [[Abyssal-7]] https://esolangs.org/w/index.php?diff=168473&oldid=168462 * Corbin * (+7) Fix categories. This was clearly generated.
15:57:46 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168474&oldid=168469 * NTMDev * (+197) /* Gcd, Lcm */
15:58:52 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168475&oldid=168474 * NTMDev * (+125) /* Mod, MathConstants */
15:58:56 <esolangs> [[Special:Log/upload]] upload * Mysonandadthatnosense * uploaded "[[File:Hello World!.png]]"
16:03:09 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168477&oldid=168312 * Corbin * (+1556) /* Tagging & Slop */ new section
16:06:46 <esolangs> [[I RAGED ON CSHARP SO HARD I BROKE MY FUCKING PC]] https://esolangs.org/w/index.php?diff=168478&oldid=168216 * Corbin * (+6) Fix categories. This smells generated.
16:07:08 <esolangs> [[!frjnrehrbwgyrigbyieurgbyfaerkhbvrwgtr.]] https://esolangs.org/w/index.php?diff=168479&oldid=168217 * Corbin * (+6) Fix categories. This smells generated.
16:07:22 <esolangs> [[Abcdefghijklmnopqrstuvwxyz.now.i.know.my.abcs.next.time.wont.you.sing.with.me]] https://esolangs.org/w/index.php?diff=168480&oldid=168219 * Corbin * (+6) Fix categories. This smells generated.
16:08:36 <esolangs> [[GTA6]] https://esolangs.org/w/index.php?diff=168481&oldid=168316 * Corbin * (+30) Fix categories. This smells generated. The repeated Gs put the model into a pseudo-stationary distribution and it forgot which language it was supposed to speak when it came back out.
16:09:23 <korvo> Okay, I think I've tagged all of it.
16:14:51 <esolangs> [[Classic?]] https://esolangs.org/w/index.php?diff=168482&oldid=168239 * Yayimhere2(school) * (+3) /* Semantics */
16:21:35 <esolangs> [[M@trix]] N https://esolangs.org/w/index.php?oldid=168483 * Mysonandadthatnosense * (+1416) Uhh M@trix!
16:27:23 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
16:28:12 <esolangs> [[M@trix]] https://esolangs.org/w/index.php?diff=168484&oldid=168483 * Mysonandadthatnosense * (+1) /* M@trix */
16:28:23 -!- Lord_of_Life_ has joined.
16:29:47 -!- Lord_of_Life has quit (Ping timeout: 256 seconds).
16:29:47 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:29:53 -!- impomatic has quit (Quit: Client closed).
16:29:57 <esolangs> [[Classic?]] https://esolangs.org/w/index.php?diff=168485&oldid=168482 * Yayimhere2(school) * (+2) /* Semantics */
16:34:46 <esolangs> [[M@trix]] https://esolangs.org/w/index.php?diff=168486&oldid=168484 * Mysonandadthatnosense * (+153) /* External Links */
16:35:38 <esolangs> [[M@trix]] M https://esolangs.org/w/index.php?diff=168487&oldid=168486 * Mysonandadthatnosense * (+0) /* M@trix */
16:37:13 <esolangs> [[User talk:Mysonandadthatnosense]] N https://esolangs.org/w/index.php?oldid=168488 * Mysonandadthatnosense * (+169) Created page with "Hi guys! Im the guy who made [[M@trix]] :D--~~~~"
16:38:15 <esolangs> [[User:Samski]] N https://esolangs.org/w/index.php?oldid=168489 * Mysonandadthatnosense * (+3) Created page with "uhm"
16:40:46 -!- ais523 has joined.
16:41:00 <esolangs> [[M@trix]] M https://esolangs.org/w/index.php?diff=168490&oldid=168487 * Mysonandadthatnosense * (+79) /* M@trix */
16:42:05 <esolangs> [[Atamagaokashii]] https://esolangs.org/w/index.php?diff=168491&oldid=168457 * Esolangist alt * (+20) Esolangist alt
16:53:07 <ais523> I don't want to ban Sawyer.go0923 without giving them more of a chance to respond to the warnings, but I'm also thinking that the behaviour is getting increasingly banworthy
16:54:28 <ais523> really I or someone else needs to work on a topicality policy which gives something to point to as a reason to delete this (which I don't think should be "was created by AI" unless there were copyright concerns, but rather "a page should document a language, you can't just write something that looks like language documentation unless there is an actual language to document"
16:55:17 <ais523> the AI that's generating the pages seems to have fallen into the common issue of mixing up actual useful output and plans for the future / todo lists (which, admittedly, I sometimes do myself on a smaller scale, but not to that extent)
16:57:04 <ais523> to clarify: I think "ask an AI for ideas, try to create a language around the ideas it comes up with, document the language" is clearly acceptable even if I'm not particularly a fan of the process; but "ask an AI for language documentation and post it" is not acceptable because at no point has the language actually been created
16:58:36 <korvo> ais523: Understood. I will propose some policy wording in a bit. I hope I didn't overstep in my warning; I wanted them to understand *why* their behavior is an issue and *how* to improve.
16:59:22 <ais523> it's a wiki, warning people is something that anyone can do (although if the warnings are in bad faith it would be a problem, and if they're in good faith but very off the mark it would need correction)
16:59:33 <korvo> "articles should document languages" seems like a good maxim for sure.
16:59:51 <ais523> (or document something else, if the article is not intended to be about a language)
17:00:44 <ais523> I am generally extremely forgiving as moderators go (which might have caused problems in the past) – this incident is annoying even me, so it must be even worse for everyone else
17:02:15 <int-e> ais523: Yeah technically AI isn't the issue. Nor, in a way, is slop; we have plenty of barely specified language stubs... not great, but easy to sort out at a glance. The combination though... AI enables slop that looks substantial, produced at a prodigious rate.
17:03:02 <ais523> with human-produced slop there's generally *a* language idea, just the human may not fully understand it and may have trouble articulating it properly
17:03:12 <ais523> in my case, I normally just don't post those languages, but some people do
17:03:31 <ais523> (and when I do post languages that I haven't fully thought through they are often not very interesting)
17:03:43 <avih> i don't think it matters much whether it's ai or not, though it's much more likely with ai, but without knowing how to formulate it, i think it's not a place for "silly stupid half baked stuff with zero interesting value"
17:04:45 <avih> (all subjective obviously, hence "not sure how to formulate it")
17:04:47 <ais523> I can potentially see going as far as "a page must contain either an interpreter, sufficient information that it would be possible for someone else to create an interpreter, or a link to a page containing one of these things" although that would be a really major change and I wouldn't want to make it without extensive discussion
17:05:01 <ais523> and it'd need to be adapted a bit for hypothetical languages
17:05:06 <ais523> err, for uncomputable languages
17:05:06 <korvo> I'm just not a fan of vanity. I think this this community is much more lenient than e.g. nLab, where "remove yourself" is a community value, but in general I think that wikis should not just be guestbooks where people write grand signatures.
17:05:54 <ais523> something like https://esolangs.org/wiki/Banana_Scheme would be sufficiently well-specified to implement if not for the fact that it's theoretically impossible
17:06:02 <ais523> but you can imagine writing an implementation in another uncomputable language
17:06:48 <ais523> well, except that it doesn't specify syntax for the transfinite ordinales
17:06:49 <korvo> [[Sammy]] would be my example of an edge case. It's an interesting open research question whether a Turing machine can simulate it!
17:07:00 <ais523> https://esolangs.org/wiki/Sammy
17:07:27 <ais523> korvo: ooh, unknown between TC and uncomputable? I don't see that very often
17:07:38 <int-e> This is intangible, but Banana Scheme is clean: It adds just enough to Scheme to embody the idea of having access to a tower of halting oracles.
17:09:02 <korvo> ais523: Yeah. The main issue is that it's not known how to compute Kan extensions in Cat other than via diagram chasing. I think that there might be an algebraic way to simulate it, so that we could compute an approximation; but the details were difficult to work out and I gave up after a week.
17:09:50 -!- impomatic has joined.
17:10:20 <avih> int-e: ais523: just wanted to put it out there. thanks again for the discussion and ideas. i only ended up using ais523's "if (0 or near enough) BODY" code https://gist.github.com/avih/3c7733e251e7edaf161f7f71c840ce69
17:10:56 <ais523> avih: I think you have int-e's name backwards
17:10:59 <int-e> . o O ( who's e-int )
17:11:29 <esolangs> [[Iterate]] https://esolangs.org/w/index.php?diff=168492&oldid=168319 * Aadenboy * (+10) /* Completeness */ I think it'd be obvious to say that Iterate without any way to reset counters is not Turing-completeironically, it would probably be equivalent to [[ITERATE]] instead
17:11:38 -!- DOS_User_webchat has joined.
17:12:27 -!- tromp has joined.
17:14:11 <avih> i wanted to find a way to document it in really small chunks without having to use a debugger to see how it looks. i think it ended up ok
17:16:42 <avih> i'm not entirely convinced my "while" construct is minimal, because the condition part has to be duplicated and my gut feeling is that it might be possible to use only once, but so far i didn't find out how
17:17:30 <avih> (i'm sure it can be minimized with tailored code, but i'm more interested in generally applicable constructs)
17:18:00 -!- perlbot has quit (Quit: ZNC 1.9.1+deb2+b3 - https://znc.in).
17:18:00 -!- simcop2387 has quit (Quit: ZNC 1.9.1+deb2+b3 - https://znc.in).
17:18:58 <avih> (that refers to the first while. obviously "while (not 0)" is fine)
17:20:07 <int-e> avih: maybe something like +[ -> COND [-<+> ...]<]
17:20:32 <int-e> (instead of COND [- ... COND])
17:20:51 <avih> (digesting. also brb)
17:20:51 -!- pool has quit (Read error: Connection reset by peer).
17:21:08 <int-e> (I have not checked whether that's nciely applicable to the actual code)
17:22:51 -!- pool has joined.
17:24:13 <avih> yeah, no worries. i will :) but general constructs are useful even if not directly applicable in this case.
17:26:47 -!- DOS_User_webchat has quit (Ping timeout: 250 seconds).
17:27:02 -!- DOS_User_webchat has joined.
17:31:49 <korvo> DOS_User_webchat: Folks don't have to make a BF derivative to contribute to the Brainfuck story. They could also write an interpreter, write a notable or interesting program, demonstrate a new compilation technique, etc.
17:32:21 <korvo> I want to avoid folks thinking that community membership involves tagging a specific graffiti wall with a signature.
17:32:29 <korvo> DOS_User_webchat: Ah, okay. No worries.
17:37:16 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168493&oldid=168471 * Sawyer.go0923 * (+39)
17:38:03 -!- impomatic has quit (Ping timeout: 250 seconds).
17:41:03 -!- DOS_User_webchat has quit (Remote host closed the connection).
17:42:56 <avih> int-e: so COND sets the curr cell to exactly 0/1, and body is "..." ? why the very 1st "+" ? does it assume that it's never -1?
17:44:09 <int-e> avih: that's supposed to be on a temporary
17:44:35 <avih> so the assumption is that it starts on a temp cell which is 0?
17:45:53 <int-e> the idea is that instead of duplicating COND, have the outer loop return to before COND whenever the conditions was true
17:46:06 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168494&oldid=168477 * Sawyer.go0923 * (+266) Reply
17:46:10 <int-e> which is using a separate condition that is easier to manage
17:49:12 <avih> int-e: yeah, i get the idea, just not yet whether it's applicable. so the startup state expects to be on the 1st of two consecutive tmp cells, where the 1st is 0 and the 2nd is cond which is exactly 1 or 0, yes?
17:51:15 <avih> well, no. COND represents code to generate 1/0 for this iteration, right?
17:51:34 <int-e> COND is the thing that you duplicated, more or less
17:52:05 <int-e> (with all these code templates, the exact number and direction of < and > may need adjustments)
17:52:35 <avih> sure, but this is specific example, so i'm applying it to its own requirement
17:52:51 <avih> (i..e your example uses specific places)
17:53:02 <esolangs> [[Abyssal-7]] https://esolangs.org/w/index.php?diff=168495&oldid=168473 * Sawyer.go0923 * (-48)
17:53:02 <int-e> Right, but what I wrote didn't take your constraints into account, so you're on your own.
17:53:23 <avih> mine doesn't matter. i can apply it once i get it
17:54:09 <avih> (if applicable, my main concern is that it's an unbalanced loop, so need to ensure the bookkeeping happens correctly, but i _think_ it should be ok)
17:54:57 <avih> (because the cleanup happens right after it's used, before BODY)
17:55:46 <esolangs> [[Abyssal-8]] https://esolangs.org/w/index.php?diff=168496&oldid=168472 * Sawyer.go0923 * (-437)
17:56:47 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168497&oldid=168494 * Sawyer.go0923 * (+6)
17:58:28 <avih> int-e: i think i get it. the 1st tmp cell is used both to "get in" unconditionally initially, and also to loop unconditionally, where on each iteration cond is the actual decider about whether body should be executed, yes?
17:59:16 <esolangs> [[M@trix]] https://esolangs.org/w/index.php?diff=168498&oldid=168490 * Mysonandadthatnosense * (+713)
17:59:29 <avih> and if COND is false, then the body loop is not entered and the outer look exits right away
18:00:29 <avih> i _think_ it should be applicable, but not entirely sue yet. mainly due to the unbalanced nature
18:08:40 -!- b_jonas has joined.
18:10:27 <esolangs> [[Talk:Burn]] https://esolangs.org/w/index.php?diff=168499&oldid=167764 * Yayimhere2(school) * (+188) /* Thoughts on burn */
18:12:23 <esolangs> [[Iterate/Math]] https://esolangs.org/w/index.php?diff=168500&oldid=168175 * Aadenboy * (+590) extra logic
18:13:25 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
18:16:29 -!- tromp has joined.
18:17:40 <korvo> Well, they're still using chatbots to write their replies, but at least they replied.
18:18:43 <esolangs> [[M@trix]] M https://esolangs.org/w/index.php?diff=168501&oldid=168498 * Mysonandadthatnosense * (+47) /* External Resources */
18:19:35 <esolangs> [[M@trix]] M https://esolangs.org/w/index.php?diff=168502&oldid=168501 * Mysonandadthatnosense * (-144) /* M@trix */
18:36:24 -!- perlbot has joined.
18:38:46 <avih> int-e: that's your suggestion in a bit more formal notation, yes?
18:38:48 <avih> (start @base) tmp1+[- (tmp2=COND) tmp2[- tmp1+ base BODY tmp2] tmp1]
18:40:25 <avih> and what i'm thinking about is what happens when BODY inherently moves head, as in unbalanced.
18:40:28 <int-e> avih: you're using names to indicate movement, I guess; in that case, yes
18:40:56 <avih> the name X means "move to X", and it uses the names base, tmp1, tmp2
18:41:28 -!- simcop2387 has joined.
18:43:15 <avih> i'm also wondering whether tmp2 can reuse the tmp1 cell, and end up requiring only 1 tmp
18:44:11 <int-e> avih: well you need a known-0 place to exit the inner loop
18:44:23 <int-e> "loop"; it's more of a conditional branch
18:44:53 <avih> basically, the inner loop must be an "if", yes?
18:45:12 <esolangs> [[User:Sawyer.go0923]] N https://esolangs.org/w/index.php?oldid=168503 * Sawyer.go0923 * (+1) Created page with "a"
18:46:31 <avih> then, if tmp1 is reused, then it could end in "BODY tmp1[-]] +]" while reusing tmp1?
18:48:14 <int-e> avih: but a non-zero tmp1 is how the outer loop knows to continue
18:48:23 <avih> as in: (start @base) tmp+[- (tmp=COND) tmp[- base BODY tmp[-]] +]
18:49:07 <avih> there's redundancy there of the tmp[- and the [-]
18:49:26 -!- impomatic has joined.
18:49:40 <int-e> it the end of the inner loop, one cell is known to be 0 (because the loop exits) and another cell is supposed to track whether to continue or not; that's two cells used for flow control at that point.
18:50:04 <avih> (the "no" was for my suggestion)
18:51:24 <avih> yeah, got it :)
18:51:40 <int-e> you got "at", eh...
18:52:16 <avih> you were correcting your "it the end of the inner loop" yes?
18:53:50 <avih> anyway, yeah, when COND is true it should set tmp1 to re-enter the loop, and also use something to ensure exit of the inner loop. so two tmps indeed.
18:54:29 <avih> re-enter the outer* loop
18:56:25 <int-e> but you can use the two tmps for other purposes in `BODY` and also in `COND`, as long as you reset them properly
18:58:36 <avih> i think that in my case where BODY moves head, it should set tmp1+ after body rather than before, which would ensure entrance at the new position, but with a non-moving BODY the tmp1+ can be either before or after BODY
19:01:12 <avih> re reuse, specifically COND can reuse tmp1 as long as it restores it to 0 before entering the inner loop, and same for BODY
19:01:27 -!- amby has quit (Remote host closed the connection).
19:02:21 -!- amby has joined.
19:02:23 <avih> oh, you mentioned reuse in COND too. i stopped reading at "BODY" :)
19:08:10 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168504&oldid=168493 * Sawyer.go0923 * (+364)
19:08:32 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168505&oldid=168504 * Sawyer.go0923 * (-62)
19:08:47 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168506&oldid=168505 * Sawyer.go0923 * (-69)
19:12:08 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168507&oldid=168506 * Sawyer.go0923 * (-39)
19:12:57 -!- impomatic has quit (Ping timeout: 250 seconds).
19:21:04 -!- pool has quit (Read error: Connection reset by peer).
19:23:12 -!- pool has joined.
19:29:43 <b_jonas> ais523: you know how this community is, if you set an inclusion policy for the wiki, I'll both find bad articles to get rid of and try to find loopholes for how the policy implies we should get rid of good articles.
19:30:08 <ais523> b_jonas: what are you intending to do with the loopholes if you find them? :-D
19:30:20 <fungot> Selected style: agora (a large selection of Agora rules, both current and historical)
19:30:31 <ais523> fungot: we should get a team of Agorans to go over our new policy and find all the loopholes
19:30:31 <fungot> ais523: there shall be retired from that gambler's hand. for each contest that awarded
19:33:50 <b_jonas> ais523: presumably use them to convince you (as in the wiki admins collectively) to change the policy, but possibly only after I use the policy to get rid of some bad articles
19:35:58 <korvo> Ah, how The Man With No Name did it. Or Mad Max, or Aloy. Walk into town, use overwhelming force to topple local despot, insist that overwhelming force is dangerous and should be retired, walk out of town.
19:37:01 <b_jonas> if the policy were that the page should link to an interpreter or there should be enough information to create one then I'd ask how we apply that to efghij or BancStar
19:40:11 -!- int-e_ has joined.
19:41:18 -!- int-e has quit (Quit: leaving).
19:42:43 <esolangs> [[User:Esolangist/Sandbox]] https://esolangs.org/w/index.php?diff=168508&oldid=167675 * Esolangist alt * (+123) Esolangist alt
19:43:03 <b_jonas> if necessary I might even propose articles that don't exist yet and should exist but couldn't with the policy
19:43:29 <korvo> avih: Not a bad thing, just a pattern. (I love speedrunning Horizon, BTW. I should do that more often.)
19:44:03 <avih> yeah. good pattern, and i get why b_jonas suggested it. fun nevertheless :)
19:44:45 <avih> it comes down to what i suggested just seemingly more formally: apply subjective judgment...
19:45:28 <avih> but i liked your examples :)
19:46:52 <avih> basically what everyone does in politics and also elsewhere: define rules which enforce the ruller's subjective point of view. the rest of us can only hope the ruller has fair point of view.
19:49:30 <esolangs> [[Abyssal-9]] https://esolangs.org/w/index.php?diff=168509&oldid=168507 * Sawyer.go0923 * (-233)
19:50:34 <avih> (i like to speedrun farcry 3)
19:50:40 <avih> (also been a while)
19:51:39 <ais523> b_jonas: I think efghij has sufficient *information* to write an interpreter, but actually writing the interpreter would be difficult
19:51:42 <avih> (not the actual main game. only reset the outputs and win all of them, which takes me just less than an hour)
19:52:10 <korvo> That's rad. All Outposts sounds like it should be a category.
19:52:12 <ais523> also, in the early days of the wiki, BANCStar was considered offtopic
19:52:37 <ais523> it is, after all, basically just a bytecode format
19:53:09 <avih> korvo: it might be. was never interested in the "scene". i just find it fun and relaxing.
19:53:14 <avih> and challenging :)
19:53:19 <ais523> is x86-64 machine code an esolang? it's certainly weird enough
19:55:07 <b_jonas> ais523: I think for including in the wiki, we needn't judge whether a language is esoteric enough, we can keep articles about non-esoteric languages too. but obviously I'm biased, I like to write those kinds of articles.
19:55:21 <korvo> TIL about BANCStar. Almost sounds like a joke. But I know MUMPS is real and this is only slightly more cursed.
19:55:33 <b_jonas> it's enough if the article says something that's of interest to the esoteric language community in general
19:55:41 <zzo38> I would say probably not, but if you have something remarkable to write about it which would be suitable for esolangs, write it anyways.
19:55:50 <ais523> I've actually never looked at MUMPS in detail, even though it's apparently a major enough language that I *should* know it
19:57:21 <b_jonas> korvo: it's hard to be sure if BancSTAR was real or a very elaborate joke. there seems to be more apparently original artifacts about it than for Kvikkalkul, but the person who tried to get a copy of the interpreter vanished. maybe the floppies were just cursed, wouldn't be strange, but maybe they vanished because there's no interpreter and they didn't want to admit that
19:58:08 <korvo> WP's got some examples: https://en.wikipedia.org/wiki/MUMPS#Features It is not bad when written out longhand, but it supports so many one-character tricks for abbreviating.
20:00:35 <zzo38> BANCSTAR seems legitimate to me (for a few reasons including examining existing parts of programs, including the small part that was originally published with no explanation; I think (if I remember correctly) that that small piece of code was asking a yes/no question), but of course I cannot know for sure.
20:00:58 <ais523> BANCStar is the sort of thing that, if fake, would only have been generated by AI
20:01:11 <ais523> nobody puts in the effort to make that much legitimate-looking content by hand
20:01:28 <ais523> but it's old enough that being an AI fabrication is unlikely
20:02:25 <ais523> also, as more details about it were discovered over time, it appeared to become more rather than less self-consistent, which is rare with fabrications
20:02:31 <zzo38> Considering my analysis of https://geocities.restorativland.org/ResearchTriangle/Station/2266/tarpit/bancstar.html as well as how old it is (like you mention), I think it is not generated by AI (unless the AI was specifically designed for this purpose, which seems unlikely)
20:09:09 -!- int-e has joined.
20:09:39 <ais523> hmm, so in MUMPS, global variables are *truly* global – they can be read from other programs, or from a later invocation of the same program
20:10:02 -!- int-e_ has quit (Quit: leaving).
20:10:10 <ais523> and Wikipedia suggests this is the etymology of the modern "global variable" concept which is more limited
20:12:26 <zzo38> I think that is also true in TI-92, although in TI-92 you can separate global variables into multiple areas.
20:12:51 <avih> zzo38: without analyzing the actual listing, the story sounds (entirely twisted but) legitimate to me too.
20:13:52 <ais523> BANCStar likely arose by starting with a simple "draw this text field at this location with a label at that location" form displayer, and features being gradually retrofitted onto it over time
20:14:22 <avih> yeah, some kind of piggyback evolution
20:14:26 <zzo38> ais523: Yes, that might be what it was.
20:15:43 <ais523> in x86-64 machine code, most commands are 32 bits by default, you prefix with 0x48 to make them 64 bits, with 0x66 to make them 16 bits, and add 1 to the opcode to make them 8 bits
20:16:18 <ais523> which is oddly asymmetrical and somewhat wasteful because 8 and 32 are not the most common widths, but it makes more sense when you consider its history as having grown from a machine code where there were only two relevant bitwidths
20:16:19 <avih> but i imagine it should be relatively simply to write a compiler for it which allows comments and indentations etc
20:17:12 <avih> it would be batshit crazy imo that the "machine code" was the actual source
20:17:24 <ais523> well, it wasn't, to start with
20:17:29 <ais523> but apparently the source language wasn't very powerful
20:17:40 <ais523> so people started coding in the machine code directly
20:17:45 <ais523> (for BANCStar, that is)
20:18:26 <avih> yeah, but then the machine code became actual source. i meant it should be relatively simple to improve the higher level language which compiles to the same machine
20:19:26 <avih> even if just a sed script which replaces "if" "goto" etc with the respective numbers, and allow indentation and comments
20:19:28 <ais523> but it would have been very unlikely to be open source, so you would have had to persuade its original authors to improve it (or give you access) in order to do so lehally
20:19:48 <ais523> I get the impression that the higher-level language didn't use traditional textual source code but was instead some sort of visual editor
20:20:22 <zzo38> It seems that someone did write a invent a higher level language (called BANCNova), although it seems that the original implementation was a visual editor like ais523 says
20:20:25 <avih> the way it's described at that page, it's simple enough that downsteram devs could do that on their own
20:20:35 <avih> i would do that if i had to target this machine
20:21:14 <ais523> ah, just write an entirely unrelated language that compiles into BANCStar, that makes more sense
20:21:41 <avih> not entirely. even directly, but at least be manageable
20:22:13 <avih> as i said, even some tiny sed thingy
20:23:31 <avih> remove all whitespaces, remove all lines which begin with '#' translate if/goto/whatever to the numbers, etc
20:24:28 <b_jonas> ais523: what would happen if there was an interpreter, but it disappeared from the internet since and it's hard to find a copy? what if there is an interpreter but you have to pay money for a license?
20:25:11 <ais523> b_jonas: fwiw I thought the interpreter policy would probably be a bad idea but also thought it's a good thought experiment
20:25:26 <korvo> avih: https://github.com/vijithassar/lit might be inspiring. In Monte, files with .md extensions are preprocessed with a lit-like pass, so that one can have .mt.md literate source or .asdl.md literate ASTs.
20:25:36 <ais523> (before correcting it, I typoed "probably" as "prnobbly" – that's an extreme enough typo to possibly make the next Befunge)
20:26:40 <korvo> I suppose that the original inspiration https://gist.github.com/trauber/4955706 is more ontopic for this channel.
20:27:12 <b_jonas> an interesting case is https://esolangs.org/wiki/SKOAL . it's not a language, but I don't think that's the relevant problem here. the problem is that to recreate it, you either have to find an existing copy, presumably used, and dump its ROM, or the harder version is to reverse engineer the ROM of the calculator and implement it yourself.
20:28:24 -!- Sgeo has joined.
20:29:12 <ais523> b_jonas: I guess SKOAL is easy enough to imagine and implement as a (not actually a language) *family* but the data needed to produce that specific board isn't and shouldn't be available
20:29:48 <ais523> this reminds me of when people try to create esolangs with a command saying "prints this text: really long text" as a method of trying to make the text ontopic so that it can be posted on the wiki
20:30:13 <ais523> I don't think that's legitimate either, the language should be parameterized on the text and the text should be offsite if anywhere
20:30:34 <avih> korvo: was not familiar with literate programming, but i only glimpsed at the wikipedia page, and it's not obvious to me how it's different from a source code file which is interleaved with extensive chunks of comments
20:31:17 <ais523> or to use a more legitimate example, in Jelly, there's a command that parses a sequence of bytes as token numbers, and outputs a string formed by concatenating the tokens
20:31:18 <avih> languages typically already have facilities to separate actual source from free text - comments
20:31:25 <ais523> but the map from token numbers to tokens is just a really big hardcoded map
20:31:28 <b_jonas> https://esolangs.org/wiki/Beecode doesn't even print a text that's releavnt
20:31:57 <avih> (but that being a knuth thing, i'm sure it has more substance than my initial impression)
20:31:59 <ais523> it doesn't seem right (and would be copyright infringing) to post the entire hardcoded map on the wiki, so it makes more sense to link to it
20:33:10 <ais523> avih: so my understanding of literate programming is that it is a combination of a) a programming language in which comments can be made particularly easy to read compared to the executed source code, and b) a programming style in which the program is ordered such that you can get an understanding of how it works by reading the comments and source in order from top to bottom
20:33:31 <ais523> but b) doesn't really show up in the languages because it isn't enforced, and a) is an almost trivial matter of syntax
20:34:18 <b_jonas> avih: oh yeah, good thing you mention it, https://esolangs.org/wiki/PL/MIX is one where we expect we'll never have enough information to create an interpreter
20:35:58 <avih> ais523: i think both can be applied in most (normal) languages?
20:36:48 <ais523> avih: yes, although it mostly depends on how awkward the comment syntax is
20:36:48 <avih> each language caters to a different sensibility of "readability", but overall it's just syntax, which one ultimately has to master in order to follow the code.
20:37:01 <ais523> to do it in C, you can imagine */…/* as being an "anticomment" symbol
20:37:09 <ais523> this works in most languages with C-style comments
20:37:13 <b_jonas> unless it's high level enough that it's the same language as PL/MMIX, which will be defined in TAOCP volume 5, as in something like C with implementation-defined word size
20:37:33 <b_jonas> but it has MIX in its name so that doesn't sound likely
20:37:43 <ais523> b_jonas: doesn't C also have implementation-defined word size?
20:38:02 <b_jonas> ais523: yes, that's why I'm giving C as an example for high-level language
20:38:20 <ais523> oh, I see, you're using C as an example rather than the word size as an exception
20:38:35 <ais523> this is an ambiguity in English that I don't think I've consciously noticed before
20:38:58 <avih> (i'll read a bit more about lit programming later, because i'm guessing it should have some substance other than style)
20:39:22 <ais523> it's a precedence ambiguity, "(something like C) with implementation-defined word size" (the intended meaning) versus "something like (C with implementation-defined word size)" (how I interpreted it)
20:40:46 <ais523> b_jonas: aww, now I'm disappointed that MMIX wasn't created in 2009, it seems like the sort of pun that programmers like Knuth would enjoy
20:41:28 <b_jonas> ais523: MMIX was created in 2009 for some value of created. it took multiple years to create.
20:43:02 <b_jonas> ok no, 2004 is probably the most relevant year when it was released
20:43:45 <b_jonas> so probably not created in 2009
20:51:20 <avih> korvo: that lit inspiration awk thingy could also be written as (untested): awk '/^```/{x=!x;next}; x'
20:53:10 <korvo> avih: The original literate-programming idea included a *tangling* phase that allows for programs to be written in arbitrary order. One tangling could lead to an executable version of the program and another tangling could produce a book; the book's chapters don't have to correspond to text sections in the executable.
20:53:38 <korvo> But yeah, if you've seen modules and docstrings then literate programming might seem like a dated concept.
20:53:58 -!- impomatic has joined.
20:54:08 <avih> yeah, what i thought as well
20:54:59 -!- amby has quit (Ping timeout: 256 seconds).
20:55:15 -!- amby has joined.
20:57:23 <korvo> avih: Here's a motivating example: https://github.com/monte-language/typhon/blob/master/mast/lib/prom.mt.md This is a Prometheus metrics server. The literate level contains two levels of quotation; the upper level is block-quoting hunks of the Prometheus upstream guide for server authors. The overall effect is that one can read three different levels of quotation all at the same time.
20:57:31 <ais523> korvo: very few languages have a reason to write in order nowadays, apart from languages where declaration needs to precede use
20:58:50 <korvo> ais523: Or inside expressions, e.g. ordering of pattern-matching clauses.
20:59:13 <ais523> korvo: hmm, now I'm imagining a pattern match split up all over the program
20:59:52 <ais523> in a way, that's what implementing an interface does (with the Java-ish OO meaning of "interface")
21:00:15 <korvo> Oh, no, Thue's explicitly non-deterministic in ordering.
21:00:44 <ais523> there is some debate about what sort of nondeterminism is used
21:00:57 <ais523> I consider it to be angelic nondeterminism, like is used in, e.g., context-free grammars
21:01:00 <ais523> but some people think it's randomization
21:03:11 <ais523> there are weirder versions of nondeterminism too, e.g. Prolog attempts to simulate angelic nondeterminism but it has a defined evaluation order and ways to screw with the evaluation from inside
21:03:20 <ais523> meaning that the purity breaks down somewhat
21:03:58 <ais523> (that said, Prolog's evaluation order is fun to think about in an esoteric sort of way)
21:05:10 <ais523> I wonder whether ! started out as an optimisation primitive that was meant to be used only when it wouldn't change the semantics of the program and then got weirder over time as people started exploiting the undefined cases, or whether the weirdness was intended from the start
21:05:43 <ais523> (the optimisation-only cuts are apparently called "green cuts" by Prolog programmers, the ones that have an effect on control flow are "red cuts")
21:12:26 <esolangs> [[Iterate/Compilation]] N https://esolangs.org/w/index.php?oldid=168510 * Aadenboy * (+4635) Created page with "{{Back|Iterate}} For convenience, this page defines a more programmer-friendly version of Iterate that can be compiled into syntactically correct code. The compiled code should optimally be devoid of whitespace, since such isn't necessary to properly parse
21:13:07 <esolangs> [[Iterate]] https://esolangs.org/w/index.php?diff=168511&oldid=168492 * Aadenboy * (+151) /* Syntax */ note compiler
21:15:22 -!- amby has quit (Read error: Connection reset by peer).
21:15:30 -!- amby has joined.
21:24:21 -!- simcop2387 has quit (Quit: ZNC 1.9.1+deb2+b3 - https://znc.in).
21:24:21 -!- perlbot has quit (Quit: ZNC 1.9.1+deb2+b3 - https://znc.in).
21:25:21 -!- chiselfuse has quit (Remote host closed the connection).
21:25:35 -!- chiselfuse has joined.
21:55:50 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=168512&oldid=168363 * Buckets * (+11)
21:56:54 <esolangs> [[Language list]] M https://esolangs.org/w/index.php?diff=168513&oldid=168361 * Buckets * (+12)
21:57:39 <esolangs> [[Input Text Feild ,(comma) Please]] N https://esolangs.org/w/index.php?oldid=168514 * Buckets * (+19) Redirected page to [[ITF,P]]
21:57:48 <esolangs> [[ITF,P]] N https://esolangs.org/w/index.php?oldid=168515 * Buckets * (+1996) Created page with "ITF,P Is An Esoteric programming language created By [[User:Buckets]] in 2024 and Stands for "Input Text Feild ,(comma) Please". The Pseudo-Commands Are Exactly The same as [[brainfuck]]'s command set. {| class="wikitable" |+ The actual Commands |- ! Input Text-Dependen
22:18:45 <esolangs> [[QuantaScript]] N https://esolangs.org/w/index.php?oldid=168516 * Cyclic Tag * (+3468) Created page with "'''QuantaScript''' is an esolang made by Google Gemini prompted by Cyclic Tag. The language operates exclusively on a single stack that can hold values in one of three states: '''0''' (False/Down), '''1''' (True/Up), or '''?''' (Superposition). ==Concepts and D
22:24:06 <esolangs> [[Iterate]] https://esolangs.org/w/index.php?diff=168517&oldid=168511 * Aadenboy * (+23) [[Category:Low-level]]
22:42:25 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168518&oldid=168475 * NTMDev * (+4) /* Mod, MathConstants */
22:51:11 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168519&oldid=168518 * NTMDev * (+1050) /* Enumeration */
22:52:39 -!- impomatic has quit (Ping timeout: 250 seconds).
22:55:27 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168520&oldid=168519 * NTMDev * (+468) /* Mod, MathConstants */
22:56:01 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168521&oldid=168520 * NTMDev * (+26) /* String Operations 1 */
23:01:30 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168522&oldid=168521 * NTMDev * (+91)
23:01:38 <avih> int-e: it works, it's shorter (71 -> 60), but not sure how i feel about it. what do you think? https://0.vern.cc/S.txt
23:02:24 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168523&oldid=168522 * NTMDev * (+37)
23:02:44 <int-e> avih: looks fine to me
23:02:49 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168524&oldid=168523 * NTMDev * (-14)
23:03:50 <esolangs> [[Main Page]] https://esolangs.org/w/index.php?diff=168525&oldid=167820 * NTMDev * (-3810) Blanked the page
23:03:56 <esolangs> [[Main Page]] https://esolangs.org/w/index.php?diff=168526&oldid=168525 * NTMDev * (+3810)
23:04:33 <avih> it does use COND once, and it can be applied generically, and it's not even meaningfully slower, so that's definitely a plus, but... dunno... feels... yet even more complex. not in a bad way, but still...
23:05:07 <avih> (but maybe that's just life with bf code...)
23:05:34 -!- impomatic has joined.
23:05:47 <avih> (it took me a while to actually get it to work...)
23:10:05 <avih> the fact that COND is (==1) and the way it's constructed, it also means "-1" has to appear twice and same for "+1", so this doesn't help construction or readability either...
23:11:08 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
23:13:54 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168527&oldid=168524 * NTMDev * (+865) /* Uppercase, Lowercase */
23:18:26 <int-e> avih: not duplicating the conditional code that can be arbitrarily complex sounds like a win to me
23:19:10 <avih> it definitely is, it's the cost i'm not sure how i feel about
23:20:44 <avih> no complaint about your suggestion at all. i quite like it. and yet the result is still way more complex than i'd hoped for "while (==1) {+9; >>>}"
23:22:40 <avih> but again, this is only gut feeling. i don't have enough experience in bf to tell whether this should really be much smaller
23:23:09 <ais523> some short BF programs (like hello worlds) have been produced by computer search and they don't look much like human-written programs at all
23:23:39 <ais523> so even if the program could be much smaller by using some obscure technique, it's unlikely that a human would be able to figure it out
23:23:41 <avih> i know, that's the kind of code which int-e produces manually :)
23:24:30 <avih> i know. not looking for obscure stuff which just fits this specific task.
23:25:16 <avih> but as a general thing for what i consider a relatively simple task, i would have expected less code. it's entirely possible my expectations are wrong in bf.
23:26:06 <ais523> the way I think about it is that BF has commonly seen groups of commands that might act much like a single command in a higher-level language
23:26:16 <ais523> but they generally take up much more space, so the program gets longer
23:26:51 <avih> hmm it does appear that way, yeah
23:42:54 <avih> i think i might look at that bfmacro thing, to check what it produces for this kind of task. though the more general the language is (i presume the macros - i didn't really look into it so far), the more overhead the resulting code would have. still, would be interesting to see what it produces here.
23:44:14 <int-e> I believe avih wants to strike a balance between preserving high-level structure and size, which is hard and inherently subjective.
23:45:08 <avih> because in my head, i think i try to do what bfmacro does. i.e. i'm hoping not to treat mini task as its own kind of puzzle to solve. that feels seriously unrealistic to use that approach, except when minimum size counts above everything else.
23:45:26 <esolangs> [[Talk:Burn]] https://esolangs.org/w/index.php?diff=168528&oldid=168499 * Ais523 * (+640) /* Thoughts on burn */ thoughts on thoughts on Burn
23:45:47 <avih> int-e: why do you think it's subjective?
23:46:34 <int-e> because you can trade size for clarity so it's a matter of which one you value more
23:47:02 <avih> sure, what matters more is subjective. on that i agree.
23:47:38 <avih> (and did agree before too - it's a viable approach if size carries more weight than other things)
23:51:23 <avih> i'm also looking at it from a point of view of practically using bf to write something meaningful. as in, the general challenge to to form the solution approach, and typically the implementation is the relatively easy part if the approach is solid. but here it seems that the implementation itself is its own challenge too.
23:51:52 <avih> is* to form the approach
23:52:55 <avih> (i don't actually intend to write meaningful bf programs, but it's still the perspective i use even with simple things)
23:53:07 <ais523> unoptimising BF interpreters are normally really easy and boring unless you write them in an esolang, optimising BF interpreters is a really itneresting challenge though
23:53:19 <ais523> at least if you take the optimisations far enough
23:54:59 <avih> yeah. mine only does balanced loops so far. that's relatively trivial, but it already beats almost all the "optimizing" interpreters out there, with the exceptions of bffsree in some cases, and, more meaningfully, https://github.com/rdebath/Brainfuck
23:55:49 <avih> the next step in optimizing definitely involves graphs or some other higher level view at dependencies.
23:56:27 <ais523> I think if you go far enough your optimiser starts thinking in terms of counters and stacks, rather than the BF tape
23:56:40 <avih> especially that link above is really amazing. not perfect, but really damn good. i judge by the c code it produces, which really handles multiple levels of nesting
23:57:10 <ais523> there's also ratiofall, my interpreter for The Waterfall Model, which is an interpreter for a counter machine but the problem of optimising that is basically equivalent to the problem of optimising balanced bignum BF
23:57:24 <avih> and of course tracking available knowledge at any point in time is a must as well
23:57:28 <ais523> (but the bignum is important, some of the optimisations don't really make sense except on programs that are using bignums to store data)
23:57:35 <avih> s/tracking/maintaining/
23:58:52 <avih> hmm.. i never considered bignum bf. i don't have a sense of where it differs from normal (wrapping cells) bf
23:59:14 <avih> (i get the diff, but not the sense of where it affects optimizations)
00:00:39 <avih> ais523: can your interpreter optimize over what ends up as nesting loops in bf?
00:00:44 <ais523> well, a bignum can be used to store arbitrary amounts of data (pretty much by definition), and some programs do that as an alternative to using multipel tape cells
00:01:03 <ais523> the waterfall model uses a different control flow scheme, but effectively yes
00:01:56 <ais523> it works by tracing round sequences of execution that actually happened to see whether they're exact repeats except that some cells increased/decreased by constants without any successful zero tests on them
00:02:01 <avih> yeah, i start getting a sense of the challenge. for instance an instruction can't hold some constant to add to some other cell. it has to actually apply the operations on memory. is that kinda it?
00:02:10 <ais523> and then just simulates the remaining loop executions until something tests as zero
00:02:37 <ais523> this is enough to optimise code that implements a divmod into an actual divmod instruction
00:02:56 <ais523> and divmod is one of the most important operations when using a single tape cell to store arbitrary amounts of data, because it lets you use it like a stack
00:03:17 <ais523> (you hold the stack in the digits of the number, the top of the stack is the least significant digit, then you divmod to pop and multiply-add to push)
00:04:22 <avih> i sort of get the very rough idea of what you're saying, but really not more than that :/
00:04:50 <avih> (but i'm definitely missing background here)
00:06:05 <ais523> actually this reminds me of the discussion on literate programming above
00:06:21 <ais523> literate programming isn't a huge change to what you can do, but it's expected to be combined with a particular programming style
00:06:29 <avih> and when i think about it, i'm not even sure where i'd start optimizing bignum bf, because except trivial constants, an instruction can't include them...
00:06:41 <ais523> bignum BF is similar, it doesn't hugely change programs written for wrapping interpreters, but it adds new possibilities which have their own style
00:06:59 <ais523> (and bignum BF is often run on very short tapes – three cells is enough)
00:07:17 <avih> yeah, i do get the extra dimension it adds, quite literally
00:07:43 <b_jonas> avih: I assume you'd optimize all loops that have no inner loop and are balanced
00:07:47 <avih> it's like every cells is its own infinite tape
00:07:59 <ais523> avih: yes, that's a good way to put it
00:08:28 <avih> b_jonas: yes. but that's trivial. teh next step is the interesting one.
00:08:57 <ais523> avih: have you seen the result that bignum brainfuck only needs two pairs of brackets (total, in the whole program) to be Turing-complete?
00:09:42 <avih> b_jonas: the 1k bf2c in sh which you saw does that too, in like 5 lines of awk.
00:09:44 <ais523> https://cs.stackexchange.com/questions/102363/how-many-pairs-of-brackets-are-sufficient-to-make-brainfuck-turing-complete
00:10:00 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168529&oldid=168497 * Sawyer.go0923 * (+61)
00:10:02 <ais523> this sort of thing is why optimising nested loops is in general very hard
00:10:37 <avih> ais523: no. but i do get a sense of why that can be true
00:10:57 <ais523> I'm not sure how many you need for 1-bit or 8-bit BF
00:10:57 <avih> (even if not the specifics)
00:11:47 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168530&oldid=168529 * Sawyer.go0923 * (-2)
00:12:26 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168531&oldid=168530 * Sawyer.go0923 * (+35)
00:12:34 <avih> ais523: in general absolutely yes, but practically in many cases, as long as all the loops are balanced, it doesn't feel beyond reach. but it does require more infrastructure for tracking states and deps
00:13:13 <avih> (re hard to optimize nesting loops)
00:13:17 <ais523> right, in the 2-bracket BF construction both loops are unbalanced (in different directions)
00:14:58 <avih> plain flat balanced loops can be done almost blindly. it really requires very little.
00:15:26 <avih> (i.e. counter loops, where it's balanced and head overall delta is 1 or -1)
00:16:50 <ais523> there is something called the "polynomial optimisation" which is used for nested balanced loops, but I'm not sure I fully understand it – I think it only works for some of them rather than all of them
00:17:02 <esolangs> [[!frjnrehrbwgyrigbyieurgbyfaerkhbvrwgtr.]] https://esolangs.org/w/index.php?diff=168532&oldid=168479 * Sawyer.go0923 * (+16)
00:20:00 <avih> ais523: i might have a sense of where it stops working - when the same cell is used cumulatively at multiple levels of nesting
00:20:14 <ais523> avih: that's my guess too
00:20:30 <avih> in some cases it should be solvable too, but i think not in all of them
00:21:51 <ais523> I think probably the case where it doesn't work is if the inner loop changes the outer loop's control cell
00:21:56 <avih> because the nesting scenario doesn't flat out unroll it - it turns it into an an "if", which is great speedup, but hard to optimize over multiple levels
00:22:58 <avih> (no pun intended in "flat out")
00:23:07 <avih> (well, maybe just a little)
00:24:03 <avih> ais523: yeah, that definitely wouldn't work with a "naive" optimizer for this construct, but if it can track the values and still "get" the over delta, it might
00:26:11 <ais523> hmm, I think balanced-loop-only bignum BF is TC, because I think you can compile Brainpocalypse II to it, but I haven't worked out the details of the compile so maybe I'm missing something important
00:26:13 <avih> but an optimizer doesn't have to optimize everything. if whatever it optimizes is effective, at reasonable cost, then it's still worth it
00:27:34 <b_jonas> one thing that could be hard to optimized is if a conditional is implemented as unbalanced like [BODY >]< where the right square bracket is on a cell that's always zero but you can only tell that from global analysis
00:27:39 <ais523> it's still interesting to figure out the point at which an optimizer *can't* be written, though, as it helps to know what can be
00:27:51 <b_jonas> as opposed to, say, [BODY >[-]]<
00:28:00 <ais523> b_jonas: that's actually the thing that made me give up trying to write a BF optimizer myself
00:28:23 <ais523> trying to figure out global invariatns
00:28:27 <avih> b_jonas: that _should_ be optimizable if the optimizer keeps track of known cell values, at least to some degree
00:29:19 <avih> (depending which barriers make it drop its knowledge)
00:30:12 <b_jonas> avih: yes, but it needs to simultaneously optimize conditionals to figure out that this [BODY>]< is balanced and figure out global invariants, because those two can circularly depend on each other
00:30:40 <ais523> global invariants circularly depend on themselves, it's a pain
00:31:17 <b_jonas> I don't want to write a brainfuck optimizer, but that sort of thing can come up in less esoteric optimizers too
00:31:20 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168533&oldid=168531 * Aadenboy * (+478) add note
00:31:23 <avih> yes. it depends a lot on the specifics. but in my mind, there's a maximum body of knowledge that an optimizer can keep track of (without actually running the code), and if some constructs are deducable from this knowledge, then it's optimizable
00:33:25 <ais523> there's also the JIT approach: you guess at a global invariant, and produce code that runs assuming the invariant (while checking it's true), and if the invariant ever becomes false, it recompiles itself without the invariant
00:33:40 <ais523> (this can save time even if the invariant isn't always true, as long as it's usually true)
00:34:12 <ais523> and I guess a variant of that where you codegen two versions, one which assumes the invariant and one that doesn't, and jump back and forth based on whether it's true or false at the time
00:34:26 <avih> ais523: how do you prevent it from running indefinitely? setting some hardcoded limit on the instructions executed or some such?
00:34:40 <ais523> avih: prevent what from running indefinitely? the program or the optimiser?
00:34:52 <avih> the hit to test the hypothesis
00:35:10 <ais523> avih: so you run it while the program is running
00:35:17 <ais523> and monitor what the program actually does
00:35:34 <ais523> i.e. you aren't trying to predict the program's behaviour in advance, you monitor it at runtime instead
00:35:53 <avih> how do you know that if you hit head 1000 times, the next coin flip won't be tail?
00:35:55 <ais523> this means that the running program has to recompile itself if you guessed wrong, so the program and the compiler are kind-of looped into each other
00:36:07 <ais523> avih: you don't, but you've simulated the program with 1000 heads
00:36:25 <ais523> and if it eventually hits tails, you still have the state of the program after 1000 coinflips to start from
00:36:36 <ais523> so you recompile a version that doesn't assume heads but continue it where it left off
00:36:42 <avih> not sure i get it then. how does it optimize then, if it only runs with the program?
00:37:01 <ais523> the optimizer runs while the program is running rather than beforehand
00:37:17 <ais523> so it has to be able to change what code is running while it's running
00:37:18 <avih> still, what can it tell about the future?
00:37:25 <ais523> it doens't have to, it just has to check
00:37:43 <ais523> like, say after 10 heads, it thinks "I should generate code that assumes heads because it'll run faster while this run of heads continues"
00:37:47 <avih> i must be missing something. let me read that jit thing more carefully. sec.
00:38:02 <ais523> then after another 990 heads, it finds out that it was wrong – but that doesn't matter because it still ran 990 coinflips at high spee
00:38:13 <ais523> which is faster than using the unoptimised version for all 1000
00:38:17 <avih> so basically modern cpu branch prediction?
00:38:29 <avih> why didn't you say that? :)
00:38:38 <avih> (i did think about it too in the past)
00:38:48 <ais523> because I didn't realise it was an analogy that would help (and didn't realise it was an analogy until you pointed it out)
00:39:26 <ais523> speculative execution in current CPUs does seem to be best viewed as though it were a type of JIT
00:39:43 <esolangs> [[User talk:Sawyer.go0923]] https://esolangs.org/w/index.php?diff=168534&oldid=168533 * Sawyer.go0923 * (+148)
00:39:50 <avih> i thought you'd use jit to check which future is the correct one, but probability based, sure, it should work
00:42:26 <avih> in a way, one of the reasons my optimizing interpreter is so much faster even from others which basically do the same shtick (plain balanced loops), is because my main loop is optimized according to the instructions probabilities (cascading if-else tree), rather switch/case over the instructions. this ends up basically 2x faster almost always
00:44:09 <avih> the interesting part is that i was sure that with switch/case, PGO would "get it" and optimize it at least as good as my manually constructed if-else tree, but far from it. not even close.
00:45:10 <ais523> I wonder how this compares to threaded code in terms of branch prediction efficiency?
00:45:24 <ais523> switch/case doesn't branch-predict well because all the branches are done from the same point
00:46:07 <ais523> "threaded code" is the name given for the technique where, at the end of the equivalent of each case…break of a switch, you use a separate technique for branching to the correct label from there
00:46:24 <ais523> (which in practice usually seems to be a computed goto, although if-trees probably also work)
00:46:40 <ais523> that way the branch predictor learns which branches tend to follow which other branches, rather than which branch is the most common overall
00:46:48 <ais523> I've never tried it but I've heard good things about it
00:46:51 <avih> i understand. i don't know. i think a combination of both would get the advantage of both?
00:46:58 <esolangs> [[Luau]] N https://esolangs.org/w/index.php?oldid=168535 * Sawyer.go0923 * (+426) Created page with "Luau is not an esoteric programming language. To check it out, go to the [https://en.wikipedia.org/wiki/Luau_(programming_language) Wikipedia page] or [https://luau.org luau website]. ==See also== * [https://en.wikipedia.org/wiki/Luau_(programming_language) Luau] * [[
00:48:11 <avih> but it _really_ surprised me that PGO over a single switch was nowhere near if-else tree. like, really.
00:49:07 <ais523> PGO is probably just checking the probabilities of each case of the switch, and if all of them are below 50%, it probably didn't change the codegen at all
00:49:24 <avih> and the switch was as "optimized" as it can be for PGO to assess it correctly. less than 10 cases, all of them small and end in "break", sequential values starting at 0, basically everything it could want was there, but in the end, really nowhere near.
00:49:49 <ais523> hmm, maybe the compiler is better at jump-threading the if-else tree than it is at jump-threading the switch
00:50:48 <avih> sec, let me show you the approaches.
00:51:05 <ais523> this came up in Rust, the "match in a loop" method of implementing the equivalent of a computed goto is the best option Rust has atm, but it optimises poorly, and apparently that's because LLVM can't jump-thread properly through a match/switch in a loop (which is apparently because, although the code for that exists, it's too slow to turn on by default)
00:51:11 <int-e> ais523: I'm afraid to ask what multi-threaded code might be then (scnr)
00:51:26 <ais523> int-e: this is an unfortunate clash of names
00:51:49 <int-e> we're so bad at terminology (we = humanity, collectively)
00:52:27 <ais523> I like trying to do simplifications that cross multiple levels of abstraction, but they are often hard to talk about because different levels use the same term to mean different things
00:53:34 <avih> https://0.vern.cc/B.txt
00:53:46 <ais523> "capability" has been coming up quite a bit recently, it means three different things that are relevant to the things I'm trying to reason about (and a fourth that isn't directly relevant but could be)
00:54:24 <ais523> avih: right, this is probably an issue with jump threading
00:54:57 <ais523> actually no, the compiler isn't likely to be looking at *pc
00:55:03 <ais523> so jump threading wouldn't help
00:55:43 <avih> i would think it just needs to find out the probabilities of each case.
00:56:23 <ais523> you might want to look at the machine code to see how it differs
00:56:36 <avih> i ran few bf programs, big and small, and noticed that the probabilities, at least with my instructions set, are largely similar
00:56:49 <ais523> I don't think PGO would help the switch/case much because it's likely to compile into the same jump table regardless of the probabiities, unless they're extremely skewed
00:57:15 <avih> so that's how i constructed my if-else tree. it could differ with others though. e.g. in my case ADD also does zero.
00:58:00 <ais523> now I'm wondering how much work a truly branchless BF interpreter would be
00:58:19 <avih> ais523: yeah, i did want to check what it generates, but didn't get to that yet. but suffice is to say that neither gcc not clang got anywhere near with PGO. but clang got closer than gcc.
00:59:17 <avih> ais523: surely it would not be possible?
00:59:39 <avih> well.. i think it would not be possible
00:59:58 <ais523> it should definitely be possible (except for I/O which doesn't really need optimising because it's so slow naturally), a non-optimizing interpreter could represent each opcode by amount to add to current tape element, amount to add to tape pointer, amount to add to instruction pointer if current tape element is nonzero
01:00:15 <ais523> that only contains one "if" which could be replaced by a conditional select
01:00:19 <avih> but it is one of the things my code tries to minimize. almost no branching inside each of the instructions code do_XXX
01:00:50 <avih> like, input checks for EOF, but that's almost it.
01:00:50 <esolangs> [[ErrorFull]] https://esolangs.org/w/index.php?diff=168536&oldid=146279 * Sawyer.go0923 * (+400)
01:01:15 <ais523> your , and . will have a lot of branches inside the standard library routines you call into to do the I/O
01:01:24 <avih> the code which runs the most if by far the instructions selector
01:02:17 <avih> sure, but that's out of my control, at least until (if) i merge consecutive outputs into one
01:02:42 <avih> i did try that btw. implement line buffer inside the interpreter. nearly zero impact.
01:02:58 <ais523> , and . don't run often enough to need optimising
01:03:04 <avih> well, not even nearly. i couldn't measure a diff.
01:03:24 <avih> exactly. they're not the bottleneck.
01:04:01 <ais523> programming for when I/O is the bottleneck is really weird and significantly different from normal programming
01:04:36 <ais523> so I wouldn't worry about trying to micro-optimize I/O too much, when it's worth it your whole program changes
01:04:57 <avih> so to get the fastest, it needs to minimize the code and branching to reach the next instruction code. and the if-else tree does part of it, the fact that the main loop doesn't have a stop condition is another (a specific instruction stops it - not testing the stop condition on every instruction)
01:05:44 <ais523> I think that's almost equivalent, the advantage to the specific instruction is that it can be on the inside of the if-else tree rather than the outside
01:06:15 <avih> exactly. branch prediction makes it slow, but who cares
01:07:10 <avih> but i didn't actually check a loop of: for (; is_exit; pc++). from the initial version my main loop was without a stop condition.
01:08:19 <ais523> <ais523> it means three different things ← in case someone in the logs asks, I'll give the answer pre-emptively in advance: capability bits of a pointer that specify the range it can access; object-capabilities; "capability passing style" in which the ability to do exclusive access to a piece of memory is passed into a function and returned from that function rather than being borrowed; and the fourth is Linux capabilities which split up the various
01:08:42 -!- ais523 has quit (Quit: quit).
01:23:29 <esolangs> [[WORST]] N https://esolangs.org/w/index.php?oldid=168537 * Sawyer.go0923 * (+6129) Created page with "{{Infobox language | name = WORST | year = 2025 | designer = User:Creator | website = | paradigm = Esoteric, intentionally hostile | license = Public domain }} '''WORST''' is an esoteric programming language designed to be as unpleasant, counter-intuitive, and err
01:35:20 <esolangs> [[WORST]] https://esolangs.org/w/index.php?diff=168538&oldid=168537 * Sawyer.go0923 * (-162)
01:52:08 <esolangs> [[Esolang talk:Community portal]] https://esolangs.org/w/index.php?diff=168539&oldid=166844 * NTMDev * (+40)
01:52:20 <esolangs> [[Esolang talk:Community portal]] https://esolangs.org/w/index.php?diff=168540&oldid=168539 * NTMDev * (+17) /* Discord */
01:57:40 <esolangs> [[Esolang talk:Community portal]] https://esolangs.org/w/index.php?diff=168541&oldid=168540 * Aadenboy * (+331)
02:21:08 -!- simcop2387 has joined.
02:25:10 -!- perlbot has joined.
02:32:37 -!- 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).
02:42:37 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168542&oldid=168527 * NTMDev * (+507) /* sort */
02:44:11 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168543&oldid=168542 * NTMDev * (+89) /* String Checkers */
02:44:43 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168544&oldid=168543 * NTMDev * (+56) /* String Checkers */
02:48:35 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168545&oldid=168544 * NTMDev * (+482) /* String Checkers */
02:52:14 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168546&oldid=168545 * NTMDev * (+158)
04:15:30 <esolangs> [[Resubmit]] https://esolangs.org/w/index.php?diff=168547&oldid=168237 * Yayimhere2(school) * (+86) /* Semantics */
04:15:46 <esolangs> [[Resubmit]] https://esolangs.org/w/index.php?diff=168548&oldid=168547 * Yayimhere2(school) * (-6) /* Semantics */
04:37:40 -!- b_jonas has quit (Ping timeout: 256 seconds).
04:37:55 <esolangs> [[Bitty]] https://esolangs.org/w/index.php?diff=168549&oldid=168192 * Nomnomnom * (+159) added comptational class
05:23:05 -!- impomatic has quit (Ping timeout: 250 seconds).
05:53:22 -!- int-e_ has joined.
05:53:36 -!- op_4_ has joined.
05:54:17 -!- pool2 has joined.
05:56:41 -!- pool has quit (Ping timeout: 256 seconds).
05:56:41 -!- perlbot has quit (Ping timeout: 256 seconds).
05:56:41 -!- int-e has quit (Ping timeout: 256 seconds).
05:56:41 -!- op_4 has quit (Ping timeout: 256 seconds).
05:56:41 -!- slavfox has quit (Ping timeout: 256 seconds).
05:56:41 -!- pool2 has changed nick to pool.
05:56:43 -!- op_4_ has changed nick to op_4.
05:56:43 -!- Melvar has quit (Ping timeout: 256 seconds).
05:58:15 -!- slavfox has joined.
05:59:23 -!- perlbot has joined.
06:10:31 -!- Melvar has joined.
06:22:05 -!- pool has quit (Read error: Connection reset by peer).
06:24:12 -!- pool has joined.
06:38:27 -!- impomatic has joined.
06:47:00 <esolangs> [[Sorted!]] https://esolangs.org/w/index.php?diff=168550&oldid=38970 * Tpaefawzen * (+84) /* External resources */ +1
06:59:52 <esolangs> [[JUSTIF]] https://esolangs.org/w/index.php?diff=168551&oldid=91381 * Tpaefawzen * (+58) /* External resources */ +1
07:53:01 <esolangs> [[Vixen]] https://esolangs.org/w/index.php?diff=168552&oldid=166918 * Corbin * (+5) /* Core */ Clean up quotation marks.
07:58:48 <esolangs> [[Vixen]] https://esolangs.org/w/index.php?diff=168553&oldid=168552 * Corbin * (+401) /* Objects */ More precisely explain parents and delegation as well as the asterisk convention.
08:06:57 -!- impomatic has quit (Quit: Client closed).
08:10:56 <esolangs> [[Vixen]] M https://esolangs.org/w/index.php?diff=168554&oldid=168553 * Corbin * (+0) /* Cloning */ Fix flag to execlineb. Yes, it almost doesn't matter. Yes, it can be the cause of subtle bugs when chaining calls.
08:26:21 -!- Sgeo has quit (Read error: Connection reset by peer).
08:31:27 -!- tromp has joined.
09:45:09 -!- Taneb has joined.
10:33:52 -!- impomatic has joined.
10:51:32 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168555&oldid=168451 * C++DSUCKER * (+40) I changed my mind, the langauge should no longer be allowed to be recursive. i wil add a finite recursion operator.
10:53:21 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
10:55:02 <esolangs> [[Contains everything]] https://esolangs.org/w/index.php?diff=168556&oldid=168555 * C++DSUCKER * (+9)
11:02:01 -!- tromp has joined.
11:15:53 -!- impomatic has quit (Quit: Client closed).
11:34:29 -!- int-e_ has changed nick to int-e.
11:53:42 -!- Everything has joined.
12:32:21 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:36:27 -!- Taneb has quit (Ping timeout: 252 seconds).
12:44:04 -!- Taneb has joined.
12:48:46 -!- tromp has joined.
13:18:32 <avih> int-e: i managed to improve my COND (==1) so that: 1. one '-' and one '+' instead of two of each. 2. restore the original value before entering the COND block. 1/2 combined is less complex (easier to document) and less moves/instructions (-4 chars). i think i'm now reasonably happy with it (bottom version). i said i really like your "one COND" approach... https://0x0.st/KfTu.txt
13:22:43 -!- pool has quit (Read error: Connection reset by peer).
13:23:10 -!- pool has joined.
13:31:31 -!- ais523 has joined.
13:38:58 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
14:05:55 -!- tromp has joined.
14:22:34 -!- impomatic has joined.
14:26:55 -!- impomatic has quit (Ping timeout: 250 seconds).
14:44:02 <esolangs> [[Luau]] https://esolangs.org/w/index.php?diff=168557&oldid=168535 * Sawyer.go0923 * (+4)
15:06:24 -!- Taneb has quit (Ping timeout: 244 seconds).
15:16:53 -!- wob_jonas has joined.
15:22:53 -!- pool has quit (Read error: Connection reset by peer).
15:23:11 <wob_jonas> ais523: re match in a loop optimizes badly, that sounds omnious because I want to compile Enchain into C (or C++) switch in a loop. this works better in C than in Rust because C switch has fallthrough between a cases, so when the Enchain code has a conditional jump it compiles to setting a variable to the target then a conditional break.
15:24:56 -!- pool has joined.
15:32:21 <wob_jonas> normally you'd just compile into if{goto} in C. I was thinking of a switch because for some reason I put it into my head that I want to allow nested functions and that you should be able to goto out from a function, so when that happens the compiled C function would return an integer telling the label to jump to, or zero to continue execution
15:32:22 <wob_jonas> normally. this is almost certainly a bad idea, I shouldn't do it, I don't think my original motivation for it is valid, and even if I do allow it it would be easier to just add a small switch{goto} at every call side of such a function, because most nested functions that you write in practice will have only very few jump targets.
15:35:30 <ais523> wob_jonas: you can avoid the performance penalty by manually using gotos between the switch arms rather than going round the loop
15:35:43 <ais523> even if the switch and loop exist, nothing forces you to use them, you can just goto instead
15:36:42 <wob_jonas> exactly, and I shouldn't use the looped switch at all, I should just compile to goto, if{goto}, switch{goto} in C.
15:37:09 <wob_jonas> if I don't use the case labels then I don't need the switch in first place
15:38:16 -!- wob_jonas has quit (Quit: Client closed).
15:38:29 -!- wob_jonas has joined.
15:38:52 <wob_jonas> the switch would be needed if I allowed jumps with runtime-computed targets, which I probably could do but probably shouldn't do. I should make all label values compile-time constants.
15:39:11 <wob_jonas> I mean all label values in Enchain compile-time consants.
15:40:17 <wob_jonas> ok, so then the big looped switch for the whole function body is just a bad idea that I confused myself into
15:40:38 <ais523> fwiw I don't know why compilers find it hard to optimise a loop-switch where an arm specifies a value for the switch constant on the next iteration into a direct goto between branches
15:40:58 <ais523> I've been told it's hard to get that particular optimisation to run efficiently, but don't know why
15:46:32 <wob_jonas> ais523: I was told that rust doesn't have a goto built-in because it would be hard to teach the old lifetime checker to handle it correctly, but the old lifetime checker isn't even around anymore so I'm not sure that applies. But at least even if goto is easy to compile in C, if you want to compile it in C++ the compiler has to figure out which
15:46:32 <wob_jonas> local variables to destroy (and prove that no local variables have to be initialized, that would be a compile error). I imagine there might be a similar but harder problem in rust, because in general the compiler has to update the initialized flags for all local variables, and it's very important that the compiler understands the control flow well
15:46:33 <wob_jonas> enough that it can completely optimize out initialized flags or their updates almost all the time.
15:47:25 <ais523> the current plans for Rust is to have some way to mark the end of a branch of a loop-switch to say that it's actually meant to be compiled as a goto
15:48:16 <ais523> so that all the borrow checking, drop flags, etc. can be done on the loop-match and then all that changes is the code generation
15:48:45 <wob_jonas> oh yeah, "drop flags" is what they're called
15:55:27 <wob_jonas> ais523: I don't think that works. I thought the problem was that the liveness checker needs to understand goto to understand arbitrary control flow involving goto, because if it's phrased as loop-switch then the necessary information is hidden in some state variable of whose value the liveness checker doesn't need to track.
15:56:08 <ais523> wob_jonas: well there may be false positives (i.e. programs that would be sound but are rejected) doing it this way, but that doesn't create any soundness holes
15:56:57 <wob_jonas> but then couldn't it also create cases when the compiler doesn't optimize away drop flags properly for the same reason?
15:58:17 <ais523> wob_jonas: possibly but I don't think that's seen as an issue
15:59:08 <wob_jonas> since gotos and conditional gotos (as well as function calls and function returns) are the main form of control flow in Enchain, I want the typechecker to understand the control flow, as in for each point statement I want to know what the next statement executed after it can be. this is why I shouldn't have computed gotos (or function pointers),
15:59:08 <wob_jonas> those make the control flow almost impossible to follow.
16:00:08 <wob_jonas> and the control flow graph seems an easier abstraction to understand than the high-level control structures like if/while anyway
16:09:20 -!- wob_jonas has quit (Quit: Client closed).
16:23:02 -!- pool has quit (Read error: Connection reset by peer).
16:24:15 <esolangs> [[Iterate/Math]] https://esolangs.org/w/index.php?diff=168558&oldid=168500 * Aadenboy * (-425) turning these into modules
16:24:57 -!- pool has joined.
16:28:55 <esolangs> [[!frjnrehrbwgyrigbyieurgbyfaerkhbvrwgtr.]] https://esolangs.org/w/index.php?diff=168559&oldid=168532 * Yayimhere2(school) * (+5) correct comp class
16:29:22 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
16:31:28 -!- Lord_of_Life has joined.
16:33:14 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168560&oldid=168546 * NTMDev * (-5) /* = */
16:40:59 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168561&oldid=168560 * NTMDev * (+833) /* String Operations 2 */
16:44:42 -!- pool has quit (Ping timeout: 256 seconds).
16:53:20 -!- pool has joined.
16:58:37 -!- impomatic has joined.
17:26:06 <esolangs> [[Iterate/Math]] https://esolangs.org/w/index.php?diff=168562&oldid=168558 * Aadenboy * (-727) fixes
17:36:32 -!- impomatic has quit (Quit: Client closed).
17:47:30 -!- amby has joined.
17:51:22 -!- impomatic has joined.
17:55:12 -!- sytra has joined.
18:25:03 <esolangs> [[Iterate/Compilation]] https://esolangs.org/w/index.php?diff=168563&oldid=168510 * Aadenboy * (+518) extra
18:28:04 -!- b_jonas has joined.
18:31:24 <b_jonas> ok, so there's a big problme with what I thought about Enchain gotos. we can't just have labels behave as zero-sized values whose types encode their label, because then figuring out the possible control flow and typechecking would mutually depend on each other. there are restricted versions of this that could work, but I have to figure out which, if any, are checkable at compile time, expressive enough,
18:31:30 <b_jonas> and don't feel kludgey like labels are completely unrelated to names. thank you #esolangs in the role of rubber duck.
18:43:31 -!- amby has quit (Read error: Connection reset by peer).
19:06:30 -!- impomatic49 has joined.
19:06:35 -!- amby has joined.
19:08:09 -!- impomatic has quit (Ping timeout: 250 seconds).
19:15:26 -!- tromp has quit (Read error: Connection reset by peer).
19:23:18 -!- pool has quit (Read error: Connection reset by peer).
19:23:42 -!- pool has joined.
19:35:47 -!- sytra has quit (Quit: sytra).
19:54:19 -!- sytra has joined.
20:00:13 <esolangs> [[Iterate/Math]] https://esolangs.org/w/index.php?diff=168564&oldid=168562 * Aadenboy * (+547) /* Logic */
20:23:24 -!- pool has quit (Read error: Connection reset by peer).
20:23:42 -!- pool has joined.
20:37:54 -!- impomatic49 has quit (Quit: Client closed).
20:38:25 -!- Everything has quit (Quit: Lost terminal).
20:40:44 <esolangs> [[G Sharp]] M https://esolangs.org/w/index.php?diff=168565&oldid=154461 * Ractangle * (-54) /* Functions */
20:41:28 <esolangs> [[G Sharp]] https://esolangs.org/w/index.php?diff=168566&oldid=168565 * Ractangle * (-5) /* Truth-machine */
20:42:38 <esolangs> [[Iterate/Math]] https://esolangs.org/w/index.php?diff=168567&oldid=168564 * Aadenboy * (+430)
20:42:52 <esolangs> [[Iterate/Math]] M https://esolangs.org/w/index.php?diff=168568&oldid=168567 * Aadenboy * (+2) /* Minimum/maximum of A and B */ h3
20:45:23 <esolangs> [[G Sharp]] M https://esolangs.org/w/index.php?diff=168569&oldid=168566 * Ractangle * (+260) /* Functions */
20:47:23 <esolangs> [[True (Ractangle)]] M https://esolangs.org/w/index.php?diff=168570&oldid=163114 * Ractangle * (-149) /* Infinite loop */
20:48:23 <esolangs> [[GTA6]] M https://esolangs.org/w/index.php?diff=168571&oldid=168481 * Ractangle * (-1)
21:21:37 -!- impomatic has joined.
21:37:37 <APic> Good Night * 😴
21:43:45 -!- JAA has changed nick to jinn7.
21:43:59 -!- jinn7 has changed nick to JAA.
21:58:49 -!- ais523 has quit (Quit: quit).
22:05:19 <esolangs> [[Iterate/Math]] https://esolangs.org/w/index.php?diff=168572&oldid=168568 * Aadenboy * (+221) /* If else */
22:09:40 -!- sytra has quit (Remote host closed the connection).
22:12:45 -!- impomatic has quit (Quit: Client closed).
22:36:57 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=168573&oldid=168512 * Buckets * (+13)
22:37:53 <esolangs> [[Language list]] M https://esolangs.org/w/index.php?diff=168574&oldid=168513 * Buckets * (+14)
22:38:12 <esolangs> [[BeeJazz]] N https://esolangs.org/w/index.php?oldid=168575 * Buckets * (+1783) Created page with "BeeJazz is an Esoteric Programming language created By [[User:Buckets]] in 2020, after They watched [https://en.wikipedia.org/wiki/Bee_Movie / A Certain Movie featuring bees And jazz.] {| class="wikitable" |- ! Commands !! Instructions |- | B || Assign The current hexe
22:38:33 <esolangs> [[BeeJazz]] M https://esolangs.org/w/index.php?diff=168576&oldid=168575 * Buckets * (-2)
22:39:00 <esolangs> [[110010000100110110010]] https://esolangs.org/w/index.php?diff=168577&oldid=147808 * Kaveh Yousefi * (+614) Added a hyperlink to my implementation of the 110010000100110110010 programming language on GitHub and altered the Unimplemented tag to Implemented.
22:44:58 -!- DOS_User_webchat has joined.
23:10:18 -!- pool has quit (Read error: Connection reset by peer).
23:10:41 -!- pool has joined.
23:13:03 -!- DOS_User_webchat has quit (Remote host closed the connection).
23:15:48 -!- pool has quit (Read error: Connection reset by peer).
23:15:55 -!- pool6 has joined.
23:30:42 -!- Sgeo has joined.
23:47:25 <avih> int-e: "if (==0) BODY":
23:47:25 <avih> int-e (3 tmps): >+<[>->]>[>>]<<[-< BODY >]<
23:47:25 <avih> avih (2 tmps): >+<[>-]>[-< BODY >>]<<
23:50:08 <avih> and this can also be used with your 1-COND while loop, resulting in much much shorter code, which can still be used as a generic template (in my case COND is (==1), which does need 2 '-' and 2 '+')
23:51:03 <avih> (i do need both "if (==0) BODY" and "while (==1) BODY")
23:56:24 <avih> the "trick" to use only 2 tmps is that the BODY "if" is also unbalanced.
23:57:42 <avih> well, both have 2 unbalanced while/end, but with two tmps the other one is instead together with BODY.
00:20:14 -!- ajal has joined.
00:20:25 -!- amby has quit (Ping timeout: 264 seconds).
00:30:44 -!- chiselfuse has quit (Remote host closed the connection).
00:30:59 -!- chiselfuse has joined.
00:32:00 -!- ajal has quit (Ping timeout: 245 seconds).
00:32:10 -!- amby has joined.
00:34:12 <int-e> avih: Right, you can use one space less if you don't want to store result of the != 0 comparison anywhere.
00:35:05 <avih> yeah, my requirement is "if (==0) BODY" not "store (==0) someplace"
00:35:51 <avih> though i think this approach should work for that as well
00:38:23 <avih> as in >+<[>->]<<
00:38:43 <avih> err... not sure..
00:38:44 <int-e> you'd end up with >+<[>->]>[>>]<<<
00:39:10 <int-e> which should look vaguely familar :P
00:39:49 <avih> i think you're right
00:40:05 <int-e> Anyway, this is more of an idea than a fixed code pattern to me; I tend to consider various positions for landing pads and useful data and see what's shortest.
00:40:18 <int-e> All part of having dozens of variations of the code.
00:41:39 <avih> right. i'm more interested in having a catalog of patterns, but it doesn't mean there's no overlap. each case is a puzzle, but once solved, hopefully it's applicable elsewhere too
00:42:23 <int-e> the important thing is to have fun
00:42:33 <avih> i would _think_ that a pattern for "if (==X) BODY" and "while (==X) BODY" should be reusable
00:43:59 <avih> in contrast to, i think, pattern i've seen more often of "if (!=X) BODY", and the same with while, but these are much simpler to code.
00:49:36 <avih> btw, i did look at bfmacro to see if/how if solves it. i don't think it does. its macros are useful but largely trivial. it just composes them together which can save a lot of headache, but not the kind which is needed to implement "if (==X) BODY" (without changing the cell).
00:51:13 <avih> both its "if" and "while" are destructive. if you don't want that, good lock finding a solution on your own.
00:51:56 <avih> (but you do have a macro to make a copy and use that)
00:53:39 <esolangs> [[User:None1/InDev]] https://esolangs.org/w/index.php?diff=168578&oldid=168447 * None1 * (-707)
00:53:56 <int-e> avih: https://esolangs.org/wiki/Asm2bf is a more serious BF generator
00:54:16 <esolangs> [[ALEFL]] N https://esolangs.org/w/index.php?oldid=168579 * None1 * (+2652) Created page with " '''ALEFL''' ('''A'''lpha-'''L'''ess '''E'''xception&'''F'''unction '''L'''anguage) is an esolang invented by [[User:None1]]. Just like its name, it uses no letters and control flow is done by exception and functions. ==Features== ===Type system=== There are only 2 types in
00:54:32 <avih> int-e: interesting. thx
00:54:41 <esolangs> [[User:None1/InDev]] https://esolangs.org/w/index.php?diff=168580&oldid=168578 * None1 * (+8)
00:55:32 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=168581&oldid=168574 * None1 * (+12) /* A */
01:01:11 <esolangs> [[Interpret Esolangs Online]] https://esolangs.org/w/index.php?diff=168582&oldid=166988 * None1 * (+39)
01:01:35 <esolangs> [[Interpret Esolangs Online]] M https://esolangs.org/w/index.php?diff=168583&oldid=168582 * None1 * (+3) used the correct word
01:05:55 <esolangs> [[User:None1]] https://esolangs.org/w/index.php?diff=168584&oldid=165925 * None1 * (+79)
01:10:05 <avih> int-e: actually: >+<[>-]>[>]<< so either the 1st or the 2nd are entered, one of them zeroes the ==0 cell, the other doesn't
01:11:10 <korvo> avih: Well, the standard tools are available, but they look more like `dup X = if BODY then` and `begin BODY dup X = until`; Brainfuck's model is not about preserving the contents of variable locations.
01:11:39 <esolangs> [[ALEFL]] https://esolangs.org/w/index.php?diff=168585&oldid=168579 * None1 * (+25)
01:12:04 <avih> korvo: right, but the mental model of the dev is
01:12:34 <avih> so something has to interface it. a copy is indeed a solution in such case
01:12:37 <esolangs> [[SLet]] https://esolangs.org/w/index.php?diff=168586&oldid=167151 * None1 * (+300) /* Implementation */
01:13:06 <esolangs> [[SLet]] M https://esolangs.org/w/index.php?diff=168587&oldid=168586 * None1 * (+465) /* Implementation */
01:13:30 <esolangs> [[SLet]] https://esolangs.org/w/index.php?diff=168588&oldid=168587 * None1 * (-229) /* Implementation */
01:13:53 <avih> well, at lease the general development mental model is non-destructive. but it's possible that "serious bf devs" do think in bf
01:15:45 -!- pool6 has quit (Read error: Connection reset by peer).
01:16:22 <korvo> I'm mostly thinking in Forth-like stack idioms. bfmacro was a non-trivial part of programs like https://github.com/MostAwesomeDude/bb-gauge/blob/main/bfm/laver.bfm which were originally written for stack automata.
01:16:49 <avih> i don't know Forth...
01:17:42 -!- pool has joined.
01:38:59 <korvo> No worries. It's rare today. Used to be rare too. Still is.
01:45:58 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168589&oldid=168561 * NTMDev * (-23)
01:49:04 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168590&oldid=168589 * NTMDev * (+399) /* Formatting strings */
02:02:16 -!- 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).
02:06:12 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168591&oldid=168590 * NTMDev * (+1754) /* Max and Min */
02:06:43 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168592&oldid=168591 * NTMDev * (-3) /* = */
02:07:28 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168593&oldid=168592 * NTMDev * (+12) /* Getting Started */
02:09:16 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168594&oldid=168593 * NTMDev * (+266) /* Formatting strings */
02:10:19 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168595&oldid=168594 * NTMDev * (-4) /* Slicing = */
02:15:31 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168596&oldid=168595 * NTMDev * (+556) /* Filtering (based on Condition) */
02:15:56 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168597&oldid=168596 * NTMDev * (+4) /* Filtering (based on Function) */
02:19:34 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168598&oldid=168597 * NTMDev * (+438) /* Splitting a String */
02:20:05 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168599&oldid=168598 * NTMDev * (+10) /* Print */
02:20:25 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168600&oldid=168599 * NTMDev * (-160) /* Print */
02:23:27 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168601&oldid=168600 * NTMDev * (+518) /* Bugs */
02:24:25 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168602&oldid=168601 * NTMDev * (+152) /* Bugs */
02:24:50 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=168603&oldid=168602 * NTMDev * (+12) /* Bugs */
02:27:14 -!- Melvar has quit (Ping timeout: 256 seconds).
02:35:58 <esolangs> [[Main Page]] https://esolangs.org/w/index.php?diff=168604&oldid=168526 * NTMDev * (+197)
02:40:08 -!- Melvar has joined.
02:41:06 <esolangs> [[Main Page]] M https://esolangs.org/w/index.php?diff=168605&oldid=168604 * Corbin * (-197) Undo revision [[Special:Diff/168604|168604]] by [[Special:Contributions/NTMDev|NTMDev]] ([[User talk:NTMDev|talk]]): Wikis are foundationally oriented around the principle that user edits are quick (Hawaiian: "wiki wiki") to appear for everybody. Like most wikis, we rely on co
03:11:43 <zzo38> The Minsky (nearly) circle algorithm can be made as a Matrix as [1,-epsilon;epsilon,1-epsilon^2]. If you set epsilon=i then you can make Fibonacci numbers.
05:16:13 -!- pool has quit (Read error: Connection reset by peer).
05:18:13 -!- pool has joined.
05:44:19 <esolangs> [[110010000100110110010]] https://esolangs.org/w/index.php?diff=168606&oldid=168577 * Yayimhere2(school) * (-9) not a stub
05:50:50 <esolangs> [[]] https://esolangs.org/w/index.php?diff=168607&oldid=134565 * Yayimhere2(school) * (+9)
05:51:43 <esolangs> [[Brainyay]] https://esolangs.org/w/index.php?diff=168608&oldid=167950 * PhiPhiPHIpHi * (-61)
05:52:44 <esolangs> [[]] https://esolangs.org/w/index.php?diff=168609&oldid=168607 * Yayimhere2(school) * (-12) /* syntax */
06:16:21 -!- pool has quit (Read error: Connection reset by peer).
06:18:17 -!- pool has joined.
06:40:44 <esolangs> [[Readable]] M https://esolangs.org/w/index.php?diff=168610&oldid=167918 * None1 * (+179) Explain why it isn't ambiguous
06:54:31 <esolangs> [[Readable]] https://esolangs.org/w/index.php?diff=168611&oldid=168610 * None1 * (+252) /* Commands */
06:55:55 <esolangs> [[Readable]] https://esolangs.org/w/index.php?diff=168612&oldid=168611 * None1 * (+223) Added Python interpreter and implemented category tag
06:57:16 <esolangs> [[Deadfish/Implementations (M-Z)]] https://esolangs.org/w/index.php?diff=168613&oldid=162603 * None1 * (+2289) /* Raku */ Add Readable implementation of deadfish
07:00:13 <esolangs> [[Hello world program in esoteric languages (N-S)]] https://esolangs.org/w/index.php?diff=168614&oldid=166421 * None1 * (+346) /* RASEL */ Add Readable implementation
07:01:37 <esolangs> [[User:None1]] M https://esolangs.org/w/index.php?diff=168615&oldid=168584 * None1 * (+0) /* My Esolangs */
07:49:28 <esolangs> [[Brainyay]] https://esolangs.org/w/index.php?diff=168616&oldid=168608 * PhiPhiPHIpHi * (+2122)
07:50:22 <esolangs> [[Brainyay]] https://esolangs.org/w/index.php?diff=168617&oldid=168616 * PhiPhiPHIpHi * (+1)
07:55:16 <esolangs> [[Brainyay]] https://esolangs.org/w/index.php?diff=168618&oldid=168617 * PhiPhiPHIpHi * (+404)
08:01:43 <esolangs> [[Brainyay]] https://esolangs.org/w/index.php?diff=168619&oldid=168618 * PhiPhiPHIpHi * (+174)
08:36:05 -!- Sgeo has quit (Read error: Connection reset by peer).
09:26:54 -!- msv has quit (Remote host closed the connection).
09:31:43 -!- ais523 has joined.
10:24:53 <b_jonas> zzo38: that seems correct, but it gives only every other Fibonacci number, so you might want to use the matrix [1,1;1,0] instead, as suggested by Concrete Mathematics
10:26:55 <esolangs> [[]] https://esolangs.org/w/index.php?diff=168620&oldid=168609 * Yayimhere2(school) * (+32) /* overview */
10:28:40 <esolangs> [[]] https://esolangs.org/w/index.php?diff=168621&oldid=168620 * Yayimhere2(school) * (+1) /* syntax */
12:16:52 -!- pool has quit (Read error: Connection reset by peer).
12:17:19 -!- pool has joined.
12:36:15 -!- wob_jonas has joined.
To update automatically, stalker mode requires a reasonably modern browser with scripts enabled. If this message does not disappear, it's either because of that or a bug. Feel free to get in touch on channel for debugging. Or just work around the issue by manually reloading.