»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! | feather will shut down permanently on 2015-03-31
Set by jnthn on 28 February 2015.
00:02 kurahaupo left 00:04 spider-mario left 00:10 laouji joined 00:23 owlsley joined 00:24 danaj left 00:28 fhelmberger joined 00:33 fhelmberger left 00:38 danaj joined, chenryn joined 00:39 laouji left 00:40 laouji joined 00:41 chenryn left 00:43 laouji left 00:44 laouji joined 00:57 Akagi201 joined
raydiak adu: pong! 00:59
adu: gcc.gnu.org/ml/gcc-help/2003-06/msg00070.html
01:01 aborazmeh joined, aborazmeh left, aborazmeh joined, raiph joined 01:04 aborazmeh left 01:05 aborazmeh joined, aborazmeh left, aborazmeh joined 01:09 cheungmc joined 01:11 cheungmc left 01:18 cheungmc joined, cheungmc left, cheungmc joined 01:19 cheungmc left 01:24 cognominal left 01:26 aborazmeh left 01:31 dayangkun joined 01:34 nbdsp joined
nbdsp Greetings! Could someone advise please what is the 'perl6' method to test a key in a hash for existence? Is the following method correct one? 01:38
m: my %h = "a"=>1,"b"=>2,"c"=>3; say "b" ~~ any %h.keys;
camelia rakudo-moar 6b4f9b: OUTPUT«True␤»
ugexe %h.<key>:exists
colomon %hash{“key”} :exists 01:39
nbdsp ugexe: thanks!
01:46 ilbot3 left, yqt left 01:47 Zoffix joined, colomon left, ilbot3 joined, aborazmeh joined, aborazmeh left, aborazmeh joined 01:48 colomon joined 01:52 chenryn joined 02:10 Sqirrel left 02:11 vendethiel joined 02:13 noganex joined 02:16 noganex_ left 02:18 rba_ joined 02:23 rba_ left
adu raydiak! 02:23
so __extension__ is absolutely meaningless 02:24
I can do that
02:25 rmgk_ joined, rmgk is now known as Guest86457, rmgk_ is now known as rmgk
ugexe m: class X { method y { ENTER { say state $count++ } }; }; X.y(); # expected? 02:25
camelia rakudo-moar 6b4f9b: OUTPUT«0␤1␤»
raydiak yeah looks like ignoring __extension__ entirely would be fine, unless someone is trying to use C::Parser in a way which requires them to see it via C::AST or whatever 02:28
02:28 Guest86457 left 02:29 colomon left 02:31 colomon joined 02:33 tinyblak joined 02:35 colomon left, colomon joined 02:38 Akagi201 left, Akagi201 joined, cheungmc_ joined 02:39 Akagi201 left, Akagi201 joined, aborazmeh left 02:40 RabidGravy left 02:43 cibs left 02:45 cibs joined 02:47 raiph left 03:09 nbdsp left 03:29 cibs left 03:30 vendethiel left 03:37 mr-foobar left 03:42 laouji left 03:46 cibs joined, nbdsp joined
nbdsp Greetings! I have a file with records of pattern 'aaa\tbbb' and reading this file into map %m<aaa>="bbb" takes several orders of magnitude longer than with, say, Python. I read as follows: my $s = "file".IO.slurp; my %m; for $s.lines { my @pair = $_split("\t"); %m{@pair[0]} = @pair[1];} The file is following: raw.githubusercontent.com/kevina/w...speech.txt . I wonder, whether the speed can be significantly 03:47
method?
03:47 cibs left
cheungmc_ perl or python ? 03:48
nbdsp With some other method in Perl 6? 03:50
raydiak nbdsp: your message was truncated between "be significantly" and "method?"
03:50 cibs joined
nbdsp I wonder, whether the speed can be significantly increased with some other method of handling this task? 03:51
raydiak the answer is probably "profile" and "glr" :)
if you can get more specific details about what is slow there, it'd be helpful to those who can improve such things 03:52
03:53 khisanth_ joined, Khisanth left
raydiak (baring answers from more informed people who could give more direct answers to your question) 03:54
also if you can figure out exactly which part is slow, we may have ideas about how to do that specific operation faster 03:55
so I guess my consolidated suggestion would be to sprinkle some "say now;"s in there and go from there depending on what you see 03:57
nbdsp Hmm.. Is this task slow only in my particular case? 03:58
raydiak well we have a lot of slownessess in many cases still, but hard to know which part is slowing you down until you profile it somehow 04:00
nbdsp Well, the code contains only two lines. =) 04:04
raydiak then you may need to verbosify it into more lines to narrow down exacty what is slowing you down 04:05
I would split up what you masted into like...6 lines
*pasted
nbdsp If developer runs it on his/her machine, will it give incorrect results and it will run as fast as the Python's code? 04:07
raydiak is it the split that's slowing you down? the hash assignment? maybe the for loop itself takes a long time between iterations for some reason. find out.
wrt Python, I'm lost, not sure what you're asking\
04:08 BenGoldberg left
nbdsp raydiak: I'm asking if this task runs 200 times slower than in Python (or C/C++) on Perl 6 developers machines? 04:15
04:29 fhelmberger joined
nbdsp Because this slowness is of such scale that I though that either it's well known or I perform this task incorrectly. 04:29
*...that I thought... 04:30
raydiak dsp: I can tell you that on my old pawnshop laptop without turning off cool'n'quiet, turbocore, etc, at current room temp that takes almost 7 minutes. I don't know python or C very well, but it seems quite likely that it is a whole lot slower than either, which is why it'd be interesting to know which part is slow if you have the tuits to narrow it down for a bugreport, for whomever may be able to improve it 04:32
04:32 petercommand left, petercommand joined 04:33 fhelmberger left 04:34 tinyblak left, tinyblak joined
nbdsp Since on python it takes several seconds, I wonder whether it's needed to submit a bug report because obviously it's a known issue. 04:37
04:39 tinyblak left, adu left
raydiak depends on how much you care I guess 04:40
it's certainly likely to get fixed sooner or later; just that if you want it to be sooner, a bug report helps people keep track of all the various things because there's a lot of them 04:42
04:44 Sqirrel joined
nbdsp raydiak: Thanks for helping and checking this code. I will try to narrow down the cause of slowness. 04:44
04:46 chenryn left
raydiak nbdsp: glad to help :) I don't see anything obviously terrible in your own code if that what you were asking, there is definitely something here which we could improve 04:46
04:47 kaare_ joined
nbdsp I meant thanks for running this code on your machine and testimoning thats it's not a some glitch on mine which is the cause. 04:48
04:50 jack_rabbit left
raydiak certainly, you're welcome :) 04:51
04:51 raiph joined 04:52 dolmen joined 04:55 laouji joined 04:57 jack_rabbit joined 04:59 chenryn joined, konsolebox left, konsolebox joined 05:02 laouji_ joined 05:04 laouji_ left, tinyblak joined 05:05 laouji left, laouji joined 05:09 kurahaupo joined 05:21 PZt left, rivarun left, pyrimidine left 05:22 pyrimidine joined, rivarun joined 05:23 mr-foobar joined 05:24 sftp left 05:25 sftp joined 05:26 raiph left 05:28 adu joined 05:37 adu left
raydiak good night #perl6 05:37
dalek c: a8dbc9a | (Stefan Seifert)++ | META.info:
Add missing File::Temp dependency

