|
04:46
hurufu joined
04:47
hurufu left
04:49
hurufu joined
04:54
hurufu left
04:58
hurufu joined
08:23
[Tux] left
08:25
[Tux] joined
09:05
donaldh left
09:33
donaldh joined
|
|||||||||||||||||||||||||||||||||||||||
| lizmat | I wonder whether this is an indication of madness in the .DUMP logic, or an indication of something deeper being wrong / less than ideal | 11:53 | |||||||||||||||||||||||||||||||||||||
| m: class A { has $.a = now }; dd A.^attributes.head.DUMP | |||||||||||||||||||||||||||||||||||||||
| camelia | Use of uninitialized value element of type Any in string context. Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful. in block <unit> at <tmp> line 1 Use of uninitialized value element of type Any in stri… |
||||||||||||||||||||||||||||||||||||||
| lizmat | hmmm | 11:54 | |||||||||||||||||||||||||||||||||||||
| this is what I see: gist.githubusercontent.com/lizmat/...output.txt | 11:57 | ||||||||||||||||||||||||||||||||||||||
| ugexe | the bot only shows you the first X characters. is see the same thing as the bot plus what is in your gist | 13:49 | |||||||||||||||||||||||||||||||||||||
| s/is see/i see/ | |||||||||||||||||||||||||||||||||||||||
|
13:58
apogee_ntv joined
|
|||||||||||||||||||||||||||||||||||||||
| ugexe | i think its a problem with DUMP deduping | 14:05 | |||||||||||||||||||||||||||||||||||||
| cycle detector, whatever you wanna call it | 14:06 | ||||||||||||||||||||||||||||||||||||||
| lizmat | yeah, probably, but I don't see why it would need to dedupe anything | 14:13 | |||||||||||||||||||||||||||||||||||||
| ugexe | yeah i guess that would be more root-causey. i was guessing it was iterating over things and comparing identities in a way that cause it to walk a given chain multiple times | 14:23 | |||||||||||||||||||||||||||||||||||||
| "The root cause: ForeignCode.$!do returns the wrapped Code, but reading it through Raku method dispatch auto-boxes the underlying MVMCode into a fresh ForeignCode wrapper every single time. Walking .get_value through $!do recursively never bottoms out — each level produces a new wrapper with a new address, so DUMP's cycle detector (keyed on nqp::where) sees genuinely-distinct objects." | 14:26 | ||||||||||||||||||||||||||||||||||||||
| "Cleanest fix: give ForeignCode its own DUMP that doesn't recurse. Following the existing pattern (Bool, Numeric, etc. all have their own DUMP multis)" | |||||||||||||||||||||||||||||||||||||||
| i guess i was sort of right | 14:27 | ||||||||||||||||||||||||||||||||||||||
|
14:50
[Tux] left
14:55
[Tux] joined
|
|||||||||||||||||||||||||||||||||||||||
| Geth | raku.org: librasteve++ created pull request #320: Adopt to some Air changes |
15:21 | |||||||||||||||||||||||||||||||||||||
| raku.org/main: 6 commits pushed by librasteve++ | |||||||||||||||||||||||||||||||||||||||
| lizmat | ugexe: I'm considering ripping out the Attribute specific stuff from RakuAST::VarDeclaration::Simple and put that in a RakuAST::AttributeDeclaration class | 15:34 | |||||||||||||||||||||||||||||||||||||
| there's just too much Attribute specific stuff in VD::S and I feel it's hindering maintenance | 15:35 | ||||||||||||||||||||||||||||||||||||||
| m: class A { has $.foo::bar } | |||||||||||||||||||||||||||||||||||||||
| camelia | ( no output ) | ||||||||||||||||||||||||||||||||||||||
| lizmat | I don't think something like ^^ should be allowed | 15:36 | |||||||||||||||||||||||||||||||||||||
| thoughts ? | |||||||||||||||||||||||||||||||||||||||
| also thoughts on POPULATE | 15:38 | ||||||||||||||||||||||||||||||||||||||
| I see that if an attribute default is something more complex than just a literal value, it generates a method that will put that code in there | 15:39 | ||||||||||||||||||||||||||||||||||||||
| in the BUILDPLAN then that method will be called if the named arg isn't specified | |||||||||||||||||||||||||||||||||||||||
| I guess that's done to make sure that "self" is known, so that atttribute references work | |||||||||||||||||||||||||||||||||||||||
| however, if we codegen the entire POPULATE method from scratch, we already have a "self" there, so all attribute references would just work | 15:40 | ||||||||||||||||||||||||||||||||||||||
| so I think we can get rid of the method and its call, and just codegen the AST for the initializer into POPULATE itself | 15:41 | ||||||||||||||||||||||||||||||||||||||
| so that something like: | |||||||||||||||||||||||||||||||||||||||
| class A { has $.a = now } | |||||||||||||||||||||||||||||||||||||||
| would codegen to: "$!a = now" instead of having a method: method { return now } and then call that method | 15:42 | ||||||||||||||||||||||||||||||||||||||
| so effectively: $!a = self.method | |||||||||||||||||||||||||||||||||||||||
| I think I understand the reasoning why it was implemented this way, because Mu.POPULATE doesn't know of the context, so it needed a method call to provide the context | 15:43 | ||||||||||||||||||||||||||||||||||||||
| but now in RakuAST we don't need the BUILDPLAN (once the new POPULATE is active) *and* we don't need a method call anymore | 15:44 | ||||||||||||||||||||||||||||||||||||||
| does that make sense ? | |||||||||||||||||||||||||||||||||||||||
|
15:57
hurufu1 joined
15:59
hurufu left,
hurufu1 is now known as hurufu
17:14
hurufu left
17:15
hurufu joined
17:24
hurufu left
17:25
hurufu1 joined
17:27
hurufu1 is now known as hurufu
|
|||||||||||||||||||||||||||||||||||||||
| ugexe | i don't disagree with anything you said | 17:31 | |||||||||||||||||||||||||||||||||||||
| [Tux] |
|
18:48 | |||||||||||||||||||||||||||||||||||||
| csv-test-xs 0.014 - 0.015 | |||||||||||||||||||||||||||||||||||||||
| tux.nl/Talks/CSV6/speed4-20.html / https | |||||||||||||||||||||||||||||||||||||||
|
19:06
hurufu1 joined
19:10
hurufu left,
hurufu1 is now known as hurufu
19:57
ShimmerFairy left,
rnddim joined
20:11
apogee_ntv left,
apogee_ntv joined
20:16
apogee_ntv left
20:17
apogee_ntv joined
20:43
hurufu left
|
|||||||||||||||||||||||||||||||||||||||