00:34:11 -!- aadenboy has joined. 00:36:11 hello! 00:39:58 aadenboy: Hi! 00:40:13 first time using an irc client :O 00:40:58 No worries. Hopefully not your last. 00:41:33 don't plan on it being! 00:41:48 I don't* 01:01:32 [[Better-machine]] https://esolangs.org/w/index.php?diff=174907&oldid=174821 * PrySigneToFry * (+136) 01:03:01 [[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 [[Special:Log/newusers]] create * Ljcool2006 * New user account 01:58:07 [[User:RainbowDash]] https://esolangs.org/w/index.php?diff=174909&oldid=172105 * RainbowDash * (+57) luck ball 01:58:18 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=174910&oldid=174796 * Ljcool2006 * (+224) /* Introductions */ 01:58:31 [[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 [[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:14:54 that was a mess 03:15:10 hello, aadenboy!! 03:15:20 hi! 03:27:59 -!- cactushead has quit (Ping timeout: 260 seconds). 03:31:23 -!- cactushead has joined. 03:41:05 [[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 [[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 [[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 [[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 [[User:Mc20000/vector.css]] https://esolangs.org/w/index.php?diff=174917&oldid=174853 * Mc20000 * (+675) 05:21:04 [[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 [[BoxedLANG]] https://esolangs.org/w/index.php?diff=174919&oldid=174870 * Mc20000 * (+99) 05:29:07 [[BoxedLANG]] https://esolangs.org/w/index.php?diff=174920&oldid=174919 * Mc20000 * (+5) 05:30:55 [[User:None1/InDev]] https://esolangs.org/w/index.php?diff=174921&oldid=174810 * None1 * (+230) /* Commands */ 05:32:28 [[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 [[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 [[Ring-around-the-Rosie]] https://esolangs.org/w/index.php?diff=174924&oldid=174760 * Salpynx * (+152) /* Examples */ Truth machine 06:41:08 [[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 [[Monky]] https://esolangs.org/w/index.php?diff=174926&oldid=174902 * Menguinponky * (+50) 07:16:41 [[Monky]] https://esolangs.org/w/index.php?diff=174927&oldid=174926 * Menguinponky * (+69) 07:19:00 -!- tromp has joined. 07:25:08 [[Monky]] https://esolangs.org/w/index.php?diff=174928&oldid=174927 * Menguinponky * (+226) 07:25:58 [[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:40 and now you can ask here 07:37:55 [[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 [[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 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 [[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 [[Monky]] https://esolangs.org/w/index.php?diff=174933&oldid=174929 * Menguinponky * (+194) 08:12:19 [[Monky]] https://esolangs.org/w/index.php?diff=174934&oldid=174933 * Menguinponky * (+193) 08:16:55 [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174935&oldid=174932 * Blashyrkh * (+192) /* History version of Lambda calculus? */ 08:21:11 [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174936&oldid=174935 * PrySigneToFry * (+107) 08:21:41 [[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 [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174938&oldid=174937 * Blashyrkh * (+372) /* History version of Lambda calculus? */ 08:28:32 [[Talk:Lambda calculus]] M https://esolangs.org/w/index.php?diff=174939&oldid=174938 * Blashyrkh * (+2) 08:30:30 [[Monky]] https://esolangs.org/w/index.php?diff=174940&oldid=174934 * Menguinponky * (+4) 08:34:24 [[Monky]] https://esolangs.org/w/index.php?diff=174941&oldid=174940 * Menguinponky * (+31) 09:54:17 defjam:Hi 09:54:25 s/defjam:// 09:56:34 [[Monky]] https://esolangs.org/w/index.php?diff=174942&oldid=174941 * Menguinponky * (+36) 10:04:21 [[Monky]] https://esolangs.org/w/index.php?diff=174943&oldid=174942 * Menguinponky * (-1) 10:10:31 [[Monky]] https://esolangs.org/w/index.php?diff=174944&oldid=174943 * Menguinponky * (+211) 10:18:35 [[Ring-around-the-Rosie]] M https://esolangs.org/w/index.php?diff=174945&oldid=174930 * Salpynx * (+88) formatting 10:41:02 [[Monky]] https://esolangs.org/w/index.php?diff=174946&oldid=174944 * Menguinponky * (+6) 11:47:58 [[Bimo roasting language]] https://esolangs.org/w/index.php?diff=174947&oldid=172832 * RikoMamaBala * (-33) 11:51:50 [[Trithemius]] https://esolangs.org/w/index.php?diff=174948&oldid=153217 * Wound theology * (+786) /* Syntax */ 11:55:14 [[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 [[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 [[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 [[The Processor Collection]] https://esolangs.org/w/index.php?diff=174952&oldid=174951 * Mrtli08 * (-12) 12:44:44 -!- somefan has joined. 12:45:29 [[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 [[The Processor Collection]] https://esolangs.org/w/index.php?diff=174954&oldid=174952 * PrySigneToFry * (+284) 13:58:38 [[The Processor Collection]] M https://esolangs.org/w/index.php?diff=174955&oldid=174954 * PrySigneToFry * (-26) 14:21:00 [[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 [[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 [[Talk:Lambda calculus]] https://esolangs.org/w/index.php?diff=174958&oldid=174939 * Corbin * (+148) /* History version of Lambda calculus? */ 16:06:33 [[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 [[User:Aadenboy]] https://esolangs.org/w/index.php?diff=174960&oldid=174464 * Aadenboy * (-42) irc 16:38:33 [[Implied]] N https://esolangs.org/w/index.php?oldid=174961 * Aadenboy * (+1714) ] 16:43:00 -!- amby has joined. 16:43:16 [[Implied]] https://esolangs.org/w/index.php?diff=174962&oldid=174961 * Aadenboy * (+32) 17:12:29 [[Implied]] https://esolangs.org/w/index.php?diff=174963&oldid=174962 * Aadenboy * (+131) 17:13:16 [[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 [[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 [[Implied]] M https://esolangs.org/w/index.php?diff=174966&oldid=174963 * Aadenboy * (-22) /* NOT gate */ shorten 17:40:34 [[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 [[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:13:48 hello! 18:14:10 hi Yayimhere 18:14:22 hi ais523 18:14:25 how are you doing 18:14:29 is the sleep better now? 18:14:57 the sleep is still a mess, I have been falling over and dropping things today 18:15:09 which may be a sign of extreme tiredness or may just be lack of dexterity generally 18:15:55 perhaps 18:16:12 it could ofcourse be a combinaiton of both 18:16:58 Falling over is not a good sign. 18:18:12 it really isnt 18:18:37 korvo: at least for me it's fairly common, I have medically diagnosed balance issues 18:19:08 [[Implied]] https://esolangs.org/w/index.php?diff=174969&oldid=174967 * Aadenboy * (+86) /* Constructions */ more constructions 18:19:16 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 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 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 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 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 ais523: ah. Though its sad, atleast it explains a little more 18:23:35 there are definitely worse disorders to have 18:24:34 that is true 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 Getting to the point with Rust where I know that inserting an & will work, but I cannot explain why. 18:28:41 I guess thats a good thing 18:28:50 -!- Yayimhere has quit (Quit: Client closed). 18:29:25 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 korvo: I think some of Rust's design decisions, especially related to references, make it needlessly difficult to learn 18:32:13 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 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 annoyingly, this may have been the right decision (but I hate the fact that it probably was the right decision) 18:33:55 mayhaps so 18:34:11 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 im very happy that aadenboy has joined the IRC 18:34:33 Gotta unwrap two boxes per token. 18:35:35 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 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 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 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 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 it does work in special cases 18:38:01 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 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 It's really too bad that OCaml's Unicode support isn't up to snuff. Maybe I'll just use Rc. 18:39:03 just using Rc is the equivalent of how it would work in OCaml 18:39:16 VixenValue and VixenKeyword are mutually recursive without a reference, you defined a type that includes itself inline 18:39:28 (OCaml uses tracing garbage collection rather than reference-counting, but from the programmer's point of view it's much the same) 18:39:41 misread, ignore 18:39:54 sorear: VixenValue includes VixenKeyword via a Vec, which is enough of a reference to avoid the infinite size 18:40:30 yes, too much punctuation and I missed that 18:41:08 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 yes, this sort of lifetime plumbing does work with arenas 18:41:32 but if everything is owned you don't have lifetimes in the types at all 18:42:42 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 actually it might be automatically wrong because of the Vec? a unary containing a keyword has an &'a Vec> which is a permaborrow and that means it's impossible to run Vec's destructor 18:44:51 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 unless the reference is actually a reborrow (which it would be in the continuation-passing-style case) 18:44:56 [[User:Aadenboy]] https://esolangs.org/w/index.php?diff=174970&oldid=174964 * Aadenboy * (+0) fix text opacity 18:45:20 using Rc for the recursive calls will be much easier (you can still use the lifetime for the strs) 18:45:25 err, recursive data types 18:45:40 or Box if you don't need to be able to clone them cheaply 18:45:49 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 (you can still clone Boxes, it just needs to do a deep copy which can be slow) 18:46:35 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 slicing a reference produces a place, not a reference 18:47:07 Rust does that for consistency with C and C++ but I think they get it wrong too 18:47:46 (the reason, I think, is that people want to be able to write a = b[c] rather than a = *b[c]) 18:48:26 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 I'll give it credit for correctly pointing out *where* mistake, but not *what* mistake. 18:49:16 this deserves a bug report I think 18:49:45 Rust's error messages got so good due to people bug-reporting these things one at a time 18:49:51 let me try to make an MCVE 18:49:58 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:50:14 lol 18:52:53 -!- impomatic has quit (Quit: Client closed). 18:54:40 I have an old gcc error report about a C++-specific error message 18:55:10 the compiler knew where the error is, but got confused about how to communicate it 18:56:14 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. 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:09:40 heya 19:09:52 eyyy aadenboy! 19:10:01 whattup? 19:10:07 currently lunch atm 19:10:14 cool 19:10:20 we have very different timezones 19:10:26 (currently its 21.10) 19:10:35 11:10 over here 19:11:23 aadenboy: Are you in PST/PDT too, or in EMEA? 19:11:37 pst/pdt 19:11:45 It's a cold sunny day here in Oregon. 19:12:06  similar in washington 19:14:49 -!- aadenboy has quit (Quit: Client closed). 19:15:35 -!- Yayimhere has quit (Ping timeout: 272 seconds). 19:20:47 korvo: https://github.com/rust-lang/rust/issues/152064 19:21:03 -!- aadenboy has joined. 19:28:26 ais523: Thanks! Commented and followed. 19:30:07 -!- aadenboy has quit (Quit: Client closed). 19:30:52 -!- aadenboy has joined. 19:31:05 gonna pop off chatting for now; lunch is ending 19:31:52 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 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 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:49:40 Yes! 19:49:58 Also yes. 19:50:29 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 but the "lots of long unescaped string literals" is a fairly common case (not in programming languages but in file formats) 19:51:54 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 They explicitly say that the caller would have to do unescaping themselves in a separate pass. 19:53:09 this makes me think that a sensible file format would use length-prefixed strings rather than trying to escape them… 19:53:20 that isn't very good for human-written files, though 19:54:37 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 (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 OK, maybe ⅓ of a copy because most modern processors are twice as fast as reading as they are at writing 19:58:43 Pannenkoek would approve. 20:01:00 -!- somefan has quit (Quit: i quit). 20:01:21 -!- somefan has joined. 20:12:53 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 or write the location information into debugging information for stack traces or an interactive debugger later 20:20:53 [[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 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 then just store spans using the numbers, rather than having separate file/line/character fields 20:22:22 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 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 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 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 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 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 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 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 The length prefix allows you to skip past any item you do not care about, though. 20:44:01 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 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 or at least of the page you were changing 20:47:06 Yes, that is one situation (although I would think transactional file access would be better for many reasons) 20:47:58 [[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 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 a/complicated computation/complicated compile-time computation/ 20:55:32 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 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 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 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 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 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 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 b_jonas: right, edition-specific tokens matter too 21:00:53 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 In some programming languages (such as PostScript), tokens are values of the language's data types. 21:02:37 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 most of the edition changes can be forgotten after earlier in the compilation process 21:05:56 at least it's obvious which token to check, there (the `into_iter` token) 21:05:59 C++ has pragmas affecting floating point behavior in a scope of code instead of edition differences 21:06:35 well it also has edition differences, but editions can't change within a compilation unit 21:12:44 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 and if the compiler can do arbitrary computations at compile time then that basically requires a reverse debugger 21:20:10 cu 21:22:17 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 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 https://logs.esolangs.org/libera-esolangs/2026-02-03.html#l4 22:37:50 ais523, someone is requesting for their dead user page to be deleted. hope you see this 22:37:55 somefan: I did 22:38:07 but normally it doesn't make sense to delete an account just because it's unused 22:38:36 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 as such I would want to discuss this with the user in question before actually doing it 22:45:29 user was on the esolangs discord server before posting this. 22:45:30 i'll see if i can get them to rejoin 22:46:55 -!- somefan has quit (Remote host closed the connection).