»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:02 daniel-s joined 00:08 thou joined 00:12 Psyche^_ joined 00:13 ajr_ left, Entonian joined 00:16 Psyche^ left, Entonian left 00:20 rurban1 joined 00:24 rurban1 left 00:29 raiph left 00:46 raiph joined
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:49
jnthn mmm...beers :) 00:50
That to oel imperial stout was very nice indeed.
woolfy Hmm, I did not like that one very much. 00:51
But it is good to see you found your hotel!
I did like the tripel-style beer, and the gueuze beer as well.
I had six beers and I gave away two because I did not like them and I traded another one for another beer. 00:52
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
00:55 beastd left 01:14 sizz joined 01:20 rurban1 joined 01:24 raiph left 01:25 rurban1 left 01:26 thou left 01:36 FROGGS left, prevost joined 01:37 FROGGS joined 01:38 DrEeevil left, bonsaikitten joined, bonsaikitten left, bonsaikitten joined 01:53 tgt left 02:08 btyler left 02:13 berekuk left 02:19 pdurbin joined 02:35 btyler joined 02:45 raiph joined 02:49 araujo left 02:50 araujo joined 02:53 prevost left 03:01 btyler left 03:04 ssutch left 03:12 lizmat_ joined
dalek kudo-star-daily: 1f5d4c0 | coke++ | log/ (5 files):
today (automated commit)
03:13
rl6-roast-data: c43e34a | coke++ | p (2 files):
today (automated commit)
rl6-roast-data: 8021c58 | coke++ | / (3 files):
today (automated commit)
03:15 lizmat left 03:21 dwarring left 03:22 rurban1 joined 03:27 rurban1 left 03:41 araujo left 03:47 lowpro30 joined 03:49 raiph left 03:52 lowpro30 left 04:05 preflex left 04:07 preflex joined, ChanServ sets mode: +v preflex
dalek -pb: 60c6698 | (Geoffrey Broadwell)++ | lib/Metamodel/Perlable.pm:
Fix type rendering in PerlableAttribute.perl()

Switch to showing the container_descriptor's .of type instead of the attribute's .type, so that array attributes will render correctly. For example, an Int array attribute will now render as 'has Int @.array' rather than 'has Positional @.array'.
04:21
-pb: 34fcd84 | (Geoffrey Broadwell)++ | lib/PB/Binary/Writer.pm:
Packed repeated fields are always LENGTH_DELIMITED
-pb: 593e24f | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
Display boolean pb_packed trait without redundant '(True)'
-pb: f0f3e45 | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
Rename generic $name variable to $class-name
-pb: ef8832c | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
Properly handle repeated field attribute generation

Create our own container_descriptor and auto_viv_container to properly handle array-valued (repeated field) attributes.
04:31 BenGoldberg left 04:51 xinming left 04:52 xinming joined 04:53 rurban1 joined 04:57 xinming left, xinming joined 05:03 xinming left, xinming joined 05:06 benabik joined 05:13 xinming left, nopzi joined, xinming joined 05:15 nopzi left 05:41 MikeFair___ is now known as MikeFair 05:48 btyler joined
dalek -pb: 88ab375 | (Geoffrey Broadwell)++ | t/data/google-docs/test (4 files):
Add test protos from Google's offical encoding doc
05:53
-pb: 2c3c677 | (Geoffrey Broadwell)++ | t/generator.t:
Replace stub t/generator.t with a new one

