00:06:41 -!- oerjan has joined. 00:07:12 -!- craigo[m] has joined. 00:22:59 -!- moony has changed nick to moon. 00:23:16 -!- moon has changed nick to bi. 00:34:48 maybe you'd need to do forward two, backward 3? <-- i think any such scheme with bounded jump length is going to have trouble handling arbitrarily nested loops because you cannot fit all the necessary paths through a bounded instruction region 00:35:04 traffic jam 00:35:20 yeahh.. that's probably why you have "arbitrary" relative jump offsets in brainflop. 00:35:40 otoh you don't need arbitrarily deep nesting for turing completeness. 00:35:54 -!- ais523 has joined. 00:36:00 speek of the 00:36:03 *speak 00:36:22 ais523 and i got it down to just two sets of brackets 00:36:42 this was just coincidence, I wasn't even logreading this time 00:36:46 heh 00:37:02 I came here to complain about memory allocation and freeing 00:37:17 ic 00:37:34 specifically, I realised that free() is often called in a loopish thing to free a recursive data structure, but a general-purpose free() is inherently really slow 00:38:09 because it requires a minimum of two atomic operations (either taking and releasing a lock, or for a lock-free algorithm), and atomic operations are inherently much slower than just about any other CPU instruction 00:38:37 oerjan: two sets of brackets? what were the semantics of each? 00:38:48 I'd like to get mine down that far. 00:38:56 *two pairs of brackets 00:38:56 -!- SpikeHeron has quit (Quit: WeeChat 3.3). 00:39:08 as in, the whole program needs just two [ and two ] 00:39:37 ohh. 00:40:04 so you're using BF's instruction set, but any program only needs two of each bracket type. 00:40:08 this basically means that there's not much point in implementing a malloc algorithm; taking and releasing the lock is going to be slower than the rest of the algorithm put together, if it's even remotely efficient 00:40:09 yep 00:40:14 I assume you simulate stuff using a register machine? 00:40:20 or a simulated register machine. 00:40:31 it's a counter machine (the construction we have requires unbounded cells) 00:40:38 figured as much. 00:41:05 specifically, ais523's Waterfall Model 00:41:09 wonder if that construction holds for boolfuck or something. 00:41:32 -!- dutch has joined. 00:41:34 -!- ais523 has quit (Quit: sorry about my connection). 00:41:49 -!- ais523 has joined. 00:42:04 probably not because the "size" is just a bit. 00:42:18 I'm trying to whittle []01<> down to just four instructions. 00:42:41 https://hastebin.com/raw/ilebolucoy 00:43:55 so far I've worked out how to eliminate `>`. 00:44:37 ais523: I could argue the opposite. since you usually call free many times in a loop, most of the time you will be calling free when you already have the lock, so locking and unlocking will be fast 00:44:44 i'd imagine you'd need to combine them somehow 00:44:56 like, drop 1 by having some other command do a NOT 00:45:38 but you're also true that if you want to do a lot of memory allocations, you should try to write your program so that it needn't call a general-purpose malloc and free a lot 00:45:44 b_jonas: that's not how actual implementations work, though 00:46:05 they take and drop the lock for each individual free-ing, because free is typically in a shared library and compilers don't optimise across shared library boundaries 00:46:48 19:09:20 Your nick made me recall "WebTV", a TV/computer hybrid product from the late 90s. 00:46:50 it's possible that taking and dropping the same lock repeatedly is fast-ish if no other CPU is trying to touch the memory where the lock is held, I need to check the numbers for that 00:46:54 sounds like something that didn't exist here 00:47:02 guess I'm trying to find a substitution for each command that doesn't alter program structure, and can be "dropped in". 00:47:11 like similar brainfuck-to-X mappings. 00:47:47 ais523: yes, but the CPU can do the lock very quickly if your core already has exclusive ownership of the cache line in which your lock is, and that should be the case if you just called free and it locked and unlocked the lock 00:48:19 maybe have `]` enqueue a 0 or something. 00:48:23 I just realised that I know a huge amount of the first digits of Pi 00:48:41 don't cpus do that very fast, in the expense of being slower in the uncommon case when multiple cores want to write to the same cache line? 00:48:45 [[Pokecontest]] https://esolangs.org/w/index.php?diff=88351&oldid=88335 * Maikeru51 * (+173) Yeah added definitions and fixed some of the formatting. 00:48:48 actually these numbers don't look *that* bad, Ice Lake can lock 8 bytes per 23 processor cycles or 16 bytes per 32 processor cycles, if the thing being locked is in memory already 00:48:49 just don't remember the exact order 00:49:04 err, in exclusive cache 00:49:36 for Zen 3 it's 10 and 15 00:49:46 (these are the most recent numbers I could find for Intel and AMD respectively) 00:50:21 still not great, but at least not the hundreds or thousands of cycles I was fearing 00:51:03 nakilon: wat. 00:51:27 I also know quite a few digits of pi. just don't know the order. 00:52:00 8412398419328412394129356123 <-- that's in there somewhere. 00:52:25 oerjan I know the first million of them 00:52:32 imode: probably. it's not been proved. (unless you copied that from an actual digit list) 00:53:00 nope. 00:53:07 nakilon: the _exact_ first million? (even out of order) 00:53:34 ais523: are those cycle numbers for every time you set the lock, or only once when you change the cache line from owned for writing to owned for exclusive locking, after which exclusive locking the same lock is free for as long the page is in the cache and another CPU doesn't try to access it? 00:53:36 it wouldn't be too hard to memorise the frequencies of the digits 0-9 within the first million digits of pi 00:53:40 84123984 is there though. 00:53:54 b_jonas: these are for repeated locked accesses to the same memory location, when no other CPU is reading or writing it 00:54:02 like, LOCK CMPXCHG16B called in a loop 00:54:16 i.e. that's how long it takes in the best ase 00:54:19 *best case 00:54:21 I See 00:54:34 hmm 00:54:53 that's probably not a bottleneck for a general purpose impl of free though 00:55:02 \wp CMPXCHG16B 00:55:06 x86_64 -- type of instruction set which is a 64-bit version of the x86 instruction set https://en.wikipedia.org/wiki/X86-64 00:55:16 ais523: true, i would just be surprised if nakilon actually had 00:55:48 whereas a simple MOV to/from L1 is, on most modern processors, typically 3 cycles latency (and 1 cycle for 1 execution unit in terms of throughput) 00:56:19 imode: i wonder what's the shortest digit sequence they haven't found yet 00:56:32 (probably several tied) 00:56:48 nakilon: CMPXCHG16B works on two consecutive 64-bit values in memory; you give expected and new values for each of them, if they have the expected value already then they're replaced with the new values, if they don't then nothing happens, either way it returns the old values 00:57:21 with the LOCK prefix, this is atomic with respect to all CPU cores, and it's a universal building block for building both locks and lock-free algorithms 00:57:38 (locks don't generally need the full power – a single 64-bit value is enough – but lock-free algorithms generally do) 00:58:49 I believe only efficient lock-free algorithms need that, you can build inefficient but correct lock-free algorithms without the two-word thing 00:59:20 https://oeis.org/A228988 seems relevant 01:00:01 eh, `]` pushing a zero means that you could never actually erase a 1 bit, it just nots everything at worst and inflates the queue at best. 01:00:04 you read the jokes too seriously 01:00:05 (found through https://www.reddit.com/r/math/comments/co25xs/smallest_number_not_found_in_pi/) 01:00:08 but http://www.eveandersson.com/pi/precalculated-frequencies 01:00:37 nakilon: that's the best way to read them hth 01:00:53 b_jonas: I'm not sure, I was trying to solve a specific lock-free problem in my head a while back and couldn't do without a double-compare-and-swap 01:01:09 ok, I could be wrong about that then 01:01:18 I don't usually care much about lock-free stuff 01:01:20 I just use locks 01:01:46 and try to do multithreading at the largest scale possible to avoid all the synchronization 01:02:19 I like lock-free algorithms from a usability point of view – lock-based algorithms don't work from signal handlers 01:02:33 and this was an actual problem for NH4 once (when trying to write the SIGHUP handler) 01:03:20 mallocs don't work from signal handlers in practice, but there's no inherent reason for that (in particular, the lock-free implementation of malloc doesn't seem substantially less efficient than the lock-based algorithm) 01:04:01 hmm 01:04:27 I didn't know that 01:04:43 but then I definitely almost never want signal handler reentrancy 01:04:59 basically nothing works from signal handlers :-( 01:05:06 but I don't see any reason not to make that case work if you can 01:09:08 one interesting thing I realised while working on my lock-free malloc is that the generic double-compare-and-swap lock-free algorithm actually gives you the potential to get an rwlock-equivalent for free (it isn't any harder to implement or slower to run than an exclusive lock) 01:12:41 -!- bi has changed nick to moony. 01:14:02 -!- ais523 has quit (Remote host closed the connection). 01:18:58 what does the "-- Troy Dana" dude say on that Pi digits page, wtf 01:20:38 that's not how you convert the base 01:23:02 oh he replies to "-- Steve Baldamus" 01:27:21 [[Spellcaster]] N https://esolangs.org/w/index.php?oldid=88352 * Maikeru51 * (+732) Basically just started making my first turning tarpit! 01:40:21 [[Special:Log/upload]] upload * Threesodas * uploaded "[[File:Sufferung.png]]" 01:46:21 nakilon: i think "that's not how you convert the base 01:46:34 " is pretty much what e's saying 01:55:00 -!- Everything has joined. 02:15:03 Huh, weird. https://en.wikipedia.org/wiki/Vernier_acuity 02:15:06 I thought those scales were just generally easier to use because you don't have to guesstimate where exactly in the gap the marker is. Didn't realize you actually get a suepr-resolution kind of a thingie going in there. 02:31:08 ah yes good 02:32:48 trying to think of where else i've seen this effect used 03:18:51 Hmm, another Zach-y game. Wonder if it's any good. https://store.steampowered.com/app/1577620/The_Signal_State/ 03:27:44 looks like Shenzhen 03:28:32 can't finish it because it's too complex, and the tasks somehow too artificial no matter how much dialogs they put in "cutscenes" 03:29:32 though each of their games had some own kind of boringness for me 03:29:45 I don't want game too many cutscenes (even without any cutscenes, can be OK) 03:30:02 opus magnum was satisfying but repetitive I guess 03:30:32 and Infinifactory was probably the one I got the farther through 03:30:39 *farthest 03:31:41 3d is appealing and t he plot made it interesting to see what's next 03:32:48 fizzie oh, that's not Zach?! 03:32:59 that's cool, need more different developers 03:44:37 -!- hendursaga has quit (Remote host closed the connection). 03:45:02 -!- hendursaga has joined. 04:49:03 -!- delta23 has quit (Quit: Leaving). 06:45:17 -!- tromp has joined. 06:47:47 -!- oerjan has quit (Quit: Nite). 07:14:16 -!- imode has quit (Ping timeout: 252 seconds). 07:17:45 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 07:27:31 -!- tromp has joined. 07:36:22 -!- Everything has quit (Quit: leaving). 08:01:43 -!- Sgeo has quit (Read error: Connection reset by peer). 08:32:51 -!- Koen has joined. 10:16:03 -!- riv has joined. 10:16:24 -!- river has quit (Quit: Leaving). 10:56:44 [[Special:Log/newusers]] create * Soyuzguy123! * New user account 10:59:03 [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=88354&oldid=88350 * Soyuzguy123! * (+215) just adding some stuff 11:00:47 [[SRlang]] N https://esolangs.org/w/index.php?oldid=88355 * Soyuzguy123! * (+109) just holding the fort 11:25:00 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 11:32:15 TIL: Slavo-Serbia and New Serbia https://en.wikipedia.org/wiki/File:New_serbia_slavo_serbia.png 12:21:15 -!- arseniiv has joined. 12:45:46 -!- tromp has joined. 13:35:24 [[OREO]] M https://esolangs.org/w/index.php?diff=88356&oldid=88317 * Kaveh Yousefi * (-2) Altered the category tag Unimplemented to Implemented in the face of now existing implementations. 14:28:35 -!- spruit11 has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.). 14:52:17 -!- Sgeo has joined. 15:33:32 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 15:43:41 I've been reading https://arxiv.org/abs/1904.10805 and pondering whether [[reversible]] can be improved. Has anybody else looked at this paper, "The Way of the Dagger"? 15:43:43 https://esolangs.org/wiki/Category:Reversible_computing 15:56:54 -!- tromp has joined. 16:02:57 [[User:InfiniteDonuts]] https://esolangs.org/w/index.php?diff=88357&oldid=72554 * InfiniteDonuts * (-273) update profile 16:12:06 [[Category talk:Total]] https://esolangs.org/w/index.php?diff=88358&oldid=73877 * Corbin * (+301) /* Refactoring with complexity classes */ new section 16:17:52 I want to add categories for descriptive logics (Cartesian closed, dagger compact, etc.; first-order, second-order, etc.) and physical machine architechtures (Harvard, Von Neumann, etc.) 16:18:18 But I would like guidance in the form of bright-line rules about when we should simply refer folks to WP or nLab. 16:29:31 -!- imode has joined. 16:48:27 [[User:Talbi]] N https://esolangs.org/w/index.php?oldid=88359 * Talbi * (+393) Created page with "== Hi! I'm Talbi == * You can find my GitHub [https://github.com/talbii here]. * You can find my Esolangs implementations [https://github.com/talbii/talbis-golfing-languages..." 17:05:44 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 17:11:50 [[Boom]] N https://esolangs.org/w/index.php?oldid=88360 * Talbi * (+461) Created page with "Boom is a very simple language, created by [[User:Talbi]]. It is so simple, in fact, that you have (probably) already written a valid program for Boom, which is:
 
