»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! | feather will shut down permanently on 2015-03-31 Set by jnthn on 28 February 2015. |
|||
00:00
ChanServ sets mode: +v camelia
|
|||
tony-o | m: my class H { has Int $.y = 5; method succ { H.new(y => $.y+1); method pred { H.new(y => $.y -1); }; method gist { $.y; }; }; say H.new ... *.y > 10; | 00:04 | |
camelia | rakudo-moar 322d01: OUTPUT«5===SORRY!5=== Error while compiling /tmp/mZzLgtNLCAMissing blockat /tmp/mZzLgtNLCA:1------> 3ist { $.y; }; }; say H.new ... *.y > 10;7⏏5<EOL>» | ||
tony-o | m: my class H { has Int $.y = 5; method succ { H.new(y => $.y+1); }; method pred { H.new(y => $.y -1); }; method gist { $.y; }; }; say H.new ... *.y > 10; | ||
camelia | rakudo-moar 322d01: OUTPUT«Code object coerced to string (please use .gist or .perl to do that) in block <unit> at /tmp/fX6DhFYPZq:15 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -…» | ||
00:13
telex left,
mephinet left,
erdic left
00:14
telex joined
00:15
erdic joined
00:16
mephinet joined
00:22
aborazmeh joined,
aborazmeh left,
aborazmeh joined
00:24
eli-se left
00:26
vendethiel joined
|
|||
TimToady | m: my class H { has $.y = 5; method succ { H.new(y => $.y + 1) }; method pred { H.new(y => $.y - 1) }; method gist { " $.y " } }; .say for H.new ... *.y > 10; | 00:27 | |
camelia | rakudo-moar e81f47: OUTPUT« 5  6  7  8  9  10  11 » | ||
00:32
Sqirrel left
00:35
yogan left
00:38
espadrine left,
yogan joined
00:44
Sqirrel joined
00:47
vendethiel left
00:48
laouji joined
01:00
noganex left
01:02
muraiki joined,
aborazmeh left
|
|||
awwaiid | .elems, really? not .length, .size, .count, .len, .howmanydamnit? | 01:02 | |
01:04
vendethiel joined
|
|||
muraiki | :n | 01:07 | |
awwaiid | what's that? | 01:18 | |
dalek | kudo-star-daily: c6f2937 | coke++ | log/ (2 files): today (automated commit) |
01:21 | |
01:21
jack_rabbit joined,
jack_rabbit is now known as Guest56551
01:25
vendethiel left
01:28
Zoffix joined
01:30
vendethiel joined
|
|||
tony-o | m: my class H { has Int $.y = 5; method succ { H.new(y => $.y+1); }; method pred { H.new(y => $.y -1); }; method gist { "$.y"; }; }; say H.new ... *.y > 10; | 01:32 | |
camelia | rakudo-moar e81f47: OUTPUT«5 6 7 8 9 10 11» | ||
tony-o | m: my class H { has Int $.y = 5; method succ { H.new(y => $.y+1); }; method pred { H.new(y => $.y -1); }; method gist { "$.y"; }; }; say (H.new ... *.y > 10):n; | ||
camelia | rakudo-moar e81f47: OUTPUT«5===SORRY!5=== Error while compiling /tmp/dvHOoQAqdKYou can't adverb thatat /tmp/dvHOoQAqdK:1------> 3 "$.y"; }; }; say (H.new ... *.y > 10):n7⏏5; expecting any of: pair value» | ||
tony-o | m: my class H { has Int $.y = 5; method succ { H.new(y => $.y+1); }; method pred { H.new(y => $.y -1); }; method gist { "$.y"; }; }; say (H.new ... *.y > 10).elems; | ||
camelia | rakudo-moar e81f47: OUTPUT«7» | ||
01:32
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
tony-o | shouldn't that just go on forever? | 01:33 | |
01:38
Sqirrel left
|
|||
TimToady | no, it's an inequality | 01:44 | |
01:45
ilbot3 left
01:47
ilbot3 joined
|
|||
TimToady | for intuited sequences with an endpoint of the same type, we can rewrite the end matcher to avoid all these accidental infinite sequences, I think | 01:48 | |
01:50
Sqirrel joined
|
|||
rjbs is now officially soliciting questions with which to ambush $Larry at YAPC. Nobody tell him, okay? -- github.com/rjbs/QA-LarryWall/ | 01:50 | ||
TimToady: and that goes double for you | |||
Zoffix | :) | 01:52 | |
01:53
vendethiel left
|
|||
awwaiid | signal(Signal::SIGINT).tap: {...} # this is handled async somehow? (using moarvm) . I'm porting my command line music player. I want it so that one ^C goes to the next song, and a double-^C exits. | 01:57 | |
[Coke] | ... but after a small delay it resets? | 01:58 | |
01:59
yeahnoob joined
|
|||
awwaiid | gist.github.com/awwaiid/fc6e88ff1ecd846bc438 | 01:59 | |
I'm trying to force it to work the way I want with a global var -- but like the sleep itself doesn't seem to happen (the next song immediately starts playing) | |||
01:59
aborazmeh left
|
|||
awwaiid | I can provide the whole script if you like | 02:00 | |
rjbs | i/win 33 | ||
awwaiid | gist.github.com/awwaiid/c56db01c9deb24d1a8ed # whole polly6 script | 02:02 | |
perl6 is a difficult language, in that it is almost, but not quite, entirely unlike all the others in subtle and profound ways | 02:04 | ||
@songs .= pick(*) if $shuffle; # I find this amusing for example | 02:07 | ||
oh well, I'm off for the night. Happy holidays (I say, since Christmas clearly approaches) | 02:10 | ||
02:11
uvb joined
|
|||
timotimo | I couldn't fall asleep, so I hacked up a litle present for y'all | 02:21 | |
nqp-m -e 'say(nqp::querycodeinfo(&say)<filename>); say(nqp::querycodeinfo(&say)<line_number>)' | |||
gen/moar/stage2/NQPCORE.setting | |||
687 | |||
what do the people think? | |||
this is something i've been desiring for at least a year | 02:22 | ||
now i just don't know exactly how to get at the MVMCode underneath a Routine etc | 02:24 | ||
timo@schmetterling ~/p/rakudo (nom) [1]> perl6 -e 'say nqp::querycodeinfo(nqp::getattr(&say, Code, \'$!do\'))' | 02:25 | ||
filename => src/gen/m-CORE.setting, line_number => 18802 | |||
i'd like to also find the very last line number, too. and the code needs to be refactored a bit more, too | 02:28 | ||
now ... how do we find line numbers corresponding to a whole class definition body ... | 02:29 | ||
02:31
muraiki left
02:32
noganex joined
02:40
Guest56551 left,
Guest56551 joined
02:43
Guest56551 left
02:45
Guest73598 joined
02:46
Guest73598 left,
jack_rabbit_ joined,
jack_rabbit_ left
02:47
ASQRD left,
jack_rabbit_ joined
|
|||
TimToady | timotimo++ | 02:47 | |
02:49
jack_rabbit_ left
|
|||
adu | timotimo++ | 03:00 | |
timotimo: is that like C's __FILE__ and __LINE__? | 03:01 | ||
you'd have to get the parent stack frame, how would that work cross-vm? | 03:02 | ||
03:04
colomon left
03:06
colomon joined
|
|||
adu | I'm starting to think that knowing C and assembly might actually be a disadvantage in solving this | 03:06 | |
03:19
BenGoldberg joined,
dj_goku left
03:42
Sqirrel left
03:44
Sqirrel joined
03:45
laouji left
|
|||
labster | ls | 03:46 | |
oh, not a terminal :o) | 03:47 | ||
TimToady | well, not at a shell prompt, anyway... | ||
03:48
petercommand left,
petercommand joined
|
|||
labster | Oddly I actually am doing Perl 6 right now. I was just curious how much would break if I compiled rakudo when "0".Bool ~~ False | 03:49 | |
adu | lol | 03:50 | |
TimToady guesses, not much | 03:51 | ||
labster | I mean "0".Bool ~~ True | ||
TimToady still guesses not much :) | |||
03:51
davido_ left
|
|||
TimToady | a spec test, we would hope :) | 03:51 | |
labster | One would hope. | ||
Probably not. There's the specs issue open about making "0" truthy, which I have mixed feelings about. | 03:52 | ||
I've hit the issue on both sides, though I suspect it will always be a tricky issue. And I've had someone ask for a new behavior for it at a YAPC. | 03:54 | ||
03:54
davido_ joined
|
|||
labster | of course, if moar isn't going to build... | 04:01 | |
04:01
laouji joined
|
|||
BenGoldberg | m: say so 0 | 04:04 | |
camelia | rakudo-moar e81f47: OUTPUT«False» | ||
BenGoldberg | m: say so "0" | ||
camelia | rakudo-moar e81f47: OUTPUT«False» | ||
BenGoldberg | m: say so "0 but true" | ||
camelia | rakudo-moar e81f47: OUTPUT«True» | ||
BenGoldberg | m: say so "0e0" | ||
camelia | rakudo-moar e81f47: OUTPUT«True» | ||
BenGoldberg | m: say so 0e0 | ||
camelia | rakudo-moar e81f47: OUTPUT«False» | ||
labster | m: say so "0.0" | 04:05 | |
camelia | rakudo-moar e81f47: OUTPUT«True» | ||
labster | m: say so 0.0 | ||
camelia | rakudo-moar e81f47: OUTPUT«False» | ||
BenGoldberg | Personally, when I want a truthy value which is numeric zero, I'll use the string "0e0" | ||
(It works in perl5, too) | |||
04:06
Sqirrel left
|
|||
BenGoldberg | The string "0.0" also is truthy in perl5, though it did not previously occur to me to use it. | 04:07 | |
labster | multi method Bool(Str:D:) { nqp::p6bool(nqp::chars($!value) && nqp::isne_s($!value,"0")); } # the results here weren't too surprising. | ||
04:09
ab5tract left
04:16
ab5tract joined
04:18
BenGoldberg left
04:22
spider-mario left
04:25
spider-mario joined,
zacts left
04:54
kaare_ joined
05:00
raiph left
05:09
skids left
|
|||
dalek | ecs: e0d1718 | TimToady++ | S03-operators.pod: deduced iterators can be smarter about endpoints |
05:36 | |
kudo/nom: f8a9af6 | TimToady++ | src/core/operators.pm: make deduced iterators smart re crossing endpoint |
05:37 | ||
05:37
adu left
|
|||
dalek | ast: e0041dd | TimToady++ | / (4 files): revised tests for new sequence iterators |
05:38 | |
05:44
adu joined
|
|||
bartolin | good moring, #perl6 | 05:45 | |
05:45
rindolf joined,
Patterner joined
|
|||
bartolin | m: sub f (Int $n) { $n > 3 ?? "liftoff!" !! $n + 1 }; say 1, &f ... * | 05:45 | |
camelia | rakudo-moar e81f47: OUTPUT«===SORRY!===Type check failed in binding $n; expected 'Int' but got 'Str'» | ||
bartolin | TimToady: while you are at it: do I understand S03 correctly, that this sequence should terminate and not throw? | 05:47 | |
TimToady | looks like an error to me | 05:49 | |
05:49
Psyche^ left
|
|||
bartolin | .oO( from me or from rakudo? ) |
05:49 | |
TimToady | I would expect the binding to fail just as it did | 05:50 | |
bartolin | ahh :-) | ||
TimToady | m: sub f (Int $n) { $n > 3 ?? "liftoff!" !! $n + 1 }; say 1, &f ... Str | 05:51 | |
camelia | rakudo-moar f8a9af: OUTPUT«1 2 3 4 liftoff!» | ||
bartolin | I read design.perl6.org/S03.html#line_1932 otherwise | ||
TimToady | well, it *does* terminate :) | 05:52 | |
bartolin | oh, that sort of termination ... | ||
TimToady | m: say 1,2,4 ... 100 | 05:54 | |
camelia | rakudo-moar f8a9af: OUTPUT«1 2 4 8 16 32 64» | ||
bartolin | there is a (skipped) test for the above in S03-sequence/misc.t. I'm going to change it to throws_like or something. | 05:55 | |
TimToady | m: say 8,-4,2 ... 0.1 | 05:56 | |
camelia | rakudo-moar f8a9af: OUTPUT«8 -4 2 -1 0.5 -0.25 0.125» | ||
06:12
diana_olhovik_ joined
|
|||
dalek | ast: 4e72128 | usev6++ | S03-sequence/misc.t: Fix test for termination of sequence by signature mismatch of generator function |
06:22 | |
06:58
spider-mario left
|
|||
jnthn | morning o/ | 07:02 | |
yoleaux | 8 Apr 2015 21:46Z <FROGGS> jnthn: why dont we use assign_X at all? this makes RT124083 pass and I wonder why we just do not use assign_X... gist.github.com/FROGGS/c98f455874e50d39ff75 | ||
moritz | \o | ||
07:02
zakharyas joined
07:03
_mg_ joined
|
|||
jnthn | FROGGS[mobile]: add_assign_op *does* have a code path where it emits assign_X. But you shouldn't just got emitting it whenever; it forces a taking of a native ref - that is, an allocation - where none is needed. | 07:04 | |
07:04
Ven joined
|
|||
jnthn | *go | 07:04 | |
Anyway, it's the wrong fix. | 07:05 | ||
07:06
RabidGravy joined
07:10
FROGGS joined
07:11
darutoko joined
07:14
brrt joined
07:17
ribasushi left
|
|||
Timbus | m: say so "00" | 07:18 | |
camelia | rakudo-moar f8a9af: OUTPUT«True» | ||
07:18
ribasushi joined
|
|||
moritz | m: say so "OO" | 07:19 | |
camelia | rakudo-moar f8a9af: OUTPUT«True» | ||
Timbus | :0 | 07:20 | |
FROGGS | I think is is just weird that "0" is false... | ||
Timbus | same | ||
FROGGS | I mean, now we have working coercers one can do: MAIN(Int() $bar)... because I want to think that Perl6 should be explicit about these things and not wishy-washy | 07:21 | |
jnthn: yes, I expected so... thing is, the assign_n path is not taken for the examples I tried | 07:22 | ||
07:22
FROGGS[mobile] left
07:34
adu left,
pdcawley joined
|
|||
timotimo | o/ | 07:37 | |
i'm on the pro "make '0' True" side | |||
07:41
mr-foobar left
|
|||
timotimo | also, no clue how to build nqp::querycodeinfo on JVM :\ | 07:42 | |
07:42
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
jnthn | timotimo: Reflection API maybe hsa something | 07:43 | |
timotimo | .tell adu __FILE__ and __LINE__ don't quite compare to querycodeinfo, because we already have $?FILE and $?LINE, and also it doesn't go via the stack at all, so you don't need a stack frame and you don't need to invoke the thing you want info about | 07:45 | |
yoleaux | timotimo: I'll pass your message to adu. | ||
07:46
FROGGS left
|
|||
jnthn | querycodeinfo may be better as getcodelocation | 07:46 | |
To fit better with the existing op set. | 07:47 | ||
07:47
abraxxa joined
|
|||
jnthn | Also please check what nqp::backtrace calls things; I think it's line there, not line_number; either way, consistency would be good. | 07:47 | |
Provided we get those tweaks and it can be made to work on JVM, I think I'm good with it going in. | 07:48 | ||
abraxxa | good morning! | ||
timotimo | no problem; but i also want to add some more info in there | 07:49 | |
07:50
cschwenz joined
|
|||
jnthn | timotimo: Such as? | 07:51 | |
timotimo | obviously, having a Buf of the bytecode itself will be a massive help for ... er ... | ||
:P | |||
07:51
bjz joined
|
|||
timotimo | i've been thinking a lot about how to get a sensible "last line of the function" value from the annotations in the bytecode ... instead of sleeping | 07:52 | |
i was worried that inlining will give line number annotations all over the map, so i can't just take the lowest and highest line number i find | |||
07:52
anaeem1_ joined
|
|||
brrt | timotimo: you're going to write the JIT in p6? :-P | 07:53 | |
that could be totally feasible if you wished it though | |||
timotimo | but now i remember there's also annotations for "start inline" and "end of inline" | ||
it would be interesting for experimentation purposes to be able to have some kind of API - perhaps only meant to be visible via gdb - that'd let you drop in assembly made by gcc for example | 07:54 | ||
or even hand-tuned assembly | |||
to get a good estimation of how performance would be if the jit was better in some way | |||
jnthn | timotimo: But you can never reach inlined things from the outside of the VM | 07:55 | |
And here you're querying code objects | |||
Which are...just there. | 07:56 | ||
timotimo | i think i've miscommunicated | ||
how would you go about making querycodeinfo (or getcodelocation) return not only the first source line of a function, but also the last? | |||
to get a reasonably good estimation of the beginning and end of a function in the source code | 07:57 | ||
i'm expecting the line number annotations in the bytecode aren't perfectly linear | |||
jnthn | In Moar? | 07:58 | |
07:58
koo5 left
|
|||
jnthn | The MVMStaticFrame points to the start of the annotations for the code and the number of them | 07:59 | |
So just go through them | |||
Looking for a maximum. | |||
08:00
bjz left
|
|||
timotimo | that was my first thought; my worry is that the QAST may have contained an inlined small sub | 08:00 | |
jnthn | ah, true | 08:01 | |
Those ain't annotated. | 08:02 | ||
timotimo | not as inlines anyway | ||
but they do have line numbers :) | |||
jnthn | At all by the time we hit the VM | ||
Right, they have that | |||
timotimo | if they have a different filename, that's no problem | ||
otherwise ... yeah | |||
tadzik | good morning #perl6! | ||
jnthn | What do you want it for, ooc? | ||
timotimo | &say.sourcecode.say for example | 08:03 | |
it's not an absolute must | 08:06 | ||
it'd probably be fine to just have "nqp::getcodelocation" and only return filename + line number | |||
jnthn | Yeah, I was thinking it was more going to be used for error reporting | 08:08 | |
timotimo | nah, i think our stack traces are already good enough for that | ||
jnthn | I wasn't thinking of that so much as multi-dispatch failures | 08:09 | |
Or explaining where a failing subset type constraint was | |||
timotimo | oh | ||
that'd also be interesting | |||
dalek | ast: 422f77b | lizmat++ | S32-str/ (2 files): Add basic starts/ends-with tests |
||
jnthn | When you're not actually in the code that you want to point at | ||
timotimo | right | ||
i can see how that'd be useful | 08:10 | ||
i'll clean up the code and push it, but it might be in ~three hours at the earliest, depending on if i can make it work in the next 10 minutes :) | |||
brrt | hmmm interesting thought timotimo | 08:12 | |
is MVMCode a REPR? | |||
timotimo | yes | ||
brrt: i already have the code working, btw | |||
just need to make it prettier | |||
MVMROOT can do multiple to-root things, right? | 08:13 | ||
brrt | otherwise i could see how you could use atkey / bindkey or something like that to ... drop in new jit code as you go along | ||
although.... that has highly tricky properties | |||
brrt is not terribly sure about that | 08:14 | ||
i have seen nested MVMROOT's | |||
jnthn | You can nest them, but each one roots one thing. | 08:15 | |
dalek | kudo/nom: 4cdcaf2 | lizmat++ | t/spectest.data: Add basic starts/ends-with tests |
||
timotimo | OK | 08:16 | |
jnthn | I normally put a sequence of them at the same indentation level to avoid le clutter | ||
nwc10 | I have seen a HP-UX compiler get upset about the textual size that one or two of the MVMROOTs expand to | ||
however, there's other stuff that currently gets in the way of us building on HP-UX | |||
itz | apple's new clang seems a lot faster on interp.c | ||
RabidGravy | yeah to be fair HP-UX compilers seem to get upset if you look at them funny | 08:17 | |
nwc10 | but, given that I have found a better way to deliver freshly baked patches to @jnthn (although mostly it seems to be $jnthn) | ||
maybe I should locate various things | |||
lizmat | itz: is that 10.10.3 ? | ||
itz | yes some 2G update last night | ||
08:18
yvan1 left
|
|||
lizmat | aha! seems I will need to update soonish (like right after the NLPW) | 08:18 | |
timotimo | gist.github.com/timo/c4f0a662957771347a31 brrt, jnthn, does the rooting look correct? | ||
RabidGravy | while we're talking compiler is anyone actively building on FreeBSD? I had problems last time I tried but might go back to it later today | 08:19 | |
timotimo | in this context i may even want to have the blocks be bigger | ||
itz | we are flying out to AMS this evening! | ||
timotimo | actually | ||
itz | RabidGravy: I've had no probs with FreeBSD 10.1/clang or gcc (from pkg) | ||
lizmat | itz: looking forward to seeing you in Utrecht! | ||
itz | yay | ||
brrt | timotimo: what is the e on line 7 | ||
timotimo | gist updated, brrt, jnthn | ||
lizmat | so I implemented substr-eq-at, used it in the core setting | 08:20 | |
timotimo | brrt: i don't see an e on line 7 ... | ||
lizmat | and found myself having switched the parameters around | ||
brrt | it is not REPR(code)->name | ||
*now | |||
lizmat | so I wonder what that means: maybe the "at" should be removed from the name, or the position should be the first parameter ? | ||
timotimo | oh, hah | 08:21 | |
hard line breaks in the terminal | |||
copy-pasted out of less | |||
brrt | bad timo :-) | ||
timotimo | why i didn't copy it out of vim, i have no idea | ||
RabidGravy | I'm getting "probing whether your compiler thinks that it is gcc clang: not found | ||
Can't compile simple gcc probe, so something is badly wrong at build/probe.pm line 93." | |||
timotimo | updated again | 08:22 | |
RabidGravy | which is weird | ||
itz | which version of FreeBSD? | ||
RabidGravy | 8.4-RELEASE-p4 | ||
jnthn | lizmat: Hm, I thought we were going with substr-eq all along... :) | ||
lizmat | well, yeah, maybe that would be best :-) | ||
brrt | ok, i don't get why the result hash is allocated at line 9, then the strings are allocated someway down, and the filename_key is allocated before the result | 08:23 | |
eh *rooted* | |||
itz | hmm guess that's gcc than .. maybe force cc=gcc to MoarVM | ||
jnthn | timotimo: no, it's rong | ||
08:23
diana_olhovik_ left
|
|||
jnthn | MVMObject * result = REPR(BOOTHash)->allocate(tc, STABLE(BOOTHash)); | 08:23 | |
That can be GC'd by | 08:24 | ||
brrt | i'd think you'd want to move the allocation someway down, then root the result, then allocate the strings and rooted | ||
jnthn | MVM_string_ascii_decode_nt(tc, tc->instance->VMString, "file"); | ||
Which allocates | |||
brrt | jnthn - idea for a non-allocating mvmstring decode? | ||
jnthn | uh? | ||
brrt | or maybe a mvmstring-constant-making thingy | ||
timotimo | ah, of course | 08:25 | |
jnthn | That makes no sense, the thing that's allocated *is* the MVMString * | ||
Unless you're asking for a constant/intern pool | |||
brrt | right.... but... what you could do (IF AND ONLY IF IT WOULD BE SAFE) is MVMString lineStr, MVMString keyStr; MVMString_decode_const_to(tc, &keyStr, "line"); | ||
or something like that | 08:26 | ||
that would probably be a pretty lousy idea now that i say it | |||
timotimo | gist updated yet again | ||
JimmyZ | timotimo: s/MVMCode_query_information/MVM_Code_query_information/? | 08:27 | |
timotimo | fwiw, i've wished for a "preprocessor" like thing already that'd create a constant expression that properly describes the whole MVMString at compile-time and only has to put in the right Collectable information | ||
JimmyZ: can do | |||
JimmyZ | or MVM_MVMCode_query_information ? :P | ||
jnthn | JimmyZ: Welll, the REPR name *is MVMCode. | ||
08:27
Sqirrel joined
|
|||
brrt | can we set collectables as noncollectable | 08:28 | |
JimmyZ | anyway, needs prefix MVM_ :) | ||
jnthn | But yeah, the convention is MVM_code_* really | ||
and just call it MVM_code_location | 08:29 | ||
To match the op being getcodelocation | |||
08:29
diana_olhovik_ joined
|
|||
timotimo | OK | 08:30 | |
dalek | kudo/nom: 1a09d24 | lizmat++ | src/core/ (3 files): substr-eq-at -> substr-eq |
||
ast: 78780ee | usev6++ | S05-substitution/subst.t: Add tests for RT #114388 |
08:31 | ||
timotimo | OK, i think i'm about ready to push | 08:32 | |
also, i'm going to be way late | |||
TTYL | |||
(damn, again) | |||
08:34
dakkar joined
|
|||
timotimo | damn you, clock | 08:39 | |
RabidGravy | itz++ # yep that worked (after I figured out the appropriate incantation to get that flag to the moar configure) | 08:41 | |
jnthn | itz, RabidGravy: moar configure patches welcome, if either of you have time :) | 08:42 | |
08:42
FROGGS joined
08:43
cschwenz left
|
|||
[ptc] | I know it's possible to extract the pod from a source code file, however is it possible to extract non-pod text from a source code file? | 08:43 | |
itz | RSN :) | 08:44 | |
08:45
Rounin joined
|
|||
[ptc] | I guess the question is a dumb one (and maybe it's still too early in the morning), however I couldn't work it out... | 08:45 | |
RabidGravy | jnthn, maybe, my problem (in the first instance) was getting rakudobrew to pass the option on to the right thing | 08:46 | |
also I may look at: | |||
> say $*KERNEL; | |||
uname: illegal option -- K | |||
usage: uname [-aimnprsv] | |||
freebsd () | |||
I suspected that may happen when I looked at the Kernel.pm yesterday | 08:47 | ||
itz | I suspect the root cause is that the configure doesn't tell gcc from clang properly | 08:49 | |
dalek | ast: 3c982d5 | usev6++ | S32-exceptions/misc.t: Add test for RT #115276 |
||
itz | I guess clang lies about being gcc :) | 08:50 | |
RabidGravy | yeah "rakudobrew build moar --configure-opts='--moar-option='--cc=gcc''" is a bout of a mouthful | ||
bit, bit of a mouthful | 08:51 | ||
08:54
pecastro joined
|
|||
FROGGS | m: sub MAIN ($, \foo) { } # is that already ticketed? | 08:57 | |
camelia | rakudo-moar 1a09d2: OUTPUT«Usage: /tmp/_heQGgNUFE <Any> <oo> » | ||
jnthn | oo-ps... | 08:58 | |
FROGGS | originally I searched for something funny when the first char is chopped off... but did not find anything :o( | 08:59 | |
09:00
telex left
|
|||
dalek | ast: 14608e6 | TimToady++ | S03-sequence/basic.t: new sequence rules should apply to left values too |
09:01 | |
09:02
telex joined,
rurban_ joined
|
|||
dalek | kudo/nom: 3c94e32 | TimToady++ | src/core/operators.pm: apply endtest skipping intuition to left args too |
09:03 | |
jnthn | .oO( Timsomnia ) |
||
TimToady | been sleeping too much 'cuz I'm sick :) | 09:04 | |
jnthn | Aww | ||
Hope the plague leaves you soon. | |||
TimToady | so I'm kinda on hawaiian time | ||
m: say 1,2,3 ... 1.5 | 09:05 | ||
camelia | rakudo-moar 1a09d2: OUTPUT«1 2 3» | ||
TimToady | that's what I'm fixing here | ||
will now just return 1 | |||
FROGGS | jnthn: so, "my num32 $a; say ++$a" does assign_n, while "my num32 $a = 42e0; say $a" does not | 09:09 | |
jnthn: can you push me in the right direction? | |||
09:10
yvan1 joined
|
|||
jnthn | FROGGS: Well, first of all I think we're code-generating things wrongly and the VM bytecode validator isn't puking when it sees us store a full-width num64 local into a num32 lexical, and vice versa. | 09:10 | |
FROGGS: I was going to tweak that first. | 09:11 | ||
FROGGS: Then we need to make the small-width registers work, implement the extend/truncate ops already in oplist, and teach the QAST -> MAST compiler to track this stuff and emit them as needed. | |||
FROGGS | ahh, I see | 09:12 | |
jnthn | FROGGS: It's a non-small amount of work, which is why I've sorta punted it. Also 'cus it touches many of the same places we need to touch to unscrew unsigned. | 09:13 | |
FROGGS | aye | ||
jnthn | So I'm thinking we may want to tackle them together. | ||
No reason it has to be me who does it all, of course. | |||
FROGGS | yeah | ||
RabidGravy | itz, you still here? | ||
jnthn | Just that it's not a trivial fix somewhere, but rather we need to sort our story out on a few things better. | ||
FROGGS | I think I try to get my hands dirty to understand the problem/fix better | 09:14 | |
jnthn | *nod* | ||
09:14
espadrine joined
|
|||
jnthn | I'd probably start out by fixing the MoarVM code validator in a branch. | 09:14 | |
It'll reject stuff that we sorta-get-away-wiht today. | 09:15 | ||
Unfortunately, we get away with a lot of the int cases because LE. | |||
09:15
tinyblak left
|
|||
FROGGS | exactly | 09:15 | |
jnthn | So while it's bust in some way, it's only num32 that really shows us up. | ||
FROGGS | yeah, that's what I realized yesterday | 09:16 | |
jnthn | (The answer to "why is it bust" is really "I put off doing this stuff") | ||
(Because it wasn't blocking anything) | |||
But now natives are getting more usable generally, with us having native arrays coming together, it's probably about time. :) | |||
itz | RabidGravy: yes I'm schiving off work :) | 09:17 | |
RabidGravy | yay! | ||
are you logged in to a FreeBSD 10.* machine? | 09:18 | ||
itz | I can be easily | ||
RabidGravy | if so what is the difference between uname -r and uname -K ? | ||
-K appeared in 10.0 but is used in Kernel.pm | |||
so no worky on <10.0 | 09:19 | ||
09:20
eli-se joined
|
|||
masak | good antenoon, #perl6 | 09:24 | |
Ven | \o, masak | ||
jnthn | o/ masak | 09:26 | |
09:28
SHODAN left
|
|||
dalek | ast: 48f616e | TimToady++ | S03-sequence/nonnumeric.t: slight preference to include endpoint in direction (when there are arbitrary strings on the left and a matching endpoint type) |
09:28 | |
kudo/nom: 790d0ba | TimToady++ | src/core/operators.pm: arbitrary strings on left of seq are arbitrary So don't retest them, or prefer their ordering to endpoint's. |
09:29 | ||
09:30
SHODAN joined
|
|||
dalek | kudo/nom: cfb8972 | TimToady++ | src/core/operators.pm: typo in last patch |
09:39 | |
09:40
aborazmeh left
09:41
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
nwc10 | does NQP's testing support TODO tests? | 09:43 | |
RabidGravy | just PR'd fix for Kernel.pm on FreeBSD < 10.0 | ||
FROGGS | nwc10: no :o( | 09:44 | |
RabidGravy: and -r is identical to -K? | 09:45 | ||
09:46
tinyblak joined
|
|||
RabidGravy | no, -K is always numeric -r is a "string" but that is the same as what other platforms get for version | 09:46 | |
FROGGS | so -K would just give 10.0 where -r gives 10.0-RELEASE? | 09:47 | |
jnthn | nqp: todo() | ||
09:47
camelia left
|
|||
jnthn | uh... | 09:47 | |
FROGGS | :S | ||
jnthn: you killed camelia! | |||
jnthn questions parentage | 09:48 | ||
09:48
camelia joined
|
|||
RabidGravy | FROGGS, yeah | 09:48 | |
jnthn | Anyway, there is a todo sub in NQP | ||
FROGGS | $ nqp-m -e 'todo("what", 1); ok(2 == 2, "foo")' | ||
ok 1 - foo# TODO what | |||
09:49
yeahnoob left
|
|||
FROGGS | ahh, I just grepped wrongish | 09:49 | |
nwc10: ^^ | |||
camelia | nqp-jvm: OUTPUT«(signal ABRT)*** Error in `java': double free or corruption (!prev): 0x00007ff8c401a8c0 ***» | 09:50 | |
..nqp-moarvm: OUTPUT«Too few positionals passed; expected 2 arguments but got 0 at gen/moar/stage2/NQPCORE.setting:798 (/home/camelia/rakudo-inst-1/share/nqp/lib/NQPCORE.setting.moarvm:todo:0) from /tmp/tmpfile:1 (<ephemeral file>:<mainline>:23) from gen/moar/stage2/NQPHL…» | |||
..nqp-parrot: OUTPUT«Can't exec "./rakudo-inst/bin/nqp-p": No such file or directory at lib/EvalbotExecuter.pm line 188.exec (./rakudo-inst/bin/nqp-p /tmp/tmpfile) failed: No such file or directoryServer error occurred! Closing Link: static.231.60.47.78.clients.your-server.de (Q…» | |||
09:50
ChanServ sets mode: +v camelia
|
|||
FROGGS | uff | 09:50 | |
dalek | kudo/nom: e295748 | (Jonathan Stowe)++ | src/core/Kernel.pm: The -K flag to uname wasn't introduced until FreeBSD 10.0 |
09:51 | |
kudo/nom: c0278ac | FROGGS++ | src/core/Kernel.pm: Merge pull request #404 from jonathanstowe/nom The -K flag to uname wasn't introduced until FreeBSD 10.0 |
|||
FROGGS | RabidGravy++ | ||
brrt | with regards to the small-width-regs some time back | 09:52 | |
that requires JIT work too | |||
simpler work than all the rest, but still | 09:53 | ||
09:55
Ven left
10:04
pdcawley left,
laouji left
|
|||
lizmat | m: say nqp::eqat("foo","foo",-42) # jnthn, is this correct nqp::eqat behaviour, or should we attempt to catch negative indexes at the P6 level? | 10:10 | |
camelia | rakudo-moar 790d0b: OUTPUT«1» | ||
nwc10 | FROGGS: thanks | ||
lizmat | afk again | ||
nwc10 | next "Stupid" question. I can do this: | 10:19 | |
$ ./nqp-p -V | grep parrot::intvalsize | |||
parrot::intvalsize=4 | |||
does anyone happen to know how to do that in NQP code - ie get that size value | |||
(which will be 4 or 8) | |||
moritz | nwc10: maybe nqp::nativecallsizeof(int)? | 10:20 | |
nqp-m: say nqp::nativecallsizeof(int) | |||
camelia | nqp-moarvm: OUTPUT«Confused at line 2, near "say nqp::n" at gen/moar/stage2/NQPHLL.nqp:493 (/home/camelia/rakudo-inst-1/share/nqp/lib/NQPHLL.moarvm:panic:105) from gen/moar/stage2/NQP.nqp:921 (/home/camelia/rakudo-inst-1/share/nqp/lib/nqp.moarvm:comp_unit:872) from gen/…» | ||
nwc10 | no, not that | 10:21 | |
moritz | nqp-m: say(nqp::nativecallsizeof(int)) | ||
camelia | nqp-moarvm: OUTPUT«8» | ||
moritz | not that? | ||
nwc10 | no, the parrot config value | ||
I know that sizeof(int) is 4 on both 32 and 64 bit systems (for all that we support) | |||
moritz | oh | ||
RabidGravy | FROGGS cheers buddy | ||
nwc10 | and, in theory it's possible to configure parrot to use long long for its intval | ||
it looks to be nqp::backendconfig() | 10:22 | ||
dalek | c: 561d1c6 | paultcochrane++ | lib/Type/Str.pod: Add docs for subst-mutate |
||
nwc10 | now I just have to work out which key... | ||
10:22
camelia left
|
|||
psch | eh | 10:22 | |
10:22
cschwenz joined
|
|||
nwc10 | aha | 10:22 | |
./nqp-p -e 'say(nqp::backendconfig(){"intvalsize"})' | |||
psch | nqp-p doesnt work on camelia :/ | 10:23 | |
nwc10: right, backendconfig. i tried here with vmconfig | |||
psch did remeber it was {$something}config... | |||
10:23
camelia joined
10:25
ChanServ sets mode: +v camelia,
grondilu joined
10:26
brrt left
10:27
aborazmeh left
10:28
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
RabidGravy | I suspect Kernel would best be done using the OS native uname rather than repeatedly shelling out to the uname command, but I guess that is better done elsewhere | 10:33 | |
10:37
bjz joined
10:39
Ven joined
10:40
diana_olhovik_ left
|
|||
arnsholt | Wow. I think this is the first time in my life I've actually needed octal numbers in my code | 10:41 | |
moritz | arnsholt: never wrote a 'chmod 0755 $file' ? | 10:44 | |
Ven has only ever done "chmod()" in php code, which accepts 777 and such | 10:45 | ||
itz ignored PBP telling him not to use 0755 | 10:46 | ||
10:47
bjz left
|
|||
eli-se | A guy I once had the misfortune of working with didn't understand file permissions. He was unable to write to a file, so instead he read it into memory, deleted it and then created a new file with the same contents. | 10:47 | |
10:48
aborazmeh left
|
|||
nwc10 | that's silly. obviously you copy the contents to a new name, then delete the old file, then rename it :-) | 10:48 | |
Juerd | eli-se: In many cases that might even be a good thing, if you delete by moving a newly created file over it. | ||
moritz | well, we have folks in the ops teams that think the solution to hanging processes is to write a cron job that kills processes (without investigating the cause of the hang at all) | 10:49 | |
eli-se | No, just get the permissions right in the first place. | ||
Don't create non-writable files. | |||
nwc10 | no, everyone should just log in as root | ||
moritz: but hopefully not *all* the folks in the ops team are like that? | |||
Juerd | rename is atomic, so it helps avoid file corruption to create a new temporary file and then rename it. | ||
eli-se: No, removing write permission can be seen as documentation that an atomic write through rename is preferred. | 10:50 | ||
eli-se | Juerd: which is what every API that opens a file, writes a buffer to it and closes it (i.e. the opposite of slurp) should default to. | 10:51 | |
10:51
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
Juerd | eli-se: I disagree that APIs should take care of this by default because it's very inefficient for large files. | 10:51 | |
eli-se | I disagree. | 10:52 | |
10:52
larion joined,
RabidGravy left
|
|||
moritz | nwc10: most are not, thankfully | 10:53 | |
10:54
bjz joined
10:56
pdcawley joined
10:59
bjz left,
_mg_ left
|
|||
arnsholt | moritz: Not until today =) | 10:59 | |
And it was checking the permissions on a file, rather than chmod, but y'know. Same-same | 11:00 | ||
dalek | p: b5a947f | timotimo++ | / (2 files): bump Moar andthen map the "getcodelocation" op from MoarVM |
11:02 | |
timotimo | i expect somebody will take this and run with it :) | 11:03 | |
moritz | but where? | 11:04 | |
11:08
YUAAA5WE joined,
rurban_ left
|
|||
cschwenz | what changed in camelia between yesterday and today? | 11:13 | |
Wednesday, 8 April 2015 | |||
======================================== | |||
cschwenz 13:46 | |||
p6: say (2..10,<J Q K A> X~ <♡ ♢ ♣ ♠>).pick(5) | |||
camelia 13:46 | |||
rakudo-moar b05c2c: OUTPUT«K♢ A♡ J♡ J♢ 9♣» | |||
camelia | rakudo-moar c0278a: OUTPUT«3♡ ♢ ♣ ♠ 10♡ ♢ ♣ ♠ 5♡ ♢ ♣ ♠ 8♡ ♢ ♣ ♠ 6♡ ♢ ♣ ♠» | ||
cschwenz | Thursday, 9 April 2015 | ||
======================================== | |||
cschwenz 12:09 | |||
p6: say (2..10,<J Q K A> X~ <♡ ♢ ♣ ♠>).pick(5) | |||
camelia | rakudo-moar c0278a: OUTPUT«2♡ ♢ ♣ ♠ J♡ ♢ ♣ ♠ K♡ ♢ ♣ ♠ A♡ ♢ ♣ ♠ 7♡ ♢ ♣ ♠» | ||
cschwenz | camelia 12:09 | ||
rakudo-moar c0278a: OUTPUT«Q♡ ♢ ♣ ♠ 4♡ ♢ ♣ ♠ 3♡ ♢ ♣ ♠ K♡ ♢ ♣ ♠ 7♡ ♢ ♣ ♠» | |||
11:14
tinyblak left
|
|||
FROGGS | range endpoints are treated differently now | 11:15 | |
psch | start points too | ||
although neither makes sense to give the new output, in my understanding | 11:16 | ||
11:16
rindolf left
|
|||
cschwenz | for what it's worth a new build (today) via rakudobrew gives the same result as camelia did on 8-April | 11:16 | |
moritz | didn't the precedence of X~ change to that of ~ ? | 11:17 | |
Ven | moritz: think so | ||
moritz | m: say ((2..10,<J Q K A>) X~ <♡ ♢ ♣ ♠>).pick(5) | ||
camelia | rakudo-moar c0278a: OUTPUT«Q♡ ♢ ♣ ♠ 5♡ ♢ ♣ ♠ K♡ ♢ ♣ ♠ 10♡ ♢ ♣ ♠ 4♡ ♢ ♣ ♠» | ||
moritz | m: say ((2..10,<J Q K A>) X~ <♡ ♢ ♣ ♠>) | ||
camelia | rakudo-moar c0278a: OUTPUT«2♡ ♢ ♣ ♠ 3♡ ♢ ♣ ♠ 4♡ ♢ ♣ ♠ 5♡ ♢ ♣ ♠ 6♡ ♢ ♣ ♠ 7♡ ♢ ♣ ♠ 8♡ ♢ ♣ ♠ 9♡ ♢ ♣ ♠ 10♡ ♢ ♣ ♠ J♡ ♢ ♣ ♠ Q♡ ♢ ♣ ♠ K♡ ♢ ♣ ♠ A♡ ♢ ♣…» | ||
moritz | uhm | ||
psch | m: say ^3 X~ 'a'..'d' | 11:18 | |
camelia | rakudo-moar c0278a: OUTPUT«0a 0b 0c 0d 1a 1b 1c 1d 2a 2b 2c 2d» | ||
psch | m: say ^3 X~ <a b c d> | ||
camelia | rakudo-moar c0278a: OUTPUT«0a 0b 0c 0d 1a 1b 1c 1d 2a 2b 2c 2d» | ||
masak | X~ changed precedence to ~ ? | ||
moritz | it looks like X~ doesn't descend into the RHS here? | ||
FROGGS | seems so | ||
psch | m: say ^3 X~ <♡ ♢ ♣ ♠> | ||
11:18
tinyblak joined
|
|||
camelia | rakudo-moar c0278a: OUTPUT«0♡ ♢ ♣ ♠ 1♡ ♢ ♣ ♠ 2♡ ♢ ♣ ♠» | 11:18 | |
moritz | m: say <♡ ♢ ♣ ♠>.elems | ||
camelia | rakudo-moar c0278a: OUTPUT«1» | ||
moritz | oh | ||
psch | well that's kinda magic | ||
moritz | m: say <♡ ♢ ♣ ♠>.elems | ||
camelia | rakudo-moar c0278a: OUTPUT«4» | ||
masak | I'd expect X~ to have the precedence of X, not ~ | ||
moritz | weird whitespace | ||
psch | funky spaces? | ||
masak | aha | ||
FROGGS | ? | ||
moritz | m: say ((2..10,<J Q K A>) X~ <♡ ♢ ♣ ♠>) | 11:19 | |
camelia | rakudo-moar c0278a: OUTPUT«2♡ 2♢ 2♣ 2♠ 3♡ 3♢ 3♣ 3♠ 4♡ 4♢ 4♣ 4♠ 5♡ 5♢ 5♣ 5♠ 6♡ 6♢ 6♣ 6♠ 7♡ 7♢ 7♣ 7♠ 8♡ 8♢ 8♣ 8♠ 9♡ 9♢ 9♣ 9♠ 10♡ 10♢ 10♣ 10♠ J♡ J♢ J♣ J♠ Q♡ Q♢ Q♣ Q♠ K♡ K♢ K♣ K♠ A♡ A♢ A…» | ||
moritz | m: say ((2..10,<J Q K A>) X~ <♡ ♢ ♣ ♠>).pick(5) | ||
camelia | rakudo-moar c0278a: OUTPUT«4♠ K♢ 5♢ 5♠ Q♢» | ||
masak | \o/ | ||
all is well | |||
psch | m: say " ".ord | ||
11:19
muraiki joined
|
|||
camelia | rakudo-moar c0278a: OUTPUT«160» | 11:19 | |
masak | it was just funky spaces | ||
FROGGS | ahh | ||
masak | nbsp, right? | ||
cschwenz | ah, thanks. :-) | ||
masak | cschwenz: good one ;) | ||
psch | m: say uniname " " | ||
camelia | rakudo-moar c0278a: OUTPUT«NO-BREAK SPACE» | ||
masak | cschwenz: almost had us there :P | ||
psch | j: say uniname " " | ||
camelia | rakudo-jvm c0278a: OUTPUT«cannot connect to eval server: Connection refused» | ||
psch | aw | ||
grondilu | talking about X, in S03 it is written about it that when the RHS is infinite, only the first element of the LHS will be seen. Couldn't we change that? | 11:20 | |
cschwenz | sorry, next time i'll be more careful when i paste whitespace. :-( | ||
masak .oO( "I know! Let's invent several code points that look not just exactly the same, but all *blank*, but with different behaviors!" ) | |||
cschwenz: no worries -- it was interesting | |||
ENOHUGME | |||
masak hugs cschwenz for this vital lesson in whitespace handling | |||
cschwenz | :-) | 11:21 | |
11:22
rurban_ joined
|
|||
grondilu would like to write something like for ^Inf X ^Inf -> $a, $b {...} and have $a and $b cover all the space. | 11:23 | ||
psch | "all the space"? | 11:24 | |
grondilu | all possible couples ($a, $b) | ||
psch | oh, in contrast to "only the first quadrant"? | ||
masak | grondilu: a custom `diag-for(^Inf, ^Inf, -> $a, $b { ... });` gets you quite close | 11:25 | |
grondilu: barring that, have to wait for Real Macros. | |||
grondilu | maybe but eventually I would need to write ^Inf X ^Inf X ^Inf and so on | ||
not to mention using it as a metoperator (eg X~) | 11:26 | ||
so what I would like is a special semantics when the RHS is infinite. | |||
11:26
bjz joined
|
|||
grondilu | the current one is quite useless anyway. | 11:27 | |
masak | I guess you could define your own multi sub infix:<X> variant with an adverb... | ||
that almost feels like the cleanest solution | |||
psch | :alternate ? | 11:28 | |
psch isn't quite sure he's following | |||
masak | :diag | ||
psch | oh | ||
from diagonal | |||
not diagnostic | |||
masak | :diagonally, then :) | ||
grondilu | writing a metaoperator seems hard, but I can try. | ||
I don't think I'd need an adverb though. Can't I just override the default candidate? | 11:29 | ||
I mean create a multi 'where @LHS.elems == Inf' or something. | |||
*@RHS | |||
masak | oh right, it's a metaop | ||
I'm not sure we've ever talked properly about user-defining those | 11:30 | ||
should be totally possible, of course | |||
nwc10 | should I expect t/spec/S03-sequence/nonnumeric.rakudo.moar to take forever? | ||
masak | even with the optional/default operator like X has | ||
timotimo | nqp-m: say(nqp::getcodelocation(&say)<line>); say(nqp::getcodelocation(&say)<file>); | 11:31 | |
camelia | nqp-moarvm: OUTPUT«No registered operation handler for 'getcodelocation' at gen/moar/stage2/QAST.nqp:1406 (/home/camelia/rakudo-inst-2/share/nqp/lib/QAST.moarvm:compile_op:64) from gen/moar/stage2/QAST.nqp:5208 (/home/camelia/rakudo-inst-2/share/nqp/lib/QAST.moarvm:compile…» | ||
timotimo | i should stub that op for JVM so that we don't have to #?if, right? | 11:33 | |
FROGGS | timotimo: for the uni ops we #if'd them... makes it more clear that it is NYI | 11:35 | |
(to me, anyway) | 11:36 | ||
but... if the stubbed op throws a NYI message would be the same | |||
it would* | |||
timotimo | hm | 11:37 | |
i was about to implement it as desugaring to nqp::hash("file", "unknown", "line", "unknown") | |||
or perhaps give -1 | 11:39 | ||
dalek | p: 1bb9a04 | timotimo++ | src/vm/jvm/QAST/Compiler.nqp: stub getcodelocation on jvm, giving unknown data for now |
11:40 | |
kudo/nom: 68c0009 | timotimo++ | tools/build/NQP_REVISION: bump NQP for getcodelocation ops on Moar and stubbed on JVM |
|||
kudo/nom: b6bc4ec | lizmat++ | src/core/Cool.pm: Handle negative index values (return False always) |
11:43 | ||
11:43
xinming_ left
|
|||
dalek | ast: f0e49aa | lizmat++ | S32-str/substr-eq.t: Add basic Cool.substr-eq tests |
11:45 | |
grondilu used the REPL and was a bit confused by the '*' showing up when not ending a line with ';'. Supposes he'll get used to it. | 11:50 | ||
psch | grondilu: hitting enter twice should work too, instead of ending on ; | 11:51 | |
grondilu: but it's admittedly a bit unintuitive as-is, TimToady++ had a few ideas how to make it more obvious, but i'm first trying to get the parsing actually-right | 11:52 | ||
timotimo | python's ">>>" and "..." are a bit more obvious, but that may just be "being used to it" | 11:53 | |
psch | timotimo: i like having ";?" as continuation prompt, and replacing the whole line on enter-on-empty-line | ||
timotimo | ;?, interesting | 11:54 | |
i don't know what that smiley represents :P | |||
but perl6 is already full of smileys, so it fits :D | |||
osfameron | quirky smile with adorable dimple | ||
dalek | kudo/nom: 49ba4bf | lizmat++ | t/spectest.data: Add basic Cool.substr-eq tests |
||
psch | replacing with the output that is | 11:55 | |
lizmat | onwards to Utrecht for NLPW preparations& | ||
psch | and maybe with some other continuation prompt on enter-after-not-empty-line | ||
11:55
lizmat left
12:00
tinyblak left
12:06
lolisa joined
|
|||
nwc10 now has 3 patches for NQP at gitlab.com/nwc10/nqp.git | 12:07 | ||
(All to do with tests) | |||
(including getting 1 test working again on 32 bit parrot) | |||
itz | is that the hipster or stallman github? :) | 12:08 | |
masak | I think one should get a continuation prompt only if the parser is in term position. both ';' and Enter-twice seem to be hoops the user has to jump through rather than the REPL. | ||
nwc10 | itz: it's Dutch. It bought gitorious | 12:10 | |
Actually, I think that it's Dutch | |||
it's somewhere in the EU | |||
psch | masak: in terms of Perl6/Grammar.nqp that means only calling moreinput in EXPR? | 12:11 | |
12:11
_mg_ joined
12:18
egrep joined
12:21
aborazmeh left
12:22
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
nwc10 | itz: it's written in Ruby not Guile, so presumably that makes it more hipster than Stallman | 12:26 | |
masak | psch: I'm not sure, I don't have a good grasp of those bits of the parser. | 12:28 | |
psch: but it's mean that `2 + 2` is a finished statement whereas `2 + 2 *` isn't. | |||
12:28
risou is now known as risou_awy
|
|||
masak | psch: basically "can I insert EOF here and it's still a valid program?" | 12:29 | |
12:29
risou_awy is now known as risou
|
|||
psch | masak: that'd mean «if 0 { 0 }\nelse { 1 }» doesn't work | 12:29 | |
12:29
raiph joined
|
|||
psch | masak: some for «say 1\nif True» | 12:29 | |
masak | I see what you're saying. but that's not a concern to me. | 12:30 | |
or rather, it's a much much smaller concern than not breaking the intuitive behavior of the Enter key | |||
if someone wants to continue on the next line, they can Shift+Enter or something | |||
that's the way the Chrome Dev Console does it. | 12:31 | ||
psch | i hadn't thought of that approach at all | ||
but it sounds noticably easier | |||
masak | glad I could contribute something to the discussion ;) | ||
psch | i'm wondering if "paste stuff into the REPL" is a useful use-case | ||
masak | also secondary to just typing an expression and hitting Enter | 12:32 | |
timotimo | fwiw, in many terminals you can ask the terminal emulator to signal copy-pasting to you | ||
by bracketing pasted text in two escape sequences | |||
psch | actually, i think having a smart and a dumb REPL might be even more sensible | 12:34 | |
the first is what we had before my moreinput changes | |||
the latter is with tab completion and moreinput | 12:35 | ||
err | |||
the other way around :) | |||
eh, no | |||
that'd maybe be in a module then | |||
this stuff is hard :P | |||
timotimo | for a smart repl, i can't stop recommending finally making a IPython backend for perl6 :P | 12:40 | |
12:40
lolisa left
|
|||
timotimo | but it's kind of something that people might expect me to finally finish working on that | 12:40 | |
12:41
lolisa joined
12:42
koo5 joined
|
|||
psch | timotimo: i can shift my efforts towards that, if it helps | 12:44 | |
timotimo: i'd pull the moreinput stuff again, though, because the current state isn't really that useful | |||
and eventually stuff it in a module instead | |||
and impose "you have to end single statements with a ; if you don't want the continuation prompt" :P | 12:45 | ||
Ulti | +1 for IPython but more specifically Jupyter integration | ||
timotimo | what would help me the most would be hints for how the actual code should be structured to make the whole thing work | ||
that includes things like making sure stdout/stderr get passed via the zmq socket | |||
Ulti: that's exactly what i mean with "ipython backend" | 12:46 | ||
Ulti | timotimo there is a perl 5 implementation somewhere but I think it's a bit out of date | ||
I tried looking at the Julia implementation but it does a lot more than the most basic integration | |||
timotimo | aye | ||
12:46
xinming joined
|
|||
timotimo | github.com/timo/iperl6kernel/blob/...wrapper.py - here's a python implementation of a part of the protocol | 12:47 | |
eli-se | I wish I were a python. | 12:48 | |
Ulti | timotimo Perl 6 has everything we need to do it without any Python though right? | 12:49 | |
eli-se | I'd have a worriless life. | ||
Ulti | eli-se until you try to swallow a hippo | ||
eli-se | Or a camel. :3 | ||
12:50
aborazmeh left
|
|||
PerlJam | psch: What about making the repl a little smarter about statements ending in } too ? | 12:52 | |
12:53
RabidGravy joined
|
|||
psch | PerlJam: it's hard to distinguish cases. a <blockoid> doesn't know if it's from statement_control:sym<if> or routine_def | 12:54 | |
if it is from statement_control:sym<if> we might want an else on the next line, if it's not we don't | 12:55 | ||
(except i do it with masak++'s approach, which i'm not really sure i like) | |||
even though i understand it's probably for the better for a stock REPL | |||
PerlJam | I guess an extra ; isn't so bad then :) | 12:56 | |
12:57
slavik left
|
|||
jnthn | .tell lizmat well, nqp::eqat is inconsistent with substr, it seems... Probably VM-level ops shouldn't be doing negatives magic with string offsets... | 13:01 | |
yoleaux | jnthn: I'll pass your message to lizmat. | ||
jnthn | .tell lizmat otoh, we often like to throw typed exceptions for these things which probably means doing the check in Perl 6 code anyway. | ||
yoleaux | jnthn: I'll pass your message to lizmat. | ||
FROGGS | m: if 1 { } else | ||
camelia | rakudo-moar 49ba4b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/4F65Bkq2rXMissing blockat /tmp/4F65Bkq2rX:1------> 3if 1 { } else7⏏5<EOL> expecting any of: parameterized block» | ||
FROGGS | psch: can't we use the "expecting any of:" for judging? | 13:02 | |
like, if we don't expect anything or just expect statement end, then we run the code | |||
13:03
eli-se left,
rararara joined
13:04
_mg_ left,
slavik joined,
_mg_ joined
13:08
virtualsue joined
|
|||
psch | FROGGS: i'm not sure. i think that'd mean checking $/.'!highexpect' for elems > 1 && [0] != "statement end"? | 13:08 | |
FROGGS: i don't know if highexpect is available in place where we wouldn't throw normally though | 13:09 | ||
FROGGS | I'm not sure either | 13:10 | |
13:11
diana_olhovik joined
13:12
anaeem1_ left,
dj_goku joined
|
|||
timotimo | if you "just try to run the code and see if it explodes", you'll run into trouble with BEGIN time things | 13:14 | |
cschwenz | is there an equivalent to Time::HiRes::time() in perl6? or, from a slightly higher level, how do you time how long a section of code takes to run in perl6? | ||
jnthn | If it's not a hugeamount of code | 13:15 | |
perl6-m --profile foo.p6 | |||
PerlJam | cschwenz: you can use the profiler or Benchmark.pm | 13:16 | |
cschwenz | awesome, thanks jnthn and PerlJam :-) | ||
13:17
fhelmberger joined
|
|||
PerlJam | cschwenz: why are you interested in timing your code? | 13:17 | |
cschwenz | i ran into a perl6 snippet which runs fine when perl6 is compiled with moar but takes crazy large amounts of time when perl6 is compiled with parrot. | 13:18 | |
and i want to find out why | 13:19 | ||
tadzik | hah, well... | ||
your answer is in your question | |||
moar is crazy fast compared to parrot | |||
timotimo | that's very true, and kinda sad | ||
cschwenz | in that case, who has control of the homebrew "brew install rakudo-star"? because it compiles a perl6 with parrot and that is the *first* thing a newbie to the language will likely try as it is listed as the first way to get Perl6 on rakudo.org/how-to-get-rakudo/ | 13:21 | |
PerlJam | cschwenz: Are you insterested in working on Parrot such that Rakudo can target it again? Or you were just curious? (btw, you do realize that rakudo-on-parrot has been suspended?) | ||
timotimo | [Coke] (iirc) is working on getting rakudo-on-moarvm into homebrew | ||
jnthn | Hm, brew is the OSX thingy? | ||
timotimo | yes, it is | ||
PerlJam | ah | ||
jnthn | Ah, then I think [Coke]++ | ||
timotimo | moarvm itself is already in homebrew, if i understand it correctly | 13:22 | |
cschwenz | it it, however "brew install rakudo-star" installs a parrot perl6 *not* a moarVM perl6 | 13:23 | |
timotimo | yes | 13:24 | |
as i said, [Coke]++ is working on getting the pieces in | |||
cschwenz | ah | ||
timotimo | next up is nqp, then comes rakudo and finally rakudo star | ||
i'm sure there's more than enough little tweaks necessary to make nqp and rakudo feel welcome and at home in brew's infrastructure | |||
leedo | timotimo: i seem to remember it was macports that [Coke] was working on, could be wrong though | 13:26 | |
timotimo | oh! | ||
damn, i think you're right | |||
leedo | homebrew is a bit more popular these days | ||
PerlJam | who did the extant rakudo homebrew? | ||
timotimo | trac.macports.org/browser/trunk/dp...M/Portfile | ||
awwaiid | in addition to iPython (er... jupiter or whatever), nrepl would be a good idea | 13:27 | |
and YES, copy-paste into the REPL is a HUGE use-case | |||
timotimo | github.com/Homebrew/homebrew/blob/...do-star.rb - doesn't say :\ | ||
13:28
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
|
|||
awwaiid | but a smart-repl can likely detect a paste (based on an event or timing) and slurp it all in as one command if needed | 13:28 | |
timotimo | it seems like github user "squeeks" initially built the rakudo star homebrew recipe | ||
13:34
ilogger2 joined,
ChanServ sets mode: +v ilogger2
13:47
skids joined
13:54
aborazmeh joined,
aborazmeh left,
aborazmeh joined
13:55
anaeem1 joined
14:00
anaeem1 left
14:04
tinyblak joined
14:05
risou is now known as risou_awy,
risou_awy is now known as risou
14:10
Sqirrel joined
14:17
aborazmeh left
14:19
anaeem1 joined
|
|||
n0vacane | Good afternoon gentle perl monks | 14:19 | |
moritz | hi n0vacane. This is not perlmonks :-) | 14:22 | |
14:22
anaeem1 left,
anaeem1 joined
|
|||
Ven | .u ℍ | 14:23 | |
yoleaux | U+210D DOUBLE-STRUCK CAPITAL H [Lu] (ℍ) | ||
n0vacane | Sure it may not be perlmonks.org, and I guess the definition 'monk' does not really fit you guys. | 14:25 | |
moritz | I do have an account on perlmonks | 14:26 | |
but it feels a bit different than in here :-) | |||
14:27
anaeem1 left
|
|||
n0vacane | maybe cenobite is a more fitting noun | 14:27 | |
moritz | www.perlmonks.org/?node=Saints+in+our+book seems I'm no. 8 by XP in there | ||
n0vacane | Cardinal, huh. | 14:28 | |
nine | .tell lizmat just to let you know: I currently have a real world use case where I need the same module (Crypt::RSA) in two different versions by two different authors in the same process. Too bad, that it's Perl 5 code :) | ||
yoleaux | nine: I'll pass your message to lizmat. | ||
n0vacane | and it only took eight years! | ||
moritz | that's, like, a quarter of my life :-) | 14:29 | |
n0vacane | moritz, there are some guys that have only be mere priests for 15 years | 14:30 | |
PerlJam | that's me. (sorta) | ||
14:30
tinyblak left
|
|||
n0vacane | be=been | 14:30 | |
PerlJam | I'be been on perlmonks since March of 2000 ... and I'm # 258 on that list | ||
moritz | n0vacane: well, XP is mostly a sum over activity, not about total time since joining | 14:31 | |
PerlJam | Clearly I don't have enough free time on my hands :) | ||
moritz | well, these days I don't either | ||
n0vacane | :) well i guess you need to go on more crusades and missionary work | 14:32 | |
14:32
Perl6_newbee joined
|
|||
PerlJam | aside from today, I was apparently on 4 weeks ago (I don't remember it though) | 14:33 | |
14:33
eli-se joined
|
|||
n0vacane | So, that site is like stackoverflow for perl | 14:34 | |
eli-se | omg Stack Overflow | ||
PerlJam | n0vacane: but about a decade earlier | ||
moritz | the big difference is that that perlmonks encourages discussions, whereas stackoverflow encourages The One True Answer | ||
(and the second big difference is that SO loads much faster) | 14:35 | ||
n0vacane | :) i like this place | ||
PerlJam | perlmonks also still uses technology from about a decade before SO ;) | 14:36 | |
n0vacane | also, it probably only needs a 64mb vps, whereas SO probably needs 64gb of ram to run the site | ||
moritz | not quite | 14:37 | |
n0vacane | if i wanted to take up the cause of perl and become a perlmonk, do i have to become celibate? | ||
moritz, yeah that was probably a stretch | 14:38 | ||
PerlJam | n0vacane: no, but you must celebrate | ||
n0vacane | ok :) | 14:39 | |
well, have a good afternoon gentle(wo)men !! | 14:40 | ||
grondilu | .oO( "gentlehuman" would probably do as a gender-neutral word for that) |
14:42 | |
jdv79 | [Coke]: are you commuting to the nyc thing on 5/2? | ||
14:44
tinyblak joined
|
|||
flussence | last time I heard about SO's servers (I think it *was* almost a decade ago, jeez) it was already needing at least a dozen gigabytes of RAM to handle load... | 14:44 | |
PerlJam | grondilu: are we all human? ;) | 14:45 | |
jdv79 | huh. i first logged into PM 2001-7 and last 2009-7. i think that's when irc took over for me. | 14:48 | |
14:52
molaf__ joined
|
|||
muraiki | SO actually has a pretty interesting architecture: highscalability.com/blog/2014/7/21/...and-i.html | 14:59 | |
apparently they could run on only 5 servers | 15:00 | ||
15:01
oetiker left
|
|||
moritz | which is rather impressive, given their number of requests | 15:01 | |
(whereas iirc perlmonks runs on two web servers and one DB server, serving only a tiny fraction of the requests that SO does) | |||
jdv79 | 560M/month seems a bit low, no? i think across all the hearst magazine sites (20 or so) we had 30M/day...maybe. my memory isn't great. | ||
mst | although perlmonks uses the everything engine which is meta-dynamic to the power N | ||
jdv79 | and that all ran on one cluster of super lame mod_perl/mason/HT boxes | 15:02 | |
muraiki | jdv79: it does seem low, but it someone from SO clarified in a comment: "Page views only account for a fraction of our load. We serve many AJAX/JSON routes and API requests which total over 130 million requests on any given weekday. For example yesterday we handled 150,091,472 requests which is about 1730 RPS on average." | 15:06 | |
"At peak we're usually seeing 2600-3000 RPS at about 15% load on each of the 9 primary web servers. For reference: we handled 3,710,241,322 (3.7 billion) requests in the last 30 days." | |||
jdv79 | ah | 15:08 | |
15:09
rindolf joined
15:14
Perl6_newbee left
|
|||
dalek | href="https://perl6.org:">perl6.org: af7c131 | (Zoffix Znet)++ | source/ (594 files): Make it more obvious we're reading an archive Closes #11 |
15:19 | |
15:21
ZoffixWork joined
|
|||
timotimo | now i'd love to see some examples where we're still lacking line numbers and filenames in error messages where they would be helpful | 15:21 | |
so that i can find places to put my nqp::getcodelocation | |||
ZoffixWork | Hey all. I need help. I made a boo-boo in the above commit. What's a safe way to fix it (or undo it and commit a new one)? I know there's git rebase -i HEAD~2; git push --force; but AFAIK it isn't safe to do because others have access to the repo or something. | 15:22 | |
btyler | just write a new commit. you can't rebase a public repo (without making others angry :) | ||
flussence | do a revert commit, then a new fixed one | ||
btyler | roll on forwards | ||
ZoffixWork | btyler, OK, that sounds like a plan. | 15:23 | |
timotimo | you can "git revert" and it'll make the anticommit of the latest commit | ||
and put it "on top" | |||
if you haven't pushed it yet, you can "git commit --amend" other changes into that revert commit | |||
dalek | p: c4044af | timotimo++ | tools/build/MOAR_REVISION: bump for MoarVM's fixed nqp::getcodelocation |
15:24 | |
jdv79 | timotimo: how are errors missing location info? isn't that always around and captured already? | ||
timotimo | sometimes it may not be | 15:25 | |
like when we hit a where block in a signature, does it give the right location then? | |||
we could also offer line numbers for the candidate list of multiple dispatch errors | |||
jdv79 | i can see that last one but seems weird there would be multiple ways to get it in the standard exception cases but ok. | 15:27 | |
dalek | kudo/nom: 5b70da4 | timotimo++ | tools/build/NQP_REVISION: bump NQP for fixed nqp::getcodelocation |
||
timotimo | in regular exceptions it already works fine | 15:28 | |
m: say nqp::getcodelocation(nqp::getattr(&[<], Code, '$!do')) | 15:31 | ||
camelia | rakudo-moar 49ba4b: OUTPUT«file => src/gen/m-CORE.setting, line => 5400» | ||
timotimo | i think this is pretty cool. | ||
dalek | href="https://perl6.org:">perl6.org: d4479f9 | (Zoffix Znet)++ | source/archive/ (17 files): Fixes duplicate wrappers on archive notices Bad Zoffix! No cookie! (Zoffix Znet)-- |
||
masak | m: say "a", "c" ... "i" | 15:32 | |
camelia | rakudo-moar 49ba4b: OUTPUT«a c d e f g h i» | ||
timotimo | :o | ||
that's terrible | |||
masak | I'm of two minds about it. | 15:33 | |
15:33
eli-se left
|
|||
ZoffixWork | I love it | 15:33 | |
PerlJam | interesting | ||
jdv79 | what 2 minds? | ||
ZoffixWork | m: say "a", "c" ... "i", "k" ... "n", 1 ... 4 | ||
camelia | rakudo-moar 49ba4b: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏n' (indicated by ⏏) in method Numeric at src/gen/m-CORE.setting:15981 in sub infix:<==> at src/gen/m-CORE.setting:5394 in sub infix:<==> at src/gen/m-C…» | ||
ZoffixWork | :( | 15:34 | |
PerlJam | ZoffixWork: precedence | ||
ZoffixWork | Ah | ||
Ven | masak: seems to also make no sense to me | ||
masak | jdv79: (a) it's consistent, although not in the way I expected (b) it's not an arithmetic sequence for chars, like 1, 3 ... 9 | ||
timotimo | oh, is it just precedence? | ||
ZoffixWork | m: say "a", "c" ... "i", "k" ... "n", (1 ... 4) | 15:35 | |
camelia | rakudo-moar 49ba4b: OUTPUT«a c d e f g h i k l m n 1 2 3 4» | ||
masak | timotimo: no. | ||
ZoffixWork | That's weird. | ||
RabidGravy | woah, speaking of PerlMonks (from an hour ago) apparently I have the 124th highest XP and I haven't logged in for six years :-\ | ||
masak | timotimo: `...` is very loose | ||
looser than comma | |||
timotimo | right | ||
what's a good name for an accessor on Code (and Block and Routine and stuff) that'd give file name and line number information? | 15:37 | ||
masak | timotimo: .location ? | ||
RabidGravy | just what I was going to say | ||
timotimo | good | ||
RabidGravy | which can also be conveniently abbreviated to loc (which people will take as line of code) | 15:38 | |
PerlJam | RabidGravy++ | 15:39 | |
masak | I think loc is a bit short | ||
PerlJam | Are you worried about improper huffmanization? | ||
masak | yes. | ||
PerlJam | Or just that you think it should stand out more? | ||
masak | I agree that 'loc' is cute, but I'm not sure it deserves to be that short | 15:40 | |
'location' is longer, but a lot clearer | |||
RabidGravy | also "save the short ones for the most used ones" :) | ||
btyler | or even 'source-location', since .location and .WHERE are a bit ambiguous | ||
masak | 'line-and-file' would also work, I guess, but the dashes are unfortunate | ||
PerlJam | I like .loc, but I don't like it enough to argue about it :) | ||
FROGGS .oO( line'n'file ) | 15:41 | ||
timotimo | m: say nqp::getcodelocation(nqp::getattr(&[<], Code, '$!do')).WHAT | ||
camelia | rakudo-moar 49ba4b: OUTPUT«» | ||
timotimo | ENOWHAT | ||
m: say (nqp::hllize(nqp::getcodelocation(nqp::getattr(&[<], Code, '$!do'))).WHAT | |||
camelia | rakudo-moar 49ba4b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kScrjTWVawUnable to parse expression in parenthesized expression; couldn't find final ')' at /tmp/kScrjTWVaw:1------> 3(nqp::getattr(&[<], Code, '$!do'))).WHAT7⏏5<EOL> expecting any of: …» | ||
timotimo | m: say (nqp::hllize(nqp::getcodelocation(nqp::getattr(&[<], Code, '$!do')))).WHAT | ||
camelia | rakudo-moar 49ba4b: OUTPUT«(Hash)» | ||
timotimo | that's probably what i have to do | ||
dalek | href="https://perl6.org:">perl6.org: 701bcc2 | (Zoffix Znet)++ | source/compilers/index.html: Add Zavolaj to Compilers->Supplementals section Closes #6 |
15:44 | |
timotimo | hmm, i probably also have to hllize the contents of the hash? | 15:45 | |
m: say nqp::hllize(nqp::getcodelocation(nqp::getattr(&[<], Code, '$!do'))).<file>.WHAT | |||
camelia | rakudo-moar 49ba4b: OUTPUT«(Str)» | ||
timotimo | m: say nqp::hllize(nqp::getcodelocation(nqp::getattr(&[<], Code, '$!do'))).<line>.WHAT | ||
camelia | rakudo-moar 49ba4b: OUTPUT«(Int)» | ||
timotimo | apparently not needed, cool. | ||
FROGGS | timotimo: it might work out on moar better then on jvm | 15:50 | |
timotimo | gist.github.com/timo/2d01cb18abba25e44462 - if you ask me, this is pretty cool. | 15:51 | |
15:51
tinyblak left
15:53
ZoffixWork left,
eli-se joined
15:58
telex joined
|
|||
flussence | oh wow, that is nice. | 16:01 | |
"only perl can parse Perl" stops being a problem when the language has awesome introspection stuff like that | 16:05 | ||
16:07
mr-foobar joined
|
|||
timotimo | still a problem, as you have to execute code and you may have untrusted code you want to inspect | 16:08 | |
like when you fire up your IDE to analyze your way through a foreign code base | |||
the least thing you would like to see is some malicious BEGIN block not properly being ... blocked | |||
and rm -rf ing your home directory ... | |||
16:09
pullphinger joined
16:10
PZt joined
16:19
koo5 joined
|
|||
psch | timotimo: it occurs to me that we still need moreinput for jupyter, don't we? | 16:25 | |
timotimo | maybe, maybe not | 16:26 | |
depends, really; the console/interpreter parts would like moreinput | 16:27 | ||
normally, you input multiple lines in a row in the notebook (which is the far more interesting piece of technology they have IMO) and execute it en block | 16:29 | ||
16:31
mr-fooba_ joined,
mr-foobar left
|
|||
dalek | kudo/nom: 20e95b6 | peschwa++ | .gitignore: Ignore fudged Rakudo test files and the new debug runners. |
16:41 | |
psch | timotimo: i'll admit i don't quite understand what the notebook does | ||
timotimo: it looks like a browser based editor to me that can build websites? | |||
although that's probably not the cool bit, the export-to-html | 16:42 | ||
timotimo | it's an executable document format, so to say | 16:44 | |
16:52
tinyblak joined
16:57
mohij joined
17:02
yvan1 joined
|
|||
RabidGravy | there that's better: | 17:03 | |
timotimo | m: my Str $foo = "hi"; $foo = Nil; say $foo.perl; | ||
camelia | rakudo-moar 5b70da: OUTPUT«Str» | ||
RabidGravy | [jns@jail0133 ~/.rakudobrew]$ perl6 | ||
> say $*KERNEL; | |||
freebsd (8.4.RELEASE.p.4) | |||
dalek | ecs: f752ddb | TimToady++ | S03-operators.pod: some clarifications on sequence semantics |
17:09 | |
17:16
lucasb joined
|
|||
timotimo | While looking for '/home/timo/perl6/install/share/perl6/site//home/timo/perl6/moarvm/../install/share/perl6/site/2': no such file or directory | 17:17 | |
well, that's helpful! | |||
... not | |||
use of uninitialized value %!metainfo of type Any in string context in method bundle at lib/Panda/Bundler.pm:120 | 17:23 | ||
what exactly did i wrongs? :( | |||
dalek | ecs: befb20c | TimToady++ | S02-bits.pod: "0" is true Why do people keep thinking I'm not in favor of this change? Oh, because I never specced it, duh. |
17:26 | |
timotimo | hehehe | ||
17:35
andreoss joined
17:38
caymanboy joined
17:39
beastd joined
17:40
gfldex joined
17:43
Sqirrel left
|
|||
lucasb | I was trying some examples about subscript adverbs: | 17:43 | |
m: my @a; say so @a[666] :exists :!p | 17:44 | ||
camelia | rakudo-moar 20e95b: OUTPUT«True» | ||
lucasb | I just thought it was a little funny exists with other adverbs be true | 17:47 | |
I mean, I associate "exists" with boolean, and while most objects are true, there is a limited number of objects that are false. | 17:48 | ||
timotimo is whipping his json parser into shape so that it can read the MANIFEST for speed comparison purposes | 17:51 | ||
17:52
FROGGS joined,
Sqirrel joined
|
|||
timotimo | we fail pretty hard at non-existing files: perl6 -e 'say "WHATISTHIS".IO.slurp.perl' | 17:54 | |
Malformed UTF-8 at line 1 col 21 | |||
andreoss | how can i embed something in <> backets in order to make a Rat? | 17:55 | |
m: my $l = 1; say (<1/$l>).WHAT | |||
camelia | rakudo-moar 20e95b: OUTPUT«(Str)» | ||
ugexe | i was getting that error yesterday myself for something i was working on | ||
timotimo | < > doesn't interpolate, andreoss | 17:56 | |
you can just use / to make a Rat, too | |||
andreoss | m: my $l = 1; say (1/3).WHAT | ||
camelia | rakudo-moar 20e95b: OUTPUT«(Rat)» | ||
timotimo | JSON::Fast is only 7 times slower than JSON::Tiny! | 17:57 | |
hooray! | |||
andreoss | <> force Rat or what? 1/2*1/3 is not the same as <1/2> * <1/3> in the repl | ||
ugexe | would a json parser by any other name parse as fast? | ||
TimToady | m: say <1i>.WHAT | 17:58 | |
camelia | rakudo-moar 20e95b: OUTPUT«(Str)» | ||
TimToady | that's supposed to be Complex | ||
timotimo | m: say 1/2*1/3 | ||
camelia | rakudo-moar 20e95b: OUTPUT«0.166667» | ||
timotimo | m: say (1/2)*(1/3) | ||
camelia | rakudo-moar 20e95b: OUTPUT«0.166667» | ||
timotimo | m: say <1/2>*<1/3> | ||
camelia | rakudo-moar 20e95b: OUTPUT«0.166667» | ||
TimToady | rakudo is cheating | ||
it's relying on Str.Numeric to fix it | 17:59 | ||
or maybe it's just Complex it's still cheating on | |||
m: say <1/3>.WHAT | |||
camelia | rakudo-moar 20e95b: OUTPUT«(Rat)» | ||
TimToady | yeah, Rat got fixed, but Complex didn't yet | ||
timotimo | it sort of seems like our junction unfolding optimization is gone :( | 18:01 | |
hooray! | 18:02 | ||
JSON::Fast is *actually* faster than JSON::Tiny now | |||
TimToady | I take it you were using junctions... | ||
timotimo | yeah | 18:03 | |
JSON::Tiny: 1.05user 0.02system 0:01.07elapsed 100%CPU (0avgtext+0avgdata 102260maxresident)k | |||
JSON::Fast: 0.73user 0.02system 0:00.75elapsed 99%CPU (0avgtext+0avgdata 94860maxresident)k | 18:04 | ||
PerlJam | timotimo: what's that parsing? | 18:06 | |
timotimo | my MANIFEST | ||
FROGGS will work now on getting rid of json parsing/generating for CUR::Installation | 18:08 | ||
timotimo | damn | ||
just as i was building a fast json parser for this task | |||
FROGGS | timotimo: the JSON blob was always meant as a temporary thing | ||
timotimo: and we discussed here often that I'd do that | 18:09 | ||
timotimo | right | ||
FROGGS | well, "often" | ||
timotimo | well, we can use a faster json parser anyway | ||
FROGGS | very very true | ||
PerlJam | indeed | ||
FROGGS | for panda for example | ||
timotimo | wow | 18:10 | |
5th on my list in the profiler is &return | |||
18:15
cschwenz_ joined
|
|||
cschwenz_ | greetings! | 18:15 | |
FROGGS | hi cschwenz | 18:16 | |
cschwenz_ | as promised, i've re-run "brew install rakudo-star" | ||
PerlJam | cschwenz_: did it work? | ||
timotimo | ah, good | ||
cschwenz_ | and, well, see for yourself... | ||
MacBook-Pro:~ cschwenz$ brew info rakudo-star rakudo-star: stable 2014.04 rakudo.org/ Conflicts with: parrot Not installed From: github.com/Homebrew/homebrew/blob/...do-star.rb ==> Dependencies Required: libffi ✔ Optional: gmp ✔, icu4c ✔, pcre ✘ ==> Options --with-gmp Build with gmp support --with-icu4c Build with icu4c support --with-jvm Build also for jvm as an alternate backend. - | |||
argh | 18:17 | ||
flussence | meant to paste a pastebin link? :) | ||
cschwenz_ | the tl;dr is brew info is showing "From: github.com/Homebrew/homebrew/blob/...o-star.rb" | ||
one sec, paste bin coming up | 18:18 | ||
FROGGS | 2014.04? | 18:19 | |
cschwenz_ | pastebin.com/XPEXi23e | ||
so it is pointing at the correct .rb file (and that file shows it should be using moarVM) but when it comes time to install, it uses parrot | 18:20 | ||
timotimo | got down to about 0.71 elapsed | ||
flussence | stale local cache? | ||
timotimo | huh. | 18:21 | |
cschwenz_ | flussence: do you happen to know where homebrew keeps its cache? | 18:22 | |
flussence | not a clue, I'm using gentoo :) | ||
FROGGS | I'd try: brew help | 18:24 | |
PerlJam | cschwenz_: does "brew update | ||
" do anything? | |||
cschwenz_ | one sec, checking... also found brew --cache tells you where the cache is | ||
18:25
Rounin joined
|
|||
cschwenz_ | its not a stale cache as i cleared that and it is still using parrot | 18:26 | |
PerlJam | cschwenz_: maybe try "brew upgrade rakudo-star" ? | ||
caveat lector, I'm just grasping at straws from ubuntu-land :) | |||
cschwenz_ | :-) | ||
doing brew upgrade now | |||
18:27
oetiker joined
|
|||
cschwenz_ | the brew upgrade said it added/updated a whole slew of formulas and deleted a few others | 18:27 | |
\o/ the brew upgrade was the trick | 18:28 | ||
==> Downloading rakudo.org/downloads/star/rakudo-st....03.tar.gz | 18:29 | ||
==> perl Configure.pl --prefix=/usr/local/Cellar/rakudo-star/2015.03 --backends=moar --gen-moar | |||
FROGGS | yay! | ||
cschwenz_ | it's now off building perl6 with moarVM | ||
FROGGS | that does not take that long :o) | ||
cschwenz_ | thanks PerlJam! | ||
PerlJam | cschwenz_: you're welcome | 18:30 | |
timotimo | 0.66user 0.01system 0:00.67elapsed 100%CPU (0avgtext+0avgdata 94948maxresident)k | ||
i want your json documents, but they must not contain numbers with exponential notation, negative numbers or decimal points :P | |||
PerlJam | now we can start answering your Perl 6 programming questions whenever you have some :-) | ||
timotimo: can't you write a program to generate json docs? :) | |||
timotimo | that'd be too easy | 18:31 | |
cschwenz_ | heh, yeah :-) | ||
timotimo | JSON::Tiny: 1.05user 0.02system 0:01.08elapsed 99%CPU (0avgtext+0avgdata 102252maxresident)k | ||
i think that's a neat win. not 10x as i would have hoped, though | |||
PerlJam | JSON::Fast uses C or something else? | ||
timotimo | hm, actually | ||
0.55user 0.02system 0:00.57elapsed 99%CPU (0avgtext+0avgdata 91960maxresident)k | |||
this is what only slurping the data takes | |||
no, it's pure perl6 with nqp ops | |||
PerlJam | ah | 18:32 | |
18:33
vendethiel joined
|
|||
flussence | timotimo: here's a script that downloads 150KB of json input, is that big enough? ;) github.com/flussence/HTML5-Entitie...ty-data.p6 | 18:33 | |
(JSON::Tiny::from-json is 80% of the runtime there) | 18:35 | ||
timotimo | okay, i have a bigger file now | 18:36 | |
12.73user 0.05system 0:12.79elapsed 99%CPU (0avgtext+0avgdata 226960maxresident)k | 18:37 | ||
1.59user 0.02system 0:01.62elapsed 99%CPU (0avgtext+0avgdata 102064maxresident)k | |||
guess which is which | |||
18:37
larion joined
|
|||
timotimo is slightly pleased | 18:38 | ||
flussence | whoa | ||
(and it's easy to get a ginormous json file - just run --profile and snip it out of the html :) | 18:39 | ||
FROGGS | timotimo: did you check the result? | ||
timotimo | FROGGS: why would i? :P | ||
FROGGS | :P | ||
dalek | ast: 5a9c4e2 | usev6++ | S24-testing/3-output.t: Add test for RT #115024 |
18:40 | |
timotimo | that could only show i'm doing things wrong | ||
18:41
cschwenz_ left
|
|||
timotimo | damn, things are wrong here :( | 18:41 | |
ah, yeah | 18:42 | ||
when i removed return statements, all my strings turned into "1" :) | |||
18:42
zakharyas joined
|
|||
FROGGS | ohh, so you parse JSON *and* do compression :o) | 18:43 | |
18:43
andreoss left
|
|||
timotimo | hahaha | 18:44 | |
dalek | ast: f513cec | usev6++ | S24-testing/ (3 files): Rewrite test for output of passer |
18:46 | |
timotimo | how do i properly diff two files that consist of a single hugely long line | ||
18:46
andreoss joined
|
|||
flussence | find a reasonable delimiter you can s:g/$foo/\n/ on :) | 18:47 | |
18:49
Sqirrel left
|
|||
timotimo | right, "," | 18:49 | |
oh | 18:52 | ||
no difference between the two files | |||
FROGGS | Probable version skew in pre-compiled 'EVAL_0' (cause: no object at index 26) | ||
:o( | |||
timotimo | :o | ||
18:53
Sqirrel joined
|
|||
timotimo | here's another comparison | 18:55 | |
61.02user 0.22system 1:01.28elapsed 99%CPU (0avgtext+0avgdata 748364maxresident)k | |||
FROGGS | timotimo: that's impressing: gist.github.com/timo/2d01cb18abba25e44462 | ||
timotimo | 5.86user 0.05system 0:05.92elapsed 99%CPU (0avgtext+0avgdata 171204maxresident)k | ||
FROGGS | impressive* | ||
timotimo | thank you :) | ||
m: say 748364 / 171204 | 18:56 | ||
camelia | rakudo-moar 20e95b: OUTPUT«4.371183» | ||
timotimo | takes only a 4th of the ram | ||
FROGGS | timotimo: I would not mind if you'd replace the json parser in rakudo... | ||
timotimo | well, first i'll have to also handle backslash sequences and numbers other than positive integers :P | 18:57 | |
FROGGS | changing the MANIFEST to perl does not seem to be that easy | ||
18:58
andreoss left
19:01
rindolf left
19:04
baest joined
19:13
_mg_ joined
|
|||
timotimo | and true and false and nan and both inf and... not sure what else | 19:19 | |
I will use the test suite of json::tiny for it, too | 19:20 | ||
19:25
baest left
|
|||
tony-o | timotimo: should i open an rt for the io::socket gist? | 19:28 | |
19:38
yvan1 left
19:40
tinyblak left,
yvan1 joined
|
|||
dalek | kudo/nom: 0b7c5ba | TimToady++ | src/core/operators.pm: implement '000'...'077' and such correctly |
19:41 | |
ast: 8be2a7a | TimToady++ | S03-sequence/nonnumeric.t: test '000'...'077' and friends |
19:42 | ||
19:46
Sqirrel left
19:47
Sqirrel joined
19:57
diana_olhovik joined
20:00
_mg_ left,
_mg_ joined
20:02
larion left,
larion joined
|
|||
bartolin | timotimo: I didn't follow closely what you implemented wrt line numbers. but maybe RT #120443 can benefit from your work? | 20:03 | |
timotimo | synopsebot ... ;( | 20:05 | |
20:05
_mg_ left
|
|||
timotimo | hm, oof | 20:05 | |
dunno | |||
bartolin | ah, yes, he's missing. rt.perl.org/Ticket/Display.html?id=120443 | 20:06 | |
timotimo | i don't think we can do much better there with what i made | ||
bartolin | :-( | 20:07 | |
timotimo | what i made gives you the ability to go from any Code object to the line and filename where its implementation begins | 20:08 | |
bartolin | aha. I'll (try to) keep that in mind | 20:09 | |
timotimo++ | |||
timotimo | thanks :) | 20:11 | |
RabidGravy | for reference how much memory does that use compared to e.g sub foo {}; I tend to write code with hundreds of small methods rather than fewer long ones | 20:14 | |
20:21
larion left
|
|||
TimToady | m: say '000'...'077' | 20:22 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«000 001 002 003 004 005 006 007 010 011 012 013 014 015 016 017 020 021 022 023 024 025 026 027 030 031 032 033 034 035 036 037 040 041 042 043 044 045 046 047 050 051 052 053 054 055 056 057 060 061 062 063 064 065 066 067 070 071 072 073 074 075 076 077» | ||
TimToady | m: say '$a'...'&c' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«$a $b $c %a %b %c &a &b &c» | ||
eli-se | m: say '007' .. 'bond' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«"007".."bond"» | ||
eli-se | :O | ||
20:23
larion joined
|
|||
TimToady | the strings have to be equal length to get those semantics | 20:23 | |
eli-se | m: say '007' ... 'bond' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 …» | ||
TimToady | m: say 'a0' ... 'f9' | 20:24 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9» | ||
TimToady | m: say '❶❶' ... '➓➓' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«❶❶ ❶❷ ❶❸ ❶❹ ❶❺ ❶❻ ❶❼ ❶❽ ❶❾ ❶❿ ❶➀ ❶➁ ❶➂ ❶➃ ❶➄ ❶➅ ❶➆ ❶➇ ❶➈ ❶➉ ❶➊ ❶➋ ❶➌ ❶➍ ❶➎ ❶➏ ❶➐ ❶➑ ❶➒ ❶➓ ❷❶ ❷❷ ❷❸ ❷❹ ❷❺ ❷❻ ❷…» | ||
eli-se | nice | 20:25 | |
TimToady | hmm, something not right there | ||
eli-se | m: L: for 1..2 { }; next L | 20:26 | |
camelia | ( no output ) | ||
RabidGravy | are they actual little numbered balls or is xchat messing around? | ||
eli-se | m: sub f { L: for 1..2 { }; L }; next f | ||
camelia | ( no output ) | ||
TimToady | m: say '❶' ... '➓' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«❶ ❷ ❸ ❹ ❺ ❻ ❼ ❽ ❾ ❿ ➀ ➁ ➂ ➃ ➄ ➅ ➆ ➇ ➈ ➉ ➊ ➋ ➌ ➍ ➎ ➏ ➐ ➑ ➒ ➓» | ||
TimToady | ah, I see what I did | 20:27 | |
eli-se | m: sub f(&g) { L: for 1..2 { &g(L); .say } }; f({ next $^a }) | ||
camelia | ( no output ) | ||
eli-se | lol | ||
crazy control flow | |||
nwc10 | RabidGravy: they are little numbered balls. My terminal is squidging them rather badly. It's easier to see on the web log: irclog.perlgeek.de/perl6/2015-04-09#i_10418138 | ||
TimToady | m: say '➊ ➊ ' ... '➓➓' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«➊ ➊ » | ||
skids | m: say '₂₂'...'₄₀' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«₂₂ ₂₁ ₂₀ ₃₂ ₃₁ ₃₀ ₄₂ ₄₁ ₄₀» | 20:28 | |
RabidGravy | yeah the black ones with white numbers I can't read at all | ||
TimToady | m: say '❶❶' ... '❿❿' | 20:29 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«❶❶ ❶❷ ❶❸ ❶❹ ❶❺ ❶❻ ❶❼ ❶❽ ❶❾ ❶❿ ❷❶ ❷❷ ❷❸ ❷❹ ❷❺ ❷❻ ❷❼ ❷❽ ❷❾ ❷❿ ❸❶ ❸❷ ❸❸ ❸❹ ❸❺ ❸❻ ❸❼ ❸❽ ❸❾ ❸❿ ❹❶ ❹❷ ❹❸ ❹❹ ❹❺ ❹❻ ❹…» | ||
eli-se | m: say '❶' * 2 | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏❶' (indicated by ⏏) in method Numeric at src/gen/m-CORE.setting:15981 in sub infix:<*> at src/gen/m-CORE.setting:5352 in sub infix:<*> at src/gen/m-C…» | ||
TimToady | you need unival for that | ||
eli-se | m: say '⏏' * 2 | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏⏏' (indicated by ⏏) in method Numeric at src/gen/m-CORE.setting:15981 in sub infix:<*> at src/gen/m-CORE.setting:5352 in sub infix:<*> at src/gen/m-C…» | ||
eli-se | Now I'm confused by the error message! Help! | ||
TimToady | that's not a dig | 20:30 | |
*digit | |||
it's just a unicode with a numeric value | |||
m: say unival('❿') | |||
camelia | rakudo-moar 0b7c5b: OUTPUT«10» | ||
eli-se | nice | ||
TimToady | m: say unival('⅔') | 20:31 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«0.666667» | ||
skids | m: say 'ⅤⅤ'...'ⅧⅧ' | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«ⅤⅤ ⅤⅥ ⅤⅦ ⅤⅧ ⅥⅤ ⅥⅥ ⅥⅦ ⅥⅧ ⅦⅤ ⅦⅥ ⅦⅦ ⅦⅧ ⅧⅤ ⅧⅥ ⅧⅦ ⅧⅧ» | ||
RabidGravy | whoah | ||
TimToady | m: say uniprop('⅔','denominator') | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«0» | ||
TimToady | hmm | ||
RabidGravy | I foresee some crack parties | ||
so those things would match \d ? | 20:34 | ||
TimToady | no | ||
\d only matches digits, not numbers | |||
RabidGravy | ah okay, | ||
but, er, <:Nd> or something | 20:35 | ||
TimToady | m: say "𝟠" ~~ /\d/ | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«「𝟠」» | ||
TimToady | .u 𝟠 | ||
yoleaux | U+1D7E0 MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT [Nd] (𝟠) | ||
TimToady | m: say "Ⅷ" ~~ /\d/ | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«Nil» | ||
RabidGravy | but | 20:36 | |
m: say "Ⅷ" ~~ /<:Nd>/ | |||
camelia | rakudo-moar 0b7c5b: OUTPUT«Nil» | ||
TimToady | m: say uniprop "Ⅷ" | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«Nl» | ||
20:37
diana_olhovik left
|
|||
RabidGravy | so | 20:37 | |
TimToady | m: say "Ⅷ" ~~ /<:N>/ | 20:38 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«「Ⅷ」» | ||
20:38
diana_olhovik_ joined
|
|||
timotimo | yo moritz | 20:39 | |
RabidGravy | nothing to fear when attempting to match digits then :) | ||
skids | .oO(Is "Nil" a legal uniprop code? Could be confusing.) |
||
timotimo | in JSON::Tiny there's a BEGIN { @*INC.push('lib') } | 20:40 | |
20:41
larion left
|
|||
RabidGravy | skids Nl rather than Nil I think | 20:41 | |
20:42
larion joined
|
|||
skids | No I'm saying if "Nil" is a valid unicode propset, and someone prints perl6 Nil as a failure as above, they may think it meant unicode "Nil" | 20:43 | |
But I guess that's what they get for improper error handling :-) | |||
TimToady | but it doesn't print the property there, it prints the match | 20:44 | |
people don't confuse oil with øl, or at least we hope they don't | 20:45 | ||
skids | Oh, I misread the backlog. | ||
TimToady | I'll leave it up to the Dutch whether nil should be confused with nl | ||
RabidGravy | they can argue among themselves about that :) | 20:47 | |
TimToady | I'd rather earn my first mil than my first ml | ||
20:48
espadrine joined
|
|||
tony-o | nice | 20:50 | |
timotimo | i cannot find any indication in the json standard or website that a json document must be, at the outermost level, a list or an object | 20:54 | |
RabidGravy | I think it falls among "truisms" most parsers seem to handle atoms at the top level but suggest this is not compliant with the stanard :) | 20:56 | |
TimToady | m: say unival("⅞").perl | 20:58 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«0.875» | ||
TimToady | m: say unival("⅔").perl | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«<2/3>» | ||
TimToady | cool, already figures out if it's a rational | 20:59 | |
m: say unival("𐅷").perl | 21:01 | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«<2/3>» | ||
RabidGravy | I'll cry if you implement ⅞ + 0.5 to work | ||
TimToady | m: say (unival('⅐') * 0.5).base-repeating | 21:02 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«0.0 714285» | ||
RabidGravy | cheater | 21:03 | |
TimToady | well, modules will happen | ||
use vulgar; :) | |||
RabidGravy | I fucking do already matey ;-) | ||
TimToady | now the tricky ones would be things like 33⅓ | 21:06 | |
21:07
zakharyas left
|
|||
TimToady | m: sub postfix:<⅓>($n) { $n + 1/3 }; say 33⅓ | 21:08 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«33.333333» | ||
TimToady | I guess it's not that hard | ||
RabidGravy | bad larry, BAD BAD! | ||
TimToady | m: sub prefix:<⅓>($n) { 1/3 * $n }; say ⅓33 | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«11» | ||
dalek | pan style="color: #395be5">perl6-examples: 177116f | paultcochrane++ | categories/99-problems/P01-scottp.pl: Remove superfluous newlines |
||
perl6-examples: e3cf9a2 | paultcochrane++ | lib/Pod/ (2 files): | |||
perl6-examples: Append source code text (without pod) to example page | |||
TimToady | m: sub prefix:<⅓>($n) { 1/3 * $n }; say ⅓pi | 21:09 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«1.0471975511966» | ||
21:09
dalek joined,
ChanServ sets mode: +v dalek
|
|||
TimToady | m: sub prefix:<⅓>($n) { 1/3 * $n }; say ⅓π | 21:09 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«1.0471975511966» | ||
timotimo | i expect the more exact i make my parser the slower it'll end up being ... | 21:12 | |
RabidGravy | you know that thing we don't like about people saying perl is a write only language :) | ||
TimToady | m: sub prefix:<½>($n) { 1/2 * $n }; sub postfix:<²>($n) { $n * $n }; say { ½π * $^r² }(10) | 21:13 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«157.07963267949» | ||
TimToady | m: sub prefix:<½>($n) { 1/2 * $n }; sub postfix:<²>($n) { $n * $n }; say -> \r { ½π * r² }(10) | 21:14 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«157.07963267949» | ||
TimToady | closer | ||
ugexe | MIME::Base64 failing on jvm sometime in the last couple weeks :( | 21:15 | |
21:15
colomon joined
|
|||
RabidGravy | but e.g yeah I was goin in with | 21:19 | |
m: sub prefix:<√>($n) { $n**0.5 } ; say √2; | |||
camelia | rakudo-moar 0b7c5b: OUTPUT«1.4142135623731» | ||
RabidGravy | which is nice | ||
TimToady | well, we're all irrational here... | 21:20 | |
21:20
eli-se left
|
|||
timotimo | gist.github.com/timo/ef1fa0ecf43f8ec0e3c8 | 21:22 | |
making progress :) | |||
21:25
xdg joined
21:26
skids left
|
|||
RabidGravy | is there any other language that lets you define completely arbitrary operator like this? | 21:27 | |
timotimo | Haskell | ||
RabidGravy | ah | ||
geekosaur | haskell is not entirely arbitrary; it limits the operator character set to the Unicode "symbol" category (ies?) | 21:28 | |
timotimo | m: 187456 / 800276 | ||
camelia | ( no output ) | ||
timotimo | m: say 187456 / 800276 | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«0.2342392» | ||
geekosaur | so you can't e.g. use a Greek letter as an operator, because it's a Unicode letter category | ||
timotimo | m: say 187456 R/ 800276 | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«4.269140» | ||
masak | RabidGravy: Fortress also lets you define Unicode operators | 21:29 | |
lucasb | m: say (1,2,3).map: { $_.WHAT } | 21:31 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«(Int) (Int) (Int)» | ||
lucasb | m: say (1,2,3).map: *.WHAT | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«1 2 3» | ||
lucasb | m: (1,2,3).map: *.WHAT.say | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«(Whatever)Unhandled exception: Method 'count' not found for invocant of class 'Bool' at <unknown>:1 (/home/camelia/rakudo-inst-2/share/nqp/lib/Perl6/BOOTSTRAP.moarvm::4294967295) from src/gen/m-CORE.setting:9634 (/home/camelia/rakudo-inst-2/sh…» | ||
lucasb | ^^ I keep finding this bug :) | ||
TimToady | WHAT is not really a method | 21:32 | |
lucasb | Oh | ||
21:32
pullphinger left
|
|||
RabidGravy | y'see I have a fear that in ten years, I'm beginning to get $a  $b in some code and not have aclue what is going on | 21:34 | |
TimToady | well, then you'll contribute to the social feedback loop by shooting someone | 21:35 | |
geekosaur would second that, given experience with <+> in xmonad (and defined in a different way in some other libraries, and when people look for those they find xmnonad's) | |||
RabidGravy | TimToady++ # true | ||
masak | RabidGravy: operators are just subroutines with special parsing rules. I don't see a similar widespread fear about proliferating subroutines. :) | 21:36 | |
geekosaur eyes typos, sigh | |||
you would if they were all limited to 1-3 characters | |||
which is about the limit you tend to see for operators | |||
and it's hard to make such self-descriptive | |||
TimToady | that's what the mouseover is for | 21:37 | |
masak | FROGGS: I can't seem to be able to reply on RT right now. but re rt.perl.org/Public/Bug/Display.html?id=78200 | ||
RabidGravy | masak, you may have a different sort of brain than mine, but I'd kill someone who call a sub  as well | ||
TimToady | obviously it's a mutator of some sort, since it replaces the object | 21:38 | |
masak | RabidGravy: I don't mind custom operators as long as they're elegant and motivated. | ||
FROGGS: (a) that's not how "instantiated" is spelled | |||
TimToady fully expects that Sturgeon's Law will continue to hold true. | |||
ugexe | my @encoding-chars = 'A'..'Z','a'..'z','0'..'9','+','/'; <-- exception on jvm... reason for MIME::Base64 failing on jvm | 21:39 | |
masak | FROGGS: (b) I want to detract my code example, which does not highlight the OP's complaint (that the variable holding the type object is important yet does not figure in the error message) | ||
retract* | |||
TimToady: custom operators are fine, as long as they are the remaining 10% :) | |||
'night, #perl6 | 21:41 | ||
TimToady | o/ | ||
TimToady --> ꆆ | |||
21:42
diana_olhovik_ left
|
|||
dalek | kudo-star-daily: 8ec165d | coke++ | log/ (2 files): today (automated commit) |
21:45 | |
rl6-roast-data: 578f6b4 | coke++ | / (9 files): today (automated commit) |
|||
rl6-roast-data: bfcb510 | coke++ | / (4 files): today (automated commit) |
|||
rl6-roast-data: eff8d72 | coke++ | / (2 files): today (automated commit) |
|||
21:47
bjz joined
|
|||
RabidGravy | nighty night | 21:51 | |
21:53
eli-se joined
21:54
beastd left
21:55
vendethiel left
21:58
Sqirrel left
21:59
colomon left
22:00
lizmat joined
|
|||
[Coke] | I am belatedly on the side that "0" should be true. if you want ?+"0", instead of ?"0", that's a simple thing. | 22:01 | |
22:01
larion left
22:03
Sqirrel joined,
larion joined
|
|||
eli-se | I think pack should default to middle endian. | 22:05 | |
To be a reasonable compromise between big and little endian. | |||
timotimo | # Looks like you failed 2 tests of 90 | ||
jercos | unspec endianness could be an error as far as I'm concerned :| | 22:06 | |
If someone *wants* native-endian, they can specify that :p | |||
22:06
lucasb left
|
|||
lizmat | .botsnack | 22:10 | |
yoleaux | :D | ||
13:01Z <jnthn> lizmat: well, nqp::eqat is inconsistent with substr, it seems... Probably VM-level ops shouldn't be doing negatives magic with string offsets... | |||
13:01Z <jnthn> lizmat: otoh, we often like to throw typed exceptions for these things which probably means doing the check in Perl 6 code anyway. | |||
14:28Z <nine> lizmat: just to let you know: I currently have a real world use case where I need the same module (Crypt::RSA) in two different versions by two different authors in the same process. Too bad, that it's Perl 5 code :) | |||
lizmat | .tell nine the solution is simple: Inline::Perl6 -> Inline::Perl5 -> other version :-) | 22:11 | |
yoleaux | lizmat: I'll pass your message to nine. | ||
lizmat | .tell jnthn that's what b6bc4ecd08b4792d73ab0ee9da01edac60a909c0 did (well, checking, not throwing, not sure what would be best in this case) | 22:12 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
22:13
bjz left,
gfldex left
|
|||
lizmat | .tell jnthn perhaps an X::OutOfRange exception would be best, to stay in line with .substr | 22:13 | |
yoleaux | lizmat: I'll pass your message to jnthn. | ||
timotimo | hell yeah! | 22:16 | |
the only test i'm not passing any more is "error out if numbers start with a 0" | |||
[Coke] | jdv79: yes, I'm taking the train down on the 2nd. | 22:17 | |
22:18
espadrine left
22:19
telex left
22:20
telex joined
22:21
vendethiel joined
|
|||
timotimo | 9.80user 0.05system 0:09.86elapsed 99%CPU (0avgtext+0avgdata 195788maxresident)k | 22:23 | |
67.11user 0.23system 1:07.39elapsed 99%CPU (0avgtext+0avgdata 800028maxresident)k | |||
example_data.json ← 5.3M | |||
lizmat | m: "foobar".substr-eq("bar",*-3) # it appears .substr-eq needs a little work still | 22:31 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«Cannot call substr-eq(Str: Str, WhateverCode); none of these signatures match: (Str:D: Cool $needle, Cool $pos, *%_) (Cool:D: Cool $needle, Cool $pos, *%_) in block <unit> at /tmp/P3zhJdsZsf:1» | ||
lizmat is going to sleep on that | |||
timotimo | good night, lizmat! | 22:33 | |
did you see i made a fast json parser? | |||
22:33
[particle] joined
|
|||
Zoffix | \o/ | 22:44 | |
22:45
nbdsp joined
|
|||
nbdsp | Greetings! Could someone advise please is there a way to get the textual name of a function within that function? | 22:47 | |
22:48
sorear joined
|
|||
timotimo | m: sub foobar { say $?ROUTINE.name }; foobar() | 22:48 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/uOjc5l4oi7Variable '$?ROUTINE' is not declaredat /tmp/uOjc5l4oi7:1------> 3sub foobar { say $?ROUTINE.name7⏏5 }; foobar() expecting any of: method arguments postfix» | ||
timotimo | m: sub foobar { say $?BLOCK.name }; foobar() | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/W6_HqMRZDcVariable '$?BLOCK' is not declaredat /tmp/W6_HqMRZDc:1------> 3sub foobar { say $?BLOCK.name7⏏5 }; foobar() expecting any of: method arguments postfix» | ||
timotimo | hmm | ||
m: sub foobar { say callframe(0) }; foobar() | 22:49 | ||
camelia | rakudo-moar 0b7c5b: OUTPUT«CallFrame.new(level => 2, annotations => {:file("/tmp/QUv00qVBdM"), :line("1")}<>, my => EnumMap.new("\&?ROUTINE" => Mu, :RETURN(Mu), "\$!" => Mu, "\$/" => Mu, "\$_" => Mu, "\$*DISPATCHER" => Mu))» | ||
timotimo | :\ | ||
geekosaur | m: sub foobar { say &?ROUTINE.name }; foobar(); | 22:53 | |
camelia | rakudo-moar 0b7c5b: OUTPUT«foobar» | ||
timotimo | ooooh | 22:54 | |
d'oh :) | |||
thank you | |||
nbdsp | geekosaur: thanks! | ||
geekosaur | might be nice if there were sigil typo checks,... | ||
("did you mean &?ROUTINE?") | |||
timotimo | yeah | 22:56 | |
well, $? variables are "special" | |||
22:57
nbdsp left
22:58
Rounin left
23:04
BenGoldberg joined
23:05
eli-se left
23:09
xdg left,
vendethiel left
23:12
virtualsue joined
23:15
mohij left
|
|||
ugexe | sent a PR for MIME::Base64 to work on jvm again and rip out the parrot stuff. if someone could ok it thatd be great github.com/perl6/Perl6-MIME-Base64/pull/4 I dont want to just merge it in because .new($backend) won't work anymore (its not needed, as moar and jvm can use the same backend) so someone else should probably give their opinion on that | 23:16 | |
s/merge it in/merge it in myself/ | |||
dalek | osystem: 10bc913 | timotimo++ | META.list: add JSON::Fast, drop-in replacement for JSON::Tiny |
23:20 | |
23:27
virtualsue left
|
|||
dalek | kudo/nom: 5a3f388 | Coke++ | t/spectest.data: add passing test file |
23:28 | |
[Coke] | ... why is that an upper case coke? | 23:37 | |
Zoffix | ... why is that not 'Will Coleda'? | 23:38 | |
It uses my full name on mines... | |||
[Coke] | there's a mapping somewhere. | ||
but the last commit in this channel from me was coke, not Coke | 23:39 | ||
Zoffix | weird | ||
Maybe the mapping is repo-dependant? | 23:40 |