00:33:40 -!- FreeFull has quit. 00:42:06 -!- arseniiv has quit (Quit: gone completely :o). 00:56:00 -!- ArthurStrong has quit (Quit: leaving). 01:55:38 -!- Lord_of_Life_ has joined. 01:57:57 -!- Lord_of_Life has quit (Ping timeout: 240 seconds). 01:57:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 04:37:21 [[Talk:Grime MC]] N https://esolangs.org/w/index.php?oldid=67908 * IFcoltransG * (+319) Created page with "Is this the sort of language where an interpreter would be impossible because it's subjective what a lyric means, or does it have a finite set of possible commands? If the lat..." 04:56:16 [[StackBeat]] M https://esolangs.org/w/index.php?diff=67909&oldid=37539 * IFcoltransG * (+1) /* Other notes */ Typo 05:19:41 -!- fungot has quit (Ping timeout: 246 seconds). 05:25:09 -!- fungot has joined. 06:08:22 -!- sparr has quit (Ping timeout: 252 seconds). 06:11:15 -!- sparr has joined. 07:58:46 -!- xkapastel has joined. 09:15:19 -!- b_jonas has quit (Quit: leaving). 10:06:52 -!- ais523 has joined. 10:12:40 -!- Deewiant has quit (Ping timeout: 264 seconds). 10:13:57 -!- Deewiant has joined. 10:17:25 -!- xkapastel has quit (Quit: Connection closed for inactivity). 10:22:55 -!- ais523 has quit (Remote host closed the connection). 10:24:09 -!- ais523 has joined. 10:27:45 -!- mroman has joined. 10:57:07 -!- mroman has quit (Remote host closed the connection). 10:57:18 @messages? 10:57:18 Sorry, no messages today. 10:57:41 -!- bunnyocte has joined. 10:58:44 hm. 10:59:28 -!- bunnyocte has quit (Remote host closed the connection). 10:59:45 -!- bunnyocto has joined. 10:59:47 no rename command on freenode? 11:00:54 or maybe it was /nick and not /rename 11:00:58 ah yep 11:04:59 aight. let me check out the newest bf derivatives. 11:13:18 verify register bunnyocto azdixccwwmkk 11:16:36 -!- ArthurStrong has joined. 11:26:59 `relcome bunnyocto 11:27:03 ​bunnyocto: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on EFnet or DALnet.) 11:27:37 -!- ais523 has quit (Ping timeout: 240 seconds). 11:30:06 fungot: hi 11:30:07 bunnyocto: ah well... thanks to intel addressing modes and variable-length opcodes it's not that 11:33:01 github workflows has a weird directory structure 11:33:15 it's /reponame/reponame 11:44:42 g'fternoon 11:51:33 github deprecated integrations? 11:51:37 How do I do CI Now then? 11:51:54 Like require pull requests to have passing tests. 12:08:05 lel I can't review my own pull requests. 12:08:07 hm. 12:08:16 -!- arseniiv has joined. 12:18:10 Oops, I believe I accidently got some AoC points. 12:18:40 Ah, no. Phew. 12:39:46 int-e: Do you think surjections have right inverses? 12:42:26 -!- tromp_ has joined. 12:46:02 -!- tromp has quit (Ping timeout: 276 seconds). 12:49:38 -!- bunnyocto has quit (Remote host closed the connection). 12:56:32 shachaf: depends 12:59:04 Oh there are actually two issues here. 13:00:00 One of convention, and one of choice. 13:00:02 int-e: I got some for the one time I was awake at 5am, and now I have to fight the urge to try again. :/ 13:00:27 fizzie: I was awake. I deliberately didn't look. 13:01:36 What's the axiom of convention? 13:01:41 And now I was worried that today's second part was really hard so I might have earned points for it, but only because I momentarily misread the statistics page. 13:02:03 shachaf: The conventional issue is which way function composition composes. 13:05:06 shachaf: Also I had trouble connecting dots... while I typed "AoC" I thought and read the whole "Advent of Code". 13:05:38 -!- bunnyocto has joined. 13:07:20 Oh, sure. 13:07:29 What should I call f and g such that f.g = id? 13:09:51 f is a left inverse of g; g is a right inverse of f 13:09:57 yup 13:10:38 It's pretty uncontroversial this far. 13:10:50 I think those are pretty confusing terms. 13:11:07 But if you say that's uncontroversial, where's the controvery? 13:11:28 doe (f.g)(x) = f(g(x)) or (f.g)(x) = g(f(x))? 13:11:32 *does 13:11:44 that's the confusion. 13:12:20 how so? it's clearly the first 13:12:30 The latter happens in some category theory texts. 13:12:35 f(g(x)) is the usual convention? 13:12:53 Because they want (.) : (a -> b) -> (b -> c) -> (a -> c) 13:13:00 also it's the haskell way thus muh 13:13:07 and the inner -> are abstract anyway. 13:13:27 As much as I like Haskell, it's not defining the world. 13:13:36 also, there are people that are using \subset for implication 13:13:40 what? it isn't? 13:13:41 I don't like that 13:13:43 why am I using it then. 13:13:59 not \subset... \supset 13:14:15 right 13:14:18 still hate it 13:14:23 no, but (f.g) x = f ( g ( x ) ) is more intuitive imo 13:14:36 but that may just be because I'm accustomed to it 13:15:04 that's the definition I am used to from math classes 13:15:10 You'll be surprised how little people value other's opinion in general. 13:15:16 coincidentally, haskell does it that way 13:15:21 yep. And thus I don't value their opinions. 13:15:24 Cruel world. 13:15:47 Also some people really like >>> 13:15:57 for what? 13:15:59 is that arrow notation? 13:16:13 And I believe we've had at least one proposal to flip the order of arguments of (.). 13:16:16 :t (>>>) 13:16:16 haven't used haskell in a while 13:16:20 forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c 13:16:55 >>, >=>, $>, >>>, 13:17:00 :t (>=>) 13:17:02 Monad m => (a -> m b) -> (b -> m c) -> a -> m c 13:17:06 I am okay with >>> 13:17:17 bunnyocto: The thing is, if you want to read math texts, you better keep an open mind about notation. 13:17:45 And unfortunately that includes basic things like the order of arguments of function composition. 13:19:13 That said, I /prefer/ (f.g)(x) = f(g(x)). 13:21:42 [[Special:Log/newusers]] create * Leo9 * New user account 13:42:09 I though the Haskell thing was to use (&) for the g(f(x)) case 13:42:14 -!- kspalaiologos has joined. 13:42:33 no need to pollute established notation with confusion.. 13:43:17 I mean I like the forward-direction composition just fine, but under a differet notation 13:44:58 (&) is normally flip ($), not flip (.) 13:45:22 oh right 13:45:30 hmm, point 13:45:36 I've seen (f;g)(x) = g(f(x)) but that doesn't work as a Haskell operator 13:46:36 Clojure calls it (->>) IIRC, but that's more in a prefix, s-expr setting 13:46:56 but thee's he (>>>) from Category as mentioned, etc 13:56:32 -!- Lord_of_Life_ has joined. 13:58:50 -!- Lord_of_Life has quit (Ping timeout: 276 seconds). 13:58:50 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 14:00:58 -!- kspalaiologos has quit (Quit: leaving). 14:03:17 -!- sprocklem has quit (Ping timeout: 240 seconds). 14:03:54 -!- kritixilithos has joined. 14:16:40 -!- wib_jonas has joined. 14:22:04 the order of arguments for function composition is simple. if you write the evaluation of the function f at input value x as f(x) or fx then the function composition is (f o g)(x) = f(g(x)) or (f o g)x = f (g x); but if you write it as x f or x^f, then the function composition is x (f o g) = (x f) g or x^(f o g) = (x^f)^g 14:22:51 and int-e, they're functions, so the left inverse and the right inverse are the same, we can just call it the inverse or inverse function 14:31:55 wib_jonas: ... 14:32:03 wib_jonas: you might want to think that through 14:38:14 wib_jonas: what is true is that if a function has both a left inverse and a right inverse then they're equal (and that implies the inverse is unique in that case). 14:39:08 But existence is a bit of an issue. 14:54:33 f being left inverse of g and g being right inverse of f doesn't imply that f . g = g . f 14:54:51 or does it? 14:54:52 int-e: hmm ok 14:54:54 I wouldn't think so 14:55:32 wait so if f . g = id and h . f = id then g = h? 14:55:51 that doesn't _sound_ right? 15:00:49 i don't think so 15:01:08 especially if the signatures differ 15:01:56 f .g = id -> h . f . g -> h . id -> h 15:02:48 since h . f = id -> h . f . g -> id . g -> g 15:02:50 thus h = g 15:02:51 hm. 15:02:52 it true 15:03:28 interesting 15:03:49 wait 15:03:54 I need paper for this. 15:04:48 no it's right. 15:05:12 h . f .g = id . g but also h . f .g = h . id thus id .g = h . id and id . g = g and h . id = h thus h = g = h 15:06:39 -!- sprocklem has joined. 15:06:46 now the question is whether there are functions (a,b) and (c,d) such that a . f = id and f . b = id and c . f = id and f . d = id but a /= c and b /= d 15:07:19 I mean... evidently a=b and c=d 15:07:45 so that leaves us with a . f = id and c . f = id where a /= c 15:08:13 which trivially if a . f = id and c . f = id then a . f = c. f 15:09:06 so the inverse is unique 15:09:07 hm. 15:17:50 -!- sprocklem has quit (Ping timeout: 246 seconds). 15:24:00 assuming id is unique 15:24:05 :D 15:25:06 if you define equality of functions as the same mappings from input to output, id is unique 15:26:54 Whats' f x = x / 0 called 15:27:02 it's a function that isn't defined forall X 15:28:06 the codomain is the empty set. 15:28:52 but the domain too 15:28:53 hm. 15:36:04 wouldn chr(0)+x work to convert to hex 15:37:40 I mean my current version (https://pastebin.com/C3kHSXMb) is probably awfully complicated and requires mem lookups 15:37:55 I could just add 0x30 to the nibbles 15:43:23 oh no 15:44:22 the guys making ASCII clearly didn't design for this. 15:44:26 BIG MISTAKE 15:44:45 on the other hand it would work if I wouldn't use ASCII 15:47:53 also I hate it when people say a byte is a number from 0-255 15:48:01 it's not accurate. bytes are typeless. 16:41:18 -!- kritixilithos has quit (Quit: quit). 16:49:44 -!- wib_jonas has quit (Remote host closed the connection). 17:09:55 -!- bunnyocto has quit (Ping timeout: 260 seconds). 17:24:29 -!- LKoen has joined. 17:40:07 -!- bunnyocto has joined. 17:55:05 [[Special:Log/newusers]] create * Nirex0 * New user account 17:56:04 -!- LKoen has quit (Remote host closed the connection). 18:00:20 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=67910&oldid=67875 * Nirex0 * (+314) My First Edit as required by esolangs.org 18:00:34 bunnyocto, re: bytes (last i checked anyways) well more than that, eg. rfcs say "octet"; "byte" is totally arbitrary and IIRC basically IBM started doing it (engineers wanted 24-bits, so it was flexible for integer and some floating thing; but they found it was either no machine or compromise on this) and then everyone copied IBM 18:00:49 -!- LKoen has joined. 18:01:00 i found that buried in an interview with a designer of that particular IBM CPU :) 8 bits is totally arbitrary from what i found; everyone just wanted to be "compatible" basically 18:01:31 and IIRC IBM might have even been trying to be "compatible" with some competitor in the first place! totally arbitrary from what i found 18:01:53 (the interviewed person didnt say this, but it was implied) 18:02:48 and e.g. knuth IIRC claims trinary would be more efficient (assuming everyone switched, economy of scale, etc.) 18:03:19 more efficient pricewise versus performance i mean, but only if everyone switched 18:04:18 i dont trust people who say "bytes" if you mean 8 bits "octet" 18:10:41 [23:03] more efficient pricewise versus performance i mean, but only if everyone switched => is it that one argument about e-ary system? Because there it’s assumed that each state of each bit/trit/etc. is equally costly to make, which isn’t that true in reality — AFAIR bits are cheaper to make work reliably than trits, statewise 18:11:00 sorry about timestamp, wasn’t mean to paste that :D 18:12:07 [[Language list]] https://esolangs.org/w/index.php?diff=67911&oldid=67821 * Nirex0 * (+10) Add: oof programming language (not to be confused with oof!) 18:12:30 i dunno, i think knuth says it in aocp so youd have to dig 3 volumes and whatever else i dunno if he ever finished them :) 18:12:44 if you google around you might find more detail 18:13:19 somehow he claimed either trinary or some other non-binary base would be cheaper for equal performance (paraphrase on my part) 18:13:54 theres lots of potential weird bases ... 18:14:14 non-integer i mean 18:14:44 apologies if i sound vague, not really "trained" in that kinda stuff 18:15:10 (and doesnt come up in real life programming for me, however interesting it might be) 18:15:55 (plus its been like 20 years since i skimmed that stuff) 18:20:21 [[Oof]] N https://esolangs.org/w/index.php?oldid=67912 * Nirex0 * (+1351) Add: oof programming language (not to be confused with oof!) 18:21:58 how does C return structs? 18:22:07 doesn't fit into register 18:22:11 so presumably on the stack 18:22:54 but then presumably it's memcpied somewhere into the callee stack 18:23:01 I mean.. later pushes might destroy the struct on the stack 18:23:05 so you gotta save it somehow 18:24:42 [[Oof]] https://esolangs.org/w/index.php?diff=67913&oldid=67912 * Nirex0 * (+1) 18:26:20 oh well... who needs to return structs :( 18:26:48 just pass a pointer to the struct as the callee and let the caller fill that one in 18:30:48 [[Oof]] M https://esolangs.org/w/index.php?diff=67914&oldid=67913 * Nirex0 * (+6) Better Documentation 18:31:05 -!- Jefe has joined. 18:32:03 Hi, my friend told me about a language where only the white space is significant, so all visible characters constitute comments. Anybody happen to know the name? 18:32:29 i think it was called whitespace 18:32:36 and probably made slashdot 18:32:41 long ago 18:33:28 Well that would just make too much sense, wouldn't it? 18:33:32 [[Oof]] M https://esolangs.org/w/index.php?diff=67915&oldid=67914 * Nirex0 * (+30) 18:33:33 Thanks. 18:34:08 * kingoffrance cries himself to sleep that slashdot moderation is actually something missing from a gazillion other sites; at least slashdot's perl forum you could browse the -5 flamebait if you wanted; the modern web stuff just vanishes 18:34:44 murphy's law: someone can always do worse implementation of something you don't particularly like 18:35:39 That's kind of like "every bad idea will eventually be implemented in JavaScript." 18:36:34 we called it jabbascript or jabbadabbascript in ##programming about 24 hours ago ; as in node.js is modular like slicing a chunk of lard off jabba the hut and moving it somewhere else 18:36:50 i dont know if those are common nicknames 18:37:29 (referring to node having 5000 dependencies i suppose) 18:39:00 The Signal desktop client is apparently written in Node. I ran it for a week, my load average wouldn't drop below 3.0, and frequently shot over 15. 18:40:39 -!- ais523 has joined. 18:42:19 thats good, i dont feel bad for being cruel now 18:49:20 -!- sprocklem has joined. 18:51:52 https://stackoverflow.com/questions/22593259/check-if-string-is-int-golang 18:51:53 so terrible 18:52:48 I mean... the unicode.isDigit is bullshit. 18:53:00 then using regexps? pff... 18:58:08 [[Oof]] https://esolangs.org/w/index.php?diff=67916&oldid=67915 * Dart * (-94) 18:58:53 is that Ook but s/k/f? 19:01:08 OLen / 8 19:01:09 uhm. 19:01:25 oof has on OLen of 2 so 2 / 8 = 0 so it's executed zero number times 19:01:41 probably should be (OLen / 8 ) + 1 as well 19:01:52 also... > is f with zero os 19:01:53 so... 19:01:57 OLen always zero 19:02:04 means you can't express >>>> with this mechanism 19:07:59 https://stackoverflow.com/questions/22593259/check-if-string-is-int-golang ← the question is poorly defined; many of the answers produce different results in specific cases 19:08:20 for example, is "123456789012345678901234567890" a string representing an integer? 19:08:46 the answer depends on your use case; you can't convert it to an integer but in many cases you'd want to recognise it as one 19:08:59 yeh I'm aware of that. 19:09:06 i've so far avoided starting an argument with my girlfriend about golang. 19:09:10 she seems to be a fan 19:09:35 in languages with compiled regexes, the regex solution is actually one of the most efficient ways of doing that, because it's basically a domain-specific language for generating string validators, and the compiler will have a lot of rules to optimise it 19:09:48 but I suspect golang doesn't actually compile regexes at compile time 19:09:57 I don't know any language that does? 19:10:04 Rust does 19:10:11 Interesting. 19:10:36 kmc: I like golang a lot. 19:10:43 unless it's for GUI stuff 19:10:45 then puh 19:11:01 I don't think there are any reasonably good bindings to do GUI stuff with golang yet. 19:11:28 but you know 19:11:43 GUI is done in things.. 19:11:46 html 19:12:26 webviews? 19:14:05 I mean I'm not sure I'd say "rust does" 19:14:11 i'm sure someone has a library that does it with a procedural macro 19:14:40 i don't think the 'regex' crate does 19:14:52 it suggests using lazy_static so that each regex is compiled once, but that still happens at runtime 19:15:10 looking it up, it seems regex! isn't the recommended way of doing things that the moment 19:15:13 I'm also sure someone has written a Lisp or Scheme regex library that does it at compile time 19:15:16 ok 19:15:25 so it's more like it could be done in Rust but isn't the default 19:15:30 yeah 19:15:32 (that's disappointing, I thought it would be) 19:15:42 muahaha. suck it rust. 19:15:48 no, but rust is cool. 19:15:57 I think Perl compiles regexes on first use rather than compile time, too 19:15:59 static memory safety is a neat concept. 19:16:05 not sure though, its optimiser does weird things sometimes 19:16:30 it's just that most oldschool programmers are too scared of it yet so few use it 19:16:54 even newschool programmers 19:17:10 we had "tech discovery" meetings back at the place I worked 19:17:35 I introduced Rust at one point. 19:18:07 I don't know. People just aren't really fond of learning new concepts I guess. 19:18:45 hmm, I suspect that most compilers will not generate the fastest asm for verifying that a string consists only of digits on any input, short of outright writing the asm 19:18:55 so we used golang. Which is awesome... better than python, C or Java 19:18:57 or C# 19:20:35 Rust has a steep learning curve 19:20:42 because it tries to provide all of safety, convenience, and performance 19:20:48 this means it's nearly as complex as C++ 19:20:55 but the complexity is more necessary and less historical/accidental 19:21:22 Rust is largely an attempt to take modern C++ concepts and build a similar language without the historical baggage 19:21:27 and in fact those concepts are getting backported into C++ 19:21:33 (which will make it even more complicated, but that's life) 19:22:44 Rust is a cool language with an annoying community and dickish leadership 19:22:50 that is also life 19:23:03 computers suck, people suck too but in a different way 19:24:24 the Rust community is like the Haskell community, a bunch of really excited beginners who think Rust will solve every problem under the sun, plus they're full of themselves for being 'friendly and welcoming' but they don't want to hear about it if your experience is to the contrary 19:25:27 11:18 < ais523> hmm, I suspect that most compilers will not generate the fastest asm for verifying that a string consists only of digits on any input, short of outright writing the asm 19:25:33 i've seen LLVM do some clever things in that direction 19:26:08 if you have a switch-case with two branches over a set with less than 64 elements it will make a bitmask and use that as an immediate operand 19:27:56 https://gcc.godbolt.org/z/Ce-LBo 19:28:35 hmm: https://godbolt.org/z/n3PKGD 19:28:44 ok gotta go 19:28:46 ttyl 19:29:00 https://pastebin.com/WYsqm4aj is how I'd probably go about it if we're talking about no signs involved :D 19:29:09 -!- APic has quit (Quit: Boot tut gut™.). 19:30:11 not tested yet 19:31:37 -!- myname has quit (Ping timeout: 240 seconds). 19:33:44 I suspect the correct option is probably to use the asm instruction VPCMPISTRI, but good luck getting a compiler to generate it 19:34:37 (I put in the check to make sure that the string's starting address was divisible by 32 to make sure that any resulting overread wouldn't cause issues with page faults, in case the compiler was scared to do an overread and that was suppressing the optimisation) 19:36:00 this would be particularly good on long strings or if you were checking lots of different strings in a loop (because you can loop-invariant-code-motion the loading of the list of permitted character ranges) 19:38:51 so the string has to be <=128 bytes for pcmpistri? 19:38:57 -!- APic has joined. 19:39:00 -!- Jefe has left ("Leaving"). 19:39:03 bunnyocto: <= 128 bits for each call to pcmpistri (16 bytes) 19:39:11 however it lets you know if the whole segment of the string you're looking at matches 19:39:22 if it does you can just look at the next 16 bytes, and so on 19:39:34 the length limit makes sense because this is using a hardware string-tesing circuit 19:39:35 yeh but what about \0? 19:39:43 pcmpistri handles \0 itself 19:39:52 -!- b_jonas has joined. 19:39:58 it has a friend pcmpestri for length-prefixed strings 19:40:22 so it stops at a \0? 19:41:02 yes 19:41:33 the basic idea is to use pcmpistri in a similar way to strspn to check how many bytes at the start of the string are digits 19:41:39 then you look for the byte just beyond those and see if it's \0 19:41:49 if it is, the string's entirely digits 19:42:01 (you can then adjust for ensuring the string's nonempty, checking for +/-, etc., if you want to) 19:42:24 if pcmpistri tells you that the 16-byte section of string you're looking at has 16 digits in it, you have to move onto the next section, otherwise you're done 19:42:36 -!- myname has joined. 19:44:15 -!- FreeFull has joined. 19:44:18 (16 digits consecutively at the start, that is) 19:44:55 unfortunately it wouldn't work for UTF-8 (you could make it work for UTF-16 though, at least if you confined yourself to ASCII digits) 19:45:02 or ,hmm 19:45:11 actually it does work for UTF-8 if you confine yourself to ASCII digits 19:45:25 because you don't actually have to parse it 19:45:53 -!- xkapastel has joined. 19:53:57 my neighbour is singing since like 3 hours 19:54:43 ais523: thx for your explanations. 19:56:16 PUNPCKLDQ 19:56:20 nice mnemonics. 19:58:32 "I suspect that most compilers will not generate the fastest asm for verifying that a string consists only of digits on any input, short of outright writing the asm" => the problem with that stuff is that "fastest" depends on whether you are allowed to assume 31 readable bytes after the end of the string or not, and we still don't have interfaces to malloc that even let you allocate vectors that way, or 19:58:38 reference types or containers or any high-level abtstractions to track that info 19:59:30 "I put in the check to make sure that the string's starting address was divisible by 32" => yes, that 19:59:48 oddly enough, C doesn't allow aligned pointers as function arguments 20:00:07 it supports aligned pointers but there's an explicit rule that prevents you putting an _Alignas on a function argument, or sneaking one in via a typedef 20:00:29 hu? 20:00:30 why? 20:00:34 (16 would actually be enough alignment, but I put 32 just in case the compiler could think of something clever to do with the 256-bit vector units) 20:00:40 ais523: sure, but you can put those things in a struct 20:00:48 why does it care whether a char* is aligned? 20:00:55 bunnyocto: it lets you overread safely 20:01:14 on basically all modern processors, there's a limit to the memory protection's granularity 20:01:28 so, say, memory can only go from readable to unreadable at a multiple of 512, or a multiple of 2048 20:01:46 so if you know the address is divisible by 16, either the first byte is unreadable or the whole thing is readable 20:01:58 on a multiple of 4096 bytes on x86 actually 20:02:07 I forgot the modern number 20:02:17 and I think 8192 in linux userspace, but I'm not sure of that 20:02:17 yeh yeh page sizes and what not.... but how does this matter for this purpose? 20:02:18 it keeps changing, wasting 4K of memory isn't really a big deal nowadays 20:02:38 because if you have a string like "12", it might be right at the end of a page 20:02:45 if I make like uhm void bar() { char* __align(16) blubb = "blubberlutsch"; foo(blubb); }? 20:02:47 so you can't read the first 16 bytes in case there's unreadable memory just after it 20:03:10 bunnyocto: that works but the function isn't allowed to know that it was given a pointer that's 16-byte aligned, it just gets a char* 20:03:31 and, I know I ranted about this a lot, I wish we could eventually transition to larger pages required system-wise, because there's a hard limit that the L1 data cache can be at most 8 pages large, and that's very often the bottleneck 20:04:01 that reminds me 20:04:17 b_jonas: huh, why the limit? 20:04:18 did izabera return after she asked that question about graph algorithm to which I first gave a stupid answer? 20:04:33 hi 20:04:37 hello 20:04:40 like, it doesn't seem significantly harder to make the L1 cache bigger by doubling the page size, and by doubling the number of pages it supports 20:04:41 i have returned 20:05:08 in either case the main cost is going to be the silicon that actually stores the values in the cache, rather than the control circuitry 20:05:21 and if the control circuitry is the issue, you might want to make cache lines longer instead 20:05:34 ais523: the L1 cache has to have a very low latency, so it needs to find which cache line to return when it only knows the linear address, and then verify if that's correct after the physical address is computed. 20:05:34 is the issue actually the TLB rather than the L1 cache? that would be more believable 20:05:57 ok wait, I'm explaining that wrong 20:06:01 b_jonas: i ended up running bfs from each node 20:06:14 b_jonas: oh, the L1 cache works on virtual addresses? I'd have expected it to work on physical addresses (as the TLB that caches virtual addresses) 20:06:15 easily parallelizable 20:06:23 the L1 cache needs to have a very low latency, so it has to do most of the computation when only the linear address is available, the physical isn't 20:06:52 so how it works is that it finds the bunch of 8 cache lines whose address matches the linear address modulo the page size, then when the physical address arrives, it chooses one of those 20:07:00 it has to be able to do this on two reads in parallel by the way 20:07:07 or one read and one write 20:07:26 in order to keep the latency low, it can't have more than 8 cache lines with the same address modulo page size 20:07:48 that's not actually a limit of 8 pages, though; it's just a limit of 8 addresses that are on the same place within the page 20:07:58 the size of the individual cache lines, which happens to be 64 bytes on x86, doesn't influence this 20:08:00 there are a huge number of caching effects that have limitations like that 20:08:08 ais523: yes, 8 page sizes of total data 20:08:38 32 kilobytes, divided to 64 bytes sized cache lines, such that each address modulo 4 kilobyte has at most 8 cache lines 20:09:13 you could have more while retaining the virtual address lookup behaviour, though 20:09:56 "it doesn't seem significantly harder to make the L1 cache bigger by doubling the page size" => you can do that only if the OS guarantees that there can't be small pages anywhere, not even in other processes, because processes can share memory, and even then the cpu would need extra circuitry to handle the compatibility node for old OSes that can't guarantee that, so it's a bit messy 20:11:29 b_jonas: no, if you end up with more than 8 addresses in cache that would clash with each other, you just evict one to avoid hte problem 20:11:46 but if the addresses happen to not clash, you can go with it 20:12:09 ais523: no, it's definitely the L1 cache, not the TLB cache. the TLB cache is improved by making most pages large pages (2 megabyte in x86_64), while the OS can still allocate some normal 4 kilobyte sized pages, the TLB can handle the mixing reasonably efficiently 20:13:14 ais523: yes, you evict one if you have more than 8 addresses that clash, which means that the total L1 data cache (on a single cpu core) can be no larger than 32 kilobytes total, or 512 cache lines of 64 bytes if you wish. 20:13:59 and 32 kilobytes is rather small, it would be nice to be able to increase that for some applications, because the L1 data cache is often the bottleneck 20:14:05 it isn't always for all computations, obviously 20:14:30 bottleneck for what... 20:14:31 these cache lines could be from 512 different pages possibly 20:14:38 back in the old day we had 333mhz something 20:14:43 and it was running smoothly 20:14:48 it should run incredibly fast now 20:14:48 or they could contain the entirety of 8 pages 20:16:40 also excel 2019 probably has still the same set of features as good old lotus 20:17:19 -!- ais523 has quit (Ping timeout: 265 seconds). 20:22:57 izabera: good, that's what I figured too eventually. you may have read my answer in the logs. 20:25:55 this is really interesting. 20:26:12 I don't think that current basic software is any more advanced than like 15y ago 20:26:27 sure... it looks less pixely but other than that 20:32:06 -!- ArthurStrong has quit (Quit: leaving). 20:34:46 -!- ais523 has joined. 20:50:49 -!- ais523 has quit (Remote host closed the connection). 20:52:01 -!- ais523 has joined. 21:12:53 -!- bunnyocto has quit (Remote host closed the connection). 21:13:41 -!- myname has quit (Ping timeout: 276 seconds). 21:19:52 -!- myname has joined. 21:53:09 -!- ais523 has quit (Quit: quit). 22:12:28 -!- xkapastel has quit (Quit: Connection closed for inactivity). 22:39:21 so the UK general election was today? 22:39:54 -!- aloril has quit (Ping timeout: 265 seconds). 22:40:09 Yes, the polling places just closed 40 minutes ago. 22:40:51 My phone tried to keep telling me how to vote, I don't think it realizes I'm not enfranchised. 22:44:31 fizzie: you lied to websites that you're older than your real age because they don't allow you to use the website or buy drugs otherwise, and now your lie bites back in the form of election ads? 22:45:44 I don't think it's that. 22:46:46 I did want to share a picture of one of the most misleading infographics from the ads in our mailbox, but I threw it away already. 22:47:29 you may be able to find a copy online 22:47:29 It had a bar chart for Tories, Labour and Lib Dems, and the bar heights were not to scale. 22:47:59 was it one of these plots that show bars in 3D with exaggerated perspective for no reason? 22:48:49 It was flat, but the height difference indicating a 5 percentage-point difference was more or less the same as that for 9. 22:50:09 well the glyphs are similar too so what's your complaint... 22:50:33 They had also drawn an up-pointing triangle on top of their own bar, but it didn't make any more sense even treating the top of the triangle as their bar height. 22:51:06 what if you consider the areas of the bars, with the triangle included? 22:51:30 Hmmm, well. Too late now. 22:51:43 search the web, there's probably a copy online 22:53:14 -!- aloril has joined. 22:54:13 I did find an article about generally misleading leaflets -- https://www.bbc.co.uk/news/uk-politics-50375532 -- though this is mostly about dodgy data and other misrepresentation, rather than graphical tricks. 22:56:23 -!- b_jonas has quit (Ping timeout: 250 seconds). 22:57:15 IMO they should just stop with this FPTP stuff. 22:57:26 -!- b_jonas has joined. 22:58:12 another of those stupid power outages that they do some nights, when electricity goes down in the whole block for two minutes, then stays up for 10 to 15 minutes, then goes down for 2 minutes again 22:58:24 I don't know why they do this so often 22:58:38 so expect me to disconnect again within 10 minutes 23:00:23 the internet takes two more minutes to come back after the power of course, and even mobile phone disconnects for half a minute at the start of the power outage before the aggregator for the cell tower starts up 23:09:30 -!- izabera has quit (Ping timeout: 268 seconds). 23:10:03 -!- LBPHacker has quit (Quit: Entering cryogenic sleep in three, two, on--). 23:10:18 -!- LBPHacker has joined. 23:10:18 hmm, maybe they're skipping the second outage this time? 23:10:42 -!- izabera has joined. 23:11:21 -!- myname has quit (Ping timeout: 268 seconds). 23:17:31 -!- subleq has quit (Ping timeout: 268 seconds). 23:30:41 -!- myname has joined. 23:33:59 -!- subleq has joined. 23:35:17 -!- myname has quit (Ping timeout: 240 seconds). 23:39:15 -!- myname has joined. 23:39:16 -!- Cale has quit (Remote host closed the connection). 23:40:31 [[Oof]] M https://esolangs.org/w/index.php?diff=67917&oldid=67916 * IFcoltransG * (+94) Shamelessly plagiarised some categories from Ook! 23:45:15 [[Oof]] M https://esolangs.org/w/index.php?diff=67918&oldid=67917 * IFcoltransG * (+5) Moved to joke langs cat (w/ permission of author) 23:47:03 [[Joke language list]] https://esolangs.org/w/index.php?diff=67919&oldid=67886 * IFcoltransG * (+10) /* Brainfuck derivatives */ + Oof (from serious lang list) 23:48:22 [[Language list]] https://esolangs.org/w/index.php?diff=67920&oldid=67911 * IFcoltransG * (-10) /* O */ Move Oof to joke langs list 23:49:30 [[Oof!]] M https://esolangs.org/w/index.php?diff=67921&oldid=8487 * IFcoltransG * (+34) Added hint for disambiguation w/ Oof 23:51:38 -!- Cale has joined. 23:57:22 [[Talk:Grime MC]] https://esolangs.org/w/index.php?diff=67922&oldid=67908 * Salpynx * (+3598) clarifying this was NOT meant to be a finite prescriptive language, but interpreter should still be possible, just never complete