Thanks to zengargoyle++ for reporting. Fixes GH #80
05:41
05:45 Patterner joined 05:48 rindolf joined
nbdsp I wonder if there is any estimation how this speed can be improved and when? If this code runs 7 mins where python runs 10 sec, can this runtime at all be reduced to 30 sec? 05:49
05:50 Psyche^ left 06:02 diana_olhovik joined 06:09 kurahaupo left 06:11 khisanth_ left 06:18 dolmen left 06:19 bjz joined 06:20 khisanth_ joined 06:21 skids left, bjz left 06:25 rindolf left 06:26 bjz joined 06:27 kurahaupo joined, konsolebox left 06:28 bjz left 06:29 bjz joined, bjz left 06:34 khisanth_ left, khisanth_ joined 06:37 Generator_ joined 06:39 _mg_ joined 06:41 khisanth__ joined 06:43 khisanth_ left 06:45 domidumont joined 06:50 domidumont left 06:51 domidumont joined, andreoss left 06:54 kaare_ left
tadzik nbdsp: we've seen improvements like that happen :) 06:56
06:56 kaare_ joined
tadzik I'll try to profile your code to see if I can find something, but I my wild guess is that it's mostly the list iteration that's slow, and that's bound to improve massively in the upcoming months 06:57
dalek pan style="color: #395be5">perl6-examples: f79aaa5 | paultcochrane++ | categories/cookbook/02numbers/02-01valid-number.pl:
[cookbook] move code comments into pod
06:58
pan style="color: #395be5">perl6-examples: 6931a93 | paultcochrane++ | t/categories/cookbook/02numbers.t:
[cookbook] add tests for the 02numbers subcategory
06:59 abraxxa joined 07:00 kaare__ joined 07:01 quester joined 07:04 kaare_ left 07:06 dayangkun left 07:07 kurahaupo left
lizmat .tell nbdsp You might want to try .lines(:eager) 07:09
yoleaux lizmat: I'll pass your message to nbdsp.
07:09 domidumont left
lizmat which you could think of as a pre-cursor of the type of speed increase you will see after GLR 07:09
07:10 dayangkun joined, fhelmberger joined
lizmat typically sees the :eager version as 5x as fast 07:12
07:12 dayangkun left 07:13 bjz joined
timotimo .tell nbdps it may very well be a lot faster to use the regex engine to do the work for you than to build a for loop; at least the regex engine doesn't have to provide for things like making next/last/redo possible and it might also be a tiny bit faster at "splitting into lines" in this case 07:22
yoleaux timotimo: I'll pass your message to nbdps.
timotimo o/
damn, i typo'd the nick
.tell nbdsp it may very well be a lot faster to use the regex engine to do the work for you than to build a for loop; at least the regex engine doesn't have to provide for things like making next/last/redo possible and it might also be a tiny bit faster at "splitting into lines" in this case
yoleaux timotimo: I'll pass your message to nbdsp.
07:25 rba_ joined
lizmat on a related note, I just found that IO::Handle.lines(:eager) is taking the first candidate, *not* the one with :$eager! :-( 07:26
I'm pretty sure that used to work... :-( 07:27
timotimo oh damn.
can you re-order it in the source?
or use the "*% ()" annotation trick?
lizmat well, of course I can, but why should I have to ? 07:28
07:28 Erendis42d left
timotimo i don't know, i'm just decoration 07:28
lizmat and what a decoration you are! :-) 07:29
seriously, this feels like a (recent) regression to me
and I wonder how we can test for cases like this :-(
dalek kudo/nom: 0fe9416 | TimToady++ | src/ (4 files):
Distinguish Nil from Empty

Nil no longer iterates to (). Use Empty if that meaning is needed.
07:31
ast: 831838f | TimToady++ | S (6 files):
tweaks for Nil/Empty distinction
07:34 FROGGS joined
timotimo m: say "in this one script, 'get' takes { 3202.01 / 479829 } s per line" 07:35
camelia rakudo-moar 6b4f9b: OUTPUT«in this one script, 'get' takes 0.00667323 s per line␤»
07:35 bjz left 07:37 grondilu left
timotimo isn't that kinda slow? 07:37
even though it relies on a VM-level operation that could be pretty fast? 07:38
07:38 rba_ left 07:39 woolfy joined, woolfy left 07:41 Isp-sec joined 07:42 rindolf joined
FROGGS o/ 07:43
dalek kudo/nom: 9c543b5 | lizmat++ | src/core/IO/Handle.pm:
Move IO::Handle.words/lines candidates around

For some reason, the :eager/:count candidates were not run. Moving the candidates up in the list, makes them run as they should. Pretty sure this is a fairly recent regression.
07:44
timotimo ohai FROGGS
lizmat get pre newio, is pretty slow because it needs to check a lot of things *each* time
timotimo i only see a check for $.chomp 07:45
um
isn't this absolutely bogus, though?
oh, no it isn't
i read "$x .= chomp if $.chomp" as "self.=chomp if $.chomp
lizmat ah, I guess I fixed some of it already in nom
timotimo that would have been a hilarious bug 07:46
lizmat yeah, and noticed quickly
timotimo verily
huh 07:47
dispatch:<.=> seems to be pretty expensive
lizmat in newio it's been made to not use that
timotimo maybe you could measure changing that to "$x = $x.chomp if $.chomp" against current code while i'm away?
lizmat well, I was just going to say that I will be afk for a bit as well :-) 07:48
timotimo maybe FROGGS has a bit of spare time :P
lizmat and I think I fixed it in newio already
timotimo right
lizmat $!chomp
?? nqp::p6box_s($line).chomp
!! nqp::p6box_s($line);
so: 1 not using methid, and 2 not assigning 07:49
*method
afk&
timotimo yeah, that ought to be faster
FROGGS ummm, what? 07:50
timotimo hi there :3
FROGGS I currently use my spare time to review nearly 100 test files, which are not (yet) included in spectest.data 07:51
timotimo ooooh
FROGGS I managed to fix about five files yesterday
timotimo that's much more useful :)
FROGGS++
FROGGS my goal is to have all (not by then removed) files from roast included, so we actually know what is in roast 07:52
07:52 zakharyas joined
FROGGS TimToady++ and others should then review all files that have '#?v6' fudge lines 07:53
because these are questionable from a language point of view
07:53 tinyblak left
FROGGS ahh, and I am implementing ignoremark right now 07:53
07:54 tinyblak joined
timotimo ooooh 07:54
07:57 cognominal joined 08:00 telex left 08:02 telex joined 08:03 domidumont joined 08:06 domidumont1 joined 08:08 cognominal left, domidumont left 08:17 brrt joined
Generator_ Hi, need suggestion. I am intend to make a program. From current problem analysis, my program will me handling a lot of data in flow. The program will have lots of live data and it will do operations on those data. It will also have to handle n no of connections/instances. n is the number of user this program will be handling. So my query is, will perl be a good choice ? 08:17
08:17 laouji left 08:19 darutoko joined
bbkr Generator_: what traffic are you talking about? 08:21
yoleaux 29 Mar 2015 11:11Z <tadzik> bbkr: hey, you guys still using Rakudo-Parrot in your business?
08:22 virtualsue joined, rba_ joined
Generator_ users connect to this program via internet bbkr 08:22
bbkr by traffic what do you want to ask ? 08:23
bbkr Generator_: payload size, estimated requests per second
masak antenoon, #perl6 08:24
Generator_ bbkr those are not analyzed yet. In the beginning request are pretty small per second, but if the userbase grows request may be >1000 per sec 08:25
bbkr Generator_: looks like you need www->perl(fastcgi+nginx is extremely fast)->queue(to buffer and dispatch requests, maybe RabbitMQ)->workers(crunching data) 08:26
Generator_ bbkr thank you. I will check those suggestions :) 08:27
bbkr Generator_: I'm processing few thousands requests per second using that flow and it is VERY reliable and scalable. If you are not scared of asynchronous programming use Perl 5 AnyEvent::* stuff (AnyEvent::RabbitMQ, AnyEvent::FCGI). If you like to experiment try Perl6 (plenty of servers to choose from and github.com/retupmoca/P6-Net-AMQP/ to communicate with message broker) 08:30
Generator_ bbkr wow these are really nice. But just to be sure, will it give me much advantage over python ? 08:33
08:33 Isp-sec left
moritz we have an AMQP implementation in Perl 6? Cool 08:34
08:35 kurahaupo joined
moritz uses RabbitMQ at $work 08:35
btyler Generator_: the 'perl5 or python' question is pretty much down to which you feel more productive in. both have likely all the libraries you need. now, 'perl6 or python' is a bit different question, since if you start applying perl6 you'll be encountering a lot more 'frontier' style issues -- potential bugs in the interpreter, needing to write new libraries, etc. 08:36
bbkr Generator_: depends on your payload type and analysis. I've tried both on heavy load and they tied. But Perl was chosen because of unified AnyEvent asynchronous interface.
08:36 araujo joined
Generator_ bbkr if I am going to use perl I must use perl6, cos my program will continue developing, so I have to think about future scope 08:38
bbkr moritz: Perl 6 implementation lacks queue cancel, which may be major no-go in some scenarios. but other than that it is awesome because it has Supply style interface which makes it really easy to use. 08:41
moritz bbkr: sounds good. (And at $work, I haven't needed queue cancel yet) 08:42
btyler Generator_: not to discourage you from using perl 6, but I don't think there's much reason to be worried about perl 5 longevity
Generator_ cool
moritz I don't think the Perl 6 release will reduce interest in and comittment to Perl 5 development 08:43
FROGGS true
08:44 cognominal joined
moritz (and contrary to python, nobody aims to EOL Perl 5) 08:44
python 2, I should say
DrForr If anything it'll encourage parallel development. 08:46
nwc10 Jython 2.7 was released a few days ago fwierzbicki.blogspot.fi/2015/05/jyt...eased.html
FROGGS $ nqp-m -e 'say("bär" ~~ /:m á/)' 08:47
ä
\o/
nwc10 \o/
moritz \o/
bbkr what kind of sorcery is that!?
FROGGS ignoremark :o) 08:48
08:48 ab5tract joined
Generator_ I really hate java things. I dont knw why when I hear the word java it resembles to 'slow' in my mind 08:48
FROGGS Generator_: that's because you think of startup time only :o) 08:49
Generator_ but that is a time too :0
bbkr Generator_: startup is slow. but it is good for long running processes, when the JIT kicks in it outperforms event C++ in some scenarios
FROGGS I dislike other things of Java more than its startup time characteristics 08:50
bbkr even*
Generator_ FROGGS I have not been much into java so i just see slowww, may be u can say what things are there to dislike :O 08:51
FROGGS if (MyNumber != 0) { # grr 08:52
it is way to verbose
Generator_ :/ 08:53
FROGGS if (!(foo instanceof bar)) { # -.- 08:54
08:54 cheungmc_ left
FROGGS and the concept of StringBuilders etc 08:54
it is too low level in many ways 08:55
08:55 laouji joined
jnthn waves from Trondheim airport 08:58
(on way to OSDC.no)
FROGGS jnthn: o/
lizmat jnthn o/ 08:59
jnthn FROGGS: How'd you do ignoremark, ooc? 09:00
FROGGS jnthn: clever of course :P
jnthn FROGGS: Nabbed the decomp_spec handling stuff from normalize.c? :)
FROGGS jnthn: I decompose to NFD, and compare the basechars
09:00 tinyblak left
nwc10 jnthn: some sort of occult alchemy based on toothpaste and painkiller, I think, judging by last night's purchases :-) 09:00
FROGGS jnthn: but I'll push to a branch today so you can review
jnthn FROGGS: OK 09:01
pmichaud good morning, #perl6
jnthn FROGGS: We need to get the NFG engine to understand it too is all
And need it to handle synthetics
But maybe you nailed 'em both :)
o/ pmichaud
FROGGS jnthn: because I guess there might be a smarter way than I'm doing it currently, though it is not much code
hi pmichaud
nwc10 pmichaud: you're not in Kansas, er, Texas, any more?
pmichaud nwc10: I haven't been in Texas for several days. :) 09:02
FROGGS jnthn: that's the core of it: gist.github.com/FROGGS/61a3e002267bf54b1e42 09:03
lizmat pmichaud o/ 09:04
jnthn FROGGS: Oh, that's not too bad
pmichaud lizmat o/
jnthn FROGGS: But yeah, we can cheat and be faster :)
FROGGS jnthn: that's what I thought :o)
.u ƌ
yoleaux U+018C LATIN SMALL LETTER D WITH TOPBAR [Ll] (ƌ)
FROGGS that one does not work yet 09:05
but the other tests from ignoremark.t pass
jnthn m: say 'ƌ'.NFD
camelia rakudo-moar 9c543b: OUTPUT«NFD:0x<018c>␤»
jnthn That has no decomposition.
Apparently
FROGGS hmmm
jnthn m: say 'ƌ'.ord
camelia rakudo-moar 9c543b: OUTPUT«396␤»
jnthn m: say uniname(396)
camelia rakudo-moar 9c543b: OUTPUT«LATIN SMALL LETTER D WITH TOPBAR␤»
jnthn m: say uniprop(396, 'Decomp_Spec') 09:06
camelia rakudo-moar 9c543b: OUTPUT«0␤»
jnthn Nope.
FROGGS so this is a unicode issue, not ours
jnthn Right
lizmat m: class A { multi method a(:$close) { say "default"; } multi method a(:$eager!, :$close) { say "eager"; } }; A.a(:eager); # expecting "eager" here
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/6RZB3C5hn_␤Strange text after block (missing semicolon or comma?)␤at /tmp/6RZB3C5hn_:1␤------> 3lti method a(:$close) { say "default"; }7⏏5 multi method a(:$eager!, :$close) { say␤ expecting an…»
FROGGS jnthn: there is also no separate TOPBAR 09:07
lizmat m: class A { multi method a(:$close) { say "default" }; multi method a(:$eager!, :$close) { say "eager" } }; A.a(:eager); # expecting "eager" here
camelia rakudo-moar 9c543b: OUTPUT«default␤»
FROGGS .u TOPBAR
yoleaux U+0182 LATIN CAPITAL LETTER B WITH TOPBAR [Lu] (Ƃ)
U+0183 LATIN SMALL LETTER B WITH TOPBAR [Ll] (ƃ)
U+018B LATIN CAPITAL LETTER D WITH TOPBAR [Lu] (Ƌ)
FROGGS that's all
lizmat m: class A { multi method a(:$eager!, :$close) { say "eager" }; multi method a(:$close) { say "eager" } }; A.a(:eager); # change the order, and it works ?
camelia rakudo-moar 9c543b: OUTPUT«eager␤»
lizmat m: class A { multi method a(:$eager!, :$close) { say "eager" }; multi method a(:$close) { say "eager" } }; A.a(:close); 09:08
camelia rakudo-moar 9c543b: OUTPUT«eager␤»
jnthn There may be a good reason not to consider them marks.
09:08 dayangkun joined
FROGGS jnthn: I fix the test 09:08
jnthn FROGGS: +1
timotimo say eager in both methods? 09:09
jnthn I can't think of a sane way of defining ignoremark besides Unicode's decomp_spec prop
lizmat m: class A { multi method a(:$eager!, :$close) { say "eager" }; multi method a(:$close) { say "close" } }; A.a(:close); # oops
camelia rakudo-moar 9c543b: OUTPUT«close␤»
dalek ast: 5ed2ff4 | FROGGS++ | S05-modifier/ignoremark.t:
fix plan, and fix invalid test about ƌ being decomposable
09:10
lizmat so, why is the order of the candidates significant? Is it intended to be that way?
jnthn lizmat: Named parameters act as constraints and we define multis with constraints as being tested in order. 09:11
lizmat did that change recently? 09:12
implementation wise, I mean?
jnthn Not afaik 09:13
I mean, I don't think many of us patch the multi-dispatcher :) 09:14
And I don't remember doing it any time recently
FROGGS lizmat: I remember that behaviour for a long time now 09:15
lizmat: like when implementing a trait and you forgot to mark the named param (the trait name) as mandatory 09:16
09:17 yqt joined
lizmat well, somehow IO::Handle.lines(:eager) became lazy again :-( 09:19
and I'm pretty sure at one time it wasn't 09:20
09:20 dayangkun left
lizmat same for IO::Handle.words btw 09:20
moritz why doesn't IO::Handle.words .slurp in the first place? 09:21
lizmat because if you want to run the risk of exploding memory by slurping a multi GB file 09:23
09:23 jack_rabbit left
lizmat you can do $handle.slurp.words ? 09:23
moritz oh, I misunderstood 09:24
I though .words called .lines(:eager) 09:25
and if it did that, it might as well could have called .slurp right away
lizmat indeed
ab5tract lizmat: is that MMD situation that you pointed out actually resolvable? it looks to me that such a thing would ideally be a compile time error 09:26
lizmat you should ask jnthn that, I merely get tripped up by it from time to time :-) 09:27
ab5tract :)
brrt i'd... think the mmd situation like that is correct, or is that wrong? 09:29
what's bad about it
jnthn It's consistent :) 09:30
Just falls out of all methods having a *%_ by default
And named parameters not really being involved in MMD
lizmat well, it's bad if you're trying to augment a class with a named parameter 09:31
09:31 rba_ left
lizmat as you cannot force it to the top of the mmd list, can you ? 09:31
s/class/method
ab5tract it seems like something that should blow up to me.. having an optional named param and a required one in signature A, and only the required one in signature B
jnthn If you're trying to augment a class, it's already bad :P 09:32
lizmat true, but this effectively bars you from augmenting a class that way
jnthn ab5tract: As I already said, named parameters aren't really involved in MMD, besides serving as a tie-breaker, and tie-breakers are simply tested in order. We won't be changing that in 6.0. 09:33
lizmat I know it's a smell, but sometimes you need to make code that stinks IRL
jnthn lizmat: You could solve similar kinds of problems by .wrap-ing the method 09:34
ab5tract in what order, though? the order of multi method declaration? the order of named params (which one would assume are hash-based and thus are barred from a consistent order)
lizmat now, that I find smelly
anyways, out for some sightseeing& 09:35
jnthn ab5tract: Declaration order.
ab5tract anyway, not something that will likely impact me much. but it doesn
jnthn ab5tract: As far as the multi-dispatcher knows, the only interesting thing is "are there any named params in the signature". It doesn't look any deeper. 09:36
09:36 RabidGravy joined
ab5tract 't feel particularly cozy either 09:36
jnthn: okay, that makes a bit more sense
09:42 rba_ joined
DrForr I don't see unsigned types in the official NativeCall documentation - Are unsigned types available and just undocumented? 09:44
FROGGS DrForr: they are implemented, undocumented and sadly buggy right now 09:46
jnthn Buggy? 09:47
jnthn added a bunch of tests when he implemented them...
In NativeCall, I mean. Outside of NativeCall, no, we don't really do them yet. 09:48
DrForr Nod. I'll comment out the call for the time being. 09:49
FROGGS jnthn: yes, they work inside of NativeCall, but at some point you loose the unsignedness when working with them before/after the call 09:51
jnthn: and there seems to be a bug with uint8 on osx, so that make test does fail there
m: say EVAL 'EnumMap.new(Empty)' # hmmm 09:56
camelia rakudo-moar 9c543b: OUTPUT«EnumMap.new(Nil)␤»
09:58 quester left
FROGGS m: say Empty.perl 09:59
camelia rakudo-moar 9c543b: OUTPUT«Empty␤»
09:59 grondilu joined 10:02 rba_ left
FROGGS m: say ().pick 10:07
camelia rakudo-moar 9c543b: OUTPUT«Nil␤»
10:09 darutoko- joined 10:11 darutoko left 10:12 kaare__ left
FROGGS hmmm 10:14
10:16 kaare__ joined 10:21 yqt left 10:24 owlsley left 10:27 Alina-malina left 10:39 chenryn left 10:48 yqt joined 10:49 vendethiel joined 10:52 uncleyea1 joined 10:53 uncleyear left 10:54 larion joined 11:00 kurahaupo left 11:06 araujo left 11:09 laouji left, Alina-malina joined 11:13 laouji joined 11:19 Akagi201 left 11:21 chenryn joined 11:24 vendethiel left 11:26 espadrine_ joined 11:32 laouji left 11:33 laouji joined 11:36 rba_ joined 11:42 vendethiel joined 11:51 nbdsp left 11:52 PZt joined, rba_ left
masak m: say +Empty 11:55
camelia rakudo-moar 9c543b: OUTPUT«use of uninitialized value of type Empty in numeric context␤0␤»
masak m: say ~Empty
camelia rakudo-moar 9c543b: OUTPUT«use of uninitialized value of type Empty in string context␤␤»
masak m: say ?Empty
camelia rakudo-moar 9c543b: OUTPUT«False␤»
masak I'm not backlogged. Empty is yet another undefined value in Perl 6?
vendethiel o/, #perl6! 11:56
vendethiel backlogs
masak I like the name, by the way. far clearer than Nil or Null or None or whatever.
just wondering if we only gained a new one, or if we lost an old one too.
&
11:57 nbdsp joined 11:58 andreoss joined
FROGGS masak: TL;DR: Nil is now split into Nil and Empty 11:59
12:00 rba_ joined 12:01 beastd joined
nbdsp my @l = 'a'..'zzz'; my $cnt=0; for @l { $cnt++ }; say $cnt; say now - INIT now; 12:01
yoleaux 07:09Z <lizmat> nbdsp: You might want to try .lines(:eager)
07:22Z <timotimo> nbdsp: it may very well be a lot faster to use the regex engine to do the work for you than to build a for loop; at least the regex engine doesn't have to provide for things like making next/last/redo possible and it might also be a tiny bit faster at "splitting into lines" in this case
nbdsp m: my @l = 'a'..'zzz'; my $cnt=0; for @l { $cnt++ }; say $cnt; say now - INIT now;
camelia rakudo-moar 9c543b: OUTPUT«18278␤1.297819␤»
nbdsp timotimo: I tried regexes, they run a bit faster, the runtime is still several minutes 12:02
timotimo OK
nbdsp I don't know, maybe if Perl 6 is planned for release, there is a plan for significant speed improvements in this kind if functionality.
timotimo lizmat just fixed :eager to actually apply
vendethiel Interesting choice of Foo{} (that reminds me of C++ for "some" reason)
timotimo yes, of course; that's what the GLR is about
nbdsp timotimo: well, everyone can try to read this file raw.githubusercontent.com/kevina/w...speech.txt into map and see how things are going . 12:05
timotimo thanks :)
DrForr Wordnet? 12:07
vendethiel irclog.perlgeek.de/perl6/2015-05-07#i_10565810 <- I'm glad we're not adopting the JMM (Java Memory Model) :-)
m: class A{method m is rw is cached { my $ = rand; } }; my A $a .= new; say $a.m; $a.m = 50; say $a.m; say A.new.m; 12:12
camelia rakudo-moar 9c543b: OUTPUT«use of uninitialized value of type Empty in string context in block <unit> at /tmp/Gw8RTr_KB9:1␤␤0.141107619007296␤use of uninitialized value of type Empty in string context in block <unit> at /tmp/Gw8RTr_KB9:1␤␤use of uninitialized value of ty…»
12:13 yqt left, yqt joined
andreoss m: say 1 before 2 12:16
camelia rakudo-moar 9c543b: OUTPUT«True␤»
andreoss m: say 1 less 2 12:17
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/qIgjKumpz_␤Two terms in a row␤at /tmp/qIgjKumpz_:1␤------> 3say 17⏏5 less 2␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statem…»
vendethiel m: class X { method y { ENTER { say $++ } }; }; X.y(); # expected?
camelia rakudo-moar 9c543b: OUTPUT«0␤1␤»
12:17 raiph joined
vendethiel m: class X { method y { ENTER { say $++ } }; }; X.new.y(); # huh 12:18
camelia rakudo-moar 9c543b: OUTPUT«0␤1␤»
vendethiel Am I getting that right that Nil flattens to an empty list but Empty doesn't? 12:19
m: my @a = 1, 2, Nil, Empty, 3; say @a.perl 12:20
camelia rakudo-moar 9c543b: OUTPUT«[1, 2, Any, 3]<>␤»
vendethiel m: my @a = 1, 2, Nil, 5, Empty, 3; say @a.perl # I'm so stupid
camelia rakudo-moar 9c543b: OUTPUT«[1, 2, Any, 5, 3]<>␤»
vendethiel Okay, seems like I got it the other way around :-)
dalek ast: 9a3666c | FROGGS++ | S05-match/perl.t:
RT #125138 fudge tests because of Empty/Nil confusion
12:22
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125138
vendethiel m: say (flat (1, Empty, 2, Nil, 3, Any, 4)).perl 12:27
camelia rakudo-moar 9c543b: OUTPUT«(1, 2, Nil, 3, Any, 4)␤»
12:37 abraxxa left, chenryn left 12:38 chenryn joined 12:41 nbdsp left 12:44 cygx joined
cygx o/ 12:44
.tell nbdsp try slurp('part-of-speech.txt').match(:g, /<-[\t\n]>+/)>>.Str.hash 12:46
yoleaux cygx: I'll pass your message to nbdsp.
12:46 chenryn left
cygx NativCall feature request: the ability to pass in a pointer and a signature and get back something callable 12:48
FROGGS hmmm 12:50
cygx: please ticket it
12:50 laouji left
timotimo cygx: is that much faster? 12:52
cygx timotimo: it's more about the ability to use function pointers
12:53 mr-foobar left, laouji joined
timotimo no, i mean the slurp + match thing 12:53
cygx timotimo: took ~30s for me, not the several minutes nbdsp spoke of 12:54
12:54 skids joined
timotimo good 12:55
thank you
cygx FROGGS: where should that ticket go? Rakudobug? MoarVM issue?
FROGGS cygx: RT (rakudobug) 12:56
I'd say
the issue tracker in the zavolaj repository would also work 12:57
cygx is there some magic tag like [FEATURE-REQUEST] I should add? 12:58
timotimo ah! the joys of befriending cat owners
12:59 araujo joined
hoelzro morning #perl6 13:00
timotimo morning hoelzro!
13:01 nbdsp joined
hoelzro ahoy timotimo! 13:06
13:06 skids left 13:09 zengargoyle joined 13:10 laouji left
vendethiel it's funny I just realized that having operator overloading through subs makes it lexical instead of object-scoped 13:13
nbdsp cygx: thanks, I'll try it. But 'several minutes' was related to my particular machine (although raydiak also reported about 7 minutes). It makes more sense to speak about relative times (e.g. compared to Python speed executing this task.The python code is like this: f = open( part-of-speech.txt)\nm={}\nfor x in f\n\ta,_,b=x.partition("\t")\n\tm[a]=b
yoleaux 12:46Z <cygx> nbdsp: try slurp('part-of-speech.txt').match(:g, /<-[\t\n]>+/)>>.Str.hash
timotimo vendethiel: that's both good and bad
vendethiel that might be *very* surprising to some, for sure :-)
13:14 muraiki joined
vendethiel when you take "Any" (passed through another module) and don't get the operators then 13:14
hoelzro with the CURLI changes that happened recently, does Rakudo no longer look for .mbc files in CURLF locations in @?INC ?
timotimo vendethiel: it also makes it harder to "just" override "cmp" and have sort work for your new class 13:15
cygx nbdsp: I did not time the other apporaches, but they did take significantly longer (as in multiple minutes) on my machine as well 13:16
FROGGS hoelzro: it should still look at CURLF
vendethiel right. but it gives a performance boost because it can be resolved at compile-time
13:16 uncleyea1 is now known as uncleyear, uncleyear left, uncleyear joined
hoelzro FROGGS: my mistake; I screwed up the naming of the mbc file =/ 13:21
thanks for clarifying!
13:23 airdisa joined
FROGGS ahh, k :o) 13:23
13:26 Celelibi left, aborazmeh joined, aborazmeh left, aborazmeh joined 13:32 tinyblak joined
FROGGS m: say ordfirst('ä') 13:35
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YoTddDSatZ␤Undeclared routine:␤ ordfirst used at line 1␤␤»
FROGGS m: say nqp::ordfirst('ä')
camelia rakudo-moar 9c543b: OUTPUT«The use of nqp::operations has been deprecated for non-CORE code. Please␤change your code to not use these non-portable functions. If you really want␤to keep using nqp::operations in your Perl6 code, you must add a:␤␤ use nqp;␤␤to the outer …»
FROGGS m: use nqp; say nqp::ordfirst('ä')
camelia rakudo-moar 9c543b: OUTPUT«228␤»
13:35 Celelibi joined 13:40 Akagi201 joined, rurban joined 13:44 larion left 13:52 Foxcool left 13:53 Foxcool joined
cygx .tell jnthn dynload might need patching: github.com/MoarVM/MoarVM/issues/214 13:55
yoleaux cygx: I'll pass your message to jnthn.
14:01 rba_ left 14:02 larion joined
zostay m: grammar Foo { token TOP { 'x' } }; class FooAct { method TOP($/) { 'x' ~~ /^/ } }; Foo.parse('x', :actions(FooAct.new)) 14:02
camelia rakudo-moar 9c543b: OUTPUT«Cannot assign to a readonly variable or a value␤ in method TOP at /tmp/el0Kn7dAJG:1␤ in regex TOP at /tmp/el0Kn7dAJG:1␤ in block <unit> at /tmp/el0Kn7dAJG:1␤␤»
zostay is there a way to use a regex within an action class method? 14:03
14:04 aborazmeh left 14:05 jepeway left 14:06 kaare__ left, jepeway joined 14:07 raiph left
moritz zostay: yes, by not using $/ as parameter 14:08
zostay: because that's the problem here: $/ is a parameter, and thus read-only; the regex match tries to assign its result to it, thus the error 14:09
14:10 airdisa_ joined, Hor|zon joined
zostay thanks 14:11
14:12 airdisa left, cygx left, chenryn joined
zostay i thought maybe it had to be $/ because make wasn't working without that, but i can call the .make() method instead 14:14
14:17 chenryn left 14:24 chenryn joined
moritz correct 14:24
also, you can use an inner scope
that has its own $/
(maybe force it with 'my $/')
and then regex-match inside the inner scope, and make() in the outer scope 14:25
though that sounds much more complicated than do a $match.make($value)
14:25 thou joined 14:26 skids joined 14:30 brrt left 14:39 rurban left 14:47 mr-foobar joined 14:48 FROGGS left, gfldex joined
hoelzro can anyone point me in the direction of the code that initializes the dispatcher object retrieved by nqp::p6finddispatcher('callsame')? 14:49
there's a bug I found I'd like to dig into after work
also, if something is missing from doc/Changelog post-release, is it ok to go in and edit the corresponding section? 14:53
14:56 cognominal left 14:57 airdisa_ left 14:59 rba_ joined
pmichaud hoelzro: yes, I think it's okay to edit the corresponding section. 15:05
15:06 lizmat left
TimToady pmichaud: welcome to Norway :) 15:11
15:12 FROGGS joined
TimToady as I suspected, delisting Nil wasn't all that hard, but I had to introduce Empty (at least temporarily) to handle the list comprehensions because I couldn't get them to just 'else next' 15:13
15:14 yqt left
TimToady and I couldn't just use (), because that is (for now) still a Parcel, which doesn't really go away unless you flatten 15:14
15:16 rba_ left, lizmat joined 15:17 bjz joined
lizmat hoelzro: please do, it's a work in progress :-) 15:20
pmichaud TimToady++
TimToady m: say Empty ~~ Nil 15:22
camelia rakudo-moar 9c543b: OUTPUT«True␤»
15:22 _mg_ left
pmichaud time for me to head to the panel event... bbl 15:22
TimToady have fun
15:23 chenryn left
jnthn hoelzro: Search for $*DISPATCHER in Actions.nqp 15:27
yoleaux 13:55Z <cygx> jnthn: dynload might need patching: github.com/MoarVM/MoarVM/issues/214
jnthn is also in Oslo :)
arnsholt Welcome to the unseasonably nice weather =) 15:28
15:29 ab5tract left
TimToady will have to settle for Yosemite today... 15:30
15:31 diana_olhovik left
jnthn TimToady: Hard life :P 15:35
15:36 rba_ joined
TimToady well, the road through Yosemite isn't *supposed* to be open this early, but there's no snowpack to speak of this year... 15:37
jnthn That's not cool... :P
dalek pan style="color: #395be5">perl6-examples: 1722d24 | (Andrei Osipov)++ | categories/euler/ (2 files):
[euler] problem 98
15:42
pan style="color: #395be5">perl6-examples: 27a3bf0 | (Andrei Osipov)++ | categories/euler/ (2 files):
[euler] problem 99
pan style="color: #395be5">perl6-examples: ceadb2f | (Andrei Osipov)++ | t/categories/euler.t:
[euler] tests for p99, p98
pan style="color: #395be5">perl6-examples: e117c17 | (Andrei Osipov)++ | categories/euler/prob054-andreoss.pl:
[euler] fixed indentation in p54
15:43 lizmat left 15:45 zakharyas left
raydiak m: dir '.' 15:46
camelia ( no output )
raydiak m: say dir '.'
camelia rakudo-moar 9c543b: OUTPUT«"/home/camelia/.bash_history".IO "/home/camelia/p6eval-token".IO "/home/camelia/std".IO "/home/camelia/.ssh".IO "/home/camelia/star".IO "/home/camelia/perl5".IO "/home/camelia/.perl6".IO "/home/camelia/.rcc".IO "/home/camelia/p1".IO "/home/camelia/nqp-js".…»
raydiak m: say 'foobar'.IO.e
camelia rakudo-moar 9c543b: OUTPUT«False␤»
raydiak m: use lib "foobar"; use foo; say 'foobar'.IO.e 15:47
camelia rakudo-moar 9c543b: OUTPUT«===SORRY!===␤Could not find foo in any of: file#foobar, file#/home/camelia/.perl6/2015.04-181-g9c543b5/lib, inst#/home/camelia/.perl6/2015.04-181-g9c543b5, file#/home/camelia/rakudo-inst-1/share/perl6/lib, file#/home/camelia/rakudo-inst-1/share/perl6/ven…»
raydiak m: say 'foobar'.IO.e
camelia rakudo-moar 9c543b: OUTPUT«True␤»
raydiak "use lib 'foo';" followed by "use Anything;" whether Anything exists or not, causes foo to be created. 15:48
15:49 rba_ left 15:50 rba_ joined 15:52 jeffreykegler joined
raydiak #125141 15:53
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=125141
jeffreykegler Just thought I'd drop in with a note about a syntax Marpa has adopted from Perl 6 15:54
15:54 bbkr left 15:55 rba_ left
jeffreykegler Marpa in a parser which allows sequence statements, of the kind "seq ::= item*" and it's nice to be able to specify a separator which you can do in Perl 6 15:55
15:55 lolisa left
jeffreykegler using Perl6's % and %% modifiers. 15:55
The new version of Marpa, Kollos, will use the % and %% modifiers, and introduce two others 15:56
The %- modifier will be a synonym for % -- the hyphen intended to indicate separation must occur between items -- users not familiar with Perl 6 may find this clearer. 15:57
Similarly, Kollos will have a %$ separator, which means that separation is actaully termination -- a separator *must* come after each item. 15:58
So %% , in effect, is the same as allowing both %- and %$ 15:59
In other news, there's work on a Perl 6 port of the low-level interface of Marpa: irclog.perlgeek.de/marpa/2015-05-07#i_10561384 16:01
16:03 khisanth__ is now known as Khisanth, telex left 16:04 telex joined 16:05 diana_olhovik joined
vendethiel maybe our %% should be "%$?" and we should have "%$" :P 16:07
jeffreykegler While I brought them up with the idea Perl 6 might want to adopt them, I will note that, while they serve the same purpose, the context is very different between Marpa and Perl 6. 16:13
raydiak cool news :) though I do wonder if <elem> %$ <sep> isn't just a less legible version of [<elem> <sep>]*
<elem>* %$ <sep> I mean 16:14
vendethiel troo :-) 16:15
just like 'a' ~ 'b' 'c' is the same as 'a' 'b' 'c'?
jeffreykegler In Marpa these modifiers are declarative -- they describe the syntaxes allowed and how they are implemented is not described. In Perl 6 they are procedural -- their description is in terms like "end matching here".
raydiak vendethiel: istr there's a semantic difference between those two wrt LTM or something 16:17
16:17 rba_ joined
vendethiel I think it's regarding error messages/backtracking, but LTM might be something as well 16:17
raydiak I can see how %$ would seem like an obvious variant to add to the collection though 16:18
16:22 _mg_ joined 16:26 Akagi201 left 16:27 fhelmberger left 16:31 rmgk left 16:32 colomon left, rba_ left 16:33 rba_ joined, rmgk joined 16:36 colomon joined 16:38 rba_ left 16:39 _mg_ left
tony-o timotimo: do you happen to know if anything installing to a CUR now instead of a CUL ? I'm looking through my dirs to find a MANIFEST file but i'm not seeing much 16:43
16:43 kaare__ joined
tony-o .tell timotimo i don't see anything out of the box using a CUR but Pluggable is updated to work with the changes to the way @*INC reports CU*s 16:45
yoleaux tony-o: I'll pass your message to timotimo.
andreoss m: say @*INC.perl 16:46
camelia rakudo-moar 9c543b: OUTPUT«["file#/home/camelia/.perl6/2015.04-181-g9c543b5/lib", "inst#/home/camelia/.perl6/2015.04-181-g9c543b5", "file#/home/camelia/rakudo-inst-1/share/perl6/lib", "file#/home/camelia/rakudo-inst-1/share/perl6/vendor/lib", "file#/home/camelia/rakudo-inst-1/share/…»
hoelzro thanks pmichaud, lizmat, jnthn! 16:48
tony-o andreoss: none of those are repos - there is one format of a repo that installs modules as '###' and keeps a MANIFEST[.json] file relating what each ### provides from a module/package perspective and which module/package each file belongs to 16:49
Pluggable combs all of @*INC looking for modules that begin with Your::Class::[Plugin|whatever]:: 16:50
andreoss when i push something in @*INC should i prefix it with "file#" too?
tony-o it gets handled for you last i checked, you can also do 'use lib "lib"' 16:51
use lib 'lib' prefixes it 16:52
nbdsp I tried slurp('part-of-speech.txt').match(:g, /<-[\t\n]>+/)>>.Str.hash, this improved things, but it still runs almost 4 minutes on my machine (Python's code runs about 2 seconds). Sorry for the maybe silly question, but is the current executing speed of this task (reading file into map) is considered within acceptable limits? 16:53
16:54 jeffreykegler left, mr_ron joined
tony-o depends on how big that file is, can you gist it? 16:57
nbdsp tony-o : raw.githubusercontent.com/kevina​/...speech.txt 16:59
the file format is 'aaa\tbbb'. The task is to read it into map : m<aaa> = 'bbb' 17:01
17:02 _mg_ joined
tony-o are you expecting bbb to start with a pipe in most of these cases 17:02
nbdsp Does it make difference in this code: slurp('part-of-speech.txt').match(:g, /<-[\t\n]>+/)>>.Str.hash ? 17:03
tony-o i'm golfing it to figure out where your speed is 17:05
nbdsp raydiak ealier today reported that this task takes 7 minutes on his machine.
tony-o that slurp thing took 18s on my machine 17:11
how long does it take for your machine to run 'my %r = "part-of-speech.txt".IO.slurp.lines.map({ .split("\t", 2) });' 17:12
17:16 Isp-sec joined
tony-o nbdsp: gist.github.com/tony-o/799419e6807c95ef9927 17:17
4 to 7 minutes seems excessive 17:19
raydiak that one took 53s here 17:20
tony-o raydiak: the map version ? 17:21
raydiak time perl6 -e '%r = slurp("part-of-speech").match(:g, /<-[\t\n]>+/)>>.Str.hash; %r.keys.elems.say;'
I'm wondering if it isn't the split in the version I tried before that takes so long
tony-o the one you ran was the original one, .match is the one nbdsp posted 17:22
ugexe andreoss: dont push to @INC 17:23
raydiak digs into last night's irclog (that was last night for me)
tony-o the .map for me is slower, more in the area of 1m20 17:24
raydiak the original question: irclog.perlgeek.de/perl6/2015-05-08#i_10567007
thing I ran last night: my $s = "file".IO.slurp; my %m; for $s.lines { my @pair = $_split("\t"); %m{@pair[0]} = @pair[1];} 17:25
tony-o ah ^ i just got into it about 40 minutes ago :-)
raydiak glad a little tweaking at least cut it down to under a minute :) 17:26
17:26 Akagi201 joined
raydiak was trying to convince nbdsp to break it up into more lines and time the different steps 17:27
%r = slurp("part-of-speech.txt").comb(/<-[\t\n]>+/); %r.keys.elems.say; drops it to 45s here 17:30
17:30 Sysaxed joined
Sysaxed m: @arr = <one two three>; 17:30
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/S2BJNOx01u␤Variable '@arr' is not declared␤at /tmp/S2BJNOx01u:1␤------> 3@arr7⏏5 = <one two three>;␤ expecting any of:␤ postfix␤»
Sysaxed why does it say "expecting any of: postfix"? 17:31
ugexe tony-o: file# and inst# are both compunitrepos
Sysaxed what does it mean?
tony-o m: my @arr = qw<one two three>;
camelia ( no output )
ugexe CompUnitRepo::Local::File and CompUnitRepo::Local::Installation 17:32
Sysaxed tony-o: I know, I know
tony-o: and the first part of the message is correct
tony-o ugexe: they're both CURLs
17:32 Akagi201 left
Sysaxed but I'm just wondering what kind of a postfix could it possibly want? 17:32
"my" is not a postfix?
tony-o i was wondering if timotimo knew about a change for CURI
Sysaxed or is it?
tony-o m: @arr = qw<one two three>;
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tvRWIPYWst␤Variable '@arr' is not declared␤at /tmp/tvRWIPYWst:1␤------> 3@arr7⏏5 = qw<one two three>;␤ expecting any of:␤ postfix␤»
tony-o weird 17:33
17:33 rba_ joined
raydiak it's a good question, what postfix is valid on an undeclared var name? :) 17:33
std: @arr = qw<one two three>; 17:34
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Variable @arr is not predeclared at /tmp/6RtAQPVoze line 1:␤------> 3<BOL>7⏏5@arr = qw<one two three>;␤Check failed␤FAILED 00:00 137m␤»
raydiak ^ that's what we want, I expect... 17:35
Sysaxed raydiak: I'm not sure. It actually says "'@arr' is not declared" which is 100% correct
mr_ron perl5 and use strict gives a similar legible error
Sysaxed raydiak: but then goes on and tells about a postfix...
ugexe if you just want to load a single compunit i think the expected way is $cur.load, but im not sure that works completely 17:38
17:38 rba_ left
ugexe er, $cu.load 17:38
tony-o it's for Pluggable so it's combing instead of loading
raydiak ah ha... 17:39
m: @arr.DUMP.say
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/yzGZRjPUR3␤Variable '@arr' is not declared␤at /tmp/yzGZRjPUR3:1␤------> 3@arr.DUMP.say7⏏5<EOL>␤ expecting any of:␤ method arguments␤»
raydiak hm, that worked locally, weird
Sysaxed raydiak: nope, does not work 17:41
geekosaur wonders why a prefix would be proposed as a postfix
(""my" is not a postfix?" no, it's a prefix)
Sysaxed geekosaur: well, that's what I thought :D 17:42
that's why I came here, right
17:42 araujo left
geekosaur I think it's working from the position that error recovery left it in statement context and it's looking for a statement postfix, maybe? 17:42
but not certain and don't have the production rules for p6's grammar in front of me just now 17:43
17:45 araujo joined
raydiak yep playing with it, kinda looks like it parses the whole statement, complains about the undeclared name, then gives you suggestions for what would have been valid where it left the cursor, at the end of the statement, falsely assuming that the error was where parsing stopped 17:47
m: @a.a
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1kqYZUJBsZ␤Variable '@a' is not declared␤at /tmp/1kqYZUJBsZ:1␤------> 3@a.a7⏏5<EOL>␤ expecting any of:␤ method arguments␤»
raydiak now it expects method arguments :)
m: @a.a() 17:48
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/A7cCYyunNX␤Variable '@a' is not declared␤at /tmp/A7cCYyunNX:1␤------> 3@a.a()7⏏5<EOL>␤ expecting any of:␤ argument list␤»
geekosaur remember that = is special
raydiak I don't know very much about it, really 17:49
geekosaur so it's realizing the problem there after eating .a (in theory it could do so at . but I suspect the rule consumes the method name before it's recognized that it's applying to an undefined name) 17:50
Sysaxed and then you give it an argument list
m: @a.('hello', 'world');
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/gQD8OfRsSh␤Variable '@a' is not declared␤at /tmp/gQD8OfRsSh:1␤------> 3@a.('hello', 'world')7⏏5;␤»
Sysaxed hooray, correct error!
geekosaur but for assignment it reads the whole assgnment before gettng there
nbdsp >"that one took 53s here" - Sorry, I simply don't know what is considered fast or not so fast in the Perl 6. Is 53 seconds is OK in this case?
Sysaxed nbdsp: which case? 17:51
raydiak correct error, wrong curcor position still :)
*cursor
nbdsp In case considered here: reading 250,000 lines into map
geekosaur (also you can diosable strict checking, IIRC, and get p5-like behavior where the assignment implicitly declares) 17:52
Sysaxed geekosaur: sooo, should I create a bug report? 17:53
geekosaur it is certainly LTA
we're just trying to nail down what the exact bug *is* 17:54
not saying it's not one
Sysaxed :)
raydiak note that in @a.a() there is no = but it still definitely acts weird
raydiak should ask fewer questions and read the grammar more
17:54 andreoss left
geekosaur yes, I conjectured earlier it reralizes the problem only after parsing the .a 17:55
and that's the context the "expecting:" is generated from
tony-o nbdsp: it's OK right now albeit slow
geekosaur so actually similar issue of the error using the wrong context, it just doesn't eat the whole statement 17:56
raydiak ah got it
Sysaxed nbdsp: I've heard that if you find something slow then you can submit a test case for perlbench or something
nbdsp tony-o : thanks! I guess I should run Perl 6 on a more fast machine than.
tony-o most of that time is spent in the .match it looks like
Sysaxed nbdsp: this way somebody might eventually pick it up and optimize it
raydiak I tried it in some other expressions and saw it doesn't eat the whole expression
so that seems to be congruent 17:57
geekosaur IIRC assignment is macro-like, turns into something internally like <op:=>(<var>,<value>) so it reads the whole expression and only later realizes the thing in <var> was not declared 17:58
nbdsp Sysaxed: thanks, I just didn't know if such a speed is considered an issue or this is just a price for all the cool features.
Sysaxed nbdsp: no, it is indeed slow 17:59
nbdsp: but there are constant performance improvements
tony-o ++
Sysaxed nbdsp: I actually like following p6weekly.wordpress.com/
nbdsp: it kinda gives me an idea of how fast things are progressing 18:00
18:00 larion left
geekosaur correctness has been the main worry until recently, performance is becoming the focus with things like the GLR expected to solve a bunch of performance issues all at once.. but still leaving many to be addressed 18:00
nbdsp Thanks for the link. Will check it regularly.
vendethiel m: say "hi" 18:01
camelia rakudo-moar 9c543b: OUTPUT«hi␤»
vendethiel m: say "ae be ce".grep(/<|w>+/)
^ is that a known problem?
raydiak geekosaur: that makes sense. do you know how we correctly handle errors in those cases? is it supposed to be moving the cursor back to the beginning of the name when it sees the error, or is it supposed to not show the irrlevant suggestions, or...???... 18:02
camelia rakudo-moar 9c543b: OUTPUT«Memory allocation failed; could not allocate 155504 bytes␤»
vendethiel do I not get how <|w> works?
geekosaur I think the 'expecting' part makes more sense with syntax-related errors, this is a semantic issue in a syntactically correct statement
i.e. it doesn't really belong with or add to the error message
18:03 zengargoyle left
tony-o nbdsp: are you using JVM or MOAR ? 18:03
18:03 zengargoyle joined, rba_ joined
nbdsp I have both, and run this on Moar. 18:03
geekosaur inb *some* cases a semantic error might actually be because of mangled syntax, but I'm not sure that is worth consideration here
Sysaxed nbdsp: there was a great talk about performance in perl 6 18:05
nbdsp: jnthn.net/papers/2014-yapceu-performance.pdf
nbdsp: here is the video www.youtube.com/watch?v=bhAIyrk2ogo
you can actually skip to the last slides for a couple of cool graphs 18:06
nbdsp Sysaxed: thanks, will check it.
18:08 zengargoyle left 18:10 rba_ left 18:14 zengargoyle joined
raydiak geekosaur: I'm looking at where that error gets thrown; what type of thing is in $*W, so I can read and understand its methods? 18:21
ugexe $*W is World 18:26
18:26 cygx joined
cygx o/ 18:26
raydiak cool thanks :) 18:27
\o cygx
18:27 yqt joined
cygx nbdsp: see gist.github.com/cygx/c1d06377387178097c58 for a low-level implementation 18:28
nbdsp: as the optimizer gets smarter, the other solutions should come closer to that performance 18:29
nbdsp cygx: thanks! thats very helpful.
18:30 zengargoyle left 18:31 cognominal joined 18:32 nbdsp left 18:33 Guest96 left 18:36 domidumont1 left 18:42 rba_ joined
raydiak this is a very sad area of code to work in...worries, sorrows, crying... 18:44
18:47 rba_ left 18:49 _mg_ left 18:57 cognominal left 19:03 spider-mario joined 19:07 zengargoyle joined 19:10 rindolf left, arnsholt left 19:11 arnsholt joined, zengargoyle left 19:16 Akagi201 joined, _mg_ joined 19:19 mr_ron left 19:21 Akagi201 left 19:27 mr_ron joined, zengargoyle joined
raydiak heh I can't recommend editing the perl 6 grammar directly on github unless you like to listen to your CPU fan scream for the fun of it :) 19:30
but anyway I do have a fix for that weird undeclared var error if anyone feels confident enough to merge it: github.com/rakudo/rakudo/pull/422 19:32
19:34 nbdsp joined
dalek ast: a8ce3b9 | usev6++ | S32-num/int.t:
Use unique ticket number for 'Inf and NaN NYI for Int'
19:34
ast: 2edbb00 | usev6++ | S32-num/int.t:
Replace one instance of eval_dies_ok with throws_like
ast: 66999bf | usev6++ | S04-declarations/constant.t:
Unfudge passing test for unicode constant name
nbdsp cgyx: your low level implementation is awesome! it runs about 5 seconds. thanks! 19:37
cygx nbdsp: no problem 19:41
19:41 mr_ron left
cygx nbdsp: just make sure that the last line terminates with \n, or it'll blow up if you use the script as-is ;) 19:43
19:43 rba_ joined
masak .oO( n: The Terminator ) 19:44
masak .oO( "I'll be last" )
masak .oO( "Hasta la vista, script as-is" )
19:45 zengargoyle left 19:46 zoosha_ left, zengargoyle joined
masak Perl 6: come for the language semantics, stay for the puns. 19:47
19:48 rba_ left
masak ...or possibly the other way around... 19:49
cygx nbdsp: of course, one could also just add the line `$nl = $chars if $nl < 0;` - but where's the fun in that ;)
arnsholt masak: Or both =)
19:50 cognominal joined 19:52 tinyblak left
FROGGS implementing ignoremark is not so much fun :o( 19:54
masak .oO( what have you got against Mark? ) 19:55
19:56 zoosha joined 19:58 _mg_ left 20:01 kaare__ left
bartolin m: constant $foo = 42; try { $foo = 21 }; say "alive" 20:01
camelia rakudo-moar 9c543b: OUTPUT«alive␤»
bartolin m: constant $foo = 42; try { $foo := 21 }; say "alive"
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tXGQRfuDW3␤Cannot use bind operator with this left-hand side␤at /tmp/tXGQRfuDW3:1␤------> 3constant $foo = 42; try { $foo := 21 7⏏5}; say "alive"␤»
bartolin ^^ the second evaluation is okay to fail at compile time, isn't it? 20:02
FROGGS I... I ge
bartolin also: hi, #perl6!
FROGGS I... I guess so
hi bartolin
masak sure, any rebinding of constants should be an error. the earlier the better. 20:03
that cannot ever work at runtime.
FROGGS and try is not supposed to catch that?
wow, I got character classes with ignoremark to work... 20:04
at least for the few tests I got
masak FROGGS: what I'm saying is I'm fine with it failing to compile, and `try` feels more like for things that may or may not work, not things that are guaranteed to fail as soon as you run them. 20:05
bartolin FROGGS: are you still at the GPW? 20:06
FROGGS bartolin: sort of
bartolin: I'm in my hotel room
masak: k
masak FROGGS: think of it this way: the `constant` keyword is a compile-time assertion that the value is not going to be messed with. 20:07
and so we're free to catch things at compile time.
bartolin FROGGS: I'm a bit sad that I didn't have time to go to Dresden, too. but maybe next year ... 20:08
FROGGS: hope you had/have fun there! 20:09
dalek ast: f7415ae | usev6++ | S04-declarations/constant.t:
Use unique ticket number for similiar tests
20:10
ast: f5deb5c | usev6++ | S04-declarations/constant.t:
Fix two tests which relied on try catching a compile time error
FROGGS bartolin: ohh yes, it was quite fun
bartolin: next time seems to happen in Nuremberg 20:11
bartolin FROGGS: oh, I didn't visit Nuremberg yet :) 20:12
20:15 araujo left
Sysaxed Haha, so I was wondering why unicode stuff does not work properly in my terminal, and it turned out that I was actually running xterm instead of urxvt 20:20
and indeed, cannot tell the difference files.progarm.org/2015-05-08-23150..._scrot.png
20:20 zengargoyle left 20:21 grondilu left 20:22 zengargoyle joined
Sysaxed At the same time, I'm still getting this: "------> @bâ = <hello world>;", as far as I understand that symbol should be rendered as an arrow, right? 20:22
20:22 mr-foobar left
Sysaxed hmm there's something wrong with my locale... 20:23
20:23 mr-foobar joined
Sysaxed OH right 20:24
got it
raydiak .u ⏏ 20:26
yoleaux U+23CF EJECT SYMBOL [So] (⏏)
raydiak close enough to an arrow :)
20:30 muraiki left
masak it is an arrow. on top of a box. 20:34
20:36 darutoko- left 20:37 zengargoyle left 20:39 domidumont joined
dalek ast: 692d7be | usev6++ | S05-modifier/my.t:
Unfudge 4 passing tests, fix test no. 5
20:40
bartolin ^^ could someone review that commit, please? as in: was the last test wrong (nok 'c3' ~~ &hasstate) ? 20:43
20:44 dolmen joined, zengargoyle joined
masak reviews 20:44
20:45 diana_olhovik left
bartolin thanks, masak++ 20:45
masak yeah, that change makes a lot of sense. 20:46
bartolin nice, another ticket can be closed :-) 20:47
masak the (corrected) test as such is not one I'd've written, but I'm hard-pressed to explain why not.
a first stab at explaining why: testing not-c4 is a lot less specific than testing for c3 (which you know to expect, so might as well test for it). 20:48
but if you do that, it's quite clear that you're testing nothing new compared to the c2 test.
bartolin *nod* 20:49
masak this has been masak's mini-course "Don't Write Tests Because You Have To, Write Tests Because You Have Something To Test" :) 20:53
20:53 zengargoyle left
bartolin this goes into the ticket :-) 20:53
20:54 zengargoyle joined
masak :P 20:54
20:55 domidumont left 20:56 skids left
raydiak probably leaving soon but, can anyone explain what is being accomplished with $/.PRECURSOR and $*W.throw(:precursor) in src/Perl6/{Actions,World}.nqp ? I made a PR which uses it and seems to do the right thing but it makes me uneasy not knowing the full why and how of it. 20:59
raydiak just found github.com/perl6/nqp/blob/5e9f7b8c...r.nqp#L731 21:01
21:04 Akagi201 joined 21:10 Akagi201 left 21:16 Sqirrel left 21:17 Sqirrel joined
Sysaxed raydiak: maybe it would be better if you ask it right in the pull request? 21:27
this way someone might searching for the same thing might stumble upon it
s/might//
raydiak I did give a pretty clear indication in the PR that I'm less than certain about the prematch thing 21:28
vendethiel m: say Nil.defined, Any.defined 21:33
camelia rakudo-moar 9c543b: OUTPUT«FalseFalse␤»
cygx any suggestions for a better name for github.com/cygx/p6-uni63 ?
dalek ast: 9d53706 | usev6++ | S03-operators/assign.t:
Use unique ticket number for similiar tests
21:34
ast: e9074a8 | usev6++ | S03-operators/assign.t:
Replace one instance of dies_ok with throws_like
ast: fdaa7dc | usev6++ | S0 (2 files):
Unfudge passing test for RT #116178, add 2nd test
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=116178
masak m: say .defined for Any, Nil, Empty 21:35
camelia rakudo-moar 9c543b: OUTPUT«False␤False␤»
masak heh :)
vendethiel :D 21:36
masak now which one of you jokers disappeared from my list?
masak guesses Nil
m: say .defined for Any, Empty
camelia rakudo-moar 9c543b: OUTPUT«False␤»
cygx m: say .defined for Any, Nil, $(Empty)
camelia rakudo-moar 9c543b: OUTPUT«False␤False␤False␤»
masak nope.
m: say .defined for Any, Nil
camelia rakudo-moar 9c543b: OUTPUT«False␤False␤»
masak ok, Empty auto-disappears from lists. unlike Any and Nil.
I guess that makes sense, if Empty is mostly like () 21:37
dalek : d259b71 | usev6++ | misc/rt.perl.org/cleanup_nyc_hackathon_tickets.txt:
Keep track of merged and resolved tickets
21:40
RabidGravy is Empty quite recent? 21:42
cygx RabidGravy: 14h old
RabidGravy ah okay
I'd created an enum in Sys::Utmp with an Empty in it and it didn't warn 21:43
21:43 rba_ joined
RabidGravy changed now 21:43
masak don't think it should warn in that case. `Empty` would just be lexically shadowed in that scope. 21:44
Sysaxed raydiak: now I wonder, it says "Variable '$test' is not declared" 21:45
raydiak: any reason it couldn't go on and suggest to add "my" ?
RabidGravy masak, best to chane it anyway, it'll cause a problem down the line :) 21:47
21:48 rba_ left
Sysaxed yea, well, imagine somebody coming with a different experience, let's say python 21:49
m: $test = 1
camelia rakudo-moar 9c543b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/u_pSw0GMn_␤Variable '$test' is not declared␤at /tmp/u_pSw0GMn_:1␤------> 3$test7⏏5 = 1␤ expecting any of:␤ postfix␤»
Sysaxed "is not declared? What do you mean? Here, I declared it: $test = 1" 21:50
masak RabidGravy: agreed.
Sysaxed I could be wrong though, somebody has to confirm that it is actually LTA... 21:51
21:51 zengargoyle left 21:52 zengargoyle joined
RabidGravy Sysaxed, but 'my' might not be what the want or expect, they may have typo-ed a name already in scope or expected it to be be declared from another scope or something else 21:53
so the message is probably not ideal but tricky to guess what they intended 21:54
confounding an expectation raised by not understanding the language is probably better than suggesting they do something which is wrong 21:58
22:03 zengargoyle left, zengargoyle joined 22:04 nbdsp left 22:05 virtualsue left, Akagi201 joined
Sysaxed RabidGravy: "If you wanted to declare a variable, then use 'my'" 22:06
RabidGravy: doesn't sound good enough? 22:07
22:10 Akagi201 left
RabidGravy well to be fair gcc would do the same 22:12
error: ‘test’ undeclared (first use in this function)
22:17 espadrine_ left 22:26 larion joined 22:28 fhelmberger joined 22:31 skids joined, dolmen left 22:33 fhelmberger left
dalek kudo/nom: 3b8b315 | hoelzro++ | docs/ChangeLog:
Mention linenoise changes in the changelog
22:57
22:58 RabidGravy left 23:05 rba_ joined 23:14 kurahaupo1 joined
masak 'night, #perl6 23:16
japhb Sysaxed: You mentioned earlier that slow issues could be submitted as tests. You are correct -- they should be submitted here: github.com/japhb/perl6-bench
Patches of any type welcome. Regular patchers get commitbits. :-) 23:17
23:19 larion left 23:25 rba_ left 23:26 coffee` left 23:27 coffee` joined, Zoffix left 23:33 lizmat joined 23:34 cognominal left, cognominal joined 23:37 Isp-sec left 23:39 rba_ joined 23:40 beastd left
Sysaxed japhb: yea I know, I'm also running ./bench quickstart for several hours now... :D 23:43
because I couldn't find the latest stats
timotimo right, i haven't posted benchmarks in $longtime
yoleaux 16:45Z <tony-o> timotimo: i don't see anything out of the box using a CUR but Pluggable is updated to work with the changes to the way @*INC reports CU*s
23:44 rba_ left
Sysaxed timotimo: might be worth doing, that's pretty interesting 23:44
timotimo i'm just afraid the results may turn out pretty bad 23:45
and whenever i run benchmarks, i leave that machine alone completely and try to shut off pretty much everything running in the background
Sysaxed timotimo: how long does it take? 23:46
timotimo depends very much on what i run
23:46 Erendis42d joined
Erendis42d ^v^ 23:46
timotimo last time i ran benchmarks, rakudo-parrot was still a thing, i believe
dalek osystem: 046d58b | cygx++ | META.list:
Add TinyCC to the ecosystem
osystem: 676b7cc | (Zoffix Znet)++ | META.list:
Merge pull request #44 from cygx/patch-2