Test parsing of encoding doc test messages, and subsequent message class generation, .^perl()ization, and use to write real protobufs.
japhb_ preflex: ask jnthn In github.com/samuraisam/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() ( github.com/samuraisam/p6-pb/blob/m...tor.pm#L39 )? 05:56
preflex Consider it noted.
japhb_ ... and with that, I'm AFK to let my brain rest. :-) 05:57
06:04 hummeleB1 joined 06:29 SamuraiJack joined 06:45 xenoterracide joined 06:51 xenoterracide left, bloonix left 06:52 Entonian joined, Bucciarati left 06:53 bloonix joined 06:54 Bucciarati joined 06:56 Entonian left, Bucciarati left
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, woolfy left 06:58 sahadev left, woolfy1 joined 07:00 bloonix left 07:01 bloonix joined 07:04 kaare_ joined 07:05 Bucciarati joined
moritz japhb_: what does ::('Test1').^mro.perl say? 07:23
07:37 dylanwh left, dylanwh joined 07:39 Lorn joined 07:40 simcop2387 left 07:41 simcop2387 joined 07:43 daveec_ joined, davecc_ joined 07:46 daveec left, davecc left
japhb_ moritz: (Failure, Any, Mu) -- it is indeed a Failure, which indicates that the symbolic lookup is failing. 07:46
Actually, I wonder if github.com/samuraisam/p6-pb/blob/m...or.pm#L154 is wrong. 07:47
That was some of the original code, and I never looked at it carefully.
On the other hand, I'm still weirded out that Test1.new() works even though ::('Test1') doesn't. 07:48
FROGGS japhb: you should export it without the amp, no? 07:57
at least classnames
japhb_ tries just removing that bit 07:58
dalek -pb: 49c7d75 | (Geoffrey Broadwell)++ | lib/PB/Model/Generator.pm:
Fix a Generator export bug

  moritz++ and FROGGS++ for reminding me to look at ancient code critically.
08:02
FROGGS \o/
japhb_ preflex: tell jnthn Nevermind, bug found. 08:03
preflex Consider it noted.
japhb_ wonders why it was ever like that in the first place. Working around an old Rakudo bug, perhaps?
FROGGS possible, but I don't know such a bug :o) 08:04
and, well, we don't have EXPORT that long I think
08:04 davecc_ left, daveec_ left
japhb_ shrugs 08:05
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
japhb_ Time to shift back to reading the binary PBs next time I have tuits. 08:06
08:06 davecc joined
japhb_ sleep & # Much happier for not having a bug nagging me, moritz++ and FROGGS++ for getting me better sleep. ;-) 08:07
timotimo :) 08:08
08:08 ssutch joined
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
serializing data and reading it back
FROGGS but that one is a google specific protocol? 08:13
timotimo no 08:14
Google makes the library
many people use it
FROGGS ahh
timotimo you specify the protocol and it generates code
FROGGS but I guess it is used in some google APIs ?
timotimo i believe so
08:14 [particle] joined
timotimo internally at least 08:14
08:15 nnunley left
timotimo will there be recordings of the npw talks on the net? 08:15
08:16 araujo joined
FROGGS I guess not 08:17
08:25 kivutar left, Rotwang joined
FROGGS jnthn: I dunno how to code-gen! /o\ 08:25
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:27
jnthn: the problem is that goto only supports an identifier after the keyword, so I have to stash the label somewhere, but where? 08:28
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
08:29 sqirrel joined
FROGGS jnthn: I just fail to stash that label 08:30
08:32 woolfy1 left 08:33 kaare_ left
FROGGS at least I am to 97% sure that this is the correct approach 08:41
08:42 lizmat_ left 08:47 slavik left 08:48 sqirrel left 08:49 btyler left 08:50 daveec left, davecc left 08:53 xinming left, xinming joined 08:57 MikeFair left 09:02 xinming left, xinming joined 09:03 telex left, daveec joined, davecc joined 09:04 telex joined, FROGGS[mobile] joined 09:07 slavik joined, rurban1 left
nwc10 quick, everyone change S17 09:08
diakopter O_O
timotimo is jnthns talk happening at this moment?
nwc10 the scheudle thinks so: act.yapc.eu/npw2013/talk/5187 09:09
09:09 xenoterracide joined
timotimo there are no live streams, right? 09:12
09:29 sqirrel joined 09:34 lizmat joined 09:39 ssutch left
masak good antenoon, #perl6 09:42
masak just realized that Perl 6 follows Bertrand Meyer's "Uniform Access Principle" 09:43
09:44 rindolf joined
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." -- martinfowler.com/bliki/UniformAcces...ciple.html 09:44
that's exactly what the '$o.attr = 42' syntax does.
timotimo yup
moritz and, IMHO more importantly, that you access attributes as methods 09:45
unlike js, where you have to know whether to write obj.thing or obj.thing()
masak I... I both like and dislike that distinction. 09:47
it's *very* nice sometimes to be able to talk about the method as a noun.
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
masak that... doesn't really fit, though.
timotimo i was about to write &foobar.method, but that's just as wrong
moritz the problem with talking about methods as nouns is that it can break a classes contract 09:55
you can do my $meth = $obj1.^can('meth')[0]; $meth($obj2)
where $obj2 is a subclass of the class of $obj1 and has overwritten 'meth' 09:56
masak that's equally possible with upcasts.
moritz and now you're calling the parent's method on the child, and break polymorphism
masak Rectangle r = (Rectangle)square;
et voila
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
masak I honestly don't see the difference.
09:57 berekuk joined
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
masak I contest that. 09:58
then what would be the point of upcasts?
moritz which language are we talking about now?
09:58 aindilis left
masak Java. 09:58
or any other statically typed language.
C# works the same.
moritz I'm pretty sure that in C++ for virtual classes you still get the most derived virtual method
masak interesting.
moritz *virtual methods
sorry
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.
but I'm 100% sure if you upcast something in Java, it calls Rectangle's method, not Square's. 10:00
you're basically saying "OK, let's make fewer assumptions about the type of this object for a while".
and Liskov is meant to make you safely be able to do that.
10:01 aindilis joined
moritz no 10:01
that's not what Liskov says
Liskov says that if you subclass, it must be save to call the subclassed metho
d
not "If you subclass, and there is a more specific method, it's fine to call the more general method" 10:02
masak define "safe". 10:04
"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
what that description is talking about is (quite directly) an upcast.
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"?
masak yeah. 10:07
if they subclass Rectangles.
moritz let my try a different approach 10:08
the normal API for calling a method in Perl 6 is $obj.area
10:08 rurban1 joined
moritz so I interpret Liskov's principle as saying $square.area should return the same as $rect.area 10:08
jnthn ohhai 10:09
preflex jnthn: you have 2 new messages. '/msg preflex messages' to read them.
masak jnthn! \o/
jnthn Grrr...busted winner failed one of my live demos!
moritz not as $square.Rectangle::area must return the same as $rect.area
masak jnthn: "busted winner"?
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... :(
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"
jnthn Will have to hunt it down...
And also try and boil my example down to a test case...
masak jnthn: that's just a negative result in research... :)
that's a good thing.
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
masak: so there must be some kind of "for certain desirable operations" restriction
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.
but upcasts should be OK.
moritz upcasts are a meta thing
masak because they are just making fewer type assumptions about an object.
no, not as in MOP.
moritz well, let's stay at the Perl 6 example
10:13 rurban1 left
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.
moritz then if that does an upcast, it needs to go meta
masak Perl 6 doesn't really have upcasts in that sense.
in the Java sense. 10:14
moritz well, it has $x.Rect::area
masak because Java distinguishes between "static type" and "runtime type".
moritz and if &dealwith used that instead of .area, people would say "that's stupid, you break subclassing"
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␤»
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
and that say "Liskov" is no good defense for such behavior
*upcasting
*saying
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:17
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.
jnthn Not sure there's a use otherwise...
jnthn doesn't quite see Square.new.Rect::area as an upcast...
masak moritz: more exactly, the Rectangle/Square example doesn't have a nice solution (with inheritance), unless you make the objects immutable.
10:20 rindolf left
moritz masak: right 10:22
jnthn: well, it's the closest we can get to an upcast in Perl 6 10:23
jnthn *nod*
It plays the same kinda role.
10:23 kivutar joined
dalek ast: bcdb5a5 | (Elizabeth Mattijsen)++ | S17-concurrency/channel.t:
.for now is a Supply method
10:25
jnthn timotimo: Oops. Looks like I may have introduced the bug while fixing the other bug... 10:29
FROGGS[mobile] jnthn: ahh, I should create the unique label name in the actions already... that would solve it! 10:30
jnthn FROGGS[mobile]: Well, you need an object I think so you can shove it in a WVal... 10:31
And then your uniqueness is just normal object referene semantics...
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?
Seems we get a channel test failing due to that...
$action = { $wild_done(:k($_)); } # is the one I mean 10:34
dalek kudo/nom: 0b79cb9 | jonathan++ | src/vm/jvm/core/asyncops.pm:
Fix another winner bug.
10:36
10:37 sqirrel left 10:39 daniel-s left
timotimo jnthn: oh, good question. must have overlooked it :( 10:47
10:47 tgt joined
jnthn timotimo: Got a fix here 10:50
dalek kudo/nom: b6eee1f | jonathan++ | src/vm/jvm/core/asyncops.pm:
Fix done * { last }.
10:51
timotimo jnthn: the talk's finished, right? 10:52
jnthn aye :)
.oO( no, I'm patching live on stage :P )
masak stranger things have happened. 10:54
timotimo was it good, despite my bug-ridden implementaiton of WINNER?
sjn jnthn, lizmat: pad.hackeriet.no/p/p6-deploy 10:55
10:55 xenoterracide left 10:56 xenoterracide joined
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
jnthn timotimo: Well, it was first talk of the day so...earrrly :P
But I think it was OK
lizmat it was :-) 11:02
masak jnthn++ # OK talk 11:04
tadzik ok 1 - talk 11:05
Woodi hej, hej :) 11:07
jnthn masak: If you'd hopped on the train over the bridge, you coulda seen it :P
um, assuming that's where you are :)
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:08
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...
Woodi yes, exactly :)
jnthn So you'll get most derived...
oh, two different objects... 11:11
Yeah, I can kinda see what you're saying. But if you've gone out of your way to not do a virtual dispatch... :)
Woodi probably in meta-reflection-things presence all is allowed, just not pure OO style... 11:12
anyway 'upcasting' means reaching up to the roots ? 11:13
jnthn Mostly, viewing an object as if it was one of its parent types 11:14
tadzik encounters www.pmichaud.com/toast/ 11:15
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. " :-)
jnthn It's still a funny mental image... :) 11:28
11:28 gfldex left 11:29 gfldex joined 11:37 xenoterracide left 11:43 eternaleye left, eternaleye joined 11:44 kurahaupo joined 11:46 rindolf joined
masak Woodi: I don't think that's how the word "lol" is used... ;) 11:47
jnthn: re bridge -- I considered it. but I can haz a cold :/
jnthn masak: awww 11:48
lizmat ah, so it was *you* who infected me!
jnthn masak: Though, you'd be in good company...
lizmat :-)
11:50 berekuk left
FROGGS humm, that seems not all to bad... Error while compiling op control: get_bool() not implemented in class 'LABEL' 11:52
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
Like xor gets false
FROGGS: 'cus while and friedds are already var-arg (2 or 3 args)
FROGGS it is passed as a named, yes
jnthn oh, cool 11:54
FROGGS :o)
11:57 berekuk joined 12:04 spider-mario joined 12:10 rurban1 joined 12:14 rurban1 left 12:16 sqirrel joined
dalek kudo/nom: ea77e4f | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Supply (2 files):
.tap now has done/quit named parameters
12:31
ast: 635b34a | (Elizabeth Mattijsen)++ | S17-concurrency/ (2 files):
Bring .tap tests up to spec
12:44
12:46 denis_boyun joined
dalek kudo/moar-support: 23777bb | jonathan++ | src/vm/moar/ (2 files):
Implement p6store for MoarVM.
13:00
FROGGS \o/
jnthn damn, I want hostmaster dk's internets... 13:01
so fast!
FROGGS *g* 13:05
jnthn: I thought I can use that as a hash, but apparently not... my $LABEL := $*W.pkg_create_mo(%*HOW<knowhow>, :name('VMHash')); 13:06
what am I doing wrong? 13:07
jnthn Did you mean :repr? But anyways, not available on Parrot... 13:10
Wait, what are you doing?
Creating a new *type* per label?
FROGGS hold on 13:11
jnthn I'd just declare a class NQPLabel { } or so in the NQP core setting....
FROGGS gist.github.com/FROGGS/e03e0b067431a23b790c
ahh
jnthn Why'd you need a hash, though?
FROGGS yeah
just to stash the labels...
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...
FROGGS hmmm, I'm not sure I understand 13:13
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?
And keep going if not?
timotimo tadzik: you hvae an unmerged branch in nqp, "jvm-sockets", is that obsolete? 13:26
tadzik timotimo: yeah, I think so 13:28
timotimo should i delete it for you?
tadzik yeah, thanks :)
timotimo you probably have a local copy anyway
tadzik probably
doesn't matter, we have sockets in jvm now :) 13:29
timotimo yeah
maybe they're sucky? ;)
13:30 renormalist left
dalek p: 2339be2 | jonathan++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Unboxers should decont.
13:30
tadzik as apposed to mine? :P
timotimo yeah
what do i know? ;)
tadzik unlike me, donaldh seemed to have some idea on what he was doing with them :P 13:31
timotimo okay, great :) 13:32
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?
tadzik now, if we had some Perl 6 side spec on them, that'd be great
other than "yeah, there should be recv, read, send, and something"
jnthn timotimo: How old is the branch?
timotimo: and was it merged?
timotimo unmerged, 5 months old 13:34
but perhaps you cherry-picked the commits somewhere
jnthn hm, I've no idea what it was for :)
sjn tadzik: any thoughts/additions on the pad we made?
dalek kudo/moar-support: 673c790 | jonathan++ | src/vm/moar/ops/container.c:
Stub in scalar store.
timotimo it touched java code
13:34 renormalist joined
lizmat yikes! 13:35
jnthn timotimo: Oh my, it's dirty
timotimo :) 13:36
jnthn timotimo: I suspect I fixed the issue given we pass 99%+ spectests on JVM :)
lizmat only thing still really borked on JVM are backtraces
jnthn yeah, and I didn't immediately see why...
timotimo probably :)
there's still a moarboot branch and it wasn't merged directly 13:38
jnthn that can go 13:39
I rebased 13:40
13:40 berekuk left
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
timotimo now the branch list fits on one screen again for my terminal :) 13:43
13:43 xinming left, xinming joined 13:49 berekuk joined
moritz today's mini-challenge: colinm.org/language_checklist.html make the appropriate check marks for Perl 6 13:52
dalek ast: 3e24470 | (Elizabeth Mattijsen)++ | S17-concurrency/channel.t:
Remove tests for .peek
timotimo hm. how does using from NQP work? 13:55
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
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
timotimo having no use QRegex, though, gives me "no method for invocant of type NQPMu" because QRegex::Optimizer evaluates to NQPMu
or at least i thought that was what it was
jnthn timotimo: I think it should live in the NQPP6Qregex lib, not the QRegex one, though... 13:57
timotimo i can do that
jnthn QRegex is the runtime bits, the other one is the compile time bits
timotimo so i'll have to use NQPP6QRegex?
ah, that's a good distinction
so it should go into P6Regex/, too?
jnthn Yeah. But we already do that in NQP somewhere I think
Yeah, I would.
timotimo i think i made it work, thanks! 14:02
jnthn yayz 14:03
timotimo more like QYay
moritz invented by qmichaud :-) 14:04
lizmat++ # non-ASCII release tag 14:06
the first of its kind
jnthn Yeah, my console shoved the dots to the right of the o, though. Fail!
dalek kudo/nom: c64efea | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Channel.pm:
Make Channel.peek private, as it is not specced
lizmat hehe
so, how much did I break ? 14:07
14:11 rurban1 joined 14:16 MikeFair joined, rurban1 left
FROGGS compiles moar 14:17
timotimo so ... i've been thinking 14:18
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
how about storing a little skip table for strings longer than 1kb? or something of that sort?
14:21 raiph joined
jnthn timotimo: On Parrot we match the regex against ucs4 already when possible 14:21
FROGGS "cannot numify this" 14:22
jnthn: is that where you are?
jnthn FROGGS: That means you haven't picked up the latest NQP patch I did too
timotimo right, i'm thinking of the cases where we don't have that 14:23
FROGGS ahh, yes, very true
timotimo the problem is very visible when compiling the Actions and Grammar.
dalek kudo/nom: f276f25 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Channel.pm:
last works again inside winner, jnthn++
timotimo the line pos cache takes about 5 seconds for Actions.nqp, but only 0.002s for the whole of the setting.
and Actions and Grammar have « and » in them.
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)
dalek ast: 9c17d2a | (Elizabeth Mattijsen)++ | S17-concurrency/channel.t:
Magically, the "last" fix removes the hang
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:25
lizmat timotimo: but the setting *does* have « in them 14:26
*it
timotimo oh?
is « and » still in ucs4?
r: '«»'.ords.perl.say
camelia rakudo-jvm ea77e4: OUTPUT«(timeout)» 14:27
..rakudo-parrot ea77e4: OUTPUT«(171, 187).list␤»
timotimo seems like they are
so something else must be in actions and gramar that prevents it from being represented as ucs4
p: '¢'.ords.perl.say 14:28
camelia rakudo-parrot c64efe: OUTPUT«(162,).list␤»
jnthn ucs4 = 32-bit, so yeah, all the unicode fits in it
I guess the issue is that when we pick out substrings we do it on orig
timotimo hm. if i take a substr after each findcclass, i could perhaps remove one power of complexity 14:29
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
jnthn timotimo: Well, trouble is that we only have the problem on one backend (Parrot) 14:30
timotimo: We don't keep strings around as UTF-8 anywhere else. 14:31
So if you do anything, please make sure you mark it out as Parrot only, otherwise it's a pessimization for everything else.
timotimo oh, OK 14:32
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
that would already cause a big boost in that specific case and gives me a ~7s faster compile (all in all) on my machine.
jnthn um...what if you call it on a different string next time?
timotimo it has to remember which string it was called on, of course 14:34
is there something smarter to recognize a string by than its address? parrot probably has a moving GC, right? 14:35
FROGGS "No registered operation handler for 'p6parcel'" <--- jnthn: this? 14:36
dalek kudo/moar-support: 3afeb7f | jonathan++ | src/vm/moar/ (2 files):
Implement p6parcel.
14:38
jnthn FROGGS: was that :) 14:40
timotimo: Parrot GC doesn't move
FROGGS gah! 14:41
jnthn Or at least, PMCs sure don't which I guess must mean nothing does...
timotimo that sounds helpful
FROGGS jnthn: I can't work that way!
:P
jnthn fails in something enum related now 14:42
I'm guessing the enum TimeUnit at 14099 or so
FROGGS that'd be masak's fault then 14:43
jnthn :P
FROGGS he's not meant to implement Stolpersteine :o)
jnthn yeah, it is in there...hm 14:46
dalek kudo/nom: 5175adf | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Implement listless map provisionally
14:47
FROGGS ahh, yes 14:50
Cannot find method 'key'
at src/gen/m-Metamodel.nqp:2838 (blib/Perl6/Metamodel.moarvm:add_enum_value:17)
jnthn Yeah. Hmm 14:52
But there's an enum that worked earlier on...
FROGGS I'd guess that rebless or clone are buggy
hmmm
dalek kudo/nom: b063f81 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Channel.pm:
Implement Channel.list using a listless map
jnthn FROGGS: Why, ooc? 14:58
FROGGS because it tries to call .key on $val which is created using nqp::rebless(nqp::clone(... in world line 1589 14:59
I am printing now nqp::can($value, 'key') and nqp::can($val, 'key') 15:00
ohh, humm
jnthn yeah, not a bad idea..
FROGGS it already created three enum values, and nqp::can($value, 'key') was false-ish where nqp::can($val, 'key') was true
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
jnthn Right, that's just an integer thingy
Whereas we rebless it to get the enumeration related things 15:02
FROGGS ahh
jnthn r: enum Foo<a b>; say a ~~ Int; say a.WHAT
camelia rakudo-parrot c64efe, rakudo-jvm c64efe: OUTPUT«True␤(Foo)␤»
jnthn r: enum Foo<a b>; say a.^mro
camelia rakudo-parrot c64efe, rakudo-jvm c64efe: OUTPUT«(Foo) (Int) (Cool) (Any) (Mu)␤»
15:05 kivutar left
FROGGS yeah, for the fourth enum value nqp::can($val, 'key') is false... 15:05
jnthn odd, it's first time for me...
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.
that's the one i just implemented
FROGGS jnthn: the three things that work are of type Order btw 15:10
15:12 rurban1 joined
jnthn FROGGS: oh...ok, yes, they work for me too... 15:12
FROGGS: So we're seeing same. 15:13
I meant first one of TimeUnit...
dalek ar: a2682c7 | moritz++ | README:
[README] bump version, and memory requirement
jnthn ooh, I see a bug...
diakopter grimaces ;)
moritz jnthn: when I look into RT, I see hundreds of bugs :-) 15:14
diakopter moritz: 2GB on both parrot and jvm?
moritz diakopter: dunno; star is still parrot-only, mostly 15:15
diakopter er, or do the instructions only apply to parrot (duh)
diakopter throws the 'make star work on jvm backend' task at someone [else]
[.. as if I would've/could've done it anyway :( ] 15:16
15:16 rurban1 left
timotimo we're still blocking on arnsholt and/or jnthn finishing up jvm-nativecall? 15:16
FROGGS jnthn: yes, TimeUnit fails 15:17
jnthn Ain't nobody got timeunit for that...
FROGGS hehe
dalek ar: f554958 | moritz++ | modules/ (3 files):
Upgrade json, panda and http-status
15:18
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…»
..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.␤--------------------…»
jnthn Sadly, fixing the Moar bug didn't fix it... 15:22
FROGGS :(
I don't see where TimeUnit is so different from Order
dalek ar: 68b2d8c | moritz++ | docs/announce/2013.11.md:
add initial release announcement
15:23
timotimo so, is there some magic stuff on parrot that we can use to implement non-blocking IO? 15:25
or are we going to skip doing it on parrot and just have it on moar and jvm?
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
timotimo: the docs are full with it, but it's not implemented at all
timotimo aaw
jnthn nqp::say(nqp::can($enum_type_obj, 'key')); # also 0... 15:31
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:32
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
does that sound sane?
FROGGS jnthn: yeah, I guessed that
15:36 denis_boyun left
timotimo that could, imo, work well with the Want idea i had ... 15:40
15:43 daxim left 15:44 [Sno] left 15:45 [Sno] joined
jnthn FROGGS: well, seems it's not the method cache's fault. 15:49
15:55 denis_boyun joined 15:56 Rotwang left
dalek p/simplify_before: 4f8a8c0 | (Timo Paulssen)++ | / (3 files):
QRegex::Optimizer lives in NQPP6QRegex now.
15:58
p/simplify_before: b7e33f0 | (Elizabeth Mattijsen)++ | VERSION:
bump VERSION to 2013.11
p/simplify_before: 1d3e6b1 | (Timo Paulssen)++ | src/QRegex/P6Regex/Optimizer.nqp:
optimize the topmost regex node as well ...
p/simplify_before: 8cfd4c9 | (Timo Paulssen)++ | src/QRegex/P6Regex/Optimizer.nqp:
a scan followed by a BOS anchor is useless.
moritz Testing modules/jsonrpc... 15:59
===SORRY!===
Missing or wrong version of dependency '/home/moritz/p6/star/rakudo-star-2013.11/install/lib/parrot/5.9.0/languages/perl6/lib/MIME/Base64/PIR.pm6'
(when testing R*)
lizmat something I did in the release ? 16:01
16:02 sqirrel left
jnthn FROGGS: Heh. The method table contains a couple of entries like Str<39311992>... 16:02
timotimo heh heh
that's a little wrong
lizmat isn't that a .WHICH value ?
timotimo looks like, yeah 16:03
jnthn No, it's the default stringification
retupmoca moritz: is that something broken inside of MIME::Base64? 16:04
moritz retupmoca: I don't know yet, might also be order of precompilation that's broken 16:05
16:10 xinming left 16:12 xinming joined
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
16:12 Rotwang joined
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... :)
timotimo i mean, how often do you actually have .*
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:14
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
for ...? it doesn't make very much sense, but if it had something a tiny bit more complicated, it could help
also a bit hairy to analyze :p 16:17
16:18 dr_df0 joined, dr_df0 left 16:36 dr_df0 joined 16:38 dr_df0 left 16:44 sqirrel joined
timotimo merging in the newest nqp changes gets me a Confused :( 16:44
16:59 rurban1 joined
dalek kudo/moar-support: 3ca2699 | jonathan++ | src/Perl6/Actions.nqp:
Don't emit bindassert when constraint is Mu.
17:16
17:20 sqirrel left 17:23 ajr joined 17:24 ajr is now known as Guest28658, Guest28658 is now known as ajr_
dalek kudo/moar-support: 6123c77 | jonathan++ | src/core/terms.pm:
Add Moar sections in terms.pm.
17:27
jnthn j: class A { ... } 17:38
camelia rakudo-jvm b063f8: OUTPUT«===SORRY!=== Error while compiling /tmp/i0McVMGdnK␤The following packages were stubbed but not defined:␤ A␤at /tmp/i0McVMGdnK:1␤------> class A { ... }⏏<EOL>␤ expecting any of:␤ argument list…»
17:46 benabik left 17:50 nnunley joined 17:53 adu joined
adu I don't remember the last time I was in this channel 17:55
FROGGS hi adu :o)
adu I FROGGS :) I remember you
FROGGS hehe
dito
adu s/I/hi/
s/I F/hi F/ 17:56
anyways
I vaugely recall trying to help with nqp-jvm or something a couple months ago 17:57
is jnthn around?
moritz hello
adu o hi moritz!
18:04 raiph left
adu wooohooo! there is a "Building Rakudo on JVM" section in the readme! 18:04
TimToady jnthn++ is currently at dinner
adu I'm so excited about JVM
dalek kudo/moar-support: b170926 | (Tobias Leich)++ | tools/build/Makefile-Moar.in:
add new core source file
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
adu is that a reference to www.brcommunity.com/b632.php ? 18:06
TimToady nope 18:07
18:10 raiph joined 18:12 zakharyas joined 18:14 berekuk left
timotimo it seems like i have to go into parrot to make find_cclass and friends faster like that 18:19
how do i skip a known number of bytes for a string iterator without breaking things horribly? 18:20
18:21 benabik joined
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:23
moritz I have a commit bit. I can accept it :-) 18:24
FROGGS hehe
moritz not saying it would be a good idea... :-)
dalek ar: 71e7a14 | moritz++ | tools/build/Makefile.in:
bump version
18:26
ar: ab71d00 | moritz++ | modules/Template-Mojo:
Update Template-Mojo to a version that doesn't warn about .bless(*)
timotimo i suppose i could implement a special version of find_cclass for utf8 that does the caching of the byte positions
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:27 lizmat left 18:33 berekuk joined 18:35 slavik left 18:39 darutoko left
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…»
TimToady p: my @a = (); .say for map {;}, @a;
camelia ( no output )
TimToady p: my @a = (); .say for map {$_}, @a; 18:40
camelia ( no output )
18:41 denis_boyun left
TimToady doesn't quite believe in listless map 18:41
p: my @a = (); .say for map {$_};
18:42 adu left
camelia rakudo-parrot b063f8: OUTPUT«(timeout)» 18:42
18:43 btyler joined
TimToady if we want that functionality, it should be named something else 18:43
diakopter what does listless map iterate 18:44
TimToady had thought it iterated over 0..*, but apparently not 18:45
p: my @a = (); .say for map {$_}, ^*;
camelia rakudo-parrot b063f8: OUTPUT«WhateverCode.new()␤»
diakopter ^*
TimToady hah 18:46
that's...probably a bug
can argue it both ways
diakopter p: say ^* 18:47
camelia rakudo-parrot b063f8: OUTPUT«WhateverCode.new()␤» 18:48
diakopter p: say (^*)(44)
camelia rakudo-parrot b063f8: OUTPUT«0..^44␤»
diakopter p: say (^*)(^*)
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…»
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…»
timotimo oh, i can actually cache the iterator itself! wow, that's evil :)
18:50 kaare_ joined
timotimo i meant clever! 18:52
FROGGS[mobile] hehe
timotimo additionally: safe! :) 18:55
timotimo compiles a parrot to see how his code does
18:58 lizmat joined, dr_df0 joined
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
for shorter strings the time growth due to endless rescans isn't terribly big
19:01 woolfy joined
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 :\
i should debug this.
TimToady nwc10: does p5 still just cache the last used position on UTF-8? 19:04
TimToady cannot configure the JVM build right now; is that a known failure? 19:08
19:09 xenoterracide joined
FROGGS TimToady: unknown to me at least... what happens (not)? 19:16
TimToady gist.github.com/TimToady/7618709
this is after removing install, parrot, and nqp
timotimo i got it sped up by a factor of about 2 19:17
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? ;)
timotimo .o(still a horrid time, 2.5 seconds)
19:18 raiph left
diakopter TimToady: seriously though, looks like a jvm problem 19:20
FROGGS TimToady: I can build nqp-j HEAD on my box 19:21
java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
TimToady "If you would like to submit a bug report, please include instructions on how to reproduce the bug..."
TimToady wonders if it's the sort of thing a reboot would fix... 19:22
19:22 dr_df0 left
timotimo yup, i get a factor of 2 improvement. does that sound like something the parrot folks would be interested in? 19:23
19:24 fridim_ joined
TimToady nah, they're more interested in 5% improvements :P 19:24
19:25 btyler left
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
TimToady I think if we judge by appearances, every project is more interested in 5% wins :)
what are you attaching this cache to? 19:27
timotimo C static variable
(that's why i thought it was so elegant)
TimToady p5 stores it in the string itself
well, in it's headers
timotimo then different operations could make use of it 19:28
hmm.
TimToady well, it's in a "magic" iirc
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:29
timotimo right. 19:31
19:31 btyler joined
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
well, and position 0 of course
but you don't have to cache that mapping :)
timotimo mhh, backwards 19:33
TimToady utf8 has nice self-clocking characteristics that way 19:34
otoh, dunno how much effort we should put into supporting utf8 when we'll be moving to nfg soon 19:35
well, it's apples and oranges, really, since nfg is an abstraction that could sit on top of any encoding
and utf8 position is still codepoint position, which is bogus in the grapheme view 19:36
timotimo yup
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
arguably, that has already happened with threading
(albeit wrt the jvm, not moar)
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 :)
FROGGS but we won't rip out the parrot glue code, even when other backends might support more and moar features
timotimo not for a long time, yeah
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
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
TimToady well, yes, most usage patterns are left-to-right 19:41
19:41 raiph joined
nwc10 the end is also cached 19:41
TimToady yes, I suspected that above
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
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:43
19:44 rindolf left 19:45 tgt left
masak can walk forwards at least twice as fast as he can walk backwards... 19:47
19:47 SL-RHanson left
TimToady nwc10: it'll be highly data dependent 19:48
masak well, it depends on the exact parameters, actually.
19:48 kivutar joined
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
moritz call fall backwards twice as fast as he can talk forwards
erm...
s/call/can/
nwc10 yes, it will depend on byte size.
er, number of octets needed for a char
TimToady CJK will only have to visit 1 in every 3 bytes going forwards
masak btw, an autopun spotting from the other day: twitter.com/LeynerMark/status/4028...9535970304 19:49
also by the way, I noticed "masak's fault" in the backlog... 19:51
moritz lizmat: (re 'make realclean' yesterday) I've fixed that in branch moar-support, and forgot to cherry-pick to nom
masak FROGGS: anything I can help with re TimeUnit?
moritz and now I kinda hope that moar-support lands soon enough that I don't have to bother :-)
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!"
that's pretty nifty.
TimToady timotimo: it's better than that, the first byte encodes the length 19:52
timotimo oh!
of course it does, i forgot about that
parrot already does that with a table 19:53
TimToady you could do a speculative scan backwards that way though
check position - 3 for a 3-byte codepoint
would probably work nicely in CJK langauges 19:54
well, as nicely as any variable length encoding can
19:54 hummeleB1 left
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:55
*we're 19:56
timotimo uh oh 19:57
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
nwc10 compared with implementing storage as conversion to fixed 8, 32 (or 16) bit storage of code points.
19:59 tgt joined
TimToady it's a pity more machines don't support 24-bit integers :) 19:59
FROGGS masak: already fixed :o) 20:00
masak \o/ 20:01
also, phew
FROGGS masak: this was the fix btw: github.com/MoarVM/MoarVM/commit/ab...b9e5a86118
:o)
masak I see. nice. 20:02
moritz 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
Missing or wrong version of dependency '/home/moritz/p6/star/rakudo-star-2013.11/install/lib/parrot/5.9.0/languages/perl6/lib/MIME/Base64/PIR.pm6'
while building LWP::Simple
but 20:06
MIME::Base64::PIR is precompiled first (line 315, vs. error at line 325)
so I have no clue what's wrong 20:07
any ideas? 20:11
moritz hates, hates, hates that error 20:12
arnsholt Me too 20:15
I usually end up rebuilding things, starting at the top and working my way towards NQP
20:16 sqirrel left
retupmoca it looks like precompilation is breaking it somehow 20:17
moritz retupmoca: aye, the question is just how to avoid it
retupmoca if I manually precompile the 3 .pm6 files in the MIME::Base64 repo, running a 'prove -e perl6-p' still throws the error
moritz retupmoca: if $*VM<name> eq 'parrot' { $default-backend 20:18
= MIME::Base64::PIR;
retupmoca: how does that even compile on non-parrot backends?
it should stumble over the undeclared class name, no? 20:19
retupmoca I have no idea
but last time I tried, perl6-j ate it just fine
and passed the tests
FROGGS it should be looked up indirectly 20:20
::('MIME::Base64::PIR') or so
moritz FROGGS: that's what I thought too
20:21 xenoterracide left 20:22 MikeFair left
retupmoca if I change the 'require' to a 'use' it runs withtout that error 20:22
without*
20:22 SamuraiJack left
moritz that fixes it for parrot, but will fail on the JVM 20:24
retupmoca right
since then it's not included conditionally
if I comment out all the ::PIR stuff, it throws the same error for ::Perl
FROGGS you could stub a M::B::PIR class
and then use require 20:25
moritz FROGGS: the problem with require is that it breaks precompilation, somehow, it seems
FROGGS r: try { require Hurz }; say GLOBAL::
camelia rakudo-parrot b063f8, rakudo-jvm b063f8: OUTPUT«().hash␤»
retupmoca yeah, the require is what's messing it up somehow 20:26
and now that I look at it, I'm not sure how the JVM isn't barfing on that = MIME::Base64::PIR line
but it still passes all the tests
20:26 btyler left
moritz retupmoca: can you try with BEGIN eval 'use MIME::Base64::PIR' if $*VM<name> eq 'parrot' please? 20:27
20:27 MikeFair_ joined
moritz and then refer to the class as ::('MIME::Base64::PIR') 20:27
retupmoca will do
timotimo gnite friends! 20:29
TimToady o/
FROGGS gnight timotimo
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:31
FROGGS should it report the .pm6 at all? I would think it will complain about .pir 20:32
or .bpc
pbc*
retupmoca gist.github.com/retupmoca/7619564
^-- what the file looks like after the BEGIN eval change
20:33 berekuk left
retupmoca and comment added with the error I get 20:34
if I precompile ::PIR and ::Perl, but not the main MIME::Base64 file, it tests just fine 20:35
moritz but then dependent modules can't be precompiled either 20:37
which is, like, bad for star. Very bad.
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
which unconditionally uses ::PIR
and use that in star 20:39
for now
TimToady after a roboot, my parrot compilation fails, nqp_ops.c says "nqp_ops.c:12645:5: error: unknown type name ‘uint32_t’
moritz that gives us another month to fix precompilaton + conditional use 20:40
retupmoca oh, this is interesting
if I remove the "fake use" comment, I get a slightly different error: "Missing or wrong version of dependency 'eval_0'
moritz oh 20:41
FROGGS rp: #`[ use blarg ]
camelia ( no output )
FROGGS rp: #`[␤use blarg;␤]␤
camelia ( no output )
moritz jnthn: does rakudo still have this thing where module loading pre-parses the file somehow?
FROGGS well, yes 20:42
it evals it to capture its context, if you mean that
retupmoca moritz: do you want me to make a 'precompile-fix' branch for now then? 20:43
moritz retupmoca: that would be helpful, yes
moritz tries another thing: make the precompiler recognize 'require', and remove the fake-use comment 20:45
nope, doesn't work :( 20:46
retupmoca moritz: branch precompile-fix now exists on github 20:50
moritz retupmoca: thank you
20:51 tgt left 20:52 tgt joined 20:53 raiph left
dalek ar: 5fc3b97 | moritz++ | modules/Perl6-MIME-Base64:
use Perl6::MIME branch precompile-fix, retupmoca++
20:53
ar: a0934a6 | moritz++ | tools/build/module-install.pl:
precompilation order: consider require
20:55
20:56 benabik left, benabik joined
moritz moritz.faui2k3.org/tmp/rakudo-star-...RC0.tar.gz please test! 20:58
masak moritz++ 20:59
retupmoca I've also added a precompile-fix-pponly branch that only tries to load the pure perl version 21:04
just in case someone needs to run the precompile-fix version on a non-parrot rakudo 21:05
(of MIME::Base64, of course)
dalek kudo/nom: 8d994cf | moritz++ | tools/build/check-versions.pl:
adapt check-versions.pl error message to current Configure.pl realities
21:06
21:10 woolfy left
moritz ok, installation of RC0 went without any errors here 21:12
FROGGS tries to throw a label now 21:13
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:16
moritz yes, it installs to install/ 21:18
FROGGS .oO( To Install Or Not To Install? ) 21:19
masak ...that is the query. 21:22
itz_ with that RC0 I get
qp_ops.c: In function ‘Parrot_nqp_string_equal_at_i_s_s_i’:
nqp_ops.c:12645:5: error: unknown type name ‘uint32_t’
moritz itz_: is that with the parrot 5.9.0 that was shipped with the RC0?
TimToady++ mentioned the same error earlier, but somehow I thought it was a new parrot 21:23
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
moritz LWP::Simple fails a test in t/basic-auth.t 21:27
because the URL it asks for has stopped working
TimToady it's just whatever parrot is being generated by: perl Configure.pl --backends='jvm,parrot' --gen-nqp --gen-parrot 21:30
after rm'ing install, nqp and parrot dirs
dalek ar: 7835615 | moritz++ | modules/perl6-lwp-simple:
update LWP::Simple to a version that does not fail its tests
TimToady from HEAD
moritz TimToady: weird thing is, it's been that parrot for a month now 21:31
TimToady not even making it to the "make"
TimToady wonders if there's been header file movement on linux
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
TimToady well, it's compiling nqp_ops, wherever that lives
FROGGS nqp, yes
moritz commit c726cd58f3ab3a1dc27191496b4cee26aa752a69 21:33
Author: Timo Paulssen <timonator@perpetuum-immobile.de>
Date: 2013-10-08 19:46:02 +0200
add nqp::eqat to jvm and parrot.
that's the first commit that git log -S uint32_t finds
FROGGS right 21:34
can't we just use INTVAL instead of uint32_t?
uint32_t only appears once in nqp 21:35
moritz or we can use int32_t
benabik If uint32_t doesn't exist, I rather doubt int32_t will.
moritz but int32_t occurs first 21:36
21:36 stevan_ left
FROGGS right, one line before the failing one 21:36
moritz so why should the compiler complain about uint32_t?
21:36 stevan_ joined
moritz and int32_t is also used once in code from 2011 21:37
ok, trying with INTVAL now
arnsholt I'm pretty sure Parrot extension could should just use INTVAL 21:39
That'll be signed, not unsigned, but more portable than uint32_t 21:40
dalek p: bdc22b9 | moritz++ | src/vm/parrot/ops/nqp.ops:
try to fix the build on some systems
moritz TimToady: please try again with --gen-nqp=master
arnsholt IIRC uint32_t and friends are missing on MSVC
moritz if it works, I'll make a nqp-2013.11.1 point release 21:42
FROGGS "Not a throwable object" arghhh!
that sounds like me talking to my kids
moritz lol
TimToady trying... 21:44
21:56 ajr_ left 21:57 raiph joined
TimToady appears to have got past nqp_ops this time 21:57
moritz \o/
TimToady oh, funny thing, it got the same JVM failure, but rerunning the config immediately with the exact same command succeeded 21:58
dalek p: 2ad90ea | moritz++ | VERSION:
bump VERSION to 2013.11.1

seems we had build failures on some platforms, so a point release is in order to ensure a reliable Rakudo Star build
TimToady so probably an out-of-memory thing
21:59 kaare_ left
moritz ok, nqp point release tagged and uploaded 21:59
TimToady okay, finally got all the way through a: perl Configure.pl --backends='jvm,parrot' --gen-nqp=master --gen-parrot 22:00
now to make, finally
dalek ar: 0b7ee80 | moritz++ | tools/star/Makefile:
we need NQP 2013.11.1
22:01
moritz R* RC1 will have to wait until tomorrow, time for the regularly scheduled downtime
FROGGS moritz: have a nice downtime :o) 22:02
TimToady \o \o/ o/
22:08 zakharyas left
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
TimToady checks out the inside of his eyelids to see if they're familiar & 22:20
FROGGS o/ 22:23
22:23 raiph left
raydiak r: {foo => (1,2,3).map: {$_}} 22:24
rakudo: {foo => (1,2,3).map: {$_}}
camelia rakudo-jvm 8d994c: OUTPUT«(timeout)»
( no output )
( no output )
raydiak what am I doing wrong? 22:25
r: {foo => (1,2,3).map: {$_}}.perl
camelia ( no output )
raydiak r: {foo => (1,2,3)} 22:26
camelia ( no output )
raydiak r: say {foo => (1,2,3)}.perl
camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«{"foo" => $(1, 2, 3)}␤»
raydiak r: say {foo => (1,2,3).map: {$_}}.perl
camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«{"foo" => ().list.item}␤» 22:27
22:27 raiph joined
raydiak there we go. that demonstrates my problem. lazy lists in hashes don't seem to work. or something. 22:28
r: say [(1,2,3).map: {$_}].perl
camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«[1, 2, 3]␤»
raydiak r: say {foo => (1,2,3).map: {$_}}.perl 22:29
camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«{"foo" => ().list.item}␤»
raydiak is it broken? or is it me? anyone? 22:30
r: say [[(1,2,3).map: {$_}]].perl 22:32
camelia rakudo-parrot 8d994c, rakudo-jvm 8d994c: OUTPUT«[[1, 2, 3]]␤»
FROGGS rp: say ((1,2,3).map: {$_}).perl 22:33
camelia rakudo-parrot 8d994c: OUTPUT«(1, 2, 3).list␤»
FROGGS seems you hit a bug, yes
rp: say (foo => ((1,2,3).map: {$_})).perl
camelia rakudo-parrot 8d994c: OUTPUT«"foo" => (1, 2, 3).list.item␤»
raydiak JSON::Unmarshal was failing tests...this turned out to be why 22:34
FROGGS star: say {foo => (1,2,3).map: {$_}}.perl 22:35
camelia star 2013-09: OUTPUT«{"foo" => ().list.item}␤»
FROGGS raydiak: did it work before?
I mean, is that a regression?
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:36
FROGGS then we might need to bisect it 22:38
raydiak I'll file a bug report 22:39
22:39 adu joined
FROGGS raydiak++ 22:41
raydiak thanks FROGGS++ I can finally stop banging my head against that wall :) 22:43
22:44 raiph left
FROGGS :o) 22:44
22:48 berekuk joined 23:10 adu left 23:11 sqirrel joined 23:12 adu joined 23:22 sqirrel left 23:38 kst` joined
adu hmm 23:39
pastie.org/8504195 23:40
23:40 kst left
adu perhapsn rakudo-jvm isn't quite working yet 23:41
FROGGS adu: increase java's max memory? 23:43
adu how do I do that? -d64?
but what if it's an infinite loop, then increasing it to a finite amount of memory won't help 23:44
This is the test: 23:46
pastie.org/8504203
23:49 raiph joined
FROGGS more like -Xmx1600m, I think you need to edit perl6-j 23:50
well, if the C grammar is huge (what I' expect), then you need a bit of ram 23:51
23:52 kst`` joined
adu it's only around 1KLOC 23:53
23:54 kst` left
adu github.com/andydude/c2drox/tree/master/lib/C 23:54
it was working quite well on parrot
FROGGS jvm is memory hungry... 23:55
adu perhaps I should try a json parser first
FROGGS I have no working rakudo atm, so I can't test
adu or datauris 23:56
'data:' <content-type>? (';' <key> ('=' <value>)? )* ',' <any-chars> 23:58
or something like that