←2025-06-04 2025-06-05 2025-06-06→ ↑2025 ↑all
00:06:48 <b_jonas> int-e: I would expect it to read the input only once (every time you compile the source file that is), but yes, this is probably not something you should rely on.
00:09:56 -!- lynndotpy6 has quit (Quit: bye bye).
00:11:24 -!- lynndotpy6 has joined.
00:32:41 -!- 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).
00:41:34 -!- Sgeo has joined.
01:24:13 -!- ais523 has quit (Quit: quit).
01:35:20 -!- leah2 has quit (Ping timeout: 272 seconds).
01:55:15 -!- leah2 has joined.
03:27:20 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159257&oldid=159231 * JHSHernandez-ZBH * (+10)
04:36:22 <esolangs> [[User:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159258&oldid=127868 * JHSHernandez-ZBH * (+133) Removed redirect to [[User talk:/w/wiki/index.php/Talk:index.php/Main page]]
04:36:56 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159259&oldid=159257 * JHSHernandez-ZBH * (+69)
04:37:32 <esolangs> [[User:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159260&oldid=159258 * JHSHernandez-ZBH * (+64)
04:38:13 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159261&oldid=159259 * JHSHernandez-ZBH * (+67)
04:39:19 <esolangs> [[User:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159262&oldid=159260 * JHSHernandez-ZBH * (+21)
04:39:49 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159263&oldid=159261 * JHSHernandez-ZBH * (+6)
04:41:51 <esolangs> [[User:/w/wiki/index.php/Talk:index.php/Main page]] M https://esolangs.org/w/index.php?diff=159264&oldid=159262 * JHSHernandez-ZBH * (+16)
04:42:54 <esolangs> [[User:/w/wiki/index.php/Talk:index.php/Main page]] M https://esolangs.org/w/index.php?diff=159265&oldid=159264 * JHSHernandez-ZBH * (+2)
04:43:19 <esolangs> [[User:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159266&oldid=159265 * JHSHernandez-ZBH * (+3)
04:48:54 <esolangs> [[BFInfinity]] https://esolangs.org/w/index.php?diff=159267&oldid=152377 * JHSHernandez-ZBH * (+158) /* Commands */
04:59:25 -!- Lord_of_Life_ has joined.
04:59:49 -!- Lord_of_Life has quit (Ping timeout: 276 seconds).
05:00:50 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
06:58:41 -!- tromp has joined.
07:07:42 -!- Sgeo has quit (Read error: Connection reset by peer).
07:37:15 -!- b_jonas has quit (Quit: leaving).
08:16:01 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
09:26:48 -!- zzo38 has quit (Ping timeout: 244 seconds).
09:28:05 -!- tromp has joined.
10:00:42 <APic> Hi
10:33:22 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159268&oldid=159263 * JHSHernandez-ZBH * (-84) No
10:34:28 <esolangs> [[User:/w/wiki/index.php/Talk:index.php/Main page]] M https://esolangs.org/w/index.php?diff=159269&oldid=159266 * JHSHernandez-ZBH * (+88)
10:52:40 -!- m5zs7k has quit (Remote host closed the connection).
10:53:37 -!- m5zs7k has joined.
11:01:24 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:08:04 <esolangs> [[User:PrySigneToFry/Silicon dioxide in a polypropylene box/Chess between HCr0 and PSTF]] https://esolangs.org/w/index.php?diff=159270&oldid=159237 * PrySigneToFry * (+336)
12:28:50 <esolangs> [[Guess]] https://esolangs.org/w/index.php?diff=159271&oldid=159216 * PrySigneToFry * (+631)
12:46:49 -!- ais523 has joined.
12:49:18 -!- tromp has joined.
12:49:55 -!- tromp has quit (Client Quit).
12:51:34 -!- tromp has joined.
12:54:35 -!- amby has joined.
13:26:58 -!- impomatic has joined.
13:31:31 <esolangs> [[Talk:]] https://esolangs.org/w/index.php?diff=159272&oldid=57073 * JHSHernandez-ZBH * (+408) /* May I derive my own language based on this? */ new section
13:31:47 <esolangs> [[Talk:]] https://esolangs.org/w/index.php?diff=159273&oldid=159272 * JHSHernandez-ZBH * (-2)
13:31:58 <esolangs> [[Talk:]] https://esolangs.org/w/index.php?diff=159274&oldid=159273 * JHSHernandez-ZBH * (-25) /* May I derive my own language based on this? */
13:32:11 <esolangs> [[Talk:]] M https://esolangs.org/w/index.php?diff=159275&oldid=159274 * JHSHernandez-ZBH * (+9) /* May I derive my own language based on this? */
14:16:33 <esolangs> [[User:PrySigneToFry/Silicon dioxide in a polypropylene box/Chess between HCr0 and PSTF]] https://esolangs.org/w/index.php?diff=159276&oldid=159270 * Hotcrystal0 * (+37)
14:30:44 <esolangs> [[Guess]] https://esolangs.org/w/index.php?diff=159277&oldid=159271 * Helpeesl * (+253)
14:46:22 -!- Sgeo has joined.
15:09:21 -!- impomatic has quit (Ping timeout: 272 seconds).
15:13:19 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159278&oldid=159268 * Hotcrystal0 * (+143)
15:13:26 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159279&oldid=159278 * Hotcrystal0 * (+1)
15:15:46 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159280&oldid=159279 * Hotcrystal0 * (+108)
15:23:03 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159281&oldid=159280 * Aadenboy * (+192)
15:24:18 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:25:30 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159282&oldid=159281 * Hotcrystal0 * (+10)
15:28:39 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159283&oldid=159282 * Hotcrystal0 * (+92)
15:31:26 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159284&oldid=159283 * Aadenboy * (+40) quanta string literals
15:45:10 -!- tromp has joined.
15:48:22 <esolangs> [[User talk:/w/wiki/index.php/Talk:index.php/Main page]] https://esolangs.org/w/index.php?diff=159285&oldid=159284 * Hotcrystal0 * (+18)
15:51:44 <esolangs> [[User talk:PrySigneToFry]] https://esolangs.org/w/index.php?diff=159286&oldid=158986 * Hotcrystal0 * (+316) /* New esolang idea */ new section
16:52:34 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
16:59:47 -!- tromp has joined.
17:18:02 <esolangs> [[Special:Log/move]] move * Hotcrystal0 * moved [[Colon period period colon]] to [[:..:]]: Unicode characters such as variation selectors allow for initial colons
17:18:03 <esolangs> [[Special:Log/move]] move * Hotcrystal0 * moved [[Talk:Colon period period colon]] to [[Talk::..:]]: Unicode characters such as variation selectors allow for initial colons
17:18:14 <esolangs> [[:..:]] https://esolangs.org/w/index.php?diff=159291&oldid=159287 * Hotcrystal0 * (-27)
17:19:39 -!- b_jonas has joined.
17:23:13 <esolangs> [[..:]] https://esolangs.org/w/index.php?diff=159292&oldid=144575 * Hotcrystal0 * (-12) Changed redirect target from [[Colon period period colon]] to [[:..:]]
17:42:25 <esolangs> [[User:ColorfulGalaxy's CA discoveries/One per generation]] https://esolangs.org/w/index.php?diff=159293&oldid=147628 * Hotcrystal0 * (+3)
17:44:35 <b_jonas> `olist 1327
17:44:38 <HackEso> olist <https://www.giantitp.com/comics/oots1327.html>: shachaf oerjan Sgeo boily nortti b_jonas Noisytoot
17:45:23 -!- ais523 has quit (Quit: quit).
17:48:19 <esolangs> [[]] https://esolangs.org/w/index.php?diff=159294&oldid=146083 * Hotcrystal0 * (+26)
17:48:32 <esolangs> [[]] https://esolangs.org/w/index.php?diff=159295&oldid=159294 * Hotcrystal0 * (+0)
17:54:02 <esolangs> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=159296&oldid=158207 * Hotcrystal0 * (-9)
18:18:06 -!- zzo38 has joined.
18:21:36 -!- vyv has joined.
18:26:03 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:02:18 -!- riv has quit (Ping timeout: 276 seconds).
19:07:47 -!- impomatic has joined.
19:21:24 -!- ais523 has joined.
19:23:11 <esolangs> [[AroundEnglish]] https://esolangs.org/w/index.php?diff=159297&oldid=132813 * TenBillionPlusOne * (+24)
19:23:15 <ais523> is there a name for languages where values are mutable, but can only be replaced with other observably equivalent values (i.e. they might contain a different internal structure, but there is no way to distinguish that via operations on the values)?
19:24:11 <esolangs> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=159298&oldid=159296 * Ais523 * (-97) clean sandbox
19:28:13 <ais523> so the mutability exists but has no observable effects on the program's behaviour, only on performance
19:28:19 <int-e> ais523: "lazy" comes to mind but it's a special case.
19:35:55 <zzo38> I don't know, but it makes sense to me, and I can think of some reasons why such a thing might sometimes be helpful.
19:36:50 <korvo> Similarly, the first thing that comes to mind for me is Scott-style domains as a way to give models to languages like Haskell; values can be mutated by a runtime for sharing but can only be replaced by more-precise versions of themselves.
19:39:26 <b_jonas> ais523: I don't know a name for it. I did consider implementing some values that way, eg. to cache conversions like perl kind of does in numberscalars,
19:39:30 <b_jonas> number+string scalars
19:39:49 <b_jonas> but I don't think I wanted a language where strictly every value is immutable like that, only some types of values
19:40:09 <b_jonas> possibly the most common types of values, in an APL-like
19:40:49 <ais523> it seems like a useful concept to have, at least
19:41:02 <ais523> I agree that truly mutable values are sometimes useful
19:41:03 <korvo> Oh, does vau calculus (Kernel) give another example? There's no mutation, just evaluation within a choice of environments, but the values themselves are always built from the same structure.
19:41:37 <ais523> I guess splay trees are one of the most extreme examples of this sort of thng
19:41:38 <ais523> * thing
19:43:18 <b_jonas> true
19:43:35 <esolangs> [[Special:Log/newusers]] create * Bobr123654 * New user account
19:45:42 <b_jonas> in particular, such immutable values are useful not only as values in the language, but also as parts of the internal representation of a dynamically typed interpreted program, where a part of the representation says to call a method of a certain name, but you can mutate the representation to give a caching hint for what that method was for the type that was the invocant the last time that method call
19:45:48 <b_jonas> executed
19:45:56 <b_jonas> this if for languages like python or ruby
19:46:38 <b_jonas> where a large chunk of the code is method calls and for most of those you may have to call a different underlying function because the invocant is of a different type or the method is just changed dynamically in the class
19:48:45 <APic> cu
19:48:49 <ais523> hmm – that trick sounds like combining the JIT trick of "compile a special case of the program, then check to see if that case holds before running it" and devirtualisation
19:49:00 <b_jonas> or if a local variable has an immutable type, then you can first create it so its data contents live only on the stack with no way to reference it, but if you have to leak a reference to it then you allocate a real object on the heap so you can have a stable reference to it. this could help especially with code dense in simple arithmetic
19:49:43 <ais523> I think leak is the wrong word here but can't remember what the right word is
19:49:47 <ais523> expose, maybe?
19:50:07 <b_jonas> I don't know, but when that happens I would say I reify the value to a real object
19:50:53 <ais523> so I am annoyed at the way that Rust allows shared-reference-to-pointer conversion because it blocks the optimisation of replacing a shared reference with a copy of the bits the reference is pointing to
19:51:18 <ais523> what you just suggested is a similar optimisation, using boxes rather than references, except actually valid because you can do the memory allocation lazily
19:52:37 <ais523> (that said, finding enough room in a pointer-sized value to record both the value in question and the fact that it's a value rather than a pointer to a memory allocation could be difficult – it works with canonical double-precision floats but nothing larger)
19:55:07 <b_jonas> ais523: if I apply this only to some local variables that I guess will likely be of a certain immutable type, like a float or integer or fixed-size tuple, then the value representation needn't be a pointer, because I can make the function implementation have enough space on the stack of local variables
19:56:08 <ais523> b_jonas: but after you've converted them to a heap allocation, you need to access the heap allocation from then on rather than the original variable
19:56:26 <ais523> are you doing a static analysis to check whether or not that happened yet? I guess for local variables it may be possible
19:57:03 <b_jonas> the value is immutable so I think accessing the local copy can be still fine
19:57:16 <ais523> ah, I see
19:57:43 <ais523> I don't know how often this situation is actually going to come up but it seems like a correct optimisation
20:04:21 <korvo> https://rpython.readthedocs.io/en/latest/jit/virtualizable.html is a nice explanation of one particular JIT toolkit's approach to those sorts of values.
20:05:07 <korvo> This is not a common usecase. They give the example of intra-frame debugging information, which is first-class in Python.
20:06:39 <b_jonas> I think J the APLlike stores all the temporary values on a stack with dynamic sizes (like alloca), because until you do something like assign the value to a named variable, the value won't outlive its stack frame, so you can allocate the array contents and metadata on the stack. When the value is assigned to a named variable or it otherwise becomes possible that it will outlive its stack frame then you
20:06:45 <b_jonas> copy the whole contents to the heap. And you may be able to guess some of the cases where this will happen by static analysis, and allocate those values on the heap in first place.
20:07:09 <b_jonas> but this might not be relevant for your original question
20:08:31 -!- impomatic has quit (Quit: Client closed).
20:15:15 <b_jonas> ais523: is your question because of one of these languages that run code distributed on a network and can live copy/move objects between the nodes or have references to a remote node?
20:16:21 <ais523> b_jonas: no – actually I was trying to implement a finger tree
20:17:18 <ais523> and some "no observable effect mutation" like that is needed to meet the performance bounds (which could be the forcing of a lazy computation but doesn't have to be)
20:17:27 <ais523> and it got me thinking about the problem more generally
20:17:49 <b_jonas> ah yes
20:18:00 <ais523> incidentally, it turns out that for my original original problem: lists with push-at-end, pop-at-end, concatenate, there is a data structure supporting specifically those operations efficiently
20:18:24 <ais523> it's in Chris Okasaki's PhD thesis, https://www.cs.cmu.edu/~rwh/students/okasaki.pdf
20:19:42 <ais523> and is basically a persistent queue of persistent stacks (persistent stacks are trivial to implement as linked lists, and persistent queues can be implemented using two stacks, one for pushes and one for pops, for which the "pushes" stack is reversed and appended to the "pops" stack whenever it is larger)
20:19:59 <ais523> although this needs in-place modifications to avoid doing the slow reverse-and-append operation multiple times
20:21:30 <ais523> actually I didn't quite describe it correctly, but the correct details are in the linked thesis
20:23:00 <int-e> . o O ( let's throw a finger tree at this and call it a day )
20:23:12 -!- vyv has quit (Quit: Konversation terminated!).
20:24:17 <ais523> I'm considering implementing both it and the finger tree, and benchmarking them against each other
20:24:32 <ais523> but, it might take a while and I might get bored first
20:26:50 <int-e> I'm glad I realized that sorting was a bottlenet before going deeper down another C++ vs. Rust rabbit hole. (Rust's unstable_sort() performs noticably better than what I get for std::sort() or std::stable_sort() from g++ or clang, when sorting u64s)
20:27:18 <int-e> Otherwise I was going to vectorize the non-bottleneck part *shudder*. :)
20:29:04 <int-e> std::stable_sort was faster than std::sort for me, so that was also interesting. Rust's sort() was faster than both but a tad slower than its unstable_sort().
20:29:59 <ais523> a lot of benchmarking and algorithm evaluation went into choosing Rust's sorting algorithms
20:30:16 <ais523> I found a page describing it once, but my browser can no longer remember where it is
20:32:59 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=159299&oldid=159204 * Bobr123654 * (+222)
20:33:23 <ais523> found it again: https://github.com/Voultapher/sort-research-rs
20:33:50 * ais523 bookmarks it, juts in case
20:34:27 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=159300&oldid=159299 * Bobr123654 * (+11)
20:34:47 <esolangs> [[Bobr Kurwa]] N https://esolangs.org/w/index.php?oldid=159301 * Bobr123654 * (+1915) i am created this page :p
20:36:05 <esolangs> [[Bobr Kurwa]] https://esolangs.org/w/index.php?diff=159302&oldid=159301 * Bobr123654 * (+13) /* Implementations */
20:37:25 <esolangs> [[Bobr Kurwa]] M https://esolangs.org/w/index.php?diff=159303&oldid=159302 * Bobr123654 * (+1)
20:38:06 <esolangs> [[Bobr Kurwa]] https://esolangs.org/w/index.php?diff=159304&oldid=159303 * Bobr123654 * (-31)
20:38:19 <int-e> pet peeves everywhere... why is github's "download raw file" button not a link...
20:39:35 <esolangs> [[Bobr Kurwa]] https://esolangs.org/w/index.php?diff=159305&oldid=159304 * Bobr123654 * (+19)
20:40:03 <esolangs> [[Bobr Kurwa]] https://esolangs.org/w/index.php?diff=159306&oldid=159305 * Bobr123654 * (-24) /* Hello World */
20:40:55 -!- tromp has joined.
20:49:15 <int-e> but good link
20:57:47 <ais523> unfortunately I can't be held responsible for the website that the person who did the sort research chose to host it on
20:57:49 <ais523> (Github annoys me too)
21:07:31 <int-e> Trying VQSort... at a glance it's a bit faster than Rust's. Not enough for me to switch, I think :)
21:07:39 <int-e> ais523: yeah no blame to you obviously
21:09:57 <int-e> also as usual this collides with a quirky habit of mine: I block raw.githubusercontents.com by default and that makes grabbing the link from that download button tedious (have to open the ublock logger, click the button, copy link from logger)
21:10:32 <int-e> Which is a better terrible UX but overall it's still a win to me. :P
21:11:03 <zzo38> If you do not block raw.githubusercontent.com then you can replace "blob" with "raw" in the URL to download raw files; this works on some other services as well and is not only GitHub
21:14:45 <int-e> ah, pun unlocked: it's called "highway" because it does computations on multiple lanes.
21:15:05 <int-e> (vqsort is in highway-contrib)
21:59:54 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
23:00:24 <esolangs> [[Aliquid]] M https://esolangs.org/w/index.php?diff=159307&oldid=153999 * Buckets * (+1)
23:17:05 <esolangs> [[Language list]] M https://esolangs.org/w/index.php?diff=159308&oldid=158991 * Buckets * (+12)
23:17:34 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=159309&oldid=158768 * Buckets * (+11)
23:17:46 <esolangs> [[Mixed]] N https://esolangs.org/w/index.php?oldid=159310 * Buckets * (+7466) Created page with "Mixed is an Esoteric programming language created by [[User:Buckets]] in 2022, Designed to be "mixed-media for esolangs" After Realising Most or Even All esolangs Stay in their Own "Types". {| class="wikitable" |+ Types |- ! Type of Commands !! Explanation |- | <span sty
23:18:31 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=159311&oldid=159309 * Buckets * (+0)
23:19:28 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=159312&oldid=159311 * Buckets * (+0) /* Total of Esolangs */
←2025-06-04 2025-06-05 2025-06-06→ ↑2025 ↑all