»ö« 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:03
pdcawley left
00:10
xinming left
00:16
raiph joined
|
|||
Ben_Goldberg | rn: ((map { $_ }, ^Inf) but role {})[0].print | 00:19 | |
camelia | niecza v24-88-g1f87209: OUTPUT«0» | ||
..rakudo aab3d7: OUTPUT«This type does not support elems in method REIFY at src/gen/CORE.setting:7492 in method reify at src/gen/CORE.setting:6718 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_pos at src/gen/CORE.setting:… | |||
Ben_Goldberg | rn: ((^Inf) but role {})[0].print | 00:20 | |
camelia | niecza v24-88-g1f87209: OUTPUT«0» | ||
..rakudo aab3d7: OUTPUT«No such method 'BUILD' for invocant of type 'Range+{<anon>}' in method reify at src/gen/CORE.setting:6581 in method reify at src/gen/CORE.setting:6705 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_… | |||
Ben_Goldberg | rn: (^Inf).BUILD | 00:22 | |
camelia | niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Unable to resolve method BUILD in type Range at /tmp/exY_i8Kn4Z line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4579 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4580 (module-CORE @ 576)  at /hom… | ||
..rakudo aab3d7: OUTPUT«Not enough positional parameters passed; got 1 but expected 5 in submethod BUILD at src/gen/CORE.setting:6476 in block at /tmp/bznIq3s7Ez:1» | |||
Ben_Goldberg | rn: (^Inf but role {}).BUILD | ||
camelia | rakudo aab3d7: OUTPUT«No such method 'BUILD' for invocant of type 'Range+{<anon>}' in block at /tmp/SoyKi2NooD:1» | ||
..niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Unable to resolve method BUILD in type Range+ANON at /tmp/BDvaIqqfSa line 1 (mainline @ 4)  at /home/p6eval/niecza/lib/CORE.setting line 4579 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4580 (module-CORE @ 576)  at… | |||
diakopter | anyone know where in Frankfurt the symposium will be | 00:27 | |
00:29
pdcawley joined
00:32
pdcawley left
00:55
berekuk left
|
|||
[Coke] | colomon, sorear: what's the plan for niecza in re: spec tests? | 01:09 | |
colomon | [Coke]: I'm not sure there is a plan. | 01:10 | |
I'd like to fix things up when I get the chance. | |||
But I feel that working on Rakudo JVM is higher priority at the moment. | |||
And I'm not even finding time to do that. | |||
colomon may be excessively vacationing this summer. | 01:11 | ||
[Coke] | would you be averse to fudging things that are currently failing if we added issues for them? | ||
or do you want to just leave it? | 01:12 | ||
(I am offerring to do the fudging here.) | 01:13 | ||
01:36
xenoterracide left,
FROGGS_ joined
01:40
FROGGS left
|
|||
dalek | ast: d6c9458 | coke++ | / (7 files): refudge for pugs |
01:45 | |
01:54
go|dfish joined,
xenoterracide joined
01:55
colomon left
01:56
EvanTeitelman joined
|
|||
dalek | ast: b41523a | coke++ | S32-list/squish.t: small fudge for rakudo.jvm |
02:06 | |
02:09
PacoAir joined
02:12
PacoAir left,
FROGGS_ left
02:36
raiph left
02:57
raiph joined
03:01
colomon joined
03:19
colomon left
03:27
preflex_ joined,
ChanServ sets mode: +v preflex_,
preflex left,
mauke left,
mauke joined,
preflex_ is now known as preflex
03:48
grondilu joined
03:59
EvanTeitelman left
04:03
xenoterracide left
04:08
xenoterracide joined
|
|||
grondilu | check this out: rosettacode.org/wiki/Longest_increa...nce#Perl_6 | 04:24 | |
mauke | heh. is that the equivalent of $l[$i] = [ @{$l[$j]} ] in perl5? | 04:27 | |
grondilu | yep but th perl5 version is actually the translation from Perl6 | 04:30 | |
I don't understand why I could not have written @l[$i] = @l[$j].clone, but maybe I misunderstand what .clone means? | 04:32 | ||
sorear | clone is evil; it's always either deeper or shallower than the user expects | 04:37 | |
grondilu | ok | 04:44 | |
04:46
Ben_Goldberg left
|
|||
moritz | \o | 04:48 | |
sorear | o/ | ||
grondilu | maybe I can write @l[$i] = @l[$j].Array It's not shorter, but it looks cleaner. | 04:52 | |
and it works (just checked) | 04:53 | ||
05:06
Urchin[emacs] left
05:19
Urchin[emacs] joined
|
|||
dalek | kudo/nom: 63a865a | moritz++ | ConfigureJVM.pl: [configure] fix help text |
05:20 | |
05:30
raiph left
|
|||
timotimo | grondilu: i suspect .item would have helped, too | 05:55 | |
05:57
SamuraiJack__ joined
|
|||
grondilu | timotimo: nope, item does not work actually | 06:04 | |
06:10
|ChErOkY| left
|
|||
timotimo | strange | 06:20 | |
oh it's because you're accessing the same list on both sides, eh? hm. | 06:22 | ||
06:23
araujo left
06:24
araujo joined
06:36
kaare_ joined
06:51
raiph joined
06:56
lizmat joined
|
|||
lizmat is catching up on backlog | 07:22 | ||
yoleaux | 17 Aug 2013 06:42Z <FROGGS> lizmat: please read irclog.perlgeek.de/perl6/2013-08-17#i_7462070 | ||
lizmat | FROGGS: I'm not sure how that can have broken the build, as I have spectested it and it came out ok ? | 07:24 | |
.oO( Heisenbug? ) |
|||
timotimo | may very well be one :( | 07:26 | |
the only thing i can think of is you changed the Makefile*.in files, in which case you could only see the bug if you had run Configure.pl | 07:27 | ||
lizmat | that patch most definitley did not change .in files | ||
it's been a while since I did that | |||
moritz | lizmat: afaik the patch broke the build only on jvm | 07:28 | |
lizmat | aha! | ||
moritz | (while compiling the setting, iirc) | ||
lizmat | ok, that makes some sort of sense then | ||
but then it's a .JVM problem :-) | |||
there *is* someting spooky about that code, as I have tried to abstract the code that lives in 7 places into an internal method | 07:29 | ||
and with that, it just simply did not work | |||
guess I'll rework it to using an internal method, and have jnthn++ and others figure out why it doesn't work | 07:30 | ||
07:31
Urchin[emacs] left
|
|||
masak | good morning, #perl6 | 07:32 | |
moritz | lizmat: that's what branches are good for :-) | 07:33 | |
good morning masak | |||
masak: t3? | 07:34 | ||
masak | moritz: $work deadline. | 07:35 | |
moritz: maybe, um, Friday. | |||
moritz has high hopes | 07:36 | ||
masak | :) | ||
thanks for caring. it warms. | 07:37 | ||
moritz | .oO( we thank you for you're patients ) |
||
07:38
locsmif left
|
|||
lizmat | .tell jnthn trying to fix "is default" trait mod with $what.^mro.first( { !nqp::p6bool(.HOW.is_mixin($_)) } ), does not work :-( | 07:39 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
sorear | o/ masak | 07:42 | |
masak | sorear! \o/ | 07:43 | |
sorear: I'm progressing in my category theory madn^Wknowledge. | |||
sorear: mostly by explaining stuff to jnthn. | |||
moritz | we have sore(ar)ly missed you at YAPC::EU | ||
masak | sorear: most recently: products are terminal objects in a (specially-made) category of spans. | ||
07:44
FROGGS_ joined
07:45
FROGGS_ is now known as FROGGS
|
|||
FROGGS | o/ | 07:45 | |
masak | FROGGS! \o/ | ||
FROGGS | :D | ||
sorear | mmm, universal properties | 07:47 | |
masak | indeed! | ||
07:47
thou left
|
|||
masak | learning about products and coproducts is like waking up and realizing that all your life, people have been telling you exactly two things, but they sounded like 1024 things because the words were slightly different. | 07:48 | |
lizmat | r: my %h is dynamic=a=>1; say %h<a>.VAR.dynamic # I guess this should be 1 | 07:50 | |
camelia | rakudo 63a865: OUTPUT«0» | ||
lizmat | r: my %h is dynamic=a=>1; say %h.VAR.dynamic # as is this | 07:51 | |
camelia | rakudo 63a865: OUTPUT«No such method 'dynamic' for invocant of type 'Hash' in block at /tmp/RvNxncwyrH:1» | ||
lizmat | huh? | ||
masak | jnthn (and others): www.cis.upenn.edu/~stevez/papers/LZ06b.pdf -- "A Language-based Approach to Unifying Events and Threads" | 07:52 | |
lizmat | ah, that was part of the patch that FROGGS reverted :-( | ||
FROGGS | lizmat: yeah :o( | 07:53 | |
lizmat: did you know what went wrong? | |||
lizmat | well, on parakudo it works fine | 07:54 | |
spectest and all | |||
FROGGS | right, but something on the jvm breaks the build | ||
lizmat | yes, something: what was the error message? | 07:55 | |
FROGGS | an UnwindException | 07:56 | |
FROGGS is searching for a gist | |||
lizmat: I only can provide this right now: irclog.perlgeek.de/perl6/2013-08-16#i_7459060 | 07:59 | ||
lizmat | ok, thanks1 | 08:00 | |
masak | nice article about a bootstrapping compiler: blog.rzimmerman.me/how-kal-compiles-itself/ | 08:01 | |
looks quite a lot like nqp. | |||
08:08
pernatiy joined
|
|||
FROGGS | nqp: say( nqp::objprimspec( nqp::knowhow().new_type(:name("TestBigInt"),:repr("P6bigint")) ) ) # jnthn, should this return 0 ? | 08:34 | |
camelia | nqp: OUTPUT«1» | ||
masak | what does nqp::objprimspec do? | 08:36 | |
08:42
dmol joined
|
|||
FROGGS | 0 = non-native/obj/PMC, 1 = int, 2 = num, 3 = str | 08:44 | |
masak | well, I guess then it comes down to whether P6bigint pretends (enough) to be an int, or whether the fact that it's actually not takes precendence. | 08:50 | |
08:52
spider-mario joined
09:04
Rotwang joined
|
|||
FROGGS | how can I check that something is a 6model object? in nqp? | 09:05 | |
lizmat | hmmm… it seems that in src/core/terms, line 19: %ENV{$key} = nqp::p6box_s(nqp::atkey($env, nqp::unbox_s($key))); | 09:08 | |
is *not* using the at_key method provided in the role at line 31 | |||
jnthn: any idea what could be going on there ? | 09:09 | ||
I assume that that is what was breaking the build on the JVM | |||
and was causing the method approach I had not to work on parakudo | |||
09:12
rindolf joined
09:23
SamuraiJack__ left
09:27
raiph left
|
|||
GlitchMr | std: (1 + 2) / (3 / 4)) | 09:29 | |
camelia | std c2215f0: OUTPUT«===SORRY!===Unexpected closing bracket at /tmp/t9qqZVS9UV line 1:------> (1 + 2) / (3 / 4)⏏)Parse failedFAILED 00:00 43m» | ||
GlitchMr | std: class Test { for ^5 { .say } } | 09:31 | |
camelia | std c2215f0: OUTPUT«ok 00:00 43m» | ||
masak | I'm confused. twitter.com/YoshuaDavis/status/367...00/photo/1 | 09:32 | |
I don't think that's an autopun... o.O | |||
...but I'm not sure... | 09:33 | ||
jnthn ain't sure either | 09:47 | ||
yoleaux | 07:39Z <lizmat> jnthn: trying to fix "is default" trait mod with $what.^mro.first( { !nqp::p6bool(.HOW.is_mixin($_)) } ), does not work :-( | ||
jnthn | FROGGS: Yes, P6bigint does not inline as a native int | 09:48 | |
09:49
kaare_ left
09:58
iSlug joined
10:07
crab2313 joined
10:11
crab2313 left,
xinming joined
|
|||
lizmat | jnthn: in src/core/tems, the local %ENV is bound to %*ENV with "nqp::bindkey(nqp::who(PROCESS), '%ENV', %ENV);" | 10:16 | |
could you think of any reason why that would fail ? | 10:17 | ||
10:17
berekuk joined
|
|||
lizmat | I've basically conflated the role of %ENV into "my %ENV does role {", as apparently the Hash.at_key was being called instead of the role's | 10:18 | |
I've verified that the hash is filled correctly, and that the role's "at_key" is used, but now %*ENV is empty | 10:19 | ||
jnthn | lizmat: Hmm... | 10:20 | |
lizmat: Dunno how well that'd work out on JVM... | 10:21 | ||
lizmat | the filling of the hash is the only part that is currently VM dependent | ||
jnthn wonders how that trait_mod looks | 10:23 | ||
Before it just used the does operator, no? | |||
lizmat | before it said "my %ENV" and then later "%ENV does role {...} | ||
jnthn | Right, looking at the code that seems correct. | ||
lizmat | but then, the at_key of the role was *not* used | 10:24 | |
jnthn | We populate it cheaply, then attach the extra magic for the future. | ||
lizmat | it would use the Hash.at_key | ||
jnthn | Was not used when? In the initial population? | ||
lizmat | yup | ||
jnthn | Right, that looks deliberate and good to me. | ||
lizmat | ok | ||
lizmat reverts local commit | 10:25 | ||
jnthn | No point creating all those Proxy objects on the initial population | ||
lizmat | ok, but then I get "cannot assign to read only value: error on line 19: %ENV{$key} = nqp::p6box_s(nqp::atkey($env, nqp::unbox_s($key))); | 10:26 | |
*that* is the top of the stack | |||
so I don't know where it is going wrong in "at_key" or CLONE_ELEMENT | 10:27 | ||
10:28
berekuk left
|
|||
jnthn | CLONE_ELEMENT is that thing I'm about to make redundant by adding the scalarfromdesc op, I guess? | 10:28 | |
lizmat | yes | ||
jnthn is working on the op now | 10:32 | ||
lizmat | jnthn++ | 10:34 | |
jnthn | r: my %h; say %h<a> + 1 | 10:35 | |
camelia | rakudo 63a865: OUTPUT«use of uninitialized value of type Any in numeric context in block at /tmp/_aNlwoZ0at:11» | ||
lizmat | jnthn: also make sure that "dynamic" flag is cloned | ||
jnthn | lizmat: That flag is in the descriptor, iirc? | 10:36 | |
10:36
berekuk joined
|
|||
jnthn | lizmat: We're not cloning, just attaching. | 10:36 | |
lizmat | r: my %h is dynamic=a=>1; say %h<a>.VAR.dynamic # to handle this | ||
camelia | rakudo 63a865: OUTPUT«0» | ||
jnthn | (to a new container) | ||
lizmat | yes, it's in the descriptor | ||
jnthn | ok, then it'll be fine | ||
btw, I noticed the patch also added a .descriptor; that object wasn't designed to leak out into Perl 6 space. | 10:38 | ||
10:38
grondilu left
|
|||
lizmat | that was only to make CLONE_ELEMENT work | 10:39 | |
jnthn | ok, good | ||
lizmat | I'll unleak it :-) | ||
jnthn | It already was when FROGGS's reverted the patch | 10:40 | |
lizmat | indeed | ||
10:41
leont joined
|
|||
leont | How do I do mkpath in perl6? It seems rmdir is documented but its opposite not | 10:42 | |
lizmat | fwiw, mkdir exists | 10:43 | |
10:46
jaffa4 joined
|
|||
jaffa4 | hi | 10:46 | |
what is the scope of label in Perl6? | |||
lizmat | apart from it being NYI, afaik, it's supposed to be lexotic? | 10:47 | |
jaffa4 | NYI? | 10:48 | |
it is possible to reference it from an outer scope ? | |||
GlitchMr | I've a problem. I tried everything, but I cannot use IPv6 in Perl 6. | 10:49 | |
getaddrinfo failed: ipv6.google.com: Success | |||
jaffa4 | everything? It looks like a big word too me.... | ||
GlitchMr | $ perl6 -e 'my $sock = IO::Socket::INET.new(host => "ipv6.google.com", port => 80); $sock.send("GET /lol HTTP/1.1\r\n\r\n"); say $sock.recv' | ||
lizmat | Not Yet Implemented | ||
GlitchMr | This doesn't work. I also tried using IPv6 address, instead of host. | 10:50 | |
But it doesn't work too. | |||
jaffa4 | $/.CURSOR,,,, where is it defined? | 10:54 | |
11:01
donaldh joined,
grondilu joined
|
|||
dalek | p: 9706494 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/CompilationUnit.java: Avoid UnwindException reports in load failures. This prevents the real error from being obscured when e.g. a failure occurs during setting loading. |
11:03 | |
lizmat | jnthn++ for allowing people to find out what I broke :-) | ||
11:03
berekuk left
|
|||
jnthn | It's allowing me to find out what I'm breaking too :) | 11:04 | |
donaldh | hi o/ | ||
jaffa4 | break dance | ||
jnthn | oh, duh, I did something retartet | ||
jaffa4 | jnthn: how would you add a label to the symbol table? | 11:05 | |
jnthn | jaffa4: The .CURSOR method is defined in the NQPMatch or Match objects, i suspect | ||
o/ donaldh | |||
jaffa4: $*W.install_lexical_symbol is the usual way to put something there | 11:06 | ||
donaldh | is it okay for rakudo to share NQP_REVISION between jvm and parrot ? | ||
11:06
berekuk joined
|
|||
jnthn | donaldh: I think so | 11:06 | |
11:07
rindolf left
|
|||
jnthn | donaldh: If we find it's causing too many bumps we can undo it | 11:07 | |
donaldh: uh, split it | |||
donaldh: But as JVM stabalizes as a backend, I suspect it won't be an issue. | |||
donaldh imagines the confusion of two different NQP_REVISIONs | |||
jnthn | Yeah, I think that'd be icky too :) | ||
donaldh | okay, bumping NQP_REVISION to, well, about now. | ||
:) | |||
11:08
berekuk left
11:11
sarah1981 joined
|
|||
sarah1981 | hi | 11:11 | |
11:11
sarah1981 left
|
|||
lizmat catches up on some sleep again& | 11:19 | ||
dalek | kudo/scalar-from-desc: 7f1cd51 | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java: Ensure gcx.Nil gets initialized. |
11:21 | |
kudo/scalar-from-desc: 1964396 | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/RakudoContainerSpec.java: Correct Nil handling. |
|||
11:21
kaare_ joined
|
|||
masak | hello from a train! :) | 11:22 | |
jnthn | Is it running late? | ||
:P | |||
masak | not yet. | ||
mathw | hello from my house! | 11:25 | |
masak | r: for <masak train mathw house> -> $user, $location { say "$user says hello from a $location!" } | 11:26 | |
camelia | rakudo 63a865: OUTPUT«masak says hello from a train!mathw says hello from a house!» | ||
jaffa4 | r: | 11:37 | |
masak: where are you going? | |||
11:41
jeff_s2 joined,
jeff_s1 left
|
|||
masak | jaffa4: sometimes $work sends me to different cities to teach. | 11:41 | |
jaffa4 | masak: what do you teach? | 11:42 | |
FROGGS | jnthn: is a bigint inlineable? github.com/perl6/nqp/blob/master/s...int.c#L145 | 11:43 | |
masak | jaffa4: software development. | ||
jaffa4: this week, I'll be teaching the general stuff (software architecture) and then the more specific stuff (Python). | 11:44 | ||
FROGGS | *lol* | ||
:P | |||
(that is an insider) | |||
jnthn | FROGGS: Yes | 11:45 | |
FROGGS | hmmm, then I am missing a piece of my puzzle | ||
donaldh | hmm. Long test cycle for --gen-nqp on JVM, regression testing all the gen/with parrot/jvm prefix/noprefix combinations | 11:46 | |
FROGGS | jnthn: if it is inlineable, and objprimspec and isint tell it is an int, how can I know it is not a native int already? | ||
jnthn | objprimspec thinks it's an int? | 11:47 | |
FROGGS | it returns one | ||
masak | jaffa4: to answer your earlier question: yes, you can reference labels from an outer scope. but you can't jump into a scope that require parameters, because those parameters would not be present and That Would Be Bad. | 11:48 | |
though as I think about it, I think even that restriction is a bit too narrow. | |||
FROGGS | jnthn: so, I remember that you said that I change nqp.ops to this again: $1 = ss.boxed_primitive == STORAGE_SPEC_BP_INT ? 1 : 0; | 11:49 | |
err, wrong paste | |||
masak | because, for example, a closure is not really part of the control flow of its OUTER. so if you goto'd it and it exited, where would you end up? | ||
FROGGS | jnthn: to this: $1 = ss.inlineable ? ss.boxed_primitive : STORAGE_SPEC_BP_NONE; | ||
jnthn: but since it is inlineable the result is still 1 | 11:50 | ||
jaffa4 | I managed to add the labels to the grammar along with the message they are not implemented | ||
jnthn | oh, wait...maybe it claims to be an int since you can nqp::unbox_i on it... | 11:51 | |
FROGGS | jaffa4: and the spectests stil pass? | ||
jnthn: yeah | |||
jaffa4 | they have not passed all before thay | ||
FROGGS | jnthn: but in nqp::sprintf I actually need to know whether to unbox or not, and I dont know how to get that information | 11:52 | |
jaffa4: I mean, are there any regressions due to your patch? | |||
jaffa4 | How would I know that? | ||
masak | jaffa4: 'make test' | ||
FROGGS | and you compare the result | ||
masak | jaffa4: if the spectests all pass, the next step would be sending a patch (to RT) or a pull request (to github's rakudo/rakudo) | ||
jaffa4 | then I have to make it twice before and after | 11:53 | |
FROGGS | yes | ||
masak | jaffa4: most of us pull/build/make test daily. since we're in the habit, we only need to make test once, afterwards :) | 11:55 | |
jaffa4 | what tests do you perform? full scale? | 11:56 | |
masak | jaffa4: 'make test' runs the spectest suite. if that didn't answer your question, please rephrase. | 11:58 | |
jaffa4 | you mean coretest | 11:59 | |
test : coretest <<<<< | |||
fulltest: coretest stresstest <<<< | |||
masak | no, I mean github.com/perl6/roast | ||
also known as 'the spectest suite'. | 12:00 | ||
the fact that it's called 'roast' is because TimToady found it annoying that the 'spec/' and 'spectest/' directories clashed when tab-completing. | |||
jaffa4 | I think when I use nmake fulltest it uses roast | 12:01 | |
masak | I think so too. | 12:02 | |
jaffa4 | this takes a while | 12:05 | |
masak | yes. | 12:06 | |
on the other hand, we don't have many regressions. | 12:07 | ||
jaffa4 | that is how I do myself with some of my software | 12:09 | |
Are the tests stored anywhere? | 12:11 | ||
FROGGS | nmake spectest <--- | ||
in t\spec | |||
jaffa4 | the test results | ||
FROGGS | no, these are just displayed | 12:12 | |
but you can set a tap harness environment variable to capture it | |||
though it will be overwritten by next run | |||
I usually just copy&paste the test summary to a new file, before applying a patch and after | 12:13 | ||
jnthn: and in order to supply an argument handler I'd need to know if the variable I got is a 6model obj | 12:14 | ||
jnthn: and I dont know how to do that either :o) | 12:15 | ||
(my knowless is great) | |||
12:15
colomon joined
|
|||
colomon | [Coke]: fudge ==> issues sounds good to me | 12:23 | |
12:35
bearman joined
|
|||
jnthn | FROGGS: What's the actual thing you're trying to work out? | 12:35 | |
FROGGS | jnthn: getting t/jvm/06-sprintf.t to work under nqp@parrot | 12:36 | |
JimmyZ | .oO(It works on MoarVM, but not on parrot) |
12:37 | |
jnthn | It probably works anywhere where everything is a 6model object :P | 12:39 | |
JimmyZ | :P | ||
12:41
birdwindupbird joined
|
|||
jnthn | FROGGS: Can you show me the code that fails? | 12:42 | |
FROGGS | sure, need to recompile though | 12:49 | |
jnthn | np; busying myself with some hash/array stuff | 12:50 | |
FROGGS | dev/nqp$ nqp -e 'my $kh := nqp::knowhow().new_type(:name("TestBigInt"), :repr("P6bigint")); my $i := nqp::pow_I(nqp::box_i(33, $kh), nqp::box_i(21, $kh), $kh, $kh); nqp::say(nqp::sprintf("<%d>", [$i]));' | 12:51 | |
get_integer() not implemented in class 'TestBigInt' | |||
current instr.: 'intify' pc 50329 (src/stage2/gen/NQPHLL.pir:19453) (src/stage2/gen/NQPHLL.nqp:2130) | |||
jnthn: ^^ | |||
jnthn | Does pow_I actually take two bigints? | 12:52 | |
FROGGS | you can ask questions :P | 12:53 | |
I'd think so # QAST::Operations.add_core_pirop_mapping('pow_I', 'nqp_bigint_pow', 'PPPPP', :inlinable(1)); | 12:54 | ||
and in bigint_ops it calls get_bigint on the args | 12:56 | ||
jnthn | hm, core setting agrees in its usage too | ||
Oh, but it's somewhere in nqp::sprintf that it explodes? | |||
FROGGS | jnthn: yes, I believe it explodes when calling nqp::box_i on it (which is there because it thinks it is a native int) | 13:00 | |
13:01
pmurias joined
13:23
colomon left
|
|||
dalek | kudo/scalar-from-desc: 4d160b3 | jnthn++ | src/vm/jvm/ (2 files): Add nqp::p6scalarfromdesc op on JVM backend. |
13:34 | |
kudo/scalar-from-desc: d3bd8df | jnthn++ | src/Perl6/ (2 files): Tease apart scalar init and default value. |
|||
kudo/scalar-from-desc: 2d6e418 | jnthn++ | src/core/ (2 files): Start switching over to nqp::p6scalarfromdesc. |
|||
13:34
ivanoff joined
13:43
stevan_ joined
|
|||
FROGGS | jnthn: do you think you have time later to have a look at the from_nqp branches later? | 13:43 | |
13:47
BenGoldberg joined
|
|||
FROGGS | the problem was that nqp does stuff that rakudo should do: github.com/perl6/nqp/commit/ab98aa...e15a#L2L89 | 13:48 | |
but I was/am unable to fix it | |||
13:48
telex joined
|
|||
BenGoldberg | rn: (^Inf but role {})[0].print | 13:50 | |
camelia | niecza v24-88-g1f87209: OUTPUT«0» | ||
..rakudo 63a865: OUTPUT«No such method 'BUILD' for invocant of type 'Range+{<anon>}' in method reify at src/gen/CORE.setting:6581 in method reify at src/gen/CORE.setting:6705 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_… | |||
masak | I'm almost tempted to report that one as a rakudobug. | 13:51 | |
jnthn | Weird error. | ||
masak submits rakudobug | |||
FROGGS | rn: (^3 but role {})[0].print | 13:52 | |
camelia | niecza v24-88-g1f87209: OUTPUT«0» | ||
..rakudo 63a865: OUTPUT«No such method 'BUILD' for invocant of type 'Range+{<anon>}' in method reify at src/gen/CORE.setting:6581 in method reify at src/gen/CORE.setting:6705 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_… | |||
masak | Niecza's result looks perfectly reasonable to me. | ||
13:52
ajr joined
13:53
ajr is now known as ajr_,
fridim__ left
|
|||
FROGGS | r: say (^3 but role {}).^methods # it even says it has a method BUILD | 13:53 | |
camelia | rakudo 63a865: OUTPUT«new flat infinite iterator list bounds reify at_pos roll pick of ACCEPTS perl Numeric <anon> <anon> <anon> <anon> BUILD elems infinite item fmt Int Num chrs Numeric Str» | ||
TimToady | it's a submethod, so cannot be used by a subclass | ||
jnthn | ah, yes. | 13:54 | |
FROGGS | yeah, seen that too right now | ||
TimToady | guessing the generic BUILD method then can't handle the difference | ||
dalek | kudo/scalar-from-desc: 1c86f71 | jnthn++ | src/Perl6/Actions.nqp: Fix a thinko to blame for most regressions. |
13:55 | |
masak | still, an error seems a bit harsh. | ||
13:55
EvanTeitelman joined
|
|||
TimToady | maybe some types need to supply a method rather than a submethod BUILD, if they are fiddly to derive from | 13:56 | |
masak | r: say (1..1 but role {})[0] | 13:57 | |
camelia | rakudo 63a865: OUTPUT«===SORRY!=== Error while compiling /tmp/MEMHJML4vPOperators '..' and 'but' are non-associative and require parenthesisat /tmp/MEMHJML4vP:1------> say (1..1 ⏏but role {})[0] expecting any of: postfix infix … | ||
TimToady | though in this case, it seems as though it's a missing Mu.BUILD | ||
BenGoldberg | Here's a similar problem: | ||
rn: my @a := gather { .take for ^Inf } but role { method infinite() { True } }; say @a[^10]; | |||
masak | r: say ((1..1) but role {})[0] | ||
camelia | niecza v24-88-g1f87209: OUTPUT«0 1 2 3 4 5 6 7 8 9» | ||
..rakudo 63a865: OUTPUT«This type does not support elems in method REIFY at src/gen/CORE.setting:7492 in method reify at src/gen/CORE.setting:6718 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_pos at src/gen/CORE.setting:… | |||
rakudo 63a865: OUTPUT«1» | |||
masak | o.O | ||
r: print ((1..1) but role {})[0] | 13:58 | ||
camelia | rakudo 63a865: OUTPUT«1» | ||
TimToady | or the submethod is blocking inheritance of the generic Mu.BUILD | ||
masak | why does *that* work? | ||
BenGoldberg | r: Mu.^methods.say | 13:59 | |
camelia | rakudo 63a865: OUTPUT«ACCEPTS WHERE WHICH take WHY Bool so not defined new CREATE bless BUILDALL BUILD_LEAST_DERIVED Numeric Real Str Stringy item say print gist perl DUMP DUMP-PIECES DUMP-OBJECT-ATTRS isa does can clone Capture Method+{<anon>}.new() dispatch:<::> Method+{<anon>}.new() … | ||
masak | r: print ((0..^3) but role {})[0] | ||
camelia | rakudo 63a865: OUTPUT«No such method 'BUILD' for invocant of type 'Range+{<anon>}' in method reify at src/gen/CORE.setting:6581 in method reify at src/gen/CORE.setting:6705 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_… | ||
masak | r: print ((0..3) but role {})[0] | 14:00 | |
camelia | rakudo 63a865: OUTPUT«No such method 'BUILD' for invocant of type 'Range+{<anon>}' in method reify at src/gen/CORE.setting:6581 in method reify at src/gen/CORE.setting:6705 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_… | ||
masak | r: print ((3..3) but role {})[0] | ||
camelia | rakudo 63a865: OUTPUT«3» | ||
masak | ah. | ||
needs to have different endpoints. | |||
r: print ((3..0) but role {})[0] | |||
jnthn | I guess it's on creation of the next iterator | 14:01 | |
camelia | rakudo 63a865: ( no output ) | ||
jnthn | Which makes sense given BUILD is complained about. | ||
masak | needs to have start smaller than end, even. | ||
jnthn: aye. | |||
TimToady | r: say ((0..3) but role { submethod BUILD(|c) { Mu.BUILD(c) } })[0,1] | ||
camelia | rakudo 63a865: OUTPUT«No such method 'BUILD' for invocant of type 'Mu' in submethod BUILD at /tmp/CX8cckAm6b:1 in method BUILD_LEAST_DERIVED at src/gen/CORE.setting:915 in sub infix:<but> at src/gen/CORE.setting:14967 in sub infix:<but> at src/gen/CORE.setting:14962 in block … | ||
TimToady | r: say ((0..3) but role { submethod BUILD(|c) { self.Mu::BUILD(c) } })[0,1] | 14:02 | |
camelia | rakudo 63a865: OUTPUT«No such method 'BUILD' for invocant of type 'Mu' in any find_method_qualified at src/gen/Metamodel.nqp:956 in method dispatch:<::> at src/gen/CORE.setting:1135 in submethod BUILD at /tmp/Do71SurzaD:1 in method BUILD_LEAST_DERIVED at src/gen/CORE.setting:915… | ||
TimToady | hmm | ||
oh, it said BUILD_LEAST_DERIVED, not BUILD | 14:03 | ||
BenGoldberg | r: (gather {} but role {})[0] | ||
camelia | rakudo 63a865: OUTPUT«This type does not support elems in method REIFY at src/gen/CORE.setting:7492 in method reify at src/gen/CORE.setting:6718 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_pos at src/gen/CORE.setting:… | ||
BenGoldberg | A range produces one type of error, and a gather a different type of error? | 14:04 | |
TimToady | so how *does* rakudo handle missing BUILD submethods, anyway? | ||
masak .oO( badly ) | 14:05 | ||
BenGoldberg | n: (gather {} but role {})[0] | ||
camelia | niecza v24-88-g1f87209: ( no output ) | ||
TimToady | S12:667 seems to indicate there should be a Mu.BUILD | ||
synopsebot | Link: perlcabal.org/syn/S12.html#line_667 | ||
14:06
crab2313 joined,
domidumont joined
|
|||
TimToady | not to mention S12:866 | 14:07 | |
synopsebot | Link: perlcabal.org/syn/S12.html#line_866 | ||
jnthn | TimToady: Calling a BUILD that actually does introspection etc. turned out to be incredibly slow. BUILDALL actually executes a class-compose-time assembled "plan" for how to do the object construction. Thus the lack of "need" for a Mu.BUILD. | 14:08 | |
TimToady | ok, but the plan in this case seems...lacking... | 14:09 | |
jnthn | TimToady: Thanks to all the named arg passing around, it's rather hard to get object construction to perform decently... | ||
14:09
crab2313 left
|
|||
jnthn | TimToady: I think that the range "make a next iterator" code is cheating and doing a .BUILD call directly on a .CREATE'd object... | 14:10 | |
Which I guess is an OK cheat, expect it's also marked as a submethod | |||
TimToady | so maybe it should be a normal method? | 14:11 | |
or would that break differently? :) | |||
jnthn | That would seem to fix this particular issue, yes. | ||
I can't immediately think of anything else it'd break | |||
TimToady | well, it'd be nice to have a better story than Ruby on derivation from built-in types :) | 14:12 | |
14:12
stevan_ left
|
|||
TimToady | but one also wants speed | 14:12 | |
jnthn | The real pain I find with trying to get object construction to perform is that new gets a named slurply, which it then flattens to pass to bless, which in turn creates a new named slurpy | ||
14:12
colomon joined
|
|||
jnthn | You can't just re-use the capture because bless wants one extra arg, * | 14:13 | |
TimToady | right | ||
jnthn | For the thingy to bless. | ||
TimToady | maybe default bless doesn't take an arg, and we add a bless_this or some such | 14:14 | |
and default bless can do its own create | |||
names negotiable, of course | |||
jnthn | What role does bless actually fill today? | 14:15 | |
Here's how it looks in Rakudo: | |||
method bless(Mu \candidate, *@autovivs, *%attrinit) { | |||
# If we were passed *, then need to create a candidate. | |||
my $cand := nqp::istype(candidate, Whatever) ?? | |||
nqp::create(self) !! | |||
candidate; | |||
$cand.BUILDALL(@autovivs, %attrinit); | |||
} | |||
TimToady | well, we don't want people putting nqp::create into their constructors, at least | 14:16 | |
jnthn | Just allowing for a candidate created with a different representation to be passed in? | ||
Sure, though I guess the .CREATE macro-ish thing maps down to it. | 14:17 | ||
But yeah, a normal new shouldn't have to call that, I don't think. | 14:18 | ||
TimToady | rename BUILDALL to bless, then let them call either Type.bless or Type.create.bless, and dispatch on :D ? | ||
jnthn | Could work | 14:19 | |
TimToady | and .create by default assuming * | ||
ruoso | jnthn: where can I find the docs for the mangling of the java method names? | ||
TimToady | but you could create the candidate any other way, as long as you pass a $cand.bless that bless can handle | 14:20 | |
jnthn | ruoso: For the method signatures? It's the same syntax JVM method descriptors use | ||
ruoso | ah... cool | 14:21 | |
TimToady | otoh, $type.create.bless assumes you can pass the type through the candidate, which might be problematic for some kinds of candidate? | ||
thinking about why .HOW requires the object as well as the metaobject | 14:22 | ||
jnthn | To allow prototype OO | ||
TimToady | just wondering if Type.create.bless can always work | ||
can a candidate dispatch to its .bless without properly knowing its original Type, I guess I'm asking myself | 14:24 | ||
seems like not, but it's still too early in the morning | |||
also, it'd be nice if the BUILD plan could just inline whether to do the create or not, and maybe the create/no-create distinction more declarative | 14:25 | ||
s/maybe/make/ | |||
well, shower & | 14:26 | ||
like, a CREATE phaser if you want to override the default, say, which would be known at composition time | 14:27 | ||
assuming most classes don't want to have it both ways | |||
afk really & | |||
.oO(afkr) |
14:28 | ||
afkr & | |||
masak .oO( afkr really ) | |||
TimToady | afkrr & | 14:29 | |
BenGoldberg | Is this the same bug as the other one? | ||
n: (gather {} but role {})[0] | |||
camelia | niecza v24-88-g1f87209: ( no output ) | ||
BenGoldberg | rn: (gather {} but role {})[0] | ||
camelia | niecza v24-88-g1f87209: ( no output ) | ||
..rakudo 63a865: OUTPUT«This type does not support elems in method REIFY at src/gen/CORE.setting:7492 in method reify at src/gen/CORE.setting:6718 in method gimme at src/gen/CORE.setting:7138 in method exists at src/gen/CORE.setting:7126 in method at_pos at src/gen/CORE.setting:… | |||
14:33
Rotwang left
14:35
colomon left,
bearman left
14:36
domidumont left,
bearman joined,
domidumont joined
|
|||
leont | Does rakudo do any sort of stat caching? | 14:38 | |
masak | Python considering strings to be sequences (and the programmer errors that causes) does not sell me on the idea of strings as sequences :) | ||
14:38
benabik left
14:39
Psyche^_ joined
|
|||
jnthn | leont: Don't believe Rakudo itself does; guess it's possible the underlying VM may... | 14:40 | |
14:42
Psyche^ left
14:43
SamuraiJack__ joined
|
|||
ruoso wonders if there is a handy tool to generate the descriptor string from a java method declaration syntax... | 14:43 | ||
14:43
benabik joined
14:44
colomon joined
|
|||
jnthn | ruoso: Well, you can write an NQP program like this: | 14:46 | |
my %h := nqp::jvmbootinterop().getInterop('java.lang.String'); | |||
for %h { say($_.key); } | |||
If you just want a listing of all the things you can call on a given class | |||
dalek | kudo/scalar-from-desc: db2330c | jnthn++ | src/vm/parrot/ (2 files): Parrot implementation of nqp::p6scalarfromdesc. |
14:48 | |
jnthn | .tell lizmat scalar-from-desc branch is ready for triage :) | ||
yoleaux | jnthn: I'll pass your message to lizmat. | ||
masak | if someone++ is willing to code-review jaffa4's rt.perl.org/rt3/Ticket/Attachment/...bels.patch , I'm willing to apply and push it. | 14:51 | |
jaffa4: oh, one thing: why is the "Illegal redeclaration" thing commented out? | 14:52 | ||
14:52
ivanoff left
|
|||
jaffa4 | the code did not compile | 14:52 | |
masak | heh. | ||
jaffa4 | need to start small | 14:53 | |
with such a complex environment | |||
masak | also, what's the harm of parsing labels without panicking about them not being implemented? we just can't use them for anything yet. | ||
jaffa4: I generally don't like to commit commented-out code -- or, at the very least, not without a comment explaining why the code is commented out. | |||
jaffa4 | it panicks | 14:54 | |
jnthn | Indentation looks a little off too | ||
Also, there's a <.nyi(...)> or so that is a better way to die | |||
masak | yes, but do we really need an error at all? | 14:55 | |
I mean labels can be parsed, and that's it -- we implement them. | |||
jnthn | masak: Well, but you can't do anything with 'em yet... :) | ||
jaffa4 | it iis clearer than giving back some error message | ||
it is called stepwise development | 14:56 | ||
masak | jnthn: I know that. | ||
jnthn: but you can write programs with them in that compile. | |||
jnthn: it'd be a kind of documentation. "we intend to 'last' to this label when it's possible" | |||
tadzik | tabfail :) | 14:57 | |
jaffa4 | what is tabfail? | ||
masak | tadzik: sorry, what? | 14:58 | |
tadzik | or mybe not | ||
nv | |||
*nevermind | |||
masak | no, don't think so. | ||
jnthn | masak: OK, fine, we can just parse 'em for now then :) | ||
jaffa4 | I cannot make as big as steps as you jnthn | 14:59 | |
jnthn | jaffa4: I'm not worried about step size, just making sure the small steps are on the right path. | ||
jaffa4 | and is it not? | 15:00 | |
[Coke] wonders if jnthn++ & lizmat++'s discussion in backscroll about %*ENV will fix his issue about shell()ing out on the jvm. | |||
FROGGS | jaffa4: btw, it wouldn't panic if Perl6::Actions method statement had an elsif $<statement> { make $<statement>.ast } | ||
jaffa4 | ???? | 15:01 | |
jnthn | jaffa4: Well, I prefer not to commit commented out code in general, and I agree with masak that it's best to parse them and not die...it's things like goto that should fail with "no, not yet implemented" | ||
masak | jaffa4: fix this: (1) remove the commented-out code. (2) remove the panic. resubmit the patch. then I can apply. | 15:02 | |
15:02
birdwindupbird left
|
|||
jaffa4 | it wont work then | 15:02 | |
I tried that | 15:03 | ||
masak | no, not "uncomment". "remove" | ||
remove the lines. | |||
jaffa4 | if panic is removed, the code does not run properly | ||
I tested it | |||
jnthn | How did it fail? | ||
jaffa4 | it did not execute the statement belonging to it | 15:04 | |
there was no error | |||
I used JVM | |||
FROGGS | jaffa4: I suggested a fix | 15:05 | |
jaffa4 | pastebin.com/mEcynhW5 | 15:06 | |
QAst is not generated correctly | 15:07 | ||
FROGGS: where exactly? what line? | 15:10 | ||
FROGGS | <FROGGS> jaffa4: btw, it wouldn't panic if Perl6::Actions method statement had an elsif $<statement> { make $<statement>.ast } | ||
ten minutes ago | |||
jnthn | FROGGS: Huh, the error was in the parse code, htough? | 15:11 | |
dalek | kudo/scalar-from-desc: 1b69661 | jnthn++ | src/core/Variable.pm: Missing decont; gets is_default.t passing. |
||
jaffa4 | FROGGS: which line should | modify? | ||
FROGGS | jnthn: I thought it panics when he removes the .panic | 15:12 | |
jaffa4 | no, it does not panic | 15:13 | |
FROGGS | jaffa4: I'd add it right before the line starting with: elsif $<statement_control> | ||
jaffa4: because when you match another statement-rule inside statement, you have to do something with it when building the ast | 15:14 | ||
jaffa4 | you mean after <label> <statement> , there should be {make $<statement>.ast } | 15:16 | |
15:16
skids joined
|
|||
FROGGS | jaffa4: no, the <label> ... is in Perl6::Grammar, the other part needs to go in Perl6::Actions | 15:17 | |
dalek | kudo/nom: 8203477 | (Tobias Leich)++ | src/Perl6/World.nqp: protect the substr (for varnames shorter than 2 chars) |
15:18 | |
jaffa4 | FROGGS: ok I try that | 15:22 | |
FROGGS: should it be $past := $<statement>.ast instread of make $<statement>.ast? | 15:24 | ||
FROGGS | jaffa4: right | 15:25 | |
dalek | kudo/scalar-from-desc: 0fae92b | jnthn++ | src/ (2 files): Clean up variable traits. This avoids trying to parse type name stringification! |
15:28 | |
jnthn | .tell lizmat Think scalar-from-desc is good to merge now; will let you give it a look/spectest also | 15:29 | |
yoleaux | jnthn: I'll pass your message to lizmat. | ||
jaffa4 | ok, it compiles labels now and executes statements in the same line properly | 15:34 | |
FROGGS | cool | 15:37 | |
15:42
thou joined
|
|||
jaffa4 | it confused me that there are actions in grammar and in actions as well | 15:45 | |
FROGGS | jaffa4: that is because something really has to happen when parsing code, other (most) stuff can wait until later | 15:47 | |
dalek | kudo/scalar-from-desc: 2f1efb8 | jnthn++ | src/core/Array.pm: Fix some missing type-checking in typed arrays. |
||
jnthn | What happens in the grammar is not so much actions doing AST construction, but more symbol registration, etc. | 15:48 | |
jaffa4 | in yacc ,they were called actions I think | 15:49 | |
masak | in Perl 6 they are called "code". | 15:51 | |
jaffa4 | Perl6::Actions implies someone knew the same terminology | 15:52 | |
15:52
ajr_ left,
ajr joined
15:53
ajr is now known as Guest88304
|
|||
masak | jaffa4: quite likely. yacc tends to be on the radar of language implementors. | 15:55 | |
16:02
colomon left
16:03
crab2313 joined
16:15
Guest____ joined
16:18
rindolf joined
16:24
Guest____ left
16:25
Guest1337 joined
|
|||
ruoso may have a prototype for the handling of blocked threads... | 16:27 | ||
Guest1337 | Hi! Just wanted to ask what do you guys think about this lafo.ssw.uni-linz.ac.at/papers/2013...hemAll.pdf . Is it of any relevance to the Rakudo on JVM? | ||
lizmat just checked jnthn's scalar-from-desc branch and found 7 TODO's now passing! | 16:28 | ||
yoleaux | 14:48Z <jnthn> lizmat: scalar-from-desc branch is ready for triage :) | ||
15:29Z <jnthn> lizmat: Think scalar-from-desc is good to merge now; will let you give it a look/spectest also | |||
dalek | kudo/scalar-from-desc: 65d5fcd | (Elizabeth Mattijsen)++ | src/core/ (2 files): Remove dead code |
||
kudo/nom: 7f1cd51 | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java: Ensure gcx.Nil gets initialized. |
16:29 | ||
rakudo/nom: 1964396 | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/RakudoContainerSpec.java: | |||
rakudo/nom: Correct Nil handling. | |||
16:29
dalek left
16:30
dalek joined,
ChanServ sets mode: +v dalek
|
|||
jnthn | Guest1337: yes :) | 16:30 | |
Guest1337: Well, interesting for Rakudo on whatever anyway... :) | |||
lizmat | I think we just stopped dalek from seeing some pushes | 16:32 | |
actually, from reporting some pushes here | 16:33 | ||
jnthn | lizmat: It just flooded, left and rejoined :) | 16:34 | |
lizmat: YOu merged the branch, I take it? | |||
lizmat | ye | ||
s | |||
jnthn | yay | ||
Simpler code AND more passing todos :) | |||
And should be faster to boot | |||
lizmat | well, yes :-) | 16:35 | |
but I think there is something still missing: | 16:36 | ||
$ perl6 -e 'my %h is dynamic=a=>1; say %h<a>.VAR.dynamic' | |||
0 | |||
I would think that would need to be 1 | |||
jnthn | Hmm...I'd have expected it to be also. | ||
16:37
rindolf left
|
|||
lizmat | db2330cfcb7a212d1faf94e88ea1d50dc8a0d417 doesn't say anything about dynamic | 16:37 | |
jnthn | > my %h is dynamic; say %h<a>.VAR.dynamic | ||
1 | |||
16:38
rindolf joined
|
|||
lizmat | on parakudo ? | 16:38 | |
jnthn | yeah | ||
lizmat | I think I can fix it | ||
huh? | |||
jnthn | Note I didn't assign anything | ||
Yes, I know what's wrong | |||
STORE_AT_KEY is wrong | |||
16:38
mauke left
|
|||
jnthn | Note it does the $x is copy trick, when it should be doing \x and then assigning it to a container created with the new op | 16:39 | |
lizmat | so replacing it by \x should do the trick? | ||
ok, will do | 16:40 | ||
dalek | : 8e29495 | (Tobias Leich)++ | / (2 files): added curr_test and next_test |
16:42 | |
16:43
rindolf left
16:44
rindolf joined
16:48
crab2313 left,
crab2313 joined
16:49
PacoAir joined
|
|||
lizmat | jnthn: my tentative change: | 16:50 | |
method STORE_AT_KEY(\key, Mu $x) is rw { | |||
my \v := nqp::p6scalarfromdesc($!descriptor); | |||
nqp::findmethod(EnumMap, 'STORE_AT_KEY')(self, key, v = $x); | |||
is that sane ? | |||
jnthn | lizmat: yes, though writing \x in the signature and then v = x is even cheaper | 16:51 | |
lizmat | ok, but then I get "Odd number of elements found where hash expected" | ||
seems the v is a hash | |||
jaffa4 | I made one regression test | ||
lizmat | ? | ||
jaffa4 | one subtest of sleep falied | ||
FROGGS | jaffa4: what test file? | 16:52 | |
jaffa4 | HOw can I know that? | 16:53 | |
t\spec\S29-context\sleep.t | |||
jnthn | lizmat: oh... | ||
lizmat: Yeah, OK, you probably need the $x after all then | |||
lizmat | and a $v then | 16:54 | |
jnthn | um, you're binding so that should make no difference? | ||
FROGGS | jaffa4: which test failed? github.com/perl6/roast/blob/master...xt/sleep.t | ||
jaffa4: I dont see a connection to labels... | |||
lizmat | jnthn: hmmm… true | ||
jaffa4 | it means the test is not stable on itself I guess | ||
FROGGS | jaffa4: are you testing inside a virtual machine? | 16:55 | |
jaffa4 | in jvm | ||
FROGGS | jaffa4: no, I mean are you using virtualbox or vmware player? | ||
16:55
dmol left
|
|||
jaffa4 | no | 16:56 | |
16:56
dmol1 joined
|
|||
lizmat | jnthn: oddly enough, making it bind to $v works | 16:57 | |
FROGGS | jaffa4: does it fail when you re-run that single test file? | ||
ruoso | hmm... i think the nqp jvm interop fails to call methods on a private class that implements a public interface | ||
FROGGS | brb, dinner | ||
jaffa4 | FROGGS: no | 16:58 | |
ruoso | is there a lower-level nqp op to call a java method without trying to resolve it first? | 17:00 | |
17:02
bearman left
17:03
Guest1337 left,
fridim__ joined
|
|||
ruoso | hmm.. I guess I would need to add a directInstanceMethodCall to BootJavaInterop | 17:10 | |
japhb | o/ | 17:17 | |
Good *, everyone! | 17:18 | ||
jnthn | o/ japhb | ||
japhb | jnthn! How goes it? | ||
lizmat | japhb: /o | 17:20 | |
FROGGS | jaffa4: then it is unrelated, go ahead | ||
japhb | Hey lizmat! | ||
jaffa4 | FROGGS: I added a new path | ||
jnthn | japhb: Not bad, thanks :) | 17:28 | |
japhb: How's things for you? | |||
17:29
BenGoldberg left
|
|||
japhb | So I'm considering the merits of implementing Google protocol buffers for Perl 6. This would require easily packing and unpacking binary buffers in and out of hierarchical structures (preferably, typed objects). Plus I'd need to be doing a lot of socket IO to actually make use of them for RPCs -- double points if I can do multiple RPCs concurrently (triple for asynchronously as well). Is rakudo-jvm up for all that? | 17:30 | |
jnthn, Doing pretty good, actually. Kids back in school, new home actually in our name, work going decently well. Can't complain (too much). :-) | 17:31 | ||
jnthn | japhb: tadzik++ did, I think, get the JVM socket stuff in place. I did a big cleanup of Bufs recently also, so those now work better (on JVM too). No asynchronous socket IO just yet, but there are threads so you can do multiple things concurrently... :) | 17:33 | |
japhb | Oooh, I'll take it. :-) | 17:35 | |
17:36
celesta joined
|
|||
nwc10 | japhb: he's a bit to modest. There's a heck of a lot more than threads: jnthn.net/papers/2013-yapceu-conc.pdf | 17:36 | |
celesta | ahoi #perl6 | ||
dalek | ast: a30383c | (Elizabeth Mattijsen)++ | S (3 files): Unfudge/correct now passing tests |
||
lizmat | Q: sanity check: 'my KeyBag %h" and "my %h of KeyBag" are equivalent: they indicate a hash of KeyBags, right? | 17:39 | |
jnthn | Should be | ||
shop & | |||
japhb | nwc10: Yeah, saw that, was highly impressed -- it's why I thought the time might be right. But IIRC the slides were unclear on the state of socket IO, and without proper Buf handing it would have been a non-starter, so .... | ||
Oh, which reminds me: | |||
jnthn++ # THANK YOU FOR THE EASY CONCURRENCY. | |||
lizmat | jnthn++ # seconded! | 17:49 | |
celesta | r: my @foo = "one", "two"; say "found" if "one" ~~ @foo | 17:50 | |
camelia | rakudo 3e7b2a: ( no output ) | ||
celesta | i hoped smart match would find "one" in the list | ||
moritz | r: my @foo = "one", "two"; say "found" if "one" ~~ any(@foo) | 17:51 | |
camelia | rakudo 3e7b2a: OUTPUT«found» | ||
moritz | celesta: don't hope; be explict in what you ask for. | ||
celesta | alright :) thank you | ||
jaffa4 | otherwise, is it all? | ||
celesta | moritz++ | 17:52 | |
lizmat | r: my @foo = "one", "one"; say "all one" if "one" ~~ all(@foo) | ||
camelia | rakudo 3e7b2a: OUTPUT«all one» | ||
jaffa4 | my @foo = "one"; say "found" if "one" ~~ @foo | ||
r: my @foo = "one"; say "found" if "one" ~~ @foo | 17:53 | ||
camelia | rakudo 3e7b2a: OUTPUT«found» | ||
moritz | jaffa4: S03 has the smartmatch table | ||
17:56
crab2313 left
17:58
rindolf left
|
|||
donaldh | github.com/rakudo/rakudo/pull/193 | 18:02 | |
dalek | kudo/nom: 47d2d7e | (Elizabeth Mattijsen)++ | src/core/Hash.pm: Make sure my %h is dynamic=a=>1; say %h<a>.VAR.dynamic works |
18:03 | |
timotimo caught up with backscroll | 18:04 | ||
18:06
crab2313 joined
|
|||
moritz tests donaldh++'s pull request | 18:07 | ||
jnthn | moritz++ | 18:08 | |
And donaldh++ for the pr | |||
This will make it easier for folks to get a Rakudo JVM up and running :) | |||
donaldh | Hopefully it helps towards a JVM * too | 18:09 | |
18:09
spider-mario left
|
|||
timotimo | once nativecall is on jvm, it will be an amazing time for p6 | 18:14 | |
18:15
spider-mario joined,
Guest88304 left
|
|||
timotimo | and i think cruft-free JVM interop | 18:17 | |
moritz | somehow I'm feeling dumb | 18:18 | |
$ which javac | |||
/home/moritz/tmp/jdk1.7.0_25/bin/javac | |||
$ /home/moritz/tmp/jdk1.7.0_25/bin/javac | |||
bash: /home/moritz/tmp/jdk1.7.0_25/bin/javac: No such file or directory | |||
dalek | ast: 29ae9f5 | (Elizabeth Mattijsen)++ | S02-types/keybag.t: Fudge questionable KeyBag tests for now |
18:19 | |
moritz | and 'ls' says it exists | ||
lizmat | moritz: permissions ? | ||
moritz: symlinks ? | 18:20 | ||
timotimo | could be a broken link | ||
geekosaur | use ldd on it? sometimes that actually means the executable "interpreter" is missing (meaning, it's for the wrong linux version) | ||
moritz | ordinary files, permissions look OK | 18:21 | |
$ ldd /home/moritz/tmp/jdk1.7.0_25/bin/javac not a dynamic executable | |||
geekosaur | hm | ||
dalek | kudo/nom: 9ecd996 | (Elizabeth Mattijsen)++ | src/core/ (2 files): Allow .VAR.dynamic introspection on Hash / Array |
||
geekosaur | what does `file` say about it? | 18:22 | |
moritz | /home/moritz/tmp/jdk1.7.0_25/bin/javac: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped | ||
geekosaur | which contradicts ldd, which makes me think again it's a missing ELF interpreter | ||
timotimo | 32 vs 64 bit? | 18:23 | |
moritz | it's a 64 bit system | 18:24 | |
... and the oracle website said "Linux x64" | 18:25 | ||
unless I managed to click the wrong link | |||
timotimo | well it doesvsay 32 | 18:27 | |
moritz | ok, seems that was the real problem | 18:32 | |
masak | r: say "bash: $*PROGRAM_NAME: No such file or directory" # the first thing I thought when backlogging over moritz' troubles | ||
camelia | rakudo 47d2d7: OUTPUT«bash: /tmp/V9zzcSaRoB: No such file or directory» | ||
moritz | thanks everybody for the help | ||
timotimo | scalar-from-desc is not really ready to be merged? | 18:34 | |
lizmat | r: my $h is default(42)= Hash[Int].new; say $h<a>.VAR.default # would expect 42 | ||
camelia | rakudo 47d2d7: OUTPUT«(Any)» | ||
jnthn | lizmat: That's never gonna work | ||
lizmat: You've confusing the levels | |||
*you're | |||
Here, $h is a scalar that defaults to 42, which just had a hash assigned into it | 18:35 | ||
r: my $h is default(42)= Hash[Int].new; $h = Nil; say $h; | |||
camelia | rakudo 47d2d7: OUTPUT«42» | ||
masak | japhb: I'm interested in hacking protocol buffers too. if you get started at it, I might help. | ||
18:36
crab2313 left
|
|||
lizmat | jnthn++ for the sanity check | 18:36 | |
18:36
crab2313 joined
18:37
ssutch joined
|
|||
masak | celesta: "one" ~~ @foo works fine in Perl 5 -- but only because Perl 5 stole Perl 6's semantic before it settled into its current, nicer form. | 18:37 | |
celesta | masak: thank you | 18:38 | |
masak | semantics* | ||
celesta: the rule-of-thumb is this: infix:<~~> asks the right-hand side what type it is and how it looks inside, and that governs how the match is done. | 18:39 | ||
r: say <foo bar baz> ~~ { foo => 1, bar => 2, baz => "mwhaha" } | |||
camelia | rakudo 47d2d7: OUTPUT«True» | ||
masak | r: (1, 2, 3) ~~ <1 2 3> | 18:40 | |
camelia | rakudo 47d2d7: ( no output ) | ||
masak | r: say (1, 2, 3) ~~ <1 2 3> | ||
camelia | rakudo 47d2d7: OUTPUT«False» | ||
masak | r: say <1 2 3> ~~ (1, 2, 3) | ||
camelia | rakudo 47d2d7: OUTPUT«False» | ||
masak | hrm :) | ||
japhb | masak, Oooh, very good. Right now I'm trying to get a good rakudo-jvm build on this low-RAM machine, so I can actually get started. :-) | ||
masak | r: say [1, 2, 3] ~~ [1, 2, 3] | ||
camelia | rakudo 47d2d7: OUTPUT«True» | ||
masak | r: say [1, 2, 3] ~~ [1, *, 3] | ||
camelia | rakudo 47d2d7: OUTPUT«True» | ||
masak | r: say [1, 2, 3] ~~ [1, *] | 18:41 | |
camelia | rakudo 47d2d7: OUTPUT«True» | ||
masak | r: say [1, 2, 3] ~~ [*] | ||
camelia | rakudo 47d2d7: OUTPUT«False» | ||
celesta | masak: thanks for explaining | ||
lue | r: say [1, 2, 3] ~~ [**] | ||
camelia | rakudo 47d2d7: OUTPUT«False» | ||
dalek | kudo/nom: 3d59402 | (Donald Hunter)++ | / (3 files): Resurrected --gen-nqp for JVM. |
18:44 | |
kudo/nom: 9d38802 | (Donald Hunter)++ | ConfigureJVM.pl: Always realpath-ify |
|||
kudo/nom: 66a73a9 | (Donald Hunter)++ | ConfigureJVM.pl: Check for mandatory options |
|||
timotimo | yays :) | 18:45 | |
moritz | donaldh++ # that was your pull request, though rebased over lizmat++'s latest commits | ||
masak | rebase++ | ||
moritz++ # rebase | |||
timotimo | masak++ # moritz # rebase | 18:46 | |
donaldh | moritz++ | ||
FROGGS | free hugs \o/ | 18:47 | |
japhb | After that I see a few major things to do next: * Parse the protocol buffer definitions. * Create a PB parser from the parsed definition. * Implement pack/unpack from binary buffers into a hierarchy of message nodes. * Implement a network client working against existing PB RPC servers. * Implement a PB RPC server. * Do it all with concurrency. * Do it all with asynchrony too. | ||
18:47
domidumont left
|
|||
donaldh | r: for <masak moritz rebase> -> $x { say "${x}++" } | 18:47 | |
camelia | rakudo 47d2d7: OUTPUT«===SORRY!=== Error while compiling /tmp/ZXvkiYCLjkUnsupported use of ${x}; in Perl 6 please use {$x}at /tmp/ZXvkiYCLjk:1------> <masak moritz rebase> -> $x { say "${x}⏏++" }» | ||
masak | japhb: cool. | ||
japhb: github early, github often. I'll try to keep up, and help when I have the tuits. | 18:48 | ||
donaldh | r: for <masak moritz rebase> -> $x { say "{$x}++" } | ||
camelia | rakudo 47d2d7: OUTPUT«masak++moritz++rebase++» | ||
masak | donaldh: was '${x}' p5 damage? :) | ||
TimToady: maybe there should be a STD warning for that one? :) | 18:49 | ||
donaldh | yes, if you mean Did I have that expectation from p5 ? | ||
japhb | masak, You probably won't have too hard a time keeping up. My time is freeing up slowly, but it's still relatively limited right now. | ||
donaldh | Also from other scripting langs | ||
celesta | about grammars, is it ever necessary to create action methods for proto rules? | 18:50 | |
donaldh | masak: the message was pretty helpful. Maybe already covered. | ||
masak | donaldh: oh! yes. | 18:51 | |
timotimo | hm, somebody already built a protocol buffers grammar a month or so ago | ||
masak | "read the error message. read the error message." # I should do this :/ | ||
japhb: likewise. | |||
celesta: it's never necessary to create action methods. if you create them, they get called, even for proto rules. | 18:52 | ||
celesta | masak++: thank you | ||
japhb | timotimo, ah, where is that? I was away during that time frame. | 18:53 | |
lizmat | is .VAR already working on jakudo ? | ||
timotimo | it was ssutch | ||
github.com/samuraisam/p6-pb | 18:54 | ||
ssutch++ | |||
ssutch | wat? | ||
masak | ssutch++ :) | ||
ssutch | ah, it's not finished sadly | ||
too much work-work | |||
the grammar and some actions work | |||
masak | do unit tests cover what works so far? | 18:55 | |
ssutch | and the grammer can handle all official spec files | ||
timotimo | good enough to me :] | ||
japhb | ssutch, where is it? I don't see a repo for it in your github account ... | ||
timotimo | i linked to it above ^ | ||
ssutch | japhb: github.com/samuraisam/p6-pb | ||
japhb | DOH | ||
Sigh | |||
timotimo | :) | ||
japhb | ETOOMANYWINDOWS | ||
timotimo | japhb: you were going to try to integrate my changes into perl6-bench; what stopped you? not enough time or did i screw something up? :) | 18:56 | |
japhb | timotimo, Oh, just ran out of time last weekend trying to build rakudo-jvm so I could actually be sure my merges *worked*. Trying again this weekend. | 18:57 | |
timotimo | jvm::runtime.jars value not available from nqp/install/nqp --show-config. - what might i have done wrong? | ||
just ping me if you have any questions, i can't tell if i'll be available, though | |||
japhb | (Builds like a charm at $work when I fix the configure tests ... hmmm, need to send that patch ... but that's a much bigger machine than I have at home.) | 18:58 | |
timotimo, roger that. | |||
ssutch, thank you, I'll be reading that with great interest. :-) | |||
dalek | kudo/nom: e35e1fd | (Marton Papp)++ | src/Perl6/ (2 files): added labels removed comments and panic added recognizing labels |
||
ssutch | cool | 18:59 | |
masak | jaffa4++ | ||
18:59
SamuraiJack__ left
|
|||
FROGGS | we just need to make them work now :o) | 18:59 | |
ssutch | ignore PB::Model::Generator… i was in the process of trying to gen packages at runtime | ||
18:59
colomon joined
|
|||
FROGGS | and I#d like to be the first one who makes use of it | 18:59 | |
jaffa4++ | |||
japhb | ssutch, ah, gotcha | 19:00 | |
lizmat | could we first try to handle all cases where the goto/next/last can be resolved at compile time ? | ||
timotimo | gaaah. install/nqp doesn't support --show-config and ./nqp can't be run from outside the installation path | ||
what could i have done wrong? | 19:01 | ||
FROGGS | timotimo: maybe install/bin/nqp ? | ||
moritz | timotimo: mixing up install-jvm/bin/nqp vs install-jvm/nqp vs install/bin/nqp | ||
? | 19:02 | ||
timotimo | ah indeed | ||
install/bin/nqp must be new? | |||
dalek | ast: b337aa4 | (Elizabeth Mattijsen)++ | S02-names/is_dynamic.t: Add tests for .VAR.dynamic introspection |
||
19:03
berekuk joined
|
|||
FROGGS | timotimo: yeah, recognized it an hour ago | 19:03 | |
arnsholt | Heh, perl6-language gets some seriously weird email | ||
timotimo | you mean "reorganized"? | 19:04 | |
dalek | kudo/nom: ce2453d | (Elizabeth Mattijsen)++ | t/spectest.data: Make sure the spectest runs the .VAR.dynamic introspection tests |
||
FROGGS | timotimo: no | 19:05 | |
:o) | |||
masak | arnsholt: jnthn and I went to DDDx this year. there was a guy there who had a few war stories from the oil drilling industry. | ||
arnsholt: one thing he said was that they had tried units analysis as part of their software, but the users revolted against that. | 19:06 | ||
arnsholt | What's DDDx? | ||
masak | arnsholt: turns out users have excellent reasons for wanting to compare values that "don't typecheck" from a units perspective. | ||
arnsholt: a yearly meeting for people doing DDD -- Domain-Driven Design. | 19:07 | ||
arnsholt | Ah, cool | ||
masak | arnsholt: DDD focuses on putting domain thinking directly into the software. | ||
and into the vocab being used to develop and talk about the software. | |||
timotimo | yeah, sometimes you have a relation that doesn't make much sense, but you could always make up a crazy type | 19:10 | |
like the "rule of thumb" for drivers that determines how far you travel before you come to a halt is based on dividing the speed on your speedometer by a fixed number and reinterpreting it as meters | |||
masak | conceptually it feels a bit like C's "pointer to void" freedom. sometimes that's needed. | ||
timotimo | reinterpret_cast :) | ||
masak | I think units should definitely be explored in Perl 6. | 19:12 | |
19:12
crab2313 left
|
|||
masak | (but I think it should be explored as a module) | 19:12 | |
timotimo | yes. | ||
perl6 is sufficiently flexible that that doesn't need to go into the core | |||
if you have it in a module, you'll even get "gradual uniting" | 19:13 | ||
lizmat | .oO(funny how the PLATO system always comes back to haunt you :-) |
19:15 | |
timotimo | is that a pun or are did you have some experience with PLATO in the past? | 19:16 | |
19:16
donaldh left
19:17
cognominal left
|
|||
masak | timotimo: the latter. | 19:21 | |
lizmat | timotimo: it was the system on which I really did my first software development | ||
from late 1977 to 1983ish | |||
timotimo | was it terrible? | ||
well, it seems like you stuck to software development | 19:22 | ||
so it must have been survivable | |||
lizmat | yes, I did | ||
it was great compared to the FORTRAN I did on punched cards before that | |||
on PLATO I could type in my program on a termain, press SHIFT-STOP and it ran | |||
*terminal | 19:23 | ||
FROGGS | shift-stop to run it? | ||
timotimo | that's a step forward i agree | ||
lizmat | SHIFT-STOP, yes | ||
timotimo | yeah, shift shifts it from stop to go :) | ||
FROGGS | that is like pressing the start button to shut down a windows pc -.- | ||
lizmat | it was the untrappeble exception for non-system developers | ||
you also had to press SHIFT-STOP to login | 19:24 | ||
timotimo | FROGGS: except having to right-click it to stop it d) | ||
:) | |||
lizmat | the reason was that some jokers had created fake login screens to capture login/password combinations | ||
timotimo | wow, phishers go way back | 19:25 | |
lizmat | by using SHIFT-STOP to login, you were sure you weren't in a fake login screen | ||
FROGGS | wow, indeed | ||
timotimo | that's the same reason windows pcs sometimes require you to hit ctrl-alt-del to login | ||
lizmat | of course, this all became moot when you could intercept keys in the smart terminals using 8080 assembly code | ||
timotimo | yowch :) | ||
lizmat | so 8080 assembly code was outlawed for non-system developers as well :-( | 19:26 | |
which killed my slot machine :-( | |||
timotimo | oh ... oh no ... | ||
lizmat | as that was using 8080 assembly to rotate the wheels | ||
timotimo | i think i turned on my computer but it got a different ip or something | 19:27 | |
can't seem to reach it :o | |||
how am i supposed to benchmark stuff? my laptop would immediately go up to 90 degrees and clock down >_> | 19:28 | ||
lizmat | I think ribasushi had some ideas about that at the YAPC::EU | ||
if I remember correctly: make sure the CPU is locked in the lowest performance mode | 19:29 | ||
timotimo | is 2a02:8071:2909:7b00:5604:a6ff:fe93:d1a6 unreachable for you, too? | ||
lizmat | so that it doesn't have to start cooling / clocking down | 19:30 | |
wrt to clocking down, after starting my 3rd box of tissues since I got back from Kiev, I think I'll clock down a bit myself& | 19:31 | ||
FROGGS | lizmat: get well soon | 19:32 | |
timotimo | well, in this case i'll just implement the optimisation first, then see later in what cases it's not optimal to do the transformation | 19:34 | |
hm. do it in nqp first or in rakudo? that's the question | 19:36 | ||
rakudo it is. | 19:37 | ||
moritz | timotimo: I can't ping6 that address either | ||
timotimo | annoying :( | ||
19:46
araujo left
19:47
araujo joined
|
|||
timotimo turns rows of &infix:<~> into join('', ...) | 19:52 | ||
jnthn | wait isn't infix:<~> meant to be list infix? | 19:55 | |
timotimo | yes, at one point | ||
last time i tried it seemed like LoL slurpies were blocking us or something | |||
in any case, i wasn't able to tame the prototypes for any other case | |||
oh that's the one with the cool shoe shine? | 19:59 | ||
that's an amusing mischan right there | 20:00 | ||
20:00
jeffreykegler joined,
jeffreykegler left
20:01
jeffreykegler joined
|
|||
timotimo | yay, null pointer exception when dumping a qast node \o/ | 20:01 | |
20:01
colomon left
|
|||
celesta | perl is so much fun :) | 20:01 | |
timotimo | i put the value directly into the SVal node, which is of course wrong, because it belongs into the :value slot | 20:02 | |
masak | celesta: it has been theorized that the purpose of the entire universe is fun. :) | 20:03 | |
20:05
TimK1 joined
|
|||
ruoso really lost trying to understand why an object returned from a native jvm call is not able to call other methods | 20:10 | ||
timotimo | japhb: i don't know if you noticed, but we were able to trace the crash when using the shell command inside a loop | ||
it's caused if you use anything with "but" inside a loop | |||
diakopter | ruoso: have to cast it to something? | ||
ruoso | the specific case here is of $reentrantLock.newCondition() | 20:11 | |
which returns a $condition object, but I cannot call the actual method in it | 20:12 | ||
diakopter | did you try casting the returned object to the condition class? | ||
ruoso | Well, Condition is an interface | ||
diakopter | *interface | 20:13 | |
ruoso | and the specific class is private | ||
and I am on perl-land... not Java | |||
diakopter | ohhh | ||
*that* kind of native method | |||
20:13
kaare_ left
20:14
Rotwang joined
|
|||
diakopter | dunno. put it in a Condition scalar? | 20:14 | |
ruoso | I can't, because Condition is not defined at compile time | 20:15 | |
diakopter | eww | ||
jnthn | Don't think that'd help anyway | 20:16 | |
I wonder if it just doesn't somehow quite handle an interface return type... | |||
ruoso | that's my guess... | 20:19 | |
timotimo | jnthn: are you going to go ahead with the bless simplification? | ||
ruoso | but I am failing to understand where in the code it chooses how to represent the return type | 20:20 | |
jnthn | timotimo: hehe. The interop code took me a little figuring and I think I forgot it again... :) | ||
uh, ruoso ^^^ | |||
timotimo: Will let TimToady++ ponder it some more first. :) | |||
timotimo | if it gets object creation faster on all backends, i'd be for it ;) | 20:21 | |
20:26
raiph joined
|
|||
raiph | queue.acm.org/detail.cfm?id=2513575 # ACM article: "The Balancing Act of Choosing Nonblocking Features" | 20:27 | |
20:33
dalek left
20:34
donaldh joined,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
raiph | "Prior to Java 5 (2004) and C11/C++11, these languages could not be reliably used ... to fully express the required memory ordering" of a CAS | 20:37 | |
20:37
jeffreykegler left
|
|||
timotimo | github.com/timo/rakudo/tree/tilde_to_strjoin i'd be glad if somebody could time some string interpolations with this version vs current nom, but i'll probably go to bed soon, so it can wait until tomorrow | 20:39 | |
i just don't have reliable hardware to run it on | 20:40 | ||
japhb | timotimo, Oooh, interesting about the "but" inside a loop. | 20:44 | |
Is it now solved? Or just identified? | |||
leont managed to make his first perl6 module pass all of its tests :-) | |||
masak | \o/ | ||
leont: does it have a positive number of tests? :P | 20:45 | ||
timotimo | just identified | ||
we don't know yet why it happens | |||
donaldh | Are modifications to %*ENV normally visible to shell "…" processes? | ||
japhb | If I'm getting a no such file or directory on 'install-jvm/bin/nqp' while building rakudo-jvm, what do I need to do to my tree to correct it? Do I need to nuke rakudo/nqp/ and let it pull again? | 20:46 | |
donaldh | I'm guessing this doesn't happen on JVM because the JVM says the environment is immutable. | ||
japhb: are you trying latest ? | 20:47 | ||
japhb | donaldh, the environment of the current process, or the environment handed to children? I would think the latter would be a non-starter. | ||
donaldh | try using --gen-nqp | ||
japhb | I just did a pull of nom, and then started using the usual build process. | ||
Ah, OK, will try that. | |||
leont | masak: Yes, though I still have to port the documentation from pod5 to pod6 | 20:48 | |
donaldh | It will reuse the nqp checkout but the install layout has changed, so I guess it will clean and rebuild nqp | ||
japhb: I can arrange to use the contents of $*ENV on JVM but it won't happen automatically, which I guess does happen on parrot. | 20:50 | ||
japhb | donaldh, OK, so instead of '( cd nqp && perl ConfigureJVM.pl --prefix=../install-jvm && make install ) || exit; perl ConfigureJVM.pl && make || exit' I should instead do 'perl ConfigureJVM.pl --gen-nqp && make' ? Do I need to move the --prefix line on to the top level Configure as well? | ||
ruoso | ah... wait... I think I stumbled upon something interesting.. when using the trick jnthn showed me to describe all methods of a class, I realized that for that class the method I was calling was not listed as a short version, but only in the mangled version | 20:51 | |
donaldh | japhb: yes we committed --gen-nqp support to rakudo today. the default prefix is rakudo/install-jvm | ||
ruoso | is the name "await" special in some way? | ||
japhb | Woot! | ||
donaldh | japhb: --gen-nqp does the right thing | ||
japhb | Thanks, donaldh | ||
donaldh | so perl ConfigureJVM.pl --gen-nqp is all you need. | ||
jnthn | ruoso: It's just a sub | 20:53 | |
ruoso | for some reason .getInterop is not listing the "await" method on the condition interface | 20:54 | |
donaldh | jnthn: How do I look up %*ENV from Ops.java | 20:55 | |
timotimo | r: my @v; @v[10] := Nil; say @v; | 20:56 | |
ruoso | now I am getting a more reasonable error: Unhandled exception: java.lang.IncompatibleClassChangeError: Found interface java.util.concurrent.locks.Condition, but class was expected | ||
camelia | rakudo ce2453: OUTPUT«(Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any)» | ||
timotimo | r: my @v; @v[10] := Nil; say @v; say +@v; | ||
camelia | rakudo ce2453: OUTPUT«(Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any)11» | ||
20:56
raiph left
|
|||
jnthn | ruoso: oh...different await... :) | 20:57 | |
donaldh: There's an nqp::getenvhash op; think we miss something to update it though... | 20:58 | ||
donaldh | jnthn: JVM env is immutable afaik | ||
ruoso | now the problem is that it is taking the type it received instead of the actual type of the object | 20:59 | |
so it is trying to invoke a method in an interface | |||
donaldh | jnthn: I see, changes to %*ENV modify the underlying hash returned by Ops.getenvhash | 21:07 | |
21:08
BenGoldberg joined
|
|||
donaldh | jnthn: Is it okay to keep a reference to that hash in Ops.java | 21:08 | |
timotimo | r: 1 cmp 1 | ||
camelia | rakudo ce2453: ( no output ) | ||
timotimo | r: say 1 cmp 1 | ||
camelia | rakudo ce2453: OUTPUT«Same» | ||
jnthn | donaldh: Well, hang it off GlobalContext rather than putting it in a static | ||
21:09
cooper joined
|
|||
masak | "I'll just make a small change that I *know will work* without running the tests." # <-- this never works | 21:13 | |
jnthn | What have you broke now? :P | ||
21:14
panchiniak_ joined
21:16
panchiniak_ left
|
|||
masak | exercise instructions. | 21:19 | |
(for $dayjob) | 21:20 | ||
timotimo | that's why you have some file watcher do it in the background :) | ||
so the effort to not test is bigger than the effort to test | |||
BenGoldberg | How much time passes between rakudo being updated, and camelia the irc bot getting the new version of rakudo? | 21:22 | |
FROGGS | BenGoldberg: I think camelia rebuilds every hour, starting 10 past | 21:23 | |
timotimo | hm, i thought it was twice per hour | 21:24 | |
BenGoldberg | rn: (gather {take 2} but role {})[0].print | 21:25 | |
camelia | niecza v24-88-g1f87209: OUTPUT«2» | ||
..rakudo ce2453: OUTPUT«This type does not support elems in method REIFY at src/gen/CORE.setting:7494 in method reify at src/gen/CORE.setting:6720 in method gimme at src/gen/CORE.setting:7140 in method exists at src/gen/CORE.setting:7128 in method at_pos at src/gen/CORE.setting:… | |||
masak | timotimo: troo. file watchers are awesome. | ||
donaldh | jnthn: Can the env SixModelObject get added to an existing GlobalContext hash or does it need to be a new member? | ||
masak | timotimo: strangelyconsistent.org/blog/helpfu...d-on-crack | ||
timotimo | masak: and it's so easy to do with the inotify console tools | ||
masak | funnily enough, the py2-py3 compatibility layer is called "six": pythonhosted.org/six/ | 21:26 | |
timotimo | yeah, because 2 * 3 = 6 :) | ||
pmurias | masak: tote is only a description not actuall code? | 21:28 | |
jnthn | donaldh: I'd just add another field to GlobalContext for it. | ||
ruoso | I am starting to think that this problem is harder than it might look. I think the interop is trying to pre-evaluate the st for the return type of a method beforehand, which breaks down when the return type is an interface | ||
it was supposed to use the concrete type of the object to dispatch the method | 21:29 | ||
but the st is pre-cached with the inteface type | |||
which is not legal to perform the actual invocation | |||
donaldh | jnthn: okay. do we care about initialisation races? i.e. this will not be set until Ops.getenvhash gets called. | ||
jnthn | ruoso: Maybe worth leaving a message for sorear++ to see if he has some thoughts, since he did most of the interop stuff so far. | ||
masak | pmurias: no, it's actual code. | 21:30 | |
jnthn | donaldh: It seems rather unlikely to happen | ||
masak | pmurias: but it never was more than a script -- I never fleshed it out into a program. | ||
donaldh notes it down as the next most likely thing to happen now. | |||
pmurias | masak: it's hasn't been released? | ||
jnthn | :P | ||
ruoso | tell sorear please see irclog.perlgeek.de/perl6/2013-08-18#i_7467343 | 21:31 | |
ruoso bot command fail | |||
jnthn | .tell, I think | ||
ruoso | .tell sorear please see irclog.perlgeek.de/perl6/2013-08-18#i_7467343 | ||
yoleaux | ruoso: I'll pass your message to sorear. | ||
masak | pmurias: only as a gist somewhere. | 21:32 | |
pmurias: and the gist was called "some kind of mini-tote" or something. | |||
sorear | hi | 21:33 | |
yoleaux | 21:31Z <ruoso> sorear: please see irclog.perlgeek.de/perl6/2013-08-18#i_7467343 | ||
pmurias | sorear: hi | ||
sorear | ruoso! long time no see! | ||
pmurias | masak: the big problem with something like tote for nqp-js is that running all the tests takes a long while | ||
masak: and compiling isn't exactly instant also | 21:34 | ||
masak | pmurias: "running all the tests takes a long time" was my problem too. | ||
pmurias: I ended up manually narrowing down the test suite to what I was working at. | |||
ruoso | sorear: indeed... i have been too deep into $dayjob... trying to get back to activity... | ||
masak | this was back in 2009 when Rakudo was even slower. | ||
sorear | ruoso: how does it break down? | 21:35 | |
timotimo | now we can start running tests in parallel ;)) | ||
sorear | you should be able to use interface-shaped wrappers just like class-shaped ones | ||
ruoso | sorear: since the method has an interface as return type, it assumes that the concrete type of the returned object is the interface... | ||
which is not legal for actual method calling | |||
sorear | oh, I know what might be the problem... I think the wrapper generation is using invokevirtual when it should be using invokeinterface for interface wrappers | 21:36 | |
ruoso: it's deliberate that we don't ask the returned object what its concrete type is | |||
ruoso | oh, I wasn't aware that there was a specific API for call as the interface | 21:37 | |
pmurias | masak: so what are you using now instead of tote? | 21:38 | |
ruoso | sorear: so it should be just a matter of changing createAdaptorMethod to use one or the other | ||
sorear | ruoso: i think so, yeah | ||
ruoso | ok... now I just need to find out a way to distinguish a class from an interface | 21:39 | |
masak | pmurias: nothing, right now. :/ | 21:40 | |
pmurias: I just run my tests manually. | |||
would like to get back to something tote-like, though. | |||
thing is, I haven't had a big tested project for a while. | |||
21:42
TimK1 left
|
|||
timotimo now has "inotifywait" | 21:42 | ||
but it takes 5 seconds to tell me if it's wrong or right ... with just one single test case | 21:43 | ||
sorear | ruoso: I think there's an isInterface method on j.l.Class or so | 21:44 | |
timotimo | r: given Same { when Decreasing { say "ah" }; when Same { say "oh" }; when Increasing { say "wow!" } } | 21:45 | |
camelia | rakudo ce2453: OUTPUT«===SORRY!=== Error while compiling /tmp/yrwP4aEnBPMissing blockat /tmp/yrwP4aEnBP:1------> iven Same { when Decreasing { say "ah" }⏏; when Same { say "oh" }; when Increasin expecting any of: postfix statem… | ||
timotimo | why is that a missing block? | ||
regression? | |||
jnthn | I think you meant Decrease and Increase | 21:46 | |
timotimo | oh? | ||
FROGGS | yeah | ||
timotimo | seems so | 21:47 | |
LTA error, imo | |||
sorear | std: given Same { when Decreasing { say "ah" }; when Same { say "oh" }; when Increasing { say "wow!" } } | ||
camelia | std c2215f0: OUTPUT«===SORRY!===Function 'Decreasing' needs parens to avoid gobbling block at /tmp/Kar1FMmtTV line 1:------> given Same { when Decreasing⏏ { say "ah" }; when Same { say "oh" }; wMissing block (apparently gobbled by 'Decreasing') at… | ||
jnthn | Guess we didn't nab that from STD yet :) | 21:48 | |
sorear | ruoso: (dayjob stuff) same here pretty much for the last couple weeks | 21:49 | |
timotimo | i think a unix command for "run for 10 seconds at most, kill if necessary" | ||
because ^c now kills my inotifywait, too :( | 21:51 | ||
sorear | help ulimit | 22:00 | |
timotimo | oooh! | 22:01 | |
of course. | |||
22:02
spider-mario left
|
|||
geekosaur | mm, that's cpu time, not wall clock time | 22:03 | |
timotimo | well, rakudo's all cpu time ... | ||
22:04
aindilis` left
|
|||
timotimo | i shall go to bed now and feast on some dreams | 22:05 | |
good night! | |||
22:07
donaldh left
22:09
jaffa4 left
22:10
leont left
22:11
donaldh joined
|
|||
celesta | good night #perl6 | 22:12 | |
22:12
celesta left
|
|||
masak | 'night, celesta | 22:17 | |
...and timo | |||
japhb | Can someone with a 64-bit JVM please try to do a rakudo-jvm build with the following patch? gist.github.com/japhb/a23966e0921558396ba6 | 22:19 | |
22:20
PacoAir left,
Rotwang left
|
|||
japhb | That diff made the build work for me on a 32-bit, 2 GB RAM linux laptop (which means it was competing for RAM with desktop, xchat, etc.) | 22:21 | |
sorear | japhb: ooc, how long did it take? | 22:23 | |
japhb | I want to know if it will work exactly as is on 64-bit JVMs, or if the numbers have to be increased to account for larger pointers -- and if so, whether the increase can be small enough that the 64-bit values can be used as-is for 32-bit. | ||
sorear | pointers aren't larger on small 64-bit | ||
JVMs, I beleeeive -X:+UseCompressedOops is enabled by default | 22:24 | ||
donaldh | japhb: I can't look today but could tomorrow | ||
masak | 'night, #perl6 | ||
japhb | sorear, I didn't time it end-to-end; building the setting took a bit under 6.5 minutes | ||
donaldh | japhb: my guess is that as the setting grows, that number will grow too. | 22:25 | |
japhb | sorear, "small 64-bit"? You mean, the 64-bit JVM will act like it has a 32-bit memory space if possible? Wild. | ||
sorear | oh, apparently not | 22:26 | |
japhb | donaldh, sure, but at least there will be an explicit number that we can point people to, and know it will work for 2 GB RAM setups out of the box. | ||
22:27
Mouq joined
|
|||
japhb | And as we optimize rakudo and NQP, it may end up needing *less* space. | 22:27 | |
sorear | japhb: with -XX:+UseCompressedOops enabled, the VM allocates the heap as a contiguous span of up to 32 Gb and then represents pointers as indexes into the heap, multiplying by 8 | 22:28 | |
apparently this is not the default, so ignore me | |||
I thought it was | |||
japhb | Interesting idea though. | ||
[Coke] | donaldh: known issue on rakudo-jvm that shell doesn't propagate env changes (failing spec test for it) | 22:29 | |
donaldh | [Coke]: thx. currently fixing that, hopefully. | 22:30 | |
[Coke] thinks the nqp opcode mentioned will help, though. | |||
donaldh: ah, excellent. | |||
last time I tried, the ENV I was iterating over was the original one, not the changed one. | 22:31 | ||
donaldh++ if you can get that working. | |||
donaldh | [Coke]: it's needed for panda, so I thought I'd tackle it. | ||
22:32
pmurias left
|
|||
jnthn | Need sleep; 'night | 22:37 | |
sorear | gn jnthn | 22:44 | |
22:46
donaldh left
22:47
FROGGS left,
dmol1 left
22:51
donaldh joined
22:53
xinming left
22:55
donaldh left,
xinming joined
23:08
pdurbin joined
23:13
benabik left
23:14
benabik joined
23:15
slavik left
23:26
colomon joined
23:30
berekuk left
23:32
berekuk joined
23:47
berekuk left
23:52
colomon left
23:55
alexghacker joined
|