00:00:02 -!- danieljabailey has quit (Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in). 00:07:33 -!- Essadon has quit (Quit: Qutting). 00:10:58 -!- Phantom_Hoover has quit (Remote host closed the connection). 00:11:51 -!- ais523 has quit (Quit: sorry for my connection). 00:12:07 -!- ais523 has joined. 00:16:00 -!- tromp has joined. 00:28:32 [[Talk:Nope.]] https://esolangs.org/w/index.php?diff=58992&oldid=58927 * Areallycoolusername * (+394) 00:36:53 arseniiv: Baez just wrote back. He fixed the nitrous oxide thing. 00:37:11 b_jonas: that sentence out of context raises so many questions 00:37:14 arseniiv: thanks for spotting it. 00:37:47 ais523: yeah, especially since my current job involves working on something about something about something about something about nitrous oxide actually 00:42:32 hmm. maybe eating either a wand of slow monster or a wand of speed monster should take a long time, the wand of slow monster because of the stored slowing charges escaping and slowing down the xorn, and the wand of speed monster because of http://www.mezzacotta.net/owls/?comic=770 00:51:56 [[Talk:Nil]] https://esolangs.org/w/index.php?diff=58993&oldid=53906 * Salpynx * (+1726) fix interpreter exploit 01:52:39 M:tG stuff. The next set, Ravnica Allegiance, apparently has a keyword ability about how white soldiers were sworn to serve so much that they're still bound to serve after their death, as an oath-spirit. 01:55:09 That much is great, but it's a mechanic for the Orzhov guild. But the original Ravnica story went that Agrus Kos of the Boros Guild was a famous watch captain who was forced to serve the Azorius guild after his death. So how will that be a mechanic on Orzhov cards? 01:55:34 I don't know why it is Orzhov. 01:55:50 Possibly because the effect is like white mana and black mana? 01:56:36 b_jonas: Orzhov flavour has become, over time, "you incur debts to them and spend multiple lifetimes paying them off" 01:56:45 zzo38: it's Orzhov because ghosts always made sense in black and white, the blue ones were just illusions, and Eventide and then Innistrad cemented them in black and white. 01:57:10 it's not soldiers (at least, not just soldiers), it's random people who are in debt to the Orzhov 01:57:24 b_jonas: Yes, that is how I meant, it is black and white 01:57:32 ais523: OK, that also explains, then 01:57:58 ais523: I'm not saying that it doesn't make sense in Orzhov. I just don't see how it will work, as it seems like this would force them to waste the main selling point of the ghost thing, which is Agrus Kos. 01:58:16 b_jonas: Ravnica's flavour gets reinvented often enough that they likely don't care about Agrus Kos any mroe 01:58:35 Hmm. So Agrus Kos doesn't have to serve forever then? 01:59:20 Would that mean that of the original crew, only Niv-Mizzet will be here to stay? Or maybe some of the angels will still be here? 02:00:28 Rakdos is the only original guild leader who's still guild leader as of Guilds of Ravnica 02:00:45 Hmm no, the angels aren't from Ravnica. 02:00:46 Niv-Mizzet is still alive but in hiding, apparently 02:01:04 the full story is likely to be pay-for rather than free, though, so I don't know many of the details 02:01:53 err, the Ghost Council isn't a single person, it's still leader of the Orzhov as of Guilds of Ravnica, but not as of Ravnica Allegiance 02:02:22 Oh, you mean the novelization. 02:03:11 I was wondering what you meant, because the ability doesn't demand an additional mana payment to get the ghost. 02:03:58 why would it? they're in debt already 02:05:19 Exactly, it makes sense that it's free. That's why your statement confused me. 02:06:04 oh, you interpreted "full story" as an idiom, when I meant it literally (i.e. "the entirety of the plot") 02:06:30 Yeah, more or less. 02:09:18 `? ance 02:09:19 Spelling of -ance/-ence words: advance, science, conference, experience, finance, insurance, licence, performance, reference, assistance, balance, defence, difference, distance, evidence, acceptance, appliance, audience, compliance, importance, influence, instance, intelligence, maintenance, preference, presence, sentence, sequence, substance, violence, absence, accordance, alliance, appearance, assurance, attendance, circumstance, clearance, confidence, c 02:09:30 ^ doesn't have "allegiance" 02:13:48 Heh heh. The new card frame allows Wizard to print split cards with more space in the text box, allowing more complicated split cards than ever. 02:14:00 I wonder how the Azorius will use that power. 02:38:03 -!- b_jonas has quit (Quit: leaving). 02:54:59 -!- uplime has quit (Quit: e36freak: whats your favorite meal of the day). 02:56:33 [[Nellephant]] N https://esolangs.org/w/index.php?oldid=58994 * Ais523 * (+13572) new language 02:58:40 [[Language list]] https://esolangs.org/w/index.php?diff=58995&oldid=58959 * Ais523 * (+17) /* N */ +[[Nellephant]] 02:59:02 [[User:Ais523]] https://esolangs.org/w/index.php?diff=58996&oldid=58790 * Ais523 * (+16) +[[Nellephant]] 03:09:02 -!- uplime has joined. 03:15:35 -!- ais523 has quit (Quit: quit). 03:40:43 -!- FreeFull has quit. 03:50:27 -!- pikhq has quit (Ping timeout: 240 seconds). 03:50:52 -!- Lord_of_Life has quit (Ping timeout: 258 seconds). 03:51:31 -!- pikhq has joined. 03:53:28 -!- Lord_of_Life has joined. 04:01:15 -!- danieljabailey has joined. 04:10:03 -!- uplime has quit (Quit: WeeChat 2.2). 04:35:21 -!- yaewa has joined. 04:36:38 -!- moei has quit (Ping timeout: 246 seconds). 04:55:04 is there some kind of catalog on what kinds of memory you can equip an FSM with to make it turing complete? 04:55:13 tapes, queues, twin stacks, etc. 05:03:19 [[Brainfuck]] https://esolangs.org/w/index.php?diff=58997&oldid=58974 * Oerjan * (+143) /* Computational class */ CS.SE answer for improved construction is up 05:23:35 [[Subtractpocalypse]] https://esolangs.org/w/index.php?diff=58998&oldid=55746 * Ais523 * (+84) /* See also */ [[Brainpocalypse]] 05:32:45 [[Re:direction]] M https://esolangs.org/w/index.php?diff=58999&oldid=58825 * Ais523 * (+0) /* Computational class */ fmt 07:58:43 -!- tromp has quit (Remote host closed the connection). 07:58:56 -!- tromp has joined. 08:52:33 -!- imode has quit (Ping timeout: 258 seconds). 08:58:26 -!- AnotherTest has joined. 09:20:40 -!- kolontaev has joined. 09:21:24 Hi all. Am I right Gödel's incompleteness theorems states that it's not possible to create a language in which the sentence "this phrase is a like" would be impossible? 09:26:29 Hi all. Am I right Gödel's incompleteness theorems states that it's not possible to create a language in which the sentence "this phrase is a lie" would be impossible? 09:26:32 lie! 09:42:15 I don't think so? But maybe you mean something else. 10:19:55 -!- kolontaev has quit (Quit: leaving). 11:08:18 -!- AnotherTest has quit (Ping timeout: 250 seconds). 11:09:05 -!- AnotherTest has joined. 11:18:54 -!- AnotherTest has quit (Ping timeout: 268 seconds). 11:29:09 -!- wob_jonas has joined. 11:31:05 imode: on what to add to an FSM to make it Turing-complete: any of the following are enough: one half-infinite r/w tape with two symbols, one queue with two symbols, two stacks with two symbols, two bigint counters (you can consider a counter as a read-only tape with one symbol at the beginning and all zeroes after). 11:31:40 I'm not sure if there's an explicit "catalog" besides TCS textbooks that explain these with proofs 11:51:59 -!- kritixilithos has joined. 12:05:34 -!- arseniiv has joined. 13:08:48 -!- Essadon has joined. 13:09:23 -!- Essadon has quit (Max SendQ exceeded). 14:04:40 -!- kritixilithos has quit (Ping timeout: 250 seconds). 14:09:21 -!- AnotherTest has joined. 14:18:54 -!- AnotherTest has quit (Ping timeout: 252 seconds). 14:22:10 -!- derpy has joined. 15:11:52 -!- AnotherTest has joined. 15:49:16 -!- Lord_of_Life_ has joined. 15:52:29 -!- Lord_of_Life has quit (Ping timeout: 246 seconds). 15:52:30 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 16:15:15 -!- uplime has joined. 16:31:18 -!- imode has joined. 16:44:27 -!- derpy has quit (Remote host closed the connection). 16:46:15 -!- derpy has joined. 16:57:51 -!- AnotherTest has quit (Ping timeout: 258 seconds). 17:17:48 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client). 17:23:10 [[Qwote]] https://esolangs.org/w/index.php?diff=59000&oldid=58969 * Areallycoolusername * (+365) 17:39:02 -!- kritixilithos has joined. 17:59:27 -!- S_Gautam has joined. 18:06:02 -!- imode has quit (Ping timeout: 250 seconds). 18:12:34 -!- oerjan has joined. 18:16:28 @messages-told 18:16:28 ais523 said 1d 1h 30m 13s ago: simpler construction (untested but feels like it should work): instead of one fallback counter per waterclock, have two global fallback counters that zero each other 18:16:28 and decrement every waterclock, then use [<] as the inner loop rather than doing something mod-number-of-counters 18:19:05 @tell ais523 So much for not checking IRC until I'd finished the post. As suggested, I think I see how to keep your simpler construction non-negative. Putting the fallback counters and all counter cells at -5, -4, and 0 (mod 20) respectively is enough to allow each fallback to repair stray damage from the shifts of its own decrements without collisions. 18:19:06 Consider it noted. 18:21:58 @tell ais523 More specifically, a fallback cell can repair itself if it (1) runs often enough (2) is shifted from all other cells by x (mod n) where n>=4 and gcd(x,n)=1. (This ensures no collisions for the repairs.) Taking n=4 and 5 and combining handles two fallbacks. 18:21:59 Consider it noted. 18:23:19 @tell ais523 The repair distances then become 2x and -2x (mod n), while ordinary distances are x, -x and 0 (mod n). 18:23:19 Consider it noted. 18:27:29 -!- oerjan has quit (Quit: My work here is done). 18:43:03 -!- imode has joined. 18:57:11 [[Hell69]] N https://esolangs.org/w/index.php?oldid=59001 * Areallycoolusername * (+228) Created page with "Due to technical limitations, the title of this page is incorrect. The actual name is pronounced "Hell to the sixty-ninth power" or just Hell69. This is an esoteric programm..." 19:04:18 -!- Phantom_Hoover has joined. 19:04:19 -!- Phantom_Hoover has quit (Changing host). 19:04:19 -!- Phantom_Hoover has joined. 19:04:57 -!- kritixilithos has quit (Quit: :q). 19:05:01 hmm 19:05:14 i've tried reading the documentation on this before but it evidently hasn't stuck 19:05:42 how do the turing-complete x86 mov instruction things get the instruction pointer to go backwards? 19:11:10 like i don't think x86 lets you mov to the IP? 19:11:43 If you mean the "mov is Turing-complete" paper, that one's a cheat, there's a single unconditional "jmp start" at the end. 19:11:46 For the M/o/Vfuscator, it was more complicated; I've forgotten what it did. 19:12:15 memory mapped instruction pointers are usually cheating but I don't think that's what movfuscator does. 19:12:37 Right -- M/o/Vfuscator uses a mov that causes a fault, plus some setup to make that an infinite loop. 19:12:58 i noted that the last instruction in a dump on the github page is mov cs,eax 19:13:01 "While Dolan's paper required a jmp instruction, the M/o/Vfuscator does not - it uses a faulting mov instruction to achieve the infinite execution loop. If you're worried that this is still "jumping", the same effect could be achieved through pages aliased to the same address, wrapping execution around the upper range of memory, ring 0 exception handling, or simply repeating the mov loop indefinitely. A 19:13:06 didn't it use that fault to re-map memory and just keep shuffling pages back and forth to simulate a loop? 19:13:07 jmp is currently used to dispatch external functions - if this is a problem, avoid using external functions, or compile libraries with the M/o/Vfuscator as well." 19:13:13 there we go, yeah. 19:13:29 does mov to cs cause a fault then 19:13:38 basically "virtual memory + mov is TC" 19:15:28 side note: it's possible to encode complete graphs within a hamming graph, yeah? up to a certain size. 19:15:56 anything past that size and you need to get crafty. 19:16:10 -!- b_jonas has joined. 19:16:20 Phantom_Hoover: Loading an invalid selector definitely would, at least. 19:16:57 Oh, cs? In that case, loading anything does. 19:17:29 "The MOV instruction cannot be used to load the CS register. Attempting to do so results in an invalid opcode exception (#UD). To load the CS register, use the far JMP, CALL, or RET instruction." 19:17:37 lol 19:17:43 (Basically, just one more way IP is special.) 19:18:05 if you're gonna construct invalid opcodes i think it's a bit much to call it mov 19:18:53 well, it's no wonder, because calling and returning to special segments have all sorts of extra semantics over the normal jump 19:20:07 -!- FreeFull has joined. 19:20:48 does cs even do anything in 32/64 bit mode 19:21:27 Well... it's "documented" under MOV, and the opcode reference just says "MOV Sreg,r/m16". And assemblers assemble it, as you saw. So while it's a reasonable argument to say it's an invalid opcode, it's still pretty mov-y. 19:21:52 CS (and all the other selectors) are pretty relevant in 32-bit protected mode. 19:24:15 -!- AnotherTest has joined. 19:24:21 do you mean 64-bit protected mode? 19:24:25 -!- FreeFull has quit (Client Quit). 19:24:43 because it's more relevant in 32-bit protected mode than in 64-bit protected mode 19:24:57 In 64-bit mode, CS (as well as DS, ES and SS) have a hardcoded base of 0, but maybe they had some functionality still left for things other than address calculations? (FS and GS can have a non-zero base, loadable via MSRs, and have OS-specific uses, such as implementing TLS.) 19:26:21 -!- ais523 has joined. 19:28:10 Looks like they do, yes. 19:28:12 "Code segments continue to exist in 64-bit mode even though, for address calculations, the segment base is treated as zero. Some code-segment (CS) descriptor content (the base address and limit fields) is ignored; the remaining fields function normally (except for the readable bit in the type field)." 19:29:17 TLS as in the network security protocol? 19:29:24 Thread-local storage. 19:31:48 I guess that makes sense; they've put the bit that makes it possible to run 32-bit code while in IA-32e (aka "long") mode into the CS descriptor. 19:31:59 For further details, consult the "Code Segment Descriptor in 64-bit Mode" chapter of Volume 3. 19:35:49 fizzie: the bit that distinguishes 16-bit and 32-bit protected mode code is still in the code segment descriptor for example. 19:36:50 Yes, and the privilege bits as well. 19:38:15 and I think the cpu still allows you to use the legacy 386 method for a call to the operating system through a gate, but only very old 32-bit programs use that, because fast system calls and new fast fast system calls were both introduced before 64-bit mode 19:39:05 -!- FreeFull has joined. 19:41:54 TBH, I'm not sure how much "less of a cheat" the mov fault is compared to the unconditional jmp, since the "host" code needs a `call sigaction` instruction anyway... although OTOH, there'd be non-"mov" code running anyway to load the program to memory, so that's kind of unavoidable when running under an operating system. 19:42:20 It's pretty funky, though -- it uses the "master_loop" label (the start of the movfuscated program) as the signal handler, which just never returns; it sets the SA_NODEFER flag so that the "signal handler" can be interrupted by the signal it's handling. 19:44:17 (I wonder if that consumes some stack per iteration, though. Presumably that state must go somewhere?) 19:44:51 can you mov to SP? 19:45:55 Yes? I mean, that's part of the standard function epilogue when using ebp as a frame pointer? 19:46:53 that's how you get rid of the stack that's consumed every iteration 19:47:43 Oh, right. 19:48:00 fizzie: I expect the kernel would push some stuff to the stack before calling the signal handler. Not sure though 19:48:15 Ah 19:49:00 Looks like that's in fact what it does, when using the "mov loop" as it calls it. 19:58:28 fizzie: no, the MOV proof actually uses some crazy properties of x86 so that even for the fault handler it invokes and in system mode, it never runs any instruction other than MOV. the cpu only executes MOV, as well as generic fault-handling code that isn't specifically part of any named or directly callable instruction 19:58:43 it's quite esoteric, you wouldn't believe it until you read the article 19:59:19 and yes, the setup requires instructions other than MOV 19:59:28 but after that, it's turing-complete 20:01:11 and the whole thing requires a custom "operating system", one with very unusual settings that you wouldn't normally use, and that probably isn't convenient if you want to run ordinary programs 20:01:31 it might not be able to run anything else 20:02:00 the whole concept seems preposterous and impossible a priori, really 20:02:12 normally you need an IRET to go back from system code to user code 20:02:53 or one of these fancy modern fast system call or fast fast system call instructions 20:03:03 what sort of system calls can movfuscator manage? none of them (i.e. pure computation only)? 20:03:31 ais523: I think it's pure computation 20:03:43 it only promises Turing-completness, not IO-completeness 20:04:00 though I think it can write to or read from an IO device in a busy loop if it wants to 20:04:08 as long as it's memory-mapped 20:04:26 so it may be able to do some IO, like writing on the screen 20:14:38 this thing: https://en.wikipedia.org/wiki/Baumslag%E2%80%93Solitar_group makes me feel like ordinals somehow 20:15:00 like some beautiful monstrosity 20:17:33 or more like monstrous beauty 20:18:42 `bobadventureslist http://bobadventures.comicgenesis.com/ 20:18:43 bobadventureslist http://bobadventures.comicgenesis.com/: b_jonas 20:18:54 I saw that in the morning, but forgot to list it 20:19:02 b_jonas: That's not what the Dolan 2013 paper does, nor is it what https://github.com/xoreaxeaxeax/movfuscator does. The former uses a jmp, the latter runs under a Unix-like operating system and uses the SIGILL signal handler to loop, which definitely involves non-mov code. But I do remember there was something else that was closer to what you described. 20:19:50 (I just can't seem to be able to place it now, and it's not even linked from https://esolangs.org/wiki/Mov -- wasn't it someone here that did it better?) 20:20:05 fizzie: yeah, it's probably another article, not the movfuscator 20:20:51 also, for those who missed the news, there's a new IOCCC contest, with submission deadline in 2019-03 20:21:23 Sort of related, there was the https://github.com/jbangert/trapcc thing, which does computation without executing any actual instructions, just as part of the fault handling. 20:22:20 fizzie: that technically also follows movfuscator rules :-) 20:30:10 -!- imode has quit (Ping timeout: 246 seconds). 20:39:25 b_jonas: thanks for the heads up 20:40:02 also, I'll have to look at this experimental "shelving" and "checkpointing" thing that subversion (apache svn) does to work around the problem that they're not a distributed vcs, and let you do something as a substitute of local commits not pushed to the server 20:40:14 not the same as a true dvcs, but still have to read how it works 20:41:06 it's been released for months now, but I haven't looked at the details 20:41:19 this is about subversion 1.11 for the record 20:41:36 http://subversion.apache.org/docs/release-notes/1.11 20:46:52 -!- imode has joined. 20:53:23 -!- imode has quit (Ping timeout: 245 seconds). 21:04:01 -!- imode has joined. 21:15:17 drat, I think they're trying to do something like git stashes, but without git, which is somewhat of a bad idea 21:16:30 I think that's why I shelved the whole idea as useless and decided to wait the first time it came out 21:20:39 -!- AnotherTest has quit (Ping timeout: 252 seconds). 21:35:30 I feel now I comprehend a new wisdom: strongly avoid design by comittee whenever possible 21:35:44 it makes things overlong 21:44:05 -!- imode has quit (Read error: Connection reset by peer). 21:45:15 -!- imode has joined. 21:50:18 -!- newbie has joined. 22:33:24 -!- imode has quit (Ping timeout: 250 seconds). 22:33:41 committees are good at catching mistakes but bad at suggesting fixes to them 22:35:19 which is why instead we use a bug report ticket system, with the developers free to ignore most of the flood of nonsense tickets they get, and the reporters need to take a BIT more care to make real bug reports not look like the ordinary flood of nonsense if they want the bug to get fixed 22:36:20 I know that after my first report of the sqlite3 floating point to integer comparison bug got almost ignored. it's lucky that I got a reply to it that clued me into what the mistake was. it looked like the tons of clueless reports from people who don't understand how floating-point arithmetic and formatting works. 22:36:47 it's my most useful bug report ever, and I have to make a proper short writeup about it and put it on my CV 22:37:46 it's even plausibly deniable that I found it by looking at the source code. it's definitely a bug one could have found by blackbox testing. 22:38:47 [[Bitch]] M https://esolangs.org/w/index.php?diff=59002&oldid=58981 * Helen * (+0) Fixed hello world exampl 22:41:44 b_jonas: do you have a link to the report? 22:42:28 [[Bitch]] M https://esolangs.org/w/index.php?diff=59003&oldid=59002 * Helen * (+2) Fixed hello world example* 22:43:41 -!- ais523 has quit (Quit: sorry for my connection). 22:44:02 -!- ais523 has joined. 22:44:26 ais523: Incorrect comparison between integer and floating-point number in SQLite database engine, leading to index corruption https://www.mail-archive.com/sqlite-users@mailinglists.sqlite.org/msg92963.html https://www.sqlite.org/src/tktview?name=38a97a87a6 22:44:34 thanks 22:45:13 then there's a second one about an incorrect fix to that bug, but that's less interesting 22:46:24 [[Bitch]] M https://esolangs.org/w/index.php?diff=59004&oldid=59003 * Helen * (+149) Added a link to an alternate implementation at TIO & GitHub 22:49:03 b_jonas: that's clearly a bug from the report, inserting a float between two ints left the ints out of order 22:50:55 ais523: of course. 22:51:22 but I think it doesn't really help a bug report if it starts by claiming that it's a definite bug, because all the nonsense bug reports also do that 22:51:49 in fact it seems like a slightly better strategy to ask whether it's a bug, and explain the problem clearly in a way they can tell whether it's a bug 22:51:57 I guss you want to title it something like "reproducible pragma integrity_check failure" 22:52:12 and then give the reproduction, without mentioning ints and floats 22:53:04 yes, but I have to be careful with "reproducible", lest someone tries it with an msvc compiler or slightly different feature flags, and fails to reproduce it 22:54:02 only one of the six permutations of the inserts work, which one depends on the compilation flags and stuff like that, and on msvc there was no bug at all (except for the short time when the incorrect fix was committed, but that never went to release) 22:54:32 the body does say that it's reproducible though 22:55:27 and it's not even too much of a lie, the index corruption explains why a non-transitive comparison is actually a serious bug in sqlite 22:55:51 and yes, in this mail, I didn't mention the ints and floats 22:56:16 the two sqlite devs can run a debugger just fine and localize the problem 22:56:37 or look at the internal representation of the index 22:57:26 or look at the query plan and see that the first query is iterating on the index in order 22:57:36 yet somehow manages to print the rows in the wrong order 22:57:45 in any case, they'll find the error 22:58:14 obviously it's easy to say this in retrospect, when they have found the error and fixed it 22:58:31 oh I see 22:59:07 ais523: the non-obvious part is that the ticket at https://www.sqlite.org/src/tktview?name=38a97a87a6 wasn't filed by me. sqlite is developed in a closed way, only the dev team files bug reports. my mail doesn't mention the ints and floats 22:59:39 right, I was wondering why you weren't credited 23:00:11 there's a change I made to C-INTERCAL recently that hasn't been posted in the repo because the lack-of-feature reporter didn't get back to me about how they wanted me to credit them for the idea 23:01:50 ais523: yeah, that would have made my job easier. this way I'll have to write a summary instead of having a single convenient bug ticket link that links to my email. many of their bug tickets do link to the email where it was reported. 23:02:48 write one of those blogposts that gets posted to Reddit and everyone ignores 23:02:53 I think they did link back to my mail from the ticket for a silly parsing bug 23:03:03 report, ticket, an explanation of what caused it, an explanation of how the fix works 23:03:35 ais523: no, I'll just write a simple HTML page with an explanation, perhaps with a lesson spinned about how you should be careful in perl about sort { $a<=>$b } even if none of your data are NaNs 23:03:55 b_jonas: how does that break with non-NaNs? 23:04:01 same comparison bug 23:04:26 oh, if you mix ints and floats 23:04:30 perl easily automatically numifies strings in a way that you get integers and floats mixed from the same perl code for different inputs 23:04:34 that, yes 23:04:34 I think SQLite converts any NaN value into null, as far as I can tell, anyways 23:04:57 zzo38: yes, or at least close to always (I'm not sure if there's any way to get a NaN without breaking some requirement) 23:05:47 ais523: I mean this is why it's specifically much more relevant to perl than to, say, C or python or ruby 23:06:03 despite that my first bug report was ignored by claiming that C also compares ints to floats the buggy way 23:06:39 which is true, but in C you have to be specifically working hard to get the bug because you have to explicitly make a mixed container of ints and floats, and then compare them without casting them to the same type 23:07:09 which isn't something you can write without either explicitly writing three or four different comparisons for different types, or hiding it behind something even more complicated 23:07:41 whereas in perl or sqlite, both of which offers you to numify strings easily to int or float depending on the string value, you get the bug easily without trying 23:08:36 even in ruby or python you have to work at least a little, like creating the int and float values in different places of the code, though after that the non-homogeneous container and mixed comparison is no longer strange 23:08:51 mind you, I think some of python and ruby actually compare ints to floats the correct way 23:08:54 -!- Soni has quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.). 23:09:56 which isn't too surprising given that both python3 and ruby transparently upgrades ints to bigints on an int arithmetic overflow 23:11:57 but in sqlite3 it's even worse than in perl, because sqlite3 has automatic indexes that get corrupted from thi 23:13:17 in perl, the p5p will always blame YOUR code forever without fixing the bug, and in fact it's quite possible that fixing the bug in perl _now_ will break some existing code that relies on the float-int comparison having that exact semantics 23:13:23 so it's not clear what perl should even do about it 23:13:54 I don't think it's fixable without specialcasing <=> inside sort 23:14:29 <=> between float and int is not transitive in much the same way that + on floats is not commutative 23:15:12 ais523: the problem is that sometimes you may want the correct comparison even outside of a sort 23:15:22 it's not really specific to sort 23:16:05 but <=> already returns the correct results, for floating-point values of correct 23:16:33 -!- imode has joined. 23:17:10 depending on what you mean by correct 23:17:24 if you mix ints and floats, then I think it doesn't return the correct results, 23:17:38 and if it returned the correct results from the early days of perl, that would have been better 23:17:42 you mean it should return numerically correct results rather than converting either argument? 23:17:46 that seems inefficient 23:18:11 yes, and it's not too inefficient given all the things perl do, it's only a few arithmetic operations that the cpu can do well 23:18:24 it's true that it's hard to write the code for that correctly, and hard to test that it's correct 23:18:40 but when done right, it isn't actually too inefficient as arithmetic in perl goes 23:18:46 with all the SVs around 23:23:42 -!- Soni has joined. 23:37:16 -!- Phantom_Hoover has quit (Remote host closed the connection). 23:51:35 -!- ais523 has quit (Quit: quit).