MasterDuke is travis down? 00:29
just checked and it's still working, just not reporting to the channel it seems 00:33
geekosaur maybe they're finally fixing the irc notifier 00:36
(the big problem with the current one: someone forks your repo and enables travis for it without changing the travis.yml. you get all the notifications for their builds as well as your own)
[Tux] This is Rakudo version 2016.10-24-g74d0e36 built on MoarVM version 2016.10-15-g715e39a 06:39
csv-ip5xs 3.470
test 18.482
test-t 7.512
csv-parser 20.299
nine 7.5? Now that looks good! 06:44
FROGGS often I wish I could remember what these numbers mean... 06:57
like if it is not called "test" but "p6something" or so... or that there would be comments after the numbers
samcv does anybody know if this is supposed to be possible? `open 'foo' or say "Something happened $!"Ā“ 07:45
gfldex $! is only valid in a try block. IIRC there is one implicit try block on file scope level but I have no idea what happens in a module. 07:49
`or` will coerce a Failure (open should return that as its "undefined value") to Bool what marks the exception as handled. 07:51
FROGGS wont open return Failure?
gfldex if you want to be sure not to catch nonsense have a CATCH block that matches against X::IO
samcv ah okay. just wanted to check it wasn't a regression and was the correct functionality
FROGGS what about the orelse constructs?
samcv orelse also worked in older rakudo but doesn't work now 07:52
open 'foo' orelse say/die "something happened $!"
gfldex it should return a Failure if the error is IO based.
samcv: orelse is very very loose. You may want to try //. 07:53
FROGGS $ perl6 -e 'open "foo" orelse say "something happened $_"'
something happened (HANDLED) Failed to open file /home/froggs/foo: no such file or directory
samcv: ^^
orelse topicalizes 07:54
gfldex $! should stay untouched tho 07:55
samcv: you may have spotted a rakudobug 07:56
lizmat nine: 7.5 means we lost .6 since yesterday ?
samcv $_ works. though $! it seems should work says the documentation. hopefully it's a bug gfldex, as i would like to be able to just do `something or say $!Ā“ 07:57
is there a way to get the bot to test on an older rakudo? 07:58
gfldex samcv: please file a bug report. That's one of those cases that will hardly be tested by users.
samcv ok :) cool. glad to help
gfldex one may replace or with orelse because it sounds correcterer without checking if there error is still handled properly 07:59
nine lizmat: ooh...indeed, we were at 6.8 yesterday. I've been off by 1 08:16
samcv gfldex, ok i'm logged into rt.perl.org but i can't see how to create a bug report (this is the correct location right?) 08:27
gfldex write a mail to [email@hidden.address] 08:28
samcv ah ok 08:29
dalek kudo/nom: 71a01e9 | lizmat++ | src/core/ (2 files):
Introduce Iterator.skip-one

