»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
PerlJam | r: printf("%.50f", 1.115) | 00:04 | |
camelia | rakudo-jvm 9a2f3e: OUTPUT«(timeout)» | ||
..rakudo-{parrot,moar} 9a2f3e: OUTPUT«1.11500000000000000000000000000000000000000000000000» | |||
00:05
cooper left
|
|||
PerlJam | nqp-jvm: say(nqp::sprintf("%.50f",[1.115])) | 00:05 | |
camelia | nqp-jvm: OUTPUT«## There is insufficient memory for the Java Runtime Environment to continue.# pthread_getattr_np# An error report file with more information is saved as:# /home/p6eval/hs_err_pid5092.log» | ||
[Coke] | t/spec/S02-types/multi_dimensional_array.t is failing. | 00:16 | |
00:19
cooper joined
|
|||
PerlJam | Seems we need a "fudge" for setting LOLLY | 00:20 | |
TimToady | yes, I mentioned that test last night | ||
but it's a temporary thing, so maybe just run the tests under LOLLY, since I've already vetted them for poisoned lollipops | 00:21 | ||
it's really only the panda modules and dar6pan that need to run once without LOLLY and get fixed | 00:24 | ||
6arkpan? | |||
PerlJam | .oO( sharkpan? ) |
||
TimToady: Are you going to do shaped decls next? :) | 00:25 | ||
TimToady | no, I think Mouq++ is headed that direction | ||
TimToady is working toward a faster gather/take now | |||
PerlJam | TimToady++ that would be awesome | 00:26 | |
TimToady | first target, make a version of GatherIter that can take a batch of values every %% batchsize instead of one at a time | 00:27 | |
a variant, not a replacement, to be used when known eager | |||
or known pure code | |||
and possibly parameterize the co-routine with the target to reify to directly, and use the coro only for coordination, not to pass data back through an exception, but that's a bigger stretch, and possibly prone to locking issues | 00:30 | ||
00:31
cooper left,
BenGoldberg joined
00:32
jnap left
00:34
iarna joined
|
|||
TimToady | if I can get the latter to work, it makes it easier to reify a batch all at once before yielding | 00:34 | |
00:36
cooper joined
|
|||
TimToady | then take becomes something like 'push $!reified, $taken; yield if $!reified.elems %% $batchsize' | 00:36 | |
PerlJam | the former seems way easier though :) | ||
it would be a good stepping stone | 00:37 | ||
TimToady | except you have to wrap and unwrap each batch | ||
since batches aren't supposed to turn into parcels | |||
adding each parcel directly to $!reified would be simpler | |||
and if we make every take wrap in a batch container, then normal lazy take becomes slower | 00:38 | ||
PerlJam | true | ||
TimToady | boy, that's hard to parse :) | ||
so I think the 2nd is a worthwhile yakshave if I can swing it | 00:39 | ||
00:39
avuserow_ left
00:40
avuserow_ joined
|
|||
TimToady | first, an experiment to see if I can pass a parameter to the block() | 00:41 | |
00:41
gfldex joined
|
|||
PerlJam | Would you end up getting rid of $GATHER_PROMPT and $SENTINEL? They look like artifacts of the current implementation to me. | 00:44 | |
TimToady | maybe | ||
01:01
thou joined
01:06
thou left
|
|||
hoelzro | should I leave the content method on for POD blocks and mark it as deprecated, so that people aren't surprised when they try it instead of .contents? | 01:09 | |
tadzik | +1 | 01:10 | |
TimToady | seems reasonable to an outsider :) | ||
tadzik | deprecation warnings tend to be so annoying that people fix their stuff in no time :D | 01:11 | |
TimToady | which is partly why I didn't even bother to make the lolligag a warning, just a parse error | ||
dalek | Heuristic branch merge: pushed 137 commits to roast/S26-WHY by hoelzro | ||
01:13
dayangkun joined
|
|||
TimToady | actually, we probably need to not only keep the continuation tag, but refine it to do lexotic gathers as specced, and not yet implemented | 01:16 | |
01:17
iarna left,
iarna joined
|
|||
TimToady | S04:796 | 01:17 | |
synopsebot | Link: perlcabal.org/syn/S04.html#line_796 | ||
jnthn accidentally the whole evening with fun :) | 01:18 | ||
japhb | LHF request: Implement PIO.isatty on all backends. I could really use the .t (is a TTY) file test for a couple UI features. | ||
TimToady | yowser xx * | ||
japhb | jnthn: Accident? Or Freudian Behavior? | ||
TimToady | RFTMI (Request For...) | 01:19 | |
japhb | LOL | ||
jnthn | Uh, I went for curry and had some beer. :P | ||
01:19
hagiri joined
|
|||
hagiri | hello | 01:19 | |
=) | |||
jnthn | As opposed to writing my talks. :) | ||
awwaiid | hello | ||
TimToady | you sure you didn't go for beer and have some curry? | ||
japhb | Yeah, I realized that joke would probably be immediately misinterpreted ... right after I hit enter. | ||
jnthn | No, the order was certainly curry first. :) | ||
japhb | .ask timotimo If you are still tracking LHF requests, I'm looking for someone to implement PIO.isatty on all backends, so I can rely on the .t (is a TTY) file test. | 01:21 | |
yoleaux | japhb: I'll pass your message to timotimo. | ||
jnthn is going to be away from home for a month, and figured he'd better get in a trip to his local curry house before that. :) | |||
01:22
FROGGS_ joined
|
|||
jnthn | There's so much backlog I didn't manage to get through it all on the train home. :) | 01:22 | |
01:22
hagiri left
|
|||
jnthn | I did get to the gather/take and coroutines (actually continuations in Moar) bit. | 01:24 | |
TimToady | m: (<a b c>;<d e f>) | 01:25 | |
camelia | rakudo-moar 9a2f3e: OUTPUT«===SORRY!=== Error while compiling /tmp/m_TX6wEpxtUnsupported use of ; in brackets as a statement sequence; in this and future versions please use SEQ(;) or $(;) for C comma semantics (or set LOLLY for the new list-of-list semantics fo…» | ||
jnthn | One thing I've wondered is how many of those cases could be eliminated by implementing r-value loops. | ||
TimToady | so you know about the lolly merge | ||
jnthn | xx could be done that way, for example | ||
01:25
FROGGS left
|
|||
jnthn | I think the lolly merge is just ahead of where I'm reading :) | 01:25 | |
01:28
hagiri joined
|
|||
dalek | ecs: 273da4c | TimToady++ | S99-glossary.pod: add tl;dr and TMI |
01:30 | |
jnthn finally read it all :) | 01:36 | ||
TimToady | er...congrats? | ||
jnthn | fwiw, I don't think GATHER_PROMPT and SENTINEL are problems. They're simply unique enough markers. | 01:37 | |
TimToady | I figgered that out, and that we'd use that even harder for lexotic gathers | 01:38 | |
jnthn | They actually were taken directly from sorear++'s JVM continuation impl. I did the same API on Moar. | ||
Though what's underneath it is quite different. | 01:39 | ||
(Since stack frames are more "first class" in Moar) | |||
TimToady | do you think it would work to give 'take' a direct reference to $!reified to push to? | 01:40 | |
01:40
klapperl_ joined
|
|||
jnthn | Perhaps so. When I've thought about speeding it up, I'd considered having it not yield until there are another values. | 01:41 | |
That is, still have take do the exception throw, but it immediately resumes rather than doing continuation-y stuff. | |||
So far as I can tell, the major cost is in the continuation, not the exception. | 01:42 | ||
TimToady | which is why you want to batch them if you can under one continuation | ||
jnthn | Right, that's what I'd been hoping for | ||
The other thing I'd been thinking - though didn't yet figure out a good model, is that in: | |||
my @a = 0 xx 1000; | 01:43 | ||
It's be really nice if we could have it reify directly into $!items of @a | |||
And avoid all the copying. | |||
01:43
klapperl left
|
|||
jnthn | Maybe that's what you meant by direct reference to $!reified... | 01:44 | |
Question really is when we know we can get away with such cheating. | |||
01:44
ilbot3 left
|
|||
jnthn | It felt to me like it was a sole consumer vs bound distinction. | 01:45 | |
TimToady | well, that's my job, and pmichaud++'s | ||
jnthn | As in, in the direct assignment case, it's clear that there's a single sinker. | ||
TimToady | well, if multiple, you have to have a queue that can be pushed onto, and anyone take off | 01:46 | |
which is why I mentioned potential locking issues | |||
jnthn | Yes, today if two threads want to reify the same thing at a time...problem. | ||
The main thing to look out for there is that we don't end up with circular waiting. | 01:47 | ||
01:47
ilbot3 joined
|
|||
TimToady | well, yes, I'd like a constant list to be able to define itself in terms of its earlier elements, as Haskell allows | 01:47 | |
we haven't got there quite yet | 01:48 | ||
01:48
lue left,
Possum left,
robinsmidsrod left,
eiro left,
vanila left
|
|||
jnthn | Yes, it's making that situation work out without ending up with deadlock... | 01:49 | |
.tell lizmat On SEGV, maybe try bumping to latest MoarVM; I fixed a nasty bug that broke a GC invariant earlier today...uh, yesterday... | 01:51 | ||
yoleaux | jnthn: I'll pass your message to lizmat. | ||
TimToady | but direct reification might be just what the doctor ordered to avoid the current behavior | ||
jnthn | If we can get rid of the continuation for every value and the copying in something with an eager array assignment on the LHS and a gather/take-using thing on the RHS, we're probably onto something that can perform well. | 01:52 | |
TimToady | m: constant foo = 1, foo; say foo[1] | ||
camelia | rakudo-moar 9a2f3e: OUTPUT«===SORRY!===Cannot invoke null object» | ||
jnthn | The other thing that would be really nice is if: | 01:53 | |
for something() { ... } | |||
Could compile into something that pulls values from some iterator, and so can flatten away taht block | |||
Though maybe that's less of an issue when spesh gets cleverer about closure semantics. | 01:54 | ||
TimToady | or at turn it into a loop with a simple goto | ||
jnthn | Well, the reason we do well on some for-using benchmarks and not others is because we can turn for 1..10000 { } into a while loop | 01:55 | |
(But not the other cases) | |||
TimToady | though that's not as bad as it used to be, even without that optimization, since Range knows how to do some batching on it's own when called from MapIter | ||
jnthn | Another one to keep in mind - which I know is slow but don't have a good answer for - is for @a X @b { ... } | ||
Yes, but for a for <literal range> { ... } today, Rakudo completely optimizes away need for a MapIter or a Range. | 01:56 | ||
*the need | 01:57 | ||
TimToady | well, at least we have @x[@a;@b] notation now to play with there, though I doubt it's blazing fast yet | ||
01:57
thou joined,
lue joined,
Possum joined,
robinsmidsrod joined,
vanila joined,
eiro joined
|
|||
TimToady | yes, I know, but not for 1..10, 100..200 {...} | 01:57 | |
jnthn | Right | ||
So far as I can tell, much of the cost in forest fire, which we're > 150x slower at than Perl 5, is overhead from list-y stuff. | 01:59 | ||
TimToady | that's the old ff, not my revised one that doesn't copy, I assume | ||
jnthn | (I can try and get some higher resolution answers on where the cost is if it helps, but it'll be at/after YAPC) | ||
01:59
gfldex left
|
|||
jnthn | Whichever one perl6-bench as | 01:59 | |
*has | |||
TimToady | looking | 02:00 | |
jnthn | Though array_set_xx is probably our most awful result | ||
TimToady | yes, that's the old one that copies element by element | 02:01 | |
(the new one has a Warming state to enable processing it in place) | |||
jnthn | Current r-m weighs in 350x slower there. Though it's an improvement on a year ago, when the latest and greatest r-p was 2060x slower :) | ||
TimToady | well xx should be pretty easy to optimize when the LHS is constant, since it's relatively pure like a Range | 02:02 | |
jnthn | visit_2d_indices_cross is a good one to look at for X being slow, fwiw. | 02:03 | |
TimToady | so you can at least batch it even if it's in a lazy context, or infinite | ||
jnthn | Yes, true. | ||
TimToady | well, X should be constant foldable with constant ranges, fwiw | 02:06 | |
jnthn | Hm, true | ||
TimToady | but I suspect a lot of the overhead is in the indexing end | ||
note that ff uses the same constant X over and over | 02:07 | ||
so might be worth it there | |||
jnthn | The result in visit_2d_indices_for suggests the cost is in the X, afaict. | ||
TimToady | and uses it in multiple places | ||
maybe it is, now, with jit | |||
if you know you're binding to $x,$y, you can preflatten the X constant too | 02:08 | ||
jnthn | Gonna sleep. Should try and not get my body used to crazy late nights when I'll have to get up early for a YAPC flight in a couple of days... :) | ||
TimToady | and share all the same ones in the program | ||
'night | |||
japhb | Good night, jnthn! | ||
jnthn | o/ | ||
(BTW, really pleased to see list performance is getting some serious attention. If we can get that a good bit faster, we will be in a much better place overall.) | 02:09 | ||
'night | |||
02:15
rindolf left
02:20
jnap joined,
jnap left
02:21
hagiri left
02:25
iarna left
02:26
vanila left,
ivanshmakov left
02:27
PotatoGim joined
02:45
avuserow_ left
02:47
noganex_ joined
02:50
noganex left
03:02
fling left
03:03
fling joined
|
|||
dalek | Heuristic branch merge: pushed 92 commits to rakudo/S26-WHY by hoelzro | 03:05 | |
ast/S26-WHY: f9ad8e9 | (Rob Hoelz)++ | integration/advent2011-day10.t: Fix calls to POD .content It's now .contents |
|||
ast: 2c0ae6c | (David Warring [email@hidden.address] | integration/advent2012-day04.t: removed invalid test |
03:07 | ||
03:08
kaleem joined,
avuserow_ joined
03:14
telex left
03:16
xragnar_ joined,
xragnar is now known as Guest65948,
Guest65948 left,
xragnar_ is now known as xragnar,
telex joined
03:18
xenoterracide left
03:19
xenoterracide joined
03:30
xenoterracide left
03:52
kaare_ joined
03:54
nbrown_ left
04:00
j4jackj is now known as f4tass
|
|||
dalek | kudo/S26-WHY: 358271b | (Rob Hoelz)++ | src/core/Pod.pm: Mark Pod::Block.content as deprecated |
04:01 | |
04:02
f4tass is now known as j4jackj
04:10
BenGoldberg left
04:12
bjz left
04:14
colomon left
04:24
anaeem1_ joined,
kurahaupo left,
nbrown_ joined
04:28
kaare_ left
04:30
mr-foobar left
04:31
mr-foobar joined
04:37
nbrown_ left
04:38
ren1us2 is now known as ren1us
04:41
daniel-s_ joined
04:51
kaare_ joined
04:52
jercos left
04:53
jercos joined
|
|||
clkao | w/in 2 | 05:04 | |
05:11
nbrown_ joined
05:12
[Sno] left
05:15
nbrown_ left
05:25
kaleem left
05:32
colomon joined
05:33
isacloud____ left
05:36
isacloud____ joined
|
|||
dalek | kudo/nom: e7835e9 | TimToady++ | src/core/GatherIter.pm: gather should batch an eager reify Just changing the batch size from 1 to 1000 makes a simple gather/take run twice as fast, even though it's still doing all the continuations. |
05:49 | |
TimToady | also makes 0 xx 100000 run roughly 10% faster, but that's in a case it shouldn't be using gather/take at all | 05:52 | |
06:04
denis_boyun_ joined
06:12
baest_ is now known as baest,
nbrown_ joined
06:14
kaleem joined
06:16
nbrown_ left
|
|||
dalek | kudo/nom: f1a7c65 | TimToady++ | src/core/List.pm: make xx about 3 times faster on literals |
06:16 | |
TimToady | for N in the neighborhood of 100000 | 06:17 | |
still uses gather/take, but does batches of 100 for N larger than 100 | 06:19 | ||
doubtless one could still do much better with something handrolled in nqp | 06:20 | ||
it's also a pity we don't have a GatherIter that just pushes rather than parcelizing each take | |||
and really one should scale the batch size to the order of magnitude of sqrt(N) or so | 06:22 | ||
but this is a start | |||
06:42
wtw left,
wtw joined
06:48
rindolf joined
07:03
zakharyas joined,
[Sno] joined
|
|||
ingy1 | jnthn: you about? | 07:05 | |
TimToady could probably help me the most but I'm scared of his response :) | 07:06 | ||
07:09
fhelmberger joined
07:13
nbrown_ joined
07:17
nbrown_ left
07:28
krunen joined
07:39
darutoko joined
|
|||
sergot | o/ | 07:47 | |
07:54
klaas-janstol joined
07:56
donaldh joined
08:07
pmurias joined
|
|||
daniel-s_ | \o | 08:09 | |
Hey sergot | |||
08:11
woolfy left
08:13
Ven joined,
nbrown_ joined
08:14
ClarusCogitatio left
|
|||
Ven | hahaha that take seq $n -= 100 feels like a bit of a hack :P | 08:14 | |
08:17
nbrown_ left
08:18
ClarusCogitatio joined,
klaas-janstol left
|
|||
sergot | hi daniel-s_ | 08:20 | |
lizmat | jnthn: confirmed that Moar master does not segv's with jit enabled and without LOLLY | ||
yoleaux | 01:51Z <jnthn> lizmat: On SEGV, maybe try bumping to latest MoarVM; I fixed a nasty bug that broke a GC invariant earlier today...uh, yesterday... | ||
08:21
brrt joined
|
|||
nwc10 | lizmat: yay! So now works on your machine? | 08:22 | |
08:23
FROGGS_ is now known as FROGGS
|
|||
lizmat | yup, and spectest is clean | 08:23 | |
except for LOLLY tests | |||
so I'm gonna bump revisions | |||
dalek | p: 3857128 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION: Bump for fix for LOLLY crash on OSX |
08:24 | |
kudo/nom: f532c1d | TimToady++ | src/core/List.pm: scale xx better based on size |
|||
lizmat | testing bumped NQP version now | 08:26 | |
08:27
ClarusCogitatio left
08:28
clkao left
08:29
ClarusCogitatio joined
|
|||
FROGGS | nwc10: The requested URL /apw2014/wikiedit was not found on this server. :o( | 08:30 | |
nwc10: hmm, now it works... weird | 08:31 | ||
nwc10 | odd | 08:32 | |
FROGGS | yeah, maybe the preview is broken only | ||
dalek | kudo/nom: 6e536ac | TimToady++ | src/core/List.pm: couple of buglets in previous patch |
08:34 | |
lizmat | hmmm... serious failures with this NQP version :-( | 08:38 | |
seem to all fail with: Unexpected named parameter 'thunked' passed | 08:40 | ||
08:40
clkao joined
|
|||
lizmat | ah, buglets | 08:40 | |
trying again with latest patch... | |||
08:43
klaas-janstol joined
|
|||
dalek | kudo/nom: ebfe24f | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION: Bump NQP to fix jit/LOLLY problem on OSX |
08:45 | |
TimToady | with these patches, 42 xx 1_000_000 appears to be about 50 times faster | ||
lizmat | still same problems, but seem dependent on TimToady's patches | ||
08:45
ChoHag left
|
|||
lizmat | so bumping anyway | 08:45 | |
fitness, back in ~ 2 hours& | 08:46 | ||
TimToady | and on 10_000_000 at least 100 times faster | ||
will run another fulll spectest | 08:47 | ||
brrt | what is the LOLLY problem? | ||
08:48
ClarusCogitatio left
|
|||
TimToady | doesn't do nqp::getenvhash right when there's no entry | 08:49 | |
08:49
ClarusCogitatio joined
|
|||
TimToady | reproduced test failures here, investigating | 08:49 | |
dalek | kudo/nom: c516d5e | TimToady++ | src/core/List.pm: xx * can also be called with :thunked |
08:57 | |
08:57
brrt left
|
|||
TimToady | looks much cleaner so far up through S17 | 08:58 | |
08:59
brrt joined
|
|||
TimToady | sorry, for some reason I thought that repeat.t was enough testing for xx :) | 08:59 | |
09:00
ClarusCogitatio left
|
|||
TimToady | now just fails the usual two suspects, IO-Socket-Async and uniq | 09:01 | |
09:02
ClarusCogitatio joined
|
|||
TimToady | once this recompiles, you should be able to just about do 'say (42 xx 10_000_00).elems' before camelia times out; takes 2 seconds on my slower machine | 09:03 | |
m: say (42 xx 10_000_00).elems | 09:04 | ||
camelia | rakudo-moar f1a7c6: OUTPUT«1000000» | ||
09:04
brrt left
|
|||
TimToady | oh, that's missing a 0 | 09:04 | |
m: say (42 xx 10_000_000).elems | |||
nwc10 | oh, much spectest fail :-( | ||
camelia | rakudo-moar f1a7c6: OUTPUT«10000000» | ||
TimToady | fetch again | ||
if you're failing array and set | 09:05 | ||
nwc10 | Unexpected named parameter 'thunked' passed | ||
TimToady | that was what I just fixed | ||
nwc10 | ah righto | ||
TimToady | repeat.t doesn't test anything like rand xx * | 09:06 | |
09:07
brrt joined
|
|||
TimToady | m: say (rand xx *)[10] | 09:08 | |
camelia | rakudo-moar f1a7c6: OUTPUT«0.900392391008587» | ||
masak | good antenoon, #perl6 | ||
TimToady | very ante here in California | ||
masak | TimToady: yes, what are you doing up at this unblogly hour? | 09:10 | |
TimToady | speeding up gather and xx | 09:11 | |
masak | \o/ | ||
xxcellent. | 09:12 | ||
jnthn | morning o/ | 09:13 | |
TimToady | m: say (42 xx 20_000_000).elems | ||
camelia | rakudo-moar f1a7c6: OUTPUT«(timeout)» | ||
TimToady | m: say (42 xx 10_000_000).elems | ||
camelia | rakudo-moar f1a7c6: OUTPUT«(timeout)» | 09:14 | |
TimToady | guess I got lucky before | ||
m: say (42 xx 1_000_000).elems | |||
camelia | rakudo-moar f1a7c6: OUTPUT«1000000» | ||
jnthn | TimToady++ # lots of GatherIter patches | ||
09:14
nbrown_ joined
|
|||
TimToady | well, only one really | 09:14 | |
plus removing an unneeded .eager | 09:15 | ||
jnthn | Yes, I was wondering about that...and whether it's really unneeded | ||
TimToady | and it should be a sink() if it were needed :) | 09:16 | |
09:16
brrt left
|
|||
jnthn | hm, good point | 09:18 | |
09:19
nbrown_ left
|
|||
nwc10 | TimToady: yes, pass | 09:19 | |
jnthn is spectesting here also | |||
TimToady | mostly I've been trying to get xx faster, and scale well to large values of N | ||
nwc10 | t/spec/S32-list/uniq.t failed spectest, but seems to be OK when re-run | ||
TimToady | it seems to flap a bit | 09:20 | |
jnthn | Yeah, I've see that too. | ||
TimToady | random coredumps | ||
nwc10 | t/spec/S02-types/multi_dimensional_array.rakudo.moar passes when I set LOLLY | ||
TimToady | that's also expected | ||
nwc10 | t/spec/S32-io/IO-Socket-Async.rakudo.moar is our usual flappy friend | ||
everything else decided to pass | |||
TimToady | about what I got here too | ||
jnthn | .oO( Flappy Test, the hit successor to Flappy Bird... ) |
09:21 | |
TimToady | and that 5-times gather/take speedup was merely paying attention to eager context with the mechanism already there | 09:23 | |
didn't get rid of coro calls, but now call a bunch of them at once, so cache probably stays hotter | |||
09:23
ClarusCogitatio left
09:26
ClarusCogitatio joined
|
|||
jnthn will do a perl6-bench run in a bit and see if there's a nice difference on the xx benchmark :) | 09:28 | ||
09:32
pmurias left
|
|||
TimToady should go to bed before raising the ante on noon much more | 09:33 | ||
zzz & | |||
09:34
ClarusCogitatio left
09:37
ClarusCogitatio joined
09:42
kaleem left
|
|||
timotimo | o/ | 09:47 | |
yoleaux | 01:21Z <japhb> timotimo: If you are still tracking LHF requests, I'm looking for someone to implement PIO.isatty on all backends, so I can rely on the .t (is a TTY) file test. | ||
timotimo | oh | 09:50 | |
do we also have/get isatty for our standard input/output? | |||
sergot | what is 'LHF requests'? | 09:56 | |
Ven | looking for help? | ||
donaldh | low hanging fruit | 09:57 | |
Ven | oh | ||
jnthn | As in, a task that's relatively easy to pick off | 09:58 | |
masak | spectest run: gist.github.com/masak/e3702f7029125394e50c | 10:00 | |
sergot | where is the list? | 10:01 | |
10:01
Ven left
10:03
immortal left,
erkan joined
10:07
Ven joined
10:09
anaeem1_ left
|
|||
lizmat | masak: the first one needs LOLLY=1 | 10:13 | |
the other ones are flappers as far as I can see | |||
(as in, they're ok now, seen them randomly, depending on load, fail in the past) | 10:14 | ||
10:14
spider-mario joined
|
|||
masak | I was not aware of LOLLY=1 | 10:15 | |
10:15
nbrown_ joined
|
|||
masak | but it does indeed work when that env var is set. | 10:15 | |
any reason I wouldn't want to set it permanently? | |||
10:16
bjz joined
10:17
spider-mario left,
Ven left
|
|||
jnthn | TimToady: array_set_xx was 350x slower than Perl 5, now only 21 times slower | 10:18 | |
Marginal improvement on rc-forest-fire | 10:19 | ||
10:19
nbrown_ left
10:22
spider-mario joined
|
|||
sergot | jnthn: could you tell me where is the LHF requests list? | 10:22 | |
is it just on rt? | |||
in | |||
masak is positively surprised by t/spec/S02-types/multi_dimensional_array.t | 10:24 | ||
I didn't know we had that much of multidim in place. | |||
means I'll start using it in code, I guess. | 10:25 | ||
jnthn | sergot: Dunno how many things are now, but in RT we've sometimes tagged things [LHF] | 10:26 | |
In the title | |||
masak: Yes, I need to catch up on what's been happening there too :) | |||
sergot | jnthn++ thanks :) | 10:27 | |
nwc10 | would it be better to make a LHF queue, and move stuff there? | 10:29 | |
something that makes it easy to have a URL which lists LHF | |||
sergot | +1 | 10:31 | |
10:37
Ven joined
|
|||
Ven | masak: migrating code, I guess? | 10:37 | |
10:46
Ven left
|
|||
masak | not sure I understand the question. | 10:46 | |
11:15
nbrown_ joined
11:19
nbrown_ left
11:33
anaeem1_ joined
11:37
iarna joined
11:41
brrt joined
11:44
itz_ joined
11:46
itz left
11:48
psch joined
|
|||
moritz | nwc10: I'm against a LHF queue; I don't know how to view tickets from multiple queues in RT | 11:58 | |
12:00
krunen left
12:01
anaeem1_ left
12:07
mr-foobar left
12:13
xinming left
12:14
xinming joined
12:15
nbrown_ joined
12:16
PotatoGim left
12:20
nbrown_ left,
Akagi201_ joined
12:23
prevost joined,
Akagi201 left
12:24
iarna left,
iarna joined
12:32
dayangkun left
12:38
mr-foobar joined
12:40
FROGGS[mobile] left
12:42
FROGGS[mobile] joined
12:48
iarna left
12:51
dayangkun joined
|
|||
colomon | JSON::Jansson isn't in the ecosystem yet? | 12:56 | |
lizmat | m: class A {}; INIT say "starting"; say A::B # is there a reason this is a runtime error, not a compile time error ? | 13:05 | |
camelia | rakudo-moar c516d5: OUTPUT«startingCould not find symbol '&B' in method <anon> at src/gen/m-CORE.setting:13076 in any find_method_fallback at src/gen/m-Metamodel.nqp:2625 in any find_method at src/gen/m-Metamodel.nqp:944 in block at /tmp/TTfklu9aHM:1» | ||
13:06
JimmyZ joined
13:11
jnap joined
13:12
telex left,
ggoebel11111112 joined
13:14
xenoterracide joined,
telex joined
13:16
ggoebel11111111 left,
nbrown_ joined
13:20
nbrown_ left
|
|||
dalek | kudo-star-daily: 4033bf4 | coke++ | log/ (14 files): today (automated commit) |
13:23 | |
[Coke] | nwc10: I think there's already a URL for that. one sec. | 13:24 | |
13:24
iarna joined
|
|||
[Coke] | rakudo.org/tickets/ //Tickets marked "easy" | 13:24 | |
rakudo.org/rt/easy | 13:25 | ||
though it could use some xss loving. | |||
awwaiid | Happy _why Day! | 13:26 | |
[Coke] | ... it's pretty broken actually. there's some LHF, fix that url. :) | ||
786 new/open tickets in RT. | 13:31 | ||
masak | I think we were near 800 when the RT queue was at its worst somewhere around 2009-2010. | 13:32 | |
but it doesn't feel nearly as bad these days :) | |||
[Coke] | 685 rakudo fudges in roast that don't say "NYI, RT#, unspecced" | ||
masak: ^^ that's why. :P | |||
we're hiding almost as many tickets in the test suite, unopened. | |||
masak | *nod* | 13:33 | |
13:33
xenoterracide left
|
|||
FROGGS | I'd like to do a bugfixathon again soonish... though, would be nice to not do that alone... | 13:33 | |
lizmat | t/spec/S02-types/range.t tests for Range:D:.push and friends | ||
the comments indicate that it should fail because of the immutablility of Ranges | 13:34 | ||
however, it fails for quite different reasons: | |||
m: my $r = 1..5; $r.shift | |||
camelia | rakudo-moar c516d5: OUTPUT«No such method 'shift' for invocant of type 'Range' in block at /tmp/36kaOlOCRx:1» | ||
13:35
iarna left
|
|||
moritz | well, it doesn't have that method because it's immutable | 13:35 | |
so that's kinda OK, IMHO | |||
lizmat | m: my $r = 1..5; $r.unshift(6) | ||
camelia | rakudo-moar c516d5: OUTPUT«Cannot call 'unshift'; none of these signatures match::(Any:U \SELF: *@values, *%_) in block at /tmp/IEJq8R6krq:1» | ||
lizmat | ranges are interpreted by many people to be listy things | 13:36 | |
masak | relevant: arstechnica.com/information-technol...its-flaws/ | ||
lizmat | I would think a better error message would be helpful in that respect | ||
by I guess I am wrong in that respect | 13:37 | ||
masak | the consensus of those answers seems to be "don't upgrade existing code". | ||
lizmat | which is *exactly* what Perl 6 will allow you to do, component wise, once S11 and S22 are fully operational | 13:38 | |
moritz | lizmat: I'm not against better error messages, I just wanted to point out that the tests aren't wrong | ||
PerlJam | +1 for better error messages | ||
lizmat | I would argue that in this case the test is incomplete, because it does not test *why* t failed | 13:39 | |
which is why I'm going through the test-suite | |||
nwc10 | why is that article dated 2014/08/16 but the stack exchange question that it "summarises" is from 1 year aho? | ||
[Coke] | is this the move from dies_ok to throws_like? +1 from me. (and anywhere where the type is adhoc, that's a place to think about improving our exception types) | 13:40 | |
13:40
gfldex joined
|
|||
moritz | well, if the tests become more specific, the specs should reflect that | 13:40 | |
[Coke] | TimToady: some bugs in RT about uniname(), btw. | ||
the specs don't really list what exceptions can be thrown when, do they? | 13:41 | ||
(they probably should) | |||
13:41
kaare_ left
|
|||
[Coke] | S02-lexical-conventions/comments.rakudo.jvm........ still hanging on jvm. | 13:41 | |
[6~[6~[6~ | |||
moritz | [Coke]: not yet | ||
[Coke] | parrot is building again: should we keep rt.perl.org/Ticket/Display.html?id=122436 open? | 13:42 | |
lizmat | S03:3412 states that Ranges are immutable | 13:43 | |
synopsebot | Link: perlcabal.org/syn/S03.html#line_3412 | ||
gtodd1 | [Coke]: yay!! | ||
13:43
gtodd1 is now known as gtodd
|
|||
gtodd | parrot was just resting ;-) | 13:44 | |
13:44
molaf joined
|
|||
dalek | ecs: 775d078 | (Elizabeth Mattijsen)++ | S03-operators.pod: Remove Range :by fossil |
13:45 | |
gtodd | nwc10: the article also says python3 has been "available for 4 years" | ||
or one of the comments | |||
but "Python 3.0 final was released on December 3rd, 2008." | |||
[Coke] | rakudo: Foo::bar(); module Foo { our $x = 42; our sub bar() { $x.say } } | 13:47 | |
camelia | rakudo-jvm c516d5: OUTPUT«(timeout)» | ||
..rakudo-{parrot,moar} c516d5: OUTPUT«(Any)» | |||
nwc10 | gtodd: that's what caused me to go digging | ||
[Coke] | ^^ rt.perl.org/Ticket/Display.html?id=79464 just needs a test and is closable. | 13:48 | |
13:49
guru joined
13:50
guru is now known as Guest91468,
Guest91468 is now known as ajr_
|
|||
[Coke] | r: say NaN===NaN | 13:50 | |
camelia | rakudo-{parrot,jvm,moar} c516d5: OUTPUT«False» | ||
gtodd | nwc10: if you include the time testing and planning new features etc python 3 is a lot closer in age to perl6 than the interweb thinks it is :-) | 13:52 | |
[Coke] | m: multi infix:<===>(NaN \a, NaN \b) { True }; say NaN===NaN | 13:53 | |
camelia | rakudo-moar c516d5: OUTPUT«True» | ||
dalek | ast: 8120b6b | (Elizabeth Mattijsen)++ | S02- (10 files): Last batch of dies_ok -> throws_like cleanup |
||
[Coke] | ^^ is that an ok way to handle that? preferable to putting in logic in the Num variant, aye? | ||
lizmat | it just wears me out too much | ||
afk for a bit& | |||
[Coke] | hugme: hug lizmat | 13:54 | |
hugme hugs lizmat | |||
gtodd | lizmat: don't wear out! | ||
masak hugs lizmat | 13:56 | ||
gtodd | are: multi infix:<===>(NaN \a, NaN \b) { True }; say NaN===NaN | 13:57 | |
oops | |||
msg camelia | |||
[Coke] is spectesting a run with that change. | |||
masak | m: multi infix:<===>(NaN, NaN) { True }; say NaN === NaN | 13:58 | |
camelia | rakudo-moar c516d5: OUTPUT«True» | ||
masak | [Coke]: simpler. | ||
Ulti | neat Cris Fields is pushing to the BioPerl6 repo again >:3 | 13:59 | |
*Chris | |||
gtodd | I like staring at it ... multi infix:<===>(NaN \a, NaN \b) { True }; say NaN===NaN ... | ||
moritz didn't know you could use NaN in a type position | 14:00 | ||
14:02
darutoko- joined
|
|||
gtodd | is this still accurate: rosettacode.org/wiki/List_comprehensions#Perl6 | 14:02 | |
masak | molaf: you can use any value in type position. | 14:03 | |
er, moritz* | |||
m: multi infix:<+>(2, 2) { 5 }; say 2 + 2 | |||
camelia | rakudo-moar c516d5: OUTPUT«5» | ||
moritz | m: multi infix:<+>(2 $a, 2 $b) { 5}; say 2 + 2 | ||
camelia | rakudo-moar c516d5: OUTPUT«5» | ||
moritz | such wow. | 14:04 | |
masak | I argued for that change. it made fibonacci much nicer to write :) | ||
you go `multi fib(0)` instead of `multi fib($ where { $_ === 0 })` | |||
14:05
darutoko left
|
|||
masak | or, hm, I don't know if it's === semantics there. | 14:05 | |
moritz | ~~ iirc | ||
masak | ah, yes. | ||
moritz | well, we've had that feature for a while, but I didn't know it allowed a variable after the expression | ||
TTIAR and all that | |||
masak | m: multi infix:<+>(/foo/ $l, /bar/ $r) { $l ~ $r }; say "the foo says: " + "OH bar HAI!" | 14:06 | |
camelia | rakudo-moar c516d5: OUTPUT«===SORRY!=== Error while compiling /tmp/E8LhjkgcsvCannot use a value type constraints whose value is unknown at compile timeat /tmp/E8Lhjkgcsv:1------> multi infix:<+>(/foo/ ⏏$l, /bar/ $r) { $l ~ $r }; say "the f…» | ||
masak | apparently there are limits. | ||
"whose value is unknown at compile time"? | |||
how is that? I thought a regex was a fairly known thing. | |||
m: multi infix:<+>($l where /foo/, $r where /bar/) { $l ~ $r }; say "the foo says: " + "OH bar HAI!" | 14:07 | ||
camelia | rakudo-moar c516d5: OUTPUT«the foo says: OH bar HAI!» | ||
masak | :) | ||
m: multi infix:<+>($l where /foo/, $r where /bar/) { $l ~ $r }; say 2 + 2 | 14:08 | ||
camelia | rakudo-moar c516d5: OUTPUT«4» | ||
masak ♥ Perl 6 | |||
moritz remembers a time using your own multi with a setting-defined multi wouldn't work reliable | 14:09 | ||
masak | aye. | 14:10 | |
not so long ago. | |||
(whoever fixed that)++ | |||
14:11
JimmyZ left
|
|||
moritz | jnthn++ # seems like a good candidate | 14:11 | |
FROGGS[mobile] | there was also the problem where you got a conflict when trying to import another candidate from a module | ||
moritz | or the same candidate one through a module, once directly | 14:12 | |
FROGGS[mobile] | yeah | ||
(that was the first issue I ran into) | 14:13 | ||
and it took only about two months to fix it | |||
dalek | kudo/nom: a82c407 | coke++ | src/core/Num.pm: NaN === NaN (RT #83622) masak++ for a simplification |
14:14 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=83622 | ||
14:14
grondilu joined
|
|||
dalek | ast: a5a1fcf | coke++ | S02-types/nan.t: Fixed in rakudo |
14:15 | |
grondilu | today I tried again to write a parallel version of mandelbrot. Failed again: gist.github.com/grondilu/9990847 | ||
colomon | grondilu: failed in what sense? | 14:16 | |
grondilu | it appear to fail non-determinastically and when it fails it's with the can not write read-only variable | ||
colomon | under moar? | ||
grondilu | yes | ||
colomon | may well be a moar bug | 14:17 | |
14:17
nbrown_ joined
|
|||
colomon | at least, last time I tried parallel mandelbrot, it worked great under JVM and was glitchy under Moar | 14:17 | |
grondilu | exat error is: | ||
===SORRY!=== | |||
Cannot assign to a readonly variable or a value | |||
colomon: which did you use? | 14:18 | ||
colomon | which what did I use? | ||
grondilu | « last time I tried parallel mandelbrot » | ||
colomon is building jvm | |||
make: *** No rule to make target `j-clean', needed by `clean'. Stop. | |||
Failed running make realclean at /Users/colomon/.rakudobrew/bin/rakudobrew line 23. | |||
I tried jvm and moar. | |||
tadzik | grr | 14:19 | |
I think I'm going to put git clean in there | |||
14:21
iarna joined,
aindilis left,
nbrown_ left,
aindilis joined
|
|||
hoelzro | ahoy #perl6 | 14:24 | |
14:27
PZt left
|
|||
colomon hopes tadzik++ is fixing rakudobrew right now... | 14:28 | ||
tadzik | nah, I'm at work | ||
moritz | m: say NaN === NaN, NaN == NaN | 14:29 | |
camelia | rakudo-moar c516d5: OUTPUT«FalseFalse» | ||
moritz | nonononono | 14:30 | |
after a82c4076057fb543ec5bd56b06be1ffd67796f26, NaN === NaN will say True and NaN == NaN will say False | |||
that's just SO WRONG | |||
how can two things be identical, but not equal? | |||
gtodd | m: my @y; my @x <== 1..5; @x ==> @y ==> { .print } | ||
camelia | rakudo-moar c516d5: OUTPUT«===SORRY!=== Error while compiling /tmp/l52Lg0vVjzSorry, do not know how to handle this case of a feed operator yet.at /tmp/l52Lg0vVjz:1------> my @x <== 1..5; @x ==> @y ==> { .print }⏏<EOL> expecting a…» | ||
colomon | moritz: that's the magic of NaN | ||
14:31
[Sno] left
|
|||
colomon | it's not equal to itself | 14:31 | |
gtodd | oh wait ... "expecting a…" is "expecting any of:" heheh | 14:32 | |
PerlJam | m: say NaN === NaN, NaN eq NaN; | ||
camelia | rakudo-moar c516d5: OUTPUT«FalseTrue» | ||
PerlJam | moritz: will that be better for you? :) | ||
colomon | "A comparison with a NaN always returns an unordered result even when comparing with itself." | ||
en.wikipedia.org/wiki/NaN | 14:33 | ||
gtodd | an easy way to segfault the perl6-m repl is to copy a line from IRC starting with "r:" :-) ... perl6-j gives java.lang.NullPointerException .... | 14:34 | |
PerlJam | weird. | 14:35 | |
I would have thought it would just be taken as a target for goto | 14:36 | ||
gtodd | I think that given the popularity of evalbots the repl should handle r: m: j: in some nice way :-) e.g. "I'm stripping the 'r:' from the start of your line of code ... you shouldn't cut and paste things from IRC bad user" | 14:37 | |
masak | moritz: if you permit, I don't see anything weird in the way NaN behaves now. | 14:39 | |
moritz: IEEE 754 requires that NaN not be numerically equal to *anything*, not even itself. | |||
PerlJam | gtodd: treating it as a label would be a nice way to handle it, and that's what should happen IMHO | ||
masak | moritz: which makes sense, because two NaNs that you got through different computations will, in general, be different. | ||
moritz: but === ignores numerical semantics, and asks "is this *the same thing*?". yes it is. it's NaN, twice. | 14:40 | ||
moritz: meaning, for example, that `$num === NaN` will tell you the truth. | 14:41 | ||
14:42
kaleem joined
|
|||
[Coke] | S29-os/system.rakudo.jvm...........................00-parrot 01-sanity 02-rakudo fudgeandrun harness spec spectest.data | 14:43 | |
dir: cannot access t: No such file or directory | |||
moritz | masak: I guess my error is to assume that $a != $b always implies $a !=== $b | ||
if they aren't equal, how can they be identical? | |||
masak | moritz: no, I think that's an excellent intuition. | ||
moritz: it's just that == for NaN is a special case. | |||
PerlJam | moritz: but, I've already shown that they are "equal" :) | 14:44 | |
masak | moritz: for the sake of mathematical sanity, it will "lie" to you. | ||
moritz: because those two NaN's *are* identical, of course. they're just not equal, because IEEE 754. | |||
moritz | (depends on the NaNs, of course...) | ||
masak | well, can you create two different NaNs in Perl 6? | ||
I hadn't thought about that. | 14:45 | ||
if you can, then they maybe shouldn't be === equal :) | |||
also, in that case, which NaN is NaN? so to speak. | |||
huf | you need a does-she-make-cookies() function to tell them apart | ||
masak | huf: necessary, but not sufficient. | ||
masak makes cookies, yet is not a nan | 14:46 | ||
gtodd | PerlJam: ++ yes , I should have thought of that ... and that would not be special casing things | 14:48 | |
huf | masak: yes, but you're == to yourself | ||
or...? | |||
masak | huf: yes, of course. all non-NaN values are. | ||
gtodd | PerlJam: I am now thinking of it as a label .... of course the core dump still occurs so :-D | 14:49 | |
masak | huf: well -- I'm assuming we're only talking about my numification, nothing else. | ||
huf | there you are then, if it's not == to itself, you check with does-she-make-cookies() and you know which NaN you have :) | ||
masak | all NaNs make cookies. | ||
huf | whoa. TIL. | ||
masak | not many people get that far into IEEE 754. | 14:50 | |
14:50
treehug88 joined
|
|||
[Coke] | m: say +NaN | 14:51 | |
camelia | rakudo-moar c516d5: OUTPUT«NaN» | ||
masak | m: say Inf/Inf | ||
camelia | rakudo-moar c516d5: OUTPUT«NaN» | ||
masak | m: say Inf/-Inf | ||
camelia | rakudo-moar c516d5: OUTPUT«NaN» | ||
moritz | there are signalling and quiet NaNs | ||
[Coke] | m: say +Inf # there are some tickets about this. | ||
camelia | rakudo-moar c516d5: OUTPUT«Inf» | ||
[Coke] | m: say Inf.Int # there are some tickets about this, I mean. | 14:52 | |
camelia | rakudo-moar c516d5: OUTPUT«Cannot coerce Inf or NaN to an Int in method gist at src/gen/m-CORE.setting:13072 in sub say at src/gen/m-CORE.setting:14010 in block at /tmp/R8FE3h5u3q:1» | ||
masak | wow, the error message doesn't know what it failed to convert. | ||
moritz | also, NaNs have some more bits left that could be any value | ||
[Coke] | that looks reasonable to me. | ||
masak | [Coke]: it does, but then you find out the spec isn't reasonable. | ||
[Coke] | (that it errored, not the specifics of the text of the error) | ||
masak | [Coke]: in the spec, Inf is a Num, an Int, and a Str. | 14:53 | |
[Coke] | the spec is an ass. | ||
masak | [Coke]: or at least enough like one to act as the rhs of a range. | ||
masak .oO( enough of the donkey business, spec! ) | 14:54 | ||
14:56
kaare_ joined
|
|||
gtodd | hmm using Perl6::Feeds I experimented with feeds ... but now, using perl6, not all the syntax from en.wikibooks.org/wiki/Perl_6_Progra...eeds#Feeds works as well as in perl5... 8-) ... | 15:04 | |
for the missing bits the the error messages say perl6 can't handle that kind of feed "yet" | 15:06 | ||
OTOH maybe the syntax has changed ... @x ==> @y ==> { .print } doesn't work but @x ==> @y ==> print does .... | 15:08 | ||
TimToady | feeds are "experimental" :) | 15:09 | |
gtodd | oh | ||
well they are nice :-) | |||
feeds ++ | |||
++ ==> feeds | 15:10 | ||
carlin | .oO( experimental... use feature 'feeds'; ) |
15:11 | |
PerlJam | I didn't think feeds did auto-map. | ||
gtodd | for 5.22!! | ||
oops this is the perl6 channel | |||
;) | |||
PerlJam | (at least that's what @foo ==> { .print } looks like to me. | ||
) | |||
masak | at some point, I want to give a talk exclusively about interesting corner cases found in RT tickets. :) | ||
TimToady | the only thing that changed recently was lollipop syntax | ||
masak .oO( Alan Perlis, is that you? ) | 15:12 | ||
15:15
denis_boyun_ left
|
|||
TimToady | @foo ==> map { .print } should work fine | 15:17 | |
15:18
nbrown_ joined
|
|||
masak | m: my @foo = <a b c>; @foo ==> map { .print } | 15:18 | |
camelia | rakudo-moar c516d5: OUTPUT«abc» | ||
masak | yep. | ||
ingy1 | seen jnthn | ||
15:19
ingy1 is now known as ingy
|
|||
masak | ingy: I last saw jnthn last night. | 15:19 | |
ingy: (there were beers) | |||
15:19
fhelmberger_ joined
|
|||
ingy | masak: do you know a lot about p6 parsing? | 15:19 | |
masak | I've lost touch with the NQP internals about two parser overhauls ago. | 15:20 | |
but I write a lot of grammars, if that's what you mean. | |||
ingy | yeah, I'm kinda stuck on a lex vs parse thing, and pinged jnthn about it last night | 15:21 | |
15:22
fhelmberger left
|
|||
ingy | it doesn't involve p6 but I think a p6 mindset is needed | 15:22 | |
masak | ooh, sounds interesting. | ||
15:22
nbrown_ left
|
|||
ingy | I wrote it up (tired) here: gist.github.com/anonymous/31b2017c97abee2c5af0 | 15:22 | |
jnthn | Ah, I glanced that this morning, then got sucked into writing my YAPC::EU talks... :) | ||
ingy | when I woke up (just now) I had a fuzzy conclusion | ||
PerlJam just read "it doesn't involve perl 6, but perl6 people are really smart, so ... " ;) | 15:23 | ||
ingy | that it is ok to pre lex up to the end of a statement | ||
ie the lexing rules won't change mid-statement | 15:24 | ||
15:24
retupmoc1 is now known as retupmoca
|
|||
ingy | ah yes, YAPC::EU | 15:24 | |
and I remember jnthn (or maybe TimToady) saying that p6 rules provides a lexer for you, and I never really got what that meant | 15:26 | ||
and maybe I'm running into that need here | |||
masak | ingy: I read the gist. indeed interesting. | 15:27 | |
ingy: my first thought is: I have no idea. | |||
:P | |||
ingy | cool :) | ||
15:27
zakharyas left
|
|||
TimToady now knows what TimToady's answer would be that ingy is scared of :) | 15:27 | ||
masak | ingy: I believe it's TimToady who said that a p6 grammar induces a lexer. | ||
ingy | masak: but you weren't in that room in tokyo | 15:28 | |
masak | nope. I wasn't. | ||
whatever room that was. | |||
ingy | but maybe you are psychic | ||
masak | or maybe things are said multiple times in different places. | ||
ingy | :D | ||
PerlJam | masak: quick! What are the winning lottery numbers?!? | ||
masak | ingy: maybe a first approximation to what that means is that leaf nodes of the parse tend to be found in `token` declarations. | 15:29 | |
TimToady | no, I never repeat myself | ||
masak | PerlJam: all I'm getting is negative numbers. | ||
PerlJam | it's a sign! | ||
masak | PerlJam: oops, there's an imaginary one. | ||
I think that means we're perpendicular to the actual lottery. | |||
TimToady | i agree | 15:30 | |
PerlJam | we just need to choose a different basis function | ||
masak | PerlJam: sure, as long as you remember to transpose *all* the free variables accordingly. | ||
TimToady | what e said | ||
ingy | some of that problem space also applies to parsing YAML, which I've been working on with some success | 15:31 | |
masak | ingy: what if you turned your problem into one that parses line by line? would something fall out of that? | ||
ingy: I mean, obviously some lines would need to return "carry flag" information. | |||
ingy: like "yes, this line parses, but need to parse the next one in this mode" | 15:32 | ||
ingy | ie YAML also has mixable indent and {} scoping | ||
masak: well {} has no real line need/concept | |||
masak | troo. | ||
ingy | so that's a bit oh the wrench | 15:33 | |
*of | |||
masak | ingy: could you somehow turn the indent into meaningful tokens? | ||
ingy: and then parse on those? | |||
PerlJam | ingy: your problem strikes me as a form of mini-slang. I dunno if that helps | ||
ingy | masak: you are onto something there | ||
masak | ingy: tokens like <same-indent> <more-indent> <outdent 1> | ||
ingy: maybe think of it as a preprocessing step, even if it isn't. | 15:34 | ||
rurban | parrot-6.7.0 released | ||
ingy | indent/ondent/undent I call them | ||
masak | ingy: a preprocessing step that converts the problem into a trivial one :) | ||
ingy | and andent is a continuation dent | ||
masak | rurban++ # parrot-6.7.0 | ||
TimToady | endent feels left out | ||
ingy | masak: now you are getting to the cruxt | ||
TimToady | the crunchy bits! | ||
ingy | preprocessing is desired and yet undesired | 15:35 | |
rurban | parrot: this time only marginal perf improvements, but added some more missing UNICODE name aliases | ||
ingy | TimToady: I'm reserving endent | ||
thought of errdent | |||
TimToady | endent should mean $ :) | ||
ingy | :) | 15:36 | |
masak | ingy: if you're lucky, the preprocessing doesn't actually need to happen. that is, you can hide it behind rules. | 15:37 | |
timotimo | eeeh, so much backlog :\ | ||
ingy | masak: yes | ||
TimToady | timotimo: don't go away for so long next time, silly! | ||
masak | cf accessors, where you don't know if an accessor is something computed, or an attribute slot. | ||
timotimo | TimToady: that sounds like quite the compliment :) | 15:38 | |
ingy | another option is to redefine tokeninzinf ws inside a indent or {} statement context | ||
timotimo | ingy: are you going to look some more into making TestML and YAML work again? | 15:39 | |
ingy | masak: if I'm *really* lucky, jnthn will do this as an example in p6rules | ||
timotimo: certainly | |||
timotimo | sounds good :) | ||
ingy | my p6 breakout is just around the corner | 15:40 | |
always | |||
TimToady | well, that's better than always 20 years away, like fusion | ||
ingy | actually if I can get past this problem, I am getting very close to p6 action | 15:41 | |
nwc10 | how is energy independence? | ||
IPv6, and a few other things... | |||
ingy | hungry time. bbl | ||
timotimo | .o( or General AI ) | ||
nwc10 | yes, good point. AI | ||
PerlJam | I thought masak was the psychic one? | ||
nwc10 | and still no flying cars | ||
masak | I... outsource. | 15:42 | |
15:47
FROGGS left,
FROGGS joined
|
|||
japhb | nwc10: IPv6 is here. It's just unevenly distributed | 15:49 | |
15:49
ajr_ left
15:50
guru joined
|
|||
japhb | (So are flying cars, actually, but considerably more so). | 15:50 | |
15:50
guru is now known as Guest73641,
Guest73641 is now known as ajr_
15:51
dayangkun left
|
|||
masak | it's kind of interesting to read steve-yegge.blogspot.se/2007/02/nex...guage.html 7.5 years later. | 15:53 | |
15:53
ajr_ left
|
|||
timotimo | did he ever say what that language was actually supposed to be? | 15:56 | |
masak | don't think so. | ||
I'm not sure he has/had a particular language in mind. | |||
there's a lot of speculation in the comments. | |||
everything from JavaScript to Perl 6. | |||
timotimo | i wondered about that also | ||
[Coke] | how's that corporate sponsorship thing working out for us? | 15:57 | |
timotimo | js is certainly big | ||
masak | js has already won. | ||
it's not big, it's won. | |||
timotimo | I did not receive my ship in the mail yet | 15:58 | |
masak | all the rest of us can do at this point is to compile to JavaScript. | ||
(pmurias++) | |||
timotimo | it is the assembly of the web, after all | ||
masak | right. or the OS, or the VM. | 15:59 | |
huf | emphasis on the "ass" | ||
but i suppose it was the hero the web needed :) | |||
masak | it doesn't matter exactly what of the web it is. it's the substrate to which we target our compilers so that our code runs on everyone's browser. | ||
wise people treat it as a compiled-to language sooner rather than later, and choose a suitable author language. | 16:00 | ||
huf | yeah. soon we'll forget our grievances, just like the industry eventually accepted PC hardware :) | ||
masak | right! JavaScript is the x86 of languages! | ||
huf | :D | ||
what a great sales pitch | |||
masak | worse is better! it better be! | ||
huf | otherwise where's my lisp machine | 16:01 | |
masak hands huf a lisp machine VM written in JavaScript | |||
huf | :) | ||
running on the browser, yeah | |||
dalek | p: 53583b8 | coke++ | tools/build/PARROT_REVISION: require parrot 6.7.0 |
16:02 | |
[Coke] | man, cloning parrot is slow. | 16:04 | |
masak | [Coke]: remember that if you already have a local repo, you can clone locally. don't know if it applies in your case, but just in case. | 16:05 | |
16:05
ajr joined
|
|||
masak | I know many people who don't know that they can clone locally, and waste a lot of time re-fetching history from ze Net. | 16:05 | |
16:05
ajr is now known as Guest26205,
Guest26205 is now known as ajr_
|
|||
gtodd | how does one do a full rakudo build and grab the latest parrot? perl Configure.pl --backends=moar,parrot,jvm --gen-nqp --gen-parrot --gen-moar --prefix=/home/devbuilder/perl6 ....seems to not grab a new parrot | 16:09 | |
[Coke] | masak: then I have to remember to update my local master. | ||
gtodd: your parrot is new enough, then. | 16:10 | ||
gtodd | oh | ||
[Coke] | if you want to force it, you can do --gen-parrot=master | ||
but unless you're testing/fixing something parrot releated, prolly not worth it. | |||
gtodd | it uses 6.6.0 and breaks somewhere :-) | ||
masak | [Coke]: yes. it'd be local clone + pull. but it'd likely be a lot faster. | ||
gtodd | so I thought I'd try the newer one | ||
thanks | |||
hmm might not really be a parrot thing ... more likely my toolchain ... starting a new build will paste error when it breaks | 16:12 | ||
moritz | for latest parrot, --gen-parrot=master | 16:13 | |
16:16
ajr_ left,
pmurias joined
|
|||
[Coke] | you then have to pre-checkout the repo whenever you want it. too many moving parts for day to day dev. (I automated it for the daily runs so I get the benefit there, anyway) | 16:18 | |
16:18
nbrown_ joined
|
|||
gtodd | ok same old error I've had for a while paste.scsys.co.uk/416737?tx=on&...rmat+it%21 | 16:20 | |
16:20
donaldh left,
bjz left
|
|||
gtodd | not really a parrot thing | 16:21 | |
16:21
bjz joined
|
|||
dalek | p-js: 03e4199 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp: Implement nqp::pow_n. |
16:22 | |
16:22
kaleem left
16:23
nbrown_ left,
Rotwang joined
|
|||
gtodd | I redid the build with --gen-parrot=RELEASE_6_7_0 and it seems to have worked :) | 16:24 | |
16:26
klaas-janstol left
16:27
aoseki left
16:28
klaas-janstol joined
|
|||
[Coke] | the next rakudo release will require that version, so good it fixes something. | 16:31 | |
16:31
akaseki joined
|
|||
gtodd | parrot built not sure if perl6-p is going to go but ... one step at a time :) | 16:31 | |
dalek | rl6-roast-data: 9b8cb15 | coke++ | / (6 files): today (automated commit) |
||
[Coke] | rakudo.parrot failing 71 tests. jvm, 186. moar, 66-67 | 16:32 | |
*sadface* | |||
gtodd | oops same error here on perl6-p | ||
/usr/bin/ld: ../../../../3rdparty/dyncall/dyncall/libdyncall_s.a(dyncall_api.o): relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC | |||
[Coke] | S02-types/multi_dimensional_array.t is aborting 58 tests on all platforms. | 16:33 | |
TimToady | presumably because you haven't set LOLLY=1 | 16:36 | |
masak | what's the big idea with LOLLY=1 ? | 16:37 | |
TimToady | it's a one-release envvar | ||
masak | doesn't everyone want a little lolly in their life? | ||
TimToady | it's a temporary 'use future' | ||
masak | I mean, why is it opt-in? | ||
is it dangerous? | |||
TimToady | to force star to fix all the lollipops | ||
as soon as the modules and the dark6pan fix all the lolligags, they're ready for the new semantics | 16:38 | ||
[Coke] | I shouldn't have to set LOLLY to run the spectests. | 16:39 | |
TimToady | if they want to play with the new semantics, they have to set LOLLY in this release, otherwise they can forget it | ||
masak | I agree with [Coke]. | ||
TimToady | the spectests are playing with the new semantics already | ||
masak | it's wrong that we have spectests failing by default. | ||
[Coke] | I'm fudging that test file so it works with an out of the box rakudo. | ||
TimToady | so don't include that spectest yet | ||
nwc10 | so could the Rakudo makefile set LOLLY to run the spectests? | ||
[Coke] | if someone wants to refudge them so they skip the tests only if lolly isn't set, that's fine. | 16:40 | |
masak | TimToady: what does "fix all the lolligags" mean? | ||
TimToady: what needs to be fixed before this opt-in feature can be the default? | |||
[Coke] | I'm fine with removing that test file from the default spectest run. | ||
TimToady | (foo;bar) that are intended to mean SEQ(foo;bar), not LoL | ||
masak feels like he fell asleep and woke up in a different Perl 6 | 16:41 | ||
TimToady | which the compiler gags on if you don't have LOLLY set | ||
masak | who writes (foo;bar) ? not me. | ||
TimToady | masak: don't go away for so long next time, silly! | ||
masak | I'll... try. | ||
maybe I should backlog harder. | 16:42 | ||
TimToady | apparently a number of test writers do that | ||
masak | OK, let's start over. | ||
TimToady | trying to shoehorn statements into an argument | ||
masak | what does SEQ(foo;bar) mean? | ||
is it spec'd? | |||
TimToady | yes | ||
masak looks | |||
[Coke] | is there an RT for the SEQ stuff? | ||
TimToady | see S02:2462 | 16:43 | |
synopsebot | Link: perlcabal.org/syn/S02.html#line_2462 | ||
masak | ok, it's from yesterday. | ||
16:43
fhelmberger_ left
|
|||
masak | that makes me feel a little better. :) | 16:43 | |
[Coke] | how does one set LOLLY? env? | 16:44 | |
masak | I can live with being one day out of touch. | ||
[Coke]: yes. | |||
I'm happy we're spec'ing these lol things. that's been long in the coming. TimToady++ for that. | 16:45 | ||
[Coke] | r: say "HI" if not $*ENV{lolly} | ||
camelia | rakudo-jvm a82c40: OUTPUT«(timeout)» | ||
..rakudo-{parrot,moar} a82c40: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUndeclared routine: lolly used at line 1. Did you mean 'roll'?» | |||
masak | I'm skeptical about env-varing our way to happiness. but that may or may not be me not seeing the whole picture. | ||
[Coke] | rant: the jvm rakudo in eval is almost useless. :( | ||
masak | [Coke]: <LOLLY> | ||
TimToady | masak: it's very temporary | ||
[Coke] | r: say "HI" if not %*ENV<lolly> | ||
camelia | rakudo-{parrot,jvm,moar} a82c40: OUTPUT«HI» | ||
[Coke] | r: say "HI" if not %*ENV<LOLLY> | ||
masak | [Coke]: CAPS. | ||
camelia | rakudo-{parrot,jvm,moar} a82c40: OUTPUT«HI» | ||
[Coke] | masak: GETTING THERE | ||
masak | OK! | 16:46 | |
TimToady | next release after this one, the lolligag check goes away, and lollipops get the new LoL meaning | ||
masak | (WHY ARE WE WHISPERING???) | ||
[Coke] | TimToady: have you added this to the changelog? | ||
TimToady never touches the changelog | |||
[Coke] | and/or the release announcement? | ||
ok. then please make sure the release manager knows about your plans, or he will be quite irate. | 16:47 | ||
TimToady expects his mom to pick up after him | |||
dalek | ecs: e29e9a1 | masak++ | S02-bits.pod: fix a wee typo |
||
TimToady thinks release managers should backlog occasionally :) | |||
and read the git log | |||
masak | TimToady: in theory, that's what the release guide advises. | 16:48 | |
TimToady: in practice, moritz++ does a lot of the heavy lifting. :/ | |||
TimToady thinks the git log is the real changelog :) | |||
timotimo | git the change you want to log in the world | 16:49 | |
dalek | ast: 40bd158 | coke++ | S02-types/multi_dimensional_array.t: Fudge test so it's runnable LOLLY +/- |
16:51 | |
TimToady | SEQ() is not necessarily the final form of sequential syntax, so some bikeshedding on that is okay; just don't anyone suggest we adopt the C comma operator | ||
[Coke] | ^^ fixed it the right way. | ||
TimToady | how to ship two versions of the product simultaneously :) | 16:52 | |
s/how/how not/ if Bool.pick; | 16:53 | ||
what I really wanted to avoid was declarations that live forever in the program, like "use future" | 16:54 | ||
well, maybe 'use future' is a bad example of that | |||
16:55
aoseki joined,
noganex joined
|
|||
TimToady | BASICPLUS2 had a permanent "extend" statement at the front, and that traumatized me | 16:55 | |
[Coke] | I think you mean 'use feature' ! | 16:56 | |
16:56
bjz left,
ggoebel11111113 joined
|
|||
TimToady | er, I was just confusing perl with python | 16:56 | |
16:56
bjz joined
|
|||
masak | or maybe you meant `from __future__ import...` | 16:57 | |
16:57
pmurias left
|
|||
timotimo | from __future__ import braces | 16:57 | |
16:57
darutoko- left,
pmurias joined
|
|||
masak | timotimo: SyntaxError: not a chance | 16:57 | |
16:58
ggoebel11111112 left,
noganex_ left,
akaseki left
|
|||
TimToady | cool, Cannot reference undeclared local '__lowered_lex_3063' | 16:59 | |
nqp has such lovely error messages | 17:00 | ||
17:01
[Sno] joined
|
|||
TimToady | "That's wrong, here, have a flying butt unicorn." | 17:01 | |
timotimo | at least you can almost immediately see that it's something to do with the optimizer | ||
TimToady | all I'm trying to do is wrap the gather block in another block that traps TAKE exceptions and batches them up before doing the real take | 17:02 | |
17:02
itz_ is now known as itz
|
|||
japhb | camelia: r: my %h = a => "b > c > d"; say %h.perl; %h<a> .= split(/\s*">"\s*/); say %h.perl; | 17:02 | |
camelia | japhb: rakudo-moar a82c40: OUTPUT«("a" => "b > c > d").hash("a" => ("b", "c", "d").list.item).hash» | ||
..rakudo-{parrot,jvm} a82c40: OUTPUT«("a" => "b > c > d").hash("a" => ().list.item).hash» | |||
japhb | ^^ Note the different result for r-j | ||
Current annoying bug of the day. :-) | 17:03 | ||
17:03
klaas-janstol left
|
|||
japhb | Well, I guess r-m is the only one that gets it right. I hadn't even tested r-p locally. Hmmmm. | 17:04 | |
17:11
bjz_ joined,
bjz left
|
|||
pmichaud | a proposed patch for nqp was just posted to the debian rakudo-devel list | 17:12 | |
lists.alioth.debian.org/pipermail/p...00432.html | 17:13 | ||
itz | I wonder if aveuserow/star parrot tests pass with the new version | 17:14 | |
I would guess probably not :) | 17:15 | ||
17:16
xusia left,
gmunoz_ joined
|
|||
itz | s/ave/av/ | 17:17 | |
japhb | r: my %h = a => "b > c > d"; say %h.perl; %h<a> = %h<a>.split(/\s*">"\s*/); say %h.perl; | 17:19 | |
camelia | rakudo-{parrot,jvm,moar} a82c40: OUTPUT«("a" => "b > c > d").hash("a" => ("b", "c", "d").list.item).hash» | ||
17:19
nbrown_ joined
|
|||
japhb | ^^ For what it's worth, r-j and r-p are only wrong when doing .= split; desugaring seems to work around the bug. | 17:20 | |
timotimo | tee hee. .list.item).hash | ||
17:23
nbrown_ left
17:26
Ven joined,
brrt left
17:39
Ven left
17:44
tgt joined
|
|||
ingy | masak: I have a strawman solution | 17:45 | |
I should write it up | |||
masak | :) | ||
17:47
Ven joined
18:03
Rotwang left
|
|||
moritz likes strawberry better than strawmen | 18:04 | ||
18:06
pyrimidine joined
|
|||
Ven wonders why ... | 18:08 | ||
dalek | o: 83674a0 | (Steve Mynott)++ | bin/ufo: fix ufo to work with new compiled suffixes |
18:10 | |
o: 8e72aa3 | (Carl Mäsak)++ | bin/ufo: Merge pull request #17 from stmuk/master fix ufo to work with new compiled suffixes |
|||
Ven | .o( Steve Wynot ) | 18:14 | |
itz | if I had a pound/EU/$ for everytime I'd heard that.. ;) | 18:15 | |
or "lev2 | 18:18 | ||
^ "lev" | |||
nwc10 | Swiss Francs are prettier, and seem to be a better currency of last resort | ||
Ven | I'll give you an inductive profof. works? | ||
proof. not profof. | |||
nwc10: damn these Swiss with their old monies! | 18:19 | ||
18:19
klaas-janstol joined
|
|||
ingy | masak, jnthn, TimToady: Here's my strawman: gist.github.com/anonymous/32ce4746...-swim-L101 | 18:20 | |
It seems pretty elegant. | |||
Huff and puff and blow it down! | |||
18:20
nbrown_ joined
18:22
Ven left
18:24
nbrown_ left
18:31
klaas-janstol left
18:32
kurahaupo_ joined
18:37
molaf_ joined
18:40
molaf left
18:47
Ven joined
|
|||
PerlJam | ingy: doesn't that grammar mean that continued expressions over several lines will gradually walk to the right? (andent says "more than current indentation") Or do the andents not count for indentation? | 18:49 | |
Ven remembers of if and implicit calls in coffee ... | |||
PerlJam | I guess only the latter thing makes sense. nevermind :) | 18:51 | |
19:06
FROGGS[mobile] left
19:21
nbrown_ joined
19:25
nbrown_ left
19:34
treehug88 left
|
|||
carlin | how can I catch SIGINFO or SIGUSR1? | 19:39 | |
19:39
fling left
|
|||
flussence | m: say &signal; say Signal.enums | 19:42 | |
camelia | rakudo-moar a82c40: OUTPUT«sub signal (Signal $signal, *@signals, Any :scheduler($scheduler) = { ... }) { #`(Sub|67669632) ... }("SIGBREAK" => 2, "SIGHUP" => 3, "SIGINT" => 1, "SIGWINCH" => 4).hash» | ||
flussence | That enum type seems kinda short... | ||
jnthn | Sometimes leaving an LHF task for others works out. Sometimes, this happens. :) | 19:43 | |
flussence | I haven't poked around in the rakudo source for a while, maybe I'll go take a look... | 19:44 | |
19:46
[Sno] left
19:50
[particle] left
|
|||
flussence | okay, I know enough about signals to know I don't know enough to touch this :) | 19:56 | |
is there any special meaning to those enum numbers, or are they just sorted by "order people needed these in"? | 19:58 | ||
TimToady | Cast in Order of Appearance | 19:59 | |
flussence | now that I think about it, the same probably applies to posix signal numbers... | 20:02 | |
20:04
telex left
20:05
integral_ left,
integral joined,
integral left,
integral joined
20:06
telex joined
|
|||
gtodd | flussence: Signal.enums is even shorter in perl6-j | 20:07 | |
20:09
woolfy joined
20:11
anaeem1_ joined
20:12
prevost_ joined,
prevost_ left
20:15
tgt left
20:18
rindolf left
20:19
H2O1 joined,
H2O1 left
|
|||
carlin | looks like the actual signal codes are defined in Moar | 20:19 | |
20:22
nbrown_ joined
20:25
PZt joined
20:26
nbrown_ left
|
|||
carlin | so it would involve, adding more signal code to Moar. Adding more const::SIG_XXX to NQP, and mapping the SIGNAMES to the NQP constants in Rakudo | 20:26 | |
20:26
aoseki left
|
|||
carlin | gotta touch all the repos | 20:26 | |
where does Signal.^enum_value_list get defined? | |||
20:26
nickpatc1 is now known as nickpatch
|
|||
jnthn | carlin: That's just derived from the enum declaration. | 20:26 | |
carlin | ah of course, I see | 20:28 | |
I should be able to take a stab at doing this tonight | |||
jnthn | Cool :) | ||
++carlin | |||
flussence | I've got this so far, if it's any help: gist.github.com/flussence/7520b3a659e9cd95fec1 | 20:31 | |
(seems like SIGRTMIN and SIGRTMAX are runtime-defined, fun) | |||
carlin | rakudo does qx/kill -l/.words to get the list | 20:32 | |
gtodd | Signals.enum in perl6-j too! | 20:33 | |
carlin | rakudo: say $*KERNEL.signals | 20:35 | |
camelia | rakudo-moar a82c40: OUTPUT«(Any) SIGHUP SIGINT (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) SIGWINCH» | ||
..rakudo-{parrot,jvm} a82c40: OUTPUT«No such method 'signals' for invocant of type 'Kernel' in block at /tmp/tmpfile:1» | |||
carlin | rakudo: say Signal.enums | ||
camelia | rakudo-{parrot,jvm} a82c40: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUndeclared name: Signal used at line 1» | ||
..rakudo-moar a82c40: OUTPUT«("SIGBREAK" => 2, "SIGHUP" => 3, "SIGINT" => 1, "SIGWINCH" => 4).hash» | |||
20:37
dwarring joined
|
|||
timotimo | m: say nqp::bool_I(1234) | 20:37 | |
camelia | rakudo-moar a82c40: OUTPUT«1» | ||
timotimo | m: say nqp::bool_I(Int) | ||
camelia | rakudo-moar a82c40: OUTPUT«(signal )» | ||
masak read "SIGBREAK" as "SIGBEAR" | |||
20:38
Ven left
20:39
[Sno] joined
|
|||
carlin | SIGBEAR is what you send when you want your program to run faster | 20:40 | |
japhb | m: say &signal # The stringification of the :$scheduler param seems rather verbose | ||
camelia | rakudo-moar a82c40: OUTPUT«sub signal (Signal $signal, *@signals, Any :scheduler($scheduler) = { ... }) { #`(Sub|73661584) ... }» | ||
20:40
prevost left
|
|||
japhb | Any should be assumed, and :scheduler($scheduler) should just be :$scheduler | 20:41 | |
masak | carlin: the program doesn't have to run faster than the bear, only faster than you. :P | ||
japhb | timotimo: Another for your LHF list ^^ | ||
carlin | I was going to say it would only make it run faster than the program next to it | 20:45 | |
japhb | masak: I really like the idea of a SIGBEAR. Next time I write an adventure game, there will totally be a SIGBEAR at some point. | ||
masak | haha | ||
maybe work a SIGHUG in there somewhere, too? | 20:46 | ||
20:46
akaseki joined
|
|||
japhb | That's what you get for saving the poor damsel/beleaguered knight/annoyed camel/take your pick | 20:46 | |
20:47
avuserow_ is now known as avuserow
20:49
[particle] joined,
treehug88 joined
|
|||
japhb is reminded of The Paper Bag Princess | 20:50 | ||
en.wikipedia.org/wiki/The_Paper_Bag_Princess | |||
20:53
guru joined
20:54
guru is now known as Guest74585,
Guest74585 is now known as ajr_
20:58
Sqirrel joined,
anaeem1_ left
|
|||
masak .oO( THANK YOU MARIO! BUT OUR ANNOYED CAMEL IS IN ANOTHER CASTLE! ) | 20:58 | ||
20:59
tgt joined,
kaare_ left
|
|||
japhb | Exactly. | 21:02 | |
21:02
Pleiades` left
|
|||
japhb | It occurs to me it might be nice to have a game where you choose what you're going to save at the beginning and it backfills clues and story interludes to match. A witness that got spit on by the camel, camel footprints turning left at the mysterious intersection, ... | 21:04 | |
ingy | PerlJam: andents don't add to the indentation stack | 21:06 | |
they just match one indentation great than the current level | |||
japhb | "Today I plan to save a __(noun)__ from the horrible __(noun)__ in the __(adj)__ __(noun)__. | ||
ingy | so no cascade | ||
PerlJam: there's an error in the grammar though. see if you can find it :) | 21:08 | ||
bbl | |||
21:10
Pleiades` joined
|
|||
pmurias | masak: I have thought a bit about the JavaScript vs others as the author language, and I think that if Perl 6 is intended to be a sensible JavaScript replacement (as the author language) we will need to have some advantage that would justify introducing the layer of indirection | 21:11 | |
masak | aye. | ||
a nice Angular-like framework could be it, perhaps. | 21:12 | ||
dalek | kudo/nom: 1a7f85b | TimToady++ | src/core/List.pm: don't try to make a batch of size 0 |
||
masak | I wouldn't mind writing my application in Angular, except the JavaScript is Perl 6. | ||
pmurias likes Angular too | |||
21:12
gfldex left
|
|||
pmurias | would it be possible to create a significantly better Angular? | 21:16 | |
japhb | Somehow it makes me considerably more interested in learning this particular JS product knowing that people from the Perl 6 world like it. Might not drive me insane, as many frameworks have .... | 21:20 | |
masak | japhb: in brief: AngularJS lures you in with the shiny (data binding, expression language, dependency injection), and then as you settle into it turns out to have a surprisingly solid "Angular Way" discipline to it that makes writing straight-up JavaScript almost bearable again. | 21:22 | |
21:22
nbrown_ joined
|
|||
masak | having said that, I'd rather be writing straight-up Perl 6, I think. | 21:23 | |
as to whether it would be possible to create a significantly better Angular, I have no idea. | 21:24 | ||
japhb | "straight-up" meaning no e.g. JQuery, or meaning not e.g. coffeescript? | ||
masak | the latter. | ||
japhb | Ah, OK. | ||
masak | re jQuery though, Angular recognizes how common it is to need it. | ||
timotimo | is the segfault in S32-list/uniq.t known? | ||
masak | so it supplies its own minimal variant, and if you end up loading the actual jQuery, it steps back and lets it take its place. | ||
japhb | I friend of mine used to say he wrote his web code "in jQuery" instead of in JavaScript, since really most of the time he was living in the sugar. | 21:25 | |
masak | japhb: I see that a lot. | ||
japhb: I teach a bunch of JavaScript. people know jQuery a lot better than they know the underlying language. | 21:26 | ||
PerlJam resembles that remark when he has to write JS | |||
japhb is not surprised by that | |||
21:26
nbrown_ left
|
|||
masak | I tend to leverege it by showing how jQuery exploits a variety of quirks in JavaScript to do what it does. | 21:26 | |
TimToady | t/spec/S02-lexical-conventions/comments.rakudo.jvm seems to be hanging these days | ||
japhb | I can, if forced, write raw DOM and events code. But my immediate reaction to being asked to do so is to pushd back hard. Because, ewww. | 21:27 | |
masak | japhb: it's just not cost-effective most of the time. | 21:28 | |
japhb | Very much agreed. | 21:29 | |
masak | japhb: though it *is* getting less and less ridiculous as browsers build more stuff into the DOM layer. | ||
japhb: there is a small but growing "Vanilla JS" movement brewing. | |||
japhb | Especially when the cost is some of my sanity points. | ||
21:29
treehug88 left
|
|||
masak | but the consensus is still that for "end users" (web authors), jQuery should very much be the go-to default. | 21:29 | |
for library writers, it depends. | 21:30 | ||
pmurias | masak: there is angularjs for dart | ||
masak | pmurias: also known as AngularDart, yes. | ||
japhb | Things must have gotten a whole hell of a lot better in the browsers since the last time I had to real vanilla JS. | ||
masak | pmurias: I don't care much for Dart, though I know some people do. | ||
pmurias | so what's your prefered JS replacement? | ||
masak | pmurias: I'm still shopping around. but I do like TypeScript for various reasons. | 21:31 | |
japhb: yes. yes, they have. | |||
japhb: vanilla-js.com/ is tongue-in-cheek, but makes a worthwhile point. | 21:32 | ||
pmurias | masak: why do you dislike Dart? | ||
dalek | kudo/nom: 18429d5 | TimToady++ | src/core/List.pm: just do a straight eager rpa write, 10% faster No point in involving gather/take at all when we know this is eager. Could probably speed this up further if we had low-level memory copying of rpa pointer data, so we could batch the memory initialization. Actually, this runs 10% faster on Moar, but a little slower on JVM than previous. We'll optimize for the better optimizer at this point, which is Moar's. Presumably the JVM's optimizer will catch up sooner or later. |
||
TimToady | t/spec/S02-lexical-conventions/comments.rakudo.jvm only hangs when run in harness; works find standalone, so probably evalserver is blocking | 21:35 | |
PerlJam wonders what "rpa" is since the only thing it expands to in my head is parrot-specific. | |||
masak | pmurias: I think Dart is not ambitious enough as a JavaScript replacement. ES6 feels about as ambitious, and more likely to gain marketshare. | ||
TimToady | well, there's a lot of code that still say 'rpa' to mean whatever the VM's lowlevel array typ eis | ||
[Coke] | why $rpa? callback to resizablepmcarray? | 21:36 | |
oh. | |||
[Coke] catches up. "when is this?" | |||
jnthn | There's a lot of code living in the $past too... :) | ||
TimToady | nowadays it's a Resizable nqP Array | ||
PerlJam | How about we just call it RA and open up the space for sun-god puns? :) | 21:37 | |
japhb | masak: chuckling at Vanilla JS referring to the various frameworks as "Vanilla JS Plugins" | ||
masak | pmurias: minor points: (a) void main()? really? (b) they had the chance to introduce static types, and they made them into hints? (c) what would possibly posses Apple or Microsoft or Mozilla to start supporting Google's JavaScript-killer language natively in their browser? | 21:38 | |
japhb: :) | |||
TimToady | Three cheers for the sun god! He sure is a fun god! Ra! Ra! Ra! | ||
pmurias | masak: re (c) - there is dart2js which seems to produce code without a performance penalty | 21:39 | |
without a signifcant performance penalty | |||
masak | pmurias: that's great. so Dart is another author language that compiles to JS. as such, it's not terribly impressive. | ||
(IMHO) | 21:40 | ||
pmurias | masak: and I think Google could easily bully Mozilla to add Dart to firefox | ||
masak | guess we'll have to wait and see. | ||
that *would* make it more interesting, though. | |||
maybe the web would somehow be helped by having two native languages. | |||
PerlJam doubts it | 21:41 | ||
I mean ... we could have had *BASIC* as one of the web languages ;) | |||
japhb | PerlJam: That depends on whether the second one is good enough to trigger the first back into rapid innovation mode. Like V8 did for ... well, everyone else's JS implementation. | 21:42 | |
masak | yeah. | ||
though EcmaScript is definitely in rapid innovation mode now. | |||
pmurias | Dart seems a better Perl6 compilation target | ||
masak | pmurias: hm. hadn't considered that. | 21:43 | |
pmurias: if you finish a Dart backend before the JS one, I will officially be interested in Dart. :> | |||
PerlJam | heh | ||
21:48
Ven joined
|
|||
Ven | masak: re "people know jQuery a lot better than they know the underlying language." <- you tell me :-). I often get downvoted on Stackoverflow because I say something in angular "works like in js" without re-explaining the whole js stuff | 21:49 | |
or we get people asking coffee questions "I create two instances, push to the first, it's also in the second's" well, if you set the property on the constructor's prototype .. | 21:50 | ||
I'm kinda scared by Perl6, but I'd really rather avoid writing JS :-). | |||
masak | Ven: understanding the underlying data model of a language is invaluable. otherwise, one is likely to have to live with weird aliasing problems and roundabout hacky solutions. | 21:52 | |
Ven | but I'm not sure if we can leverage Angular in p6(-js). Every other altJS that's not "just a bit prettier" (coffee, dart, ts, etc) have icky interfaces | ||
because angular relies pretty heavily on JS being JS. | |||
masak | Ven: much of what I teach in the JavaScript courses is how JavaScript actually does things. people are generally very grateful -- no-one ever explained these things to them. all they had was StackOverflow and (shudder) w3schools. | 21:53 | |
Ven | .o( yer a jquery w3fools, harry ) | ||
I actually most often that not don't include jQuery. But I have this big advantage: I don't care about older browsers. | 21:54 | ||
masak | Ven: yes, AngularJS makes a good case of "preserving" the JS part while enhancing it with structure. I don't think we can pull that off with Perl 6. | ||
21:54
pyrimidine left
|
|||
pmurias | Ven: which Perl 6 features do you think I'll have a hard time implementing in rakudo-js? | 21:55 | |
Ven | as for dart in browsers ... Not going to happen. Not even dart in chrome is going to happen :-). the chrome lead dev is very much against it | ||
hoelzro | pmurias: anything dealing with concurrency =/ | ||
Ven | pmurias: everything nonbasic, actually. | ||
hoelzro | </2c> | ||
masak | so maybe the slogan "an AngularJS for Perl 6" is not so useful. but here's what I want: I want (a) the whipuptitude of AngularJS, but (b) writing Perl 6 application logic. then fill in the blanks. :) | ||
Ven backlogged enough so that he read masak++'s answer online instead of in his irc client :-) | 21:56 | ||
pmurias: dispatching is going to be painful and costful. capturing functions with correct `this` and such. corner-cases of destructuring arrays/hahes/instances, named args, ... | 21:57 | ||
the flattening operator. multi-indices indexing. HyperWhatever, `;` and `;;`. | |||
21:59
klaas-janstol joined
|
|||
Ven | containers are going to be insanely hard to optimize. I've got no clue about these - at all. Implementing an efficient `~~`. Simulating `my` (would need js' `let`.). Dynamic variables. lazy arrays. infinite arrays. And blah, blah, blah. | 21:59 | |
masak | Ven: re js' `let` -- turns out ES3's `catch` blocks have block scope! and you can use them to emulate `let`. | 22:00 | |
crazy, I know. | |||
Ven | masak: that's true ... except in JScript :-). | ||
masak: don't expect to teach the monkey how to make faces :p | 22:01 | ||
masak | what, IE's engine? | ||
is that, like, IE below some given version, even? | |||
Ven | 'think so. And the old embedded JS stuff. and wsh | ||
masak | ok, then I don't care much at all. | 22:02 | |
Ven | github.com/jashkenas/coffeescript/pull/1476 | ||
masak: also, github.com/jashkenas/coffeescript/issues/2422 . | |||
so, yes, I know how es3's catch works, but it's a terrible idea to use that to emulate `let`. | 22:04 | ||
I'd much rather do something SSAF-y (somewhat) where you generate new names for inner 6scopes. | 22:05 | ||
22:07
araujo left
22:08
araujo joined
22:10
tgt left
|
|||
masak | Ven: interesting. | 22:11 | |
Ven: I only recently learned about the subtle interaction between let declarations and function hoisting. now there's a corner case I didn't see coming. | 22:12 | ||
Ven | well, I only learned recently that you can re-declare variables that appear in the arglist (`fn (foo) { var foo; }`) and keep the value! how terrible :-) | 22:14 | |
pmurias | masak: emulating my with 'catch' blocks - that's a horrible idea as try/catch disables optimalisation in v8 | ||
Ven: re my I'm already doing that | 22:16 | ||
ingy | PerlJam: the fixed bug is here: gist.github.com/anonymous/5ab0fe69...-swim-L136 | ||
Ven | yay ;-) | ||
pmurias | Ven: just by (function() {})() for introducing a perl6 block | 22:17 | |
masak | pmurias: depends how much you value the semantics, I guess. Traceur does exactly that, for example. and there's been talk about optimizing exactly that case in v8, because people are starting to compile to it. | ||
pmurias | named arguments I emulate by passing a named arguments hash | 22:18 | |
dynamic variable I emulate by having a ctx argument containing the dynamic lexicals | 22:19 | ||
jnthn | pmurias: fwiw, NQP is really pretty good by now at optimizing away lexical scopes that aren't needed, and Rakudo will converge towards that with time, so compiling a QAST::Block into a function to get the lexical scope semantics will be a good choice. | 22:20 | |
Heck, NQP is good at optimizing away *lexicals*. | |||
pmurias | jnthn: good ;) | ||
jnthn: it turn them into local which I compile into lexicals anyway ;) | 22:21 | ||
Ven | the this-passing will become costly in the long run, I believe. | ||
jnthn | pmurias: heh, yes :) | ||
pmurias: Moar cares a bit more :) | 22:22 | ||
pmurias | generally emulating features requires either a performance penalty or good static analysis | ||
22:23
nbrown_ joined
|
|||
jnthn | bbi10 | 22:23 | |
pmurias | bbi10? | 22:24 | |
Ven | be back in 10, I'd say | ||
geekosaur | be back in 10 (minutes)? | ||
Ven | welp. | ||
pmurias | the good thing about v8 is that it has a lot of performance we can sacrifice | 22:25 | |
22:27
nbrown_ left
|
|||
japhb | I had a FOAF who retrofitted a turbine engine to a normal car chassis. He drove around town with the turbine basically idling and brake pressure determining speed. You appear to be recommending the same, except s:g/turbine/V8/. | 22:28 | |
Ven | pmurias: well, we're deep into SufficientlySmartCompiler's field :-) | ||
22:28
klaas-janstol left
|
|||
Ven | .o( I got 99 problems but nqp's SufficientlySmartCompilerCompilerGenerator ain't one ) | 22:29 | |
pmurias | nqp currently isn't a very smart compiler | ||
Ven | that was mostly a reference to futamura's projections -- I guess I should've said "pypy" instead of nqp there. | 22:30 | |
22:31
Psyche^ joined
22:33
klaas-janstol joined
22:35
Psyche^_ left
22:40
iarna left
|
|||
masak | japhb: that reminds me about a Darwin award Liz told a bunch of us about. | 22:41 | |
FROGGS | masak: I remember too :o) | 22:46 | |
masak | www.darwinawards.com/darwin/darwin1995-04.html | ||
I'm not terribly shocked to learn this particular one wasn't true. | 22:49 | ||
22:56
xragnar left
22:59
xragnar joined
23:01
dwarring left
|
|||
[Coke] | pmurias: are you at a point where folks can help? | 23:02 | |
(with rakudo-js) | |||
timotimo | m: say "foo" xx -1 | ||
camelia | rakudo-moar 18429d: OUTPUT«MVMArray: Can't resize to negative elements in sub infix:<xx> at src/gen/m-CORE.setting:8720 in block at /tmp/UF1Xx0gOHy:1» | ||
timotimo | ^- that way a bunch of spectests explode | 23:03 | |
and i've been thinking i broke something %) | |||
timotimo looks for a good fix | |||
TimToady | ah, probalbly my fault | 23:07 | |
23:08
pmurias left
|
|||
timotimo | yup :) | 23:09 | |
i've got you covered, though | |||
there are some more failures, it seems. maybe i need to put a abort-if-negative into a different multi candidate, too | 23:10 | ||
# at t/spec/S32-array/exists-adverb.t line 31 | 23:12 | ||
# got: (Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True).list.item | |||
# expected: $(Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True, Bool::True) | |||
i don't think this is my fault :) | |||
dalek | kudo/nom: 2204422 | (Timo Paulssen)++ | src/core/List.pm: return an empty list for foobar xx -1 |
23:13 | |
23:14
aoseki joined
|
|||
labster | rn: say ".pl".succ | 23:16 | |
camelia | rakudo-{parrot,jvm,moar} 18429d: OUTPUT«.pl» | ||
..niecza v24-109-g48a8de3: OUTPUT«WTF» | |||
labster | niecza is the most suprising, but I was expecting ".pm" | ||
23:17
akaseki left
|
|||
TimToady | see S03:426 | 23:20 | |
synopsebot | Link: perlcabal.org/syn/S03.html#line_426 | ||
labster | Just noticed it myself TimToady. | ||
I also noticed that .succ and .pred need to be documented in S32::Str, which I should probably do. | 23:21 | ||
masak | 'night, #perl6 | 23:22 | |
labster | 'night masak | ||
23:24
nbrown_ joined
23:27
klaas-janstol left
|
|||
timotimo | oh hey labster :) | 23:27 | |
23:28
nbrown_ left
23:29
j4jackj left
23:31
spider-mario left
|
|||
timotimo | TimToady: can you look into the exists-adverb thing? | 23:32 | |
TimToady | sure | 23:33 | |
timotimo | looks kind of similar to something you'd be involved in, or mouq? maybe lizmat? | ||
23:36
Colby` joined,
telex left,
Pleiades` left,
Colby` is now known as Pleiades`,
telex joined
|
|||
labster | hi timotimo! | 23:44 | |
timotimo | i think i haven't seen you in here for a long time | ||
labster | busy with $dayjob mostly. | 23:45 | |
YAPC::NA gave me enough time to unbust my P6 modules, but I've been knee deep in a pile of old Perl 5. | 23:46 | ||
23:57
Ven left
23:58
[j4jackj] joined
|