»ö« 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«fooFalse» | ||
lizmat | m: given "foo" { say .say } | ||
camelia | rakudo-moar 166bf3: OUTPUT«fooTrue» | ||
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 wordat /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/DZgMp9wbktUndeclared 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«TrueTrue» | ||
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|140127522782432id2: 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/7xYuakzAvKMalformed radix numberat /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
|