»ö« 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:01 clkaoud_ joined, xfix_ joined, isacloud_____ joined
grondilu I won't put it in the ecosystem because it is awefully slow right now, but here is what I've been trying to do today: github.com/grondilu/clifford (geometric algebra in Perl 6) 00:01
00:02 Rounin_ joined, haroldwu_ joined, moritz_ joined, japhb_ joined, nwc10_ joined, hoelzro_ joined, rhr joined, sjn_ joined, ashleydev joined 00:03 BinGOs_ joined, mst_ joined, integral joined, integral left, integral joined, sivoais_ joined 00:05 djanatyn1 joined, BinGOs left 00:06 nbrown__ joined, BinGOs_ is now known as BinGOs, BinGOs left, BinGOs joined 00:07 geekosaur left, sjn left, integral_ left, hoelzro left, djanatyn left, moritz left, mst left, xfix left, sivoais left, Rounin left, bjz left, japhb left, ashleyde1 left 00:08 bjz joined 00:09 geekosaur joined, Alina-malina left, isacloud____ left, isacloud_____ is now known as isacloud____, Alina-malina joined, clkaoud_ is now known as clkaoud 00:10 raiph joined, nbrown__ left 00:11 nwc10 left, rhr_ left, nebuchadnezzar left 00:17 nbrown__ joined 00:18 grondilu left 00:19 djanatyn1 is now known as djanatyn 00:23 Mouq left, nbrown__ left 00:30 nbrown__ joined 00:34 nbrown__ left 00:35 araujo left 00:36 nbrown__ joined 00:38 araujo joined 00:40 nbrown__ left 00:42 nbrown__ joined 00:45 avuserow joined 00:46 nbrown__ left 00:53 galledallegator joined 00:56 nbrown__ joined 00:57 ivan`` left 01:03 nbrown__ left 01:06 FROGGS_ joined 01:07 JL235 left 01:08 Sqirrel left, ivan`` joined 01:09 FROGGS left 01:17 ivan`` left 01:19 rindolf joined, araujo left 01:21 araujo joined 01:23 ivan`` joined, nbrown__ joined
colomon hmmm, no, openssl does have a Build.pm 01:23
01:24 raiph left 01:27 nbrown__ left 01:29 dayangkun joined, dayangkun is now known as dayangkun_pto 01:30 PZt joined 01:42 Sqirrel joined
colomon Ah, I think the problem is that changing %*ENV<PERL6LIB> doesn't change @*INC in the currently running process. 01:46
got it! 01:53
02:03 immortal left, erkan joined, erkan left, erkan joined
colomon now just need to figure out how to clean up an older git commit so I can push my fix to emmentaler. 02:08
TimToady m: my $p1 = (my $x = 42,1); my $p2 = (my $y = 42,1); say $p1 === $p2; say VAR($x).WHICH; say VAR($y).WHICH 02:09
camelia rakudo-moar ebccb2: OUTPUT«True␤Int|47556464␤Int|47556464␤»
TimToady this is incorrect, since $x and $y are supposed to be different variables
why VAR is not giving different WHICHes is perhaps the root of the problem; these are different objects 02:10
lizmat: ^^
in any case, the expression should be False, not true, since the identity of a container is its "location" 02:11
m: my $x = 42; my $y = 43; say VAR($x).WHICH; say VAR($y).WHICH 02:12
camelia rakudo-moar ebccb2: OUTPUT«Int|55125480␤Int|55125560␤»
TimToady m: my $x = 42; my $y = 42; say VAR($x).WHICH; say VAR($y).WHICH 02:13
camelia rakudo-moar ebccb2: OUTPUT«Int|60179944␤Int|60179944␤»
TimToady yes, that's bogus
02:16 chenryn joined 02:24 aborazmeh joined
TimToady m: my $p1 := (my $x = 42,1); my $p2 := (my $y = 42,1); say $p1 === $p2; 02:26
camelia rakudo-moar ebccb2: OUTPUT«True␤»
TimToady m: my $p1 := (my $x = 42,1); my $p2 := (my $y = 42,1); say $p1 === $p2; say $p1.WHICH; say $p2.WHICH 02:27
camelia rakudo-moar ebccb2: OUTPUT«True␤Parcel|(47195968)(Int|1)␤Parcel|(47195968)(Int|1)␤»
TimToady the problem seems to be tha that variables are dereffing on WHICH when they shouldn't 02:28
so it's ending up with the location of 42, or some such
rather than the location of the variable 02:29
02:32 noganex_ joined
TimToady m: my $x; say VAR($x).WHICH 02:35
camelia rakudo-moar ebccb2: OUTPUT«Any|17527800␤»
02:35 noganex left
TimToady the type of the variable should be Scalar 02:35
m: my $x; say VAR($x).WHAT
camelia rakudo-moar ebccb2: OUTPUT«(Scalar)␤»
TimToady WHAT has it right, it's WHICH that is dereffing wrongly 02:36
02:43 xenoterracide joined
dalek mentaler: 4fe033f | (Solomon Foster)++ | smoker:
Make exception handling more robust.
02:44
mentaler: a5eb593 | (Solomon Foster)++ | smoker:
Custom Build.pm modules need path.
03:04 pyrimidine joined
pyrimidine any reason that unbase only takes a Str? Seems odd 03:05
m: :4(0123)
camelia rakudo-moar ebccb2: OUTPUT«Potential difficulties:␤ Leading 0 does not indicate octal in Perl 6; please use 0o123 if you mean that␤ at /tmp/0pZ67KXJXx:1␤ ------> :4(0123⏏)␤Type check failed in binding $str; expected 'Str' but got 'Int'␤ in su…»
pyrimidine m: :4(‘0123’)
camelia rakudo-moar ebccb2: OUTPUT«===SORRY!=== Error while compiling /tmp/YXrCp1RM1y␤Bogus statement␤at /tmp/YXrCp1RM1y:1␤------> :4(⏏‘0123’)␤ expecting any of:␤ lol composer␤ prefix or term␤ prefix or meta-pr…»
TimToady because :4(123) makes no sense 03:06
and you've got smartquotes on
pyrimidine ah
TimToady it's not so apparent there, but what about :16(deadbeef)? 03:07
pyrimidine where is unbase specced? 03:09
TimToady S02:3375 03:10
synopsebot Link: perlcabal.org/syn/S02.html#line_3375
pyrimidine I think I need to re-read that spec :) 03:17
03:19 raiph joined
TimToady I think I need to rewrite it :) 03:21
ingy TimToady: Perl? 03:23
ingy hasn't read the scrollback :) 03:24
"I think I need to rewrite it :)" — Larry Wall
TimToady '"I think I need to rewrite it :)" — Larry Wall' -- Ingy Döt Net 03:25
ingy "I think I need to make a language that can rewrite it!" — Ingy döt Net
TimToady s/D/d/ 03:26
ingy don't shout that 'd' man...
b00m!
TimToady I unshouted it first
ingy JYNX
ingy is camping out at a Perl monger's house in SLC this week. I guess I wouldn't be here sans TimToady. :) 03:28
thanks!!
TimToady trying to get a jump on YAPC::NA 2015? 03:29
ingy aye!
TimToady yer a little early for the hackathon...
ingy well Perl 7 might take that long ;)
TimToady
.oO(There is no Perl 7, and Ingy is not its prophet.)
03:32
ingy
.oO(A prophet is not without honor except in his HOME directory.)
03:34
03:47 BenGoldberg left 04:01 kaare_ joined 04:11 pyrimidine left 04:14 Salai left, akaseki joined 04:16 sivoais_ is now known as sivoais, sivoais left, sivoais joined 04:18 Salai joined 04:19 akaseki left 04:20 akaseki joined 04:23 Salai left, JL235 joined 04:25 Salai joined 04:26 akaseki left 04:29 cooper joined, cooper left, cooper joined 04:30 Salai left 04:33 jack_rabbit left, akaseki joined 04:34 akaseki is now known as Salai 04:39 Salai left 04:41 akaseki joined, akaseki is now known as Salai 04:48 kaare_ left 04:56 chenryn left 04:57 mr-foobar left 05:01 [Sno] left 05:10 chenryn joined 05:12 dwarring left, araujo left 05:13 raiph left 05:17 Salai is now known as HatakeKakashi 05:18 kaare_ joined 05:22 SamuraiJack joined 05:24 dayangkun_pto left 05:27 HatakeKakashi is now known as Salai, ecocode left, ecocode joined 05:31 ecocode left 05:36 kaleem joined 05:40 Zhi joined 05:45 Akagi201 joined 06:01 ecocode joined 06:02 mj41_nb joined 06:06 gfldex joined 06:16 denis_boyun joined 06:19 chenryn left 06:20 sjn_ is now known as sjn
cognome r: ' { a b c } } ' ~~ m/ $<block> = [ '{' ~ '}' [ .+? <before '}'> ] ] /; say $<block>; 06:22
camelia rakudo-jvm ebccb2: OUTPUT«(timeout)» 06:23
..rakudo-{parrot,moar} ebccb2: OUTPUT«「{ a b c }」␤␤»
cognome I thought the <before '}'> would be implicit with the '{' ~ '}'
06:23 aborazmeh left
cognome r: ' { a b c } } ' ~~ m/ $<block> = '{' ~ '}' [ .+? <before '}'> ] /; say $<block>; 06:24
camelia rakudo-{parrot,jvm,moar} ebccb2: OUTPUT«「{」␤␤»
cognome Also I thought the capture would include the whole span
r: ' { a b c } } ' ~~ m/ $<block> = [ '{' ] ~ '}' [ .+? <before '}'> ] /; say $<block>; 06:25
camelia rakudo-{parrot,jvm,moar} ebccb2: OUTPUT«「{」␤␤»
sergot hi o/
cognome And if I has wanted the opening construct, I would have explicetely grouped it.
TimToady = only works on atoms, and ~ does not create an atom 06:26
cognome I think one can go either way for both but that should be said
Well '{' ~ '}' ... creates something pretty tight, I could have construed that as an atom :) 06:28
06:28 chenryn joined
cognome People are usually interested on the whole thing, not the opening construct :) 06:29
TimToady it expresses the relationship of 3 atoms, and it's not really a pattern matcher but shorthand for an error check
the purpose of it is to panic if you don't end up at }
you can't simultaneously do that and also have it participate in backtracking 06:30
cognome Well, I find it so convenient that I wanted to do more than it does :)
TimToady well, but we can't define it to do contradictory things, alas :)
cognome Anyway, the "work around" were easy enough. 06:31
TimToady++ for the feedback 06:35
06:37 darutoko joined 06:38 [Sno] joined 06:40 chenryn left 06:43 xenoterracide left, dayangkun joined 06:48 mr-foobar joined 06:49 gfldex left, chenryn joined, nebuchad` is now known as nebuchadnezzar 06:51 mj41_nb left 06:58 zakharyas joined 07:10 jerrycheung left
danaj In rakudo from github, if I modify a file in nqp/MoarVM/src/..., what is the best way to get it incorporated into perl6-m at the top level? Even if I do make in nqp/MoarVM and nqp, I can't seem to get perl6 to include it. 07:11
TimToady you have to do make install in MoarVM 07:12
and in nqp if you changed anything there
danaj tyvm, that's what I was missing.
07:14 nwc10_ is now known as nwc10 07:20 domidumont joined
moritz_ \o 07:22
07:25 fhelmberger joined 07:34 Rounin_ is now known as Rounin, FROGGS_ is now known as FROGGS
FROGGS o/ 07:34
dalek line-Perl5: 6bc9619 | nine++ | README.md:
Fix typo in README.md

s/Inline::Perl6/Inline::Perl5/
07:35
07:35 bjz left 07:36 bjz joined 08:00 xinming joined
nine FROGGS: I just realized that v5 might become the basis of a P5->P6 translator... 08:10
FROGGS nine: when we can generate P6 code from AST, perhaps yes 08:11
nwc10 I'm not sure how useful a translator is, in the general case. Even if it gets to 100% of the syntax (which it can't) it won't cover semantics of the Perl 5 runtime that poke through 08:13
Python's 2to3 didn't exactly help set the world on fire.
so I don't think it's useful as a primary goal.
other people's opinions may vary, and please don't let me stop anyone having fun trying things. 08:14
nine nwc10: not as a primary goal, no. 2to3 failed because one would have to use it on the entire code base including all used libraries to make the transition.
But being able to migrate an application one piece at a time and being able to start with an automatic direct translation might help a lot. 08:15
nwc10 might. I'm still of the opinion that rewriting of working code from Perl 5 to Perl 6 is unlikely. 08:16
it's subsystem rewrites that we need to "capture"
which is why Inline::Perl5 is awesome
but, I repeat, these are my opinions. 08:17
nine Nobody's gonna rewrite working code just for the sake of it. Especially when with v5 we'll be able to execute P5 code faster. But if I have to do substantial changes to existing code anyway, I'll want to port it to Perl 6 first to be able to use the new features. That's when a translator might come in handy. 08:19
Even if it doesn't produce 100 % working code.
08:19 telex left 08:20 telex joined, dakkar joined
nine That's how we got rid of 1000s of lines of Python code anyway. There's still ~ 5000 LOC left, but it used to be twice that. 08:20
08:33 kjs_ joined, rindolf left 08:48 domidumont left 08:49 brrt joined, domidumont joined 08:50 mr-foobar left 08:51 mr-foobar joined 08:54 kjs_ left 08:56 jerrycheung joined 08:57 ecocode left 08:59 jerrycheung left 09:03 kjs_ joined 09:05 brrt left
dalek kudo/nom: fc79953 | (Elizabeth Mattijsen)++ | src/core/Scalar.pm:
Fix $.VAR.WHICH
09:13
09:22 moritz_ is now known as moritz, xinming left
dalek kudo/nom: 329adf8 | (Elizabeth Mattijsen)++ | src/core/Scalar.pm:
Properly fix $.VAR.WHICH
09:31
kudo/nom: 4a6dbf5 | (Elizabeth Mattijsen)++ | src/core/Parcel.pm:
Fix Parcel.WHICH, as reported by TimToady++
09:36 Shozan is now known as SHODAN 09:37 daxim joined 09:39 Sqirrel left
dalek ast: 993eb27 | (Elizabeth Mattijsen)++ | integration/advent2013-day07.t:
Fix <a b c> === <a b c> test, with explanation
09:40
09:42 donaldh joined
dalek ast: 33818a0 | (Elizabeth Mattijsen)++ | integration/advent2013-day07.t:
Add some descriptions
09:44
09:45 spider-mario joined 09:46 domidumont left 09:48 domidumont joined
dalek ast: 5dfd323 | (Elizabeth Mattijsen)++ | S02-literals/quoting.t:
Unfudge now passing test
09:48
09:52 xfix_ is now known as xfix, mr-foobar left, xfix left, xfix joined 09:53 mr-foobar joined
moritz m: say <a b c>.WHICH 09:54
camelia rakudo-moar ebccb2: OUTPUT«Parcel|(Str|a)(Str|b)(Str|c)␤»
moritz m: say ('a', 'b)(Str|c)').WHICH 09:55
camelia rakudo-moar ebccb2: OUTPUT«Parcel|(Str|a)(Str|b)(Str|c))␤»
moritz m: say ('a', 'b)(Str|c') === <a b c>
camelia rakudo-moar ebccb2: OUTPUT«True␤»
moritz bug (but not new)
09:56 domidumont left 09:57 domidumont joined 10:00 zoosha joined
dalek osystem: 701b9d8 | (Filip Sergot)++ | META.list:
a newline removed
10:03
sergot "Sprockets" doesn't work on modules.perl6.org 10:04
I mean, it is printed wrongly 10:05
dalek ast: 83761ab | (Elizabeth Mattijsen)++ | S02-types/parcel.t:
Add some Parcel === tests
10:21
10:21 Zhi left
lizmat moritz: aware of that problem 10:23
but I don't see a solution apart from creating a WHICH object to be used everywhere
that has === overloaded as eqv
10:23 pmurias joined
lizmat any string representation has the potential of false positives 10:24
pmurias re perl5 -> perl6 translator, wouldn't translating test suits when porting modules be really usefull?
lizmat afk for most of the rest of the day& 10:25
10:27 mst_ is now known as mst, mst left, mst joined
FROGGS pmurias: probably, yes 10:27
10:32 cosimo left 10:33 cosimo joined 10:43 chenryn left 10:50 chenryn joined
donaldh porting test suites is probably more useful than the actual module. 10:51
dalek kudo/nom: ed10d58 | (Elizabeth Mattijsen)++ | src/core/Scalar.pm:
Fix Scalar.WHICH for type values
donaldh I'd want to refactor a module to make it idiomatic Perl 6 but i'd probably not care about the tests so much. 10:52
lizmat donaldh: those two statement seem contradictory 10:57
donaldh oh
lizmat
.oO( seems we had a change of plan, I won't be afk for most of the day)
10:58
donaldh I don't care about the tests being good idiomatic Perl6. I care about the tests testing my module.
Does that make more sense?
lizmat ah, yes, much more 10:59
donaldh It's how we try to work in $dayjob. If we're planning a refactor or rewrite, for whatever reason, try really hard to automatically salvage the tests.
minimize test re-spend. minimized repeated mistake making. 11:00
nwc10 how does running the spectest differ from running a test individually? In that t/spec/S32-array/delete-adverb-native.t fails for me in the spectest (and I can get a coredump) but not if I run it by hand 11:02
coredump is in malloc (I suspect malloc corruption) called from
#3 0x00003fffab6a5e78 in MVM_string_utf8_decode (tc=0x1002a9b0690, result_type=0x1002a9bd590, utf8=0x3fffcf13f841 "LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01"..., bytes=1314) at src/strings/utf8.c:198
however running under valgrind spots no problem 11:03
11:13 chenryn left 11:20 chenryn joined
colomon does a happy dance because OpenSSL (and at least five other modules that had been failing) passed overnight in the smoke test. 11:29
dalek kudo/nom: 5a21173 | (Elizabeth Mattijsen)++ | src/core/ (5 files):
Fix many .WHICH related issues:

  - some cases typeobject.WHICH would fail
  - other cases WHICH method could be simplified
11:33
11:36 JL235 left
lizmat m: EVAL "Int".WHAT.say # there must be a better way to change a string into a typeobject 11:43
camelia rakudo-moar ed10d5: OUTPUT«(Str)␤»
lizmat m: (EVAL "Int").WHAT.say 11:44
camelia rakudo-moar ed10d5: OUTPUT«(Int)␤»
lizmat (not better but corrector :-) 11:45
moritz m: say ::('Int').perl 11:46
camelia rakudo-moar ed10d5: OUTPUT«Int␤»
moritz lizmat: ^^
lizmat moritz++ 11:47
11:57 mr-foobar left 11:58 mr-foobar joined 11:59 araujo joined, araujo left, araujo joined 12:00 chenryn left 12:02 chenryn joined
sergot m: grammar H { token TOP { <a>* }; token a { <a>* }}; say H.new.parse(''); 12:03
camelia rakudo-moar ed10d5: OUTPUT«(timeout)» 12:04
sergot m: grammar H { token TOP { <a>* }; token a { <a>* }};
camelia ( no output )
12:04 kaleem left
lizmat is there any reason why src/core/IO/Spec/QNX is not included in building the setting ? 12:08
seems like labster was the one working on that ~ 1 year ago 12:09
12:10 rindolf joined
dalek kudo/nom: abd4fed | (Elizabeth Mattijsen)++ | src/core/Deprecations.pm:
Fix one more typeobject.WHICH error
12:12
12:13 chenryn left, raiph joined
lizmat adds IO/Spec/QNX: it's a subclass of IO::Spec::Unix, so hardly any extra code 12:15
hmmm... in parrot, it was already added 12:20
now added to JVM
but where is the list of modules for moar gone???
ah, moar_core_sources
moritz a necessary hack for working around the mac os X make bug 12:21
lizmat ah, ok, moritz++ :-) 12:22
FROGGS m: grammar H { token TOP { <a>+ }; token a { <a>* }}; say H.new.parse(''); # you shouldn't quantify nothing very often :o) 12:26
camelia rakudo-moar ed10d5: OUTPUT«(timeout)»
FROGGS eww
ohh!
token a calls itself?! 12:27
dalek kudo/nom: dd4baad | (Elizabeth Mattijsen)++ | tools/build/ (2 files):
Add IO::Spec::QNX to JVM/MoarVM build

It was already on Parrot, for some reason
ast: e063ed7 | (Elizabeth Mattijsen)++ | S02-types/WHICH.t:
Add tests for typeobject.WHICH
12:28
lizmat FROGGS: seems like a reasonable assumption ? 12:29
moritz only if it consumes a non-empty string before doing so 12:32
13:03 slavik joined
sergot FROGGS: yeah, I was just curious what can happen then :) 13:05
it could be a secret sequence to launch something :) 13:06
carlin how often does the projects.json that panda downloads get updated? 13:08
13:09 kurahaupo left
FROGGS carlin: hourly AFAIK 13:09
13:09 slavik left
carlin It's missing projects that were added 18+ hours ago, something probably needs to be prodded somewhere 13:12
ohh the HTTP headers say Last-Modified: Wed, 27 Aug 2014 17:01:14 GMT 13:13
13:14 guru joined 13:15 guru is now known as Guest90094, Guest90094 is now known as ajr_
timotimo o/ 13:16
raiph carlin: iirc the cronjobs on several feather hosts were stopped around then 13:20
(because of hard drive failures) 13:21
13:25 aborazmeh joined
dalek kudo/nom: 7e61510 | (Elizabeth Mattijsen)++ | t/spectest.data:
Add type.WHICH tests to spectest
13:26
13:27 kaare_ left
jnthn evening, #perl6 13:34
13:34 jerrycheung joined 13:36 mr-foobar left
FROGGS hi jnthn 13:36
13:36 bjz_ joined
FROGGS jnthn: you are better today? 13:36
13:36 bjz left
jnthn FROGGS: Yes, in the relative rather than the absolute sense. 13:37
FROGGS jnthn: that's a start :o) 13:38
jnthn Anything anybody is blocking on that I might be able to address in the next 60-90 mins?
13:39 galledallegator left
FROGGS jnthn: review carlins PR? I don't know about anything else 13:39
nwc10 jnthn: PPC Linux works with SPESH disabled apart from 1 test that fails when run from make spectest, but not by hand 13:40
and I can't work out why
so, seems problem was mostly between keyboard and chair
seems that valgrind exists on PPC, but it's not telling me anything 13:41
raiph jnthn: nine said irclog.perlgeek.de/moarvm/2014-08-30#i_9270066 13:42
jnthn nwc10: Hm, so we know the PPC-argh is in spesh... 13:44
FROGGS: Which PR, in particular?
13:44 haroldwu_ is now known as haroldwu
nwc10 we know most of it is, and it seems to be mostly in the spectsts for trigonmetric functions 13:45
jnthn That sounds like someting I cna do...
13:45 haroldwu left, haroldwu joined
jnthn nwc10: How far do we get on PPC with spesh enabled? 13:45
raiph jnthn: Q from Mouq: irclog.perlgeek.de/perl6/2014-08-31#i_9276802
nine raiph: that one is already fixed :)
nwc10 jnthn: we have spectest failures. implication -> build builds, sanity tests pass, most spectests pass 13:46
jnthn raiph: Well, the answer to the nine question is "you leaked an exception from a C callback", usually... :)
nwc10: Ah, OK. Hmmm...that almost certainly means it's something to do with flaots...
raiph heh, you guys move way too fast
nwc10 jnthn: however, NQP nativecall test fails. I think it's confusion about 32 vs 64 bit. I've not dug into that one at all
nine that's exactly what I found out...and that getting refcounts in P5 XS code right is really hard.
nwc10 jnthn: might be. Seems to blow up with a NULL pointer in stringification. I'm not asking you to worry about this - I assume that I can figure it out 13:47
jnthn: actually, only question is "is there an easy way to disable spesh, "thing" by "thing", so that I can identify which one it is?"
13:48 FROGGS[mobile] joined
jnthn nwc10: Stringification? Hmm. Try disabling optimize_smart_coerce. 13:48
(You'll have to hack the code)
nwc10 I assumed that I was hacking the code.
jnthn (But should be just commenitn gout the call to it in optimize.c)
13:48 charsbar__ left, tadzik left, haroldwu is now known as suckwind 13:49 charsbar__ joined, tadzik joined, dirtyob joined 13:50 suckwind is now known as yenshine
nwc10 jnthn: anyway, it's in a lot better shape than I assumed 13:50
13:50 dirtyob left
nwc10 jnthn: and gives some hopes that we might be able to build on more debian platforms than the 2 usual suspects 13:50
jnthn .tell Mouq there are two operations you can do regarding the current routine's MVMCallCapture: usecapture and savecapture. The first populates a per-thread singleton and so is not reentrant. The latter saves a copy.
yoleaux jnthn: I'll pass your message to Mouq.
13:51 yenshine is now known as haroldwu
jnthn .tell Mouq both are worth avodiing on hot paths; savecapture has to allocate a GC-able, so it's the more expensive of the two. 13:51
yoleaux jnthn: I'll pass your message to Mouq.
jnthn raiph: Thanks for the pointers. :)
nwc10: Sounds good :) 13:52
13:52 mls_ is now known as mls
nwc10 jnthn: I'd like mberends to return so that I can pass on the good news. 13:55
13:56 aborazmeh left
jnthn nwc10: I'm not sure making folks magically appear on IRC is within my capabilities, sorry. :) 13:57
13:59 nbrown__ joined, pdcawley left 14:00 pdcawley joined
moritz nwc10: I'm pretty sure mberends has an email address that he still uses :-) 14:01
masak .oO( "this magical wand makes people appear on IRC. now, *this* one makes it so that they can't actually leave. use with caution." ) 14:04
timotimo that sounds like a pretty terrible fate 14:05
nwc10 jnthn: commenting that out changes the SEGV from a NULL pointer to a garbage pointer
jnthn: so it's part of the problem.
I can dig further at some point
timotimo that is optimize_smart_coerce? 14:06
nwc10 timotimo: yes. commenting that out changes the error
timotimo it may need to check for VMNull on top of a null pointer in the facts->type slot
i had to put that into optimize_can_op to make it robust enough to pass almost all spec tests 14:07
jnthn Not sure why thatd make us a PPC-specific issue though. 14:09
timotimo oh 14:10
i forgot about that part
nwc10 Big Endian 14:11
timotimo maybe it's a problem with the way i'm assigning operands?
they are unions; i'm just assigning them straight with =
i think that generates the proper code, but i can't know for sure ...
hm. i'm assigning to a .lit_i16; perhaps i'm not nulling out the value beforehand? 14:13
Timbus m: class A {}; my $test = (my $x = A.new(:a), A.new(:b), my $y = A.new(:c), A.new(:d)); say $test.perl
camelia rakudo-moar dd4baa: OUTPUT«$(A.new(), A.new(), $(A.new(), A.new()))␤»
timotimo nah, that comes from MVM_spesh_alloc, which nulls out everything properly
Timbus whys that parcelify the last two.. 14:14
timotimo it also parcelifys "all" of it 14:15
not sure if that's because of the my $x in there
jnthn I guess 'cus you end up with list assignment precedence there
(for the second assignment)
timotimo m: class A {}; my $test = (A.new(:a), A.new(:b), my $y = A.new(:c), A.new(:d)); say $test.perl 14:16
camelia rakudo-moar dd4baa: OUTPUT«$(A.new(), A.new(), $(A.new(), A.new()))␤»
timotimo ah, ok, the $ in front probably comes from assigning to $test
m: class A {}; my $test = (A.new(:a), my $x = A.new(:b), my $y = A.new(:c), A.new(:d)); say $test.perl
camelia rakudo-moar dd4baa: OUTPUT«$(A.new(), $(A.new(), $(A.new(), A.new())))␤»
timotimo m: class A {}; my $test = (A.new(:a), my $x = A.new(:b), my $y = A.new(:c), A.new(:d)); say $test.perl; say $x.perl
camelia rakudo-moar dd4baa: OUTPUT«$(A.new(), $(A.new(), $(A.new(), A.new())))␤$(A.new(), $(A.new(), A.new()))␤»
timotimo does this make it clearer?
(see also: why you have to write { my ($a, $b) } rather than { my $a, $b }) 14:17
Timbus yeah i guess. makes gtk::simple a little less.. cool
timotimo have i been doing that wrong in the example code?
Timbus no, it will work as long as you avoid making parcels
timotimo ah, you mean inside an argument list it'll work fine? 14:18
m: say(my $a = "hello", my $b = "world"); say $a.perl; say $b.perl; 14:19
camelia rakudo-moar dd4baa: OUTPUT«helloworld␤"hello"␤"world"␤»
timotimo apparently. phew :)
Timbus as long as you assign everything to a var, or only the first thing.. otherwise youll need to break out the ()'s 14:20
dalek p: 12ac42b | jonathan++ | src/QRegex/Cursor.nqp:
Avoid a bunch of str boxing in !cursor_pass.

When we have a conditional in non-void context, it needs to produce a single kind of result; since a method call cannot be known to unbox to a native string, then this caused us to perform a boxing operation. This gets rid of a boxing operation on every !cursor_pass.
14:24
timotimo neat!
jnthn profiler++ 14:25
lizmat NQP_REVISION bump? 14:26
jnthn Who says I'm done yet? :P
lizmat ah, ok
timotimo :D
colomon woah, that sounds like a handy optimization
lizmat awaits do for { start { @jnthn_fixes } } # to make things faster in wallclock
dalek p: b40622d | jonathan++ | src/QRegex/Cursor.nqp:
Save an integer boxing in every !reduce.

Similar trick to the previous commit; again, saves an allocation on every Cursor that passes.
14:29
moritz await Promise.allof(@jnthn_fixes)
jnthn Those two between them cut two GC runs off the benchmark nqp-m parse-json projects.json 10 14:31
timotimo that's amazing
moritz two out of how many?
jnthn moritz: From 31 down to 29
moritz so about 6%. Not bad. 14:32
m: say 29 / 31 * 100
camelia rakudo-moar dd4baa: OUTPUT«93.548387␤»
moritz m: say (31 - 29) / 31 * 100
camelia rakudo-moar dd4baa: OUTPUT«6.451613␤»
moritz it's a poor testament for my math skills that I don'T get a simple percent calculation right on the first attempt 14:33
masak it's these bloody abacus machines. 14:34
they have ruined real understanding of the underlying numbers.
moritz :-)
jnthn That or studying advanced enough math you forget what a number is... :P
masak my math only contains arrows these days. and knots. 14:35
colomon moritz++ # I do the same thing at least 50% of the time I try to calculate a percentage
masak I haven't seen a number in months.
14:36 nam_ joined
jnthn Such abstract... 14:36
tadzik computer, messages
hmm
jnthn Well, that was disappointing :P 14:37
moritz I know understand why many of my friends were so bad at math
they made the same stupid mistakes that I do
tadzik weechat says there was something 14:38
moritz but I think "93%? that can't be right", and look further
whereas they often say "yay, a result! We can play soccer now!"
well, put that in past sense
tadzik oh, a rakudobrew.ad :) 14:39
jnthn .ad?
masak .oO( much .ad about nothing ) 14:41
moritz rakudobrew sells ads now? 14:42
nam_ Code: 'my @a = abcadae ~~ m:g/a/' I would have exspected that @a contains 3 a's as it would in perl5. what am I doing wrong? 14:43
moritz m: 'abcadae' ~~ m:g/a/; my @a = $/.list; say @a.elems 14:44
camelia rakudo-moar 7e6151: OUTPUT«0␤»
moritz nam_: there's some only recently resolved spec issue around ~~ m:g// that's not yet implemented in rakudo 14:45
m: $_ = 'abcadae'; m:g/a/; say $/.list.elems
camelia rakudo-moar 7e6151: OUTPUT«0␤»
moritz m: $_ = 'abcadae'; say (m:g/a/).elems 14:46
camelia rakudo-moar 7e6151: OUTPUT«3␤»
TimToady m: ('abcadae' ~~ m:g/a/).WHAT.say
camelia rakudo-moar 7e6151: OUTPUT«(Bool)␤»
TimToady that's wrong
so not yet resolved
moritz TimToady: yes, m:g/a/ still returns a list in rakudo
jnthn m: say 'abcadae'.match(/a/, :g)
camelia rakudo-moar 7e6151: OUTPUT«「a」␤ 「a」␤ 「a」␤␤»
moritz TimToady: the spec issue is resolved, iirc
TimToady no, it's returning Bool ^^
jnthn Use ^^, which has been reliable for ages...
14:46 xenoterracide joined
moritz TimToady: no, $rhs ~~ m:g/a/ returns Bool 14:47
colomon tadzik: can you please look at my two patches to emmentaler? the more recent I'm pretty confident about, but the exception handling stuff from before that might be better expressed in other ways. (I sort of only committed it by accident.)
moritz TimToady: it's the ~~ that turns the List into Bool
TimToady m: $_ = 'abcadae'; say m:g/a/.WHAT 14:48
camelia rakudo-moar 7e6151: OUTPUT«(List)␤»
TimToady okay, NYI
14:49 mr-foobar joined
TimToady and it's 0 because it's redispatching to List.ACCCEPTS 14:49
14:50 PotatoGim^Home joined
TimToady nam_: we'll get it close to working as you'd expect soonish, though I believe it still requries a .list because Match doesn't quite act like a Parcel 14:51
nam_ hm this seems to work: say 'abcadae'.match(/a/, :g) a little confusing 14:52
moritz yes, it is. It must be fixed.
TimToady m: $_ = 'abcadae'; m:g/a/; say @$/.elems 14:55
camelia rakudo-moar 7e6151: OUTPUT«0␤»
spider-mario perl6.org/compilers/features
what are “delayed declarations”?
TimToady m: $_ = 'abcadae'; m:g/a/; say $/.elems
camelia rakudo-moar 7e6151: OUTPUT«0␤»
TimToady m: $_ = 'abcadae'; m:g/a/; say $/.list.elems
camelia rakudo-moar 7e6151: OUTPUT«0␤»
TimToady m: $_ = 'abcadae'; m:g/a/; say $/[0].elems
camelia rakudo-moar 7e6151: OUTPUT«0␤»
moritz spider-mario: declaring stuff in a macro
spider-mario oh, ok
moritz spider-mario: (more specifically, inside an unquote) 14:56
TimToady uh, in my coffeeless state I'd guess more like in a quasi
masak spider-mario: see D4 of news.perlfoundation.org/2011/09/hag...mplem.html
14:56 fhelmberger left
spider-mario thanks 14:57
masak briefly, if you do `class C {}` in normal code, it registers with the package scope and you can use it directly.
if you do the same in a quasi, you don't expect to get a class C (or whatever) to play with. not until you install the quasi in some actual code. 14:58
TimToady it's the problem of generic code
masak yes.
TimToady so there needs to be a "compose" somewhere
moritz TimToady: yes, in a quasi
TimToady otherwise known as instantiation
not to be confused with instantiation :) 14:59
masak it's a bit of functions:invocations :: quasis:splicings.
moritz well, one could also argue it's a problem of scope
if all declarations were lexical, it would be much less of an issue
masak that's not the language I have to implement this thing in, though :) 15:00
TimToady in some ways it's easier with textual macros, because you know you have to reparse, and it's clear at what level the declarations happen
when "reparsing" must happen at a deeper level, it's a little more abstract 15:01
15:01 nam_ left
TimToady "what would the text that would have produced this AST have done besides producing this AST?" 15:01
masak right. AST macros are semi-digested already. the trick is keeping track of all the semi-digested information (tree, scopes, world-style declarations)
D4 is tempered a little bit for me by the fact that we now know that the foundation on which it rests needs to be rethought. 15:02
moritz you mean the macro part? or World? 15:03
masak the macro part.
TimToady or the grammar part?
masak oh, the grant is/was fully aware of Worlds, thank blog.
moritz or the rest? :-)
masak yes, the grammar part is part of what needs to be worked into it all.
TimToady he's already had the rest :P 15:04
moritz the World is not enough..
lizmat m: my $p1 := (my $x = 42,1); my $p2 := (my $y = 42,1); say $p1 === $p2; say $p1.WHICH; say $p2.WHICH # TimToady: is that better ?
camelia rakudo-moar 7e6151: OUTPUT«False␤Parcel|(Scalar|71759448)(Int|1)␤Parcel|(Scalar|71759520)(Int|1)␤»
masak I have a number of use cases mulling/mulching around in my head.
but what I really need to do is sit down and collect everything that's happened in the past year or so, and try to find a kind of synthesis.
15:05 domidumont left
TimToady lizmat: yes, that looks better 15:07
m: my $x; say VAR($x).WHICH 15:08
camelia rakudo-moar 7e6151: OUTPUT«Scalar|67054336␤»
TimToady \o/
15:09 fling is now known as larie
lizmat TimToady: any suggestions as to the point that moritz raised at irclog.perlgeek.de/perl6/2014-09-01#i_9278769 15:09
?
jnthn m: say 963420 / 1867062 15:10
camelia rakudo-moar 7e6151: OUTPUT«0.5160086␤»
Ulti m: say (1,2,3;4,5,6).perl 15:11
camelia rakudo-moar 7e6151: OUTPUT«(1, 2, 3; 4, 5, 6)␤»
moritz lizmat: to me, the solution is pretty clear
dalek p: 1058b96 | jonathan++ | src/QRegex/Cursor.nqp:
Various micro-optimizations to MATCH.

These avoid various bits of boxing. In fact, all of the boxing that we accidentally did in MATCH. In a parse-heavy benchmark such as the NQP JSON parser, this cuts the number of object allocations roughly in half by number (though since it cuts down on boxing, and boxes are comparatively small, it's a much smaller decrease on GC runs needed, from 29 to 25).
moritz lizmat: Parcel.WHICH needs to escape the characters ( and ) in the .WHICH strings from its elements 15:12
TimToady lizmat: yes, our current implementation of WHICH is subject to injection attacks
and as we know, escaping is only a partial solution 15:13
and bug prone
jnthn All todays patches guided by pfoiler++
uh
profiler++
15:13 dayangkun left
lizmat hence my reluctance to go down that path 15:13
I see .WHICH being used in 2 ways in the setting:
1. as a string, for typed hashes and sets/bags/mixes 15:14
TimToady identity is a sequence of assertions, any one of which can falsify
lizmat 2. for comparisons
TimToady but these assertions could be integer comparisons
lizmat for the typed hashes etc, we need a string
TimToady and integers are possibly easier to hash than chars
FROGGS tadzik: there is a message for tadzik2 from me :o) 15:15
lizmat but for comparisons, I would argue, I would argue we need some === overload that would do a sort of eqv on whatever the objects are
maybe an "eqw" operator ? 15:16
moritz or maybe we just need a single routine that can collapse a tree of ObjAt objects into a single one
lizmat moritz: how would that help value based objects?
moritz lizmat: what would be the difference between eqw and === ? 15:17
TimToady if your cryptohash is good enough, you can do the git trick, yes
TimToady thinks the string notion of identity is a bit misguided in the first place
lizmat === checks the stringification of the .WHICH object
eqw would do an eqv on the .WHICH of the object tree
eqw could be cheaper, as most === are not true 15:18
jnthn Let's be clear *why* ObjAt is currenlty a string. It's because the existing portable hash support we have over different backends, that was to hand when getting object arrays in there in the first place, was string keys.
TimToady you should be able to ask an object for a hash of its identity
15:18 zakharyas left
lizmat and could therefore fail on the first mismatch 15:18
15:18 larie is now known as fling
moritz lizmat: as long as that's something internal, and not another user-exposed equivalence operator, I'm all fine with that 15:19
jnthn That does not mean we should keep it that way; it was done that way so we could actually have object hashe at all, 'cus too many things blocked on them, and a passable-for-now implementation "now" beat a perfect one "later"
TimToady gets the feeling eqw is a bandaid over a suboptimal design, yes 15:20
we should fix the notion of identity to be composable
if you later have to serialize *that* in order to hash, so be it 15:21
lizmat quite likely so: but needing to build a string of a Set of 1M entrues for an ===, when you know the Set you're comparing with is most likely not the same
seems less optimal to say the least
TimToady but I was thinking of the precise phrase "injection attack" several days ago with respect to this problem
and that's exactly what moritz++ did 15:22
thankfully he did it with good intentions :)
lizmat (and has done before, I know, it wasn't forgotten moritz++)
TimToady but this really is a security issue, or governments would not issue us identity cards 15:23
lizmat how about we create a WHICH class, and that all .WHICH methods return an object of that type
moritz lizmat: we have that part already. It's called ObjAt 15:24
TimToady though the At is a misnomer
lizmat and then handle the comparison code (the "eqw" thing) in there
15:24 nbrown__ left
TimToady and the internal algorithm can remain hidden and optimizable 15:24
you do need to be able to ask it for a .hashval or so 15:25
15:25 nbrown__ joined
TimToady which it might or might not cache 15:25
masak hashing is a typical domain where not looking at how other big languages do things would be almost criminally stupid.
TimToady it's sort of a smart ID card :)
well, python has a way to ask objects what their hash is 15:26
masak I think you can get pretty far by doing `$hash = 31 * $hash + hash($part);` over all parts. 31 is prime and has nice optimization properties.
tadzik FROGGS: oh! :) 15:27
masak that's what I tend to see in Java. I'm by no means an expert, but that trick alone seems to carry pretty far.
15:27 tadzik is now known as tadzik2
tadzik2 computer, messages 15:27
TimToady well, modulo having a non-randomized hash algo is also a potential dos hole
tadzik2 FROGGS: :(
FROGGS or tadzik3 *g*
I thought I told you something 15:28
tadzik2 :D
15:28 tadzik2 is now known as tadzik
TimToady time travel? 15:28
parallel worlds?
masak TimToady: I'll let others weigh in on that. I don't know enough about the DOS aspects of hashing. (although I find them fascinating.)
TimToady ESP?
tadzik colomon: okay, I'll take a look
FROGGS tadzik: maybe I just pinged you
colomon tadzik: thanks 15:29
FROGGS (was about the PR colomon++ merged)
TimToady tachyons?
transactional QM?
15:29 nbrown__ left
moritz "now will rollbacks!" 15:29
masak :P 15:30
TimToady forgets what we were talking about
masak today's mini-challenge: (been a while since we had one)
you're given the text "The quick brown fox jumps over the lazy dog."
FROGGS shall we dance it? 15:31
masak and two operations: italic($from, $len) and bold($from, $len), where $from and $len work like in substr.
given an input of N such italic/bold operations, emit the most sensible properly nested markup of <i>...</i> and <b>...</b> tags on the text. 15:33
the task is interesting because (a) one has to decide what an operation on a "mixed" piece of text does, and (b) the operations are allowed to mis-nest, but the tags in the markup aren't. 15:34
moritz masak: what about mutliple-times bolding and italicing? 15:35
FROGGS right, operating on .words
moritz ie, what shoudl bold(0, 20); bold (0, 10); yield?
TimToady Really Really Bold
jnthn Well, I'm done with the Cursor allocation opts now. If somebody fancies bumping NQP_REVISION, go for it :)
TimToady maybe translate to Double Struck 15:36
FROGGS jnthn: let me test it first :P
moritz TimToady: well, "good" fonts support 5 or more font weights
15:36 grondilu joined
masak moritz: same as in Office Suites: if it's completely unbold when you bold it, it becomes bold -- otherwise, it becomes unbold. 15:36
grondilu p6: my $a = (1, 2); $a ,= 3 15:37
masak moritz: that, incidentally, is also the same semantics that empty/intermediate/checked checkboxes have.
camelia rakudo-jvm 7e6151: OUTPUT«(timeout)»
( no output )
15:37 khisanth_ is now known as Khisanth
moritz masak: ok 15:37
grondilu m: my $a = (1, 2); say $a ,= 3
camelia rakudo-moar 7e6151: OUTPUT«(signal )» 15:38
grondilu my $a = (1, 2); $a ,= 3 # this hangs in the REPL
lizmat confirmed locally
15:39 molaf joined
lizmat m: my $a = (); say $a ,= 3 # more golfed down 15:39
camelia rakudo-moar 7e6151: OUTPUT«(signal )»
moritz m: (my $a = ()) ,= 3 15:40
camelia ( no output )
lizmat the signal is probably from using too much memory
masak once you start adding threes, it's really hard to stop.
lizmat i very quickly grew to 1G on my machine
*it :-)
jnthn At least we're fast at allocating these days... :P
grondilu m: (my $ = ()) ,= 1 # I win the golfing contest ;)
camelia ( no output )
FROGGS m: say (my $ = ()) ,= 1 15:41
TimToady m: $ = () ,= 1
dalek kudo/nom: af0fa9f | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Locally.pm:
Fix one more type-object.WHICH failure
camelia rakudo-moar 7e6151: OUTPUT«(timeout)»
( no output )
TimToady m: ($=()),=1 15:42
camelia ( no output )
TimToady hmm
m: @,=1
camelia ( no output )
dalek ast: 3bd9a0b | (Elizabeth Mattijsen)++ | S02-types/WHICH.t:
Check for ObjAtness of .WHICH
moritz masak: pity we don't have a Set::IntSpan implementation in Perl 6 15:43
TimToady m: say @,=1
camelia rakudo-moar 7e6151: OUTPUT«1␤»
TimToady m: say $,=1
camelia rakudo-moar 7e6151: OUTPUT«===SORRY!=== Error while compiling /tmp/dS9vvtxoFX␤Unsupported use of $, variable; in Perl 6 please use $*OUT.output_field_separator()␤at /tmp/dS9vvtxoFX:1␤------> say $,⏏=1␤»
TimToady heh
moritz masak: would come in handy for this problem
TimToady m: say $ ,=1
camelia rakudo-moar 7e6151: OUTPUT« 1␤»
TimToady I guess it has to be a my 15:44
dalek kudo/nom: df2245d | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump nqp rev for MATCH/!reduce opts by jnthn++
masak moritz: I should add that I haven't thought enough about the problem (in this form) to have formed an elegant model of it myself. 15:45
but yes, IntSpan seems to be vaguely in the right direction.
TimToady not to me; seems more like hyper XOR on a slice 15:46
masak hm, interesting.
15:46 kaare_ joined
masak I was thinking of boundaries, not individual characters. 15:46
TimToady doubtless there are problem sets where one or the other approach will do better 15:47
15:47 noganex joined
moritz TimToady: I thought about bit fields too 15:48
TimToady depending on how much boundary simplification transformations you're forced to do, vs the single final boundary pass of the xor approach
moritz TimToady: but in the end, you have to extract ranges again, and skiplists can also XOR
TimToady goes for conceptually simpler in that case :) 15:49
tadzik colomon: both patches look good to me
one of them hints at panda throwing wrong exceptions somewhere
TimToady elegant does not always mean impenetrable :)
15:50 noganex_ left
masak I think my solution leans towards the boundaries solution: I would try to keep a tree of objects corresponding to the final XML structure, and then have each line of input percolate down the tree, making the necessary transformations. 15:51
TimToady and, actually, in the xor approach, you never actually have to locate the boundaries at all, since deciding the font is done on each character anyway
masak: as I said, impenetrable :P
masak heh :) 15:52
TimToady er, my previous point was in how your wysiwyg editor, not xml
15:52 denis_boyun left
TimToady s/editor/editor works/ 15:52
obviously xml is boundary oriented
unless you wrap each xml character individually :) 15:53
masak well, my solution would certainly make serialization easy by the end. dunno how elegant the tree transformation logic could be made, though.
TimToady which makes the boundaries Someone Else's Problem :)
masak feels like it could be interesting if approached from a Haskell/pattern matching angle.
TimToady
.oO(impenetrable)
TimToady doesn't actually like his Red-Black solution on RC much... 15:54
masak TimToady: well, "most sensible" in the requirements was meant to forbid things like "each characters is marked up individually"
character* 15:55
15:55 kaleem joined, nuggs joined
TimToady well, it's not like detecting runs isn't about the 9th problem of the 99 problems 15:56
15:57 khisanth_ joined
TimToady so it's very FP, which must mean it's elegant :) 15:57
masak :P
masak is reminded that he never did create a lagging-variable module
15:58 Khisanth left, khisanth_ is now known as Khisanth 15:59 raiph left
TimToady averts his gaze from the shiny squirrel and looks back upon the log 16:00
nuggs Dense me can't find the list of supported platforms for Rakudo. I failed to build on Arm, and wonder if that's expected.
lizmat nuggs: nwc10 is currently unbitrotting on ARM 16:01
nuggs lizmat: thanks.
TimToady we could use more continuous testers to do more continuous testing :)
jnthn Well, really it depends on backend. Rakudo on JVM will run anywhere that's resourceful enough and can run a JVM. Rakudo on MoarVM...what lizmat said. It certainly *has* worked on ARM, but bitrot... 16:02
Anyways, sleep o/
TimToady o/
masak m: sub forl(@vals, &block) { for @vals[1..*] Z @vals[0..*-1] -> $current, $last { &block($current, $last) } }; forl 24..77, -> $c, $l { if $c div 10 > $l div 10 { say "Passed from {$l div 10}0s to {$c div 10}0s" } } 16:04
camelia rakudo-moar 7e6151: OUTPUT«Passed from 20s to 30s␤Passed from 30s to 40s␤Passed from 40s to 50s␤Passed from 50s to 60s␤Passed from 60s to 70s␤»
masak in fact, lagging variables are a lot about boundaries. 16:05
masak wants to think about this issue more, but needs sleep
'night, #perl6
lizmat night masak 16:06
TimToady \o
colomon tadzik: thanks
o/
is masak in China too?
lizmat colomon: yes 16:07
colomon lizmat: thanks
lizmat he's +0800 GMT 16:08
or was it +0900 because of summetime?
colomon I'm just used to him going to bed at dinner time rather than lunch time. :) 16:09
16:14 donaldh left
timotimo should i expect many spec test failures? 16:14
lock.rakudo.moar is probably flappy, but there's also a whole bunch of io-spec-* tests failing 16:15
uniq and split are failing, too :(
colomon :(
lizmat timotimo: apart the known segfault in t/spec/integration/99problems-51-to-60.t , my spectests have been clean? 16:16
timotimo OK, it seems like my addition of bindattrs_* to the jit has caused failures 16:18
ooooh 16:19
haha :)
copy-paste programming strikes again
16:22 PotatoGim^Home left 16:25 jack_rabbit joined
timotimo back to only known spectest failures. great! :) 16:25
16:27 pmurias left
cxreg planeteria still down? :/ 16:28
timotimo .tell brrt if we could see "beginning of inlined frame for function $foobar" in the jit log, that'd be interesting 16:29
yoleaux timotimo: I'll pass your message to brrt.
timotimo .tell brrt for example, i see !cursor_pass only jitted like 50% of the time, spesh'd the other 50%, but in the jit log i can only see successful jittings of that frame, so it's probably in-lined versions of that otherwise? 16:30
yoleaux timotimo: I'll pass your message to brrt.
jdv79 its not like planet perl 6 has fresh content more than once a week anyway 16:36
but it was nice when it was up 16:37
timotimo nothing's wrong with planetaria itself; the domain has been "stolen", though 16:38
16:39 mberends joined 16:41 vendethiel left 16:48 mberends left 16:50 gfldex joined, mberends joined 16:54 dakkar left 16:55 xenoterracide left, nuggs left 16:58 bjz_ left, bjz joined 17:00 xenoterracide joined, Ven_ joined 17:01 kaleem left 17:03 xenoterracide left 17:05 [Sno] left 17:06 slavik joined 17:08 vendethiel joined, SamuraiJack left 17:09 xenoterracide joined 17:10 kurahaupo joined 17:11 ajr_ left
grondilu if %h{$a} :exists { my $b = %h{$a}; ... } # how can I write this but avoiding calling %h{$a} twice? 17:13
grondilu notices he can't write (my $b = %h{$a}) :exists 17:14
vendethiel grondilu: the :exists would apply to the my
m: my $v = 'a'; my %h = b => 1; given %h{$v} { .say if .defined } 17:15
camelia ( no output )
vendethiel m: my $v = 'a'; my %h = a => 1; given %h{$v} { .say if .defined }
camelia rakudo-moar df2245: OUTPUT«1␤»
vendethiel grondilu: something like that? Won't work if you hold `Nil`s; tho
grondilu .defined is equivalent to :exists? If so I'll use that.
vendethiel no, not exactly 17:16
m: say Nil.defined
camelia rakudo-moar df2245: OUTPUT«False␤»
vendethiel which is why you don't want what I wrote if you might have non-`defined` values in your hash.
grondilu I don't think there will so it will do.
jdv79 wanted to do some simple testing with p6 which leads to rakudobrew and then perlbrew. i guess centos 5 is "old" now. 17:23
17:24 FROGGS[mobile] left
TimToady
.oO(First make it work, then make it fast, then make it work everywhere, then make it work everywhen...)
17:24
17:27 mberends left
vendethiel ... then debug it everywhere 17:27
TimToady nah, that's what downstream is for 17:28
17:29 telex left
TimToady is attempting to remove from roast the assumption that parcels autoflatten under elems and .[] 17:29
so that parcels being used a tuples behave more as expected 17:30
17:30 telex joined, bjz left 17:31 bjz joined 17:34 MilkmanDan left
vendethiel TimToady: I'm afraid "which-method-flatten-which-don't" is gonna be like learning which method takes a LIST or a scalar in p5 17:34
is it a macro or a function in lisp. Is it a ...
17:35 kjs_ left 17:38 MilkmanDan joined
japhb_ Looking at today's commits ... what was the total effect of jnthn++'s MATCH optimizations? 17:39
17:47 Ven_ left
TimToady vendethiel: yes, I'm thinking about that problem, but I also don't want to force everyone to write .flat everywhere either 17:49
17:49 brrt joined 17:50 dwarring joined
TimToady japhb_: compile looked maybe 3-4% faster, but might've just been a cold CPU :) 17:51
rindolf Hi all. 17:52
TimToady: hi, happy labour day.
vendethiel TimToady: I don't have a lot of my brain focused on that, but it'd seem *very* natural to me to have EVERY method flatten EXCEPT methods that change said flattening (.item, .tree, .flat ... wait no not flat :P) 17:56
"does it flatten ? Well, the answer is easy. If it needs not to (because it's going to change the structure), then no, else yes" 17:57
as I said, I'm only considering this with a VERY naive approach.
TimToady What is this "labour" of which you speak? 17:59
vendethiel TimToady: question would be: can we make this seem "natural" *and* "logical" to people? You're certainly the best placed to answer that 18:00
18:01 labster joined
vendethiel ("best placed" looks pretty terrible to me now, english-wise) 18:03
18:05 Ven_ joined
jdv79 wow, compiling p6 drove my under-mem'd box into swap 18:09
i think i'll look tomorrow to see if its done
18:10 bjz left 18:11 bjz joined, molaf_ joined 18:13 bjz left, bjz joined 18:14 bjz left, molaf left, firefish5000 joined, bjz joined 18:16 bjz left, bjz joined
dalek p: 3d14d41 | (David Warring [email@hidden.address] | examples/rubyish/rubyish.nqp:
Add custom Rubyish::Compiler eval method. Work around for #177.
18:21
firefish5000 m: say "{$_}" for (1, 2, 3); 18:22
camelia rakudo-moar df2245: OUTPUT«␤␤␤»
firefish5000 m: say "$_" for (1, 2, 3);
camelia rakudo-moar df2245: OUTPUT«1␤2␤3␤»
Ven_ m: say "$($_)" for (1, 2, 3);
camelia rakudo-moar df2245: OUTPUT«1␤2␤3␤»
firefish5000 m: for (1, 2, 3) { say "{$_}" ; } 18:23
camelia rakudo-moar df2245: OUTPUT«1␤2␤3␤»
18:23 jdv79 left
Ven_ Don't ask me. 18:24
18:25 jdv79 joined
rindolf TimToady: labour is the British spelling of "labor". 18:25
jdv79 well, i guess one can't compile p6 on a box with 512M ram and 1G swap
that sucks 18:26
the thing just OOM'ed out i guess
firefish5000 ask "are these supose to interpoliate differently?" unless ($User.name eq 'Ven_'); 18:27
Ven_ answer: I don't interpoliate a lot :P
firefish5000 Ven_: Neither do I, and I don't seem to be very good at either. 18:30
labster lizmat: QNX was a platform that was trivially easy to support its minor differences (unlike VMS), so I went ahead and ported that from p5 File::Spec 18:35
of course no one actually uses it, so no one knows it's missing
Ven_ jnthn: for async, WRT cancellation - do you want a separate class for this? 18:39
Or do you want to do it the .net way, with CancellationTokens?
(and TryCancellable)
dalek p: 883e264 | (David Warring [email@hidden.address] | examples/rubyish/ (4 files):
drop @@package vars misfeature
18:47
firefish5000 m: $_=q<cat>; say "{$_}" for (1,2); 18:58
camelia rakudo-moar df2245: OUTPUT«cat␤cat␤»
firefish5000 m: $_=q<cat>; say "{$_}$_" for (1,2);
camelia rakudo-moar df2245: OUTPUT«cat1␤cat2␤»
firefish5000 ...
m: $_=q<cat>; { say "{$_}$_"; } for (1,2); 19:00
camelia rakudo-moar df2245: OUTPUT«11␤22␤»
colomon m: qx/ls/
camelia rakudo-moar df2245: OUTPUT«qx, qqx is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:1␤ in sub QX at src/RESTRICTED.setting:9␤ in block <unit> at /tmp/E48VaiZgUV:1␤␤»
19:02 darutoko left
firefish5000 m: $_=q<cat>; say "<$_>$_"; for (1,2); 19:03
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/P06_FzMmg0␤Missing block␤at /tmp/P06_FzMmg0:1␤------> $_=q<cat>; say "<$_>$_"; for (1,2)⏏;␤ expecting any of:␤ postfix␤ parameterized block␤»
firefish5000 m: $_=q<cat>; say "{$_}$_"; for (1,2);
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/c61fSiDwGU␤Missing block␤at /tmp/c61fSiDwGU:1␤------> $_=q<cat>; say "{$_}$_"; for (1,2)⏏;␤ expecting any of:␤ postfix␤ parameterized block␤»
firefish5000 m: $_=q<cat>; say "{$_}$_" for (1,2); 19:04
camelia rakudo-moar df2245: OUTPUT«cat1␤cat2␤»
firefish5000 m: $_=q<cat>; say "<$_>$_" for (1,2);
camelia rakudo-moar df2245: OUTPUT«<1>1␤<2>2␤»
firefish5000 m: $_=q<cat>; say "{$_}OUTER::<$_>" for (1,2); 19:05
camelia rakudo-moar df2245: OUTPUT«catOUTER::<1>␤catOUTER::<2>␤»
firefish5000 m: $_=q<cat>; say "{$_},OUTER::<$_> for (1,2);
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/KJ58qI8MKR␤Unable to parse expression in double quotes; couldn't find final '"' ␤at /tmp/KJ58qI8MKR:1␤------> q<cat>; say "{$_},OUTER::<$_> for (1,2);⏏<EOL>␤ expectin…»
FROGGS firefish5000: the {$_} is a code block where the $_ default to OUTER... and it seems to miss the correct outer
19:06 Ven_ left
firefish5000 alright, that makes since.. Is this an inteded effect though, or a bug? 19:07
FROGGS firefish5000: I think it is a but, but I'm not sure 19:08
firefish5000 FROGGS: alright, Thanks. (It took me an hour to figure out what was wrong with my grammar, so I got a little fixated on it once I found out) 19:11
19:14 brrt left 19:22 Tene_ is now known as Tene, [Sno] joined 19:24 bjz left, bjz joined
dalek kudo-star-daily: beebbed | coke++ | log/ (14 files):
today (automated commit)
19:31
kudo-star-daily: 3a48b48 | coke++ | log/ (15 files):
today (automated commit)
kudo-star-daily: a4e1771 | coke++ | log/ (13 files):
today (automated commit)
rl6-roast-data: df1102b | coke++ | / (6 files):
today (automated commit)
rl6-roast-data: 0867c6d | coke++ | / (6 files):
today (automated commit)
rl6-roast-data: 3e242db | coke++ | / (6 files):
today (automated commit)
19:31 denis_boyun joined 19:33 Ven_ joined 19:34 virtualsue joined 19:35 Ven_ left 19:36 rindolf left 19:38 denis_boyun_ joined 19:39 Ven_ joined 19:40 denis_boyun left
grondilu m: say ([0, 1] => 1, [0, 1] => 2).classify(*.key); 19:43
camelia rakudo-moar df2245: OUTPUT«"0 1" => [[0, 1] => 1, [0, 1] => 2]␤»
grondilu it would be nice if classify could return a typed array when relevant.
so that ([0, 1] => 1, [0, 1] => 2).classify(*.key) returns [0, 1] => [[0, 1] => 1, [0, 1] => 2] 19:44
grondilu probably meant "typed Hash"
19:45 denis_boyun joined
TimToady indeed, I'd call that a bug 19:45
Ven_ .tell masak you might think my "Map[K, V]" naming is unfortunate, but we can't type hashes.
yoleaux Ven_: I'll pass your message to masak.
Ven_ (or we'd look like go: terrible)
19:46 denis_boyun_ left
japhb_ .tell brrt Sorry I missed you, please ping me again when you're back 19:46
yoleaux japhb_: I'll pass your message to brrt.
grondilu it may only be possible when the closure argument given to classify has a clearly identified return type, though.
TimToady nah, just declare it @hash{Any} 19:47
cognome I don't care with Python, but that will be fun to do it in Perl 6. www.coursera.org/course/automata
TimToady inheritance has to be good for something
grondilu ok, then it should be easy to implement. Nice. 19:48
FROGGS perl6 -e 'use NativeCall; sub xmlParserVersion is cglobal("libxml2") returns Str { * }; say xmlParserVersion;'
20901
\o/
I'd like to have that as a variable instead of a sub though :/
19:50 denis_boyun left 19:51 DarthGandalf joined 19:54 denis_boyun joined
lizmat FROGGS: Proxy FETCH ? 19:56
FROGGS lizmat: does not work sadly
my $foo is cglobal # <--- that trait is called by Perl6::Actions directly, and I cannot bind anything into that variable at that time 19:57
lizmat but you can "say" it? then surely you must be able to put the value into a variable 19:58
if that's possible, shouldn't you be able to wrap that in a Proxy ?
FROGGS I... don't understand...
ahh 19:59
lizmat: I'd like to have variables (with a trait), that fetch C globals
like in: my int $errno is cglobal; say $errno # 2 20:00
but that would mean that $errno is a Proxy
and that is something I can't do
lizmat feels like it should be possible to create a Variable trait that would wrap the variable in question in a Proxy that would fetch the right value on demand 20:01
FROGGS the question is: how
20:01 kurahaupo left
FROGGS m: multi trait_mod:<is>(Variable $v, :$cglobal!) { $v := Proxy.new( FETCH => -> | { 42 }, STORE => -> | { } ) }; my int $errno is cglobal 20:02
20:02 denis_boyun left
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/pdWetpELY1␤Type check failed in binding; expected 'Variable' but got 'Int'␤at /tmp/pdWetpELY1:1␤------> ␤» 20:02
FROGGS that's my problem
lizmat I see 20:03
FROGGS I think it explodes in the actions somewhere
vendethiel FROGGS: can't you ::T that :P ? 20:05
for some use
FROGGS then I thought I might have to fiddle with the container descriptor, like 'is rw' and 'is default' does it... perhaps with a bind constraint
m: multi trait_mod:<is>(::T $v, :$cglobal!) { $v := Proxy.new( FETCH => -> | { 42 }, STORE => -> | { } ) }; my int $errno is cglobal 20:06
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/16wfmcWY3x␤Cannot use bind operator with this left-hand side␤at /tmp/16wfmcWY3x:1␤------> TCH => -> | { 42 }, STORE => -> | { } ) ⏏}; my int $errno is cglobal␤ expect…»
FROGGS vendethiel: like this?
lizmat da bin ich ueberfragt 20:07
vendethiel I see
lizmat I guess we need jnthn to shed some light on this... 20:08
FROGGS I hope he has his deluminator with him :o)
lizmat hehe 20:10
TimToady: re irclog.perlgeek.de/perl6/2014-09-01#i_9280131 and S02:642
synopsebot Link: perlcabal.org/syn/S02.html#line_642
lizmat I would almost say: why don't we do s/ObjAt/WHICH/ in bothe the spec and the code ? 20:11
*both
at S02:652 it even says: "So C<WHICH> still returns a value rather than another object, but that value must be of a special C<ObjAt> type...
synopsebot Link: perlcabal.org/syn/S02.html#line_652
lizmat so why would be call the object to be returned by WHICH an ObjAt? 20:12
if we would follow the lead of the .Set coercer, one could even think of .WHICH as a coercer to the identity of the object 20:13
.Set returns a Set object, .WHICH returns a WHICH object
and possibly in the spec only mention that a memory address *could* be part of an identitty, but would not need to be 20:14
nine .tell raiph I'd say it's really made possible by NativeCall. As NativeCall does conversion of char* and int to Perl 6 types for me and converts all other pointers to OpaquePointer types, I didn't have to figure out how to create such objects on MoarVM. The parts where I had to create such objects for Perl 5 I took directly from Inline::Python's source and conerted it to Perl 6. 20:16
yoleaux nine: I'll pass your message to raiph.
jack_rabbit I have these lines, class HTTPParser::Request::Actions {...}; class HTTPParser::Request::Actions { [definitions and stuff] }; 20:18
But I'm still getting: The following packages were stubbed but not defined: HTTPParser::Request::Actions
lizmat do you refer to HTTPParser::R::A between the stub and the class definition? 20:19
jack_rabbit Yes. 20:20
Here's the full file: lpaste.net/110359
20:20 denis_boyun joined
lizmat is looking 20:22
20:22 BenGoldberg joined
jack_rabbit Weirdly, if I define class HTTPParser { };, it works. 20:25
20:25 Ven_ left
vendethiel nice, nice, nice; R*! 20:26
jack_rabbit Or if I remove module HTTPParser::Request; 20:27
lizmat why *did* you want to put module in there ? 20:29
I mean, it's all class oriented
20:29 bjz_ joined 20:30 bjz left
lizmat s/class/object/ 20:30
jack_rabbit Hmm. I'm probably just confused. What is the purpose of the module keyword anyway?
TimToady for when you want to export but don't want a class
but a class can export too 20:31
jack_rabbit Is there a S** I can read?
TimToady now, now, watch your language :)
jack_rabbit heh.
TimToady S11 and S12, maybe start with S10
jack_rabbit Also, how would I construct a class hierarchy, where I could just do something like user HTTPParser, and have access to HTTPParser::Request, HTTPParser::Response, etc. 20:32
s/user/use/
TimToady those are all in the global namespace once the worlds are merged
jack_rabbit :/ over my head. I guess I'll read those docs.
TimToady m: class Foo { class Foo::Bar {} }; say Foo::Bar.new.WHAT 20:33
camelia rakudo-moar df2245: OUTPUT«(Foo::Bar)␤»
TimToady no need to export the inner class, it's already visible as a global name 20:34
otoh...
m: class Foo { my class Foo::Bar {} }; say Foo::Bar.new.WHAT
camelia rakudo-moar df2245: OUTPUT«(Foo::Bar)␤»
lizmat m: module Foo; class Foo::Bar { ... }; class Foo::Bar { } # golfed down version of the problem
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/eaTcKAzkbX␤The following packages were stubbed but not defined:␤ Foo::Bar␤at /tmp/eaTcKAzkbX:1␤------> } # golfed down version of the problem⏏<EOL>␤ expecting …»
TimToady now that's interesting
m: class Foo { my class Bar {} }; say Foo::Bar.new.WHAT
camelia rakudo-moar df2245: OUTPUT«Could not find symbol '&Bar'␤ in method <anon> at src/gen/m-CORE.setting:13290␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2632␤ in any find_method at src/gen/m-Metamodel.nqp:946␤ in block <unit> at /tmp/Iiy1HQyiHg:1␤␤»
lizmat TimToady: classes in rakudo do not know their parents 20:35
20:35 kaare_ left
lizmat m: class Foo::Bar { ... }; class Foo::Bar { } # this works, the "module Foo" is the interferer 20:36
camelia ( no output )
TimToady was just a little surprised that the inner my class didn't end up being Foo::Foo::Bar or so
m: class Foo; class Foo::Bar { ... }; class Foo::Bar { } 20:37
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/BTk6YsEQzj␤The following packages were stubbed but not defined:␤ Foo::Bar␤at /tmp/BTk6YsEQzj:1␤------> ass Foo::Bar { ... }; class Foo::Bar { }⏏<EOL>␤ expecting …»
FROGGS TimToady: it is smart about the names :o)
TimToady m: package Foo { class Foo::Bar { ... }; class Foo::Bar { } }
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/H9KjCQtVF8␤The following packages were stubbed but not defined:␤ Foo::Bar␤at /tmp/H9KjCQtVF8:1␤------> s Foo::Bar { ... }; class Foo::Bar { } }⏏<EOL>␤ expecting …»
TimToady m: package Foo { class GLOBAL::Foo::Bar { ... }; class GLOBAL::Foo::Bar { } } 20:38
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/Fo3Ze8XCvY␤The following packages were stubbed but not defined:␤ Foo::Bar␤at /tmp/Fo3Ze8XCvY:1␤------> ar { ... }; class GLOBAL::Foo::Bar { } }⏏<EOL>␤ expecting …»
TimToady so not a difference in name interpretation, probably 20:39
lizmat m: class Foo { my class Bar {}; method new { Bar.new } }; say Foo.new.WHAT # TimToady: even if the class leaks outside, it still is a "Bar"
camelia rakudo-moar df2245: OUTPUT«(Bar)␤»
lizmat not a Foo:Bar
TimToady I know, but .gist isn't trying to give a complete identity in any case 20:40
lizmat m: class Foo {class Bar {}; method new {Bar.new}}; class Bar { }; my $f=Foo.new; my $b=Bar.new; say $f.WHAT, $b.WHAT, $f ~~ $b, $f === $b 20:42
camelia rakudo-moar df2245: OUTPUT«(Bar)(Bar)FalseFalse␤»
lizmat somehow rakudo knows that the two Bar's are not the same
20:43 bjz_ left
TimToady m: class Foo { my class Bar is export {} }; say Foo::Bar.new.WHAT 20:43
camelia rakudo-moar df2245: OUTPUT«Could not find symbol '&Bar'␤ in method <anon> at src/gen/m-CORE.setting:13290␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2632␤ in any find_method at src/gen/m-Metamodel.nqp:946␤ in block <unit> at /tmp/Dds_yqHEOa:1␤␤»
20:43 bjz joined
TimToady m: class Foo { my class Bar is export {} }; import Foo; say Foo::Bar.new.WHAT 20:43
camelia rakudo-moar df2245: OUTPUT«Could not find symbol '&Bar'␤ in method <anon> at src/gen/m-CORE.setting:13290␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2632␤ in any find_method at src/gen/m-Metamodel.nqp:946␤ in block <unit> at /tmp/6MfI7Pr6DL:1␤␤»
TimToady m: class Foo { my class Bar is export {} }; import Foo; say Bar.new.WHAT
camelia rakudo-moar df2245: OUTPUT«(Bar)␤»
20:44 bjz left 20:45 bjz joined, kjs_ joined
grondilu wonders how to turn an Array into a Parcel: 20:46
m: my @a = ^3; say @a.Parcel.WHICH;
camelia rakudo-moar df2245: OUTPUT«Parcel|(Scalar|84525024)(Scalar|84525024)(Scalar|84525024)␤»
grondilu ^the scalar is repeated 20:47
TimToady that seems wrongish
TimToady is guessing the WHICH is not deconting a loop var
lizmat: ^^
grondilu any workaround?
TimToady m: my @a = ^3; say @a.list.Parcel.WHICH; 20:48
camelia rakudo-moar df2245: OUTPUT«Parcel|(Scalar|78778384)(Scalar|78778384)(Scalar|78778384)␤»
TimToady m: my @a = ^3; say @a.eager.Parcel.WHICH;
camelia rakudo-moar df2245: OUTPUT«Parcel|(Scalar|61785808)(Scalar|61785808)(Scalar|61785808)␤»
TimToady I think the bug is in .Parcel 20:49
colomon m: my @a = ^3; say @a.list.WHICH;
camelia rakudo-moar df2245: OUTPUT«Array|69899344␤»
TimToady er, or Parcel's WHICH
list is a noop, likely
grondilu m: my @a = ^3; say (map +*, @a).Parcel.WHICH;' # found this workaround 20:50
camelia rakudo-moar df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/TXRfkYIMXs␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/TXRfkYIMXs:1␤------> .Parcel.WHICH;' # found this workaround⏏<EOL>␤ expectin…»
grondilu m: my @a = ^3; say (map +*, @a).Parcel.WHICH; # found this workaround
camelia rakudo-moar df2245: OUTPUT«Parcel|(Int|0)(Int|1)(Int|2)␤»
jack_rabbit How does perl6 look for modules? How should my file containing HTTPParser::Request be named?
colomon self.^name ~ '|' ~ @(self).map( {'(' ~ .VAR.WHICH ~ ')'} ).join; # doesn't seem insane….
TimToady m: my @a = ^3; say @a.Parcel.WHICH; say @a[$_].VAR.WHICH for ^3; 20:51
camelia rakudo-moar df2245: OUTPUT«Parcel|(Scalar|76500888)(Scalar|76500888)(Scalar|76500888)␤Scalar|76500888␤Scalar|76500888␤Scalar|76500888␤»
TimToady that's interesting
TimToady expected the last 3 to be different
so maybe the bug is not where I thought 20:52
jack_rabbit HTTPParser.p6 just contains 'use HTTPParser::Request;', but perl6 -I . HTTPParser.p6 gives: Could not find HTTPParser::Request in any of: (...)
colomon TimToady: what you did is just a restatement of what Parcel.WHICH is doing (my last comment)
So yeah, bug is in VAR.WHICH somehow?
TimToady dunno, brane is frazzled right now, probably coming down with something, so should take a nap 20:54
colomon has no idea what VAR is
TimToady zzz &
timotimo hm. now i implemented findcclass and findnotcclass, but many of the "expensive" frames in json parsing are still only spesh'd 20:55
lizmat TimToady: I guess I got caught cheating :-( 20:59
colomon lizmat: do you understand what's going wrong? 21:00
lizmat I think the problem is deeper, actually: 21:01
m: my @a = ^3; say @a.Parcel.perl # not right!
camelia rakudo-moar df2245: OUTPUT«(ListIter.new(),)␤»
vendethiel www.dropbox.com/s/7h2g8eu3i84nl68/...8.png?dl=0 <- whoaw, clojure is getting rails-like debug tools :P I'm jealous
21:02 donaldh joined
lizmat colomon: also seems we're missing some coercers: 21:05
m: say (^3).Parcel
camelia rakudo-moar df2245: OUTPUT«No such method 'Parcel' for invocant of type 'Range'␤ in block <unit> at /tmp/cQZwNd0A6k:1␤␤»
colomon lizmat: do we know for sure what Range.Parcel should do? 21:08
lizmat Range.list.Parcel I would think
21:08 kjs_ left
colomon m: say 1.Parcel 21:08
camelia rakudo-moar df2245: OUTPUT«No such method 'Parcel' for invocant of type 'Int'␤ in block <unit> at /tmp/jsTLO1Eh8r:1␤␤»
21:09 denis_boyun left
lizmat Any is missing a method Parcel { self.list.Parcel } 21:09
adding that now
dalek kudo/nom: 556ae70 | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Make sure we can .Parcel anything
21:10
colomon is sure he understands Parcel well enough to be confident that's the right thing to do...
*isn't
sigh
lizmat++
lizmat look at all the other methods in Any:
method elems { self.list.elems } 21:11
all they do is first coerce to list, then call the method on that
colomon true
colomon is browsing rakudo on github.com 21:12
21:16 gfldex left
lizmat I realize what the problem is now 21:16
basically, it is using the Array's descriptor's address, which is the same for each element 21:17
21:17 denis_boyun_ joined
[Coke] yawns. 21:17
21:18 bjz left
colomon lizmat: I thought it might be something like that. but had no idea how to track it down. 21:18
21:18 bjz joined
lizmat src/core/Scalar.pm 21:18
21:18 raiph joined 21:23 denis_boyun joined, denis_boyun_ left
timotimo i've noticed i'm not terribly good at using the profiler yet 21:26
[Coke] r: use Test; is d('2014-03-14').earlier(weeks => 2), d('2014-02-28'), "parrot?" 21:27
camelia rakudo-{parrot,jvm,moar} df2245: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Undeclared routine:␤ d used at line 1␤␤»
21:27 denis_boyun left
[Coke] r: use Test; sub d($x) { Date.new($x); }; is d('2014-03-14').earlier(weeks => 2), d('2014-02-28'), "parrot?" 21:27
camelia rakudo-{jvm,moar} df2245: OUTPUT«ok 1 - parrot?␤»
..rakudo-parrot df2245: OUTPUT«not ok 1 - parrot?␤␤# Failed test 'parrot?'␤# at /tmp/tmpfile line 1␤# expected: '2014-02-28'␤# got: '4014-23996-29'␤»
lizmat m: my @a = (1,1,1); my $b = @a.Parcel; $b[0] = 42 # this should bomb
camelia ( no output )
[Coke] ^^ lots of recent parrot failures.
lizmat m: my $b = (1,1,1); $b[0] = 42 # this bombs 21:28
camelia rakudo-moar df2245: OUTPUT«Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:1867␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2566␤ in block <unit> at /tmp/kjfUqh4xZm:1␤␤»
lizmat so the List.Parcel is faulty
[Coke] in fact, that may be all of the recent parrot failures.
21:29 augustus joined
itz_ what is $?DISTRO and $?KERNEL supposed to return on non linux UNIX systems? 21:29
augustus quick question all, is there a replacement for plaeteria? where are we supposed to go to read all the p6 blogging? 21:30
lizmat $?DISTRO and $?KERNEL are still NYI afaik
timotimo augustus: raiph quite dilligently posts interesting stuff on reddit in r/perl6
lizmat $*DISTRO and $*KERNEL are
suggestions on what they should say, are welcome :-) 21:31
timotimo sadly, the planeteria domain has been taken directly after the current payment stopped
lizmat yuck
[Coke] timotimo: where are you getting your intel on that?
lizmat is there no time between taking it out of DNS and releasing the domain??
itz_ probably $?DISTRO.name I meant .. and I guess most of the time they are the same
augustus i thought planeteria was deliberatey shut down, are you saying it was just an oversight? 21:32
grondilu lizmat: after update and recompilation I still get identical scalars with (my @ = ^3).Parcel.WHICH;
raiph I typically post stuff to /r/perl6 stuff that isn't on planeteria. could we make /r/perl6 our new planeteria?
yoleaux 20:16Z <nine> raiph: I'd say it's really made possible by NativeCall. As NativeCall does conversion of char* and int to Perl 6 types for me and converts all other pointers to OpaquePointer types, I didn't have to figure out how to create such objects on MoarVM. The parts where I had to create such objects for Perl 5 I took directly from Inline::Python's source and conerted it to Perl 6.
[Coke] Yes, it was an oversight, the lead tech guy is working on restoring the domain and the service.
lizmat itz_: src/core/Distro and src/core/Kernel may contain non-linux specific code :-)
[Coke] raiph: I thought the point of something like planeteria was that you didn't have to repost. 21:33
augustus coke: ok thanks, good to know. i'll check back periodically and in the meantime check out reddit. does anybody have any idea what kind of readership it had? I know I check it compulsively, but the blogs never got many comments so I always wondered. 21:34
21:36 denis_boyun joined
[Coke] sorry, no aggregated stats, as far as I know 21:36
timotimo [Coke]: because planeteria is now owned by someone who is "parking" that domain
[Coke] I have a feedly subscription to r/perl6 which hasn't been updated in 90+ days. :(
timotimo: I have spoken to the tech lead for planeteria, who is working to restore service. 21:37
augustus do we have any stats on rakudo downloads etc? anything to tell us how many ppl are at least trying perl6?
[Coke] I suspect that a payment was inadvertently missed, but it sounded like he still had the opportunity to renew.
timotimo [Coke]: good to know, thanks 21:38
[Coke] (weird. feedly's guess at what the URL was was apparently wrong. putting in the manual RSS to /r/perl6 is just fine) 21:41
21:41 ggoebel1111112 joined 21:43 ggoebel1111111 left
augustus hmm, looks like reddit has a lot more stuff on it than planeteria anyway 21:43
colomon [Coke]: what is the manual RSS to /r/perl6? 21:46
lizmat m: my @a = 1; my $p = @a.Parcel; $p[0] = 42; say @a # something *REALLY* screwy with List.Parcel 21:51
camelia rakudo-moar df2245: OUTPUT«42␤»
lizmat ^^^ that should die and at least not change @a
if that gets fixed, the Parcel.WHICH problem is also history 21:52
colomon lizmat: isn't that behavior necessary to make array slices work?
m: my @a = 1; my $p = @a[0..*]; $p[0] = 42; say @a 21:53
camelia rakudo-moar df2245: OUTPUT«42␤»
21:54 denis_boyun left
dalek kudo/nom: 0a4af1c | (Elizabeth Mattijsen)++ | src/core/List.pm:
Slight opt for infix:<xx> (more code esthetics)
21:54
lizmat colomon: indeed, that seems to be the case 21:56
colomon lizmat: when I spectest'ed 556ae70bdabe60c69ca4fdf8a836f84ce6db9701 (your previous, I thknk) I got errors in S32-list/permutations.t, S32-list/uniq.rakudo.t, and integration/99problems-51-to-60.t
lizmat but then that should probably be called Parcel-rw
21:57 denis_boyun joined
colomon hmmm 21:57
21:57 kjs_ joined
lizmat colomon: integration/99problems-51-to-60.t is a known issue: it segfaults 22:02
colomon: the other two are fine when I run them 22:03
22:04 pecastro left, denis_boyun_ joined
lizmat TimToady: looks like the current implementation of .Parcel is more an internal function, *not* a coercer 22:04
22:04 Ben_Goldberg joined 22:05 BenGoldberg left, bjz left 22:06 bjz joined, denis_boyun left
[Coke] perl6.rss 22:10
colomon: ^^
22:10 denis_boyun_ left
[Coke] Is there anything better than smolder for reporting on TAP results? 22:11
22:12 denis_boyun joined 22:13 bjz left
[Coke] ah. better path is to probably port TAP::Harness::Junit 22:15
22:17 kjs_ left 22:19 denis_boyun left 22:21 virtualsue left
timotimo p6weekly.wordpress.com/?p=224&s...4f15ed3e76 - can has feedback for the latest weekly? 22:21
flussence ooh neat, never knew wp had a feedback thingy... 22:22
[Coke] ... whee, no need to port since we're still using prove5 22:23
timotimo it's a very necessary thing
lizmat gives up on the @a.Parcel.WHICH issues 22:25
a night of sleep will bring inspiration (I hope)
gnight #perl6!
timotimo gnite lizmat!
flussence wait, is implementing DESTROY actually happening? that demo I wrote for advent2010 will finally work properly! 22:26
timotimo going to happen soon-ish
flussence (or at least, I *hope* it'll work properly... though it's been working through 4 years of changes :) 22:27
timotimo what thing did you write in advent2010?
flussence perl6advent.wordpress.com/2010/12/1...om-perl-6/
it's survived a zavolaj rewrite and at least one major rakudo refactor. :) 22:28
22:30 ponpon is now known as ponbiki
timotimo d'oh. with MVM_SPESH_DISABLE=1, on my shared host, it gets to "stage mast" and then gets killed 22:33
that's much further than getting to the middle of stage parse
we can obviously still get the memory usage during compilation down further 22:34
22:37 donaldh left
timotimo stage parse is now done in 26.680 on my desktop. not sure if it's ever been this low before 22:37
nothing more in the way of feedback for the weekly? 22:38
flussence one sec...
[Coke] timotimo: looks good 22:41
22:41 Ben_Goldberg left
[Coke] Did you mention the compiler release last week? 22:41
timotimo i think so, let me double-check
[Coke] I think you did, now thqt I ask out loud. nevermind.
timotimo yup, i did mention 22:42
[Coke] arglebargles, as TAP::Foramtter::JUnit doesn't build on my mac.
timotimo ;(
[Coke] calls SQUIRREL and looks at something else. 22:43
22:43 BenGoldberg joined
timotimo %) 22:44
flussence if anyone else is proofreading that article preview, throw this in the browser console to make it highlight funny-looking words: «jQuery('.entry-content').attr('contenteditable', true).attr('spellcheck', true);» 22:47
dunno if you saw, timotimo, but I *did* send a bunch of nitpicks through the form on that page :) 22:50
22:55 jepeway joined
timotimo oh 22:55
that didn't reach me ;( 22:56
flussence not at all? bleh. 22:57
s/carbin/carlin/; .ucfirst for <youtube rakudo tuesday>; 22:58
not major stuff
timotimo now i don't know what to work on next in perl6land ... again :P 23:01
23:01 xragnar left 23:03 xragnar joined
[Coke] timotimo: my "LHF" are : make sure every fudge has an RT (or is NYI, or unspecced) 23:10
make sure all the spectest runs are clean. If not, fudge them.
Find any tickets that are marked testneeded and test them.
timotimo hmm, that doesn't seem to inspire me right now
[Coke] I am currently bisected to find the cause of the giant rakudo-parrot failures. 23:11
timotimo: yah, it's boring as f***.
timotimo does a benchmark run of nqp with/without jit for 2014.08 and the current nqp head
oh
actually
derp.
i built the 2014.08 nqp's with moar/master >_<
well, i can still run the master/master benchmarks and then just rebuild the nqp to be proper 23:14
i still want a proper mechanism for supplying things like "use the most up-to-date moarvm version" vs "use the MOAR_REVISION" on the commandline 23:15
currently i really update the components.json by hand >_< 23:16
[Coke] for Configure, or for bench?
ah, that sounds like a bench thing
jepeway ola, peeps. 23:21
23:27 itz joined
colomon \o 23:27
jepeway o/ 23:29
i'm looking @ RT #122319 , and I have some basic questions unrelated to that RT, more like "can somebody help me with <this-thing-basic-p6-thing-here>"
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122319
23:29 itz_ left
jepeway m: DateTime.new(now).local.Str.substr(*-5).say # get the offset for camelia's server's current time (I hope) 23:31
camelia rakudo-moar 0a4af1: OUTPUT«1:30Z␤»
jepeway m: Date.time(now).local.say # get current time
camelia rakudo-moar 0a4af1: OUTPUT«No such method 'time' for invocant of type 'Date'␤ in block <unit> at /tmp/EANMnlijqz:1␤␤»
jepeway ...urk, no. 23:32
m: DateTime(now).local.say
camelia rakudo-moar 0a4af1: OUTPUT«Cannot find method 'DateTime'␤ in block <unit> at /tmp/uYs72zdDbC:1␤␤»
jepeway bleah...not quite. 23:33
m: DateTime.new(now).say
camelia rakudo-moar 0a4af1: OUTPUT«2014-09-01T23:33:56Z␤»
jepeway catches up...maybe. 23:34
m: $*TZ = 60*60 ; DateTime(now).local.say 23:35
camelia rakudo-moar 0a4af1: OUTPUT«Cannot find method 'DateTime'␤ in block <unit> at /tmp/RB1Ylyj0ye:1␤␤»
jepeway m: DateTime(now).in-timezone(60*60).say 23:36
camelia rakudo-moar 0a4af1: OUTPUT«Cannot find method 'DateTime'␤ in block <unit> at /tmp/DJFjcSKvOS:1␤␤»
jepeway m: DateTime.new(now).in-timezone(60*60).say
camelia rakudo-moar 0a4af1: OUTPUT«2014-09-02T00:36:30+0100␤»
jepeway apologizes for the spam, promises this goes to a question prolly anybody grokking perl6 can answer 23:37
m: DateTime.new(now).in-timezone(60*60).substr(*-5).say
camelia rakudo-moar 0a4af1: OUTPUT«No such method 'substr' for invocant of type 'DateTime'␤ in block <unit> at /tmp/UayAZ0LPUB:1␤␤»
jepeway m: DateTime.new(now).in-timezone(60*60).subst(*-5).say
camelia rakudo-moar 0a4af1: OUTPUT«No such method 'subst' for invocant of type 'DateTime'␤ in block <unit> at /tmp/29eQ_R0j7b:1␤␤»
timotimo .Str.substr? 23:38
jepeway m: DateTime.new(now).in-timezone(60*60).Str.subst(*-5).say
camelia rakudo-moar 0a4af1: OUTPUT«Cannot call 'subst'; none of these signatures match:␤:(Cool: Any $matcher, Any $replacement, *%adverbs)␤:(Str: Any $matcher, Any $replacement, Any :ii(:samecase($samecase)), Any :ss(:samespace($samespace)), Any :SET_CALLER_DOLLAR_SLASH($SET_CALLER_DOLL…»
jepeway m: DateTime.new(now).in-timezone(60*60).Str.substr(*-5).say
camelia rakudo-moar 0a4af1: OUTPUT«+0100␤»
timotimo ah, you know that already
subst is for "substitute"
jepeway timotimo: ty
timotimo jepeway: if you're worried about posting too much stuff, you can also talk to camelia in a query
23:40 xenoterracide left, xenoterracide joined
jepeway timotimo: mostly have this worked out with locally compiled rakudo, just too...er...non-proficient to present it well enough. 23:41
m: DateTime.new(now + $_ * 60 * 60 * 24).in-timezone(60*60).Str.substr(*-5).say for ^3
camelia rakudo-moar 0a4af1: OUTPUT«+0100␤+0100␤+0100␤»
timotimo that's fine, we're a patient bunch ;)
23:42 kst left
jepeway so...how do I change that ^3 to a ^365 and stick it all in a set and print all the set elts? 23:42
timotimo elts?
jepeway elements, sorry.
timotimo you can ^365.map({ DateTime.new...substr(*-5) }).Set.say 23:43
otherwise you can have the same code you had up there and put a ( at the beginning and a ).Set.say after the "for ^356"
jepeway omg...hrm...trying to grok
timotimo hehe
TimToady well, except say gives up after 100 elements now 23:44
timotimo oh
in that case you probably want .fmt("%s")?
or .print?
23:44 spider-mario left, augustus left
timotimo or .Str.say 23:44
TimToady well, just stringify and say
timotimo .Str.say should be the most elegant, yeah
jepeway should only be 2 elements in the set, problem is there's just one.
jepeway trying the ().Set.say locally.
timotimo oh, a *set*, derp :)
TimToady oh, right,
derp too.
timotimo i'm not 100% sure why that ought to give two different values? 23:45
TimToady standard vs daylight savings
jepeway TimToday: yuppers.
timotimo does "in-timezone" give you that, actually?
(ugh, dates) 23:46
TimToady of course, in +0100 it's more likely "summer time" :) 23:47
jepeway m: "summer time".subst("sum", "ha") # worky? 23:49
camelia ( no output )
jepeway m: "summer time".subst("sum", "ha").say # worky?
camelia rakudo-moar 0a4af1: OUTPUT«hamer time␤»
jepeway heh.
m: (DateTime.new(now + $_ * 60 * 60 * 24).local.Str.substr(*-5) for ^365).Set.say # should be 2 elts: -0400 & -0500
camelia rakudo-moar 0a4af1: OUTPUT«set(9:59Z, 0:00Z, 0:01Z, 0:02Z, 0:03Z, 0:04Z, 0:05Z)␤» 23:50
jepeway oh, sorry, .local is a bust when $*TZ is 0.
timotimo aaah
camelia ought to CTCP Time the person that sends an evaluation request and set the time zone accordingly :P
23:51 kst joined
jepeway m: (DateTime.new(now + $_ * 60 * 60 * 24).in-timezone(-60*60*4).Str.substr(*-5) for ^365).Set.say # might like this to be 2 elts (-0400 & -0500) in US/Eastern timezone 23:52
camelia rakudo-moar 0a4af1: OUTPUT«set(-0400)␤»
timotimo it's definitely nice that you're torturing our datetime implementation :)
jepeway but DateTime isn't sensitive to timezone rules, just current timezone offset 23:53
timotimo: blame/praise FROGGS++, he put me onto this RT
jack_rabbit IO::Socket::INET is not available through panda?
jepeway and since offsets don't map back to rules, then you can't determine localtime for any time other than "now"...well, so I'm thinking/guessing atm. 23:57