> 1754438932 807072 PRIVMSG #esolangs :14[[07User:Hotcrystal0/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162906&oldid=162905 5* 03Hotcrystal0 5* (+861) 10
> 1754439113 712566 PRIVMSG #esolangs :14[[07Combinatory logic14]]4 10 02https://esolangs.org/w/index.php?diff=162907&oldid=162900 5* 03Corbin 5* (+367) 10Shuffle headers to focus on systems. Also fill in a couple missing rows in the table.
< 1754442445 575933 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 QUIT :Remote host closed the connection
< 1754442460 757445 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 JOIN #esolangs DOS_User :[https://web.libera.chat] DOS_User_webchat
< 1754443154 797572 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 QUIT :Remote host closed the connection
> 1754443680 265213 PRIVMSG #esolangs :14[[07Combinatory logic14]]4 10 02https://esolangs.org/w/index.php?diff=162908&oldid=162907 5* 03Corbin 5* (+1899) 10Put SKI and BCKW on the same ground as other systems in the literature.
< 1754444148 661443 :amadaluzia!~amadaluzi@user/amadaluzia QUIT :Quit: ZNC 1.10.1 - https://znc.in
> 1754445134 968818 PRIVMSG #esolangs :14[[07Combinatory logic14]]4 10 02https://esolangs.org/w/index.php?diff=162909&oldid=162908 5* 03Corbin 5* (+696) 10/* Properties */ Finish listing properties. What they have in common is some sort of obstruction to completeness.
> 1754445485 131293 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162910&oldid=162902 5* 03Junkshipp 5* (-33) 10/* #df - Definitions of functions */
< 1754446234 950860 :sprock!~sprock@user/sprock QUIT :Ping timeout: 260 seconds
< 1754447646 691550 :FreeFull!~freefull@79.186.59.71.ipv4.supernova.orange.pl QUIT :Quit: Lost terminal
> 1754447917 492281 PRIVMSG #esolangs :14[[07Combinatory logic14]]4 10 02https://esolangs.org/w/index.php?diff=162911&oldid=162909 5* 03Corbin 5* (+2819) 10Add a detailed section on completeness and related concepts.
> 1754449940 786606 PRIVMSG #esolangs :14[[07Turing tarpit14]]4 10 02https://esolangs.org/w/index.php?diff=162912&oldid=162872 5* 03Corbin 5* (+436) 10/* Minimal combinator bases */ Use theorems from [[combinatory logic]] to carefully circumscribe the possibility of a singleton basis.
< 1754450017 861996 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: Okay, I *think* I've patched up all of the spots where I was spouting wrongness. Certainly I think [[Iota]] is cleaned up already.
< 1754450074 47532 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I suppose that a single-combinator basis is still possible. But it can't be Iota, which has rank one and is linear in that sole argument. We gotta treat combinators and closed lambda terms as different things.
> 1754450155 471453 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Thomas 5* 10New user account
> 1754450535 544692 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 M10 02https://esolangs.org/w/index.php?diff=162913&oldid=162779 5* 03Thomas 5* (+213) 10Introducing my self.
> 1754451472 474393 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Hibiscus 5* 10New user account
< 1754451834 948692 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :int-e: I never did find a way to cite "The Combinator S", but thank you for linking it anyway. I enjoyed it even though it was not easy or fun.
< 1754452112 297806 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :...Well, "fun" is relative, right?
> 1754452153 135604 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=162914&oldid=162913 5* 03Hibiscus 5* (+172) 10
> 1754452749 403933 PRIVMSG #esolangs :14[[07User:Pifrited/PasteBin14]]4 10 02https://esolangs.org/w/index.php?diff=162915&oldid=162884 5* 03Pifrited 5* (-595) 10
> 1754452809 448953 PRIVMSG #esolangs :14[[07LayerCake14]]4 10 02https://esolangs.org/w/index.php?diff=162916&oldid=156185 5* 03HellsfargoMC 5* (+4) 10/* Fibonacci.lc: */ corrected programming mistake
> 1754456704 304662 PRIVMSG #esolangs :14[[07User made14]]4 N10 02https://esolangs.org/w/index.php?oldid=162917 5* 03Helpeesl 5* (+335) 10This is the 4th esolang experiment by me guys, will come back August 6th 2026 to make the page
> 1754456844 320704 PRIVMSG #esolangs :14[[07GnomeLang14]]4 N10 02https://esolangs.org/w/index.php?oldid=162918 5* 03Thomas 5* (+5010) 10Created page with "{{infobox proglang |name=GnomeLang |paradigms=Concurrent,Declarative,Imperative,Spatial |author=[[User:Thomas]] |year=[[:Category:2025|2025]] |memsys=[[:Category:Cell-based|Cell-based]] |dimensions=theoretically infinite-dimensional |class=[[:Category:Turing complete|T
> 1754456916 953380 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162919&oldid=162918 5* 03Thomas 5* (-1) 10
> 1754457075 28706 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162920&oldid=162919 5* 03Thomas 5* (+124) 10
> 1754457110 748536 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162921&oldid=162920 5* 03Thomas 5* (-110) 10
> 1754457185 302411 PRIVMSG #esolangs :14[[07User:Thomas14]]4 N10 02https://esolangs.org/w/index.php?oldid=162922 5* 03Thomas 5* (+56) 10Created page with "== Languages I take responsibility for == *[[GnomeLang]]"
> 1754457274 256438 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162923&oldid=162921 5* 03Thomas 5* (+1) 10
> 1754457324 764709 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162924&oldid=162923 5* 03Thomas 5* (+15) 10
> 1754457347 153970 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162925&oldid=162924 5* 03Thomas 5* (+1) 10
> 1754457548 225512 PRIVMSG #esolangs :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=162926&oldid=162745 5* 03Thomas 5* (+16) 10
> 1754457719 920114 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162927&oldid=162925 5* 03Thomas 5* (+14) 10
> 1754457815 832451 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162928&oldid=162927 5* 03Thomas 5* (-2) 10
> 1754457932 734422 PRIVMSG #esolangs :14[[07User:Thomas14]]4 10 02https://esolangs.org/w/index.php?diff=162929&oldid=162922 5* 03Thomas 5* (+28) 10
> 1754458009 329218 PRIVMSG #esolangs :14[[07GnomeLang14]]4 M10 02https://esolangs.org/w/index.php?diff=162930&oldid=162928 5* 03Thomas 5* (+23) 10Replaced spawn with construct, and removed dwarf adjacent typos
> 1754458769 321676 PRIVMSG #esolangs :14[[07User:Thomas14]]4 10 02https://esolangs.org/w/index.php?diff=162931&oldid=162929 5* 03Thomas 5* (-28) 10
< 1754462596 126517 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 JOIN #esolangs * :Textual User
< 1754462816 760474 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 JOIN #esolangs DOS_User :[https://web.libera.chat] DOS_User_webchat
< 1754462844 51465 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 QUIT :Remote host closed the connection
> 1754462861 696310 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162932&oldid=162930 5* 03Thomas 5* (+22) 10
> 1754462887 443615 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162933&oldid=162932 5* 03Thomas 5* (-1) 10
< 1754462890 805961 :iiiiiiiiiiiiiiii!~iiiiiiiii@21.red-81-33-48.dynamicip.rima-tde.net JOIN #esolangs * :[https://web.libera.chat] iiiiiiiiiiiiiiiiiiiiiiii
< 1754462892 487230 :iiiiiiiiiiiiiiii!~iiiiiiiii@21.red-81-33-48.dynamicip.rima-tde.net QUIT :Remote host closed the connection
< 1754462938 771508 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 JOIN #esolangs DOS_User :[https://web.libera.chat] DOS_User_webchat
> 1754462981 752879 PRIVMSG #esolangs :14[[07User:.t/GravelContainer14]]4 N10 02https://esolangs.org/w/index.php?oldid=162934 5* 03.t 5* (+108) 10Created page with "{{{2|
Javascript!
}}}"
< 1754463121 890317 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 QUIT :Remote host closed the connection
> 1754463394 104989 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03!!!!! 5* 10New user account
> 1754463629 191486 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=162935&oldid=162914 5* 03!!!!! 5* (+133) 10
> 1754463656 499354 PRIVMSG #esolangs :14[[07User:!!!!!14]]4 N10 02https://esolangs.org/w/index.php?oldid=162936 5* 03!!!!! 5* (+15) 10Created page with "This is a test."
> 1754463660 33088 PRIVMSG #esolangs :14[[07User talk:!!!!!14]]4 N10 02https://esolangs.org/w/index.php?oldid=162937 5* 03!!!!! 5* (+15) 10Created page with "This is a test."
> 1754463980 208051 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162938&oldid=162933 5* 03Thomas 5* (+67) 10
> 1754464153 16920 PRIVMSG #esolangs :14[[07Disan Count Pesudocode14]]4 M10 02https://esolangs.org/w/index.php?diff=162939&oldid=136970 5* 03Ractangle 5* (-20) 10/* Disan Count */
< 1754464248 19519 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer
> 1754464469 103529 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162940&oldid=162938 5* 03Thomas 5* (-3) 10
> 1754466291 197780 PRIVMSG #esolangs :14[[07Textile14]]4 10 02https://esolangs.org/w/index.php?diff=162941&oldid=134001 5* 03Dtp09 5* (-37) 10rephrased some explanations, changed "replacements" to "macros", added spaces after code example comments, other minor edits
> 1754466323 624403 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162942&oldid=162940 5* 03Thomas 5* (+112) 10
> 1754466527 303238 PRIVMSG #esolangs :14[[07User:Dtp0914]]4 10 02https://esolangs.org/w/index.php?diff=162943&oldid=152178 5* 03Dtp09 5* (-59) 10
> 1754467804 469648 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162944&oldid=162942 5* 03Thomas 5* (-221) 10
> 1754467823 959965 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162945&oldid=162944 5* 03Thomas 5* (-100) 10
< 1754470619 281732 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1754471664 996428 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 JOIN #esolangs * :Textual User
> 1754471946 183285 PRIVMSG #esolangs :14[[07Talk:ESOPUNK14]]4 N10 02https://esolangs.org/w/index.php?oldid=162946 5* 03L4.m2 5* (+212) 10Created page with "== Turing Complete == It should simulate Counter machine by Godel with if (x7 == 0) <=> MODI X 7 T ++x7 <=> MULI X 7 X --x7 <=> DIVI X 7 X Not sure if it act everything when introducing (infinite) IO, though"
> 1754472452 5082 PRIVMSG #esolangs :14[[07GRPE14]]4 M10 02https://esolangs.org/w/index.php?diff=162947&oldid=161336 5* 03Bil-joodusstudios 5* (+0) 10The source code for the interpreter I made was created in 2022 and so were the first programs and thus the date 2023 was inaccurate
< 1754472787 940683 :APic!apic@chiptune.apic.name PRIVMSG #esolangs :Hi
< 1754472937 866369 :FreeFull!~freefull@79.186.59.71.ipv4.supernova.orange.pl JOIN #esolangs FreeFull :FreeFull
< 1754476757 763079 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 JOIN #esolangs DOS_User :[https://web.libera.chat] DOS_User_webchat
< 1754477693 287173 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1754478719 337308 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name)
< 1754478732 518799 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 JOIN #esolangs * :Textual User
< 1754478878 793614 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : I, K, KI, S, B, C, W are the important ones ← also «flip id» – that's one of the few that's important enough that I special-cased it in my combinator evaluator
< 1754478902 869746 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :according to the list on the wiki, it's called "thrush"
< 1754478916 476609 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although I don't really like using bird names, it's just confusing
< 1754479062 446251 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Read error: Connection reset by peer
< 1754479290 180790 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord
< 1754479599 749369 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 QUIT :Ping timeout: 252 seconds
< 1754479627 977327 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah right, this reminds me: instead of BCKW you can use BTKW, C is B (T T) (B B (B (T B) (B B T)))
< 1754479652 954250 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although this is the sort of trick that somewhat reminds me of Underload without ~
< 1754479728 389409 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :last time I looked at this, I suspected that this would be TC even without K (via the bit-bucked method), although I didn't come up with a workable proof
< 1754479781 580546 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…and now it crosses my mind that ~ and ! are the two combinators you can simple-translate out of Underload
< 1754479805 58214 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :obviously they aren't *exact* matches for C and K but there are nonetheless obvious similarities
< 1754479901 571623 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1754479931 833832 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…and the obvious name for this basis is "BTW"
< 1754479956 920817 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* bit-bucket method
< 1754480264 896465 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net JOIN #esolangs amby :realname
< 1754480696 156740 :Vorpal!~Vorpal@user/Vorpal JOIN #esolangs Vorpal :Vorpal
< 1754480787 732808 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wb Vorpal
< 1754480813 200021 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :hi, according to client logs I did briefly visit here in 2023
< 1754480878 384193 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :nowadays we chat somewhat asynchronously via the logs, usually – we've been talking about combinators over the past few days
< 1754480918 73361 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :not that much into esolangs these days, don't have much time for it.
< 1754480961 832653 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fair enough – I've been less into it than I used to be, I think
< 1754480988 425945 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've been working more on practical languages, which is a lot more difficult to produce results with quickly
< 1754480995 536304 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but maybe more useful when you do
< 1754481026 528591 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :yeah, doing things that are useful and feel like they are worth your time, it gets more important the older you get I think
< 1754481049 155458 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oddly, the esolangs results feel more useful sometimes
< 1754481061 596507 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…but a smaller audience
< 1754481147 746362 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I enjoyed golfing down the TCness construction for Magic: the Gathering – after a while it turned into working out what could easily be constructed and then trying to prove it TC
< 1754481254 422173 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(also, I guess the way that I use Rust is on the verge of turning it into an esolang – lots of trying to prove things with the type system)
< 1754481338 770147 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :right, while I build useful cli programs mostly
< 1754481349 786285 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :and am experimenting with rust on a ESP32
< 1754481409 755960 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :unfortunately, I'm getting the sort of issues that normal rust protects against. I'm trying to do DMA and getting hardware exceptions
< 1754481418 872462 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ugh
< 1754481440 621194 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I want to do a sound visualiser (with a I2S microphone)
< 1754481465 826277 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've programmed both microcontrollers and DSPs in the past, but it was a long time ago now
< 1754481498 775474 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the microcontrollers had around 100 bytes of RAM (+ a few kilobytes of nonwritable program memory)
< 1754481527 373218 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :The rust abstractions are interesting, using lots of typestate patterns and ownership for peripherals
< 1754481531 725882 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, well, you could write it in hardware, just not in software
< 1754481585 719401 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :the ESP32 dev board I use has like ~500 kB usable SRAM, 4 MB flash and 8 MB external DRAM
< 1754481595 284519 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :240 MHz, dual core
< 1754481597 100053 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I feel like Rust doesn't do typestate properly at the moment (thus the interest in strong updates), but it should work if you're managing global variables (which hardware resources effectively are)
< 1754481635 632108 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I wonder whether microcontrollers are more powerful nowadays; my guess is "more powerful microcontrollers exist but the very small ones still exist because they're cheap and many products don't need much power"
< 1754481644 939182 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :computational power, that is, not electrical power
< 1754481654 724181 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although I guess the two may be correlated!
< 1754481677 216523 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Yeah the ESP32 is on the upper end for sure. But most micros used for new projects are 32-bit these days. Mostly ARM and RISCV
< 1754481690 897988 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I doubt people do *new* projects on AVR for example
< 1754481839 353977 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think I stopped working on this before AVR became popular
< 1754481865 11550 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :yeah I don't even know what came before that. Old Intel and Motorola parts iirc?
< 1754481869 198870 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it was nice being so close to the hardware
< 1754481879 617215 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you could just write to memory to change the voltage on pins
< 1754481887 253550 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :and the Microchip PIC series, right
< 1754481892 556213 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, I was using PICs
< 1754481936 670860 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :they were (are?) basically a transport-triggered architecture for all the hardware features and for memory addressing, but had arithmetic instructions (including RMW) in addition to just mov
< 1754481943 920865 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: well yeah, hardware peripherals are usually memory mapped. Though some architectures have a separate IO bus (including x86, but that is only used for ISA, anything more modern is memory mapped instead)
< 1754482098 953649 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :but I have to say, I have moved towards systems/low level programming in general. Not that interested in abstract language design. For me, the most important question in language design: how is this useful for the practitioner?
< 1754482122 384785 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :my esolangs have tended towards useful too – although primarily in terms of being useful for proving things with
< 1754482141 820359 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :you went into academia, right?
< 1754482146 143834 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :The Waterfall Model is probably my biggest esolang breakthrough since Underload (or maybe more so, because other people would have discovered Underload if I hadn't)
< 1754482164 92591 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I got a PhD, did a postdoc, then covid happened and I was ill for a few years
< 1754482171 949398 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ouch
< 1754482193 825820 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and I still go through frequent periods of not being able to concentrate on anything, which is making it difficult to get a job
< 1754482281 312680 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :employers probably don't want employees who frequently and randomly do nothing for a 3-4 weeks at a time (it is improving, though – a couple of years ago it was measured in months rather than weeks)
< 1754482307 419092 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :still I think that shows the point really. "The Waterfall Model" looks nice, but I don't see how it is applicable to solving "real world problems" (however you define that). That doesn't mean it isn't valuable as research, but it doesn't really interest me much. It is the difference between pure and applied mathematics. I found out that I'm *way* over on the applied side.
< 1754482326 896652 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, these aren't real-world problems but mathematical problems
< 1754482336 97021 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it cut down the time for the typical TCness proof from a few days to a few mintues
< 1754482351 887643 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…and started to make some of the more difficult TCness proofs viable
< 1754482438 473616 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :The most important theorem for me out of TCness and such has been Rice's theorem. Because it lets me say "this problem is one that cannot actually be solved (or at least not without false positives / negatives)". That result is in a sense a very applied one.
< 1754482463 513010 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I feel like Turing tarpits tend to be fundamentally either queue-based or counter-based; tag systems handle the queue-based languages, MInsky machines and TWM handle the counter-based languages depending on whether their problems are with data storage or control flow
< 1754482488 923095 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, we know that there are problems about programming that we can't have general solutions to
< 1754482493 677139 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I did do a esolang thing a few years ago, as a project to learn rust: https://github.com/VorpalBlade/brainoxide (ignore recent updates, it is just dependabot)
< 1754482542 904055 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :as it was my first rust thing, the code is for sure non-idomatic. Also there are several optimisations that aren't implemented because I got the internal graph representation wrong.
< 1754482553 257788 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(But the goal was learning rust, so who cares)
< 1754482590 207387 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I tried to write an SSA optimiser for counter machines ages ago, but got lost – the internal representation was wrong I think
< 1754482598 260097 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(also I used it to experiment with github actions before applying those things on more important projects)
< 1754482609 695403 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it should have been possible to adapt it to BF to some extent
< 1754482635 272782 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :also I hadn't realised that keeping up with dependencies was so difficult
< 1754482645 333416 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I try to avoid those as much as possible nowadays
< 1754482659 193548 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :the funny thing is that an optimising BF compiler is actually more of a *decompiler*. Because you are trying to recover higher level structure out of a incredibly low level thing.
< 1754482661 378755 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :my latest big Rust project has involved reimplementing references
< 1754482681 917095 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :[14:17] also I hadn't realised that keeping up with dependencies was so difficult <-- that has not been my experience at all. Not in rust at least.
< 1754482685 647696 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and when you aren't using the standard & and &mut, existing libraries don't work very well
< 1754482712 912652 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess the dependency bumps probably aren't required for it to continue working
< 1754482749 834207 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :indeed, it also has a test suite, and fuzz testing
< 1754482753 15482 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although, it's surprising how often a crater run turns up "this obviously useless and wrong construct is used in an old version of some really widely used library"
< 1754482780 940398 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which means that Rust projects bitrot faster than you would expect if you don't keep the dependencies up to date
< 1754482806 148125 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :hm, yeah okay
< 1754482855 562855 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :https://github.com/VorpalBlade/chezmoi_modify_manager https://github.com/VorpalBlade/keyboard-backlightd and https://github.com/VorpalBlade/filkoll https://github.com/VorpalBlade/paketkoll are *useful* things I have written in rust. It is an amazing language for these sort of tools.
< 1754482918 657790 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :at least three of them I have gotten issue reports from other people, so some people are at least using them
< 1754482924 116895 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(or tried to use them)
< 1754482937 515462 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess whether I write useful things in Rust depends on whether you consider esolang interpreters useful :-D
< 1754482950 786973 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although I am working on larger useful projects too – it just takes a lot longer, especially with all the time not working)
< 1754483021 873485 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I especially like what I did in filkoll, with zero-copy deserialisation and mmap.
< 1754483050 282122 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I even wrote a blog post about it, which might be of interest if you are into squeezing every bit of performance from a program: https://vorpal.se/posts/2025/mar/25/filkoll-the-fastest-command-not-found-handler/
< 1754483056 52289 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm… IIRC mmap is very hard to use safely in Rust
< 1754483062 616436 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :the blog goes into that
< 1754483067 255568 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because if you have any reference to any byte in the file, and someone changes the file…
< 1754483074 186003 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :indeed
< 1754483079 443288 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :are you using the "array of UnsafeCell" method?
< 1754483085 284620 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, well, slice
< 1754483086 484255 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :read the blog :D
< 1754483107 427574 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I will do at some point, but it takes a while
< 1754483120 405835 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I'm ensuring that the file isn't changed. I define what my thread model is.
< 1754483125 124791 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :threat*
< 1754483137 446083 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've been wondering about trying to use Linux leases to make mmap safe with Rust, but it's very hard to define because the safety becomes based on real-world time
< 1754483239 964702 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: so the TLDR is that the file is written in one go by a cron job / systemd timer. So I do the temp file and move into place to atomically replace the file trick. And since this is done by root, and the reading phase of the program is normally run by not root, I consider root trusted. If you have malicious software writing those files you have way bigger issues.
< 1754483262 621903 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Thus, mmap is safe.
< 1754483282 654516 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(a lease allows you to get a definitive answer to "will this file change in the next 10 seconds?", which Linux implements via delaying writes by 10 seconds while there is an active lease)
< 1754483303 758447 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although, you're supposed to drop the lease if the kernel tells you that someone wants to write)
< 1754483315 811210 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Vorpal: right – you're considering the file to be an extension of the program
< 1754483339 493279 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I use the rkyv crate for actual zero-copy deserialisation of that data, and it too has safety requirements, about matching data structures being used. So I hash all of that and put it in a header, and if the hash doesn't match I don't load the file but print an error about regenerating the files
< 1754483339 723668 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think that isn't a general solution, but it works here
< 1754483374 44139 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(I also hash Cargo.lock into that)
< 1754483401 475764 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: it is a cache file effectively, so for that case it works.
< 1754483424 352778 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :if you want to do mmap IPC or something like that, I agree: you have way more complex problems to deal with
< 1754483444 705222 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :and keeping it all as raw pointers and doing volatile isn't attractive either
< 1754483482 374705 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Oh and I have also gotten into 3D printing and figuring out way to use as little plastic as possible while doing so.
< 1754483491 753069 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(my most recent blog post is on that)
< 1754483508 179392 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :"In particular it wouldn’t be safe to *not* do UTF-8 validation: It is possible to mix up handles from different interners." ← this is a major hole in Rust and the one that I'm currently spending most effort on trying to fix
< 1754483525 812776 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :specifically, the "mix up handles from different interners" part of it
< 1754483564 432858 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :So, branded lifetimes (ghost cell etc) could solve that, but awkwardly. But it absolutely doesn't work across serialisation and deserialisation.
< 1754483566 452017 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I wrote a blog post about it last year: http://ais523.me.uk/blog/scoped-generics.html
< 1754483567 707331 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :which is my use case
< 1754483599 297239 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although it's mostly about making brands a) easier to use and b) able to transmit data across trait boundaries, even if the traits don't know about the data
< 1754483631 826985 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: yeah, but I bet whatever solution you think of won't apply across serialisation and deserialisation, especially with rkyv which has a derive macro that generates separate types for deserialization that uses relative pointers
< 1754483646 932543 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think it's compatible with serialisation (you make the deserialisation produce the appropriate brand at the same time as it reads the data), but it may not be compatible with existing deserialisation libraries
< 1754483649 468387 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(that is the only way to make it *zero copy*
< 1754483651 196796 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :)
< 1754483707 648404 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: deserialisation can't really do anything if you want it to be zero-copy. It has to be the equivalent of a std::mem::transmute basically.
< 1754483712 265075 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the thing about brands is that they're ZSTs, so you can add them to existing data structures in a zero-copy way
< 1754483723 60215 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :hm ok
< 1754483724 175585 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you can transmute () into a ZST
< 1754483747 999916 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the difficult part is proving that you have the right one, but if you're using unsafe code that doesn't matter
< 1754483775 811477 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, well, it's still difficult but it doesn't matter *to Rust*, just when you're writing the code
< 1754483795 192506 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I could use unsafe code to skip the UTF-8 validation. It could be *sound* if I use it right. It just wouldn't be *safe*
< 1754483842 532059 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right – so the approach would be "having this brand on offset X means that data structure Y has valid UTF-8 starting from offset X"
< 1754483867 862052 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :sounds about right, yes
< 1754483875 392350 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and as long as you serialise the list of offsets and the string dump, you can deserialise into some thing with the same branding structure, as long as you trust the bytes on disk
< 1754483880 761020 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 JOIN #esolangs DOS_User :[https://web.libera.chat] DOS_User_webchat
< 1754483886 925241 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* as long as you serialise them together
< 1754483898 142967 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(I saw a blog the other day about lifetime brands in rust, I need to get around to reading it)
< 1754483911 647543 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I haven't read it yet, although I did write about it in my own blog post
< 1754483918 197020 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(but I was on a road trip for the past week, didn't have time)
< 1754483928 764926 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :https://old.reddit.com/r/rust/comments/1mhkvrs/the_generativity_pattern_in_rust/
< 1754483933 700869 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I didn't consider it a priority for reading because I thought I knew about the topic already, but maybe I should in case it says something I don't know
< 1754483938 571494 :DOS_User_webchat!~DOS_User_@user/DOS-User:11249 QUIT :Remote host closed the connection
< 1754483943 105656 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :haven't had time to read the associated blog yet
< 1754483975 487180 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I just knows the basics of it and filed it as "oh, that is neat, I don't have any immediate uses for this"
< 1754484044 742902 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, I think my opinion on "unsafe" is "I will use this if I have to, but I would prefer if I can get whatever I'm doing into the standard library so that I don't have to"
< 1754484046 14461 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :but apparently there is more ways to do it than the scoped closure given an invariant lifetime
< 1754484052 974880 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :so I should probably read it
< 1754484110 90589 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: for sure. The question of motivation for unsafe becomes tricky when it becomes a performance question. E.g. I can save x% of the total runtime of my tool if I use unsafe. Is it worth it?
< 1754484137 700380 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, I work backwards – start with the theoretical performance limit and then see what the obstacles to reaching it are
< 1754484186 931663 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :huh, I write code that functions first, and then see where the bottlenecks are, and try to optimise it. I found perf, bpf etc to be surprisingly fun and enjoyable.
< 1754484188 674491 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that's how I came up with the 55GiB/s fizzbuzz
< 1754484210 393098 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :oh right, I remember that, yes
< 1754484235 996757 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I did read the code, well part of it, I think I got lost somewhere around how the custom bytecode VM supposedly worked.
< 1754484239 281524 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've done the whole "looking for bottlenecks" thing but it's annoying
< 1754484303 719235 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I found it enjoyable. And as a bonus you can be solving a practical problem a customer is having right now. That feels nice.
< 1754484333 205245 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I came up with a good way to explain the VM: you can think of FizzBuzz as a sequence of instructions that output one byte each (at least if you know the number of digits in the numbers you're printing), that fact isn't useful if you just compile the instructions, but if you *interpret* the instructions you then have a SIMD situation (because it's the same interpreter for every instruction) and so you can vectorise
< 1754484357 210971 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Did something like that just before the vacation. The customer was running the program on a way less powerful machine than we used. So what we saw as 12-20% CPU load, they saw as 100%+ CPU load.
< 1754484403 668978 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Managed to cut the CPU usage in more than half there, plus I learned some new tools (tracy in particular, just sampling profiling wasn't enough).
< 1754484475 756402 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :And I left my colleagues with a list of things they should do to optimise it further (in other parts of the system)
< 1754484529 599626 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess I'm out of practice with actual practical programming – I am mostly trying to fix the theory and hoping it leads to improvements in the practice later on
< 1754484575 453383 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :my last attempt to write a practical program didn't work out very well
< 1754484603 445605 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I really can't find any energy or motivation for writing something that *doesn't* solve a practical problem any more.
< 1754484626 432544 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I got burnout a few years ago, and in general even after that I have less energy than I used to
< 1754484669 292057 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(also I spent ages trying to work out whether the "take the dot product of your key and the input" was a valid randomized hash function – eventually I figured out that it is only good if your aim is to have 0 collisions, because an attacker can increase the chance of a large multi-collision to unacceptably large values even though they can't influence the chance of there being any collisions at all)
< 1754484742 344984 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :hm, hash functions is a bit of a problem. For most software I write, I would prefer a faster but non-DOS resitant hash for things like hashmaps
< 1754484743 300365 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess the way I see it is, I could either try to solve one practical problem and get frustrated with the tools I'm working with, or I could try to make a million practical problems all a little easier to solve
< 1754484758 214564 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :because I don't have untrusted input in my threat model. They are cli programs!
< 1754484780 806282 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :what I wish is for rust / cargo to get the build-std support in proper shape
< 1754484790 260969 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I generally have untrusted input in my threat model for CLI programs, but the threat is usually "the user accidentally renames or edits a file while the CLI is working on it"
< 1754484802 334943 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :-Z build-std is seriously being worked on, as far as I can tell
< 1754484811 138497 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :then we could have std feature flags for things like DOS resistant hash functions, or normal vs priority inheritance mutxes
< 1754484815 407171 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…although I guess it wouldn't be -Z any more once it's been finishd
< 1754484816 323479 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :mutices?
< 1754484842 387324 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think the normal plural is "mutexes", but as with any word ending in x it is likely to be pluralised in some interesting ways
< 1754484861 814522 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :man, let me tell you, hard real time Linux (which I do for my day job) doesn't get the love it deserve further up the stack in programming languages
< 1754484882 393561 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :English spelling is... interesting
< 1754484885 734226 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in this case "ex" is an abbreviation for "exclusino" so I think it pluralises using the same basic ruleset that "exclusion" uses
< 1754484917 586953 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* for "exclusion"
< 1754484928 786253 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hard realtime is one of those things where you really want the programming language to help
< 1754484937 179820 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :some sort of resource system, perhaps
< 1754484963 519306 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oddly, from a mathematical point of view, hard realtime is easier to work with than non-hard-realtime concurrency
< 1754484977 987389 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I did some work on that in my PhD)
< 1754484992 92648 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you don't have to worry about all the possible orderings of events if you know exactly how much time everything is taking
< 1754484992 934394 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :both C++ and Rust std mutexes doesn't do Priority Inheritance (PI). Which is a thing you really want. The underlying pthread mutex and/or futex does support it optionally. But you need to use/enable that variant.
< 1754485005 234346 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although I get a suspicion that modern OSes and programs aren't quite *that* hard realtime)
< 1754485017 346989 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: that is only true for single core
< 1754485049 334815 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, mathematically you can assume the cores run lockstep, but that would need a processor with very predictable timings
< 1754485052 565808 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :as soon as you do hard RT on multicore (and don't pin *everything*) the exact solutions fall apart
< 1754485075 101422 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a cluster of 6502s would be able to do it just fine (but the performance would be terrible)
< 1754485112 290559 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :and let me tell you: no one in industry is actually doing the academic mathematical approaches to hard realtime. I forget what those diagrams with dots moving around were even called.
< 1754485113 467017 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I wonder what the correct term for "we have hard time limits but our processor doesn't do things in a predictable time" is – it's somewhere between hard and soft realtime
< 1754485129 884129 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Vorpal: oh, I'm not at all surprised, at least for software approaches
< 1754485134 993201 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I bet the people synthesising hardware are doing it though
< 1754485145 755832 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(this might not be true in things like flight control software, which has more stringent requirements)
< 1754485245 688564 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :one of the trickiest situations is "things that give an unpredictable performance improvement"
< 1754485249 684130 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :like branch predictors and L1 caches
< 1754485249 988472 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Thankfully, the things I work on (while safety critical in that humans could be in danger) are slow and are safe if they just stop. So the solution is "we have emergency stop buttons everywhere, which cut the actuations electrically)
< 1754485278 823736 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the program clearly works better with them involved – but it almost feels like, for hard realtime, you might not be able to rely on them helping at all
< 1754485348 728413 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess you can rely on the OS to not pre-empt you too much, and just hope that the cache and branch predictor act sensibly in that case
< 1754485361 72898 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :it depends on your timing requirements. Hard realtime is about predictability. If your requirements is on the order of tens of ms, realtime linux is fine.
< 1754485397 464728 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I would be worrying about pathological cases like "all the pointers in the program were allocated with the same values in the middle bits, causing the cache performance to massively degrade"
< 1754485412 730119 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :If you need µs to single digit ms, you should consider a microcontroller. If you need ns you should look at FPGAs or digital electronics. If you need less than that look at analog electronics
< 1754485446 455271 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :that is a very rough categorisation, but it is pretty accurate I feel.
< 1754485546 208901 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in the run-up to my PhD, I was working on algorithms designed for use with clockless digital electronics, i.e. they run as fast as the wires transmit information (the limiting factor there is the delay on your pulse reshapers making your pulses have nice square edges)
< 1754485556 131393 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although we didn't actually implement it on a platform like that, we used a clock for testing
< 1754485556 718389 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Most of what I do is on the 10s of ms range. So realtime Linux works fine. And we push the shorter time range things to connected microcontrollers (that do the actual electical IO)
< 1754485621 673446 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right – I guess my concern is more about what could happen in theory than anything
< 1754485638 936205 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :worst-case performance is often an awful lot worse than average-case performance
< 1754485639 518560 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I have heard of clockless designs, but I don't really know anything about them. I have a vague memory of someone building a clockless (MIPS?) CPU ages ago as a research projects.
< 1754485663 514407 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :what if we happen to hit the miniscule chance that all our data hashes to the same value and the hash table becomes quadratic, that sort of thing
> 1754485710 486007 PRIVMSG #esolangs :14[[07User:Hotcrystal0/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162948&oldid=162906 5* 03Hotcrystal0 5* (+119) 10
< 1754485735 648408 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Wikipedia makes a distinction between hard real-time (where a deadline miss is completely unacceptable) and firm real-time (where it's just really bad and you want to minimize the probability, but where if the probability is low enough you'd prefer to pay the cost of very rare deadline misses rather than the cost of coding to worst-case rather than average-case)
< 1754485802 469070 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: indeed. But the things we control are all *big* hydraulics. And the inertia in that dwarfs anything else in the system. Now, if you were controlling an agile robot (Boston dynamics sort of thing) that would be a different matter, you would still have a linux system doing the high level planning, but actual PID loops wound be done in microcontrollers. And we do some of that too. Just less of it than most.
< 1754485852 673285 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: I would put things like live sound processing into "firm real-time". You don't want an audio glitch during your rock concert. But no one will die from it.
< 1754485855 83181 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it strikes me that if you have a safe default action (e.g. stopping) you can use that as an automatic reaction to an imminent deadline miss
< 1754485865 869399 :fungot!~fungot@2a01:4b00:82bb:1341::a JOIN #esolangs fungot :fungot-0.1
< 1754485870 711985 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Vorpal's presence reminded me that fungot had probably been offline for, like, months at this point.
< 1754485871 61683 :fungot!~fungot@2a01:4b00:82bb:1341::a PRIVMSG #esolangs :fizzie: the debugger?' navigate stack frames with c-p/ c-n.
< 1754485881 747167 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :oh hi
< 1754485886 425406 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ooh, an Emacs controls debugger
< 1754485901 648790 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :I'm sure it's just an Emacs frontend to GDB or something.
< 1754485904 396906 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :fizzie: I guess I have pictures from my road trip? I haven't uploaded anything. I don't even know where I would upload things these days
< 1754485952 458677 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw I consider audio to be soft real-time, the consequences of glitches are minor by comparison with what they could be in other cases
< 1754485955 28654 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :spent a week sleeping in my car or in a tent while going all over southern Sweden
< 1754485977 29369 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: ah I didn't realise they had three categories on wikipedia
< 1754485979 161089 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :I self-host an instance of https://piwigo.org/ because (a subset of) our relatives generally seem to be interested in what's up, and that's an easy way to make it so. It's not great.
< 1754486008 804332 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :firm realtime is more "glitches cost us a serious amount of money, but if the probability is low enough that's still cheaper than the cost of coding to the worst case"
> 1754486013 801290 PRIVMSG #esolangs :14[[07Dotcomma14]]4 M10 02https://esolangs.org/w/index.php?diff=162949&oldid=140481 5* 03Ractangle 5* (+105) 10
> 1754486026 46914 PRIVMSG #esolangs :14[[07User:Hotcrystal0/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162950&oldid=162948 5* 03Hotcrystal0 5* (+167) 10
< 1754486036 685947 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: but in safety critical design there are different levels depending on how bad the consequences could be. Which is sort of separate from the whole realtime vs not. Two different axes I feel like.
< 1754486051 884964 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…and hard realtime is for when that tradeoff *Isn't* worth it, e.g. pacemakers and the like
< 1754486054 97424 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :Like: the ABS breaks failing is clearly worse than the engine control unit failing.
< 1754486077 975387 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :And that is generally reflected in what level of requirements you need to adhere to
< 1754486079 916333 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there have been a few cases where the wires controlling aeroplane engines have failed
< 1754486090 496202 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :their failsafe state is to keep running continuously, which makes sense when you think about it
< 1754486108 663645 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :meaning that after the plane landed they had to wait for it to run out of fuel
< 1754486109 418706 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: even in a plane you have the same thing: auto pilot failing is not as bad as the fly by wire controls failing
< 1754486124 893379 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :indeed
> 1754486124 930341 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162951&oldid=162910 5* 03Junkshipp 5* (+368) 10/* #pl - Plugging in expressions */
> 1754486149 563558 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162952&oldid=162951 5* 03Junkshipp 5* (+12) 10/* #pl - Plugging in expressions */
> 1754486211 739258 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162953&oldid=162952 5* 03Junkshipp 5* (+59) 10/* #pl - Plugging in expressions */
> 1754486225 620965 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162954&oldid=162953 5* 03Junkshipp 5* (+0) 10/* #pl - Plugging in expressions */
< 1754486226 217192 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Airbus's fly by wire system actually has three different states with different implementation complexity
< 1754486232 793082 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :each industry has it's own standards for this, and I have never worked in flight. But as I understand it from what I have heard and read, they have levels A-D where A means "if this fails everyone dies", C is like "some people might get injured" and D is like "loss of monetary value I guess" (approximately, I don't remember the actual exact definitions)
< 1754486251 184886 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if something goes wrong (e.g. sensor malfunction) they will switch to a simpler implementation to maximise the chance that the controls are still usable to control the plane
< 1754486282 716405 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which is interesting because it's the different safety standards thing, but within a single program
< 1754486303 732201 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :fizzie: thanks for that link. I was thinking about immich personally
< 1754486323 75653 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :having some control authority is more important than having the controls react in a largely controllable way, which is more important than the protections against accidental dangerous inputs from the pilots
< 1754486330 228608 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :fizzie: do you know if that piwigo has support for viewing panorams other than layed out flat?
< 1754486444 969192 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: yep. I believe the car industry have similar things. And since I work on (mobile, albeit very slowly) industrial equipment we have our own standards for safety that we need to adhere to. Though they are considerably less stringent than in flight.
< 1754486483 77301 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :fizzie: oh god it is php :(
< 1754486484 563533 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :stringent standards don't always end up improving safety – the more difficult the standard is to follow, the more likely someone will violate it
< 1754486501 536881 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :Vorpal: Not built-in, I don't think, but there were some plugins. I tried one, it sort of worked, but then gave up on it. I haven't done many stitched-up panoramas lately.
< 1754486505 772970 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :I did say it's not great.
< 1754486506 288307 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so more stringent standards likely also need more stringent enforcement, which often nobody is willing to pay for
< 1754486528 610852 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :fizzie: oh I missed that part, it was line wrapped to the next line
< 1754486596 401608 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :I think I originally ran something called "gallery2", but it went defunct, and Piwigo is what I found to migrate to.
< 1754486605 884402 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I think the open source db server world is terrible. Postgres is a pain to upgrade (you need to export and re-import all your data, wtf). Mysql/mariadb is well... it was a joke, I don't know if it still is actually.
< 1754486635 896902 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I run postgres on my server, it is more of an upgrade pain than anything else there, although still manageable
< 1754486687 182433 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :I guess you could argue that if exporting and re-importing is a pain, that's just a sign your data recovery solution is sub-par.
< 1754486714 877579 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :fizzie: I do have automated backups, on the file level. I like databases that are compatible with that. Such as SQLite
< 1754486740 902480 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :The wiki runs on MariaDB, because (at least at the time) I got the impression that while MediaWiki *could* run on postgres, it really was "natively" more MySQL-ish.
< 1754486743 295725 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :And I like software that will auto-upgrade their schema when I upgrade the podman container.
< 1754486779 719184 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :(I don't want a multi-step upgrade process)
< 1754486794 769202 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I found https://github.com/meichthys/foss_photo_libraries/tree/main a while ago, seemed like a good comparison.
< 1754486880 82439 :fizzie!irc@selene.zem.fi PRIVMSG #esolangs :I've also somewhat recently set up MariaDB's replication thing, so instead of just weekly backups, there's a copy of the wiki that's just in the order of seconds out of date. (Well, for everything that's in the database. Some file uploads younger than a week might get lost.)
< 1754486944 670027 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I only have one piece of software using postgres these days: miniflux (RSS reader). Everything else uses sqlite for the most part.
< 1754486997 260577 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :the key thing is, I can take a btrfs snapshot and backup that.
< 1754487438 547433 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 JOIN #esolangs * :Textual User
< 1754488642 747762 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
< 1754489995 612109 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :" [rust] and when you aren't using the standard & and &mut, existing libraries don't work very well" => how much is this only because the built-in & and &mut reference types get special treatment for the orphan impl rule. As in `impl C for T` is allowed only if either the trait C or the top level type constructor of the implementing type T
< 1754489996 112432 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :is defined in the same crate, but if the implementing type is &B or &mut B then it's enough for the top-level type constructor of B to be defined in the same crate.
< 1754490028 493810 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: actually I haven't found much breakage from the missing #[fundamental] yet
< 1754490034 776480 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed
< 1754490065 28848 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the problem is more that functions return normal Rust references and you can't turn those into your own sorts of references (and the other problem is that nothing other than &mut can be reborrowed correctly)
< 1754490080 837051 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :err, for mutable references, it isn't a problem for shared references, even custom ones
< 1754490179 145298 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but if you define a reference type yourself, you get to declare traits on it, even without #[fundamental], because you are mentioning something that is defined in the same crate
> 1754490576 921854 PRIVMSG #esolangs :14[[07User:Pifrited/A cubic box full of dried miscellaneous rock pieces form a beach for user's own playground14]]4 N10 02https://esolangs.org/w/index.php?oldid=162955 5* 03Pifrited 5* (+429) 10A cubic box full of dried miscellaneous rock pieces form a beach for user's own playground
< 1754490768 747894 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
> 1754491094 119694 PRIVMSG #esolangs :14[[07User:Pifrited/A cubic box full of dried miscellaneous rock pieces form a beach for user's own playground14]]4 10 02https://esolangs.org/w/index.php?diff=162956&oldid=162955 5* 03Pifrited 5* (+286) 10/* Uninme Lang */
< 1754492281 196294 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed
< 1754492685 756909 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
< 1754492851 470720 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: re bird sociology, a problem in our discussion here is that "bird name" means something like three different things that have subtle semantic differences, and I don't know how best to call each one. I'll have to re-read the bird book to make sure I understand exactly how this works.
< 1754492932 818499 :ais523!~ais523@user/ais523 QUIT :Quit: sorry about my connection
< 1754493036 942297 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :One thing you may call "bird name" is for our purposes effectively synonymous with "bird". To evaluate a bird application xy, you have to say this kind of name of the bird y to the bird x, and bird x replies with the name of xy. Bird sociologists (probably each of the ones that we meet in the book, but at least one definitely) can translate between
< 1754493037 442630 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :bird name and bird both ways: if he sees a bird he will know what its name is, and if he learns the name of a bird (because a bird says it as a reply to the application) then there is a bird with that name in the forest and the bird sociologist can always find one (though it may take a long time).
< 1754493082 27656 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :We never find out the name in this sense of any bird in the book, and the narrator might not even know how to represent them in writing.
< 1754493235 560953 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :The second thing that you may call "bird name" are the descriptions like "kestrel", "mockingbird", "identity bird" etc. These are defined by some property, usually some equation of two bird expressions with bird application, in some universal quantifiers over bird-valued variables.
< 1754493280 5484 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :The third is the capital letters like K and S that are used to name a bird with such a property in equations written in short form.
< 1754493455 288801 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed
< 1754493468 748095 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas
> 1754493539 936452 PRIVMSG #esolangs :14[[07SUB14]]4 M10 02https://esolangs.org/w/index.php?diff=162957&oldid=88041 5* 03PkmnQ 5* (-7) 10/* Examples */
< 1754493578 185420 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :If I understand correctly, there are at least three difficulties here. One is that the second kind of bird name isn't unique, there could be multiple birds with different names that are kestrels or whatever S is called. This can happen even for identity birds, even though their equation is so constraining that any two identity birds must give the
< 1754493578 686077 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :same answer if you ask them the same question. Note that most properties aren't so constraining, you could have two different K combinators K_1 and K_2 such that for some x, K_1 x != K_2 x. all they have to satisfy is that for every x and y, K_1 x y = K_2 x y = x. And some named properties are even more free than that.
< 1754493851 36221 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1754493869 840191 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :The second problem is that it's possible that two birds are the same combinator, they always give the same answer for any question, but not only they have different names, but some non-combinator birds can distinguish between them, even though this would be impossible in the pure lambda calculus bird. You could have two identity birds I_♀︎ and
< 1754493870 339978 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I_♂︎, then for every bird x, I_♀︎ x = I_♂︎ x = x. But there could be a sexer bird s such that s I_♀︎ = K but s I_♂︎ = K I.
< 1754493916 416413 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :Or two birds could differ not just by their name but in other properties that are mentioned in a few chapters of a bird books, like on which days they sing.
< 1754493940 908444 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :(Singing is unrelated to the replies they give to an application, to be clear.)
< 1754494148 204325 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :And the third problem, and I think this is the only one that the book directly brings up, is that some birds might not be combinators not just because they examine birds in other ways than what they compute, but because they allow you to compute something that a Turing-machine can't. There could be a bird h that solves the halting problem of Turing
< 1754494148 705094 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :machines (not of all birds, that would be impossible because of diagonalization), eg. for any encoded Turing-machine x, h x = K if x halts, h x = KI if x does not halt. Around the last chapter the bird sociologist said that there's a rumor that such a powerful bird exists in a faraway forest, but he does not know if that rumor is true.
< 1754494277 852782 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523, Vorpal: the discussion about different degrees of realtime is interesting, I should try to say a few things about it later, in relation to my current job. I don't do any of the parts that are even close to real time, but I at least interact with co-workers who do, and the non-realtime programs that I work on communicates with those.
< 1754494640 17517 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: wib_jonas
< 1754494875 874995 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name)
< 1754495230 29001 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 JOIN #esolangs * :Textual User
> 1754496728 999625 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162958&oldid=162945 5* 03Thomas 5* (+108) 10
> 1754496755 283213 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162959&oldid=162958 5* 03Thomas 5* (+9) 10
> 1754496794 129650 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162960&oldid=162959 5* 03Thomas 5* (-2) 10
> 1754497528 932779 PRIVMSG #esolangs :14[[07Minsky machine busy beaver14]]4 10 02https://esolangs.org/w/index.php?diff=162961&oldid=157921 5* 03C++DSUCKER 5* (+795) 10
> 1754498096 374636 PRIVMSG #esolangs :14[[07Minsky machine busy beaver14]]4 M10 02https://esolangs.org/w/index.php?diff=162962&oldid=162961 5* 03C++DSUCKER 5* (+1) 10
> 1754498971 543450 PRIVMSG #esolangs :14[[07MIG14]]4 N10 02https://esolangs.org/w/index.php?oldid=162963 5* 03HyperbolicireworksPen 5* (+418) 10Created page with "MIG or Mission: Impossible graphs in a language that runs solely on a graph Here's the definition: In MIG each line consists of a stack of values x_1,x_2,...,x_n. When the line is run put the first value at the bottom of the stack then go to the corresponding
> 1754499030 485233 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162964&oldid=162963 5* 03HyperbolicireworksPen 5* (+64) 10
> 1754499050 53040 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162965&oldid=162964 5* 03HyperbolicireworksPen 5* (+27) 10
> 1754499141 701313 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162966&oldid=162965 5* 03HyperbolicireworksPen 5* (+57) 10
< 1754499233 965328 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :wib_jonas: "I don't do any of the parts that are even close to real time, but I at least interact with co-workers who do, and the non-realtime programs that I work on communicates with those." <-- depending on how, you need to be careful so the realtime program doesn't end up waiting on the non-realtime program causing a priority inversion.
< 1754499281 203743 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs : wib_jonas: actually I haven't found much breakage from the missing #[fundamental] yet <-- I would expect the lack of automatic reborrowing of User defined &mut would be the killer
< 1754499309 461049 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs : but if you define a reference type yourself, you get to declare traits on it, even without #[fundamental], because you are mentioning something that is defined in the same crate <-- it would be a problem for downstream traits using your reference though
> 1754499424 644559 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162967&oldid=162966 5* 03HyperbolicireworksPen 5* (+110) 10
< 1754499450 241963 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: say I have a combinator ! defined as ! a b c d = (a a) b (c d)
< 1754499511 816317 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :then, (! ! j) c d = (! ! j) (c d), so in a sense (! ! j) is the identity combinator, regardless of j
< 1754499537 293716 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think that when looking for small combinator bases, we need to define whether or not this sort of thing stlil counts as universal (suppose there was no way to produce an identity combinator otherwise)
< 1754499572 907759 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I suspect that if it doesn't, there's no way to get a universal size 1 basis – if it does, though, it becomes harder to work out the implications
> 1754499605 963397 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162968&oldid=162967 5* 03HyperbolicireworksPen 5* (+92) 10
< 1754499682 511056 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if it does, though, this trick lets you define K despite having no cancellative combinators
> 1754499708 78286 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162969&oldid=162968 5* 03HyperbolicireworksPen 5* (+51) 10
> 1754499716 991138 PRIVMSG #esolangs :14[[07User:Hotcrystal0/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162970&oldid=162950 5* 03Hotcrystal0 5* (+120) 10
< 1754499985 2347 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :this is quite interesting: sudo bpftrace -e 'tracepoint:syscalls:sys_enter_execve,tracepoint:syscalls:sys_enter_execveat { printf("%lld s: %s %s\n", nsecs(boot) / (1000 * 1000 * 1000), comm, str(args.filename)); }'
< 1754500004 148257 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :it prints the time (since boot) and the command name, for all exec calls
< 1754500032 213218 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :well it prints the parent and child names
< 1754500052 459289 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so you can see what programs are running, for some definition of "run"
< 1754500053 662042 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I found some silly python process that was using system() when it shouldn't that way for example
< 1754500065 879234 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :are becoming running, rather than are currently running
< 1754500080 978200 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: also, just have that running and launch a new shell, it is very interesting to see how much crap my zshrc apparently contains.
< 1754500125 78425 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :it captures ephermal processes that you wouldn't notice otherwise
< 1754500213 707433 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :also apparently when I launch a root shell it runs a whole bunch of more things than when I launch a normal shell. That is very odd, and I should look into that.
< 1754500292 860604 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: Good thoughts. The book does emphasize this somewhat, that e.g. a starling is *any* bird S which satisfies S x y z = x z (y z); and birds are characterized by properties rather than species.
< 1754500327 580289 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :The book does also have a notion of proper and improper combinators, as well as "order"; the order of a proper combinator is its rank. The idea of improper combinators is to characterize e.g. C K or K I.
< 1754500348 347904 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :oh dear god, vscode runs git a lot. And it doesn't cache the path, it tries /usr/local/bin/git, /usr/local/sbin/git, ... etc every single time.
< 1754500368 562680 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :it is quite amazing the silly things you can find with something as simple as that
< 1754500419 2156 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Well, we can use rank to tell. I has rank one, so anything equivalent to it also must have rank one. But (! ! j) has rank two, so it's clearly something different.
< 1754500461 44452 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :also, why the hell does launching a root shell run flatpak?
< 1754500468 972138 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
< 1754500474 538916 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: OK, by that definition, I think a universal basis of size 1 is impossible, because if it's applicative I think that implies it can't implement a rank 1 identity function, and it's hard to see how it could be universal without being applicative
< 1754500515 133815 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Makes sense. That's roughly where I am, too. I won't say that some sort of super-S is impossible, but it does seem like it has to do a *lot* of different things.
< 1754500552 172631 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :This would be simpler if there were a super-strict dividing line between affine and duplicative combinators, but there's no reason that a duplicative combinator couldn't have an affine effect after it's been partially applied.
< 1754500586 85801 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Your ! example does a good job of showing that. After the first partial application, the rest of the combinator is affine; linear, even.
< 1754500599 938796 :zemhill!bfjoust@selene.zem.fi PRIVMSG #esolangs :web.ZYP: points -24.90, score 5.45, rank 47/47
< 1754500632 439342 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(the "no rank 1 identity function" is because the leftmost application can't have a variable on the left without evaluating the variable (which the identity function doesn't do), and can't produce the identity function with a variable on the right unless it has the identity function on the left)
< 1754500700 431688 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and then by induction you can show that you can't produce the identity function unless you had one to start with
< 1754500768 223788 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :flatpak: aha: /etc/profile.d/flatpak.sh
> 1754500877 134868 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162971&oldid=162960 5* 03Thomas 5* (+40) 10
< 1754500901 57221 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Right. I didn't get around to actually writing it in the [[combinatory logic]] page, but a complete basis needs some way of bootstrapping application, and curiously neither K nor I have that applicative property.
< 1754500925 999468 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: well, it needs some way to bootstrap application and some way to duplicate data
< 1754500941 515304 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but those logically go in the same combinator, because duplicating data will involve an application somewhere
< 1754500991 757779 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Right. M will do just as well as S for that. MBTI (Church's basis) is equivalent to BCSI (the aristocratic basis).
< 1754501033 581213 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I'm still chewing on the revelation that GI is equivalent to BCI. I can't find a source for this prior to Smullyan and suspect that he's the one who proved it first.
< 1754501368 274975 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :last time I looked at this, I decided there were 3×3=9 basic combinators: when compiling an application from lambda calculus to combinators by eliminating variables one at a time, the left and right of the application can each be a) a term that doesn't include the variable you're eliminating, or b) a term that's just a single variable (the one you're eliminating), or c) a term that does include the variable you're eliminating but is rooted at an application
< 1754501376 711883 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :three possibilities for the LHS, three for the RHS
< 1754501455 313058 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in case c) you have to recursively eliminate the variable
< 1754501494 540922 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :interestingly, K doesn't show up in this scheme (but KI does)
< 1754501509 745849 :zemhill!bfjoust@selene.zem.fi PRIVMSG #esolangs :web.ZYP: points -21.33, score 7.28, rank 47/47 (--)
< 1754501605 65514 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : oh dear god, vscode runs git a lot. And it doesn't cache the path, it tries /usr/local/bin/git, /usr/local/sbin/git, ... etc every single time. ← it's probably just calling execvp, which probably doesn't cache, and might not even be able to without breaking the spec
< 1754501646 18862 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :bash is able to cache paths of executables, but doesn't unless specifically requested to, in case you install a new executable higher up on the path than one that's been cached
< 1754501649 281972 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :yeah, But both bash and zsh are smarter (you can see that with the hash command)
< 1754501662 708268 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :I think bash does this by default?
< 1754501710 550422 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :and the zsh setup I use hashes everything in PATH once at startup I believe
< 1754501713 741574 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I wonder if inotifying on PATH would be more efficient than rescanning every time
< 1754501722 562334 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :it should be
< 1754501755 540534 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the contents of PATH don't usually change much, unless you have . in there
< 1754501806 975211 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :22258 s: systemd /proc/self/fd/16 | /usr/lib/systemd/systemd-executor --deserialize 144 --log-level info --log-target journal-or-kmsg <-- interesting, systemd apparently opens the binary first then execs the path under /proc. For some reason.
< 1754501885 93878 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that used to be the only safe way to prevent TOCTOU
< 1754501894 491788 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if you want to do some checks on a file before operating on it
< 1754501938 893310 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :sure, but this is a root program executing another root owned program as root. My guess is that this is to protect against upgrades. E.g. if I install a new version of systemd it wants to keep executing the old version of this helper binary
< 1754501951 867130 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :probably to protect against unstable API breaking things
< 1754501967 803756 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :but what about shared libraries? Won't help with that
< 1754501973 285512 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(this was notably famous with setuid shell scripts – some OSes checked to see if the file was setuid, then escalated and passed the file to the shell, but that was exploitable by swapping out a component of its path after the check but before the root shell started)
< 1754502026 212242 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :nowadays you can use openat and friends, which is a little more elegant
< 1754502033 591960 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :to protect against the same exploit
< 1754502046 732734 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :openat doesn't help with exec though?
< 1754502057 297968 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :there is no execfd()
< 1754502057 651428 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :execat can execute from an open FD
< 1754502065 763036 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :err, execveat
< 1754502065 812274 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :oh there is?
< 1754502149 258925 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :looks like the rule is to pass an empty string as the filename, the file's FD where you would normally put the directory FD, and AT_EMPTY_PATH in the flags
< 1754502151 184656 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :right, looking at the bird book, the list in the appendix says Txy = yx, which is the combinator that ais523 mentioned. The book also uses this a lot, and in http://tunes.org/~iepos/joy.html this is the very first named combinator, called swap. I will have to add it to the tables.
< 1754502208 695996 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :ais523: anyway, bpftrace is really cool. Well worth playing around with and seeing what is going on on your system. Plus very useful skill to have for when you need to use it in an actual emergency.
< 1754502222 947962 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's the second-most used combinator in my codebase, after B
< 1754502225 401509 :Vorpal!~Vorpal@user/Vorpal PRIVMSG #esolangs :you can collect stacks, make histograms, etc
< 1754502249 266837 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :oh, that's the underload ~ operator, right?
< 1754502275 979400 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's more like ~^
< 1754502331 873128 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ah
< 1754502335 331461 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(which is also very commonly used in Underload, sufficiently so that I have it abbreviated to ` in my notes)
< 1754502337 795866 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I'm getting confused here
< 1754502385 338986 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the Underload/combinator correspondence is inherently confusing, I think
< 1754502389 897595 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :at least, I have trouble following it
< 1754502451 877789 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :that's why I made a table at https://esolangs.org/wiki/Talk:Mlatu#Relation_to_Underload , and now I'll have to add an extra column to it with the one-letter names from the bird book
< 1754502489 177350 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and probably add a few rows too
< 1754502529 760799 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :probably whichever of T, B, C, M, W aren't in there
< 1754502541 951732 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and S too I guess
< 1754502544 689515 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :no, I mean it doesn't quite translate directly
< 1754502597 69180 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :what? but all lambda calculus expressions translate to Underload, it's that some underload expressions don't translate to combinators
< 1754502598 627970 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because after running a command you have to pass control to the next command in the program, not the top of the stack
< 1754502616 879782 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: yes but that's a *different* translation
< 1754502641 98555 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :drat
< 1754502708 478190 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I think I'm too tired to figure this out now
< 1754502878 784877 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523, b_jonas: What's happening is that we can interpret the combinators in ETCC instead of ETCS; instead of functions on values from sets, they're functors on objects from categories! And then there is often more than one category-like composition structure lurking in the typical programming environment.
< 1754502920 775426 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I debated hacking out a section in [[combinatory logic]] for this, but was psychically blocked by the social stigma of category theory. Maybe I'll make a side page.
< 1754503021 120719 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I still don't fully understand it myself. e.g. we have to make I pull double duty; it designates both identity arrows (which each are equivalent to an object) and identity endofunctors (which are equivalent to a category).
< 1754503035 313015 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :also the bird book talks a lot about bird properties defined by an equation where the bird appears in both sides. only one of these is mentioned in the appendix, Theta, but I think Unlambda v is mentioned somewhere, and a whole theorem of who to find a bird for any such equation. and I think these equations are not only satisfied by multiple birds, but also by multiple different combinators.
> 1754503053 849106 PRIVMSG #esolangs :14[[07GnomeLang14]]4 10 02https://esolangs.org/w/index.php?diff=162972&oldid=162971 5* 03Thomas 5* (+7) 10
< 1754503759 877040 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :hold on... https://esolangs.org/wiki/Combinatory_logic#Table_of_combinators does not list W
> 1754503828 403744 PRIVMSG #esolangs :14[[07User:Hotcrystal0/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162973&oldid=162970 5* 03Hotcrystal0 5* (-119) 10
< 1754504207 308645 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 JOIN #esolangs * :Textual User
< 1754504353 326410 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: Ah nuts, I knew I'd miss one. Ping me and I'll do it; otherwise, I won't step on your toes.
< 1754505583 308894 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :korvo: I won't add it becuase I don't know the english names like "kestrel"
< 1754505662 456612 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :the translated names are usually close to the originals, as in they mean a similar category of real-world bird animals, but animal names are fuzzy and there's no one-to-one mapping between them in different languages, so I won't try to backtranslate it
< 1754505717 805624 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :in this case my guess is "warbler" becuase of the names for W* and W** and W[1] listed, but you should actually check that in the book
< 1754505882 835596 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :most of these bird names I know of only from the bird book, not from real world bird animals
> 1754505911 398401 PRIVMSG #esolangs :14[[07Combinatory logic14]]4 10 02https://esolangs.org/w/index.php?diff=162974&oldid=162911 5* 03Corbin 5* (+68) 10/* Table of combinators */ Add W.
< 1754505959 117642 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :the table in my book lists W, W', W^*, W^{**}, but no W_1 or W_2, at least not under that name
< 1754505975 348902 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: No worries! I am happy to double-check when I happen to have the corresponding dead-tree on my shelf. Ping me again if I missed another one.
< 1754506125 66794 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ideally a table like this should give both a lambda expression style definition like `W x y = x y y`, which is what's in the table in the book, and a combinator expression from other combinators, like W = S S (S K)
< 1754506147 203941 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :of course the first one isn't possible for all birds
< 1754506193 976721 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :but it should be possible to compute the lambda calculus expressions automatically from the definitions in the table with a lambda calculus evaluator
< 1754506217 792674 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Bird names never translate well. There is a bird that visits my front yard every morning. In Lojban, it's called {blanykorvo}, roughly "blue crow". In American English, it's called "California scrub jay".
< 1754506257 878295 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :my problem is with "kestrel", which is apparently in the name of some falons but it's not clear if it's a meaningful group
< 1754506284 410439 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :...I mean, {blanykorvrkalyfyrniaskrybdjei} is legal fu'ivla, but that's not how I call to them in the morning.
< 1754506314 594026 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :but fortunately the book doesn't use "falcon" as a bird name
< 1754506340 796031 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Ha, no, I think "kestrel" is a vibe, probably from a fairly old word. Definitely not a clade.
> 1754506355 996458 PRIVMSG #esolangs :14[[07User:HyperbolicireworksPen14]]4 10 02https://esolangs.org/w/index.php?diff=162975&oldid=162700 5* 03HyperbolicireworksPen 5* (+9) 10
< 1754506393 401277 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :...Oh, that's apparently an American view, because the American kestrel is not a true kestrel. True kestrels have evidence for a clade. Very cool, TIL.
> 1754506561 495889 PRIVMSG #esolangs :14[[07Primal14]]4 N10 02https://esolangs.org/w/index.php?oldid=162976 5* 03HyperbolicireworksPen 5* (+123) 10Created page with "Primal is a esolang that works using only two accumulators and is turing complete (unless I'm missing something) Commands:"
< 1754506706 336456 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :the good thing is that there are only like 10_000 bird species, less if you exclude Madagascar, New Zealand, Australia, and various isolated islands, and there probably aren't many more to discover, so there's a bound for how bad the names can become. if you tried to name something of arthropods then you'd run into an ever-growing changing mess of horrible confusing vernacular names. even naming objects
< 1754506712 706129 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :from fish would be much worse than birds.
< 1754507006 646349 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :but Smullyan's names also include "thrush" and "bluebird", of which "bluebird" is apparently a group of thrushes in the New World only
< 1754507019 573019 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :s/thrushes in/thrushes living in/
> 1754507070 900339 PRIVMSG #esolangs :14[[07Primal14]]4 10 02https://esolangs.org/w/index.php?diff=162977&oldid=162976 5* 03HyperbolicireworksPen 5* (+878) 10
< 1754507159 552807 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Lojban only has edible birds, not singing birds. It has duck, goose, chicken, turkey.
> 1754507183 323019 PRIVMSG #esolangs :14[[07Primal14]]4 10 02https://esolangs.org/w/index.php?diff=162978&oldid=162977 5* 03HyperbolicireworksPen 5* (+143) 10
> 1754507266 461253 PRIVMSG #esolangs :14[[07Primal14]]4 10 02https://esolangs.org/w/index.php?diff=162979&oldid=162978 5* 03HyperbolicireworksPen 5* (+133) 10
< 1754507268 790822 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :real world falcons and eagles are neither edible nor singing
> 1754507285 931966 PRIVMSG #esolangs :14[[07User:HyperbolicireworksPen14]]4 10 02https://esolangs.org/w/index.php?diff=162980&oldid=162975 5* 03HyperbolicireworksPen 5* (+12) 10
< 1754507293 701044 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :(I have to say real world, because I don't claim that falcons in the bird book don't sing)
< 1754507589 154357 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :is there a bird name for KI ?
> 1754507643 272470 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162981&oldid=162969 5* 03HyperbolicireworksPen 5* (+46) 10
> 1754507780 19954 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162982&oldid=162981 5* 03HyperbolicireworksPen 5* (+77) 10
< 1754507780 82286 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
> 1754507796 687991 PRIVMSG #esolangs :14[[07MIG14]]4 10 02https://esolangs.org/w/index.php?diff=162983&oldid=162982 5* 03HyperbolicireworksPen 5* (+1) 10
< 1754507949 110224 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I don't think K I actually shows up. The sections that introduce K and I are adjacent and there's lots of exercises involving how they are related to fundamental properties, but I didn't see the formation of K I in there.
< 1754508048 724169 :int-e!~noone@int-e.eu PRIVMSG #esolangs :. o O ( Lertsek )
< 1754508247 613476 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I get the feeling that Smullyan didn't want to name the constant birds. He talked about how they can become constant, using properties like "fixation" and "egocentrism" that I'm not super-comfortable using as-is.
< 1754508477 146544 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Like, he more-or-less defines a kestrel as any combinator K s.t. K x is fixated on x, which merely means that (K x) y = x; in today's language, we say that K x y is constantly x, which is just an unhelpfully-long explanation of that = sign.
> 1754508911 430509 PRIVMSG #esolangs :14[[07MIG+14]]4 N10 02https://esolangs.org/w/index.php?oldid=162984 5* 03HyperbolicireworksPen 5* (+882) 10Created page with "MIG+ is a version of MIG with a shared variable Instead of going to the next command in the stack, they go to a command based on the variable and set the variable to a different value. Notation: MIG+ code looks like this: x_{1,1},y_{1,1},"string_{1,1}":z_
> 1754508942 649943 PRIVMSG #esolangs :14[[07MIG+14]]4 10 02https://esolangs.org/w/index.php?diff=162985&oldid=162984 5* 03HyperbolicireworksPen 5* (+24) 10
> 1754508964 672670 PRIVMSG #esolangs :14[[07MIG+14]]4 10 02https://esolangs.org/w/index.php?diff=162986&oldid=162985 5* 03HyperbolicireworksPen 5* (+68) 10
> 1754509053 600947 PRIVMSG #esolangs :14[[07MIG+14]]4 10 02https://esolangs.org/w/index.php?diff=162987&oldid=162986 5* 03HyperbolicireworksPen 5* (+86) 10
> 1754509195 929483 PRIVMSG #esolangs :14[[07MIG+14]]4 10 02https://esolangs.org/w/index.php?diff=162988&oldid=162987 5* 03HyperbolicireworksPen 5* (+81) 10
> 1754509212 481359 PRIVMSG #esolangs :14[[07User:HyperbolicireworksPen14]]4 10 02https://esolangs.org/w/index.php?diff=162989&oldid=162980 5* 03HyperbolicireworksPen 5* (+10) 10
< 1754509424 762072 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :korvo: I see
< 1754510302 395810 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 JOIN #esolangs * :Textual User
> 1754510462 104946 PRIVMSG #esolangs :14[[07MIG+14]]4 10 02https://esolangs.org/w/index.php?diff=162990&oldid=162988 5* 03HyperbolicireworksPen 5* (+340) 10
> 1754510993 398945 PRIVMSG #esolangs :14[[07Treebrainfuck14]]4 N10 02https://esolangs.org/w/index.php?oldid=162991 5* 03HyperbolicireworksPen 5* (+347) 10Created page with "Treebrainfuck is a derivative of brainfuck: Changes: Treebrainfuck is a version of brainfuck that instead of taking place on a tape, takes place infinitely far up a infinite tree with an infinite number of branches on each node this variation adds o
> 1754511208 382737 PRIVMSG #esolangs :14[[07Treebrainfuck14]]4 10 02https://esolangs.org/w/index.php?diff=162992&oldid=162991 5* 03HyperbolicireworksPen 5* (+1047) 10
> 1754511309 366479 PRIVMSG #esolangs :14[[07Treebrainfuck14]]4 10 02https://esolangs.org/w/index.php?diff=162993&oldid=162992 5* 03HyperbolicireworksPen 5* (+106) 10
> 1754511399 514090 PRIVMSG #esolangs :14[[07User:HyperbolicireworksPen14]]4 10 02https://esolangs.org/w/index.php?diff=162994&oldid=162989 5* 03HyperbolicireworksPen 5* (+19) 10
> 1754511489 440513 PRIVMSG #esolangs :14[[07Arr ow14]]4 10 02https://esolangs.org/w/index.php?diff=162995&oldid=162587 5* 03HyperbolicireworksPen 5* (+33) 10
> 1754512495 207787 PRIVMSG #esolangs :14[[07SARCASM14]]4 N10 02https://esolangs.org/w/index.php?oldid=162996 5* 03RainbowDash 5* (+5487) 10Woohoo
< 1754512512 262283 :APic!apic@chiptune.apic.name PRIVMSG #esolangs :Good Night
< 1754513804 63017 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :night
< 1754513805 874014 :ais523!~ais523@user/ais523 QUIT :Quit: quit
> 1754515957 638784 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162997&oldid=162954 5* 03Junkshipp 5* (+443) 10/* Syntax */
< 1754516337 918959 :tromp!~textual@2001:1c00:3487:1b00:788c:1b3f:625a:cce3 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…
> 1754516521 774844 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162998&oldid=162997 5* 03Junkshipp 5* (-59) 10/* #pl - Plugging in expressions */
> 1754519289 467907 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=162999&oldid=162998 5* 03Junkshipp 5* (+522) 10/* #pl - Plugging in expressions */
> 1754519362 89635 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=163000&oldid=162999 5* 03Junkshipp 5* (+23) 10/* Commands */
> 1754519418 738045 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=163001&oldid=163000 5* 03Junkshipp 5* (-40) 10/* Deduction */
< 1754519421 917046 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname
> 1754523968 251614 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=163002&oldid=163001 5* 03Junkshipp 5* (+856) 10
> 1754523991 212403 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=163003&oldid=163002 5* 03Junkshipp 5* (+4) 10/* Deduction */
> 1754524010 474884 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=163004&oldid=163003 5* 03Junkshipp 5* (+5) 10/* #id - More plugging in */
> 1754524420 588182 PRIVMSG #esolangs :14[[07User:Junkshipp/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=163005&oldid=163004 5* 03Junkshipp 5* (+13) 10/* #in - Induction */
> 1754524468 461492 PRIVMSG #esolangs :14[[07User talk:Pifrited/A cubic box full of dried miscellaneous rock pieces form a beach for user's own playground14]]4 N10 02https://esolangs.org/w/index.php?oldid=163006 5* 03I am islptng 5* (+133) 10Created page with "conlang ~~~~"