A method that can be overriden if you're writing an iterator that can be significantly cheaper when skipping a generated value. Use case, the :10nth parameter with Str.match (aka, give me only the 10th match). By default, it is just a slightly more expensive .pull-one.
Also use let Iterator.skip-at-least-pull-one use skip-one, as well as in Rakudo::Internals.SeqSkipNFromIterator .
11:23
lizmat in benchmarks, this allows Str.match(/./,:10th) to be about 5x as fast 11:24
DrForr Ah, the Nth stuff we were chatting about at OSCON. 11:31
lizmat DrForr: indeed 11:49
iBakeCake m: MixHash.new-from-pairs( 'a' => -42 ).Bag 12:24
camelia rakudo-moar 71a01e: OUTPUTĀ«Use of Nil in string contextā¤ in block <unit> at <tmp> line 1ā¤Use of Nil in string contextā¤ in block <unit> at <tmp> line 1ā¤Found negative values for in ā¤ in block <unit> at <tmp> line 1ā¤ā¤Actually thrown at:ā¤ in block <unit> at <tmp> lā€¦Ā»
iBakeCake Kinda weird that Mixies can have negatives, but baggies can't 12:25
Or rather, kinda weird that Baggies can't have negatives, but Mixies can
AlexDaniel :O negative values 12:35
dalek ast: 37c8fd4 | (Harrison Chienjo)++ | S32-basics/pairup.t:
Add tests for pairup. (#174)

  * Add test for pairup keys and values.
  * Add test for pairup list size.
  * Use clearer test descriptions.
  * Test for exceptions.
12:37
lizmat iBakeCake: you can't have a negative number of things 12:41
iBakeCake: but you can assign a negative weigth to a thing
*weight
that's the rationale between Bag and Mix 12:42
if you want a negative number of things, use a Mix :-)
and just give it Int values
AlexDaniel ā€œclass Bag ā€“ Immutable collection of distinct objects with integer weightsā€
iBakeCake Sounds like a distinction without a difference. Here's at least what our docs say: 12:43
Bag: Immutable collection of distinct objects with integer weights
AlexDaniel ā€œClass Mix ā€“ Immutable collection of distinct objects with Real weightsā€
iBakeCake Mix: Immutable collection of distinct objects with Real weights
AlexDaniel heheā€¦
that's a very interesting issue
jnthn likes lizmat's "number of things" vs "weights" explanation, fwiw 12:44
iBakeCake As far as speculations go, for bags it clearly says negatives aren't allowed, but for mixes it says impl. may warn on negatives
AlexDaniel m: say MixHash.new-from-pairs( 'a' => NaN ) # there's also this 12:45
camelia rakudo-moar 71a01e: OUTPUTĀ«MixHash.new(a(NaN))ā¤Ā»
iBakeCake :(
m: say Bag.new-from-pairs( 'a' => NaN )
camelia rakudo-moar 71a01e: OUTPUTĀ«Type check failed in assignment; expected Int but got Num (NaN)ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
iBakeCake ah right
AlexDaniel and it's also interesting that once you have Inf/NaN in one of the weights you can no longer do anything with your Mixā€¦ 12:50
ah noā€¦ nvm 12:51
iBakeCake m: my $m = MixHash.new-from-pairs( 'a' => NaN ); $m<a> = 42; dd $m
camelia rakudo-moar 71a01e: OUTPUTĀ«MixHash $m = ("a"=>42).MixHashā¤Ā»
lizmat perhaps we should disallow NaN as a valid weight 12:52
AlexDaniel m: say Mix.new-from-pairs( ā€˜aā€™ => 42, ā€˜bā€™ => Inf).roll 12:53
camelia rakudo-moar 71a01e: OUTPUTĀ«Nilā¤Ā»
lizmat AlexDaniel: that feels like a bug 12:54
AlexDaniel dunno
iBakeCake Is this crappy? multi method AT-KEY(QuantHash:U \SELF: $key) is raw { SELF = self.new; SELF.AT-KEY($key); }
Trying to make Setties and Baggies to autovivify
m: my BagHash $b; $b<foo>++; # and fix this 12:55
camelia rakudo-moar 71a01e: OUTPUTĀ«Type check failed in assignment to $b; expected BagHash but got Hash (${})ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
lizmat iBakeCake: feels ok to me
iBakeCake cool
AlexDaniel m: say Mix.new-from-pairs( ā€˜aā€™ => Inf, ā€˜bā€™ => -Inf).total # makes sense 12:57
camelia rakudo-moar 71a01e: OUTPUTĀ«NaNā¤Ā»
FROGGS o/ 13:30
lizmat FROGGS \o 13:31
iBakeCake ZOFVM: Files=1198, Tests=130069, 130 wallclock secs (21.05 usr 3.02 sys + 2348.45 cusr 198.65 csys = 2571.17 CPU) 13:48
FROGGS jnthn: I've added a SignatureCheckHOW, but its compose method does not get called... what am I doing wrong? 13:50
iBakeCake: this gets recorded?
dalek kudo/nom: 79bb867 | (Zoffix Znet)++ | src/core/QuantHash.pm:
Make QuantHash:U AT-KEY autovivify to QuantHash object, not Hash

Currently, when attempting to do AT-KEY operations on Setties and Baggies, the autovivification is handled by Any:U.AT-KEY, which defaults to creating a Hash object. This causes issues with my BagHash $b; $b<foo>++, since an attempt to assign a Hash to BagHash variable results in an exception.
Fix by adding AT-KEY for QuantHash:U; a role that Setties and Baggies do that will create an appropriate object instead of a Hash.
13:51
ast: 207ad2b | (Zoffix Znet)++ | S02-types/ (6 files):
Test autovivification of Setties and Baggies works right
13:52
jnthn FROGGS: What were you expecting to call it?
iBakeCake FROGGS: hm? well, it's recorded in logs
So far, I see too much variance for the numbers to be overly useful. There are half a dozen test files that take forever to run and I think they skew the results, since the other 18 cores are just sitting there.,.. 13:53
FROGGS jnthn: well, NativeHOW has such a method which sets up a hash that nativecall (moar) uses.... I want to do the same
jnthn: are we calling it explicitly?
jnthn Yes, compose methods on meta-objects are called explicitly 13:54
For meta-attributes, they are called by the meta-object of the type at its compose time
FROGGS ahh, okay...
jnthn But if you consider a class, then class A { creates the ClassHOW, and the closing } is the point that we trigger the compose call 13:55
FROGGS I guess that's what I had expected...
but I think I'll just call it in the callback that resides in NativeCall.pm or so 13:56
jnthn I think for example SubsetHOW is never composed
It's just created and "is"
FROGGS yeah
jnthn Hm, if the goal is for it to take what it knows and configure some other object then it maybe doesn't belong in a compose method
Since compose is about a meta-object getting its own house in order 13:57
FROGGS it is more about configuring itself
jnthn Ah...hm
FROGGS very close to what we do in NativeHOW 13:58
dalek kudo/nom: 87bba04 | (Zoffix Znet)++ | src/core/Mix (2 files):
Make Mix/MixHash.Bag/BagHash coersion ignore negative weights

Mixies can have negative weights, but Bag/BagHash can't. If we have a Mixy with negative weights the coercion fails. Make it succeed by having the Mixies toss negative weights before the coersion.
14:08
ast: 381cf28 | (Zoffix Znet)++ | S02-types/mix (2 files):
Test Mixies with negative weights can coerse to Bag/BagHash
14:09
japhb [Tux]: Is there a publicly-visible file somewhere with at least the last, oh say 20 or so, of those csv test timings? 15:01
|Tux| yes 15:02
tux.nl/Talks/CSV6/speed4.html click on timing log
japhb |Tux|: Ah, excellent, thank you 15:04
star: use LWP::Simple; my @recent = LWP::Simple.get('tux.nl/Talks/CSV6/speed.log').lines...rds[*-1]); my ($min, $max) = @recent.min, @recent.max; my $range = max($max - $min, .1 * $min); my @bar = (0x2581 .. 0x2588)>>.chr; my $spark = @recent.map({ @bar[(($_ - $min) / $range * (@bar - 1)).round] }).join; say $spark; 15:36
camelia star-m 2016.04: OUTPUTĀ«ā–ƒā–‚ā–‚ā–ƒā–ƒā–‚ā–‡ā–„ā–„ā–…ā–„ā–ƒā–„ā–‚ā–…ā–ˆā–…ā–ƒā–‚ā–ā–‚ā–‚ā–‚ā–ā–‚ā–‚ā–…ā–ā–ā–…ā¤Ā»
timotimo cute
japhb |Tux|: Something to add to your daily postings? ^^
timotimo japhb: do you know about .minmax? 15:37
m: say ^10 .pick.minmax.perl
camelia rakudo-moar 87bba0: OUTPUTĀ«7..7ā¤Ā»
timotimo m: say ^10 .pick.minmax.perl
camelia rakudo-moar 87bba0: OUTPUTĀ«7..7ā¤Ā»
timotimo ... huh?
japhb timotimo: Didn't work right for me for some reason. Seemed to be defined only on Range?
timotimo oh, haha
m: say ^10 .roll(10).minmax.perl
camelia rakudo-moar 87bba0: OUTPUTĀ«0..9ā¤Ā»
timotimo m: say ^10 .roll(10).minmax.perl
camelia rakudo-moar 87bba0: OUTPUTĀ«0..9ā¤Ā»
timotimo m: say ^10 .roll(10).minmax.perl 15:38
camelia rakudo-moar 87bba0: OUTPUTĀ«0..9ā¤Ā»
timotimo m: say ^10 .roll(3).minmax.perl
camelia rakudo-moar 87bba0: OUTPUTĀ«1..8ā¤Ā»
timotimo m: say ^10 .roll(3).minmax.perl
camelia rakudo-moar 87bba0: OUTPUTĀ«0..3ā¤Ā»
timotimo that's better
it's defined on a list of things, it gives you a range as its result
|Tux| note that there is a bit of noise in the timing. I guess about .25sec over or under
timotimo though, tbf, if you want to unpack it into its min and its max, that'll require some accessor method calls?
japhb |Tux|: That was what the 'my $range = max($max - $min, .1 * $min);' bit was about -- the .1 was to try to not blow tiny changes out of proportion, so the full range of the spark line was at *least* 10% of the $min. 15:40
timotimo: Yeah, not a savings then.
That .1 can be tuned to match the noisiness of the data set.
Or we can just arbitrarily choose a minimum of .25 if that timing noise is truly scale-independent. 15:41
timotimo japhb: you can save a few characters by using ^7 + 0x2581 instead of 0x2581 .. 0x2588
japhb (Or apply both minimums, actually)
timotimo: golfing welcome. :-)
timotimo oh, i'm not in the mood for a full golfing
just a tiny bit
japhb Fair enough. 15:42
It would be ^8 instead of .7
Er ^7
timotimo sorry, yes. 15:43
i'm not wearing my glasses! :P
hold on
oh yeah, you're totally right 8)
japhb star: use LWP::Simple; my @recent = LWP::Simple.get('tux.nl/Talks/CSV6/speed.log').lines...rds[*-1]); my ($min, $max) = @recent.min, @recent.max; my $range = max($max - $min, .1 * $min, .25); my @bar = (^8 + 0x2581)>>.chr; my $spark = @recent.map({ @bar[(($_ - $min) / $range * (@bar - 1)).round] }).join; say $spark; 15:44
camelia star-m 2016.04: OUTPUTĀ«ā–ƒā–‚ā–‚ā–ƒā–ƒā–‚ā–‡ā–„ā–„ā–…ā–„ā–ƒā–„ā–‚ā–…ā–ˆā–…ā–ƒā–‚ā–ā–‚ā–‚ā–‚ā–ā–‚ā–‚ā–…ā–ā–ā–…ā¤Ā»
japhb ^^ both suggestions applied
jnthn m: uniname 0x2581 15:45
camelia ( no output )
jnthn m: say uniname 0x2581
camelia rakudo-moar 87bba0: OUTPUTĀ«LOWER ONE EIGHTH BLOCKā¤Ā»
jnthn m: say uniname 0x2582
camelia rakudo-moar 87bba0: OUTPUTĀ«LOWER ONE QUARTER BLOCKā¤Ā»
jnthn TIL :P 15:46
timotimo japhb: are you on a linux system, btw? have you ever experimented with rendering to a window that has an actual alpha channel? 15:49
twitter.com/loltimo/status/789060624324128769 <- japhb 15:50
geekosaur or just enumerate visuals and pick one with ARGB. you can find sample code in most programs that use opengl directly 16:01
timotimo geekosaur: you're very free to patch SDL2 to allow that :)
[Coke] use iterm2, render actual gifs into your output 16:05
timotimo hehe 16:08
lizmat iBakeCake: re 79bb8671454171bed3ec , I wonder what autovivification means for immutables such as Set,Bag,Hash 16:15
m: my Bag $b; $b<a>++
camelia rakudo-moar 87bba0: OUTPUTĀ«Cannot resolve caller postfix:<++>(Int); the following candidatesā¤match the type but require mutable arguments:ā¤ (Mu:D $a is rw)ā¤ (Int:D $a is rw)ā¤ā¤The following do not match for other reasons:ā¤ (Bool:D $a is rw)ā¤ (Bool:U $a is rwā€¦Ā»
lizmat m: my BagHasH $b; $b<a>++
camelia rakudo-moar 87bba0: OUTPUTĀ«===SORRY!===ā¤Type 'BagHasH' is not declared. Did you mean 'BagHash'?ā¤at <tmp>:1ā¤------> my BagHasHā $b; $b<a>++ā¤Malformed myā¤at <tmp>:1ā¤------> myā BagHasH $b; $b<a>++ā¤ā¤Ā»
lizmat m: my BagHasH $b; $b<a>++ 16:16
camelia rakudo-moar 87bba0: OUTPUTĀ«===SORRY!===ā¤Type 'BagHasH' is not declared. Did you mean 'BagHash'?ā¤at <tmp>:1ā¤------> my BagHasHā $b; $b<a>++ā¤Malformed myā¤at <tmp>:1ā¤------> myā BagHasH $b; $b<a>++ā¤ā¤Ā»
lizmat m: my BagHash $b; $b<a>++
camelia ( no output )
lizmat I guess it's still better than it trying to make a Hash 16:17
dalek ast: f06324c | (Sterling Hanenkamp)++ | S12-subset/subtypes.t:
Test using fail in subset for custom message (#175)
ast: c6e3283 | (Zoffix Znet)++ | S12-subset/subtypes.t:
Add test description
16:19
ast: 455a94c | (Sterling Hanenkamp)++ | S32-array/splice.t:
Resolves #164: tests callable args on splice (#176)
16:20
iBakeCake There's one case I've not thought of tho 16:22
m: my Bag $b; try $b<a>++; dd $b
camelia rakudo-moar 87bba0: OUTPUTĀ«Bag $b = ().Bagā¤Ā»
iBakeCake So I think I'll add an AT-KEY to immutables that throws 16:23
on :U immutables
lizmat ah, what would be the sig for that ? 16:25
I came up with:
SELF.^name.chars == 3 # shoddy heuristic for Set/Bag/Mix
?? die "Cannot auto-vivify an immutable {SELF.^name}"
!! (SELF = self.new).AT-KEY($key)
iBakeCake Well, they'd have to go into Set.pm, Bag.pm, ....
Oh, yeah, that;'s better
lizmat ok, will commit :-)
iBakeCake lizmat++ thanks
dalek kudo/nom: b1f77c8 | lizmat++ | src/core/QuantHash.pm:
Immutable Set/Bag/Mix cannot be auto-vivified
16:27
lizmat goes back to optimizing Str.match 16:29
a little heads up on that: I had to scrap my original approach as it in the end did not bring the optimizations I was going for
now looking at being 1.5 to 5x faster, depending in which named parameters are (not) specified 16:30
dalek ast: c17a0bf | (Zoffix Znet)++ | S02-types/ (3 files):
Adjust exceptions thrown by autovivification of immutable QuantHashes

The tests were added today as part of testing new autovivification behaviour of QuantHashes[^1]. However, that work did not handle immutable QuantHashes well, which was later fixed[^2].
Adjust tests to accomodate that fix.
  [1] github.com/rakudo/rakudo/commit/79...e56d6665f5
  [2] github.com/rakudo/rakudo/commit/b1...edb69067bc
17:55
nine Oh boy, I'd not have thought that it would be _that_ easy to prove NativeCall leaking memory. I literally hit it by writing a single LOC 17:56
I guess since the unbounded growth is in the "still reachable" category, this is a case for the heap profiler 18:03
Looks like TakeStringCallback(sub (Str $x) {}) for ^10000; is accumulating frames while TakeStringCallback(&swallow-str) for ^10000; is not. 18:26
FROGGS o/ 18:32
nine my $swallower = sub (Str $x) {}; TakeStringCallback($swallower) for ^10000; doesn't accumulate frames either. 18:35
jnthn nine: If you pass --full-cleanup to Moar, does valgrind still show it as leaked/still reachable? 18:38
nine That is with --full-cleanup (which is in perl6-valgrind-m)
jnthn Hmm...that means the GC *didn't* nom it 18:42
Meaning that you might have more luck with massif
(Since the heap profiler is about GC-able things) 18:43
nine moar-ha shows the frames as: <anon> (08-callbacks.t:72) 3,532,672 bytes
jnthn o.O 18:45
It maybe is more useful than I suspected, then ;)
What does path say about such a frame?
nine And that line is exactly: TakeStringCallback(sub swallow-str(Str $x) {}) for ^10000;
I haven't figured out yet how to refer to those frames in moar-ha
They are kind of nameless :) 18:46
jnthn Hmm
Could you try it as ^10000 .map(sub xxx { TakeStringCallback(...) }) 18:47
In case it's that particular closure?
nine ^10000 .map(sub xxx { TakeStringCallback(sub swallow-str(Str $x) {}) }) doesn't seem to leak 18:51
jnthn o.O
nine Probably because it doesn't even run :) Should pay more attention
Root (0) --[ Inter-generational Roots ]--> Inter-generational Roots (5) --[ Index 4224 ]--> xxx (08-callbacks.t:73) (Frame) (202616) 18:56
jnthn Do all the examples look like that? 18:59
That one means that the frame got promoted to gen2 and then had something assigned to it that was in the nursery, so ended up in the inter-gen root set 19:00
nine Yes, allways the same 19:01
mst jnthn: blog.faraday.io/saved-by-the-compil...and-rayon/ is really quite interesting if you didn't already see it 17 times 19:04
jnthn nine: Very interesting.
nine: If you do a normal --profile and look at the GC runs, do we ever do a full collect? 19:05
mst: No, nobody pointed me at it yet
timotimo it could be we don't consider those things consuming memory so we don't go for a full one? 19:06
jnthn Well, you just did but... :)
nine The profiled code did 6 garbage collections. There were 0 full collections involving the entire heap.
The profiled code did 62 garbage collections. There were 0 full collections involving the entire heap. 19:09
jnthn mst: Yes, interesting indeed 19:10
nine: Hmmm
That's...interesting.
mst jnthn: seemed like the sort of thing that might Give You Ideas 19:11
nine Why would those frames even be promoted? They're useful only during that single very short call.
jnthn Yeah, something (TM) must be keeping them alive 19:12
It'd be interesting to catch a young one
That didn't end up in gen2 yet
Urgh, cold--...afk for a bit 19:13
nine jnthn: ah, I've been through that last week. Hope you'll be better soon 19:15
Root (0) --[ Thread Roots ]--> Thread Roots (4) --[ Native callback cache target ]--> BOOTCode (Object) (423322) --[ Unknown ]--> xxx (08-callbacks.t:75) (Frame) (17895) 19:33
timotimo so it's just a cache? 19:38
nine I can't find any code that removes anything from the Native callback cache, which would be a rather simple explanation :) 19:42
timotimo yeah, totally legit 19:43
nine The cache seems to be just a hash. This raises the question of how we could know that we should remove something from this cache. 19:44
timotimo we have one kind of weak hash in moar already, it's for the serialization contexts i think 19:45
nine Good to know. Will have a look 19:56
timotimo SCWeakHash might be the right word to look for 19:57
i have no idea how it's actually built to do its weakness
we do want to have general weakhash objects in the future
or, weak references in general
nine That's odd. I can't find any place in the code that actually assigns to instance->sc_weakhash. 20:05
timotimo probably uses something roundabout 20:06
src/6model/sc.c has access
it all goes through the HASH_ macros 20:07
nine Yep. I find a couple of places which access, I find where it's destroyed and I find where the mutex that protects it is initialized. But not initialization of the hash itself.
dalek p: 56a637c | (David Warring)++ | examples/rubyish/rubyish.nqp:
[examples/rubyish] adapt to latest HLL::Grammar.O precedence declarations
20:08
lizmat decommute& 20:15
timotimo 429: MVM_HASH_DESTROY(hash_handle, MVMSerializationContextBody, instance->sc_weakhash);
nine timotimo: yes, that's where it's destroyed. But it must be allocated somewhere? 20:17
timotimo i expect HASH_BIND will initialize the hash upon first writing to it? 20:19
VMHash uses uthash, too. it doesn't have an initialize function, either
nine You're right! 3rdparty/uthash.h:163 20:21
Ok, so the weakness of sc_weakhash just comes from SCRef not marking the hash entries in its gc_mark. 20:25
But that doesn't work as well for the Native callback cache. I'd guess that the cache hides some missing MVMROOT 20:26
timotimo OK, but it somehow also has to understand when the SCRef has died
otherwise the pointers in the hash will point into freed memory
nine The SCRef removes itself from instance->sc_weakhash in its gc_free 20:29
timotimo oh 20:33
ok, that's definitely not a sensible thing to give other things :D
nine We'd have to wrap the callback object in a kind of WeakHashEntry that could do this trick. 20:38
MasterDuke would anybody mind testing out my most recent attempt at removing BOOTSTRAPATTRs? 21:15
github.com/MasterDuke17/rakudo/tre...nd_attempt
i think it passes both moar and jvm spectests, but i'd appreciate some independent verification 21:17
FROGGS omg, it works: gist.github.com/FROGGS/bd727a2408e...c4b8765a8c 22:15
.tell jnthn I got it to work now: gist.github.com/FROGGS/bd727a2408e...c4b8765a8c 22:16
yoleaux2 FROGGS: I'll pass your message to jnthn.
timotimo oh my gosh YES! 22:17
FROGGS :o) 22:20
I knew you liked it
timotimo can we also use function pointers returned from functions? 22:26
FROGGS you can cast these using a signature, yes
since a while
say nativecast( :(int8 --> Str), $something )(42) 22:27
$something would be a ptr
next would be to allow Perl 6 subs in attribute slots and call them from C 22:28
dalek p: ec44da2 | (David Warring)++ | examples/rubyish/rubyish.nqp:
[examples/rubyish] cut/pasto in comments
timotimo whoa 22:29
i did not realize that 22:30
FROGGS gnight 22:35
dalek p: 7cdbcea | (David Warring)++ | examples/rubyish/rubyish.nqp:
[examples/rubyish] simplify heredoc tokens
22:50