Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-11-23

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 daniel-s joined #perl6
00:08 thou joined #perl6
00:12 Psyche^_ joined #perl6
00:13 Entonian joined #perl6
00:20 rurban1 joined #perl6
00:46 raiph joined #perl6
00:49 * woolfy and lizmat back from NPW pre-conf social at Fermentoren.  It was nice.  Seven people (ehm was it eight?) and lots and lots of special beers.
00:50 jnthn mmm...beers :)
00:50 jnthn That to oel imperial stout was very nice indeed.
00:51 woolfy Hmm, I did not like that one very much.
00:51 woolfy But it is good to see you found your hotel!
00:51 woolfy I did like the tripel-style beer, and the gueuze beer as well.
00:52 woolfy I had six beers and I gave away two because I did not like them and I traded another one for another beer.
00:53 woolfy This was an interesting evening.  And somebody might have a surprise for jnthn++ tomorrow.  Not me.  jnthn should watch the lightning talks for signs of NQP.
00:53 jnthn o.O
01:14 sizz joined #perl6
01:20 rurban1 joined #perl6
01:36 prevost joined #perl6
01:37 FROGGS joined #perl6
01:38 bonsaikitten joined #perl6
01:38 bonsaikitten joined #perl6
02:19 pdurbin joined #perl6
02:35 btyler joined #perl6
02:45 raiph joined #perl6
02:50 araujo joined #perl6
03:12 lizmat_ joined #perl6
03:13 dalek rakudo-star-daily: 1f5d4c0 | coke++ | log/ (5 files):
03:13 dalek rakudo-star-daily: today (automated commit)
03:13 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/1f5d4c092c
03:13 dalek perl6-roast-data: c43e34a | coke++ | p (2 files):
03:13 dalek perl6-roast-data: today (automated commit)
03:13 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/c43e34a0e7
03:13 dalek perl6-roast-data: 8021c58 | coke++ | / (3 files):
03:13 dalek perl6-roast-data: today (automated commit)
03:13 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/8021c58439
03:22 rurban1 joined #perl6
03:47 lowpro30 joined #perl6
04:07 preflex joined #perl6
04:21 dalek p6-pb: 60c6698 | (Geoffrey Broadwell)++ | lib/Metamodel/Perlable.pm:
04:21 dalek p6-pb: Fix type rendering in PerlableAttribute.perl()
04:21 dalek p6-pb:
04:21 dalek p6-pb: Switch to showing the container_descriptor's .of type instead of the
04:21 dalek p6-pb: attribute's .type, so that array attributes will render correctly.
04:21 dalek p6-pb: For example, an Int array attribute will now render as 'has Int @.array'
04:21 dalek p6-pb: rather than 'has Positional @.array'.
04:21 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/60c66986c1
04:21 dalek p6-pb: 34fcd84 | (Geoffrey Broadwell)++ | lib/PB/Binary/Writer.pm:
04:21 dalek p6-pb: Packed repeated fields are always LENGTH_DELIMITED
04:21 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/34fcd84915
04:21 dalek p6-pb: 593e24f | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
04:21 dalek p6-pb: Display boolean pb_packed trait without redundant '(True)'
04:21 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/593e24fb64
04:21 dalek p6-pb: f0f3e45 | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
04:21 dalek p6-pb: Rename generic $name variable to $class-name
04:21 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/f0f3e45f4a
04:21 dalek p6-pb: ef8832c | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
04:21 dalek p6-pb: Properly handle repeated field attribute generation
04:21 dalek p6-pb:
04:21 dalek p6-pb: Create our own container_descriptor and auto_viv_container to properly
04:21 dalek p6-pb: handle array-valued (repeated field) attributes.
04:21 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/ef8832ca14
04:52 xinming joined #perl6
04:53 rurban1 joined #perl6
04:57 xinming joined #perl6
05:03 xinming joined #perl6
05:06 benabik joined #perl6
05:13 nopzi joined #perl6
05:13 xinming joined #perl6
05:15 nopzi left #perl6
05:48 btyler joined #perl6
05:53 dalek p6-pb: 88ab375 | (Geoffrey Broadwell)++ | t/data/google-docs/test (4 files):
05:53 dalek p6-pb: Add test protos from Google's offical encoding doc
05:53 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/88ab375903
05:53 dalek p6-pb: 2c3c677 | (Geoffrey Broadwell)++ | t/generator.t:
05:53 dalek p6-pb: Replace stub t/generator.t with a new one
05:53 dalek p6-pb:
05:53 dalek p6-pb: Test parsing of encoding doc test messages, and subsequent message
05:53 dalek p6-pb: class generation, .^perl()ization, and use to write real protobufs.
05:53 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/2c3c67740b
05:56 japhb_ preflex: ask jnthn In https://github.com/samurais​am/p6-pb/commit/2c3c67740b , the "nok ::('Test1') ~~ Failure" style tests don't work right, even though Test1.new() works fine.  What am I doing wrong in gen-class() ( https://github.com/samuraisam/p6-pb/blo​b/master/lib/PB/Model/Generator.pm#L39 )?
05:56 preflex Consider it noted.
05:57 japhb_ ... and with that, I'm AFK to let my brain rest.  :-)
06:04 hummeleB1 joined #perl6
06:29 SamuraiJack joined #perl6
06:45 xenoterracide joined #perl6
06:52 Entonian joined #perl6
06:53 bloonix joined #perl6
06:54 Bucciarati joined #perl6
06:57 timotimo the urbit person found my mention of them in the irclog and liked it :)  posted it on their blog
06:57 * timotimo waves
06:57 darutoko joined #perl6
06:58 woolfy1 joined #perl6
07:01 bloonix joined #perl6
07:04 kaare_ joined #perl6
07:05 Bucciarati joined #perl6
07:23 moritz japhb_: what does ::('Test1').^mro.perl say?
07:37 dylanwh joined #perl6
07:39 Lorn joined #perl6
07:41 simcop2387 joined #perl6
07:43 daveec_ joined #perl6
07:43 davecc_ joined #perl6
07:46 japhb_ moritz: (Failure, Any, Mu) -- it is indeed a Failure, which indicates that the symbolic lookup is failing.
07:47 japhb_ Actually, I wonder if https://github.com/samuraisam/p6-pb/blo​b/master/lib/PB/Model/Generator.pm#L154 is wrong.
07:47 japhb_ That was some of the original code, and I never looked at it carefully.
07:48 japhb_ On the other hand, I'm still weirded out that Test1.new() works even though ::('Test1') doesn't.
07:57 FROGGS japhb: you should export it without the amp, no?
07:57 FROGGS at least classnames
07:58 * japhb_ tries just removing that bit
08:02 dalek p6-pb: 49c7d75 | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
08:02 dalek p6-pb: Fix a Generator export bug
08:02 dalek p6-pb:
08:02 dalek p6-pb: moritz++ and FROGGS++ for reminding me to look at ancient code critically.
08:02 dalek p6-pb: review: https://github.com/samurais​am/p6-pb/commit/49c7d75170
08:02 FROGGS \o/
08:03 japhb_ preflex: tell jnthn Nevermind, bug found.
08:03 preflex Consider it noted.
08:03 * japhb_ wonders why it was ever like that in the first place.  Working around an old Rakudo bug, perhaps?
08:03 FROGGS possible, but I don't know such a bug :o)
08:04 FROGGS and, well, we don't have EXPORT that long I think
08:05 * japhb_ shrugs
08:06 japhb_ In any case, with that stuff worked out, I think the basics of writing binary protobufs is done except for the float/double stuff.
08:06 FROGGS ui
08:06 daveec joined #perl6
08:06 japhb_ Time to shift back to reading the binary PBs next time I have tuits.
08:06 davecc joined #perl6
08:07 japhb_ sleep &  # Much happier for not having a bug nagging me, moritz++ and FROGGS++ for getting me better sleep.  ;-)
08:08 timotimo :)
08:08 ssutch joined #perl6
08:11 FROGGS I just don't know how I could use your module (or for what I'd needed it), but it sounds interesting :o)
08:11 timotimo well what do you use protocol buffers for?
08:12 timotimo serializing data and reading it back
08:13 FROGGS but that one is a google specific protocol?
08:14 timotimo no
08:14 timotimo Google makes the library
08:14 timotimo many people use it
08:14 FROGGS ahh
08:14 timotimo you specify the protocol and it generates code
08:14 FROGGS but I guess it is used in some google APIs ?
08:14 timotimo i believe so
08:14 [particle] joined #perl6
08:14 timotimo internally at least
08:15 timotimo will there be recordings of the npw talks on the net?
08:16 araujo joined #perl6
08:17 FROGGS I guess not
08:25 Rotwang joined #perl6
08:25 FROGGS jnthn: I dunno how to code-gen! /o\
08:27 FROGGS jnthn: for next/redo/last LABEL in while: I think I should have to goto to the next/redo/done-label that is already in place for the while loop
08:28 FROGGS jnthn: the problem is that goto only supports an identifier after the keyword, so I have to stash the label somewhere, but where?
08:29 FROGGS jnthn: the control:: next/redo/last is hit first, so that would create a new label, emit a "goto label_last16" for example and need to stash it, so the while loop can emit that label name too
08:29 sqirrel joined #perl6
08:30 FROGGS jnthn: I just fail to stash that label
08:32 woolfy1 left #perl6
08:41 FROGGS at least I am to 97% sure that this is the correct approach
08:53 xinming joined #perl6
09:02 xinming joined #perl6
09:03 daveec joined #perl6
09:03 davecc joined #perl6
09:04 telex joined #perl6
09:04 FROGGS[mobile] joined #perl6
09:07 slavik joined #perl6
09:07 nwc10 quick, everyone change S17
09:08 diakopter O_O
09:08 timotimo is jnthns talk happening at this moment?
09:09 nwc10 the scheudle thinks so: http://act.yapc.eu/npw2013/talk/5187
09:09 xenoterracide joined #perl6
09:12 timotimo there are no live streams, right?
09:29 sqirrel joined #perl6
09:34 lizmat joined #perl6
09:42 masak good antenoon, #perl6
09:43 * masak just realized that Perl 6 follows Bertrand Meyer's "Uniform Access Principle"
09:44 rindolf joined #perl6
09:44 masak "All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation." -- http://martinfowler.com/bliki​/UniformAccessPrinciple.html
09:44 masak that's exactly what the '$o.attr = 42' syntax does.
09:44 timotimo yup
09:45 moritz and, IMHO more importantly, that you access attributes as methods
09:45 moritz unlike js, where you have to know whether to write obj.thing or obj.thing()
09:47 masak I... I both like and dislike that distinction.
09:47 masak it's *very* nice sometimes to be able to talk about the method as a noun.
09:48 masak but I can agree with you that obj.think may not be the right huff length for it.
09:48 timotimo it would be nifty if we could just write $foobar.&method
09:48 masak that... doesn't really fit, though.
09:48 timotimo i was about to write &foobar.method, but that's just as wrong
09:55 moritz the problem with talking about methods as nouns is that it can break a classes contract
09:55 moritz you can do my $meth = $obj1.^can('meth')[0]; $meth($obj2)
09:56 moritz where $obj2 is a subclass of the class of $obj1 and has overwritten 'meth'
09:56 masak that's equally possible with upcasts.
09:56 moritz and now you're calling the parent's method on the child, and break polymorphism
09:56 masak Rectangle r = (Rectangle)square;
09:56 masak et voila
09:57 masak if you are overriding methods in that way, and end up in trouble for it, you are breaking Liskov.
09:57 moritz but that's still polymorphic
09:57 masak I honestly don't see the difference.
09:57 berekuk joined #perl6
09:57 masak r is now a Rectangle "view" of the Square.
09:57 moritz if you call r.area(), it will still call square's area() method, not Rectangle's area() method
09:58 masak I contest that.
09:58 masak then what would be the point of upcasts?
09:58 moritz which language are we talking about now?
09:58 masak Java.
09:58 masak or any other statically typed language.
09:58 masak C# works the same.
09:58 moritz I'm pretty sure that in C++ for virtual classes you still get the most derived virtual method
09:58 masak interesting.
09:58 moritz *virtual methods
09:58 moritz sorry
09:59 moritz that's the whole point of OO polymorphism, no?
09:59 masak well, I won't know how C++ behaves until I've tried it.
09:59 masak but I'm 100% sure if you upcast something in Java, it calls Rectangle's method, not Square's.
10:00 masak you're basically saying "OK, let's make fewer assumptions about the type of this object for a while".
10:00 masak and Liskov is meant to make you safely be able to do that.
10:01 aindilis joined #perl6
10:01 moritz no
10:01 moritz that's not what Liskov says
10:01 moritz Liskov says that if you subclass, it must be save to call the subclassed metho
10:01 moritz d
10:02 moritz not "If you subclass, and there is a more specific method, it's fine to call the more general method"
10:04 masak define "safe".
10:05 masak "It states that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S [...] without altering any of the desirable properties of that program (correctness, task performed, etc.)."
10:05 masak what that description is talking about is (quite directly) an upcast.
10:06 masak i.e. Rectangles should behave like Squares (if the former subclasses the latter)
10:06 moritz doesn't it say "Squares should behave like Rectangles"?
10:07 masak yeah.
10:07 masak if they subclass Rectangles.
10:08 moritz let my try a different approach
10:08 moritz the normal API for calling a method in Perl 6 is  $obj.area
10:08 rurban1 joined #perl6
10:08 moritz so I interpret Liskov's principle as saying $square.area should return the same as $rect.area
10:09 jnthn ohhai
10:09 preflex jnthn: you have 2 new messages. '/msg preflex messages' to read them.
10:09 masak jnthn! \o/
10:09 jnthn Grrr...busted winner failed one of my live demos!
10:09 moritz not as $square.Rectangle::area must return the same as $rect.area
10:09 masak jnthn: "busted winner"?
10:10 moritz sounds like loser to me :-)
10:10 jnthn masak: When winner was implemented based on the select thing I did (well, not based enough on the select thing I did ;)) seems we got a race cond... :(
10:10 masak moritz: a restatement I like of Liskov is "if you think you have a T, it should not matter in any way that you actually have an S"
10:10 jnthn Will have to hunt it down...
10:10 jnthn And also try and boil my example down to a test case...
10:10 masak jnthn: that's just a negative result in research... :)
10:10 masak that's a good thing.
10:11 masak moritz: do you agree with that restatement?
10:11 moritz masak: the "in any way" is too strict, IMHO. That would mean that $obj.^name would have to return the same thing too
10:11 moritz masak: so there must be some kind of "for certain desirable operations" restriction
10:12 moritz masak: and our whole discussion boils down to: are upcasts part of the set of desirable operations
10:12 masak moritz: ok, for the sake of discussion, let's exclude meta things.
10:12 masak but upcasts should be OK.
10:12 moritz upcasts are a meta thing
10:12 masak because they are just making fewer type assumptions about an object.
10:12 masak no, not as in MOP.
10:12 moritz well, let's stay at the Perl 6 example
10:13 moritz if you have a   sub dealwith(Rect $x) { ... }
10:13 masak Perl 6 behaves like you say, actually calling the method based on the dynamic type.
10:13 moritz then if that does an upcast, it needs to go meta
10:13 masak Perl 6 doesn't really have upcasts in that sense.
10:14 masak in the Java sense.
10:14 moritz well, it has $x.Rect::area
10:14 masak because Java distinguishes between "static type" and "runtime type".
10:14 moritz and if &dealwith used that instead of .area, people would say "that's stupid, you break subclassing"
10:15 masak p: class Rect { method area { say "rect" } }; class Square is Rect { method area { say "square" } }; Square.new.Rect::area
10:15 camelia rakudo-parrot 796969: OUTPUT«rect␤»
10:16 moritz so my point is that explicit upcasing in a language that doesn't distingiuish static types and runtime types is likely to mess things up
10:16 moritz and that say "Liskov" is no good defense for such behavior
10:16 moritz *upcasting
10:16 moritz *saying
10:17 jnthn FROGGS: On labels, I'd pondered using a QAST::WVal to refer to the label object, maybe making it an extra child or something for while/repeat/whatever...
10:19 jnthn Upcasts imply that you're doing some static compile-time decision making by type...
10:19 masak moritz: yes, it *is* likely to mess things up.
10:19 jnthn Not sure there's a use otherwise...
10:19 * jnthn doesn't quite see Square.new.Rect::area as an upcast...
10:19 masak moritz: more exactly, the Rectangle/Square example doesn't have a nice solution (with inheritance), unless you make the objects immutable.
10:22 moritz masak: right
10:23 moritz jnthn: well, it's the closest we can get to an upcast in Perl 6
10:23 jnthn *nod*
10:23 jnthn It plays the same kinda role.
10:23 kivutar joined #perl6
10:25 dalek roast: bcdb5a5 | (Elizabeth Mattijsen)++ | S17-concurrency/channel.t:
10:25 dalek roast: .for now is a Supply method
10:25 dalek roast: review: https://github.com/perl6/roast/commit/bcdb5a5c51
10:29 jnthn timotimo: Oops. Looks like I may have introduced the bug while fixing the other bug...
10:30 FROGGS[mobile] jnthn: ahh, I should create the unique label name in the actions already... that would solve it!
10:31 jnthn FROGGS[mobile]: Well, you need an object I think so you can shove it in a WVal...
10:31 jnthn And then your uniqueness is just normal object referene semantics...
10:33 timotimo jnthn: glad to know i'm not 100% at fault :)
10:33 jnthn timotimo: Why is invoke_right not used for the wild case?
10:33 jnthn Seems we get a channel test failing due to that...
10:34 jnthn $action = { $wild_done(:k($_)); } # is the one I mean
10:36 dalek rakudo/nom: 0b79cb9 | jonathan++ | src/vm/jvm/core/asyncops.pm:
10:36 dalek rakudo/nom: Fix another winner bug.
10:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0b79cb9af2
10:47 timotimo jnthn: oh, good question. must have overlooked it :(
10:47 tgt joined #perl6
10:50 jnthn timotimo: Got a fix here
10:51 dalek rakudo/nom: b6eee1f | jonathan++ | src/vm/jvm/core/asyncops.pm:
10:51 dalek rakudo/nom: Fix done * { last }.
10:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b6eee1fb66
10:52 timotimo jnthn: the talk's finished, right?
10:52 jnthn aye :)
10:52 jnthn .oO( no, I'm patching live on stage :P )
10:54 masak stranger things have happened.
10:54 timotimo was it good, despite my bug-ridden implementaiton of WINNER?
10:55 sjn jnthn, lizmat: http://pad.hackeriet.no/p/p6-deploy
10:56 xenoterracide joined #perl6
10:57 sjn jnthn, lizmat: those are the notes tadzik and I made this summer when he was in Oslo and discussed deployment things
10:57 lizmat cool, will have a look when I'm awake again
10:57 jnthn timotimo: Well, it was first talk of the day so...earrrly :P
10:57 jnthn But I think it was OK
11:02 lizmat it was :-)
11:04 masak jnthn++ # OK talk
11:05 tadzik ok 1 - talk
11:07 Woodi hej, hej :)
11:07 jnthn masak: If you'd hopped on the train over the bridge, you coulda seen it :P
11:07 jnthn um, assuming that's where you are :)
11:08 Woodi I wonder if $meth = $obj1.^can('meth')[0]; $meth($obj2) should be allowed to extract method CODE and do not do things via virtual methods table...
11:10 Woodi hmm, in Perl it should be allowed but not respecting inheritance is strange...
11:10 jnthn Woodi: It uses the method table to give you back the code...
11:10 Woodi yes, exactly :)
11:10 jnthn So you'll get most derived...
11:11 jnthn oh, two different objects...
11:11 jnthn Yeah, I can kinda see what you're saying. But if you've gone out of your way to not do a virtual dispatch... :)
11:12 Woodi probably in meta-reflection-things presence all is allowed, just not pure OO style...
11:13 Woodi anyway 'upcasting' means reaching up to the roots ?
11:14 jnthn Mostly, viewing an object as if it was one of its parent types
11:15 * tadzik encounters http://www.pmichaud.com/toast/
11:26 Woodi hej, Mrs. B.Liskov had "promise piplining" in 1982! and atomic ops too? lol?
11:26 lizmat ".... cause the flaming SPTs to suddenly eject from the toaster. Unfortunately, this did not occur. "  :-)
11:28 jnthn It's still a funny mental image... :)
11:29 gfldex joined #perl6
11:43 eternaleye joined #perl6
11:44 kurahaupo joined #perl6
11:46 rindolf joined #perl6
11:47 masak Woodi: I don't think that's how the word "lol" is used... ;)
11:47 masak jnthn: re bridge -- I considered it. but I can haz a cold :/
11:48 jnthn masak: awww
11:48 lizmat ah, so it was *you* who infected me!
11:48 jnthn masak: Though, you'd be in good company...
11:48 lizmat :-)
11:52 FROGGS humm, that seems not all to bad... Error while compiling op control: get_bool() not implemented in class 'LABEL'
11:53 * FROGGS .oO( "To boldly go where no man has gone before... " )
11:53 jnthn FROGGS: We may want to put label on as a named arg
11:53 jnthn Like xor gets false
11:53 jnthn FROGGS: 'cus while and friedds are already var-arg (2 or 3 args)
11:53 FROGGS it is passed as a named, yes
11:54 jnthn oh, cool
11:54 FROGGS :o)
11:57 berekuk joined #perl6
12:04 spider-mario joined #perl6
12:10 rurban1 joined #perl6
12:16 sqirrel joined #perl6
12:31 dalek rakudo/nom: ea77e4f | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Supply (2 files):
12:31 dalek rakudo/nom: .tap now has done/quit named parameters
12:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ea77e4fd25
12:44 dalek roast: 635b34a | (Elizabeth Mattijsen)++ | S17-concurrency/ (2 files):
12:44 dalek roast: Bring .tap tests up to spec
12:44 dalek roast: review: https://github.com/perl6/roast/commit/635b34a25c
12:46 denis_boyun joined #perl6
13:00 dalek rakudo/moar-support: 23777bb | jonathan++ | src/vm/moar/ (2 files):
13:00 dalek rakudo/moar-support: Implement p6store for MoarVM.
13:00 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/23777bbaae
13:00 FROGGS \o/
13:01 jnthn damn, I want hostmaster dk's internets...
13:01 jnthn so fast!
13:05 FROGGS *g*
13:06 FROGGS jnthn: I thought I can use that as a hash, but apparently not... my $LABEL := $*W.pkg_create_mo(%*HOW<knowhow>, :name('VMHash'));
13:07 FROGGS what am I doing wrong?
13:10 jnthn Did you mean :repr? But anyways, not available on Parrot...
13:10 jnthn Wait, what are you doing?
13:10 jnthn Creating a new *type* per label?
13:11 FROGGS hold on
13:11 jnthn I'd just declare a class NQPLabel { } or so in the NQP core setting....
13:11 FROGGS https://gist.github.com/FR​OGGS/e03e0b067431a23b790c
13:11 FROGGS ahh
13:11 jnthn Why'd you need a hash, though?
13:11 FROGGS yeah
13:11 FROGGS just to stash the labels...
13:12 FROGGS but I guess the NQPLabel is a better idea :o)
13:12 jnthn yeah, 'cus then you can check if it's the right one in the exception handler by reference equality...
13:13 FROGGS hmmm, I'm not sure I understand
13:14 FROGGS bbiab, lunch
13:14 jnthn Well, when you have an exception handler for next/last exceptions, we need to check we got the right label?
13:14 jnthn And keep going if not?
13:26 timotimo tadzik: you hvae an unmerged branch in nqp, "jvm-sockets", is that obsolete?
13:27 tadzik timotimo: yeah, I think so
13:28 timotimo should i delete it for you?
13:28 tadzik yeah, thanks :)
13:28 timotimo you probably have a local copy anyway
13:28 tadzik probably
13:29 tadzik doesn't matter, we have sockets in jvm now :)
13:29 timotimo yeah
13:29 timotimo maybe they're sucky? ;)
13:30 dalek nqp: 2339be2 | jonathan++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
13:30 dalek nqp: Unboxers should decont.
13:30 dalek nqp: review: https://github.com/perl6/nqp/commit/2339be2f23
13:30 tadzik as apposed to mine? :P
13:30 timotimo yeah
13:30 timotimo what do i know? ;)
13:30 tadzik unlike me, donaldh seemed to have some idea on what he was doing with them :P
13:32 timotimo okay, great :)
13:33 tadzik I made them work, he made them good
13:33 timotimo jnthn: your old branch "repo-bug" has two commits, Get serialized object ownership model in place. and Add missing repossession barriers.  -  are they obsolete?
13:33 tadzik now, if we had some Perl 6 side spec on them, that'd be great
13:33 tadzik other than "yeah, there should be recv, read, send, and something"
13:33 jnthn timotimo: How old is the branch?
13:33 jnthn timotimo: and was it merged?
13:33 timotimo unmerged, 5 months old
13:34 timotimo but perhaps you cherry-picked the commits somewhere
13:34 jnthn hm, I've no idea what it was for :)
13:34 sjn tadzik: any thoughts/additions on the pad we made?
13:34 dalek rakudo/moar-support: 673c790 | jonathan++ | src/vm/moar/ops/container.c:
13:34 dalek rakudo/moar-support: Stub in scalar store.
13:34 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/673c7907d3
13:34 timotimo it touched java code
13:34 renormalist joined #perl6
13:35 lizmat yikes!
13:35 jnthn timotimo: Oh my, it's dirty
13:36 timotimo :)
13:36 jnthn timotimo: I suspect I fixed the issue given we pass 99%+ spectests on JVM :)
13:36 lizmat only thing still really borked on JVM are backtraces
13:36 jnthn yeah, and I didn't immediately see why...
13:36 timotimo probably :)
13:38 timotimo there's still a moarboot branch and it wasn't merged directly
13:39 jnthn that can go
13:40 jnthn I rebased
13:42 timotimo there's also the cursless branch that i believe was somehow twiddled into master, but not "officially" merged to git. should i kill that as well?
13:42 jnthn Yeah
13:43 timotimo now the branch list fits on one screen again for my terminal :)
13:43 xinming joined #perl6
13:49 berekuk joined #perl6
13:52 moritz today's mini-challenge: http://colinm.org/language_checklist.html make the appropriate check marks for Perl 6
13:52 dalek roast: 3e24470 | (Elizabeth Mattijsen)++ | S17-concurrency/channel.t:
13:52 dalek roast: Remove tests for .peek
13:52 dalek roast: review: https://github.com/perl6/roast/commit/3e24470a20
13:55 timotimo hm. how does using from NQP work?
13:55 timotimo i put a QRegex::Optimizer into QRegex/Optimizer.nqp, added that to the QREGEX_SOURCES and would like to use it from NQP/Optimizer.nqp
13:56 timotimo just "use QRegex;" at the beginning of NQP::Optimizer gives me Lexical 'NQPCursorRole' already declared
13:56 jnthn timotimo: QRegex is already imported by default
13:56 timotimo having no use QRegex, though, gives me "no method for invocant of type NQPMu" because QRegex::Optimizer evaluates to NQPMu
13:56 timotimo or at least i thought that was what it was
13:57 jnthn timotimo: I think it should live in the NQPP6Qregex lib, not the QRegex one, though...
13:57 timotimo i can do that
13:57 jnthn QRegex is the runtime bits, the other one is the compile time bits
13:57 timotimo so i'll have to use NQPP6QRegex?
13:57 timotimo ah, that's a good distinction
13:57 timotimo so it should go into P6Regex/, too?
13:57 jnthn Yeah. But we already do that in NQP somewhere I think
13:57 jnthn Yeah, I would.
14:02 timotimo i think i made it work, thanks!
14:03 jnthn yayz
14:03 timotimo more like QYay
14:04 moritz invented by qmichaud :-)
14:06 moritz lizmat++ # non-ASCII release tag
14:06 moritz the first of its kind
14:06 dalek rakudo/nom: c64efea | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Channel.pm:
14:06 dalek rakudo/nom: Make Channel.peek private, as it is not specced
14:06 jnthn Yeah, my console shoved the dots to the right of the o, though. Fail!
14:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c64efea976
14:06 lizmat hehe
14:07 lizmat so, how much did I break ?
14:11 rurban1 joined #perl6
14:16 MikeFair joined #perl6
14:17 * FROGGS compiles moar
14:18 timotimo so ... i've been thinking
14:18 timotimo since substr and findcclass and friends are pretty darn slow on utf8 when they have to scan the whole string to turn character offsets into byte offsets
14:18 timotimo how about storing a little skip table for strings longer than 1kb? or something of that sort?
14:21 raiph joined #perl6
14:21 jnthn timotimo: On Parrot we match the regex against ucs4 already when possible
14:22 FROGGS "cannot numify this"
14:22 FROGGS jnthn: is that where you are?
14:22 jnthn FROGGS: That means you haven't picked up the latest NQP patch I did too
14:23 timotimo right, i'm thinking of the cases where we don't have that
14:23 FROGGS ahh, yes, very true
14:23 timotimo the problem is very visible when compiling the Actions and Grammar.
14:23 dalek rakudo/nom: f276f25 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Channel.pm:
14:23 dalek rakudo/nom: last works again inside winner, jnthn++
14:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f276f257c9
14:24 timotimo the line pos cache takes about 5 seconds for Actions.nqp, but only 0.002s for the whole of the setting.
14:24 timotimo and Actions and Grammar have « and » in them.
14:24 timotimo so we're taking a *crazy* performance hit there (i guess in that case it's because after each findcclass call where it finds a newline, it has to scan from the very beginning of the string again)
14:24 dalek roast: 9c17d2a | (Elizabeth Mattijsen)++ | S17-concurrency/channel.t:
14:24 dalek roast: Magically, the "last" fix removes the hang
14:24 dalek roast: review: https://github.com/perl6/roast/commit/9c17d2a14c
14:25 timotimo i wonder how long the lineposcache alone would take if the setting had one of those in it! not to mention the rest of the regex matching ...
14:26 lizmat timotimo: but the setting *does* have « in them
14:26 lizmat *it
14:26 timotimo oh?
14:26 timotimo is « and » still in ucs4?
14:26 timotimo r: '«»'.ords.perl.say
14:27 camelia rakudo-jvm ea77e4: OUTPUT«(timeout)»
14:27 camelia ..rakudo-parrot ea77e4: OUTPUT«(171, 187).list␤»
14:27 timotimo seems like they are
14:27 timotimo so something else must be in actions and gramar that prevents it from being represented as ucs4
14:28 timotimo p: '¢'.ords.perl.say
14:28 camelia rakudo-parrot c64efe: OUTPUT«(162,).list␤»
14:28 jnthn ucs4 = 32-bit, so yeah, all the unicode fits in it
14:28 jnthn I guess the issue is that when we pick out substrings we do it on orig
14:29 timotimo hm. if i take a substr after each findcclass, i could perhaps remove one power of complexity
14:29 timotimo i'll copy the later parts lots of times, but i'll cut off from the beginning each time, rather than letting the scanning add up
14:30 jnthn timotimo: Well, trouble is that we only have the problem on one backend (Parrot)
14:31 jnthn timotimo: We don't keep strings around as UTF-8 anywhere else.
14:31 jnthn So if you do anything, please make sure you mark it out as Parrot only, otherwise it's a pessimization for everything else.
14:32 timotimo oh, OK
14:33 timotimo my first idea for an approach to this was just having static variables in findcclass that will remember the last character->byte position that it was called on
14:33 timotimo that would already cause a big boost in that specific case and gives me a ~7s faster compile (all in all) on my machine.
14:33 jnthn um...what if you call it on a different string next time?
14:34 timotimo it has to remember which string it was called on, of course
14:35 timotimo is there something smarter to recognize a string by than its address? parrot probably has a moving GC, right?
14:36 FROGGS "No registered operation handler for 'p6parcel'" <--- jnthn: this?
14:38 dalek rakudo/moar-support: 3afeb7f | jonathan++ | src/vm/moar/ (2 files):
14:38 dalek rakudo/moar-support: Implement p6parcel.
14:38 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/3afeb7fc25
14:40 jnthn FROGGS: was that :)
14:40 jnthn timotimo: Parrot GC doesn't move
14:41 FROGGS gah!
14:41 jnthn Or at least, PMCs sure don't which I guess must mean nothing does...
14:41 timotimo that sounds helpful
14:41 FROGGS jnthn: I can't work that way!
14:41 FROGGS :P
14:42 jnthn fails in something enum related now
14:42 jnthn I'm guessing the enum TimeUnit at 14099 or so
14:43 FROGGS that'd be masak's fault then
14:43 jnthn :P
14:43 FROGGS he's not meant to implement Stolpersteine :o)
14:46 jnthn yeah, it is in there...hm
14:47 dalek rakudo/nom: 5175adf | (Elizabeth Mattijsen)++ | src/core/Any.pm:
14:47 dalek rakudo/nom: Implement listless map provisionally
14:47 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5175adf7be
14:50 FROGGS ahh, yes
14:50 FROGGS Cannot find method 'key'
14:50 FROGGS at src/gen/m-Metamodel.nqp:2838  (blib/Perl6/Metamodel.moarvm:add_enum_value:17)
14:52 jnthn Yeah. Hmm
14:52 jnthn But there's an enum that worked earlier on...
14:52 FROGGS I'd guess that rebless or clone are buggy
14:52 FROGGS hmmm
14:52 dalek rakudo/nom: b063f81 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Channel.pm:
14:52 dalek rakudo/nom: Implement Channel.list using a listless map
14:52 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b063f81c58
14:58 jnthn FROGGS: Why, ooc?
14:59 FROGGS because it tries to call .key on $val which is created using nqp::rebless(nqp::clone(... in world line 1589
15:00 FROGGS I am printing now nqp::can($value, 'key') and nqp::can($val, 'key')
15:00 FROGGS ohh, humm
15:00 jnthn yeah, not a bad idea..
15:00 FROGGS it already created three enum values, and nqp::can($value, 'key') was false-ish where nqp::can($val, 'key') was true
15:01 timotimo i have the "remove scan before BOS anchor" optimization done
15:01 FROGGS I guess the $value we get is intended to not have a key method
15:01 jnthn Right, that's just an integer thingy
15:02 jnthn Whereas we rebless it to get the enumeration related things
15:02 FROGGS ahh
15:02 jnthn r: enum Foo<a b>; say a ~~ Int; say a.WHAT
15:02 camelia rakudo-parrot c64efe, rakudo-jvm c64efe: OUTPUT«True␤(Foo)␤»
15:02 jnthn r: enum Foo<a b>; say a.^mro
15:02 camelia rakudo-parrot c64efe, rakudo-jvm c64efe: OUTPUT«(Foo) (Int) (Cool) (Any) (Mu)␤»
15:05 FROGGS yeah, for the fourth enum value nqp::can($val, 'key') is false...
15:05 jnthn odd, it's first time for me...
15:07 timotimo jnthn: were there any other super simple optimizations i could put into the regex engine for now?
15:07 moritz not scan when a regex starts with ^ ?
15:08 timotimo yup.
15:08 timotimo that's the one i just implemented
15:10 FROGGS jnthn: the three things that work are of type Order btw
15:12 rurban1 joined #perl6
15:12 jnthn FROGGS: oh...ok, yes, they work for me too...
15:13 jnthn FROGGS: So we're seeing same.
15:13 jnthn I meant first one of TimeUnit...
15:13 dalek star: a2682c7 | moritz++ | README:
15:13 dalek star: [README] bump version, and memory requirement
15:13 dalek star: review: https://github.com/rakudo/star/commit/a2682c763d
15:13 jnthn ooh, I see a bug...
15:13 * diakopter grimaces ;)
15:14 moritz jnthn: when I look into RT, I see hundreds of bugs :-)
15:14 diakopter moritz: 2GB on both parrot and jvm?
15:15 moritz diakopter: dunno; star is still parrot-only, mostly
15:15 diakopter er, or do the instructions only apply to parrot (duh)
15:15 * diakopter throws the 'make star work on jvm backend' task at someone [else]
15:16 diakopter [.. as if I would've/could've done it anyway :( ]
15:16 timotimo we're still blocking on arnsholt and/or jnthn finishing up jvm-nativecall?
15:17 FROGGS jnthn: yes, TimeUnit fails
15:17 jnthn Ain't nobody got timeunit for that...
15:17 FROGGS hehe
15:18 dalek star: f554958 | moritz++ | modules/ (3 files):
15:18 dalek star: Upgrade json, panda and http-status
15:18 dalek star: review: https://github.com/rakudo/star/commit/f55495865c
15:21 moritz r: say 'foo'.ucfirst
15:21 camelia rakudo-jvm c64efe: OUTPUT«No such method 'package' for invocant of type 'Any'␤  in sub DEPRECATED at gen/jvm/CORE.setting:16745␤  in block  at /tmp/sepRe6AsuQ:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any co…»
15:21 camelia ..rakudo-parrot c64efe: OUTPUT«Foo␤Saw 1 call to deprecated code during execution.␤======================================​==========================================␤Method ucfirst (from Cool) called at:␤  /tmp/0SKP5WzTZ2, line 1␤Please use 'tc' instead.␤--------------------…»
15:22 jnthn Sadly, fixing the Moar bug didn't fix it...
15:22 FROGGS :(
15:22 FROGGS I don't see where TimeUnit is so different from Order
15:23 dalek star: 68b2d8c | moritz++ | docs/announce/2013.11.md:
15:23 dalek star: add initial release announcement
15:23 dalek star: review: https://github.com/rakudo/star/commit/68b2d8c7a4
15:25 timotimo so, is there some magic stuff on parrot that we can use to implement non-blocking IO?
15:25 timotimo or are we going to skip doing it on parrot and just have it on moar and jvm?
15:27 diakopter timotimo: well, did we even want to do it apart from slightly-preemptive threads for now?
15:27 moritz timotimo: parrot doesn't have non-blocking IO, afaict
15:27 moritz timotimo: the docs are full with it, but it's not implemented at all
15:27 timotimo aaw
15:31 jnthn nqp::say(nqp::can($enum_type_obj, 'key')); # also 0...
15:32 timotimo i'm wondering how to make the "if there's a literal at a known offset from here, use an boyer-moore to find it and step backwards" optimization elegant
15:33 timotimo i could create an rxtype peek that will advance the cursor by a given amount, do its sub-nodes and then move the cursor back a bit again
15:33 timotimo does that sound sane?
15:33 FROGGS jnthn: yeah, I guessed that
15:40 timotimo that could, imo, work well with the Want idea i had ...
15:45 [Sno] joined #perl6
15:49 jnthn FROGGS: well, seems it's not the method cache's fault.
15:55 denis_boyun joined #perl6
15:58 dalek nqp/simplify_before: 4f8a8c0 | (Timo Paulssen)++ | / (3 files):
15:58 dalek nqp/simplify_before: QRegex::Optimizer lives in NQPP6QRegex now.
15:58 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/4f8a8c0691
15:58 dalek nqp/simplify_before: b7e33f0 | (Elizabeth Mattijsen)++ | VERSION:
15:58 dalek nqp/simplify_before: bump VERSION to 2013.11
15:58 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/b7e33f04d5
15:58 dalek nqp/simplify_before: 1d3e6b1 | (Timo Paulssen)++ | src/QRegex/P6Regex/Optimizer.nqp:
15:58 dalek nqp/simplify_before: optimize the topmost regex node as well ...
15:58 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/1d3e6b14a9
15:58 dalek nqp/simplify_before: 8cfd4c9 | (Timo Paulssen)++ | src/QRegex/P6Regex/Optimizer.nqp:
15:58 dalek nqp/simplify_before: a scan followed by a BOS anchor is useless.
15:58 dalek nqp/simplify_before: review: https://github.com/perl6/nqp/commit/8cfd4c9708
15:59 moritz Testing modules/jsonrpc...
15:59 moritz ===SORRY!===
15:59 moritz Missing or wrong version of dependency '/home/moritz/p6/star/rakudo-star-20​13.11/install/lib/parrot/5.9.0/langu​ages/perl6/lib/MIME/Base64/PIR.pm6'
15:59 moritz (when testing R*)
16:01 lizmat something I did in the release ?
16:02 jnthn FROGGS: Heh. The method table contains a couple of entries like Str<39311992>...
16:02 timotimo heh heh
16:02 timotimo that's a little wrong
16:02 lizmat isn't that a .WHICH value ?
16:03 timotimo looks like, yeah
16:03 jnthn No, it's the default stringification
16:04 retupmoca moritz: is that something broken inside of MIME::Base64?
16:05 moritz retupmoca: I don't know yet, might also be order of precompilation that's broken
16:12 xinming joined #perl6
16:12 timotimo so i'm thinking we could optimize .* 'foobar' to do a from-the-end literal search for 'foobar'. does that seem sensible?
16:12 Rotwang joined #perl6
16:13 timotimo well, it seems safe to me, but how often will it be applicable?
16:13 jnthn I agree on safe; I'm questioning applicability... :)
16:13 timotimo i mean, how often do you actually have .*
16:14 timotimo and i was thinking that we can do a literal-scan even if we don't know the precise length of the prefix, if we have a minimum and maximum
16:15 timotimo like in ...? foobar it could scan for foobar, go back 3, try to match, if it fails once, go back 2 instead of 3 and try again
16:15 timotimo for ...? it doesn't make very much sense, but if it had something a tiny bit more complicated, it could help
16:17 timotimo also a bit hairy to analyze :p
16:18 dr_df0 joined #perl6
16:18 dr_df0 left #perl6
16:36 dr_df0 joined #perl6
16:38 dr_df0 left #perl6
16:44 sqirrel joined #perl6
16:44 timotimo merging in the newest nqp changes gets me a Confused :(
16:59 rurban1 joined #perl6
17:16 dalek rakudo/moar-support: 3ca2699 | jonathan++ | src/Perl6/Actions.nqp:
17:16 dalek rakudo/moar-support: Don't emit bindassert when constraint is Mu.
17:16 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/3ca2699172
17:23 ajr joined #perl6
17:27 dalek rakudo/moar-support: 6123c77 | jonathan++ | src/core/terms.pm:
17:27 dalek rakudo/moar-support: Add Moar sections in terms.pm.
17:27 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/6123c77403
17:38 jnthn j: class A { ... }
17:38 camelia rakudo-jvm b063f8: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/i0McVMGdnKâ�¤The following packages were stubbed but not defined:â�¤    Aâ�¤at /tmp/i0McVMGdnK:1â�¤------> [32mclass A { ... }[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        argument list…»
17:50 nnunley joined #perl6
17:53 adu joined #perl6
17:55 adu I don't remember the last time I was in this channel
17:55 FROGGS hi adu :o)
17:55 adu I FROGGS :) I remember you
17:55 FROGGS hehe
17:55 FROGGS dito
17:55 adu s/I/hi/
17:56 adu s/I F/hi F/
17:56 adu anyways
17:57 adu I vaugely recall trying to help with nqp-jvm or something a couple months ago
17:57 adu is jnthn around?
17:57 moritz hello
17:57 adu o hi moritz!
18:04 adu wooohooo! there is a "Building Rakudo on JVM" section in the readme!
18:04 TimToady jnthn++ is currently at dinner
18:04 adu I'm so excited about JVM
18:05 dalek rakudo/moar-support: b170926 | (Tobias Leich)++ | tools/build/Makefile-Moar.in:
18:05 dalek rakudo/moar-support: add new core source file
18:05 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/b1709260d0
18:05 TimToady and the implementation on moarvm has just passed the milestone of parsing the setting, so now is just a Small Matter of Semantics
18:06 adu is that a reference to http://www.brcommunity.com/b632.php ?
18:07 TimToady nope
18:10 raiph joined #perl6
18:12 zakharyas joined #perl6
18:19 timotimo it seems like i have to go into parrot to make find_cclass and friends faster like that
18:20 timotimo how do i skip a known number of bytes for a string iterator without breaking things horribly?
18:21 benabik joined #perl6
18:23 timotimo parrot doesn't offer that in its string API, i'm pretty sure if i patched it the way i'm thinking right now, the patch won't get accepted
18:24 moritz I have a commit bit. I can accept it :-)
18:24 FROGGS hehe
18:24 moritz not saying it would be a good idea... :-)
18:26 dalek star: 71e7a14 | moritz++ | tools/build/Makefile.in:
18:26 dalek star: bump version
18:26 dalek star: review: https://github.com/rakudo/star/commit/71e7a14409
18:26 dalek star: ab71d00 | moritz++ | modules/Template-Mojo:
18:26 dalek star: Update Template-Mojo to a version that doesn't warn about .bless(*)
18:26 dalek star: review: https://github.com/rakudo/star/commit/ab71d00d8f
18:26 timotimo i suppose i could implement a special version of find_cclass for utf8 that does the caching of the byte positions
18:27 timotimo that way i can (but shouldn't) rely on internals of the utf8 string stuff
18:27 lizmat NPW shutting down, social to come&
18:33 berekuk joined #perl6
18:39 TimToady p: my @a = (); .say for map {}, @a;
18:39 camelia rakudo-parrot b063f8: OUTPUT«Cannot call 'map'; none of these signatures match:␤:(&code, *@values)␤:(&code)␤  in any  at gen/parrot/BOOTSTRAP.nqp:1218␤  in any  at gen/parrot/BOOTSTRAP.nqp:1209␤  in sub map at gen/parrot/CORE.setting:1770␤  in block  at /tmp/4JZg8MYboA:1…»
18:39 TimToady p: my @a = (); .say for map {;}, @a;
18:39 camelia rakudo-parrot b063f8: ( no output )
18:40 TimToady p: my @a = (); .say for map {$_}, @a;
18:40 camelia rakudo-parrot b063f8: ( no output )
18:41 * TimToady doesn't quite believe in listless map
18:41 TimToady p: my @a = (); .say for map {$_};
18:42 camelia rakudo-parrot b063f8: OUTPUT«(timeout)»
18:43 btyler joined #perl6
18:43 TimToady if we want that functionality, it should be named something else
18:44 diakopter what does listless map iterate
18:45 * TimToady had thought it iterated over 0..*, but apparently not
18:45 TimToady p: my @a = (); .say for map {$_}, ^*;
18:45 camelia rakudo-parrot b063f8: OUTPUT«WhateverCode.new()␤»
18:45 diakopter ^*
18:45 TimToady hah
18:46 TimToady that's...probably a bug
18:46 TimToady can argue it both ways
18:47 diakopter p: say ^*
18:48 camelia rakudo-parrot b063f8: OUTPUT«WhateverCode.new()␤»
18:48 diakopter p: say (^*)(44)
18:48 camelia rakudo-parrot b063f8: OUTPUT«0..^44␤»
18:48 diakopter p: say (^*)(^*)
18:48 camelia rakudo-parrot b063f8: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤  in any  at gen/parrot/BOOTSTRAP.nqp:1218␤  in any  at gen/parrot/BOOTSTRAP.nqp:1209␤  in method Numeric at gen/parrot/CORE.setting:985␤  in sub prefix:<^> at gen/parrot…»
18:49 TimToady p: say (^*)(*)
18:49 camelia rakudo-parrot b063f8: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤  in any  at gen/parrot/BOOTSTRAP.nqp:1218␤  in any  at gen/parrot/BOOTSTRAP.nqp:1209␤  in method Numeric at gen/parrot/CORE.setting:985␤  in sub prefix:<^> at gen/parrot…»
18:49 timotimo oh, i can actually cache the iterator itself! wow, that's evil :)
18:50 kaare_ joined #perl6
18:52 timotimo i meant clever!
18:52 FROGGS[mobile] hehe
18:55 timotimo additionally: safe! :)
18:55 * timotimo compiles a parrot to see how his code does
18:58 lizmat joined #perl6
18:58 dr_df0 joined #perl6
18:59 timotimo i made it only cache the iterator and stuff if it's more than 512 characters in, so that it only/mostly caches positions in source code files
18:59 timotimo for shorter strings the time growth due to endless rescans isn't terribly big
19:01 woolfy joined #perl6
19:02 * TimToady doesn't undestand what "cache the iterator" means...does it mean caching the results of one?
19:02 timotimo it seems like my cache didn't get hit :\
19:02 timotimo i should debug this.
19:04 TimToady nwc10: does p5 still just cache the last used position on UTF-8?
19:08 * TimToady cannot configure the JVM build right now; is that a known failure?
19:09 xenoterracide joined #perl6
19:16 FROGGS TimToady: unknown to me at least... what happens (not)?
19:16 TimToady https://gist.github.com/TimToady/7618709
19:16 TimToady this is after removing install, parrot, and nqp
19:17 timotimo i got it sped up by a factor of about 2
19:17 timotimo maybe if i use 128 instead of 512 as the starting offset it'll be a tiny bit better still
19:18 diakopter TimToady: try real jvm? ;)
19:18 timotimo .o(still a horrid time, 2.5 seconds)
19:20 diakopter TimToady: seriously though, looks like a jvm problem
19:21 FROGGS TimToady: I can build nqp-j HEAD on my box
19:21 FROGGS java version "1.7.0_25"
19:21 FROGGS OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)
19:21 FROGGS OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
19:21 TimToady "If you would like to submit a bug report, please include instructions on how to reproduce the bug..."
19:22 * TimToady wonders if it's the sort of thing a reboot would fix...
19:22 dr_df0 left #perl6
19:23 timotimo yup, i get a factor of 2 improvement. does that sound like something the parrot folks would be interested in?
19:24 fridim_ joined #perl6
19:24 TimToady nah, they're more interested in 5% improvements :P
19:26 timotimo well, that's the kind of improvement i usually come up with, i'm not used to such big wins ;)
19:26 * timotimo added the cache do find_notcclass just for symmetry
19:26 TimToady I think if we judge by appearances, every project is more interested in 5% wins :)
19:27 TimToady what are you attaching this cache to?
19:27 timotimo C static variable
19:27 timotimo (that's why i thought it was so elegant)
19:27 TimToady p5 stores it in the string itself
19:27 TimToady well, in it's headers
19:28 timotimo then different operations could make use of it
19:28 timotimo hmm.
19:28 TimToady well, it's in a "magic" iirc
19:29 TimToady but there's a long tradition of allowing caching mutability on otherwise immutable values, since the cache isn't officially part of the value
19:31 timotimo right.
19:31 btyler joined #perl6
19:32 * TimToady thinks p5 caches both the last positoin and the position of the end, and just picks whatever is closer to navigate from, since you can count utf-8 easily in either direction
19:32 TimToady well, and position 0 of course
19:32 TimToady but you don't have to cache that mapping :)
19:33 timotimo mhh, backwards
19:34 TimToady utf8 has nice self-clocking characteristics that way
19:34 TimToady otoh, dunno how much effort we should put into supporting utf8 when we'll be moving to nfg soon
19:35 TimToady well, it's apples and oranges, really, since nfg is an abstraction that could sit on top of any encoding
19:36 TimToady and utf8 position is still codepoint position, which is bogus in the grapheme view
19:36 timotimo yup
19:38 TimToady "there are no plans to desupport parrot" but I don't know how long that can last once moar becomes a better parrot, and we introduce things that are "hard" in parrot
19:38 TimToady arguably, that has already happened with threading
19:38 TimToady (albeit wrt the jvm, not moar)
19:39 timotimo i hope threading will be as easy on moar as it was on jvm ... but probably won't be :(
19:39 TimToady it's...planned to be :)
19:39 FROGGS but we won't rip out the parrot glue code, even when other backends might support more and moar features
19:39 timotimo not for a long time, yeah
19:40 nwc10 TimToady: last two. Recent commit fixed something I got wrong - IIRC it was that for performance, it was best to always remember the most recent position you've been told to cache, and throw away one of the earlier ones
19:40 nwc10 but that was because often it's a match or something else marching through the string linearly, so the next posisition requested is soon after the last one asked for
19:41 TimToady well, yes, most usage patterns are left-to-right
19:41 raiph joined #perl6
19:41 nwc10 the end is also cached
19:41 TimToady yes, I suspected that above
19:42 TimToady thanks
19:42 nwc10 this is as best I can remmeber - davem was the most recent person to deal with that code, and fixed the thing I got wrong
19:43 sqirrel joined #perl6
19:43 nwc10 the p5 code assumes that you can walk forwards twice as fast as walking backwards, but I don't think that anyone has ever measured that
19:47 * masak can walk forwards at least twice as fast as he can walk backwards...
19:48 TimToady nwc10: it'll be highly data dependent
19:48 masak well, it depends on the exact parameters, actually.
19:48 kivutar joined #perl6
19:48 TimToady ASCII will be about the same in either direction
19:48 masak does running count? am I disqualified if I trip and fall? :P
19:48 * moritz call fall backwards twice as fast as he can talk forwards
19:48 moritz erm...
19:48 moritz s/call/can/
19:48 nwc10 yes, it will depend on byte size.
19:48 nwc10 er, number of octets needed for a char
19:48 TimToady CJK will only have to visit 1 in every 3 bytes going forwards
19:49 masak btw, an autopun spotting from the other day: https://twitter.com/LeynerMa​rk/status/402861819535970304
19:50 masak also by the way, I noticed "masak's fault" in the backlog...
19:50 moritz lizmat: (re 'make realclean' yesterday) I've fixed that in branch moar-support, and forgot to cherry-pick to nom
19:51 masak FROGGS: anything I can help with re TimeUnit?
19:51 moritz and now I kinda hope that moar-support lands soon enough that I don't have to bother :-)
19:51 timotimo ah, you can say "ah, i've had 100 CJK now, i'll just skip 2 bytes and see if it's a non-continuation byte!"
19:51 timotimo that's pretty nifty.
19:52 TimToady timotimo: it's better than that, the first byte encodes the length
19:52 timotimo oh!
19:52 timotimo of course it does, i forgot about that
19:53 timotimo parrot already does that with a table
19:53 TimToady you could do a speculative scan backwards that way though
19:53 TimToady check position - 3 for a 3-byte codepoint
19:54 TimToady would probably work nicely in CJK langauges
19:54 TimToady well, as nicely as any variable length encoding can
19:55 TimToady we'll still hoping for a very fast conversion to NFG at the boundaries, and just vary the int size needed to support the current string, or piece of rope, or whatever
19:56 TimToady *we're
19:57 timotimo uh oh
19:58 nwc10 Yes. and even without NFG I'm wondering if optimising traversal of things stored as UTF-8 is the best thing to attack
19:58 timotimo building nqp on the newest parrot gives me unshift_string() not implemented in class 'Hash' in the src/vm/parrot/stage0/NQPMO-s0.pir
19:58 nwc10 compared with implementing storage as conversion to fixed 8, 32 (or 16) bit storage of code points.
19:59 tgt joined #perl6
19:59 TimToady it's a pity more machines don't support 24-bit integers :)
20:00 FROGGS masak: already fixed :o)
20:00 masak \o/
20:01 masak also, phew
20:01 FROGGS masak: this was the fix btw: https://github.com/MoarVM/MoarVM/commit/​ab6d01524f5aea8590986c876d4866b9e5a86118
20:01 FROGGS :o)
20:02 masak I see. nice.
20:05 moritz http://moritz.faui2k3.org/tmp/m-i.log that's what I get when running 'make modules-install' in the R* that I made locally
20:05 moritz Missing or wrong version of dependency '/home/moritz/p6/star/rakudo-star-20​13.11/install/lib/parrot/5.9.0/langu​ages/perl6/lib/MIME/Base64/PIR.pm6'
20:05 moritz while building LWP::Simple
20:06 moritz but
20:06 moritz MIME::Base64::PIR is precompiled first (line 315, vs. error at line 325)
20:07 moritz so I have no clue what's wrong
20:11 moritz any ideas?
20:12 * moritz hates, hates, hates that error
20:15 arnsholt Me too
20:15 arnsholt I usually end up rebuilding things, starting at the top and working my way towards NQP
20:17 retupmoca it looks like precompilation is breaking it somehow
20:17 moritz retupmoca: aye, the question is just how to avoid it
20:17 retupmoca if I manually precompile the 3 .pm6 files in the MIME::Base64 repo, running a 'prove -e perl6-p' still throws the error
20:18 moritz retupmoca: if $*VM<name> eq 'parrot' { $default-backend
20:18 moritz = MIME::Base64::PIR;
20:18 moritz retupmoca: how does that even compile on non-parrot backends?
20:19 moritz it should stumble over the undeclared class name, no?
20:19 retupmoca I have no idea
20:19 retupmoca but last time I tried, perl6-j ate it just fine
20:19 retupmoca and passed the tests
20:20 FROGGS it should be looked up indirectly
20:20 FROGGS ::('MIME::Base64::PIR') or so
20:20 moritz FROGGS: that's what I thought too
20:22 retupmoca if I change the 'require' to a 'use' it runs withtout that error
20:22 retupmoca without*
20:24 moritz that fixes it for parrot, but will fail on the JVM
20:24 retupmoca right
20:24 retupmoca since then it's not included conditionally
20:24 retupmoca if I comment out all the ::PIR stuff, it throws the same error for ::Perl
20:24 FROGGS you could stub a M::B::PIR class
20:25 FROGGS and then use require
20:25 moritz FROGGS: the problem with require is that it breaks precompilation, somehow, it seems
20:25 FROGGS r: try { require Hurz }; say GLOBAL::
20:25 camelia rakudo-parrot b063f8, rakudo-jvm b063f8: OUTPUT«().hash␤»
20:26 retupmoca yeah, the require is what's messing it up somehow
20:26 retupmoca and now that I look at it, I'm not sure how the JVM isn't barfing on that = MIME::Base64::PIR line
20:26 retupmoca but it still passes all the tests
20:27 moritz retupmoca: can you try with   BEGIN eval 'use MIME::Base64::PIR' if $*VM<name> eq 'parrot'    please?
20:27 MikeFair_ joined #perl6
20:27 moritz and then refer to the class as ::('MIME::Base64::PIR')
20:27 retupmoca will do
20:29 timotimo gnite friends!
20:29 TimToady o/
20:29 FROGGS gnight timotimo
20:31 retupmoca moritz: works on JVM and parrot without any precompilation, but after precompilation on parrot: "t/basic.t .. ===SORRY!=== Missing or wrong version of dependency 'PIR.pm6'"
20:32 FROGGS should it report the .pm6 at all? I would think it will complain about .pir
20:32 FROGGS or .bpc
20:32 FROGGS pbc*
20:32 retupmoca https://gist.github.com/retupmoca/7619564
20:32 retupmoca ^-- what the file looks like after the BEGIN eval change
20:34 retupmoca and comment added with the error I get
20:35 retupmoca if I precompile ::PIR and ::Perl, but not the main MIME::Base64 file, it tests just fine
20:37 moritz but then dependent modules can't be precompiled either
20:37 moritz which is, like, bad for star. Very bad.
20:38 retupmoca right, I'm just poking it to see what works since I don't know how precompilation works
20:38 moritz ok, my idea for now is to create a branch in Perl6-MIME-Base64
20:38 moritz which unconditionally uses ::PIR
20:39 moritz and use that in star
20:39 moritz for now
20:39 TimToady after a roboot, my parrot compilation fails, nqp_ops.c says "nqp_ops.c:12645:5: error: unknown type name ‘uint32_t’
20:40 moritz that gives us another month to fix precompilaton + conditional use
20:40 retupmoca oh, this is interesting
20:40 retupmoca if I remove the "fake use" comment, I get a slightly different error: "Missing or wrong version of dependency 'eval_0'
20:41 moritz oh
20:41 FROGGS rp: #`[ use blarg ]
20:41 camelia rakudo-parrot b063f8: ( no output )
20:41 FROGGS rp: #`[␤use blarg;␤]␤
20:41 camelia rakudo-parrot b063f8: ( no output )
20:41 moritz jnthn: does rakudo still have this thing where module loading pre-parses the file somehow?
20:42 FROGGS well, yes
20:42 FROGGS it evals it to capture its context, if you mean that
20:43 retupmoca moritz: do you want me to make a 'precompile-fix' branch for now then?
20:43 moritz retupmoca: that would be helpful, yes
20:45 * moritz tries another thing: make the precompiler recognize 'require', and remove the fake-use comment
20:46 moritz nope, doesn't work :(
20:50 retupmoca moritz: branch precompile-fix now exists on github
20:50 moritz retupmoca: thank you
20:52 tgt joined #perl6
20:53 dalek star: 5fc3b97 | moritz++ | modules/Perl6-MIME-Base64:
20:53 dalek star: use Perl6::MIME branch precompile-fix, retupmoca++
20:53 dalek star: review: https://github.com/rakudo/star/commit/5fc3b97004
20:55 dalek star: a0934a6 | moritz++ | tools/build/module-install.pl:
20:55 dalek star: precompilation order: consider require
20:55 dalek star: review: https://github.com/rakudo/star/commit/a0934a6399
20:56 benabik left #perl6
20:56 benabik joined #perl6
20:58 moritz http://moritz.faui2k3.org/tmp/​rakudo-star-2013.11-RC0.tar.gz please test!
20:59 masak moritz++
21:04 retupmoca I've also added a precompile-fix-pponly branch that only tries to load the pure perl version
21:05 retupmoca just in case someone needs to run the precompile-fix version on a non-parrot rakudo
21:05 retupmoca (of MIME::Base64, of course)
21:06 dalek rakudo/nom: 8d994cf | moritz++ | tools/build/check-versions.pl:
21:06 dalek rakudo/nom: adapt check-versions.pl error message to current Configure.pl realities
21:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8d994cf6fc
21:12 moritz ok, installation of RC0 went without any errors here
21:13 * FROGGS tries to throw a label now
21:16 retupmoca I've never done a rakudo star install before - I can just do a make && make install, and it'll stay self-contained in $CWD, right?
21:18 moritz yes, it installs to install/
21:19 * FROGGS .oO( To Install Or Not To Install? )
21:21 masak ...that is the query.
21:22 itz_ with that RC0 I get
21:22 itz_ qp_ops.c: In function ‘Parrot_nqp_string_equal_at_i_s_s_i’:
21:22 itz_ nqp_ops.c:12645:5: error: unknown type name ‘uint32_t’
21:22 moritz itz_: is that with the parrot 5.9.0 that was shipped with the RC0?
21:23 moritz TimToady++ mentioned the same error earlier, but somehow I thought it was a new parrot
21:24 FROGGS that might even be a compiler-specific issue
21:24 itz_ moritz: yes I did check I didn't have a different in my PATH
21:27 moritz LWP::Simple fails a test in t/basic-auth.t
21:27 moritz because the URL it asks for has stopped working
21:30 TimToady it's just whatever parrot is being generated by: perl Configure.pl --backends='jvm,parrot' --gen-nqp --gen-parrot
21:30 TimToady after rm'ing install, nqp and parrot dirs
21:30 dalek star: 7835615 | moritz++ | modules/perl6-lwp-simple:
21:30 dalek star: update LWP::Simple to a version that does not fail its tests
21:30 dalek star: review: https://github.com/rakudo/star/commit/783561557f
21:30 TimToady from HEAD
21:31 moritz TimToady: weird thing is, it's been that parrot for a month now
21:31 TimToady not even making it to the "make"
21:31 * TimToady wonders if there's been header file movement on linux
21:32 TimToady but you'd think it'd fail an include if so
21:32 FROGGS Parrot_nqp_string_equal_at_i_s_s_i is an improvement by timotimo and should live in nqp
21:32 TimToady well, it's compiling nqp_ops, wherever that lives
21:32 FROGGS nqp, yes
21:33 moritz commit c726cd58f3ab3a1dc27191496b4cee26aa752a69
21:33 moritz Author: Timo Paulssen <timonator@perpetuum-immobile.de>
21:33 moritz Date:   2013-10-08 19:46:02 +0200
21:33 moritz add nqp::eqat to jvm and parrot.
21:33 moritz that's the first commit that   git log -S uint32_t   finds
21:34 FROGGS right
21:34 FROGGS can't we just use INTVAL instead of uint32_t?
21:35 FROGGS uint32_t only appears once in nqp
21:35 moritz or we can use int32_t
21:35 benabik If uint32_t doesn't exist, I rather doubt int32_t will.
21:36 moritz but int32_t occurs first
21:36 FROGGS right, one line before the failing one
21:36 moritz so why should the compiler complain about uint32_t?
21:36 stevan_ joined #perl6
21:37 moritz and int32_t is also used once in code from 2011
21:37 moritz ok, trying with INTVAL now
21:39 arnsholt I'm pretty sure Parrot extension could should just use INTVAL
21:40 arnsholt That'll be signed, not unsigned, but more portable than uint32_t
21:40 dalek nqp: bdc22b9 | moritz++ | src/vm/parrot/ops/nqp.ops:
21:40 dalek nqp: try to fix the build on some systems
21:40 dalek nqp: review: https://github.com/perl6/nqp/commit/bdc22b9795
21:40 moritz TimToady: please try again with --gen-nqp=master
21:40 arnsholt IIRC uint32_t and friends are missing on MSVC
21:42 moritz if it works, I'll make a nqp-2013.11.1 point release
21:42 FROGGS "Not a throwable object" arghhh!
21:42 FROGGS that sounds like me talking to my kids
21:42 moritz lol
21:44 TimToady trying...
21:57 raiph joined #perl6
21:57 TimToady appears to have got past nqp_ops this time
21:57 moritz \o/
21:58 TimToady oh, funny thing, it got the same JVM failure, but rerunning the config immediately with the exact same command succeeded
21:58 dalek nqp: 2ad90ea | moritz++ | VERSION:
21:58 dalek nqp: bump VERSION to 2013.11.1
21:58 dalek nqp:
21:58 dalek nqp: seems we had build failures on some platforms, so a point release
21:58 dalek nqp: is in order to ensure a reliable Rakudo Star build
21:58 dalek nqp: review: https://github.com/perl6/nqp/commit/2ad90ea54d
21:58 TimToady so probably an out-of-memory thing
21:59 moritz ok, nqp point release tagged and uploaded
22:00 TimToady okay, finally got all the way through a: perl Configure.pl --backends='jvm,parrot' --gen-nqp=master --gen-parrot
22:00 TimToady now to make, finally
22:01 dalek star: 0b7ee80 | moritz++ | tools/star/Makefile:
22:01 dalek star: we need NQP 2013.11.1
22:01 dalek star: review: https://github.com/rakudo/star/commit/0b7ee801b1
22:01 moritz R* RC1 will have to wait until tomorrow, time for the regularly scheduled downtime
22:02 FROGGS moritz: have a nice downtime :o)
22:02 TimToady \o \o/ o/
22:18 TimToady hmm parsing the setting with perl6-j only takes about 45% of the time of perl6-p now
22:18 FROGGS that seems familiar
22:20 * TimToady checks out the inside of his eyelids to see if they're familiar &
22:23 FROGGS o/
22:24 raydiak r: {foo => (1,2,3).map: {$_}}
22:24 raydiak rakudo: {foo => (1,2,3).map: {$_}}
22:24 camelia rakudo-jvm 8d994c: OUTPUT«(timeout)»
22:24 camelia ..rakudo-parrot 8d994c: ( no output )
22:24 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: ( no output )
22:25 raydiak what am I doing wrong?
22:25 raydiak r: {foo => (1,2,3).map: {$_}}.perl
22:25 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: ( no output )
22:26 raydiak r: {foo => (1,2,3)}
22:26 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: ( no output )
22:26 raydiak r: say {foo => (1,2,3)}.perl
22:26 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«{"foo" => $(1, 2, 3)}␤»
22:26 raydiak r: say {foo => (1,2,3).map: {$_}}.perl
22:26 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«{"foo" => ().list.item}␤»
22:27 raiph joined #perl6
22:28 raydiak there we go.  that demonstrates my problem.  lazy lists in hashes don't seem to work.  or something.
22:28 raydiak r: say [(1,2,3).map: {$_}].perl
22:28 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«[1, 2, 3]␤»
22:29 raydiak r: say {foo => (1,2,3).map: {$_}}.perl
22:29 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«{"foo" => ().list.item}␤»
22:30 raydiak is it broken?  or is it me?  anyone?
22:32 raydiak r: say [[(1,2,3).map: {$_}]].perl
22:32 camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«[[1, 2, 3]]␤»
22:33 FROGGS rp: say ((1,2,3).map: {$_}).perl
22:33 camelia rakudo-parrot 8d994c: OUTPUT«(1, 2, 3).list␤»
22:33 FROGGS seems you hit a bug, yes
22:33 FROGGS rp: say (foo => ((1,2,3).map: {$_})).perl
22:33 camelia rakudo-parrot 8d994c: OUTPUT«"foo" => (1, 2, 3).list.item␤»
22:34 raydiak JSON::Unmarshal was failing tests...this turned out to be why
22:35 FROGGS star: say {foo => (1,2,3).map: {$_}}.perl
22:35 camelia star 2013-09: OUTPUT«{"foo" => ().list.item}␤»
22:35 FROGGS raydiak: did it work before?
22:35 FROGGS I mean, is that a regression?
22:36 raydiak FROGGS: never tried it before, I'm new...but I'm assuming it worked at some point in the last 4 months (latest commit)
22:38 FROGGS then we might need to bisect it
22:39 raydiak I'll file a bug report
22:39 adu joined #perl6
22:41 FROGGS raydiak++
22:43 raydiak thanks FROGGS++ I can finally stop banging my head against that wall :)
22:44 FROGGS :o)
22:48 berekuk joined #perl6
23:11 sqirrel joined #perl6
23:12 adu joined #perl6
23:38 kst` joined #perl6
23:39 adu hmm
23:40 adu http://pastie.org/8504195
23:41 adu perhapsn rakudo-jvm isn't quite working yet
23:43 FROGGS adu: increase java's max memory?
23:43 adu how do I do that? -d64?
23:44 adu but what if it's an infinite loop, then increasing it to a finite amount of memory won't help
23:46 adu This is the test:
23:46 adu http://pastie.org/8504203
23:49 raiph joined #perl6
23:50 FROGGS more like -Xmx1600m, I think you need to edit perl6-j
23:51 FROGGS well, if the C grammar is huge (what I' expect), then you need a bit of ram
23:52 kst`` joined #perl6
23:53 adu it's only around 1KLOC
23:54 adu https://github.com/andydud​e/c2drox/tree/master/lib/C
23:54 adu it was working quite well on parrot
23:55 FROGGS jvm is memory hungry...
23:55 adu perhaps I should try a json parser first
23:55 FROGGS I have no working rakudo atm, so I can't test
23:56 adu or datauris
23:58 adu 'data:' <content-type>? (';' <key> ('=' <value>)? )* ',' <any-chars>
23:58 adu or something like that

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo