»ö« 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.
colomon o/, lizmat 00:00
timotimo: agreed
timotimo: but there certainly are hints it is going to be awesome
timotimo aye
colomon unless, of course, it's just running quickly because it's broken. :)
timotimo haha
colomon that's ha ha, only serious. 00:01
timotimo yes
00:02 pippo left
colomon you can easily duplicate the moar issues with 00:02
time perl6 bin/mandelbrot-parallel.pl --max-iter=50 101 >m.ppm
timotimo 17/43 of the 2014.05 release rakudo timing stuff 00:04
00:07 hoverboard left 00:31 dmol left
timotimo t.h8.lv/p6bench/2014-05-26-without_startup.html and t.h8.lv/p6bench/2014-05-26-with_startup.html 00:39
BenGoldberg rn: my $x = 1; print $x++, $x++, ++$x, ++$x, $x++, ++$x;
camelia rakudo-{parrot,jvm,moar} 501a70: OUTPUT«124557»
..niecza v24-109-g48a8de3: OUTPUT«127757»
timotimo i expected these for benchmarks to win much more 00:41
yeah, the optimization didn't trigger 00:42
00:42 hoverboard joined
timotimo strange. 00:42
there's a quasi-empty Stmts node where the code expects the infix:<..> to be 00:46
that's why it doesn't trigger
too tired to fix it now
00:47 pochi_ left 00:48 skids left
timotimo interesting! 00:49
it's caused by parenthesis around the range
why are they in the benchmark in the first place and why don't we flatten out Stmts with less than 2 content nodes?
00:50 skids joined 00:53 pochi joined
timotimo modified the benchmarks and kicking off another run 00:54
01:01 hoverboard left 01:02 klapperl joined
timotimo this may fix it 01:02
dalek kudo/nom: 71bc63c | (Timo Paulssen)++ | src/Perl6/Optimizer.nqp:
account for (1 .. 10) having surplus Stmt/Stmts nodes
01:03
timotimo may be a better idea to go in earlier and turn Stmt/Stmts with a single child into nothing, but there's something that happens to local var lifetimes under that condition 01:04
01:05 klapperl_ left
dalek kudo/nom: 166bf3e | (Timo Paulssen)++ | src/Perl6/Optimizer.nqp:
remove a surplus )
01:07
01:15 dayangkun joined
timotimo half done ... 01:21
uh oh, my commits broke the build 01:24
timotimo removed these commits 01:25
dj_goku so as a user of p6, what can we do to help? I am no where good enough to hack the internals. 01:39
01:39 hoverboard joined
timotimo write new modules, port existing modules, write documentation, test other people's stuff, report bugs (if possible, golf bugs down to smallest piece of code to reproduce), ... 01:40
lots of things you can do
it's also very good to just use p6 and hit problems, like unexpected performance characteristics, confusing/bad/missing documentation, ...
dj_goku hmm. 01:42
I was thinking of writing a ftp client, but not sure how hard that would be.
timotimo sounds somewhat simple; exploring the socket support sounds like time well spent 01:43
i'm not sure how good our sockets are and i don't know if they are equally good on all three backends
dj_goku I haven't written any socket programming since college, and then it was very low level. We did something like netcat. 01:44
timotimo oh, okay
01:45 Sqirrel left
timotimo t.h8.lv/p6bench/2014-05-26-without_startup.html t.h8.lv/p6bench/2014-05-26-with_startup.html - now updated 01:45
01:46 thistuso- joined
timotimo definitely a decent improvement on the for-based tests 01:46
geekosaur ftp is actually not the easiest thing to do, because of old-passive and EPSV and etc. 01:47
timotimo i'm going to bed now
gnite #perl6 :)
01:47 thistusooa left 01:48 Su-Shee left 01:50 Su-Shee joined
dj_goku geekosaur: hmm, maybe I'll look at learning channels/promises. :D 01:53
01:59 klapperl_ joined 02:01 chenryn left 02:02 klapperl left
dalek rl6-roast-data: a668780 | coke++ | / (6 files):
today (automated commit)
02:29
rl6-roast-data: 9906aca | coke++ | / (5 files):
today (automated commit)
rl6-roast-data: 175a66e | coke++ | / (3 files):
today (automated commit)
xiaomiao bpaste.net/show/299197/ # nqp-2014.05 test failure 02:45
02:48 Sqirrel joined 02:51 kurahaupo left 03:10 SamuraiJack__ joined 03:13 gtodd joined
BenGoldberg rn: sub primes( $largest? = Inf ) {my @s;my @p;my $p = 3;my $q = $p * $p;my $cnt = 0;++$largest unless $largest % 2;my $test = sqrt($largest);gather {take 2; take 3;for ( 5, 7 ... $largest ) -> $n {if ( my $stepsizes = shift @s ) {push @s[ $_ ], $_ for @$stepsizes;} elsif ( $n < $q ) {push @p, $n if $cnt++ <= $test;take $n;} else {--$p;push @s[ $p ], $p;$p = shift @p;$q = $p * $p;}}}}; say primes 999 03:15
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: Unable to resolve method push in type Any␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/tmpfile line 1 (ANON @ 30) ␤ at <unknown> line 0 (KERNEL dogather @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2634 (Gat…»
..rakudo-{parrot,jvm,moar} 166bf3: OUTPUT«2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 …»
BenGoldberg p: grep { True }, 5, 7 ... 999 03:24
camelia ( no output )
BenGoldberg p: say grep { True }, 5, 7 ... 999 03:25
camelia rakudo-parrot 166bf3: OUTPUT«␤»
03:25 Alula left 03:27 xragnar left 03:29 xragnar joined 03:36 Alula joined 03:59 bowtie left 04:01 kaare_ joined 04:05 kaare_ left 04:06 hoverboard left 04:19 zlurker joined 04:21 thou left 04:27 Pleiades` left 04:28 BenGoldberg left 04:32 Pleiades` joined 04:35 kurahaupo joined 04:58 dayangkun left 05:06 thou joined 05:13 Sqirrel left 05:14 kaare_ joined, SamuraiJack joined, SamuraiJack__ left 05:26 araujo left 05:27 kurahaupo left 05:28 kaare__ joined 05:29 kaare_ left 05:33 xinming_ joined 05:36 xinming left 05:42 anaeem1 joined 05:46 dayangkun joined 05:58 kaare__ is now known as kaare_ 06:03 denis_boyun_ joined 06:13 kaleem joined 06:16 anaeem1 left, anaeem1_ joined 06:21 darutoko joined 06:27 dayangkun_ joined, dayangkun_ left 06:30 dayangkun left 06:38 FROGGS joined 06:49 Ven joined 06:50 markov left 06:53 wooden joined, wooden left, wooden joined 06:54 wooden left 06:57 lue left 07:06 Shozan is now known as SHODAN 07:09 lue joined 07:10 dmol joined
sergot morning! o/ 07:20
ren1us 'evening 07:21
07:22 chenryn joined, denis_boyun___ joined, denis_boyun_ left 07:24 uon joined 07:34 dayangkun joined 07:37 uon left 07:40 salv0 joined 07:53 broquaint left 07:55 chenryn left 07:56 chenryn joined 07:58 broquaint joined
masak good antenoon, #perl6 08:10
gonna run some errands here, but after that, I should be all yours.
Perl 6 day today \o/
FROGGS \o/ 08:12
hi masak
jnthn timotimo: Why is forest fire missing from latest benchmarks? I had some improvements to that too... :S 08:16
Timbus part of our commitment to reducing carbon emissions 08:24
jnthn, i asked a few days ago rather vaguely, but i was wondering how i would go about setting up a 2 way binding for attributes. basically something like an INotify trait? 08:26
wrapping set_value appears to do nothing, so that wasn't right
jnthn Timbus: That's typically something you might do with Proxy. 08:30
And a Supply is the natural way in Perl 6 to send out notifications.
Probably there is a way to extract the detials into a module.
08:33 chenryn left, chenryn joined 08:38 krunen joined
Timbus well, i guess what i want is simply the ability to be notified when an attribute is changed, and to have that neatly abstracted away so I don't need to layer too much over the model 08:38
i did it in moose using 'triggers' 08:39
github.com/TiMBuS/GTKBind/blob/master/test.pl
binding a model to a gtk GUI with named widgets, so you can keep the data in sync with the ui
08:44 thou left 08:49 SamuraiJack left 08:59 denis_boyun___ left 09:10 Sqirrel joined 09:24 sqirrel_ joined
moritz I'm increasingly worried by p6's choice of making rw accessors that use assignment 09:40
it makes it much harder to add validation logik later on
lizmat good *, #perl6 09:41
moritz one could argue that the validation logic should go into the (subset) type, but 1) that produces horribly un-informative error messages and 2) doesn't give the application a way to short-circuit the type check when it knows it's valid
lizmat Timbus made me think about a "my $a will trigger { ... }"
moritz \o lizmat
Timbus lizmat, something like that yes 09:42
09:44 denis_boyun_ joined
Timbus except possibly a way to add more triggers from outer classes, but yeah 09:44
09:50 SHODAN left 09:52 SHODAN joined 09:55 thou joined 10:00 thou left 10:05 SevenWolf left 10:09 thistuso- is now known as thistusooa, thistusooa left, thistusooa joined
lizmat m: "foobar".IO.z # everybody ok with this producing a Failure ? 10:09
camelia rakudo-moar 166bf3: OUTPUT«Unhandled exception: Failed to find 'foobar' while trying to do '.z'␤ at <unknown>:1 (/home/p6eval/rakudo-inst-2/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:12909 (/home/p6eval/rakudo-inst-2/languages/…»
lizmat rather than just returning False ? 10:10
masak moritz: agree about validation logic. 10:16
moritz: at the very least there should be some nice sugar that handles all of the Proxy boilerplate.
timotimo Unhandled exception: failed to load library 'dynext/libperl6_ops_moar.so' 10:17
at <unknown>:1 (/home/timo/perl6/bench/components/rakudo-moar/d1b16a1/perl6.moarvm::303)
jnthn: this is what made forest fire fail
o_O
masak "SQLite4 is an alternative, not a replacement, for SQLite3. SQLite3 is not going away. SQLite3 and SQLite4 will be supported in parallel. The SQLite3 legacy will not be abandoned. SQLite3 will continue to be maintained and improved." -- sqlite.org/src4/doc/trunk/www/design.wiki 10:24
I dub this "the Perl 6 outcome".
the biggest difference with the Python world is that the Python core team seems to be a little bit in denial/wishful thinking about how much the Python 2 legacy will not be abandoned, and they're basically refusing to maintain and improve it. 10:25
xfix Python 2 is used a lot, but it's not officially supported. 10:26
Python 2.7 is the end.
There are security fixes, but that's it.
masak what I said.
moritz on an unrelated note, the new sqlite4 design sounds a bit similar to the berkeleydb design
masak moritz: is that good or bad? :) I used berkeleydb, but a long time ago.
xfix However, Perl 5 is still being worked on.
They still add new features. 10:27
masak xfix: hence "the biggest difference".
10:27 dayangkun left
xfix Also, Python 3 is somewhat compatible with Python 2. People actually write polyglots. 10:27
I doubt that writing polyglots for Perl 5 and Perl 6 would catch on, as they are very different languages. 10:28
lizmat just write code without hash accesses :-) 10:29
masak people write code using Python bridges (such as six), but the result is basically a variant of Python 2. since you can't very well use the core features from Python 3 without breaking py2 compatibility.
xfix Which is silly.
Python 3 has nice features like nonlocal.
Either way, official stance is at legacy.python.org/dev/peps/pep-0404/ - no Python 2.8. 10:30
masak I know. that's what I meant by "denial/wishful thinking".
but thanks for clarifying, xfix. :)
xfix I'm not sure if Python 3 was even needed. 10:31
masak besides six, there's also 2to3 and python-future.org/
xfix Yes, print shouldn't have been a function.
But was it worth breaking the compatibility?
masak say what you want about the transition, but the Python people have invested a lot in the tooling for handling it.
xfix But I guess that if it wouldn't have been done, the language would be full of aliases. 10:32
Like the range() and xrange() in Python 2 (which are actually not identical). In Python 3, xrange() replaces range().
masak xfix: the nice thing about open source is that if you *didn't* think it was worth breaking the compatibility, then Python 2.7 is still out there, for free, available for download. that's not just a theoretical opportunity -- lots of people are making use of that. 10:33
10:33 dmol left
xfix Well, either way, Python community is different to Perl. 10:33
Perl community wants stable language, where new revisions will be compatible with old code. 10:34
masak I've found it more similar than I first assumed.
xfix However, in Python, while compatibility with old code is important, it's not as important as in Perl.
Yes, there is __future__, but usually features from future are implemented in a release after adding them to __future__. 10:35
masak xfix: do you have an example in Python of where backwards compatibility was ignored or down-prioritized? 10:36
xfix Well, adding new keywords ;-).
The difference isn't huge.
masak do you have a concrete example?
xfix However, say in Perl is still in feature module. It's just a keyword, but perhaps someone used say somewhere.
masak of adding a new keyword breaking backwards compatibility.
xfix There is legacy.python.org/dev/peps/pep-0291/, but it's old PEP. 10:38
Compatibility is hard. 10:39
Even adding // to Perl 5.10 was difficult, because of edge cases.
masak xfix: I don't see that PEP as an example of Python people discounting backwards compatibility -- rather the reverse. 10:40
xfix In Perl, it was once allowed to write "$$0", and it meant "${$}0". Someone depended on that, so the change was delayed.
masak xfix: what makes you say that in Python, backwards compat is "less important" than in Perl?
seems to me they take it very seriously. 10:41
and that was one of the reasons py3 was needed, to be that one clean break.
note that "new keywords" are often not a problem from a backwards-compatibility standpoint. 10:42
in earlier versions you couldn't use that keyword... so you didn't.
xfix In Python, variables don't have sigils.
So impact of new keywords is bigger.
docs.python.org/2.7/whatsnew/2.7.h...python-2-7 10:43
lizmat m: say "foobar".IO ~~ :z # this seems wrong to me
camelia rakudo-moar 166bf3: OUTPUT«False␤»
xfix Also, there are things like Python once allowing strings as exceptions.
But now, it's an error, even in Python 2. 10:44
lizmat m: say "foobar".IO.say
camelia rakudo-moar 166bf3: OUTPUT«write string requires an object with REPR MVMOSHandle␤ in method print at src/gen/m-CORE.setting:14055␤ in method say at src/gen/m-CORE.setting:14067␤ in block at /tmp/RMQ18eUVnC:1␤␤»
xfix TypeError: exceptions must be old-style classes or derived from BaseException, not str
lizmat m: say "foobar".IO
camelia rakudo-moar 166bf3: OUTPUT«IO::Handle<foobar>(closed)␤»
xfix But I find it interesting that Python still has old-style classes.
masak Python 2, yes. 10:45
FROGGS if I could vote I'd toss smartmatching against a pair for IO...
lizmat FROGGS: I'm starting to agree... but we need a way to chain them
xfix The difference between old-style and new-style is very minor. 10:46
lizmat FROGGS: and probably disallow matching on :s
xfix For old-style classes, type(something) is instance. For new it's the class itself.
masak FROGGS: +1 10:48
xfix New style classes also behave somewhat differently with multiple inheritance.
masak FROGGS: smartmatching against pairs is a big hairy special case. it doesn't blend in naturally with the rest of the language.
FROGGS: I think a compact DSL for filetests might be a promising thing to try. 10:49
maybe using the `` syntax? :)
ooh, we could simply resurrect the Perl 5 syntax that way, making it very familiar to p5 people.
lizmat I was more thinking along the lines of the IO.x methods returning a special version of Bool
moritz masak: neither good or bad; just recently read about bdb design 10:50
xfix Isn't `` intentionally left unused?
masak lizmat: why a special version of Bool?
lizmat that would contain the stat buffer to which it applies
masak xfix: yes. *for DSLs*.
lizmat to allow chaining
"foo".IO.r.w.x
would return True if .r and .w and .x
if any method already returned False, the next method call would become a noop more or less 10:51
xfix Still, I have seen lots of scripts (long time ago, when Python 2.7 was new) that claimed to work only on Python 2.6, not Python 2.7.
masak if we do it syntactically, we can keep the methods the way they are, ditch the explicit conversion to IO, and still get the chaining.
lizmat masak: ?
xfix But I may be misremembering something. 10:52
masak lizmat: your example above would be something like 'if `-r -w -x "foo"` { ... }'
hm, modulo syntax.
xfix I don't like it. It looks like subshell syntax in Perl 5. 10:53
FROGGS can't we have a method call syntax that allows chaining in general?
10:54 araujo joined, araujo left, araujo joined
FROGGS I mean, we have .^foo, .?foo ... 10:54
10:55 virtualsue joined
lizmat I'm trying to make an alternative for S03:2761 10:56
synopsebot Link: perlcabal.org/syn/S03.html#line_2761
FROGGS .oO( say 42.<( [&&] <defined Str> )> 10:57
moritz doens't find .r & .w & .x too obscure 11:01
lizmat moritz: what about !.r ? 11:03
moritz lizmat: what about it?
lizmat obscurity wise ? 11:04
moritz rather obscure, IMHO
! stands either for "private" or "not"
lizmat m: given "foo" { say !.say } # stands for "not" 11:05
camelia rakudo-moar 166bf3: OUTPUT«foo␤False␤»
lizmat m: given "foo" { say .say }
camelia rakudo-moar 166bf3: OUTPUT«foo␤True␤»
11:06 bowtie joined
moritz lizmat: I thought you proposed ! as a chaining character 11:06
lizmat nonono
moritz anyway, I don't find .r & .w & !.x obscure
lizmat no specific chaining character
xfix .r && .w && !.x is not that bad. 11:09
Way better than it would be in PHP. is_readable($_) && is_writable($_) && !is_executable($_).
lizmat the relevant spec seems t least 5 years old
11:10 sqirrel_ left
xfix Should Perl 6 have short syntax for that however. 11:10
Functions like -r in Perl cause race conditions.
lizmat indeed, that was my other point: we should also make sure tha 11:11
t all of these chained file ops actually refer to the same stat buffer
to get consistent results
xfix Why do you need to know whether file is writable, when it can change just after the check? 11:12
lizmat well, to avoid trying, I guess
xfix I'm personally for trying to read the file, instead of checking if it's writable. 11:13
It's always possible to catch the exception if it's not possible.
lizmat don't bother an expensive calculation if it appears you will not be able to write the result
or fail early
dalek ast: 9127829 | (Elizabeth Mattijsen)++ | S32-io/file-tests.t:
Fix test failure after IO.* changes
11:14
xfix There are valid uses of checking permissions, like `ls` command. But for most cases, trying to do something on the file works better than checking if you can do something. 11:15
moritz a compromise would be to first open the file handle, then do the calculation, then write 11:19
xfix This isn't just a recommendation. This avoids real security problems, like CVE-2014-2906 I lately had in a project I work on.
lizmat S03:2797 states: The stat buffer will automatically be reused if the same object has recently been queried, where "recently" is defined as less than a second or so 11:23
synopsebot Link: perlcabal.org/syn/S03.html#line_2797
lizmat I think this is unnecessarily complex 11:24
I would propose the following:
11:24 sqirrel_ joined
lizmat the first .IO.* call returns a StatBool object that contains the stat buffer for the given path 11:25
the StatBool object *also* has the same .* methods as .IO gives, but instead of creating a new stat buffer, will work on the one in the object
this would allow you to "foo".IO.r.w.x
moritz IMHO that sounds too obscure, and in the end you're only fixing one specific case of chaining, and only 'AND' chaining 11:27
is 'foo'.IO ~~ :r & :w & :x really that obscure/too much to write? 11:28
xfix It seems somewhat strange from me to use ~~ for something that should have been a method but whatever works.
lizmat moritiz: not necessarily 11:29
m: my $a=42; given $a { $_++ }; say $a
camelia rakudo-moar 166bf3: OUTPUT«43␤»
lizmat so you should be able to do:
given "foo".IO { when .r & !.w }
11:30 politico joined
moritz is anything stopping one from doing that right now? 11:30
lizmat no, but it would not be using the same stat buffer 11:31
and / or we would need to build a stat buffer cache
with expiration logic
moritz .IO could do that
or
'foo'.path.stat
given 'foo'.path.stat { when .r & !.w } # only one stat call 11:32
lizmat I don't see how .IO could do that without creating a different object
moritz IO.r could autovivify the cache
lizmat my point is that we shouldn't need a cache 11:33
moritz but I think it's cleaner with an explicit .stat call
lizmat a cache is trouble
moritz then let the user say .stat when they mean to make only one
lizmat actually, a .stat method is specced in S32
S32/IO: 593 11:34
11:35 bowtie left 11:36 SamuraiJack joined
Ven Imho .IO ~~ :e doesn't fit in. What are the other parts where the language has something like that ? 11:37
If were to think about it "how you think this is in p6" I'd say something like .has(:r, :w) which I can all() or any(), dunno 11:38
11:40 bowtie joined
lizmat In any case, the ~~ syntax is currently eating the fail when trying to do things to non-existent files 11:40
moritz Ven: ~~ :e is a fossil, IMHO. It comes from wanting to do file tests with ~~ 11:41
we should simply say "no" to that
Ven watches as moritz says no
moritz (the idea was that p5's -e / -r would best translate to :e / :r, and the ~~ would suplly the topic) 11:42
NO
there you go
anybody opposed to unspeccing file tests as smart matching adverbs?
lizmat gets the message and starts the chainsaw for S03
moritz lizmat: wait until TimToady had the opportunity to comment 11:43
lizmat switches the chainsaw off for now
FROGGS nononono, quick! edit the spec as long as he is sleeping!! :P
moritz FROGGS: we can always restart the chainsaw... :-) 11:44
11:44 thou joined
FROGGS :o) 11:44
Ven Then, how do you write .r.w ? With the given etc 11:48
makes it hard to use inline, no ?
11:48 thou left
Ven m: say so given 1 { true if .succ == 2 } 11:49
camelia rakudo-moar 166bf3: OUTPUT«===SORRY!===␤Word 'given' interpreted as a listop; please use 'do given' to introduce the statement control word␤at /tmp/ymJyRUO5aN:1␤------> say so given⏏ 1 { true if .succ == 2 }␤Unexpected block in infix po…»
Ven m: say do given 1 { true if .succ == 2 }
camelia rakudo-moar 166bf3: OUTPUT«===SORRY!=== Error while compiling /tmp/DZgMp9wbkt␤Undeclared routine:␤ true used at line 1␤␤»
lizmat Ven: True ?
Ven well, it works anyway.
lizmat: I just switched to /msg camelia at that point :-)
I try not to spam *too much* 11:50
masak +1 12:13
er, stale backlog.
I was +1'ing moritz++'s "no" to ~~ :e
lizmat fwiw, +1 from me (in case that wasn't clear) 12:14
Timbus ok im trying something here. i want to 'tag' methods in a class with a trait, so that when i compose a role into it, it filters the tagged methods and adds some magic. 12:22
so in terms of an 'X Y' question: X: how do i get methods with a specific trait. 12:23
Y: is it 'correct' to be marking methods with a trait for such a thing
masak Timbus: one nice trick I learned from quietfanatic: 'my_trait sub foo { ... }' 12:26
Timbus: where my_trait is just a sub that expects a sub.
12:27 sqirrel_ left
masak I'm guessing it works fine for methods, too. 12:27
Timbus haha. oh wow i didnt think of that
masak \o/
m: class C { my_trait method foo {} }; sub my_trait($m) { say "oh look, it's a $m.^name!" }
camelia rakudo-moar 166bf3: OUTPUT«oh look, it's a foo.^name!␤»
masak m: class C { my_trait method foo {} }; sub my_trait($m) { say "oh look, it's a $m.^name()!" } 12:28
camelia rakudo-moar 166bf3: OUTPUT«oh look, it's a Method!␤»
masak m: class C { my_trait method foo {} }; sub my_trait(Method $m) { say "this method has id $m.WHICH()" }
camelia rakudo-moar 166bf3: OUTPUT«this method has id Method|139751622209096␤»
FROGGS quietfanatic++ 12:33
12:35 FROGGS left
Timbus yeah this should work 12:36
masak it's an example of a bigger pattern that I *really* believe in these days. 12:40
which is, usually something can be solved by passing exactly the right kind of thing (at the right moment) to a function. 12:41
in this light, annotations are just functions.
12:44 FROGGS[mobile] joined
Timbus well, im now trying to tie it into IRC::CommandHandler that japhb++ wrote, so this is a bit more messy than just a .wrap 12:46
12:55 FROGGS[mobile] left 12:56 anaeem1_ left, FROGGS[mobile] joined 12:58 krunen left 13:00 krunen joined 13:02 kaare_ left
Ven m: my @a = (1,2,3); say 1 == any(@a); say (1,2,3) == any($(@a)) 13:07
camelia rakudo-moar 166bf3: OUTPUT«any(True, False, False)␤any(True)␤»
Ven m: my @a = (1,2,3); say so 1 == any(@a); say so (1,2,3) == any($(@a))
camelia rakudo-moar 166bf3: OUTPUT«True␤True␤»
Ven Interesting
13:11 cognominal left, cognominal joined 13:12 FROGGS joined, FROGGS[mobile] left, telex left 13:13 FROGGS[mobile] joined 13:14 zakharyas joined, telex joined
Timbus m: class C { my_trait method foo {} }; sub my_trait(Method $m) { say "id1: $m.WHICH()" }; say "id2: {C.^methods[0].WHICH}" 13:27
camelia rakudo-moar 166bf3: OUTPUT«id1: Method|140127522782432␤id2: Method|140127521195008␤»
13:28 guru joined
Timbus well, ok 13:28
13:28 guru is now known as Guest83059, Guest83059 is now known as ajr_ 13:32 thou joined 13:34 spider-mario joined 13:35 itz joined 13:36 kaare_ joined, thou left
masak has Grammar::Debugger bitrotted? gist.github.com/masak/d9bd70d9f196a39d30bb 13:40
jnthn: ^
masak attempts to diagnose that error
Ven has $!auto-continue = False; 13:42
masak shouldn't be immutable. 13:43
that error looks very bogus.
Ven m: class A { has $!h; method modify { $!h = 5; } }; A.new.modify
camelia ( no output )
Ven m: class A { has $!h = 'foo'; method modify { $!h = 5; } }; A.new.modify
camelia ( no output )
masak updates his Rakudo
Ven m: class A { has $!h = True; method modify { $!h = False; } }; given True { when True { given False { A.new.modify } } }; 13:44
camelia ( no output )
masak I think you'll have better luck golfing it down from the original error.
after first reproducing it locally. 13:45
flussence
.oO( &Int::r = anon method { self +& 0o444 ?? self !! 0 };)
lizmat masak: could this have to do with Pair.key becoming immutable ?
Ven masak: maybe it happens because of when it's happening, too 13:47
masak lizmat: seems unrelated to me... 13:49
lizmat: this is a Bool in an attribute, not a key in a Pair.
lizmat it's just that it is one of the things that recently got immutable 13:51
13:57 zakharyas left
masak *nod* 13:59
let's see what I find during the golf after the update. 14:00
timotimo we're keeping ~~ :foobar though, right? to call methods? 14:02
lizmat timotimo: could you give a use case ? 14:03
masak I wouldn't mourn it if it went away. 14:04
I like .foobar to call methods :P
timotimo m: given "HELLO" { when :lc<hello> { say "yup" } }
camelia rakudo-moar 166bf3: OUTPUT«yup␤»
timotimo ^- i like that
especially since you can give smartmatchers to many things
m: say "hello you!" ~~ :words(2) 14:05
camelia rakudo-moar 166bf3: OUTPUT«True␤»
masak m: say "hello you!" ~~ *.words == 2 14:07
camelia rakudo-moar 166bf3: OUTPUT«True␤»
masak that... seems a lot clearer to me.
and doesn't clutter up Pairs with an unrelated behavior.
m: given "HELLO" { when *.lc eq 'hello' { say "yup" } }
camelia rakudo-moar 166bf3: OUTPUT«yup␤»
FROGGS when :lc<hello> { say "yup" } <-- this was a WAT for a second to me
masak `~~ :words(2)` is not much better than `10.times` of Ruby fame, if you ask me. 14:08
we usually keep ourselves to a higher standard.
just try saying it out loud. "when you smartmatch on a Pair, the key is used as a method name of the method called on topic, and the value is used to smartmatch on the return value of the method call". 14:09
that makes almost no logical sense at all.
lizmat it also feels like the method lookup must be runtime 14:11
which would be bad for performance
I guess it's not so bad if you specify it like :foo
14:13 berekuk left
masak method lookups tend to be runtime, but yes, I see what you mean. 14:13
it's hard to optimize (I guess) becuase it's one extra level of indirection. 14:14
something that's much better indicated by just doing *.words == 2 -- that's a thunk right there.
14:19 ilbot3 left 14:20 ilbot3 joined
lizmat also, it feels like from the :foo syntax, that the value would be used as the *right* side of the ~~ 14:20
when in fact it is the *left* side
otherwise ~~ :foo would *always* match, no? 14:21
masak right.
lizmat so, this seems to be from the symmetrical smartmatch days to me
masak it's just a weird bit of syntax, which -- as moritz suggested -- is mostly a casualty of trying to get things working with filetests.
not sure it's from those days. but it's definitely weird. 14:22
lizmat like ":2nd" that only works in matches ?
being short for :nd(2)
masak oh, :2nd I find acceptable. it's just sugar for... right.
and it doesn't only work in matches.
m: say (:2nd).perl
camelia rakudo-moar 166bf3: OUTPUT«===SORRY!=== Error while compiling /tmp/7xYuakzAvK␤Malformed radix number␤at /tmp/7xYuakzAvK:1␤------> say (:2⏏nd).perl␤ expecting any of:␤ number in radix notation␤»
masak hrm.
lizmat my point :-)
masak or maybe it does.
std: say (:2nd).perl 14:23
camelia std ec3d853: OUTPUT«ok 00:01 124m␤»
masak submits rakudobug
just upgraded my Rakudo. Grammar::Debugger error persists. going to golf it after I submit this rakudobug. 14:25
the sad/funny thing: I brought in Grammar::Debugger because I was trying to understand a grammar that I'm creating in a project I'm building. 14:28
so this is some kind of yak shaving, I guess.
timotimo so many yaks in perl6 land :| 14:29
FROGGS masak: my bet it will be just a one line fix
masak enjoys golfing something again 14:31
oh, "interesting" :/ 14:33
it's related to publish_method_cache
FROGGS uhh 14:34
if I had a power socket in this train I could bisect it 14:35
nwc10 you don't have a shell account somewhere else that you can outsource the bisect to? 14:36
FROGGS nwc10: no, I do that on my laptop exclusively 14:37
moritz FROGGS: are you interested in such an account?
14:37 FROGGS[mobile] left
FROGGS moritz: I have a feather account in theory... but I like my laptop more :o) 14:38
moritz ok
masak I think I've uncovered a second error under the first error. 14:40
maybe this will be a bigger clue for someone else than it is for me.
gist.github.com/masak/d9bd70d9f196a39d30bb updated with the underlying error. 14:41
I think the original error is caused as part of reporting the second one.
14:44 FROGGS left
lizmat ah, maybe it is related to jnthn optimization where $_, $/ and friends are only allocated when used 14:45
masak gist.github.com/masak/d9bd70d9f196a39d30bb updated with the golfiest version of Grammar::Debugger that still triggers the error.
lizmat and *that* may be related to the async $_ re-use issue
masak jnthn: ^ when you have time, you definitely should have a look at this.
jnthn: near as I can tell, at some point Grammar::Debugger is trying to call .TOP on the wrong object. 14:46
lizmat: optimization and $/ sounds eerily correct.
"the most important point about cheating is not to get caught" -- this seems to be a case of getting caught. 14:47
timotimo oh
14:48 FROGGS joined
timotimo grammar::debugger could be optimized quite a bit if that $name eq any(<...>) would be turned into '...' | '...' | '...' | ... 14:48
FROGGS m: say Promise.^methods
camelia rakudo-moar 166bf3: OUTPUT«BUILD vow keep break result Bool cause then start in anyof allof <anon> <anon>␤»
timotimo does find_method get called often or just once per method?
14:52 FROGGS left
masak lizmat: since 8584dbea is now the prime suspect, I'm going to build with 8584dbea^ and see if the error goes away. then with 8584dbea and see if it comes back. 14:53
14:54 politico left
timotimo oooh, the optimizer can't know that the grammar module wants to look at $! all over the place 14:57
and grammar::debugger expects $! to be available everywhere
masak $!, the exception variable? 14:59
timotimo er 15:00
$/ of course
masak I don't think it's that simple.
15:00 kaleem left
masak there's no mention of $/ in Grammar::Debugger. 15:01
nor in the golfed version I produced.
timotimo OK
15:06 FROGGS joined 15:10 denis_boyun_ left, Pleiades` left 15:12 SamuraiJack left 15:14 Pleiades` joined 15:20 thou joined
masak interesting data point: problem persists at 8584dbea^ 15:22
gtodd FROGGS: good to know that if there's ever a need for more Promise methods there's still some names to choose from: ... oath covenant bood_oath ... etc. 15:24
masak trying to build something from the beginning of this year.
15:25 thou left
FROGGS gtodd: heh, had to translate oath first :o) 15:25
gtodd FROGGS: I like how some of the reserved words in perl have an olde tyme religion twang to them .... 15:27
FROGGS: reminds us that typing commands into a computer is still an act of faith ;-D
FROGGS *g*
masak p: my $d = Date.new(:year(2012), :day(1), :month(12)); say ++$d 15:28
camelia rakudo-parrot 166bf3: OUTPUT«2012-12-02␤»
masak seems rt.perl.org/Public/Bug/Display.html?id=121909 is fixed? 15:29
15:32 daxim left
timotimo p6weekly.wordpress.com/2014/05/26/...and-cairo/ - published 15:40
masak another data point: problem persists in a Rakudo from 2014-01-31. 15:42
so jnthn++'s recent optimizations are cleared of suspicion. 15:43
gtodd :)
masak going back another year to try to build there. 15:44
(how long has Grammar::Debugger been busted without anyone noticing?)
15:45 daxim joined
gtodd masak: rt.perl.org/Public/Bug/Display.html?id=121909 doesn't error for me 15:45
15:46 Rotwang joined
masak gtodd: nor for me, above. 15:46
masak closes ticket
FROGGS timotimo++ 15:48
15:48 hoverboard joined
masak timotimo++ # p6weekly.wordpress.com/2014/05/26/...and-cairo/ 15:48
timotimo you're welcome :) 15:49
masak timotimo: the combination of the pronoun "I" and the lack of information of who authored the post is kind of weird. 15:51
timotimo it says timotimo at the way bottom, but i agree 15:52
masak timotimo: now I see it. yeah, it's a bit hidden.
timotimo fixed that 15:53
if i wanted to modify the style of my blog any more, i'd have to either host my own or pay for premium
FROGGS timotimo: only $80 :P
dj_goku timotimo++ always like the p6 wordpress posts even though post of it is greek to me. 15:54
FROGGS what a nice typo :o) 15:56
masak dj_goku: hi, nice to meet you :)
dj_goku: there used to be a time when I liked pdcawley++'s weekly Perl 6 updates, but didn't grok half of what went on (mostly Parrot-related). 15:57
dj_goku s/post/most/ 15:58
masak: hey!
timotimo maybe i should link the benchmarks i did yesterday 15:59
masak dj_goku: we may be occasionally incomprehensible, but we're also very friendly. let us know if/how we can help. 16:00
16:00 dayangkun joined
timotimo there we go. 16:00
dj_goku masak: thanks! I have to think of something to write or some interesting place in p6 world to work on. 16:03
masak it appears I simply can't build a rakudo-moar that's old enough *not* to have the Grammar::Debugger problem. 16:04
quick poll: has *anyone* used Grammar::Debugger on Rakudo Moar, and it worked?
timotimo i always used either Rakudo::Debugger or Grammar::Tracer 16:06
masak huh. 16:08
star: use Grammar::Debugger; grammar G { regex TOP { hi } }; G.parse("hi") 16:14
camelia star-m 2014.04: OUTPUT«TOP␤> r run (until breakpoint, if any)␤ <enter> single step␤ rf run until a match fails␤ r <name> run until rule <name> is reached␤ bp add <name> add a rule name breakpoint␤ bp list …»
..star-p 2014.04: OUTPUT«TOP␤> r run (until breakpoint, if any)␤ <enter> single step␤ rf run until a match fails␤ r <name> run until rule <name> is reached␤ bp add <name> add a rule name breakpoint␤ bp list …»
masak oh, right. that's the unmodded version. it has a prompt in the way. 16:15
timotimo it gets fed the lines :)
m: say lines
camelia rakudo-moar 166bf3: OUTPUT«There were three men came out of the West Their fortunes for to try And these three men made a solemn vow John Barleycorn must die They've ploughed, they've sewn, they've harrowed him in Threw clouds upon his head And these three men made a solemn vow Joh…»
16:18 thou joined
masak m: module Foo { my class C is Mu is Metamodel::GrammarHOW { has $!x; method find_method($obj, $name) { return callsame if $name eq any <parse CREATE BUILD Bool defined MATCH>; -> $c, |args { self.y($name) } }; method y($) { $!x = 1 }; method publish_method_cache($) {} }; my module EXPORTHOW { }; EXPORTHOW::<grammar> = C }; import Foo; grammar G { regex TOP { hi } }; G.parse("hi"); say "alive" 16:19
camelia rakudo-moar 166bf3: OUTPUT«alive␤»
masak hm.
timotimo hmm. was stage mast always this fast? 13 seconds compared to 34 seconds stage parse
that's pretty good
m: say "that's roughly {20551 / 34} lines per second parsed (as well as objects and ASTs created)" 16:22
camelia rakudo-moar 166bf3: OUTPUT«that's roughly 604.441176 lines per second parsed (as well as objects and ASTs created)␤»
dj_goku should make test on rakudo, jvm, nqp have any failures? 16:23
I am building Bajor. 16:24
timotimo "make test" should usually not
masak am I importing things right above? 16:25
16:25 zakharyas joined
FROGGS dj_goku: there should be no failure on all backends for nqp's tests and rakudo's tests 16:29
dj_goku: though, I've seen a fail for a file test on nqp@parrot today 16:30
dj_goku alright once it finishes I'll pastebin the output. 16:34
masak star: my $*IN = role { method get() { "" } }; use Grammar::Debugger; grammar G { regex TOP { hi } }; G.parse("hi") 16:35
camelia star-p 2014.04: OUTPUT«TOP␤> Cannot modify an immutable value␤ in block at /home/p6eval/star-2014.04/lib/parrot/6.1.0/languages/perl6/lib/Grammar/Debugger.pm:77␤ in block at /home/p6eval/star-2014.04/lib/parrot/6.1.0/languages/perl6/lib/Grammar/Debugger.pm:75␤ i…»
..star-m 2014.04: OUTPUT«TOP␤> No such method 'STORE' for invocant of type 'Bool'␤ in block at /home/p6eval/star-2014.04/languages/perl6/lib/Grammar/Debugger.pm:77␤ in block at /home/p6eval/star-2014.04/languages/perl6/lib/Grammar/Debugger.pm:75␤ in method interve…»
masak ha!
masak submits rakudobug 16:36
16:37 hoverboard left
FROGGS dj_goku++ 16:37
16:38 zakharyas left
masak interesting, I thought this was a moar-only problem. but that's the same issue manifesting slightly differently on two VMs. 16:39
ok, doing a bisect using parrot as a backend. 16:40
16:40 zakharyas joined
FROGGS :/ 16:42
16:46 zakharyas left 16:47 zakharyas joined 16:49 Ven left 16:50 denis_boyun_ joined 16:51 ajr_ left
masak heh. I had half-forgotten how slow Rakudo-Parrot is to build. 16:59
16:59 bjz joined
timotimo i feel your pain :\ 17:00
gtodd slow but thorough :) 17:01
timotimo its feet have been nailed in place 17:02
17:03 kaleem joined
gtodd hmm wasn't there a project once upon a time called rakudo-nodejs ? to make rakudo-perl6 run in or on ES/JS ? 17:03
17:03 FROGGS left, zakharyas left
gtodd oh maybe it was rakudo-js ... 17:04
masak gtodd: there is a project to give Rakudo a JavaScript backend. haven't heard from pmurias lately, though...
timotimo yes, pmurias has been working on that
gtodd yeah found it sorry I thought it was some kind of node thing
timotimo it currently does target node.js 17:05
gtodd :-) I just wanna takke look at it I don't care if it works :-)
17:05 PerlJam left
timotimo there's also perlito that can translate (among others) perl6 to js 17:06
17:07 PerlJam joined
gtodd right ... I'm assuming eventually rakudo will become the main way to program for the jvm .net and JS ;-) 17:07
oh and parrot moar ... 17:09
timotimo haha
scala is sort of eating our lunch on the jvm side
17:09 FROGGS joined
masak how so? 17:10
FROGGS jnthn: in case you are there: I'd like to talk about v5 and the nqp-code/QAST mix and how well it copes with panda... 17:11
gtodd after the whole world is using it to simplify development and save neuronal/synaptic effort there will be the big reveal ... "you are all using perl"
FROGGS it is like a can of worms on its own
timotimo masak: it seems to me that scala is being marketed (and accepted) as a java substitute for the jvm
gtodd timotimo: scala makes it possible to use java without feeling like you're ... using java?
timotimo that's right 17:12
gtodd timotimo: so rakudo/perl6 can do the same ... and second mouse gets the cheese :-) 17:13
timotimo i feel like rakudo will feel like a foreign body on the jvm ecosystem for a long time unless we integrate much deeper 17:15
our serialization context stuff is quite weird to the jvm, afaict
17:15 bjz left, itz left 17:16 bjz joined 17:19 xenoterracide_ joined 17:20 bjz left 17:22 Rotwang left 17:27 hoverboard joined
masak *sigh* 17:37
Grammar::Debugger fails for a Rakudo Parrot built from 2012-08-31.
going back one more year, from when Grammar::Debugger was created. 17:38
FROGGS O.o 17:43
17:48 mr-foobar joined 17:49 kaleem left
masak gives up the bisect, due to lack of a 'good' endpoint 17:49
mr-foobar just thinking out loud, does perl6 provide internal DSL's like ruby but with more syntax flexibility or does perl6 make external DSL's like make easier ? 17:50
masak both :) 17:53
colomon what masak said.
since grammars can process entirely different files or how the current source code is parsed. 17:54
mr-foobar can the external dsl access perl6's compiler state like globals, lexicals, caller .... ? 17:55
basically I can have an external DSL for card games but access perl6's shuffle 17:56
17:57 denis_boyun_ left
FROGGS I'd answer yes 17:59
masak mr-foobar: mixing Perl 6 itself with external DSLs is basically the high goal of slangs. 18:00
mr-foobar: and yes, lexical access (both ways) is a really big part of that.
mr-foobar: for example, I'd like a SQL slang that allows me to interpolate variables from my program, but in such a way that it escapes them along the way, keeping me safe from injection attacks. 18:01
FROGGS and that it complains at compile time about typos in SQL
masak mr-foobar: similarly, I might want the SQL slang to contain callbacks into Perl 6 code, just like regexes can. in that case, I want the variables and values from the query itself to be visible from within the callback. 18:02
mr-foobar masak: neat ! I found this www.chrisseaton.com/katahdin/ while googling for peg grammars.
I hate the fact that I can't use perl6 grammar as a standalone like lex :( 18:03
FROGGS: you the perl6 to js guy ? 18:05
FROGGS mr-foobar: no, that was pmurias
I'm doing a Perl 5 slang
masak mr-foobar: if you want Perl 6 to act like a tokenizer, create a big honking protoregex called token, and overload it with all the multis you can think of. and then `regex TOP { ^ <token>* $ }` -- done! 18:07
mr-foobar masak: err ... not exactly I'm using nodejs(I still write perl:) these days, and I wanted to write a flexible pre-processor of sorts. perl6 rule engine would have been a great alternate for peg (what most current implmns use) 18:09
mr-foobar mentally does every $lang <-> perl translation to grok 18:10
FROGGS jnthn: does that seems sensible? I'd need it to bind to $*MAIN in sub EXPORT of a slang written in P6: gist.github.com/FROGGS/100079bd927d239e8ab2
18:11 dmol joined
mr-foobar masak: the parser thing can be a part of the build system, independent of any other stuff 18:11
FROGGS ... use COBOL; # P6opaque: no such attribute '$!from' 18:12
so I am crossing the NQPCursor/Cursor+P6opaque barrier here 18:13
18:14 Rotwang joined
colomon timotimo: cairo bindings? he said with great interest 18:18
timotimo colomon: i can already have filled rectangles outputted to a png file!
are you excite yet? ;)
FROGGS rectangles \o/ 18:20
stuffed delicious rectangles \o/
timotimo colomon: got a use case i could work towards?
FROGGS jnthn: I think we "just" need to high-/lowlevelize cursors when calling a foreign statementlist (its input and output) 18:24
jnthn: so, is it just about a slightly modified method LANG? 18:27
18:28 zakharyas joined
colomon timotimo: not really 18:31
18:34 adu joined
timotimo in the future i may also want to bind GtkSourceView 18:35
18:35 xenoterracide__ joined 18:37 zakharyas left 18:38 xenoterracide_ left 18:47 molaf joined 18:49 zakharyas joined 18:56 ivanshmakov left 19:02 ivanshmakov joined 19:03 adu left, darutoko left
xfix r-p: my $var = 42; say $var[0]; 19:09
camelia rakudo-parrot 166bf3: OUTPUT«42␤»
xfix r-p: say 42[0]; 19:10
camelia rakudo-parrot 166bf3: OUTPUT«42␤»
lizmat r-p: my $var = 42; say $var[1];
camelia rakudo-parrot 166bf3: OUTPUT«Index out of range. Is: 1, should be in 0..0␤ in method gist at gen/parrot/CORE.setting:12836␤ in method gist at gen/parrot/CORE.setting:1062␤ in sub say at gen/parrot/CORE.setting:13758␤ in sub say at gen/parrot/CORE.setting:13755␤ in blo…»
lizmat any scalar can be considered a 1-element array (in simple terms)
m: my $a = 42; say $a.elems 19:11
camelia rakudo-moar 166bf3: OUTPUT«1␤»
xfix I'm reading thru PHP fractal page.
Yes, I know that in Perl 6 everything is a list, but it's still interesting.
lizmat xfix: no, it is not a list, but can be accesses as a on-element one
*accessed
xfix Ok, more like tuple, but still. 19:12
masak more like it intentionally confuses items and one-element lists in some situations. 19:15
19:18 hoverboard left 19:30 sftp_ joined 19:32 sftp left, sftp_ is now known as sftp 19:34 zakharyas left 19:42 prevost joined 19:46 dwarring joined 19:49 thou left
dalek ast: bee77ec | (David Warring [email@hidden.address] | integration/advent2010-day22.t:
adding 2010 advent day 22
19:52
lizmat masak: just looking at github.com/lizmat and noted that under "popular repositories" it says "rakudo\nRakudo Perl - Perl 6 on Parrot" 20:09
surely that is outdated?
20:13 aboutGod joined 20:18 aboutGod left 20:19 mr-foobar left
masak well, it's not wrong, but it's incomplete :) 20:21
20:21 woolfy left
masak it looks right on this page: github.com/rakudo/rakudo 20:21
20:24 woolfy joined 20:26 thou joined
FROGGS lizmat: just update/delete your fork: github.com/lizmat/rakudo 20:27
20:28 denis_boyun joined 20:29 Rotwang left
lizmat FROGGS: aha... :-) from the pre-commit bit days 20:29
FROGGS must be, yeah :o) 20:30
masak FROGGS++ # mystery resolved 20:31
FROGGS *g*
lizmat *phew* for a moment I thought I had removed myself completely: github.com//lizmat 20:32
20:32 breinbaa1 left
FROGGS hehe 20:32
masak we would miss you terribly 20:33
<3
FROGGS we would :o)
lizmat would miss you all too :-) 20:34
FROGGS *g*
20:35 breinbaas joined, bjz joined, spider-mario left 20:36 rindolf joined 20:41 bjz left
dj_goku paste.scsys.co.uk/384379 20:43
rakudo bajor failed make test
FROGGS I've never seen rakudo-jvm failing the sanity tests O.o 20:45
dj_goku: can you have a look at the readme? there is something about the memory limit for the jvm backend 20:46
"If you get an out of memory error building rakudo on the JVM, you may
need to modify your NQP runner to limit memory use. e.g. edit the
nqp-j / nqp-j.bat executable (found wherever you installed to, or in the
`install/bin` directory) to include `-Xms500m -Xmx2g` as options passed to java."
dj_goku well it just says when building rakudo not testing.
FROGGS yeah, can you still test that? 20:47
otherwise run such a test directly, so we see some sort of error message?
dj_goku so do I need to rebuild rakudo? 20:48
or can I just run make test again?
FROGGS just edit the nqp-j file (the one from your install/bin/ directory), and run make test again
no need to rebuild 20:49
20:49 kaare_ left
dj_goku ok, I change exec java -Xm512m to exec java -Xmx2048m -Xms256m 20:49
err
exec java -Xmx512m 20:50
FROGGS k
dj_goku uhhh 20:51
FROGGS hmm?
dj_goku when I manually ran 02 it passed test...
FROGGS but fails under `make test`?
dj_goku same with 03..
yes
I copy and pasted the command 20:52
/Users/dj_goku/perl5/perlbrew/perls/perl-5.18.2/bin/perl t/harness --jvm t/01-sanity/03-op-logic.t
20:52 Alula left
FROGGS ahh, it runs the eval-server 20:53
20:53 Alula joined
dj_goku sorry? 20:54
FROGGS for the jvm backend it starts a server, and then it evals the test files instead of starting a jvm instance every time 20:55
it is meant to reduce the test time
timotimo reduces it to a fraction of the time it would take without
FROGGS and it seems as if th eval-server on your boxed crashed after the first test
timotimo the eval server is kinda fiddly :( 20:56
FROGGS spectests without the eval server take about 2.8 hours on my box
and perhaps like 30 minutes with the eval server, dunno exactly how much 20:57
timotimo: I know... I tried to debug it, but that is not very easy when it only crashes after S12 (after 20mins)
timotimo yes ;( 20:58
dj_goku so how can I help? 20:59
so are sanity checks what does it do?
passed all the tests when I ran it with a for loop: paste.scsys.co.uk/384398 21:02
21:02 xenoterracide__ left 21:03 xenoterracide joined
FROGGS dj_goku: I don't know how to debug that (if that was the question) 21:04
I have not much experience with java/jvm 21:05
21:06 SevenWolf joined
dj_goku so should I stick with moar? 21:06
file a bug? 21:07
FROGGS I stick to moar, yes
you can file a bug, but I fear that the information we have are not enough that it would be helpful 21:08
gnight
dj_goku night
21:11 guru joined 21:12 guru is now known as Guest1536
timotimo gnite froggs 21:12
21:12 Guest1536 is now known as ajr_
timotimo dj_goku: what kind of programming stuff do you usually do? 21:12
it's generally nice just to have people explore different use cases for perl 6 that haven't been tried much in the past 21:13
for example, we only just got a very simple gui toolkit binding for gtk3
dj_goku well I just switched jobs, so am not just learning python. Was writing perl5 for 2 years. 21:14
Most ETL type processes.
timotimo not familiar with that term
dj_goku But one thing that has peaked my interest as of late is web dev and threaded/event based programming.
Extract, Transform and Load 21:15
timotimo oh?
dj_goku So take a spreadsheet, do some calculations and load to a database
but spreadsheet can be a number of inputs. 21:16
21:16 berekuk joined
timotimo ah, okay 21:16
we're decent at that, though we do not have excel writing/reading libraries yet 21:17
dj_goku I wouldn't mind looking into writing something like (pandas) python tool for reading/writing excel.
I don't think we will switch to a different language. Pandas is very awesome for ETL. 21:18
timotimo i heard good things about pandas, but i haven't done anything with it yet, or looked at the api itself 21:22
dj_goku having something like that in perl would be awesome! 21:24
I have only been using python for around 2 months and still a few things I don't like and miss from perl. 21:25
One thing super nice with Pandas is no need to have excel installed it can read it somehow. 21:26
timotimo yeah of course
the file format is pretty much understood
libreoffice can read and write MS office documents, too 21:27
dj_goku ahh didn't know that.
when I looked at perl modules they seemed lacking.
so I never really looked at them.
lizmat there are Perl 5 modules that can read/write Excel sheets 21:29
metacpan.org/search?q=Excel
21:34 prevost left
dj_goku timotimo: but really I have no idea what I want to write in p6. 21:34
21:35 pippo joined
timotimo i feel that way sometimes, too 21:35
fortunately, there's so much to improve on both rakudo and moarvm that i can always find something to do
pippo p6: my @a; @a.push: $("one,two,three".split(',')); say @a[0]; 21:38
camelia rakudo-parrot 166bf3, niecza v24-109-g48a8de3: OUTPUT«one two three␤»
..rakudo-{jvm,moar} 166bf3: OUTPUT«␤»
timotimo oh, that's not supposed to be that way!
p6: my @a; @a.push: $("one,two,three".split(',')); say @a.perl;
camelia niecza v24-109-g48a8de3: OUTPUT«[["one", "two", "three"]].list␤»
..rakudo-{jvm,moar} 166bf3: OUTPUT«Array.new(().list.item)␤»
..rakudo-parrot 166bf3: OUTPUT«Array.new(("one", "two", "three").list.item)␤»
timotimo is the single-parameter candidate for push b0rked and the spec tests didn't find it? 21:39
pippo timotimo: It was working some time ago but now not. FROGGS suggested to bissect. Are there any instructions on how to do bissection? I volunteer... :-) 21:40
jnthn evening, #perl6 21:42
pippo o/ jnthn
timotimo ohai jnthn
just at the right time :)
jnthn oh no 21:44
jnthn warns timo that he the whole evening with nøgne 21:45
dj_goku hmm: paste.scsys.co.uk/384432 getting a make write error.
Ulti BTW there was some discussion about when Grammar Debug was last working I used it on MoarVM only a week ago
it worked well enough to debug :S
pippo p6: my @a; @a.push: $(<one two three>); say @a[0]; 21:46
camelia rakudo-{parrot,jvm,moar} 166bf3, niecza v24-109-g48a8de3: OUTPUT«one two three␤» 21:47
dalek kudo/nom: 8518112 | (Elizabeth Mattijsen)++ | / (11 files):
Clean out terms.pm

Basically, move code for %*ENV, @*INC, $*ARGFILES into separate file (as I feel these may become require a class of their own in the future). Move other PROCESS::<*> variables into a separate file. Adjust Makefiles accordingly. This should make it easier to adapt things in the future.
21:52
pippo p6: my @a; @a.push: $(("one,two,three".split(',')).push()); say @a[0]; 22:00
camelia rakudo-{parrot,jvm,moar} 166bf3, niecza v24-109-g48a8de3: OUTPUT«one two three␤»
pippo m: "one,two,three".split(',').WHAT 22:01
camelia ( no output )
pippo m: say "one,two,three".split(',').WHAT 22:02
camelia rakudo-moar 166bf3: OUTPUT«(List)␤»
pippo m: say "one,two,three".split(',').push().WHAT
camelia rakudo-moar 166bf3: OUTPUT«(List)␤»
jnthn sees he needs to look at Grammar::Debugger... :) 22:05
pippo jnthn: and perhaps also at this vv :-) 22:07
masak jnthn: I'm still not sure what happened there.
pippo p6: my @a; @a.push: $("one,two,three".split(',')); say @a[0];
camelia rakudo-parrot 166bf3, niecza v24-109-g48a8de3: OUTPUT«one two three␤»
..rakudo-{jvm,moar} 166bf3: OUTPUT«␤»
masak jnthn: note Ulti's assertion above that it worked only a week ago. and my data that it *never* worked.
jnthn masak: OK. Was a GitHub issue filed on it? 22:08
masak jnthn: I'm not sure what's going on, to be honest. but it's fairly consistent, even on camelia.
jnthn: no, I filed a rakudobug.
jnthn ah...
masak jnthn: rt.perl.org/Ticket/Display.html?id=121966
jnthn: because the error is so weird I figure it's not the module's fault.
jnthn Well, could equally be the module no longer following some MOP detail that changed...
It was one of the very first MOP modules ever. 22:09
Like, #2, after Grammar::Tracer.
it may be a Rakudo issue, but it may be I did an evil cheat in the module too :)
22:10 BenGoldberg joined
masak right. 22:10
jnthn I won't get to it tonight.
dalek kudo/nom: 6f40972 | (Elizabeth Mattijsen)++ | src/core/ (38 files):
Make sure we don't do TAB's in core files
pippo good night #perl6 22:11
22:11 pippo left
jnthn lizmat++ # tabocide 22:12
dj_goku so even though I got the make write error. I am still able to pop into repl mode and play with perl6
BenGoldberg What am I doing wrong here? :
p: say grep { True }, 5, 7, 9
camelia rakudo-parrot 166bf3: OUTPUT«5 7 9␤»
BenGoldberg Hmm... nevermind
p: say grep { True }, 5, 7 ... 9
camelia rakudo-parrot 166bf3: OUTPUT«␤»
BenGoldberg That was it...
masak BenGoldberg: precedence.
jnthn BenGoldberg: Precdence?
lizmat BenGoldberg: my guess is that somehow the code is eaten by ...
masak p: say grep { True }, (5, 7 ... 9)
camelia rakudo-parrot 166bf3: OUTPUT«5 7 9␤»
BenGoldberg Ahh, thanks. 22:13
masak BenGoldberg: ... is fairly low.
BenGoldberg Ok
jnthn ^^^ is high precedence, by contrast
masak *groan*
timotimo %) 22:14
Ulti ahhh might have been Grammar Tracer I used... 22:16
rather than the interactive debug 22:17
masak ah.
Ulti I dont recall
masak that would explain things, perhaps. and restore us to the same universe again.
Ulti heh
where we can both not be wrong :)
dj_goku should I be working about: make: write error 22:18
BenGoldberg m: sub primes( $largest? = Inf ) {my @s;my @p;my $p = 3;my $q = $p * $p;my $cnt = 0;++$largest unless $largest % 2;my $test = sqrt($largest);2, 3, grep -> $n {if ( shift @s ) -> @stepsizes {push @s[ $_ ], $_ for @stepsizes;False;} elsif ( $n < $q ) {push @p, $n if $cnt++ <= $test;True;} else {--$p;push @s[ $p ], $p;$p = shift @p;$q = $p * $p;False;}}, ( 5, 7 ... $largest );}; say primes 999;
camelia rakudo-moar 166bf3: OUTPUT«2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 3…»
22:19 dmol left
lizmat dj_goku: if you are on OS X, don't worry 22:19
it appears to be a bug in gmake that is tickled by rakudo
jnthn would really like to find a workaround for that 22:20
It keeps biting people
It's not our fault in any way, but still...it'll bite us until this versin of OS X with a fualty gmake goes away :/ 22:21
lizmat this doesn't bode well: gnu-make.2324884.n4.nabble.com/Segf...d2409.html 22:26
I still have make 3.81
dalek kudo/nom: 7e0673c | (Elizabeth Mattijsen)++ | / (5 files):
Move time to Instant

This concludes the existence of terms.pm
22:30
masak 'night, #perl6 22:31
lizmat gnight, masak 22:32
timotimo gnite masak
22:36 xenoterracide left
lizmat masak: medium.com/p/2a7af4788b10 (Python 3 can revive Python) 22:36
nice pointers for Perl 6 :-)
dalek kudo/nom: aeb3194 | (Elizabeth Mattijsen)++ | src/core/VM.pm:
Remove superfluous code
22:37
jnthn sleep...maybe some patches tomorrow :) 22:45
(after teaching)
'night
22:46 BenGoldberg left 22:47 dayangkun left 22:48 dayangkun joined
lizmat night jnthn 22:48
timotimo gnite jnthn
dalek kudo/nom: b62552d | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Change to more readable PROCESS::<$FOO> format
22:49
lizmat also sleep, so gnight #perl6!
timotimo ginte lizmat :) 22:51
22:52 denis_boyun left 23:10 BenGoldberg joined 23:44 virtualsue left 23:46 [Sno] left 23:51 xragnar left 23:55 xragnar joined