01:47 ilbot3 joined 02:04 TimToady joined 02:07 stmuk_ joined 02:57 stmuk joined 07:12 zakharyas joined 07:22 zakharyas joined 08:18 domidumont joined 08:23 domidumont joined 15:58 zakharyas joined 16:38 zakharyas joined 16:43 domidumont joined 17:13 brrt joined
brrt good * #moarvm 17:14
i'm moving the tile list editing code to the tile list 17:18
and i'm going to exploit the fact that free(NULL) and realloc(NULL, size) are dwimmy 17:19
geekosaur be careful with that... they're only dwimmy in some implementations 17:23
brrt then we conditionally compile a check for others 17:24
nwc10 I forget whether I knew whether any implementations where not C89 conformat for free() or realloc() 17:27
(that might sound like it has too many negatives, but I can't think of a terser way to be accurate. What I meant was "as long as you don't assume anything that breaches what C89 says can be relied on, I *think* that you're fine. Because I think after 27 years implementations have got *most* things right) 17:28
fflush(NULL) - not so sure on that one 17:29
17:30 Ven joined
brrt i'd hope so :-) 17:32
timotimo we can just install a multi dispatch candidate for free(NULL) and realloc(NULL, size) 17:34
ilmari anything that doesn't handle free(NULL) ain't C, IMO
geekosaur the most portable and reliable codebases avoid many of those assumptions though. because it may be right for "most" configurations and then blow up in your face in one key circumstance. :( 17:35
ilmari that's almost in the same territory as sizeof(char) == 1
brrt geekosaur: we already wrap free and friends in mvm versions
so that is what i meant by conditionally compiling a check :-) 17:36
in the category of bikeshedding, i'm going to rename MVM_DYNAR_* to MVM_VECTOR_* because that is slightly more common terminolgy today 17:39
17:48 brrt2 joined 17:50 Ven joined 17:52 vendethiel joined 17:53 Ven joined 17:55 Ven joined
jnthn Yeah, if you wanted to handle platforms that didn't do NULL frees correctly, I'd say just probe for 'em and define MVM_free and friends differently. That's one of the reasons we have 'em. :) 18:03
18:07 Ven joined
brrt2 well, i have two-hour commutes for tbe forseeable future in which to implement all this 18:07
:-) 18:08
jnthn Every day? 18:10
brrt2 yep.... 18:11
jnthn 2 hours all told, or per direction? o.O
brrt2 currently per direction. after relocating, in total 18:12
jnthn Wowser. 4 hours JIT hacking a day!
Hope it won't be too tiresome doing the commute though
brrt2 hahaha yep :-D
hacking isn't really tiresome though 18:13
jnthn Relocation soon?
brrt2 hopefully
jnthn No, but...travel sure as heck can be.
brrt2 true
jnthn *sigh* what on earth is with my connection... 18:14
1 97 ms 30 ms 27 ms 192.168.0.1 18:15
...97ms to the wifi router sat 2 meters away...
brrt2 that is longish 18:16
jnthn Hm, and on next trace gets it in 1ms...but then hugely variable beyond that. wat.
nwc10 jnthn: have you got some sort of newfangled IOT fridge, and it and the router are now best mates and having a private party (with your beer) to which you were not invited? 18:36
because the numbers do seem rather drunk 18:37
brrt2 can i find easily if the last use of a value is within a given basic block?
jnthn Hm, a DU chain may help figuring that out, if you're computed them 18:38
nwc10: Nope...tried restartign the router to see if that might help 18:39
brrt2 i'd like to know if i can prove not having to store thinga :-)
and i kind of assumed that i could
jnthn "last" is a little interseting to define when there's loops? :) 18:40
arnsholt jnthn: Too many neighbours on the same/adjacent WiFi channels, perhaps?
jnthn Maybe, but more likely the thing just isn't really built to run for months on end 18:41
lizmat jnthn: DNS ?
jnthn lizmat: That was was slow as everything else :)
It seems much better now
lizmat did you do the traceroute -n
ok
arnsholt Yeah, that's usually the case for home appliances
brrt2 not-live-after is what i'm really after 18:42
jnthn I suspect it's been up a couple of months, so... :)
brrt2 decommute &
timotimo i strongly advise against getting anything "internet of things" or "smart home" in the next ~200 years
everybody in that business right now has NO BUSINESS selling electronics that decide upon the physical world to people 18:43
there is so much utterly ridiculous crap out there in that sector
jnthn You mean I shouldn't buy that toaster that prints reminder notes on my toast? 18:45
cdn1.vox-cdn.com/thumbor/WkWHZTpCA...inal.0.png
timotimo that one might be fine 18:46
just don't get a "smart doorlock" that transmits its password unencrypted over bluetooth whenever you open or close it :) 18:47
jnthn I...what... :P
timotimo or one that won't let you back in when you were outside during an automatic firmware update
lizmat jnthn: re ObjAt, how about making it a list_s rather than a str
and then have the appropriate infix:<eq> for faster comparisons ? 18:48
jnthn lizmat: It's more likely to become an integer + a reference...
timotimo or a wifi remote controllable electric outlet that makes itself reachable from outside your LAN by tunneling through a server in china, and also that server will let anybody control your outlet who knows or guesses your outlet's manufacturer-assigned ID ... and can't connect to WPA secured wifi networks
timotimo takes a deep breath
jnthn The integer being the hash code and the reference being for comparison
lizmat ok, if you have ideas about that, I'll ditch mine :-)
jnthn: that would also work for value types, I assume ? 18:49
jnthn The point of ObjAt is primiarly value types, no? :)
nwc10 timotimo: the "won't let you back in if it automatically upgrades" sounds like the sort of flaw that doesn't require you to explain software engineering to anyone to explain why it isn't fit for purpose. So how come that stuff is even on shelves? 18:50
jnthn lizmat: The key thing is to get rid of all the stringification though
nwc10 I'm not quite explaining it well - it's like the nest fiasco - it's going to break in normal service. Not when the folks from Defcon start prodding.
lizmat well, if you can quickly produce a hash of an object 18:51
as in a SHA type of thing
jnthn Quickly producing a hash is best done with integers
The problem we have now, though...is that we don't have a way of checking "did we get the right thing" back in Perl 6 space
Which is why our current ObjAt has to contain an exact specification of everything in the object 18:52
lizmat especially since we don't have true object hashes yet
but I guess that's the same issue really
jnthn Indeed. :)
Anyway, moar's hashes need...attention for at least 3 other reasons I can think of. 18:53
lizmat ok...
then I won't worry about them in the short term :-)
18:53 Ven joined
jnthn (Among them, we have to turn all strings into flat Grampheme32 arrays to use them in the hash) 18:54
18:57 domidumont joined
lizmat anyways, re RT #128931 18:57
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128931
lizmat $ 6 '.WHICH.say for ({my class A {}}(), {my class A {}}())'
A|140523652015040
A|140523652015064
jnthn: does that look like a plan for now? ^^^ 18:58
timotimo ah, i thought we finally had hash codes based on the iterator ...
jnthn lizmat: Where did you grab the number from? 18:59
lizmat nqp::objectid
jnthn Of...the type object? 19:00
lizmat jnthn: I basically removed the Mu:U candidate for .WHICH
jnthn: yup
jnthn And there's still a Mu one, unconstrained?
lizmat yup 19:01
jnthn That seems fine enough
lizmat likes fixing bugs by removing code
lemme run a spectest to be sure this doesn't break anything
Ah, all of the .WHICH tests fail now 19:02
well, one in 4
maybe I should just change those tests to make sure the values are unique 19:03
rather than checking for a specific value
jnthn ...they checked for a specific value? 19:08
D'oh :)
Yeah, that's not so robust :)
I thought they just checked what .WHICH actually worked... 19:09
I guess easy way to check they're all unique is set(@a) == @a :)
Since the set is constructed on WHICH values :) 19:10
lizmat jnthn: that's using an implementation detail of set to test :-) 19:12
jnthn I don't think so :) 19:17
WHICH is now user-space value types implement identity for object hashes, etc. 19:18
*is how
hoelzro o/ #moarvm 21:20
saw this post a few days back, thought it would be interesting for the Moar crowd: medium.com/@MartinCracauer/generat....nf0a6b5jw
21:37 kjs_ joined
jnthn Indeed, thanks :) 21:56
The Moar scheme, fwiw, is a read-test-call scheme fwiw 21:57
Which has its own bunch of trade-offs
The branch isn't so good, which is the bad news. However, the bit is in the object header, so it's most likely already in the L1 since you're already talking about the object. Each thread has its own remembered set so there's not contention around that. There is contention once on setting the bit, but after that it's read-only. But the other win is we have precise information on what objects have inter-gen refs, which makes GC times a little sho 21:59
The big downside of the Moar scheme is if you were to fork. 22:02
However...uh...fork + threads = pretty bad idea
timotimo in general, yeah
if we give the user exact control over the underlying APIs, we can say "you can fork, but you'll have to handle the threads properly. haa-haa!" 22:03
jnthn Well, if we want to get it right we should pubs.opengroup.org/onlinepubs/00969...tfork.html
timotimo oh, there's a thing for that. nice.
jnthn It's probably going to be a good bit of fun to make it work out though 22:05
Probably the best way is to stop the world (as if we were going to do a GC)
Even then it's still a headache :) 22:06