Add TinyCC to the ecosystem
Sysaxed do I get it right that first of all it compiles everything
timotimo but if you run the jvm benchmarks, expect that alone to take 4x or 5x as long as the moarvm benchmarks
Sysaxed and only then runs the benchmarks?
timotimo for every benchmark it runs the task with "zero workload" first to figure out how long it takes to start up and compile 23:47
and it runs the benchmarks a few times in a row to get more precise results
Sysaxed well, I meant the compilation of rakudo, moarvm and stuff 23:48
timotimo oh
quickstart will compile a whole bunch of versions for you
Sysaxed yea
okay, well
timotimo and then benchmark all of them, that's right
Sysaxed it has been several hours and I believe that most of the stuff is not compiled 23:49
timotimo it's pretty neat, as it puts all the stuff that needs to download stuff up front
Sysaxed patience is a virtue, right?
timotimo yes
i've wanted it to output a bigger status summary every now and then so that you can tell where it's at and what it wants to be doing 23:50
Sysaxed timotimo: I really enjoy p6weekly, thanks 23:51
timotimo you're welcome; and thanks for telling :)
also, a full set of perl6-bench things takes a whole lot of hard drive space 23:53
Sysaxed timotimo: how much?
timotimo i'm measuring my folder right now 23:54
but that has a *lot* of versions built
23:54 Akagi201 joined
timotimo 15gb and counting 23:55
japhb: do you think we should be running "make clean" after "make install" in our compilation steps? 23:56
Sysaxed mine is already at 10gb 23:57
timotimo 22gb in components/
7.4gb in timings/ 23:58
ah
that's because the perl5 json files are all half a gig big
the compiled rakudo-moar's are about 290mb big
i mean, each compiled rakudo-moar 23:59
23:59 Akagi201 left