|
»ö« 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«FooSaw 1 call to deprecated code during execution.================================================================================Method ucfirst (from Cool) called at: /tmp/0SKP5WzTZ2, line 1Please 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/i0McVMGdnKThe following packages were stubbed but not defined: Aat /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 | |||