00:34:11 -!- aadenboy has joined.
00:40:13 <aadenboy> first time using an irc client :O
00:40:58 <korvo> No worries. Hopefully not your last.
01:01:32 <esolangs> [[Better-machine]] https://esolangs.org/w/index.php?diff=174907&oldid=174821 * PrySigneToFry * (+136)
01:03:01 <esolangs> [[Bbtos]] https://esolangs.org/w/index.php?diff=174908&oldid=174851 * PrySigneToFry * (+14) Format fix. It might be a bit unnecessary, and I'm not sure if it will work.
01:31:19 -!- aadenboy has quit (Ping timeout: 260 seconds).
01:48:01 <esolangs> [[Special:Log/newusers]] create * Ljcool2006 * New user account
01:58:07 <esolangs> [[User:RainbowDash]] https://esolangs.org/w/index.php?diff=174909&oldid=172105 * RainbowDash * (+57) luck ball
01:58:18 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=174910&oldid=174796 * Ljcool2006 * (+224) /* Introductions */
01:58:31 <esolangs> [[Lucky Ball]] M https://esolangs.org/w/index.php?diff=174911&oldid=174752 * RainbowDash * (+8) year
02:16:02 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement).
02:29:46 <esolangs> [[User:RainbowDash]] https://esolangs.org/w/index.php?diff=174912&oldid=174909 * Aadenboy * (-2) change table size to 100% to fit
03:03:28 -!- aadenboy has joined.
03:04:01 -!- aadenboy has quit (Client Quit).
03:14:22 -!- aadenboy has joined.
03:27:59 -!- cactushead has quit (Ping timeout: 260 seconds).
03:31:23 -!- cactushead has joined.
03:41:05 <esolangs> [[User:Tommyaweosme]] https://esolangs.org/w/index.php?diff=174913&oldid=172256 * Tommyaweosme * (-340)
04:02:40 -!- Guest97 has joined.
04:03:13 -!- Guest97 has quit (Client Quit).
04:29:56 <esolangs> [[40]] N https://esolangs.org/w/index.php?oldid=174914 * Tommyaweosme * (+18139) Created page with "40 is a programming challenge with an extremely long name. As the input gets higher, it puts more stress on the compiler. Its full name is: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
04:31:39 <esolangs> [[40]] https://esolangs.org/w/index.php?diff=174915&oldid=174914 * Tommyaweosme * (+33)
04:44:59 -!- aadenboy has quit (Ping timeout: 244 seconds).
04:47:36 <esolangs> [[40]] M https://esolangs.org/w/index.php?diff=174916&oldid=174915 * PkmnQ * (+5) /* Rules */
05:00:26 -!- aadenboy has joined.
05:07:13 -!- aadenboy has quit (Ping timeout: 264 seconds).
05:20:22 <esolangs> [[User:Mc20000/vector.css]] https://esolangs.org/w/index.php?diff=174917&oldid=174853 * Mc20000 * (+675)
05:21:04 <esolangs> [[User:Mc20000/vector.css]] https://esolangs.org/w/index.php?diff=174918&oldid=174917 * Mc20000 * (-664)
05:21:55 -!- somefan has quit (Remote host closed the connection).
05:28:44 <esolangs> [[BoxedLANG]] https://esolangs.org/w/index.php?diff=174919&oldid=174870 * Mc20000 * (+99)
05:29:07 <esolangs> [[BoxedLANG]] https://esolangs.org/w/index.php?diff=174920&oldid=174919 * Mc20000 * (+5)
05:30:55 <esolangs> [[User:None1/InDev]] https://esolangs.org/w/index.php?diff=174921&oldid=174810 * None1 * (+230) /* Commands */
05:32:28 <esolangs> [[Talk:Brainfuck extensions]] N https://esolangs.org/w/index.php?oldid=174922 * None1 * (+435) Created page with "==Why is [[Motherf]] object oriented?== The table says that Motherf is object oriented, but I didn't see a command with something to do with objects or types. --~~~~"
05:34:05 <esolangs> [[User:None1/InDev]] M https://esolangs.org/w/index.php?diff=174923&oldid=174921 * None1 * (+5) /* Commands */ Escape | so that it works correctly
05:40:23 -!- ehmry has quit (Ping timeout: 260 seconds).
06:36:44 <esolangs> [[Ring-around-the-Rosie]] https://esolangs.org/w/index.php?diff=174924&oldid=174760 * Salpynx * (+152) /* Examples */ Truth machine
06:41:08 <esolangs> [[Ring-around-the-Rosie]] M https://esolangs.org/w/index.php?diff=174925&oldid=174924 * Salpynx * (+0) /* Truth machine */ minor fix: no newline after repeating 1s
07:06:26 -!- Sgeo has quit (Read error: Connection reset by peer).
07:14:26 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174926&oldid=174902 * Menguinponky * (+50)
07:16:41 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174927&oldid=174926 * Menguinponky * (+69)
07:19:00 -!- tromp has joined.
07:25:08 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174928&oldid=174927 * Menguinponky * (+226)
07:25:58 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174929&oldid=174928 * Menguinponky * (+0)
07:36:09 -!- olus2000 has joined.
07:36:54 -!- Maze has joined.
07:37:55 <esolangs> [[Ring-around-the-Rosie]] https://esolangs.org/w/index.php?diff=174930&oldid=174925 * Salpynx * (+660) /* Examples */ control the flow
07:45:35 -!- olus2000 has left.
07:48:31 <esolangs> [[User:Mazedotexe]] https://esolangs.org/w/index.php?diff=174931&oldid=128808 * Mazedotexe * (-499) Replaced content with "hello! this account should be deleted soon :)"
07:49:11 <Maze> hi, would any wiki admins be able to delete that account Mazedotexe on esolangs.org? I don't have any use for it now, I made it almost two years ago with the intention of creating an esolang that I never got the motivation to finish
07:49:28 <esolangs> [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174932&oldid=8100 * PrySigneToFry * (+125) /* History version of Lambda calculus? */ new section
08:01:17 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174933&oldid=174929 * Menguinponky * (+194)
08:12:19 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174934&oldid=174933 * Menguinponky * (+193)
08:16:55 <esolangs> [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174935&oldid=174932 * Blashyrkh * (+192) /* History version of Lambda calculus? */
08:21:11 <esolangs> [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174936&oldid=174935 * PrySigneToFry * (+107)
08:21:41 <esolangs> [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174937&oldid=174936 * PrySigneToFry * (+1) /* History version of Lambda calculus? */ Fixing Reference Error
08:26:08 -!- Maze has quit (Quit: Client closed).
08:27:33 <esolangs> [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174938&oldid=174937 * Blashyrkh * (+372) /* History version of Lambda calculus? */
08:28:32 <esolangs> [[Talk:Lambda calculus]] M https://esolangs.org/w/index.php?diff=174939&oldid=174938 * Blashyrkh * (+2)
08:30:30 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174940&oldid=174934 * Menguinponky * (+4)
08:34:24 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174941&oldid=174940 * Menguinponky * (+31)
09:56:34 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174942&oldid=174941 * Menguinponky * (+36)
10:04:21 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174943&oldid=174942 * Menguinponky * (-1)
10:10:31 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174944&oldid=174943 * Menguinponky * (+211)
10:18:35 <esolangs> [[Ring-around-the-Rosie]] M https://esolangs.org/w/index.php?diff=174945&oldid=174930 * Salpynx * (+88) formatting
10:41:02 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174946&oldid=174944 * Menguinponky * (+6)
11:47:58 <esolangs> [[Bimo roasting language]] https://esolangs.org/w/index.php?diff=174947&oldid=172832 * RikoMamaBala * (-33)
11:51:50 <esolangs> [[Trithemius]] https://esolangs.org/w/index.php?diff=174948&oldid=153217 * Wound theology * (+786) /* Syntax */
11:55:14 <esolangs> [[Bimo roasting language]] https://esolangs.org/w/index.php?diff=174949&oldid=174947 * RikoMamaBala * (+384) /* Examples */
11:58:08 -!- ais523 has joined.
12:12:59 -!- somefan has joined.
12:18:30 <esolangs> [[Talk:BoxedLANG]] https://esolangs.org/w/index.php?diff=174950&oldid=174874 * Mrtli08 * (+171)
12:41:02 -!- somefan has quit (Remote host closed the connection).
12:43:44 <esolangs> [[The Processor Collection]] N https://esolangs.org/w/index.php?oldid=174951 * Mrtli08 * (+607) Created page with "(NOTE: Anyone can contirbute.) The Processor Collection is an esolang that behaves like an CPU, but with ... bits of data and program memory and ... bits of command data. It has multiple variants and to open one variant, at the start of the code there mu
12:44:00 <esolangs> [[The Processor Collection]] https://esolangs.org/w/index.php?diff=174952&oldid=174951 * Mrtli08 * (-12)
12:44:44 -!- somefan has joined.
12:45:29 <esolangs> [[Talk:Bimo roasting language]] N https://esolangs.org/w/index.php?oldid=174953 * Mrtli08 * (+117) Created page with "nice idea even if we are in 2026 --~~~~"
12:48:31 -!- somefan has quit (Read error: Connection reset by peer).
12:49:12 -!- somefan has joined.
13:03:47 -!- ais523 has quit (Quit: quit).
13:10:35 -!- ais523 has joined.
13:11:12 -!- somefan has quit (Quit: i quit).
13:11:26 -!- somefan has joined.
13:58:12 <esolangs> [[The Processor Collection]] https://esolangs.org/w/index.php?diff=174954&oldid=174952 * PrySigneToFry * (+284)
13:58:38 <esolangs> [[The Processor Collection]] M https://esolangs.org/w/index.php?diff=174955&oldid=174954 * PrySigneToFry * (-26)
14:21:00 <esolangs> [[Polynomix/Symbols]] https://esolangs.org/w/index.php?diff=174956&oldid=174876 * I am islptng * (+86)
14:49:51 -!- impomatic has joined.
14:52:43 -!- somefan has quit (Ping timeout: 255 seconds).
15:07:38 -!- ais523 has quit (Quit: quit).
15:23:00 -!- ehmry has joined.
15:38:38 <esolangs> [[The Processor Collection]] https://esolangs.org/w/index.php?diff=174957&oldid=174955 * Corbin * (+26) Tag as user-edited.
15:40:50 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:41:02 <esolangs> [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174958&oldid=174939 * Corbin * (+148) /* History version of Lambda calculus? */
16:06:33 <esolangs> [[Monky]] https://esolangs.org/w/index.php?diff=174959&oldid=174946 * Menguinponky * (+20)
16:08:12 -!- ais523 has joined.
16:09:35 -!- tromp has joined.
16:10:56 <esolangs> [[User:Aadenboy]] https://esolangs.org/w/index.php?diff=174960&oldid=174464 * Aadenboy * (-42) irc
16:38:33 <esolangs> [[Implied]] N https://esolangs.org/w/index.php?oldid=174961 * Aadenboy * (+1714) ]
16:43:00 -!- amby has joined.
16:43:16 <esolangs> [[Implied]] https://esolangs.org/w/index.php?diff=174962&oldid=174961 * Aadenboy * (+32)
17:12:29 <esolangs> [[Implied]] https://esolangs.org/w/index.php?diff=174963&oldid=174962 * Aadenboy * (+131)
17:13:16 <esolangs> [[User:Aadenboy]] https://esolangs.org/w/index.php?diff=174964&oldid=174960 * Aadenboy * (+107) add [[Implied]]
17:15:08 -!- impomatic has quit (Quit: Client closed).
17:18:47 <esolangs> [[User:Aadenboy/randomesolang]] https://esolangs.org/w/index.php?diff=174965&oldid=172424 * Aadenboy * (+12) add [[Implied]]
17:19:32 -!- impomatic has joined.
17:21:52 <esolangs> [[Implied]] M https://esolangs.org/w/index.php?diff=174966&oldid=174963 * Aadenboy * (-22) /* NOT gate */ shorten
17:40:34 <esolangs> [[Implied]] M https://esolangs.org/w/index.php?diff=174967&oldid=174966 * Aadenboy * (+10) verbose category name...
17:44:45 -!- ais523 has quit (Quit: quit).
18:06:15 -!- ais523 has joined.
18:12:25 <esolangs> [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174968&oldid=174958 * Yayimhere2(school) * (+14) /* History version of Lambda calculus? */
18:13:16 -!- Yayimhere has joined.
18:14:57 <ais523> the sleep is still a mess, I have been falling over and dropping things today
18:15:09 <ais523> which may be a sign of extreme tiredness or may just be lack of dexterity generally
18:16:12 <Yayimhere> it could ofcourse be a combinaiton of both
18:16:58 <korvo> Falling over is not a good sign.
18:18:37 <ais523> korvo: at least for me it's fairly common, I have medically diagnosed balance issues
18:19:08 <esolangs> [[Implied]] https://esolangs.org/w/index.php?diff=174969&oldid=174967 * Aadenboy * (+86) /* Constructions */ more constructions
18:19:16 <ais523> I went through several years of training to try to remedy them when I was younger, and now I can normally balance successfully if I'm walking/jogging, but it is still hard to stay upright when standing still
18:19:42 <ais523> so randomly falling over is less concerning when it's me than when someone else does it
18:19:52 -!- amby has quit (Ping timeout: 244 seconds).
18:20:11 <ais523> even so, I suspect it happens more often when I'm tired (if I'm alert I can catch that it might happen and put effort into consciously balancing in order to avoid that problem)
18:20:34 <ais523> the irony is that I'm fairly good at consciously balancing, probably due to having had so much practice at it (this isn't something that most people ever normally need to do)
18:21:32 <korvo> Ah. That's rough. I had a family member with permanent inner-ear issues, so I can understand a little.
18:21:59 -!- amby has joined.
18:23:22 <Yayimhere> ais523: ah. Though its sad, atleast it explains a little more
18:23:35 <ais523> there are definitely worse disorders to have
18:26:31 -!- amby has quit (Ping timeout: 240 seconds).
18:27:50 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
18:28:25 <korvo> Getting to the point with Rust where I know that inserting an & will work, but I cannot explain why.
18:28:50 -!- Yayimhere has quit (Quit: Client closed).
18:29:25 <korvo> Kind of. I'm reminded of a Penny Arcade where one of the stages of enjoying Wakfu is learning French.
18:29:46 -!- Yayimhere has joined.
18:31:39 <ais523> korvo: I think some of Rust's design decisions, especially related to references, make it needlessly difficult to learn
18:32:13 <ais523> in many cases, there are basically two syntax choices: one of them is explicit and verbose, the other states the common case implicitly
18:32:40 -!- amby has joined.
18:32:50 <ais523> Rust usually uses the latter, which leads to code that looks simple when you're starting out (thus not automatically scaring off beginners) and when you're experienced you can desugar it in your head, but in between it's really confusing because it's inconsistent with the other things you're learning
18:33:37 <ais523> annoyingly, this may have been the right decision (but I hate the fact that it probably was the right decision)
18:34:11 <korvo> ais523: Also, statically-typed parser libraries are necessarily rigid and have some sort of weird boxing. I'm trying to figure out how to scrape out the parser results into an AST and I'm currently here: https://bpa.st/LUTQ
18:34:13 <Yayimhere> im very happy that aadenboy has joined the IRC
18:34:33 <korvo> Gotta unwrap two boxes per token.
18:35:35 <ais523> korvo: an enum that holds references to itself is unusual, because it means that something else has to own the entirety of the tree whilst being unable to access it itself
18:36:15 <ais523> in particular it is very hard to return it from a function, because nothing's controlling the lifetime of the returned reference
18:36:45 <korvo> Oh, is plumbing the lifetimes not going to work? It's worked so far, including taking slices of the parsed input, and pest's docs told me that it's a good style.
18:37:01 <ais523> in practice ASTs normally use either Box (i.e. the AST owns its own branches) or Rc (the branches are reference-counted so you don't need to track an explicit owner)
18:37:14 <korvo> Otherwise, it's okay if I can't really put any state on the AST. I'm just going to immediately walk it twice, first for names and second for codegen.
18:37:22 <ais523> it does work in special cases
18:38:01 <ais523> you can't normally return the resulting things from functions if you do that, unless you write your own allocator and the lifetime you're plumbing is that of the allocator
18:38:23 <ais523> but sometimes your code doesn't require you to do any function returns (e.g. if you write the whole thing in continuation passing style)
18:38:29 <korvo> It's really too bad that OCaml's Unicode support isn't up to snuff. Maybe I'll just use Rc.
18:39:03 <ais523> just using Rc is the equivalent of how it would work in OCaml
18:39:16 <sorear> VixenValue and VixenKeyword are mutually recursive without a reference, you defined a type that includes itself inline
18:39:28 <ais523> (OCaml uses tracing garbage collection rather than reference-counting, but from the programmer's point of view it's much the same)
18:39:54 <ais523> sorear: VixenValue includes VixenKeyword via a Vec, which is enough of a reference to avoid the infinite size
18:40:30 <sorear> yes, too much punctuation and I missed that
18:41:08 <sorear> arena pattern is pretty common which would use lifetimes like this, but more likely to use a slice instead of a vec
18:41:20 <ais523> yes, this sort of lifetime plumbing does work with arenas
18:41:32 <sorear> but if everything is owned you don't have lifetimes in the types at all
18:42:42 <ais523> it's hard to give feedback on because it isn't automatically wrong, it just needs you to do something weird in the rest of the code to make it work, like using an allocator in which all deallocations are simultaneous (e.g. the arena method) or writing the program in continuation passing style
18:44:26 <ais523> actually it might be automatically wrong because of the Vec? a unary containing a keyword has an &'a Vec<VixenKeyword<'a>> which is a permaborrow and that means it's impossible to run Vec's destructor
18:44:51 <korvo> TBH this wasn't even what I was thinking about. The shape of the structs is directly from the Raku version of the compiler. Rc'ing them is not a big deal and still allows me to approach my goal of having the Rust version resemble the Raku version.
18:44:52 <ais523> unless the reference is actually a reborrow (which it would be in the continuation-passing-style case)
18:44:56 <esolangs> [[User:Aadenboy]] https://esolangs.org/w/index.php?diff=174970&oldid=174964 * Aadenboy * (+0) fix text opacity
18:45:20 <ais523> using Rc for the recursive calls will be much easier (you can still use the lifetime for the strs)
18:45:25 <ais523> err, recursive data types
18:45:40 <ais523> or Box if you don't need to be able to clone them cheaply
18:45:49 <korvo> I was complaining about what happens on line 45 when I didn't take a reference. I originally wrote `|p| p.as_str()[1..]` because I was thinking, naively, that I all I wanted to do was convert the token to a str and slice off the first character, which is a constant prefix.
18:46:01 <ais523> (you can still clone Boxes, it just needs to do a deep copy which can be slow)
18:46:35 <ais523> korvo: oh, this is a bit of syntax that's the same in almost all languages and I disagree with all of them
18:46:42 <ais523> slicing a reference produces a place, not a reference
18:47:07 <ais523> Rust does that for consistency with C and C++ but I think they get it wrong too
18:47:46 <ais523> (the reason, I think, is that people want to be able to write a = b[c] rather than a = *b[c])
18:48:26 <korvo> Yeah. Similarly, C blessed the -> macro a long time ago. Anyway, this is the error message that rustc gave me; it took me a few minutes to really understand: https://bpa.st/QUMQ
18:48:38 -!- tromp has joined.
18:48:50 <korvo> I'll give it credit for correctly pointing out *where* mistake, but not *what* mistake.
18:49:16 <ais523> this deserves a bug report I think
18:49:45 <ais523> Rust's error messages got so good due to people bug-reporting these things one at a time
18:49:51 <ais523> let me try to make an MCVE
18:49:58 <korvo> Heh, it's like Kinger. "I may not know what is error, or who is error, or when is error, or why is error, but I do know *where* is error!"
18:52:53 -!- impomatic has quit (Quit: Client closed).
18:54:40 <b_jonas> I have an old gcc error report about a C++-specific error message
18:55:10 <b_jonas> the compiler knew where the error is, but got confused about how to communicate it
18:56:14 <korvo> Also, pest's interface is very hard to actually think about. They have a Pair struct for a start/end pair of tokens, and a Pairs struct which is an Iterator of Option<Pair>. I get that it's for zero-copy, but it makes my fingerbones want to vibrate out of my hands.
19:09:33 -!- aadenboy has joined.
19:11:23 <korvo> aadenboy: Are you in PST/PDT too, or in EMEA?
19:11:45 <korvo> It's a cold sunny day here in Oregon.
19:14:49 -!- aadenboy has quit (Quit: Client closed).
19:15:35 -!- Yayimhere has quit (Ping timeout: 272 seconds).
19:20:47 <ais523> korvo: https://github.com/rust-lang/rust/issues/152064
19:21:03 -!- aadenboy has joined.
19:28:26 <korvo> ais523: Thanks! Commented and followed.
19:30:07 -!- aadenboy has quit (Quit: Client closed).
19:30:52 -!- aadenboy has joined.
19:31:05 <aadenboy> gonna pop off chatting for now; lunch is ending
19:31:52 <aadenboy> will be reading though since the entire esolangs.org domain is unblocked
19:32:03 -!- aadenboy has quit (Client Quit).
19:32:47 -!- impomatic has joined.
19:36:36 -!- somefan has joined.
19:41:59 -!- Lord_of_Life_ has joined.
19:42:49 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
19:43:20 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:48:52 <ais523> <korvo> Also, pest's interface is very hard to actually think about. ← I feel like people often aim for zero-copy without understanding what they're giving up in return – if the things you're copying would be small enough, just copying them is often more efficient than jumping through the hoops that you need to avoid copying them
19:49:39 <ais523> although, in parsers, there is a non-performance-related reason to zero-copy: having references into the original allows you to reconstruct the relevant spans in the original, for giving line numbers to error messages and the like
19:50:29 <ais523> zerocopy in parsers that don't need the span information is weird because the performance depends a lot on what you're parsing – if you have lots of long unescaped string literals it helps, otherwise it hurts
19:50:53 <ais523> but the "lots of long unescaped string literals" is a fairly common case (not in programming languages but in file formats)
19:51:54 <korvo> Yep. The pest book discusses this, but their JSON example is short enough that I'd just read that instead: https://github.com/pest-parser/book/blob/master/examples/json-parser/src/main.rs
19:52:14 <korvo> They explicitly say that the caller would have to do unescaping themselves in a separate pass.
19:53:09 <ais523> this makes me think that a sensible file format would use length-prefixed strings rather than trying to escape them…
19:53:20 <ais523> that isn't very good for human-written files, though
19:54:37 <ais523> and now I'm thinking about how the performance-optimal way to do length-prefixed strings in a parser (escaped or unescaped) would be to parse them lazily, so that you don't have to load them into memory once to parse them and again to use them
19:55:02 <ais523> (which implies that "zero-copy" is a bad name, as it's actually half a copy – you still have to do the read, just not the write)
19:55:30 <ais523> OK, maybe ⅓ of a copy because most modern processors are twice as fast as reading as they are at writing
19:58:43 <korvo> Pannenkoek would approve.
20:01:00 -!- somefan has quit (Quit: i quit).
20:01:21 -!- somefan has joined.
20:12:53 <b_jonas> zero-copy makes more sense if you're in a parser like that of a compiler where you'll probably have to print error messages with location information so you have to keep the locations even if you are copying the contents too
20:14:23 <b_jonas> or write the location information into debugging information for stack traces or an interactive debugger later
20:20:53 <esolangs> [[Ring-around-the-Rosie]] https://esolangs.org/w/index.php?diff=174971&oldid=174945 * Salpynx * (+1562) random walk variant, and computational class
20:20:56 <ais523> fwiw, my current plan for this sort of thing is to assign a unique number to every byte in every file (by choosing a number for the start of each file in such a way that there are no conflict)
20:21:14 <ais523> then just store spans using the numbers, rather than having separate file/line/character fields
20:22:22 <ais523> in the cases where you do need line number info (e.g. for debug information or error messages) you can work it out retrospectively (perhaps have an index mapping line/file numbers to byte numbers_
20:26:41 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
20:27:48 <b_jonas> ais523: sure. it gets ugly if you want to give a full tree through includes and defines for where the token out from the preprocessor came from, but usually compilers don't try to do that.
20:28:35 <ais523> I think most languages that have macros want to be able to give error messages and debug information referencing them – and debug information needs to be able to see inside functions inlined from a different file, too
20:30:09 <b_jonas> sure, in the common case, but it can get very ugly if you abuse macros in a nasty way, where you include files multiple times, expand the name of another macro, or expand the opening and closing parenthesis for a macro call from different macros so you can't even easily pinpoint where the macro call is happening
20:31:15 <ais523> ah, I see – the things I'm writing parsers for don't normally want to be able to include files twice and treat the two as different
20:31:17 -!- tromp has joined.
20:40:58 <zzo38> Text formats such as JSON will have escaping so that it cannot really avoid a copy nor avoid the conversion. Binary formats are different, although they have their own differences with advantages and disadvantages.
20:41:59 <zzo38> PostScript binary format is not as compact as some others but copying and searching is not needed; you can find the data item without needing to search linearly, although it also cannot effectively be read linearly.
20:42:47 <zzo38> DER format is more compact but still includes type and other information so that it can be read without the schema, and requires linear reading, but you can avoid copying the data.
20:43:04 <zzo38> The length prefix allows you to skip past any item you do not care about, though.
20:44:01 <zzo38> However, regardless of this, sometimes there is a situation e.g. you will want to add a prefix or suffix when using it, such as null termination. Sometimes you will be able to do this by partially changing it temporarily and then changing it back, but sometimes this does not work well.
20:45:03 <ais523> right, it wouldn't work well when reading from a file because the kernel would have to make two copies of the file's contents, one for the original version and one for the temporarily changed version (in case the program was killed by a signal in the middle of the change)
20:45:24 <ais523> or at least of the page you were changing
20:47:06 <zzo38> Yes, that is one situation (although I would think transactional file access would be better for many reasons)
20:47:58 <esolangs> [[User:Aadenboy]] https://esolangs.org/w/index.php?diff=174972&oldid=174970 * Aadenboy * (-38) /* Quanta */ update to point to new documentation location. hopefully I'll work on it more this way?
20:52:51 <b_jonas> so as long as your preprocessing is powerful (like Turing-complete) there's no easy way for the compiler to prove what the preprocessed program is short of providing a full trace. and it's not just C-like preprocessors, in modern languages you may have a complicated computation that determines what type something is and a type error can depend on that.
20:53:04 <b_jonas> a/complicated computation/complicated compile-time computation/
20:55:32 <ais523> Rust's macro system is interesting in that the macro gets to state which file/line/character each of the resulting tokens comes from
20:56:09 <ais523> if you want your procedural macro to be able to return syntax errors, the current way to do it is to expand to a use of the syntax_error!() macro but set its line number information to that of the place where you found the error
20:57:29 <b_jonas> The Subtyping Machine was news because before that you hadn't known that Java was like that; C++03 was known to be able to execute complex computations at compile time from at least the point when the Stroustroup book was published, they specifically added the SFINAE rule to allow that; Haskell has tricky rules to limit the complexity class of compilation, but even it has compiler options to override
20:57:35 <b_jonas> some of those in a way that allows infinite loops; zig starts with the idea that you can do basically anything at compile time because they already knew that that was the direction that all languages tend to and they want to shortcut the evolution to where they have convenient syntax for it rather than the clumsy workarounds that you had to use in C++03
20:58:57 <b_jonas> ais523: Rust is tricky because they need the location not only for debugging information, they also allow crates to be compiled with different editions that have subtly different rules, and one crate can export a macro that is then called from another crate, and the compiler has to know which token's origin determines which rules to use for any construct whose meaning changed between editions
20:59:20 <ais523> Rust procedural macros let you run arbitrary code at compile time, although it outputs tokens rather than values of the language's data types like Zig does
20:59:37 <ais523> also, they have to be in their own crate (basically because they need to be compiled for the host rather than the target)
20:59:58 <ais523> b_jonas: right, edition-specific tokens matter too
21:00:53 <ais523> although some of the edition specificities are lexer differences, I think some of them may be in parts of the lexer that run after macros do
21:01:13 <zzo38> In some programming languages (such as PostScript), tokens are values of the language's data types.
21:02:37 <b_jonas> this is a fun edition difference that needs to be resolved quite late, during type-checking: https://doc.rust-lang.org/nightly/edition-guide/rust-2024/intoiterator-box-slice.html
21:03:06 <b_jonas> most of the edition changes can be forgotten after earlier in the compilation process
21:05:56 <ais523> at least it's obvious which token to check, there (the `into_iter` token)
21:05:59 <b_jonas> C++ has pragmas affecting floating point behavior in a scope of code instead of edition differences
21:06:35 <b_jonas> well it also has edition differences, but editions can't change within a compilation unit
21:12:44 <b_jonas> in theory you could have an interactive compiler that gives you an error message and then either you accept it or you pick a part (like a type constructor) and ask the compiler to go back and prove that part
21:15:16 <b_jonas> and if the compiler can do arbitrary computations at compile time then that basically requires a reverse debugger
21:22:17 <korvo> Epilogue: I was so frustrated that I went and figured out why static linking wasn't working for RPython. I've fixed it and now there's a `staticLink = true;` flag that I can set to make static binaries.
21:23:38 <korvo> I also unbroke libffi for static linking, so it's now possible to make statically-linked JIT compilers. PyPy itself is still not going to statically link for other reasons involving Tcl/Tk, and I'm not sure if SDL can statically link, but this will work for now.
21:30:48 -!- impomatic has quit (Quit: Client closed).
22:06:46 -!- somefan has quit (Remote host closed the connection).
22:11:29 -!- cactushead has quit (Ping timeout: 260 seconds).
22:35:56 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:36:24 -!- somefan has joined.
22:36:41 <somefan> https://logs.esolangs.org/libera-esolangs/2026-02-03.html#l4
22:37:50 <somefan> ais523, someone is requesting for their dead user page to be deleted. hope you see this
22:38:07 <ais523> but normally it doesn't make sense to delete an account just because it's unused
22:38:36 <ais523> MediaWiki needs somewhere to attribute the edits made by the account to, so an account can't be fully deleted – just anonymised, and that doesn't make sense for an abandoned account
22:38:59 <ais523> as such I would want to discuss this with the user in question before actually doing it
22:45:29 <somefan> user was on the esolangs discord server before posting this.
22:45:30 <somefan> i'll see if i can get them to rejoin
22:46:55 -!- somefan has quit (Remote host closed the connection).