..." 17:12:28 [[User:Talbi]] https://esolangs.org/w/index.php?diff=88361&oldid=88359 * Talbi * (+44) 17:14:35 [[Kolmogorov]] M https://esolangs.org/w/index.php?diff=88362&oldid=88043 * Kaveh Yousefi * (+79) Amended an example for the output command by adding a backslash to the byte value and reformatted further examples. 17:18:20 -!- tromp has joined. 17:30:39 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 17:32:26 ...I'm going to go ahead and do the descriptive-logic stuff on nLab. I've unstubbed https://ncatlab.org/nlab/show/complexity+theory for starters. 17:46:17 -!- sprock has quit (Ping timeout: 264 seconds). 17:51:54 -!- tromp has joined. 17:56:42 -!- spruit11 has joined. 18:11:04 [[Kolmogorov]] M https://esolangs.org/w/index.php?diff=88363&oldid=88362 * Kaveh Yousefi * (+54) Reformatted the examples by aligning comments. 18:28:48 [[Special:Log/newusers]] create * Nanobot567 * New user account 18:41:31 -!- Koen has quit (Remote host closed the connection). 18:58:07 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=88364&oldid=88354 * Larryrl * (+153) 19:53:24 -!- sprock has joined. 20:46:35 [[User:Larryrl]] N https://esolangs.org/w/index.php?oldid=88365 * Larryrl * (+2283) Created page with "'''6673846770''' is an esoteric programming language created by user Larryrl, in 2021, whose name is an ASCII representation of the word bitch, which has already been used for..." 20:48:57 [[User:Larryrl]] https://esolangs.org/w/index.php?diff=88366&oldid=88365 * Larryrl * (+0) 20:53:25 [[User:Larryrl]] https://esolangs.org/w/index.php?diff=88367&oldid=88366 * Larryrl * (+93) 20:58:10 [[Language list]] https://esolangs.org/w/index.php?diff=88368&oldid=88297 * Larryrl * (+17) 20:59:13 [[6673846770]] N https://esolangs.org/w/index.php?oldid=88369 * Larryrl * (+2376) Created page with "'''6673846770''' is an esoteric programming language created by user Larryrl, in 2021, whose name is an ASCII representation of the word bitch, which has already been used for..." 20:59:46 [[User:Larryrl]] https://esolangs.org/w/index.php?diff=88370&oldid=88367 * Larryrl * (-2376) Blanked the page 21:04:18 [[User:Larryrl]] https://esolangs.org/w/index.php?diff=88371&oldid=88370 * Larryrl * (+183) 21:04:41 -!- arseniiv has quit (Ping timeout: 245 seconds). 21:08:34 [[6673846770]] https://esolangs.org/w/index.php?diff=88372&oldid=88369 * Larryrl * (+0) 21:12:44 -!- Lord_of_Life_ has joined. 21:13:58 -!- Lord_of_Life has quit (Ping timeout: 252 seconds). 21:15:31 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 21:28:26 -!- sprock has quit (Ping timeout: 246 seconds). 21:29:44 [[6673846770]] https://esolangs.org/w/index.php?diff=88373&oldid=88372 * Larryrl * (+9) 21:42:00 -!- delta23 has joined. 21:42:01 -!- delta23 has quit (Remote host closed the connection). 21:43:20 -!- dutch has quit (Quit: WeeChat 3.3). 22:25:58 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…). 23:00:03 -!- oerjan has joined. 23:29:22 -!- sprock has joined.