»ö« 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! Set by masak on 12 May 2015. |
|||
skids | m: use nqp; sub a ( \a ) { 42.say }; a(Failure.new); | 00:07 | |
GLRelia | rakudo-moar abf079: OUTPUT«42» | ||
camelia | rakudo-moar 93418e: OUTPUT«42» | ||
skids | m: use nqp; sub a ( \a ) { nqp::push(IterationBuffer.CREATE, a) }; a(Failure.new); | ||
GLRelia | rakudo-moar abf079: OUTPUT«FailedActually thrown at: in block <unit> at /tmp/ld6fgKt2jZ:1» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/0NUwHX642AUndeclared name: IterationBuffer used at line 1» | ||
skids | m: use nqp; my \a ::= Failure.new; nqp::push(IterationBuffer.CREATE, a); | ||
GLRelia | ( no output ) | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/0qXoexjqKOUndeclared name: IterationBuffer used at line 1» | ||
skids | o.O I'm actually... stumped. | 00:08 | |
00:10
aborazmeh left
00:15
aborazmeh joined,
aborazmeh left,
aborazmeh joined
00:17
laouji joined,
AlexDaniel joined
00:18
raiph joined,
KCL_ joined
|
|||
skids | m: use nqp; sub a ( $a ) { nqp::push(IterationBuffer.CREATE, $a) }; a(Failure.new); # \o/ | 00:18 | |
GLRelia | ( no output ) | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tOB65fZEyiUndeclared name: IterationBuffer used at line 1» | ||
skids | Failure + sigilless param + nqp:: op makes bad mojo. | 00:19 | |
raiph | Mu does Numeric; # Cannot use 'does' operator with a type object. | 00:20 | |
The correct way to applies roles to type objects is at declaration time class GrassmannNumber does Numeric { ... } | |||
Sorry, that's scrambled | |||
"The correct way..." is from doc.perl6.org/type/X::Does::TypeObject | 00:24 | ||
00:27
LordVorp left
00:29
aborazmeh left
00:31
aborazmeh joined,
aborazmeh left,
aborazmeh joined
00:39
laouji left,
laouji joined
00:43
laouji left
00:44
laouji joined
00:46
bjz joined
|
|||
TimToady | .tell jnthn lists should just match literally, and we should have an explicit list pattern type, or extend regex to cover Positional matching | 00:46 | |
yoleaux | TimToady: I'll pass your message to jnthn. | ||
00:48
bjz left
|
|||
timotimo | oh, huh. i was going to do the weekly some time today, but suddenly it turned 3am | 00:53 | |
00:57
bjz joined
00:58
bjz left
|
|||
dalek | c: d494fbd | skids++ | lib/Type/X/Does/TypeObject.pod: Fix and flesh out X::Does::TypeObject, raiph++ |
00:58 | |
00:58
BenGoldberg joined
|
|||
ugexe | is there a way to show the normal failure message if --ll-exception is set? | 01:00 | |
01:02
AlexDaniel left,
AlexDani` joined
|
|||
ugexe | i want to use --ll-exception so if a module is not found it exits non-zero, but i dont want to show the entire dump of --ll-exception | 01:03 | |
module not found while using Test.pm^ rather | |||
skids | ugexe: maybe a "use fatal" may catch a failure early? | 01:25 | |
01:40
cognominal left
|
|||
skids | Aha. It's just: | 01:42 | |
m: use nqp; sub a ( $a ) { return $a }; a(Failure.new); | |||
GLRelia | ( no output ) | ||
camelia | ( no output ) | ||
skids | m: use nqp; sub a ( a ) { return a }; a(Failure.new); | 01:43 | |
GLRelia | rakudo-moar abf079: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xWmwPrWhkzInvalid typename 'a' in parameter declaration.at /tmp/xWmwPrWhkz:1------> 3use nqp; sub a ( a7⏏5 ) { return a }; a(Failure.new);» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/MdqEarOBDsInvalid typename 'a' in parameter declaration.at /tmp/MdqEarOBDs:1------> 3use nqp; sub a ( a7⏏5 ) { return a }; a(Failure.new);» | ||
skids | oh | ||
m: use nqp; sub a ( \a ) { return a }; a(Failure.new); | |||
GLRelia | rakudo-moar abf079: OUTPUT«FailedActually thrown at: in block <unit> at /tmp/H_mFUXaV37:1» | ||
camelia | rakudo-moar 93418e: OUTPUT«FailedActually thrown at: in block <unit> at /tmp/WZPf21pu3M:1» | ||
01:44
llfourn joined,
ilbot3 left
01:46
ilbot3 joined
01:49
llfourn left
01:58
dayangkun joined
02:16
cognominal joined,
blackcat_ joined
02:20
KCL_ left
|
|||
jnthn made it to Tokyo | 02:22 | ||
yoleaux | 00:46Z <TimToady> jnthn: lists should just match literally, and we should have an explicit list pattern type, or extend regex to cover Positional matching | ||
skids | o/ from the other side of the world | 02:24 | |
lizmat | jnthn o/ | ||
jnthn is crazy tired because he was sleep deprived before the trip and can't sleep on planes | 02:25 | ||
skids | I won't bother you with my probably-nqp-or-optimizer problem now then :-) | ||
jnthn | No, don't :P | 02:26 | |
I did get upgraded to economy plus, which mean I had a power socket | |||
So I wrote a little code... | |||
TEttinger | jnthn: maybe you'll dream about the GLR. Godzilla List Refactoring | 02:27 | |
02:28
noganex_ joined
|
|||
dalek | p: 87d8a61 | jnthn++ | src/vm/jvm/ (2 files): Add new control exception types for JVM. To support new async features in Perl 6. |
02:30 | |
p: d85cdc4 | jnthn++ | / (2 files): Bump MOAR_REVISION; add new control exceptions. |
|||
02:31
noganex left
|
|||
dalek | kudo/nom: ec640d5 | jnthn++ | src/core/Proc/Async.pm: Tweaks to avoid conflict with new supply syntax. |
02:31 | |
kudo/nom: f996bbf | jnthn++ | src/Perl6/ (2 files): Stub in supply { ... } syntax. |
|||
kudo/nom: 5400fce | jnthn++ | src/Perl6/ (2 files): Stub in whenever syntax. |
|||
kudo/nom: e838194 | jnthn++ | src/Perl6/ (2 files): Stub in QUIT phaser. |
|||
kudo/nom: 207399e | jnthn++ | tools/build/NQP_REVISION: Get NQP_REVISION with new control exceptions. |
|||
kudo/nom: fb20929 | jnthn++ | src/core/ (3 files): Initial implementation of supply/whenever. Already covers a good amount of the design laid out in my S17 gist, including LAST and QUIT phasers inside of whenever blocks, multiple whenever blocks, concurrency control, etc. Note that the emit and done control exception subs ended up as supply-emit and supply-done for now, since rather unfortunately the name 'done' is used in Test.pm. I guess S17 might win the keyword away from testing stuff, but for now this avoids any confusion. |
|||
kudo/nom: 7bf7457 | jnthn++ | t/spectest.data: Run S17-supply/syntax.t. |
02:32 | ||
kudo/nom: 1f15ace | jnthn++ | src/core/Promise.pm: Implement Promise.Supply. |
|||
kudo/nom: 0e8fbd5 | jnthn++ | src/core/Supply.pm: Coerce whenever expression to a Supply. This means whenever $promise -> $result { } works. |
|||
kudo/nom: 7cda449 | jnthn++ | src/ (3 files): Add tentative `react` block. The supply block is great for processing stages, but you'll often have some kind of "top level" in an asynchronous application - or those new to the Perl 6 asynchronous features will want an easy way to play with things. Creating a Supply to immediately wait on it would thus be a really common pattern. `react { ... }` does that, warns on bogus emit usages, and throws any unhandled async exception in the react. |
|||
jnthn | And that's all I managed on the plane ride :P | ||
lizmat | :-) | ||
ShimmerFairy | jnthn++ a "little" code | ||
lizmat | no wonder you didn't sleep | ||
:-) | 02:33 | ||
jnthn | Oh, I basically never can on planes... :( | ||
ShimmerFairy | jnthn: my initial thought is that Test.pm should be doing its sub done {...} stuff in a phaser anyway :) | ||
lizmat pulls and builds new goodies | |||
skids | Now there's an airdrop for ya. Or Air Supply. Ta dum dum. | 02:34 | |
jnthn | gist.github.com/anonymous/6607717a5d201a9acf82 is a little run-my-tests-when-I-change-anything tool to show off the new features :) | ||
ShimmerFairy | jnthn: I like how $running-tests is basically a mutex (based on my limited concurrency knowledge), but you don't have to use a special mutex type or anything :) | 02:38 | |
02:42
skids left
|
|||
jnthn | Yeah, well, it's kinda time do drag async programming kicking and screaming into the structured programming era. :) | 02:42 | |
*to | |||
ok, bed :) | |||
o/ | |||
ShimmerFairy | jnthn: I would agree. ♞ o/ | ||
lizmat | hmmm... IO::Socket::Async now also hangs on nom? | 02:45 | |
ShimmerFairy | The Async test has been failing for me for a while, at least | 02:46 | |
lizmat | ShimmerFairy: failing, yes, but hanging ? | ||
ShimmerFairy | Not unless make spectest has a timeout for tests. | 02:47 | |
lizmat | ah, there were two processes still running after I killed the spectest | ||
2 version of the IO::Socket::Async test | |||
killing them made the test pass | 02:48 | ||
so it's a matter of a test not cleaning up after itself / not setting up a clean environment beforehand | |||
ShimmerFairy | Could that be the issue with the S17 lock test? I notice it has a tendency to fail on use of TEST_JOBS | 02:49 | |
lizmat | no, that's a race / load condition, afaik | ||
ShimmerFairy | m: say :a{1=>2} | 02:51 | |
camelia | rakudo-moar 93418e: OUTPUT«Unexpected named parameter 'a' passed in block <unit> at /tmp/PNDnWAD1Q6:1» | ||
GLRelia | rakudo-moar abf079: OUTPUT«Unexpected named parameter 'a' passed in block <unit> at /tmp/V5EQTspFCV:1» | ||
ShimmerFairy | S26 claims that's valid pair notation, but I don't think I've ever see anyone use it | ||
m: say (:a{1=>2}) | 02:52 | ||
camelia | rakudo-moar 93418e: OUTPUT«a => 1 => 2» | ||
GLRelia | rakudo-moar abf079: OUTPUT«a => 1 => 2» | ||
ShimmerFairy | Nevermind, it was just pair/named conflation again e_e | ||
02:52
llfourn joined
03:02
kaare_ joined
03:03
travis-ci joined
|
|||
travis-ci | Rakudo build errored. Jonathan Worthington 'Add tentative `react` block. | 03:03 | |
travis-ci.org/rakudo/rakudo/builds/76217175 github.com/rakudo/rakudo/compare/1...da449465b7 | |||
03:03
travis-ci left
|
|||
lizmat | something hanging | 03:05 | |
"No output has been received in the last 10 minutes, this potentially indicates a stalled build or something wrong with the build itself." | 03:06 | ||
after the make test | |||
and one make test fail | |||
same as I see locally | |||
03:10
aborazmeh left
03:15
mr-foobar left,
grondilu joined
03:17
ingy left
|
|||
dalek | ast: 5787447 | lizmat++ | S (4 files): Remove unneeded "done" to easy migration |
03:18 | |
03:19
xxx joined,
ingy joined
03:24
mr-foobar joined
03:29
Brock is now known as awwaiid
|
|||
awwaiid | fancy feature demo thingie you got there jnthn! | 03:31 | |
03:36
jordman joined
03:40
laouji left
03:42
aborazmeh joined,
aborazmeh left,
aborazmeh joined
03:43
BenGoldberg left
03:54
khw left
03:56
Woodi left
03:57
Woodi joined
04:31
laouji joined
|
|||
moritz | good morning | 04:44 | |
lizmat | moritz o/ | 04:55 | |
dalek | kudo/nom: ad0f6f3 | lizmat++ | lib/Test.pm: Deprecate done() for done-testing() Since done() should only be called when you don't have a plan, and you should most definitely always have a plan, it feels right to de-huffmanize done() to make room for the new supply related done(). |
05:02 | |
ast: f4f4af1 | lizmat++ | S32-trig/generate-tests.pl: Use done-testing instead of done |
05:05 | ||
ast: 04520b2 | lizmat++ | S32-trig/ (13 files): Re-generated files with done-testing |
|||
ast: 5b4f138 | lizmat++ | S24-testing/6-done_testing.t: Replace last 'done' with 'done-testing' Roast should now be free of 'done' to indicate end of testing |
05:07 | ||
05:07
travis-ci joined
|
|||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Deprecate done() for done-testing() | 05:07 | |
travis-ci.org/rakudo/rakudo/builds/76227430 github.com/rakudo/rakudo/compare/7...0f6f332ae3 | |||
05:07
travis-ci left
|
|||
dalek | kudo/nom: 83daf83 | lizmat++ | docs/ChangeLog: Mention deprecation of Test's done() |
05:09 | |
ugexe | github.com/rakudo/rakudo/blob/nom/...st.pm#L645 | 05:12 | |
lizmat | ugexe: good catch | 05:14 | |
05:16
xxx left
05:17
mr-foobar left
|
|||
dalek | kudo/nom: 5ad8122 | lizmat++ | lib/Test.pm: Fix two 'done's missed, ugexe++ |
05:21 | |
05:25
xxx joined
05:30
mr-foobar joined
05:32
mr-foobar left
|
|||
ShimmerFairy | lizmat: wait, done() was supposed to a plan-less done-testing() ? (and done-testing already existed?) | 05:34 | |
oh, I see now. I thought done() was something you're supposed to call at the end of the test, not an alternative to a plan. | 05:36 | ||
lizmat | you're supposed to call it if you don't have a plan | 05:40 | |
indeed | |||
somehow it got cargo-culted that you needed a done() always | |||
ShimmerFairy | I just thought it was necessary for finishing up the test (clearing variables or something, I dunno) | 05:41 | |
05:42
Timbus joined
|
|||
lizmat | it gets done for you automatically if you have a plan | 05:47 | |
05:47
simcop2387 joined
|
|||
ShimmerFairy | At first I thought it'd be nice to expose role STD for the fact that it has a nice setup for error reporting in grammars, but I think it's too integrated with the src/Perl6 grammars. I still think it'd be nice if there were built-in features to have more useful parse errors, though. | 05:47 | |
moritz | ShimmerFairy: agreed. The way forward is to develop those error reporting facilities in a module, and if it proves useful, integrate it into core | 05:53 | |
05:53
jack_rabbit joined
|
|||
ShimmerFairy | moritz: I'm on my way to making some as part of developing a part of the grammar out-of-core, so I feel like the module stage will be forming already :) | 05:53 | |
05:54
AlexDani` is now known as AlexDaniel
|
|||
ShimmerFairy | moritz: also, I notice that Rakudo's grammar errors (their backtraces, specifically) only go so far as the token/regex/rule declarator; they don't go inside the rule to point at the specific problem. I'm guessing that level of detail is hidden in NQP-land? | 05:55 | |
06:00
diana_olhovik_ joined
|
|||
moritz | ShimmerFairy: what do you mean by "they don't go inside the rule to point at the specific problem."? | 06:01 | |
ShimmerFairy | moritz: here's part of one error I got earlier: | 06:02 | |
P6opaque: no such attribute '$!pos' | |||
in regex block at Grammar.pm6:78 | |||
where line 78 had token block { | 06:03 | ||
moritz | ah | ||
I thought you were talking about parse errors that a grammar generated | |||
ShimmerFairy | no, the {die "..."} statements I put in as a stopgap solution and so on work fine | ||
moritz: I think I'll be running into more NQP/Perl6 boundary issues, since I have to do the unusual task of coding a parser as NQP-like as possible, but in Perl 6 because in NQP I wouldn't be able to get things like $*W | 06:05 | ||
(unless I 'use'd the appropriate things from Perl6 and nqp-m knew where to find them, I suppose, but that feels like it would require some tricky maneuvering as well) | 06:06 | ||
06:19
aborazmeh left
06:20
laouji left
|
|||
lizmat | m: BEGIN say $*W # ShimmerFairy: may be helpful to know that $*W is exposed at compile time | 06:20 | |
GLRelia | rakudo-moar abf079: OUTPUT«5===SORRY!5=== Error while compiling /tmp/DZJKTgSz8pAn exception occurred while evaluating a BEGINat /tmp/DZJKTgSz8p:1Exception details: 5===SORRY!5=== Error while compiling  Method 'gist' not found for invocant of class 'Perl6::Wo…» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/VNgC8M_zt0An exception occurred while evaluating a BEGINat /tmp/VNgC8M_zt0:1Exception details: 5===SORRY!5=== Error while compiling  Method 'gist' not found for invocant of class 'Perl6::Wo…» | ||
lizmat | it's an NQP Perl6::World object without .gist :-) | 06:21 | |
ShimmerFairy | lizmat: cool, that should make integration a bit nicer to plan for. :) (Though I still had that weird inability to do @foobar := nqp::list() , so I had to go for a P6-y solution to the method) | 06:22 | |
lizmat | my $list := $nqp::list() # works fine afaik | ||
ShimmerFairy | lizmat: Also, I noticed that the components in a Slang.new() don't have .gists or anything. Granted, I _did_ have to pull some .^meth trickery to access those objects on their own, but still. | 06:23 | |
06:23
RabidGravy joined
|
|||
moritz | ShimmerFairy: NQP objects generally don't have .gist methods | 06:23 | |
ShimmerFairy | moritz: I know, I'm just thinking that NQP objects that can be exposed in Perl 6 would ideally behave a bit nicer. The .^ trickery qualifier was because it's not exactly easy to find yourself with the Grammar object, so it's perhaps not that important anyway | 06:24 | |
06:25
laouji joined
|
|||
ShimmerFairy | m: use nqp; my @a := nqp::split(nqp::unbox_s(","), nqp::unbox_s("A,B")); # lizmat: I think this is what prevented me from going on with an NQP-like solution, that nqp::split() doesn't seem to want to play nice for some reason | 06:26 | |
GLRelia | rakudo-moar abf079: OUTPUT«Type check failed in binding; expected 'Positional' but got 'List' in block <unit> at /tmp/F4cubBkzSQ:1» | ||
camelia | rakudo-moar 93418e: OUTPUT«Type check failed in binding; expected 'Positional' but got 'Parcel' in block <unit> at /tmp/TKavRec0oV:1» | ||
06:28
dayangkun left
|
|||
moritz | GLR question: I see the patttern "my \iterator = nqp::istype(thing, Iterable) ?? thing.iterator !! thing.list.iterator;" everywhere; maybe we want an op or a sub or so for that? | 06:29 | |
06:29
jkva joined
|
|||
ShimmerFairy | nqp::asiter if an op, perhaps? | 06:30 | |
lizmat | perhaps an Any.iterator ? | 06:31 | |
moritz | p6iter or p6iterator | ||
masak | morning, #perl6 | ||
ShimmerFairy | yeah, as an op it should probably have p6 prefixed to it :) | ||
o/ | |||
moritz | lizmat: maybe, though that's a level of indirection that's harder to optimize | ||
\o masak | |||
masak | welcome back, moritz | ||
moritz | takk :-) | 06:32 | |
06:32
laouji left
|
|||
masak .oO( oh no, the Norwegians got to his speech center! ) | 06:32 | ||
ShimmerFairy | I'm able to bind the result of nqp::split to an array just fine in nqp. Does nqp::split do something different in Perl 6 that makes it difficult to use in a NQP-y way? | 06:33 | |
06:34
xinming left
|
|||
moritz | m: my @a := nqp::split('foo', 'o') | 06:34 | |
GLRelia | rakudo-moar abf079: OUTPUT«===============================================================================The use of nqp::operations has been deprecated for non-CORE code. Pleasechange your code to not use these non-portable functions. If you really wantto keep using nqp:…» | ||
camelia | rakudo-moar 93418e: OUTPUT«===============================================================================The use of nqp::operations has been deprecated for non-CORE code. Pleasechange your code to not use these non-portable functions. If you really wantto keep using nqp:…» | ||
moritz | m: use NQP; my @a := nqp::split('foo', 'o') | ||
GLRelia | rakudo-moar abf079: OUTPUT«===SORRY!===Could not find NQP in any of: file#/home/steve/.perl6/2015.07.1-329-g88e439c/lib inst#/home/steve/.perl6/2015.07.1-329-g88e439c file#/home/steve/sandbox/perl6/rakudo/install/share/perl6/lib file#/home/steve/sandbox/perl6/raku…» | ||
camelia | rakudo-moar 93418e: OUTPUT«===SORRY!===Could not find NQP in any of: file#/home/camelia/.perl6/2015.07.1-138-g93418e9/lib inst#/home/camelia/.perl6/2015.07.1-138-g93418e9 file#/home/camelia/rakudo-inst-2/share/perl6/lib file#/home/camelia/rakudo-inst-2/share/perl6…» | ||
moritz | m: use nqp; my @a := nqp::split('foo', 'o') | ||
GLRelia | rakudo-moar abf079: OUTPUT«Type check failed in binding; expected 'Positional' but got 'List' in block <unit> at /tmp/Nh_1DESDLJ:1» | ||
camelia | rakudo-moar 93418e: OUTPUT«Type check failed in binding; expected 'Positional' but got 'Parcel' in block <unit> at /tmp/IFgA4I0DMF:1» | ||
moritz | m: say List ~~ Positional | ||
GLRelia | rakudo-moar abf079: OUTPUT«True» | ||
camelia | rakudo-moar 93418e: OUTPUT«True» | ||
moritz | m: say Parcel ~~ Positional | 06:35 | |
camelia | rakudo-moar 93418e: OUTPUT«True» | ||
GLRelia | rakudo-moar abf079: OUTPUT«5===SORRY!5=== Error while compiling /tmp/TjK1ZjjMfZExpected a term, but found either infix ~~ or redundant prefix ~ (to suppress this message, please use a space like ~ ~)at /tmp/TjK1ZjjMfZ:1------> 3say Parcel ~~7⏏5 Positional» | ||
lizmat | ShimmerFairy: github.com/perl6/nqp/blob/master/d...s.markdown may be of help? | ||
06:36
xinming joined
|
|||
lizmat | sightseeing& | 06:36 | |
ShimmerFairy | and once I managed to put the split result somewhere, I croaked on nqp::elems not working, so I had to give in and code a P6-based version of the method in question | 06:37 | |
06:38
laouji joined
06:39
domidumont joined
|
|||
moritz | m: my \list = nqp::split('foo', 'o'); say(nqp::elems(list)) | 06:41 | |
GLRelia | rakudo-moar abf079: OUTPUT«===============================================================================The use of nqp::operations has been deprecated for non-CORE code. Pleasechange your code to not use these non-portable functions. If you really wantto keep using nqp:…» | ||
camelia | rakudo-moar 93418e: OUTPUT«===============================================================================The use of nqp::operations has been deprecated for non-CORE code. Pleasechange your code to not use these non-portable functions. If you really wantto keep using nqp:…» | ||
moritz | m: use nqp; my \list = nqp::split('foo', 'o'); say(nqp::elems(list)) | ||
camelia | rakudo-moar 93418e: OUTPUT«1» | ||
GLRelia | rakudo-moar abf079: OUTPUT«1» | ||
moritz | m: use nqp; my \list = nqp::split('o', 'foo'); say(nqp::elems(list)) | ||
camelia | rakudo-moar 93418e: OUTPUT«3» | ||
GLRelia | rakudo-moar abf079: OUTPUT«3» | ||
ShimmerFairy | ok, I'll try using \sigilless and see how that goes | 06:43 | |
06:43
domidumont left
06:44
domidumont joined
|
|||
ShimmerFairy | thanks moritz :) I guess the Scalar container on $var variables was getting in the way, when doing $a = nqp::split. And apparently $a := works too, so it was probably just too late last night for me to make much sense of stuff :) | 06:46 | |
06:47
xfix joined
|
|||
ShimmerFairy | (I also wasn't returning a cursor like I needed to, so before I figured that out I think the error related to that made me think $a := failed) | 06:47 | |
06:47
laouji left
06:50
laouji joined
06:51
dayangkun joined
06:52
laouji left
06:53
simcop2387 left,
laouji joined
|
|||
nine | m: ((1,2,3),(1,2),(1,2)).unique(:with({warn $^a.perl; warn $^b.perl; True})) | 06:55 | |
camelia | rakudo-moar 93418e: OUTPUT«$(1, 2) in block at /tmp/fwIkJ33h0a:11 in block at /tmp/fwIkJ33h0a:1$(1, 2) in block at /tmp/fwIkJ33h0a:11 in block at /tmp/fwIkJ33h0a:1» | ||
GLRelia | rakudo-moar abf079: OUTPUT«$(1, 2) in block at /tmp/l9Ki3MUvOQ:11 in block at /tmp/l9Ki3MUvOQ:1$(1, 2) in block at /tmp/l9Ki3MUvOQ:11 in block at /tmp/l9Ki3MUvOQ:1» | ||
06:55
simcop2387 joined
|
|||
nine | m: say ((1,2,3),(1,2),(1,2)).unique) | 06:56 | |
GLRelia | rakudo-moar abf079: OUTPUT«5===SORRY!5=== Error while compiling /tmp/asna45Gmj0Unexpected closing bracketat /tmp/asna45Gmj0:1------> 3say ((1,2,3),(1,2),(1,2)).unique7⏏5)» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1t1IqlBhGyUnexpected closing bracketat /tmp/1t1IqlBhGy:1------> 3say ((1,2,3),(1,2),(1,2)).unique7⏏5)» | ||
nine | m: say ((1,2,3),(1,2),(1,2)).unique | ||
GLRelia | rakudo-moar abf079: OUTPUT«1 2 3 1 2 1 2» | ||
camelia | rakudo-moar 93418e: OUTPUT«1 2 3 1 2» | ||
06:56
rurban joined,
laouji left
06:57
laouji joined
|
|||
moritz | m: say ((1,2,3),(1,2),(1,2)).unique.perl | 06:58 | |
GLRelia | rakudo-moar abf079: OUTPUT«((1, 2, 3), (1, 2), (1, 2)).iterator» | ||
camelia | rakudo-moar 93418e: OUTPUT«((1, 2, 3), (1, 2))» | ||
nine | The warn output doesn't make sense even on nom, but the result at least is correct. I just have no idea how it can be. | ||
moritz | m: say (1, 2) === (1, 2) | ||
GLRelia | rakudo-moar abf079: OUTPUT«False» | ||
camelia | rakudo-moar 93418e: OUTPUT«True» | ||
nine | m: ((1,2,3),(1,2),(1,2)).unique(:with({warn $^a.perl; warn $^b.perl; $^a eqv $^b})) | 06:59 | |
GLRelia | rakudo-moar abf079: OUTPUT«$(1, 2) in block at /tmp/I574I6Wxyh:11 in block at /tmp/I574I6Wxyh:1$(1, 2) in block at /tmp/I574I6Wxyh:12 in block at /tmp/I574I6Wxyh:1$(1, 2) in block at /tmp/I574I6Wxyh:13 in block at /tmp/I574I6Wxyh:1$(1, 2) in block at …» | ||
camelia | rakudo-moar 93418e: OUTPUT«$(1, 2) in block at /tmp/URwNQO3jeB:11 in block at /tmp/URwNQO3jeB:1$(1, 2) in block at /tmp/URwNQO3jeB:12 in block at /tmp/URwNQO3jeB:1$(1, 2) in block at /tmp/URwNQO3jeB:13 in block at /tmp/URwNQO3jeB:1$(1, 2) in block at …» | ||
moritz | m: say (1, 2).^name | ||
GLRelia | rakudo-moar abf079: OUTPUT«List» | ||
camelia | rakudo-moar 93418e: OUTPUT«Parcel» | ||
moritz | m: say (1, 2) eqv (1, 2) | ||
GLRelia | rakudo-moar abf079: OUTPUT«True» | ||
camelia | rakudo-moar 93418e: OUTPUT«True» | ||
nine | m: ((1,2,3),(1,2),(1,2)).unique(:with({note $^a.perl; note $^b.perl; $^a eqv $^b})) | ||
GLRelia | rakudo-moar abf079: OUTPUT«$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)2» | ||
camelia | rakudo-moar 93418e: OUTPUT«$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)2» | ||
nine | m: say ((1,2,3),(1,2),(1,2)).unique(:with({note $^a.perl; note $^b.perl; $^a eqv $^b})) | 07:00 | |
camelia | rakudo-moar 93418e: OUTPUT«$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)21 2 3 1 2 1 2» | ||
GLRelia | rakudo-moar abf079: OUTPUT«$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)2$(1, 2)3$(1, 2)1$(1, 2)21 2 3 1 2 1 2» | ||
07:00
abraxxa joined
|
|||
nine | m: say <a b b c b d>.unique(:with({note $^a.perl; note $^b.perl; $^a eqv $^b})) | 07:00 | |
GLRelia | rakudo-moar abf079: OUTPUT«"b""a""b""a""b""b""c""a""c""b""b""a""b""b""d""a""d""b""d""c"a b c d» | ||
camelia | rakudo-moar 93418e: OUTPUT«"b""a""b""a""b""b""c""a""c""b""b""a""b""b""d""a""d""b""d""c"a b c d» | ||
nine | So $^b should indeed be set to an element of the list. It just doesn't work for Lists neither in glr nor in nom. | 07:01 | |
m: my @seen; my $target := (1, 2); @seen.push($target); say @seen.perl; | 07:07 | ||
GLRelia | rakudo-moar abf079: OUTPUT«[1, 2]» | ||
camelia | rakudo-moar 93418e: OUTPUT«[1, 2]<>» | ||
nine | That's the underlying issue | ||
07:14
luiz_lha left
|
|||
moritz | the GLR output seems saner to me | 07:16 | |
dalek | kudo/glr: 4bcdf98 | (Stefan Seifert)++ | src/core/Any-iterable-methods.pm: Fix unique(:with({})) on lists of Lists In "((1, 2), (1, 2)).unique(:with($^a eqv $^b))" $^b was set to the numbers contained in the lists instead of the lists themselves due to missing itemization when pushing into the @seen array. |
||
nine | As usual, a rather trivial fix, but quite time consuming to find it. | 07:17 | |
ShimmerFairy | m: my $*X = BEGIN $*W; say $*X.defined | ||
GLRelia | rakudo-moar abf079: OUTPUT«1» | ||
camelia | rakudo-moar 93418e: OUTPUT«1» | ||
ShimmerFairy | m: my $*W = BEGIN $*W; say $*W.defined | ||
GLRelia | rakudo-moar abf079: OUTPUT«1» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/TZRTCoR0QFCannot use variable $*W in declaration to initialize itselfat /tmp/TZRTCoR0QF:1------> 3my $*W = BEGIN $*7⏏5W; say $*W.defined expecting any of: term» | ||
ShimmerFairy | ^ I feel like that paranoid error is a bug here | ||
nine | Well this time, on the way I unbusted SEQUENCE some more just to be able to run first.t (which passes) just to find out that first is not the source of the problem ;) | ||
07:18
zakharyas joined
|
|||
ShimmerFairy | (and as GLRelia shows, it's fine in this instance, since no list structures are involved ☺) | 07:19 | |
dalek | ast/glr: 5bb3591 | (Stefan Seifert)++ | S32-list/unique.t: Adapt new GLR semantics in unique.t As unique now returns a Seq instead of a List, we have to Listify it, before we can directly compare it to a List with is-deeply. Need to use :with and eqv for the flattening test because (1, 2) === (1, 2) is no longer True. |
||
07:20
darutoko joined
|
|||
nine | And another test file passing. | 07:20 | |
ShimmerFairy | m: my $a = 1; { my $a = $a + 1; say $a; }; say $a; | ||
GLRelia | rakudo-moar abf079: OUTPUT«Use of uninitialized value of type Any in numeric context in block at /tmp/jk3Tp_owyd:111» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/hUIjA_WT7fCannot use variable $a in declaration to initialize itselfat /tmp/hUIjA_WT7f:1------> 3my $a = 1; { my $a = $7⏏5a + 1; say $a; }; say $a; expecting any of: term» | ||
07:20
telex left
|
|||
ShimmerFairy | m: our $a = 1; { my $a = $a + 1; say $a; }; say $a; | 07:21 | |
GLRelia | rakudo-moar abf079: OUTPUT«Use of uninitialized value of type Any in numeric context in block at /tmp/q0yeI1fWmL:111» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/wAen9aRZhfCannot use variable $a in declaration to initialize itselfat /tmp/wAen9aRZhf:1------> 3our $a = 1; { my $a = $7⏏5a + 1; say $a; }; say $a; expecting any of: term» | ||
07:22
telex joined
07:35
espadrine joined
07:40
laouji left
07:42
laouji joined
|
|||
nine | m: ((1,2,3), (1,2), (1,2)).unique(:with(&[eqv])).perl.say | 07:49 | |
GLRelia | rakudo-moar 4bcdf9: OUTPUT«((1, 2, 3), (1, 2)).iterator» | ||
camelia | rakudo-moar 93418e: OUTPUT«((1, 2, 3), (1, 2), (1, 2))» | ||
nine | m: ((1,2,3), (1,2), (1,2)).unique.perl.say | 07:50 | |
camelia | rakudo-moar 93418e: OUTPUT«((1, 2, 3), (1, 2))» | ||
GLRelia | rakudo-moar 4bcdf9: OUTPUT«((1, 2, 3), (1, 2), (1, 2)).iterator» | ||
nine | One works on nom, one on glr. I think that's a fair exchange ;) | ||
DrForr | Parsing stage much faster on my build today, nice. | 07:54 | |
ShimmerFairy | m: "abc" ~~ /abc/; say $/.WHAT; say $/.^attributes; | 07:58 | |
GLRelia | rakudo-moar 4bcdf9: OUTPUT«(Match)Method 'gist' not found for invocant of class 'BOOTSTRAPATTR' in block <unit> at /tmp/qciGKbrEki:1» | ||
camelia | rakudo-moar 93418e: OUTPUT«(Match)Method 'gist' not found for invocant of class 'BOOTSTRAPATTR' in block <unit> at /tmp/Pqd0PPahvi:1» | ||
07:59
diana_olhovik_ left
|
|||
ShimmerFairy | AFAIK, that BOOTSTRAPATTR should be an Attribute post-bootstrap | 07:59 | |
07:59
diana_olhovik joined
|
|||
RabidGravy | yeah, I was wondering about that the other day, then put it aside as I couldn't fix it right then | 08:01 | |
ShimmerFairy | m: "abc" ~~ /abc/; say $/.WHAT; for $/.^attributes { say $_ } | ||
GLRelia | rakudo-moar 4bcdf9: OUTPUT«(Match)Mu $!origint $!fromint $!toMu $!CURSORMu $!madeMethod 'gist' not found for invocant of class 'BOOTSTRAPATTR' in block <unit> at /tmp/YpDkMZVwpn:1» | ||
camelia | rakudo-moar 93418e: OUTPUT«(Match)Mu $!origint $!fromint $!toMu $!CURSORMu $!madeMethod 'gist' not found for invocant of class 'BOOTSTRAPATTR' in block <unit> at /tmp/opHhQLJxTB:1» | ||
ShimmerFairy | looks like there's one attribute specifically that's not getting converted | ||
m: "abc" ~~ /abc/; say $/.WHAT; for $/.^attributes { say $_.^name } | 08:02 | ||
GLRelia | rakudo-moar 4bcdf9: OUTPUT«(Match)AttributeAttributeAttributeAttributeAttributeBOOTSTRAPATTRBOOTSTRAPATTR» | ||
camelia | rakudo-moar 93418e: OUTPUT«(Match)AttributeAttributeAttributeAttributeAttributeBOOTSTRAPATTRBOOTSTRAPATTR» | ||
ShimmerFairy | two attributes, specifically :) | ||
RabidGravy | (it wasn't Match that I noticed it with though) | 08:03 | |
ShimmerFairy | m: my $a = \(1,2); say $a.WHAT; say $a.^attributes.map: *.^name | 08:05 | |
GLRelia | rakudo-moar 4bcdf9: OUTPUT«(Capture)BOOTSTRAPATTR BOOTSTRAPATTR» | ||
camelia | rakudo-moar 93418e: OUTPUT«(Capture)BOOTSTRAPATTR BOOTSTRAPATTR» | ||
ShimmerFairy | RabidGravy: in my case, it seems the problem lies with Capture | ||
RabidGravy | it might have been Capture or something in that vicinity | ||
ShimmerFairy | m: my $attr = Complex.^attributes[0]; say $attr.WHAT; say $attr.^attributes.map: *.^name | 08:07 | |
GLRelia | rakudo-moar 4bcdf9: OUTPUT«(Attribute)BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR» | ||
camelia | rakudo-moar 93418e: OUTPUT«(Attribute)BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR BOOTSTRAPATTR» | ||
ShimmerFairy | RabidGravy: I think the issue may be that private attributes that are in BOOTSTRAP but not defined in the class itself in src/core | ||
RabidGravy | anyhow off to get the car serviced. Have fun and play nicely. | 08:09 | |
ShimmerFairy | m: say Cursor.^attributes[0].WHAT | 08:10 | |
GLRelia | rakudo-moar 4bcdf9: OUTPUT«(Attribute)» | ||
camelia | rakudo-moar 93418e: OUTPUT«(Attribute)» | ||
ShimmerFairy | the other attributes in Cursor are from an NQP class, and thus NQPAttributes. | ||
So I think the issue is bootstrapped private attributes. I don't know if you can redeclare them in src/core (since the 'has' declarations for them are there, but commented out, for documentation purposes I assume) | 08:11 | ||
08:14
RabidGravy left
08:18
g4 joined
|
|||
TimToady et al. in Tokyo now | 08:19 | ||
ShimmerFairy | o/ TimToady et al. :) | 08:21 | |
moritz | \o | 08:23 | |
FROGGS | o/ | 08:26 | |
08:30
laouji left
|
|||
moritz | is there an easy-ish entry point for helping with GLR stuff? | 08:34 | |
FROGGS | moritz: I understand it as: run the spectest, and fix the fallout | 08:35 | |
though, I've not tested it yet | |||
08:36
Ven joined
|
|||
nine | moritz: github.com/perl6/roast/commit/5bb3591b54 is a good example for easy fixes | 08:42 | |
moritz | nine: thanks | 08:44 | |
nine: does perlpunks.de/paste/show/55d441e1.1ac1.1c look vaguely sane to you? | |||
nine | moritz: we also often need to explicitly flatten like in: github.com/perl6/roast/commit/1ac5...8759c94287 | 08:45 | |
moritz | nine: does that really need both flat *and* @(...) ? | 08:46 | |
nine | moritz: oh yes, absolutely! | 08:47 | |
moritz: no, I removed the @(...) in the next commit :) | |||
moritz | :-) | 08:48 | |
dalek | kudo/glr: 7b4392b | moritz++ | src/core/List.pm: Eliminate .gimme usage from infix:<X> |
||
nine | moritz: I mean your past looks absolutely sane | ||
\o/ | |||
08:50
virtualsue joined
|
|||
Ven | o/, #perl6 | 08:51 | |
nine | Wow, jnthn++ must have been quite exhausted already. Just found the 4th bug in POSITIONS | 08:53 | |
m: (0,1,1) >>+<< (0,0,1) | 08:55 | ||
camelia | ( no output ) | ||
GLRelia | ( no output ) | ||
nine | m: say ( (0,1,1) >>+<< (0,0,1) ) | 08:56 | |
GLRelia | rakudo-moar 7b4392: OUTPUT«0 1 2» | ||
camelia | rakudo-moar 93418e: OUTPUT«0 1 2» | ||
nine | m: say ( (0,1,1) >>+<< (0,0,1) ).perl | ||
camelia | rakudo-moar 93418e: OUTPUT«(0, 1, 2)» | ||
GLRelia | rakudo-moar 7b4392: OUTPUT«((0, 1, 2).iterator)» | ||
JimmyZ | m: [1,2] ~~ [1,1] | ||
GLRelia | ( no output ) | ||
camelia | ( no output ) | ||
JimmyZ | m: say [1,2] ~~ [1,1] | 08:57 | |
GLRelia | rakudo-moar 7b4392: OUTPUT«False» | ||
camelia | rakudo-moar 93418e: OUTPUT«False» | ||
moritz | looks like slice.t is loop in the GLR branch | 09:00 | |
nine | moritz: that's why I'm working on POSITIONS | 09:01 | |
moritz | nine: ah, good | ||
I'm trying to remove a few more uses of .gimme | |||
nine | Already have a fix for that and a couple other issues. Only is((3,7,9), [@array[(0,1,1) >>+<< (0,0,1)]] is still failing | ||
09:04
jkva left
09:10
rindolf joined,
laouji joined
09:11
espadrine left
|
|||
dalek | kudo/glr: 2f5c4ed | (Stefan Seifert)++ | / (3 files): Fix slice indexing with lazy lists Fixes the hang in @a[0...*] and makes it return useful results. Fixes all slice.t tests but @array[(0,1,1) >>+<< (0,0,1)]. That one I think is due to a bug in the hyper operator itself, not in POSITIONS. |
09:12 | |
09:17
GLRelia left
|
|||
nine | 223/1047 spec test files failing | 09:17 | |
09:17
GLRelia joined
09:19
llfourn left
|
|||
jnthn | nine: I was pretty tired when working on POSITIONS, but also the thing my simpler re-impl replaced was incredibly hairy | 09:20 | |
nine: So I had a really hard time figuring out what it did/didn't handle in the first place | |||
dalek | kudo/glr: e9911c0 | moritz++ | src/core/metaops.pm: Remove two more uses of .gimme(1) Compiles, but does not cause more spectest passes |
||
09:21
Ven left
|
|||
nine | jnthn: no worry, that's all past now :) | 09:22 | |
dalek | ast/glr: 10a78d9 | moritz++ | S32-list/roll.t: Fix a type error in roll.t |
09:24 | |
jnthn | nine++ | 09:25 | |
jnthn wonders how we're still managing to fail more than 200... :) | |||
moritz | m: say (1..5).list.roll(*).infinite.perl | ||
camelia | rakudo-moar 93418e: OUTPUT«Bool::True» | ||
GLRelia | rakudo-moar 2f5c4e: OUTPUT«Nil» | ||
moritz | m: say (1..5).list.roll(*).^name | 09:26 | |
camelia | rakudo-moar 93418e: OUTPUT«List» | ||
GLRelia | rakudo-moar 2f5c4e: OUTPUT«Seq» | ||
jnthn | .infinite is almost certainly going away | ||
moritz | jnthn: yes, I'm trying to figure out how to replace the test | ||
ok <a b c d>.roll(*).infinite, 'roll(*) knows itself to be infinite'; | |||
jnthn | I think .is-lazy is what lizmat called The New Thing | ||
moritz | takk | ||
jnthn | But I don't know if .is-lazy is implemented on Seq yet | ||
09:27
TEttinger left
|
|||
jnthn | But if not, it's really easy to do: just asking the $!iterator if it demands lazy evaluation :) | 09:27 | |
moritz | I'll look into it. | ||
jnthn | fwiw, "lazy" is how you mark something as needing lazy evaluation, and is the answer to the "how do we mark something infinite" question we've lon ghad | 09:28 | |
*long | |||
09:28
rurban_ joined
|
|||
jnthn | m: my @a = 1, 2, 3; my @b = lazy @a; @a[0] = 42; say @b; | 09:28 | |
GLRelia | rakudo-moar e9911c: OUTPUT«...» | ||
camelia | rakudo-moar 93418e: OUTPUT«1 2 3» | ||
moritz | what should Seq.is-lazy do if $!iterator is undefined? throw a X::Seq::Consumed? | ||
jnthn | uh | ||
m: my @a = 1, 2, 3; my @b = lazy @a; @a[0] = 42; say @b.perl | 09:29 | ||
camelia | rakudo-moar 93418e: OUTPUT«[1, 2, 3]<>» | ||
GLRelia | rakudo-moar e9911c: OUTPUT«[...]» | ||
jnthn | wtf, I thought that worked before | ||
m: my @a = 1, 2, 3; my @b = lazy @a; @a[0] = 42; say @b[^3] | |||
camelia | rakudo-moar 93418e: OUTPUT«1 2 3» | ||
GLRelia | rakudo-moar e9911c: OUTPUT«42 2 3» | ||
jnthn | Anyway, that's what I was after | ||
moritz: Yes | |||
moritz: Well, if $!iterator is gone but the memoized list is there, you could ask that I ugess | 09:30 | ||
*guess | |||
+ my \list = @values.reverse; | |||
+ my $result := list.pull-one; | |||
You can't pull-one a list | 09:31 | ||
You need my \iter = list.iterator; ... iter.pull-one; | |||
_itz_ | nqp-m: say(1+3) | ||
camelia | nqp-moarvm: OUTPUT«4» | ||
GLRelia | nqp-moarvm: OUTPUT«4» | ||
moritz | jnthn: and I guess I should find a way to test it :-) | ||
jnthn: is this good practise, making iterators out of already reified lists? | 09:32 | ||
09:32
GLRelia left,
GLRelia joined
|
|||
jnthn | moritz: Well, your alternative is to go indexing... | 09:32 | |
_itz_ | nqp-m: say(1+3) | ||
camelia | nqp-moarvm: OUTPUT«4» | ||
jnthn | moritz: It's not really a bad thing to do, though | 09:33 | |
moritz | jnthn: ok | ||
jnthn | moritz: After all, that's what for @reified-list { } does :) | ||
_itz_ | m: say 1+3 | ||
camelia | rakudo-moar 93418e: OUTPUT«4» | ||
GLRelia | rakudo-moar e9911c: OUTPUT«4» | ||
09:37
llfourn joined,
espadrine joined
09:38
AlexDaniel left
|
|||
dalek | albot: f5b8bcf | (Steve Mynott)++ | run.sh: ulimit options are bash specific. Fix when user shell isn't bash |
09:38 | |
albot: 5c45df6 | moritz++ | run.sh: Merge pull request #7 from stmuk/master ulimit options are bash specific. Fix when user shell isn't bash. |
|||
moritz | jnthn: there seem to be methods 'is-lazy' and 'lazy'; is that intentional? | 09:39 | |
jnthn | moritz: Heh, it's confusing as heck by now I think | 09:41 | |
moritz: .lazy on *Iterable* is a contextualizer | |||
moritz | .lazy on Iterator seems to be Boolean | 09:42 | |
jnthn | moritz: But .lazy on *Iterator* is an introspection method that does what .is-lazy does elsewhere :) | ||
moritz | jnthn: so, should I rename .lazy on Iterator to .is-lazy? | ||
jnthn | I suspect the one on Iterator wants to change to is-lazy | ||
moritz | ok | 09:43 | |
jnthn | Yeah, but you'll need to hunt down the various places that need updating :) | ||
09:44
cognominal left
09:48
leont joined
09:55
rindolf left,
laouji left,
laouji_ joined
10:07
laouji_ left
10:08
jack_rabbit left
10:09
jack_rabbit joined
10:10
skids joined
10:17
abraxxa left,
abraxxa joined
10:21
skids left
|
|||
dalek | kudo/glr: 52bf81a | moritz++ | src/core/ (7 files): Rename Iterator.lazy to is-lazy previously, .lazy on Iterator was introspection, while .lazy on Iterable was coercive; now is-lazy is always introspection, and .lazy always coercion |
10:28 | |
10:29
magistr joined
|
|||
magistr | perl 6 is too awful as perl | 10:30 | |
tadzik | where's hugme when we need it? | 10:31 | |
moritz hugs magistr | |||
tadzik: probably died during the feather -> hack transition | |||
10:32
rurban left
|
|||
tadzik | good thing you were there to fill in the blanks :) | 10:32 | |
magistr | scriptshitting | 10:33 | |
moritz | magistr: is there anything we can do to brighten your day? make some fun puns for you, maybe? | ||
DrForr | magistr: Sorry you feel that way, what do you find ugly? | ||
tadzik | did you know that according to popular belief polar bears are *not* left handed? | ||
so many of my github descriptions are wrong now | 10:34 | ||
10:34
breinbaas joined
|
|||
_itz_ | doesn't it depend on *which* pole they live at? | 10:36 | |
10:37
magistr left
|
|||
DrForr | "Hug an engineer. They won't like it, but do it anyway." | 10:37 | |
10:41
skids joined
|
|||
dalek | kudo/glr: a343c2f | moritz++ | src/core/List.pm: Produce a known-lazy Seq from List.roll(*) |
10:48 | |
ast/glr: 3a2d1df | moritz++ | S32-list/reverse.t: reverse.t: Do not use isa-ok with a role |
10:50 | ||
ast/glr: c5d9603 | moritz++ | S32-list/roll.t: roll.t: s/infinite/is-lazy/; relax return type check to Iterable |
|||
moritz | two more passing test files; yay! | 10:51 | |
m: my %h = a => 42, b => 666; | 10:53 | ||
camelia | ( no output ) | ||
GLRelia | ( no output ) | ||
moritz | m: my %h = a => 42, b => 666; say "value = %h{*}" | ||
camelia | rakudo-moar 93418e: OUTPUT«value = 42 666» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«Use of uninitialized value %h of type Any in string context in block <unit> at /tmp/mauMJUNQEa:1value = » | ||
dalek | ast/glr: 8a3fb80 | moritz++ | integration/advent2014-day13.t: Simply test case a wee bit |
||
10:59
rurban joined
11:02
skids left
11:05
laouji joined
11:23
xinming left
11:32
laouji left
|
|||
_itz_ | m: my @s = [1,2,3,4]; my $foo = @s[0..1, 2..4].join; warn $foo.perl; | 11:33 | |
camelia | rakudo-moar 93418e: OUTPUT«Use of uninitialized value @s of type Any in string context in block <unit> at /tmp/xAvKyGHDf9:1Use of uninitialized value @s of type Any in string context in block <unit> at /tmp/xAvKyGHDf9:1Use of uninitialized value @s of type Any in string cont…» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«"1 23 4" in block <unit> at /tmp/LXVa5HhZRo:1» | ||
_itz_ | the behaviour of that has changed in GLR (breaking a zef test). Output a day or two back was 1234 | ||
11:34
virtualsue left
11:38
FROGGS_ joined
|
|||
_itz_ | it returned 1234 in 2015.07.1-350-gabf079b | 11:41 | |
or later | |||
moritz | m: my @a = 1, 2; my $s = @a; for $s { say "oh hai" } | 11:42 | |
camelia | rakudo-moar 93418e: OUTPUT«oh hai» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«oh haioh hai» | ||
11:42
FROGGS left
|
|||
moritz | is this intentional? | 11:43 | |
nine | moritz: I think thats because of the single arg rule | 11:44 | |
moritz | m: my @a = 1, 2; my $s = @a; for $s, 2 { say "oh hai" } | ||
camelia | rakudo-moar 93418e: OUTPUT«oh haioh hai» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«oh haioh hai» | ||
masak should look into this GLR thing | 11:51 | ||
moritz | m: my @a = 1, 2; my $s = @a; for (), $s { say "oh hai" } | 11:54 | |
camelia | rakudo-moar 93418e: OUTPUT«oh haioh hai» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«oh haioh hai» | ||
moritz | m: my @a = 1, 2; my $s = @a; for Empty, $s { say "oh hai" } | ||
camelia | rakudo-moar 93418e: OUTPUT«oh hai» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«oh hai» | ||
11:55
skids joined,
magistr joined
|
|||
magistr | perdl | 11:55 | |
moritz hugs magistr again | 11:56 | ||
masak | magistr: hi! you expressed some dissatisfaction before? | ||
dalek | ast/glr: c71b678 | moritz++ | integration/advent2011-day16.t: Fix advent2011-day16.t also add a test for the spirit of the original test |
11:57 | |
11:57
dayangkun left
|
|||
nine | If you were the >> << operator, where would I find your code? | 11:57 | |
masak | magistr: have you downloaded Rakudo? it's pretty sweet. | ||
magistr | async IO it is overhead to a sriptshitting languages | ||
11:58
xinming joined
|
|||
jdv79 | what is this sinle arg rule thats oft referred to? | 11:59 | |
11:59
abraxxa left,
abraxxa joined
|
|||
jdv79 | also, what is scriptshitting. sounds dirty. | 12:00 | |
moritz | jdv79: seems to me that a single argument bound to a positional or slurpy flattens out, even if it's a scalar | ||
tadzik | jdv79: sounds like producing scripts on a massive scale | ||
let me look up the english word for that... | |||
"scribbler" | |||
magistr | eventmachine, AnyEvent, nodejs, reactphp, twisted - it is awful | ||
tadzik | that must be it | ||
_itz_ | magistr: are you a markov chain? | 12:01 | |
moritz | m: say do for 1..20; | 12:02 | |
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/HlJp1cCNbpMissing blockat /tmp/HlJp1cCNbp:1------> 3say do for 1..207⏏5; expecting any of: block or pointy block» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bT4fYFMxucMissing blockat /tmp/bT4fYFMxuc:1------> 3say do for 1..207⏏5; expecting any of: block or pointy block» | ||
moritz | m: say do $_ for 1..20; | ||
camelia | rakudo-moar 93418e: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20» | ||
12:02
cognominal joined
|
|||
magistr | _itz_, are you a shit? | 12:03 | |
tadzik | please be respectful | ||
we may still have a civilized discussion if you only express anger towards software rather than people | 12:04 | ||
if you're only interested in the latter, then please leave | |||
moritz | m: sub f(*@a) { say @a[0] }; f gather { while True { take 5 } } | 12:05 | |
camelia | rakudo-moar 93418e: OUTPUT«5» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«5» | ||
12:05
magistr left
|
|||
moritz | tadzik++ | 12:05 | |
12:06
skids left
|
|||
tadzik | I'm surprised this worked | 12:06 | |
12:07
llfourn left
12:09
llfourn joined,
skids joined
|
|||
masak guesses that magistr is a Russian 14yo | 12:09 | ||
tadzik | (s)he was a lot more eloquent than usual 14yo russians I meet on the internet | 12:10 | |
much more polite too! | |||
jdv79 | who knows the reasoning behind this one arg rule | ||
masak | though I find "are you a shit?" is hilariously funny if magistr actually *is* a Markov chain :P | ||
tadzik | :D{:D:D:D | 12:11 | |
masak: do you know about SubredditSimulator? | |||
masak | jdv79: guessing here -- people expect to be able to loop over something like $array or [1, 2, 3] | ||
dalek | kudo/glr: c4d1b08 | moritz++ | src/core/asyncops.pm: Clarify error message from argument-less supply |
||
masak | tadzik: yes, I saw something about it on twitter today | ||
jdv79 | i want true facrs | ||
facts | |||
masak | jdv79: oh, then ignore me :P | ||
jdv79 | phone typing:( | ||
masak | I only provide false or inconclusive facts today. | 12:12 | |
moritz | jdv79: it makes dereferencing nested data structures much simpler | ||
masak | I'm fresh out of true ones. | ||
jdv79 | oh... | ||
moritz only has True Scotsman facts | |||
masak | I could offer you a true "fact" :) | ||
tadzik | masak: www.reddit.com/r/SubredditSimulato...h_another/ | ||
DrForr prefers true lies :) | 12:13 | ||
moritz | m: multi a() { die "oh nooz" }; multi a($a) { say $a }; (gather { take 42 }).map(&a) | ||
tadzik | it is so real! | ||
camelia | rakudo-moar 93418e: OUTPUT«42» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«42Cannot invoke this object (REPR: Uninstantiable) in block <unit> at /tmp/HnaFyjZsPa:1» | ||
timotimo | o/ | ||
masak | tadzik: wow, that is painful to read | ||
moritz | m: (gather { take 42 }).map(&say) | 12:15 | |
camelia | rakudo-moar 93418e: OUTPUT«42» | ||
GLRelia | rakudo-moar a343c2: OUTPUT«42Cannot invoke this object (REPR: Uninstantiable) in block <unit> at /tmp/xfMEeZi5kg:1» | ||
masak | moritz++ # whatever it is you're doing | 12:18 | |
going through spectests, looks like | |||
moritz | fwiw this one dies in pull-exactly from GATHER | 12:19 | |
masak: yes | 12:20 | ||
nqp::continuationreset(PROMPT, &!resumption); is the line that dies | |||
timotimo | so $!resumption is perhaps null? | ||
moritz | maybe; I just know that I don't know the code well enough to dig deeper into this one | 12:21 | |
masak .oO( nqp::continuationresurrect(PROMPT, &!redemption); ) | 12:22 | ||
timotimo | %) | ||
TimToady | the "one arg" rule is not that single args are special, but that things that look like multiple args are really a single arg to begin with | ||
and the rationale is that we can use the same constructs to iterate anything, not have two different mechanisms for iterating internal vs external lists | 12:23 | ||
so asking a comma list for its list of values is no different from asking any other object for its list of values | 12:24 | ||
masak | that sounds... vaguely sane. | ||
I would say "entirely sane", but my head is still spinning. :) | 12:25 | ||
TimToady | so, for instance, the implementation of 'for' no longer has to jump through hoops to make it look a map; it now really is just a map | ||
12:26
Ven joined
|
|||
TimToady | under the old way, we had to keep slapping a (thing,) around the expression internally, which was really bad for performance | 12:28 | |
timotimo | oh, is that so! | ||
ShimmerFairy | TimToady: so at this point we should obviously rename the 'for' keyword to 'map' :P | 12:29 | |
timotimo | map is for having the arguments of for in reverse order | ||
otherwise you'd have to Rfor | |||
ugexe | should CUR install hook files to the same place as bin/ and module files? they would be required for rebuild-recompiliation | 12:30 | |
12:31
laben joined
|
|||
ShimmerFairy | ugexe: for some reason I'm reminded of emerge with its @preserved-rebuild (and before that, "revdep-rebuild") :) | 12:31 | |
laben | hello p6'ers | 12:32 | |
timotimo | mhhh revdep rebuild | ||
i remember using that quite a bit | |||
ShimmerFairy | timotimo: `revdep-rebuild` is now spelled `emerge [your usual flags] @preserved-rebuild`, and has been for a little while :) | ||
timotimo | i haven't used gentoo for a long time :) | ||
nine | TimToady: many thanks! With your explanation this makes so much sense now :) | 12:33 | |
ShimmerFairy | timotimo: but for sure, if I ever get into working on Perl 6's module stuff (that is, S11 and S22), I'd probably be taking a lot of inspiration from portage, both intentionally and accidentally :P | 12:34 | |
ugexe | i've been working on package orphaning but im getting to the reinstall-but-validate dealy | ||
timotimo | hehe | ||
being inspired by lots of different sources is definitely a good thing | 12:35 | ||
maybe we should take inspiration from maven and npm and some more others | |||
ShimmerFairy | I was about to say gradle, but that Java-based tool doesn't do the modules bit :) | ||
timotimo | mhm | 12:36 | |
well, build system related stuff could be interesting to perl6, too ... to get production pipelines for video game development ... assets and such for example | |||
laben | today i got the easiest fix ever seen (at least by me) and it's for the TestML module, someone got commit rights? | ||
timotimo | ooooh! | 12:37 | |
masak | I agree, after TimToady's explanations, GLR almost seems like a good thing. :P | ||
timotimo | you can fix TestML? | ||
that's excellent! | |||
ShimmerFairy | timotimo: 6make would be far superior to gmake for sure :3 | ||
laben | for nom... didnt check glr | ||
timotimo | ugh | ||
how do you feel about qmake and cmake? | |||
ShimmerFairy | timotimo: I use cmake for my C++ stuff, including my Qt projects :) (aka the KDE approach) | 12:38 | |
JimmyZ doesn't know what is 'one arg rule' | |||
timotimo | ah, yes. i saw that when building krita | ||
laben | timotimo: lib/TestML/Parser.pm line 66 => change the last char (the comma) to semicolon | ||
timotimo | JimmyZ: more or less "if you write for $foo, it'll iterate over the contents of $foo" | ||
laben: when i tried to improve TestML some time ago, i found out that that module doesn't even barely parse official testML syntax | 12:39 | ||
JimmyZ | like my $foo = [2,3], ' for $foo { .. } ' vs 'for $foo, 4 { ... }' ? | 12:40 | |
timotimo | yes | ||
laben | timotimo: oh, i didnt know that, i need to go deeper ò.ò | ||
timotimo | "$foo, 4" will do 2 iterations, "for $foo", too | ||
laben: i might have become massively confused, though | |||
ugexe | id be surprised if you could just swap out that comma for a ; and it would work correctly. maybe pass tests | ||
JimmyZ | yeah, I saw it in the roast | 12:41 | |
laben | as i said, it's a fix for nom, not glr | ||
ugexe | m: my %x; my %y; %x<a> = 1; %y = "\\\\" => "\\", %x; say %y.perl | 12:42 | |
camelia | rakudo-moar 93418e: OUTPUT«{"\\\\" => "\\", :a(1)}<>» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«{"\\\\" => "\\", :a(1)}» | ||
ugexe | m: my %x; my %y; %x<a> = 1; %y = "\\\\" => "\\"; %x; say %y.perl | ||
camelia | rakudo-moar 93418e: OUTPUT«WARNINGS:Useless use of variable %x in sink context (line 1){"\\\\" => "\\"}<>» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«WARNINGS:Useless use of variable %x in sink context (line 1){"\\\\" => "\\"}» | ||
ugexe | plus that method then returns the result of make %h, instead of returning my %h = '\\' => "\\", make %h | 12:44 | |
moritz | m: my $gorch = "foo bar"; say «FOO $gorch BAR».perl | 12:45 | |
camelia | rakudo-moar 93418e: OUTPUT«("FOO", ("foo", "bar"), "BAR")» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«("FOO", ("foo", "bar"), "BAR")» | ||
laben | mh, trying to set up glr right now, is it normal that bootstrapping panda fails at the very beginning? | ||
nine | laben: yes | ||
moritz | laben: I'm pretty sure that rakudo-glr is not far enough yet to bootstrap panda | 12:46 | |
timotimo | right, sadly yes | ||
well, rakudo-glr may have to advance a little bit still, but panda needs a few changes, too, no? | |||
nine | laben: there's a glr branch of panda that comes a little further | ||
laben | "Must specify something as a path: did you mean '.' for the current directory?" which bring us to lib/Panda/Ecosystem.pm line 25 | ||
dalek | ast/glr: 316336e | moritz++ | S02-literals/quoting.t: Add a flat() call to quoting.t |
||
moritz | timotimo: yes | ||
nine | and I've got some trivial local changes that allows it to install, just not yet to work fully | 12:47 | |
timotimo | oooooh | ||
nine | moritz: we're actually pretty close :) | ||
_itz_ | laben: zef has worked recently on GLR although maybe not right now | ||
ugexe | zef works still. you just have to force install | ||
12:47
leont left
|
|||
_itz_ | I stand corrected :) | 12:47 | |
moritz | just don't do anything with lists, and you'll be fine :-) | ||
timotimo | yeah, all you really need is cons cells | 12:48 | |
moritz | hashes work too (mostly) | ||
nine | moritz: I wonder if this flat you added really is how it's supposed to work now, or if it's just a remaining bug in rakudo? | ||
ShimmerFairy | As long as your program does not need a grouped collection of items, it's good to go! :P | ||
moritz | nine: I'm not entirely sure; but since the result was the same pre-glr, I decided to add it | 12:49 | |
but it does feel odd | |||
laben | well then, i'll check out ufo then | ||
nine | moritz: the whole point of <<foo $bar>> is AFAIK to build lists. Seems strange if you had to explicitly flatten that to actually assign it to an array. | 12:50 | |
m: my $b = "bar"; my @a = <<foo $bar>>; say @a.perl; | |||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/la7Z_14fSdVariable '$bar' is not declaredat /tmp/la7Z_14fSd:1------> 3my $b = "bar"; my @a = <<foo 7⏏5$bar>>; say @a.perl;» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/XhZoTraNdxVariable '$bar' is not declaredat /tmp/XhZoTraNdx:1------> 3my $b = "bar"; my @a = <<foo 7⏏5$bar>>; say @a.perl;» | ||
nine | m: my $b = "bar"; my @a = <<foo $b>>; say @a.perl; | ||
camelia | rakudo-moar 93418e: OUTPUT«["foo", "bar"]<>» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«["foo", "bar"]» | ||
dalek | ast/glr: 625fc57 | moritz++ | S02-literals/quoting.t: Revert "Add a flat() call to quoting.t" This reverts commit 316336e7a32f300e9e853325bd815bd6d3fffd28. |
||
moritz | nine: ok, you convinced me :-) | ||
oh, and nine++ for fixing that spectest hang earlier | 12:51 | ||
nine | moritz: ah, now I saw the $gorch. I left that one alone because I have no idea if <<>> should flatten its contents | ||
Would be nice if someone who actually knew (rather than guessed) something about the new semantics could chime in there. | 12:52 | ||
timotimo | where are we going to find a TimToady at this time of day? | 12:53 | |
nine | From HYPER: my $type = left.WHAT; nqp::iscont(left) ?? $type(@result.eager).item !! $type(@result.eager) | ||
^^^ this looks kinda oldish to me. Probably the reason for the remaining slice fail | |||
Oh, I just noticed that I have already done some work on HYPER... | 12:54 | ||
laben | m: my @a=1..5; my @b = @a>>.pred Z @a; @b.say | 12:55 | |
camelia | rakudo-moar 93418e: OUTPUT«0 1 1 2 2 3 3 4 4 5» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«0 1 1 2 2 3 3 4 4 5» | ||
TimToady | what makes you think I'm not guessing too? :) | 12:56 | |
ugexe | these new supply constructs are going to make stdmuxing trivial :) | 12:57 | |
TimToady | only instead of trying to guess what TimToady wants, I'm trying to guess what future generations of programmers will want... | ||
laben | m: my @a='a'..'e'; my %b = @a>>.succ Z @a; %b.say | ||
camelia | rakudo-moar 93418e: OUTPUT«b => a, c => b, d => c, e => d, f => e» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«Odd number of elements found where hash initializer expected in block <unit> at /tmp/fa582_lDKs:1» | ||
laben | m: my @a='a'..'e'; my %b = @a>>.succ Z=> @a; %b.say | ||
camelia | rakudo-moar 93418e: OUTPUT«b => a, c => b, d => c, e => d, f => e» | ||
GLRelia | rakudo-moar c4d1b0: OUTPUT«b => a, c => b, d => c, e => d, f => e» | ||
laben | eureka! | ||
TimToady | we really, really need to make .gist through in parens for clarity | 12:58 | |
nine | TimToady: I'd just very much like to defer to your experience in guessing what future generations of programmers want | ||
TimToady | *throw | ||
ShimmerFairy | TimToady: I would very much love if Positional .gists weren't unbracketed space-separated-values | 12:59 | |
TimToady | they can still be space separated | ||
just make 'em look more like s-exprs | |||
ShimmerFairy | sure, so long as you don't choose <> or «» as the general brackets :P | ||
13:00
AlexDaniel joined
|
|||
moritz | as long as the spaces are further delimited by commas, all is good | 13:01 | |
TimToady | clutter | 13:02 | |
ShimmerFairy | I don't the spaces are so much an issue, it's just that combined with the lack of brackets it makes it look worse (but I think brackets alone should suffice) | ||
13:06
jack_rabbit left,
Ven left
|
|||
TimToady | I think in this case I probably agree with the view that trying to use «» for multi-dimensional stuff comes under the categor of "unnatural act", so it should probably imply .flat itself | 13:09 | |
dalek | kudo/glr: b445bf1 | (Stefan Seifert)++ | src/core/metaops.pm: Fix HYPER wrapping results in an extra list We need to explicitly flatten the array when passing to the coercer now. |
||
13:12
brrt joined
13:13
rmgk_ joined,
rmgk is now known as Guest45101,
Guest45101 left,
rmgk_ is now known as rmgk
13:14
brrt left
13:15
brrt joined
|
|||
ShimmerFairy | I wasn't aware you could, I think you'd have to be quite clever to sneak a list into «» (doubly so for <>) | 13:17 | |
TimToady | it was more a side effect of how it implements interpolation | 13:19 | |
JimmyZ | .tell jnthn looks like you forgot to push the new S17-supply/syntax.t | ||
yoleaux | JimmyZ: I'll pass your message to jnthn. | ||
ShimmerFairy | Yeah, that's what I was thinking. You certainly can't stick another «» in there, and every list construct would just be interpreted as a number of strings. | 13:20 | |
13:26
Ven joined
13:27
g4 left
13:37
Possum joined
|
|||
dalek | rl6-roast-data: 20c77e8 | coke++ | / (10 files): today (automated commit) |
13:40 | |
[Coke] | glr percentage increasing. | 13:41 | |
S09-typed-arrays/native-int.t - 1380 tests aborted ( | 13:44 | ||
13:44
pierrot joined
|
|||
[Coke] | that's the biggest fail ATM. | 13:44 | |
13:46
xfix left
13:47
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
dalek | kudo/glr: 3e32f40 | (Stefan Seifert)++ | src/core/metaops.pm: Fix >> >> and << << hypers Hyper operators with a single item on one side work now as well. |
13:52 | |
Ven | nine++ | ||
nine | [Coke]: natives have a lot of NYI still | ||
Ven | .oO( great work jnthning it all up ) |
||
nine | It's a great way of learning Perl 6 btw. I didn't even know what >>+<<, <<+<< or >>+>> meant before I started fixing them ;) | 13:53 | |
timotimo | sadly, now you've fixed them, others won't be able to learn much from that :( | 13:54 | |
nine | Yeah, we'd need another great refactor for that | ||
timotimo | what do we refactor next | ||
integers? | |||
nine | Scalars? | 13:55 | |
Ven | first-class {s,tw}igils! | ||
timotimo | sub scalar_mod:<√> ... | 13:56 | |
Ven | :D. | ||
[Coke] | nine: D'oh - that's actually an easy fix. look at the for loop on about line 10... | 13:57 | |
I spent 5 minutes reducing that down and realized it's actually the for loop that's dying, not anything else. :P | |||
nine | [Coke]: for flat @int,@uint -> $T { allows 14 tests to pass | 13:58 | |
[Coke] | yup. :) | ||
well, that's 14 more, anywhere. I'll let you push that. | |||
13:58
aborazmeh left
|
|||
nine | [Coke]: well you found it :) | 13:58 | |
13:59
cognominal left
|
|||
[Coke] | ok, pushing. | 13:59 | |
AlexDaniel | timotimo: qx//, shell and run, please | 14:00 | |
[Coke] | ENODALEK? | ||
AlexDaniel | that's what needs some changes before 1.0 | ||
timotimo | didn't we just have changes made to that? | 14:01 | |
AlexDaniel | timotimo: oh really! | ||
timotimo | froggs changed things | ||
AlexDaniel | timotimo: that sounds really, really nice! | ||
timotimo | in order to make them work differently with regards to output grabbing | ||
14:01
synbot6 joined
|
|||
AlexDaniel | timotimo: where can I read about that? | 14:01 | |
timotimo | like, with the :out parameter | ||
14:01
Ven left
|
|||
AlexDaniel | oh yeah!!! | 14:01 | |
timotimo | sorry, dunno :S | ||
AlexDaniel | hm, does anybody knows something about that? | 14:02 | |
timotimo | froggs is the one who did it | 14:03 | |
ugexe | what about it | ||
AlexDaniel | .tell FROGGS I've been waiting for this! So how does it work now? “<timotimo> froggs changed things in order to make them work differently with regards to output grabbing” | 14:04 | |
yoleaux | AlexDaniel: I'll pass your message to FROGGS. | ||
laben | O.o seems like ufo gets by with 2 simple fixes... | ||
ugexe | my $handle = shell("cmd", :out); say $handle.out.lines | 14:05 | |
timotimo | but ufo doesn't know about registering things with the right CUR, so you have to -Iblib/lib all the time | ||
AlexDaniel | .tell FROGGS I mean, qx// and run. | ||
yoleaux | AlexDaniel: I'll pass your message to FROGGS. | ||
laben | timotimo: but it's much better for (amateur) packaging, at least up to panda and its deps | 14:06 | |
14:06
pmurias joined
|
|||
timotimo | fair enough | 14:06 | |
dalek | p/js: 1de4996 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp: Fix indentation |
||
p/js: 43b8d66 | (Pawel Murias)++ | src/vm/js/ (2 files): Implement the quant regex type |
|||
p/js: 965c075 | (Pawel Murias)++ | src/vm/js/ (3 files): Pass test 31-grammars. Set boolification mode when deserializing STables. |
|||
AlexDaniel | ugexe: irclog.perlgeek.de/perl6/2015-07-11#i_10881463 | ||
14:08
Ven joined
|
|||
ugexe | run can give you a file handle though. so you can read from it lazily | 14:08 | |
well a handle | |||
AlexDaniel | ugexe: good-good, still everyone is going to use qqx// just because it is shorter… | 14:09 | |
I mean, less characters to type | 14:10 | ||
ugexe | run and shell will (in the future) have :merge for capturing both :out and :err to the $out handle. or you can have each separate | ||
ShimmerFairy | What's wrong with qx// ? | 14:11 | |
14:11
virtualsue joined
|
|||
AlexDaniel | ShimmerFairy: irclog.perlgeek.de/perl6/2015-07-11#i_10881463 | 14:11 | |
14:11
rurban_ left
|
|||
ugexe | qx also doesn't give you the status/exitcode and whatnot. for fine grained control, you would use run over qx// | 14:12 | |
AlexDaniel | ugexe: you can have all these nice features but the most common need is to get the output | 14:13 | |
ugexe: and whether you need status code or whatever should not even be a question here | |||
the question is whether you want to do it through shell or not | |||
want shell? OK, use qx | |||
or 'shell' | |||
nope? Use 'run' | 14:14 | ||
And I really think that most people don't. And if they do, this is should be a conscious step | 14:15 | ||
ShimmerFairy | AlexDaniel: I'm sorry, I don't get what the issue is from that link. | ||
AlexDaniel | ShimmerFairy: let's say you want to run some program and get its output | ||
pmurias | ShimmerFairy: qx uses the shell, and as such can expose you to shell injection attacks | 14:16 | |
AlexDaniel | ShimmerFairy: what would you use? This: $output = run(«echo $test», :out).out.lines; | ||
ShimmerFairy: or just this: $output = qqx/echo $test/; | |||
ShimmerFairy | I've used qx// before because I specifically _didn't_ want to take the output, and instead let the terminal print it, fwiw :) | 14:17 | |
14:18
virtualsue left
|
|||
timotimo | if you run without :out, i think the output will just travel outwards to the terminal, too | 14:19 | |
ugexe | true | ||
ShimmerFairy | Wait, I got mixed up, it was qx// for getting the output, shell() (run didn't work when I had to use these last) for not taking it :P | 14:20 | |
(It has been a while since I had to call external commands :P) | |||
laben | masak: got a patch for ufo, works on both nom and glr with this gist.github.com/c6e198e31a82fff5e0cf | ||
ugexe | *makes a supply from .out.lines(:!eager) and .taps it* | 14:21 | |
ShimmerFairy | I can see the security issue, but I'm not convinced shell/run would avoid those where qx// doesn't. (Or rather, I don't think qx is that much more problematic than the others. You shouldn't be blindly passing unchecked arguments in any case.) | 14:22 | |
pmurias | run doesn't call the shell so it avoids shell injection | 14:23 | |
ShimmerFairy | unless run is asked to run a shell, of course :) | 14:25 | |
14:28
virtualsue joined
|
|||
ShimmerFairy | I definitely see the security concern, but I think "Know what qx//, shell, and run do" is a perfectly valid solution here. I don't see where the language needs to do something about it, aside from whatever security features S23 would mention that you could enable. | 14:29 | |
14:31
colomon joined
|
|||
ugexe | will `whatever` eventually allow to say (using the react/whatever gist as an example) `whenever @runners>>.stdout -> $output { print $output.indent(2); }` ? | 14:31 | |
laben | .tell FROGGS got a patch for TestML with a fix for latest nom, seems to work already on glr: gist.github.com/986ba2b9e63d1763601d | ||
yoleaux | laben: I'll pass your message to FROGGS. | ||
AlexDaniel | ShimmerFairy: then we don't have to think about security at all. Just tell the users to “Know what …” and that's it | 14:32 | |
can be applied to any common problem, like SQL injection and etc. | 14:33 | ||
ShimmerFairy | If you're accepting arbitrary input for SQL queries and you don't know about SQL injections (regardless of if your systems handles it for you), you deserve whatever happens :P | ||
AlexDaniel | “If you want to avoid problems, just type that weird-looking long thing” and if the user does not, he “should have known better” | 14:34 | |
Woodi | hi #perl6 :) | 14:35 | |
ShimmerFairy | I think the issue here is that S23 has yet to be even written. I really think the better solution would be to have features to disallow tainted input, for example, instead of paranoid-ly removing language features because they have a higher risk of security issues. | ||
Woodi | so how eg. compilers deal with arbitrary input ? :) | ||
ugexe | which, for someone that is new, will likely mean extra code to setup the enviroment to do things like run 'git' that also works on windows | 14:36 | |
brrt | hi Woodi | ||
what do you mean arbitrary input? | |||
what do you mean by compilers? just rakudo, or compilers in general? | |||
Woodi | brrt: I don't know :) like in shell and SQL ;) | ||
AlexDaniel | usually it is not arbitrary input, it is wisely constructed malicious input | 14:37 | |
and “compilers” or whatever do exactly what the hacker tells to do, that's the point :) | 14:38 | ||
brrt | ok, well, some of those are interpreters | ||
ShimmerFairy | I meant "arbitrary" as in "could be anything", not "randomly generated" :) | ||
brrt | but in the first place, it starts with a parser | ||
actually, that's wrong | |||
typically compilers and interpreters start with lexical analysis (lexing) | 14:39 | ||
AlexDaniel | ShimmerFairy: OK disallow tainted input, how would you taint variables passed to shell? | ||
brrt | lexical analysis is the origin of regular expressions | ||
|Tux| | test 50000 42.570 42.481 | ||
test-t 50000 41.897 41.807 | |||
laben | ShimmerFairy: why not random? this shiny thing could be used on moarvm lcamtuf.coredump.cx/afl/ | ||
ShimmerFairy | shell vars or p6 vars? | ||
AlexDaniel | ShimmerFairy: p6 vars passed to the shell | 14:40 | |
ShimmerFairy | laben: "could be anything" includes random, I just wanted to point that I didn't mean _just_ random :) | ||
laben | well, yeah | ||
ShimmerFairy | AlexDaniel: my understanding of Perl 5's tainting mechanism (which is very limited) is that variables would be tainted if assigned tainted objects. | 14:41 | |
brrt | to make a very long story short: any interpreter or compiler worth anything converts the input during lexing (matching input to tokens understood by the language) | ||
AlexDaniel | ShimmerFairy: yea, sure, but what would you do with the string to make sure that it is safe? | ||
brrt | this means that 'input safety' in terms of buffer overflow input safety is *primarily* a lexer issue | ||
AlexDaniel | ShimmerFairy: how would you sanitize it? | 14:42 | |
brrt | actually recognizing the input stream is part of the parser, which takes a stream of input and builds a tree from it (typically) | ||
ShimmerFairy | AlexDaniel: make sure it's untainted (sanitizing as needed), and qx// and shell would complain if their string is tainted (at least when security features are enabled) | ||
AlexDaniel | ShimmerFairy: yes but that's the question, how would you sanitize it? | 14:43 | |
dalek | kudo/glr: 3e7cfcb | (Stefan Seifert)++ | src/core/metaops.pm: Bring back HYPER with one side shorter than the other (1,2,3) >>+>> (1,2) and (1,2) <<+<< (1,2,3) work again |
||
ShimmerFairy | AlexDaniel: that falls on the user of course. There's no way the language could be responsible for sanitizing data for everything. | ||
brrt | perl5 tainting detection is problematic. variables are considered untainted basically after they went through a regular expression | ||
AlexDaniel | ShimmerFairy: yes, ok, but what would *you* do? | ||
ShimmerFairy | brrt: of course, P6 would be better :) | ||
laben | i got a question for GLR'ers: when is a Seq returned/generated instead of a List? | 14:44 | |
Woodi | so compilers/interpreters have "full" knowledge how to transform things. and with SQL/sh we usually aiming only for "do standard escaping"... | ||
brrt | yeah, and that's dumb, Woodi | ||
basically, it's faking knowledge about the input language, and that can be circumvented really often | |||
ShimmerFairy | AlexDaniel: whatever input I get externally, I make sure is sanitized, and use it. | ||
Woodi | $shString.bind("-e", 1) # ;) | ||
brrt | the *good* way to do it would be to make a grammar matching the input and serializing the result to a valid language input | 14:45 | |
AlexDaniel | ShimmerFairy: how do you make sure that it is sanitized? :) | ||
timotimo | yeah, always know what language you're in | ||
Woodi | problem is we want to keep run/qx/... handy, close to CORE... | ||
brrt | well, you can do that. but you can't do that and make it safe | ||
ShimmerFairy | AlexDaniel: the reason I haven't specified is because it depends on what I'm sanitizing for. There's no universal sanitation method, for there are a variety of syntaxes | 14:46 | |
AlexDaniel | ShimmerFairy: hehe. So the solution is: don't use the shell | ||
and there is no problem | |||
Woodi | ShimmerFairy: but exact&perfect eg. for bash ? or perfect for csh ? | ||
ShimmerFairy | AlexDaniel: I'm not talking about just the shell atm, all destinations you could send data to. | ||
AlexDaniel | ShimmerFairy: my issue is with qqx// in particular and not something general | 14:47 | |
ShimmerFairy | And I don't presently know how to ensure sanity of input for bash or whatever, but when I need to do that I'll look up what's required, and do it :) | ||
AlexDaniel | … you look it up, and some answers will tell you not to use shell because you don't need it… | 14:48 | |
brrt | Woodi: exact and perfect for bash requires you emulate bash to a pretty far extent | ||
and it likely won't DWYM anyway | |||
Woodi | ShimmerFairy: there was a talks: "Do not implement file escaping yourself, use File::..." :) | 14:49 | |
ShimmerFairy | Woodi: of course I would prefer a module, but this is Perl 6. As of now, I'd probably be the one writing the module :P | ||
Woodi | brrt: I hoped for list of chars to \ buuu | ||
AlexDaniel | ShimmerFairy: I see people doing it wrong everywhere. And if the language itself can help the user to step on the right path, so much the better | 14:50 | |
ShimmerFairy | AlexDaniel: sure, and we already have run() for that, as I understand it :) I just don't think removing features because they have the potential to cause problems is a good idea. | ||
brrt | i can think of a few tricks that would work. $, (, ) etc, but it's not really safe, and you don't know just what people have linked /bin/sh to | 14:51 | |
AlexDaniel | uuuuuggghhhh | ||
A great example of someone trying to quote things correctly is here, I think: github.com/notsecure/uTox/issues/265 | 14:52 | ||
It took like 4 commits to get it right | |||
brrt | anyway, anyone assuming shelling out on untrusted input .... kind of deserves what they're getting. there are plenty of ways to start a program with arguments without a shell | ||
AlexDaniel | and in the end the solution was… not to use the shell | ||
brrt | there are plenty of ways to start a pipeline, ffs, without starting a shell | ||
don't. shell. on. input. | 14:53 | ||
AlexDaniel | brrt: Huffman coding | 14:54 | |
brrt | make a module | ||
AlexDaniel | brrt: if you make it easy to do it wrong then people will do it | ||
brrt | hmm | 14:55 | |
ShimmerFairy | I think you're giving Huffman too much weight in this instance, it doesn't convince me there's a problem worth removing qx over. | ||
Woodi | maybe just include compile-time switch to disallow shell interaction :) | ||
AlexDaniel | ShimmerFairy: ok, you can make easier to use “run” then | 14:56 | |
nine | ShimmerFairy: without having backlogged yet, I'm quite reminded of mysql_real_escape() ;) | ||
AlexDaniel | ShimmerFairy: but keep in mind that it is pretty hard to beat qqx// | ||
brrt | then maybe we should be making building a pipeline simpler, which is the only valid reason to use a shell anyway | ||
AlexDaniel | simply because it is too short | ||
DrForr | mysql_real_escape() of course being a tarball of postgres :) | ||
nine | 213/1047 spec test files failing now | ||
14:57
xfix joined
|
|||
ShimmerFairy | AlexDaniel: if I don't believe Huffman to be an issue here, why would I be interested in making something shorter? :P | 14:57 | |
AlexDaniel | whatever | ||
ugexe | i think it might be nice if qx// used run, and then you could do like qx: $cmd, :shell;, but then the problem is for shell $cmd is a string, and run it should be an array | 14:59 | |
AlexDaniel | ugexe: yeah, that's why it is so hard to fix it | 15:00 | |
ShimmerFairy | ugexe: also, for qqx// , you'd have to deal with qqx/$prgm-name-might-have-space-tho / , and I'm not sure I want qqx// to end up doing something like handling the first term specially | ||
AlexDaniel | ShimmerFairy: you have to quote it if it has spaces | 15:01 | |
ShimmerFairy | AlexDaniel: I mean in terms of qqx// being passed to run, what would you do there? | ||
I could see a qwx// and qqwx// as a "run" version of qx// and qqx// , however. | 15:02 | ||
AlexDaniel | ShimmerFairy: if I, like, really want to use shell? Like under torture? | ||
ShimmerFairy: you have to quote all single quotes (turn ' into '\'') and put ' ' around | 15:03 | ||
that will work sometimes | |||
and basically that's what ShellQuote does in perl5 | |||
ShimmerFairy | AlexDaniel: what if you did qqx/$prgm stuff/ expecting run($prgm, "stuff") , but my $prgm = "cmd; cmd" ? Would that $prgm be a valid first arg to run? | 15:04 | |
AlexDaniel | sure | ||
well, 'cmd; cmd' is a valid filename | |||
under some conditions, like in unix | 15:05 | ||
ShimmerFairy | I think if you really wanted a quoting construct for run() , then the addition of qwx and qqwx would be best. Those names would highlight the fact that you're using quotewords in an executable fashion :) | ||
AlexDaniel | … | 15:06 | |
but then it gets confusing, just like system() is in perl5 | 15:07 | ||
you change something slighly and the behaviour changes are huge (shell is used or not) | |||
ShimmerFairy | AlexDaniel: no, I'm proposing that qx// and qqx// are the quoting construct versions of shell(), and qwx// and qqwx// are the quoting construct version of run() | 15:09 | |
AlexDaniel | for those who don't know: system('echo', 'hello world') seems to run a command, system('echo hello world') seems to execute that string in shell | 15:10 | |
15:10
rindolf joined
|
|||
ShimmerFairy | To me, having the names contain "quote word" in them perfectly illustrates the nature of run(). You used «» (which is qqx) to pass stuff to run() in that backlog link, so I think it really is a natural fit :) | 15:11 | |
er, s/qqx/qqw/ | |||
AlexDaniel | ShimmerFairy: run does not quote anything | ||
ShimmerFairy: so what does it illustrate? | |||
geekosaur | yes, that's documented (single parameter acts like C's system(), multiple uses exec) --- but. I thought it also looked for simple single strings and bypassed the shell? | ||
15:11
tadzik joined
|
|||
geekosaur | ...perldoc -f system confirms | 15:11 | |
ShimmerFairy | You used run(«echo $test», :out).out.get; that «echo $test» is equivalent to qqw[echo $test] | 15:12 | |
15:12
leont joined
|
|||
ugexe | the only thing that bugs me is the inconsistency with proc::async... notably this (trying to pass '$program' via -e) | 15:12 | |
[$*EXECUTABLE, '-I.', '-e', $.async ?? $cmd !! '"'~$cmd~'"', 'Build.pm'] | |||
ShimmerFairy | so I'm saying that qqwx/echo $test/ would be equivalent to run(qqw/echo $test/) which is equivalent to run("echo", "$test") | 15:13 | |
geekosaur | ugexe, isn't that running a subsidiary perl? | ||
-e vs. -c is correct | |||
AlexDaniel | ShimmerFairy: yes, that's better. Still, Huffmanly speaking, it is wrong. And it is also confusing because there is not enough visual difference | 15:14 | |
ugexe | i mean if you run that with run and proc::async without the ??!!, it will not run the same thing | ||
AlexDaniel | ShimmerFairy: but I would definitely complain less if that was implemented | ||
.oO(less…) |
|||
15:14
diana_olhovik left
|
|||
ShimmerFairy | AlexDaniel: "Huffmanly speaking", qq// is wrongly longer than q// , since qq does more useful stuff for the user, and qq vs. q seems to do fine with the supposed visual difference issue | 15:15 | |
laben | tadzik: File::Find seems to be fine on GLR given a slight change to the equals function in the tests (use >> instead of .map) | 15:16 | |
AlexDaniel | ShimmerFairy: I agree that people should prefer single quotes over double quotes, and it is also consistent with English language – single and double quotes | ||
tadzik | laben: oh, cool | ||
AlexDaniel | although single quotes are not a real thing | ||
tadzik | I was trying to figure out recently why this current code isn't working | 15:17 | |
AlexDaniel | ShimmerFairy: but you also have “” which I use (as you can see) | ||
laben | tadzik: i fear you need latest-est glr commit by nine++ | ||
ShimmerFairy | AlexDaniel: I was pointing out why the huffman argument is especially silly for qx vs. qwx, not making a sincere case there :) | ||
AlexDaniel | ShimmerFairy: it did not really work because q{} qq{} are alright | 15:18 | |
tadzik | laben: well, if File::Find still needs tests then it doesn't solve my problem :P | ||
laben | ok, maybe not the last one exactly | ||
tadzik | erm, s/tests/changes/ | ||
ShimmerFairy | AlexDaniel: first of all, I think the 'w' helps imply "array of strings" where qx and qqx don't (and thus would be an issue of confusion). Second, if you genuinely believe one character of difference is enough to be Huffmanly absolutely terrible, then I don't know what to say. | 15:19 | |
laben | tadzik: i did not change anything in the lib itself, just the test func. anyway i'm going ahead and check Shell::Command | ||
ShimmerFairy | (Other than the fact that most people don't code in a constant "code golf" mode ☺) | ||
hoelzro | o/ #perl6 | ||
laben | tadzik: here it is gist.github.com/anonymous/ac86150158062ae482e1 | 15:20 | |
Ven | \o, hoelzro | 15:22 | |
hoelzro | ahoy Ven | 15:23 | |
AlexDaniel | ShimmerFairy: Well, currently we are getting the users into a trap by making it hard to do things correctly. You are suggesting to make dangerous and safe things equivalent. But I want to have safe things easy, and dangerous things possible. | 15:24 | |
15:24
brrt left
|
|||
ShimmerFairy | AlexDaniel: well, I do think it'd be nice to have a short form for run(). But making qx// and qqx// do that would 1) cause deprecation issues I'm not sure are worth it, and 2) make qx and qqx act in a quotewords-like way with no name-wise indication, which is why I'd go for qwx and qqwx for that | 15:26 | |
AlexDaniel afk | 15:27 | ||
tadzik | laben: yeah, I'm aware that it's just tests. Your patch sheds some more light on what I wanted to know though :) | 15:28 | |
I'd be curious to know why this change is necessary | 15:29 | ||
laben | tadzik: didnt investigate deeply, but it seems .map or .IO were messing something up | ||
tadzik: the list of 7 items got collapsed to only 1 it seems | 15:30 | ||
tadzik | may be something with flattening or so | ||
yeah, that's what I got from the error message, I didn't know what it means though | |||
laben | but .map shouldnt do flattening >> doesnt do | ||
i mean, both flatten or dont | 15:31 | ||
jnthn | wow, a lot of backlog while I went for dinner/drinks :) | 15:32 | |
yoleaux | 13:19Z <JimmyZ> jnthn: looks like you forgot to push the new S17-supply/syntax.t | ||
15:32
larrywall joined
|
|||
larrywall | help me | 15:33 | |
15:33
larrywall left
|
|||
tadzik | what is it with trolls today | 15:33 | |
jnthn | Heh, the async IO is overhead comment is hilarious. Anyone with the first clue about how IO actually works in a computer knows it's all async at the OS level. It's creating the illusion of synchrony that is the overhead. | 15:34 | |
dalek | ast: a78b9f2 | jnthn++ | S17-supply/syntax.t: Add basic S17 supply/whenever syntax tests. |
15:35 | |
15:35
breinbaas left
|
|||
jnthn | There's the test file I forgot to push :) | 15:36 | |
15:36
RabidGravy joined
|
|||
JimmyZ | jnthn++ :) | 15:36 | |
jnthn | JimmyZ: Thanks for the reminder. :) | ||
ShimmerFairy | jnthn: well, if I don't have the first clue about how IO works, would async IO be... over my head? :P | 15:38 | |
15:38
rurban_ joined
|
|||
flussence | jnthn: I read a long article on efficient memory access a long time ago that made the same case for system RAM. You don't get much speedup from a dozen core CPU if you treat RAM accesses as synchronous, cause they're not at all... | 15:38 | |
15:38
CQ joined
15:39
khw joined
|
|||
Ven | .tell [Coke] I remember you were a Tcl fan -- have you looked at wiki.tcl.tk/41658 ? | 15:39 | |
yoleaux | Ven: I'll pass your message to [Coke]. | ||
15:40
cognominal joined
|
|||
jnthn | ShimmerFairy: Depends if your language makes it notably harder to deal with the sync I/O. | 15:40 | |
_itz_ | tadzik: I suspect a certain blog post brought some trolls from under their bridges | ||
jnthn | ShimmerFairy: I'm not saying it's wrong to use sync APIs, just that commenting that async IO is overhead is ridiculous. :) | ||
_itz_ | I made the mistake of engaging with the author on twitter | ||
ShimmerFairy | ooh, which one? | ||
jnthn: yeah, I was just making a terrible overhead/over my head pun :P | 15:41 | ||
jnthn | Oh! | ||
Sorry, I'd have noticed it if I wasn't quite so tired ;) | |||
ShimmerFairy | [joke about async sleeping] | ||
jnthn | flussence: Yeah, memory locality is much why I'm trying to get supplies as the core focus rather than channels :) | 15:42 | |
ShimmerFairy | I recall hearing a while back that the biggest blocker to Dwarf Fortress' speed is RAM latency, interestingly. I should perhaps get to know how computer hardware works, specifically, at some point :) | 15:43 | |
_itz_: what blog post, if I may ask? | |||
15:44
telex left
|
|||
_itz_ | its in the backlog .. its really very TD;DR .. it looks like the author has never even tried p6 | 15:44 | |
best ignored | |||
^ TL;DR | 15:45 | ||
laben | Too Dense; Didnt Read, just about right... | ||
but i read it °.° | 15:46 | ||
15:46
telex joined
|
|||
jnthn | I don't think we need to worry too much over about some Perl 5 folks not wanting to adopt Perl 6. For one becuase it's clear that not only are some Perl 5 users interested, but so are plenty of folks from other backgrounds (which is more important for growth). But for two, those who are happy enough with Perl 5 do, after all, already have a Perl, and Perl 5 has shown a better ability to evolve than most other languages out there. | 15:49 | |
laben hugs everyone! | |||
Let's be happy :) | 15:50 | ||
ShimmerFairy | I just took a look at it, and yeah, it reads like "I like what I do, so I'm going to complain about what I don't do" :P | ||
15:53
magistr joined,
abraxxa left
|
|||
[Coke] | Ven: thanks, but nope. :) | 15:55 | |
yoleaux | 15:39Z <Ven> [Coke]: I remember you were a Tcl fan -- have you looked at wiki.tcl.tk/41658 ? | ||
[Coke] | I know people that are still using a perl pre 5.8 and are happy and don't see the need for any of this newfangled stuff. | ||
15:55
diana_olhovik_ joined
|
|||
[Coke] | (from an Albany.pm meeting - guy showed up hoping that he could find like minded perlites who would do contracting work for him, I think) | 15:56 | |
_itz_ | I used Tcl in one job and ended up quite liking it - antirez.com/articoli/tclmisunderstood.html is good | ||
jnthn | laben: Well, yes, exactly. I think everyone here who is actually working on Perl 6 is doing it because they like what they're building. | ||
pmurias | jnthn: if there are technical reason blocking Perl 6 from being adapted we should try to solve them | 15:57 | |
laben | jnthn: i would like it better if i were able to successfully hack on rakudo :/ | 15:58 | |
ShimmerFairy | I don't think there are any real technical issues anymore, it's more an issue of adoption and ecosystem and all that stuff. | ||
[Coke] hurls news.perlfoundation.org/2015/08/per...ion-1.html - I have to recuse myself, but if anyone else thinks this is a good idea... | |||
jnthn | pmurias: For sure; I wasn't saying we should ignore input, simply that we shouldn't be disheartened if some folks say "no, I'm happy where I am" - and especially so if the "where they are" is among the better places they could be. :) | 16:00 | |
Ven | [Coke]: :D | 16:01 | |
_itz_ | I think there are some easy sells about perl6 .. I gave a begineers perl6 grammars talk to a local perlmongers group and the reaction was positive | ||
laben | tadzik: for each map2>> transition done, there's an equal and inverse >>2map transition to do. i found what gave Shell::Command problems at least in the tests | 16:03 | |
jnthn | [Coke]: I suspect I have to recuse myself on that too ;) | 16:04 | |
16:04
pyrimidi_ joined
|
|||
_itz_ | I think some people are a bit scared of new syntax and focusing on how perl6 syntax can be simplier and clearer will win those peopel over | 16:04 | |
16:04
pyrimid__ joined
|
|||
laben | tadzik: here it is gist.github.com/anonymous/5481d2e6df95b8fd5e78, fixes the tests. now onto JSON::Tiny | 16:04 | |
pmurias | jnthn: sure, Perl 6 in it's current state is not ready for moving important things too | ||
16:04
pyrimid__ is now known as pyrimidine_
|
|||
pmurias | s/to/ | 16:04 | |
RabidGravy | some people were unsettled by the changes from Perl 4 to Perl 5 too | 16:05 | |
_itz_ | also perl5 people are quite adaptable with things like Moose and MooseX::Declare and the DSL aspects of Dancer | ||
jnthn | pmurias: Depends what things they are, and not everything is a case of "moving X to" either. None of the cases where I used Perl 6 in $dayjob situations were migration ones. | ||
_itz_ | RabidGravy: it took me several years to write proper perl5 and not perl4 with "my" and "\@args" :) | 16:06 | |
mst | _itz_: Moops > MooseX::Declare | ||
_itz_: it has the huge advantage of not involving Devel::Declare | |||
magistr | moose | ||
RabidGravy | moof! | ||
magistr | perl6 don't have normal OOP? | 16:07 | |
16:07
Ven left
|
|||
RabidGravy | er yes | 16:07 | |
[Coke] | magistr: yes, Perl 6 has OOP. | 16:08 | |
RabidGravy | shocking | ||
magistr | [Coke], hashes is OOP | ||
16:08
pyrimidi_ left
|
|||
magistr | like javascript or lisp | 16:08 | |
[Coke] | ok, troll. | 16:09 | |
RabidGravy | or cobol | ||
jnthn | OOP is about exchange of messages between autonomous actors. | ||
16:10
araujo left
|
|||
RabidGravy | said the actress to the bishop | 16:10 | |
jnthn | The rest doesn't matter much. | ||
cognominal | magistr, thx to jnthn, the compiler toolkit, rakudo, supports a metamodel. It allows to define almost any OO model (class based or object based) | 16:11 | |
jnthn | :) | ||
Time for sleep here | |||
'night | |||
RabidGravy | it would actually be quite amusing to attempt a prototype type of model | 16:12 | |
cognominal | Supporting js would allow rakudo to live in a browser. | 16:13 | |
_itz_ | there is that llvm to js route | 16:14 | |
16:16
Ven joined
|
|||
magistr | actor model is awful in erlang... | 16:17 | |
cognominal | nice try | ||
magistr | only a lightweight processes | 16:18 | |
laben | well, it's true that erlang is made for telecommunications code, not for fashion shows of actors and models | 16:19 | |
16:19
brrt joined
|
|||
_itz_ | magistr is about the "ST doesn't have a blitter" level of convo from back in the day | 16:20 | |
RabidGravy | there's some really useful and excellent software made in Erlang | 16:21 | |
virtualsue | rabbitmq | ||
RabidGravy | couchdb, ejabberd | 16:22 | |
loads | |||
magistr | erlang is awful, couse it will be have a normal jobs with lists etc, which is slower than operations in ets | 16:24 | |
Ven | magistr: seems to be pretty harsh for such a "small" point | 16:25 | |
tadzik | haha | ||
laben: okay, I really need to understand those before I apply them:) | 16:26 | ||
pmurias | _itz_: re llvm to js route, you mean compiling MoarVM to js? | ||
_itz_ | pmurias: yes I wondered if anyone had tried it. I have seen demos of quake etc running | 16:27 | |
laben | moritz tadzik: dont worry, i got your back. same >>2map for JSON::Tiny | 16:28 | |
pmurias | _itz_: I'm not aware of any attempts, personally I'm working on getting Perl 6 in the browser by writing a backend that emits javascript | 16:29 | |
RabidGravy | nobody has mentioned ocaml yet, now I only know one piece of software made with it and that piece of software is almost unique in its domain | 16:31 | |
magistr | RabidGravy, erl must have a servants to solve a difficult jobs | ||
RabidGravy | but there again so must I ;-) | 16:32 | |
laben | RabidGravy: ooc, what is it? i seem to remember a compiler in ocaml for another language, but at the moment i cannot remember | ||
pmurias | RabidGravy: why should we mention ocaml? | ||
magistr | ocaml is too ugly as perl | 16:33 | |
RabidGravy | liquidsoap.fm/ is an almost unique piece of software made in ocaml | ||
pmurias is confused why we should talk about ocaml in #perl6? | 16:34 | ||
magistr | but normal books such as TAPL and Data Structures by Okasaki uses ML | ||
_itz_ | pmurias: it has camel in it! sorta | 16:35 | |
laben | RabidGravy: ooh, shiny! what a nic(h)e thing. | ||
_itz_ | hmm there are some mailing list messages about errors with MoarVM and emscripten | ||
RabidGravy | pmurias, it's because someone keeps bringing up other languages | ||
magistr | perl6 have TCO? | 16:36 | |
geekosaur | hello, unison | ||
RabidGravy | yaw | ||
geekosaur | (for widely used software written in ocaml) | 16:37 | |
virtualsue | TCO? | ||
magistr | tale rec optimize | 16:38 | |
RabidGravy | total cost of ownership? | ||
laben | The Chosen One? ofc perl6 it is | ||
pmurias | RabidGravy: I don't think that's a good idea | ||
laben | wait is TCO perl6 or TimToady? | ||
_itz_ | I think we need a perl6 script to parse magistr | ||
laben | or maybe it was Totally Cool Operation | 16:39 | |
magistr | coq written on OCaml and it is a very nice | ||
geekosaur | oh dear, did they hit this channel too? | 16:40 | |
16:42
colomon left
|
|||
ugexe | is there a way to do atomic compare and swap yet? | 16:44 | |
16:44
colomon joined
|
|||
RabidGravy | pmurias, another interest in a JS backend for me is some crack induced idea I have of using P6 to make CouchDB applications | 16:45 | |
flussence | "atomic" sounds like you're trying to avoid a race condition... sounds like something that may be better handled at a higher level. | ||
magistr | perl...only loops | 16:46 | |
tadzik | so, what's this blog post everyone's talking about? | ||
flussence | .oO( I wonder if this self-unaware character is actually a markov/eliza bot... ) |
||
magistr | it is imposible to define a types | 16:48 | |
ugexe | maybe, but i dont want a high level object. i want to write my own register | ||
flussence | .oO( yeah, they definitely seem mind-bogglingly oblivious... ) |
||
mst | the rage out in ##prolog after he got banned from #perl seemed more coherent than that | ||
flussence | heh, figured it'd be someone on a trolling spree :) | 16:49 | |
AlexDaniel | geekosaur: there are other channels? | ||
16:49
Loren_ joined
16:50
espadrine left
|
|||
AlexDaniel | tadzik: I don't know. Probably this one: varlogrant.blogspot.com/2015/08/i-a...perl6.html | 16:50 | |
RabidGravy | some people are strange | 16:52 | |
pmurias | RabidGravy: any good introduction to couchdb? | ||
geekosaur | they started out in ##math and have been spreading out from there | ||
16:53
blackcat_ left
|
|||
AlexDaniel | whatever, as long as kids are happy | 16:53 | |
magistr | people who use a perl are strange | 16:54 | |
16:54
zakharyas left
|
|||
AlexDaniel | magistr: yes :) | 16:54 | |
pmurias | RabidGravy: I could try to see what's currently possible with nqp-js ;) | ||
brrt | people are strange | ||
when you're a stranger | |||
faces look ugly, when you're alone :-) | |||
mst | AlexDaniel: that really just seems like "I have my issues because of the 'waiting for godot' period, and I'm trying to work through them" | 16:55 | |
16:55
diana_olhovik_ left
|
|||
RabidGravy | pmurias, the docs docs.couchdb.org/en/1.6.1/contents.html have most of it, but the bottom line is that the query server is basically a JS thing | 16:56 | |
brrt | i feel as if that blogpost was written without concern for a coherent story | ||
Ven is surprised people still answer magistr | 16:57 | ||
Ven still hugs magistr for good measure. After all, coq and ocaml are nice! | |||
brrt has never written ocaml, but heard good things about it | 16:58 | ||
flussence | maybe he's just struggling with the last query he brought to the channel? he just repeated it up above... irclog.perlgeek.de/perl6/2015-08-14#i_11057036 | ||
16:59
pmurias left
17:01
spider-mario joined
|
|||
brrt | hmmm... ok, that looks markov-botty to me | 17:04 | |
or, poor english, in which case, no offence meant magistr :-) | 17:05 | ||
DrForr | Oh, he's back? | ||
brrt | and yes, perl6 allows you to define your own types, and subtypes, in quite a flexible way | ||
DrForr | Or it's back? | ||
brrt | recent enough to have been in my chat log | ||
DrForr | Oh, sure. | 17:07 | |
*plonk* | 17:08 | ||
flussence | to me it's kinda fascinating to see these types grow increasingly incoherent and frustrated when they don't get the expected reaction :) | 17:11 | |
17:11
magistr left
|
|||
RabidGravy | Siberian | 17:12 | |
17:13
rarara left
|
|||
flussence | my guess was way off... | 17:13 | |
17:13
domidumont left
|
|||
RabidGravy | could of course be a proxy there | 17:14 | |
laben | m: dd [{a => 1, b => 2}]; | ||
camelia | rakudo-moar 93418e: OUTPUT«$ = [{:a(1), :b(2)}]» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«[:a(1), :b(2)]» | ||
moritz | uhm, that looks wrong on GLR | ||
laben | so, i got this thing [{a => 1, b => 2}] but the hash inside gets flattened away. what to do? | ||
DrForr | You're spending more time thinking about this than he did clicking on the 'download' button :) | 17:15 | |
flussence | m: dd [+{a => 1, b => 2}] | ||
camelia | rakudo-moar 93418e: OUTPUT«$ = [2]» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«[2]» | ||
flussence | oh whoops, not p5 | ||
m: dd [%(a => 1, b => 2)] | |||
camelia | rakudo-moar 93418e: OUTPUT«$ = [:a(1), :b(2)]» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«[:a(1), :b(2)]» | ||
flussence | m: dd [{;a => 1, b => 2}] | 17:16 | |
camelia | rakudo-moar 93418e: OUTPUT«$ = [-> ;; $_? is parcel { #`(Block|76312816) ... }]» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«[-> ;; $_? is parcel { #`(Block|49320912) ... }]» | ||
laben | moritz: it actually causes one of the only two glr-pains on JSON::Tiny, the other i "fixed" already | ||
flussence | hm, that's an awkward problem... | ||
m: say [{;a => 1, b => 2}].[0] | 17:17 | ||
camelia | rakudo-moar 93418e: OUTPUT«-> ;; $_? is parcel { #`(Block|74152272) ... }» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«-> ;; $_? is parcel { #`(Block|49155400) ... }» | ||
flussence | m: say [{;a => 1, b => 2}].[0]() | ||
camelia | rakudo-moar 93418e: OUTPUT«a => 1 b => 2» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«a => 1 b => 2» | ||
laben | m: { a => 1, b => 2 }.WHAT.say | 17:18 | |
camelia | rakudo-moar 93418e: OUTPUT«(Hash)» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«(Hash)» | ||
laben | m: [{ a => 1, b => 2 }].WHAT.say | ||
camelia | rakudo-moar 93418e: OUTPUT«(Array)» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«(Array)» | ||
laben | m: [{ a => 1, b => 2 }].perl | ||
camelia | ( no output ) | ||
GLRelia | ( no output ) | ||
laben | m: [{ a => 1, b => 2 }].perl.say | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«[:a(1), :b(2)]» | ||
camelia | rakudo-moar 93418e: OUTPUT«[{:a(1), :b(2)}]» | ||
ugexe | m: [{a => 1, b => 2},].perl.say | ||
camelia | rakudo-moar 93418e: OUTPUT«[{:a(1), :b(2)}]» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«[${:a(1), :b(2)}]» | ||
laben | ugexe++ | ||
flussence | ugexe++ | ||
laben | let's go with that | 17:19 | |
and with that, i got JSON::Tiny to pass all tests on glr | 17:20 | ||
flussence | those magic trailing commas kinda feel like Rust's magic trailing semicolons :/ | 17:21 | |
17:21
brrt left
|
|||
laben | moritz: this is for JSON::Tiny on GLR gist.github.com/anonymous/f45037d1d61ceb16adbf | 17:21 | |
next, onto Panda | |||
ugexe | you should note if any of the changes you are submitting also work on nom | 17:22 | |
17:22
Loren_ left
17:23
mr-foobar joined
|
|||
laben | ugexe: i'm pretty sure they do, will check later | 17:23 | |
moritz | nah, you should note if they *don't* work on nom :-) | ||
it seems S02-types/whatever.t has started looping on GLR :( | 17:24 | ||
laben | nine++ already got some work done on panda-glr | 17:25 | |
17:26
domidumont joined
|
|||
moritz | laben: what's your github ID? | 17:26 | |
laben | moritz: same as my nick here | 17:27 | |
moritz | laben: ok, you have push access to moritz/json; feel free to push your GLR workaround/fix after you verified that it still works on nom | 17:29 | |
laben | moritz: will do, meanwhile Panda builds on GLR but few if any test passes | 17:30 | |
17:30
diana_olhovik_ joined
|
|||
laben | moritz: sorry, thinko of mine, they do pass some | 17:30 | |
moritz | m: my $a = 42; my $b = 23; ($a, $b) = ($b, $a); say $a; say $b | 17:31 | |
camelia | rakudo-moar 93418e: OUTPUT«2342» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«2323» | ||
moritz | I wonder what magic is necessary to make that work | 17:32 | |
I can see exactly how the current behavior falls out of the design | 17:34 | ||
17:35
skids left
17:36
MadcapJake joined
|
|||
moritz | m: say (1..Inf).elems | 17:36 | |
camelia | rakudo-moar 93418e: OUTPUT«Inf» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«Cannot .elems a lazy list in block <unit> at /tmp/KkwjlJVDUw:1Actually thrown at: in block <unit> at /tmp/KkwjlJVDUw:1» | ||
dalek | ast/glr: 2a34cc8 | moritz++ | S02-types/lazy-lists.t: Fix some laziness tests |
17:41 | |
17:41
llfourn left
17:42
Ven left
17:43
llfourn joined
|
|||
moritz | m: my $c = (1,2,(3,4)); say $c.elems | 17:43 | |
camelia | rakudo-moar 93418e: OUTPUT«3» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«3» | ||
laben | moritz: confirmed that nom passes all glr-adjusted File::Find Shell::Command and JSON::Tiny, now i'll proceed to push to moritz/json if you're okay with it | 17:45 | |
[Coke] just realizes why his roast commit wasn't reported. | |||
laben | moritz: do you prefer a commit per fix (there are 2) or all together in a "fix for glr" commit? | 17:46 | |
dalek | ast/glr: 4492a7f | coke++ | S09-typed-arrays/native-int.t: for doesn't flatten in glr |
||
moritz | laben: together | ||
17:48
llfourn left
17:50
Ven joined
|
|||
cognominal | ruby bait for bot | 17:51 | |
dalek | on: 4b020ae | (Luca Bennati)++ | / (2 files): Fix up methods and test object construction for GLR |
17:54 | |
17:55
sno joined,
[Sno] left
17:58
Ven left
|
|||
ugexe | i have an action with make $/<blah>>>.made that gives the 'gimmie' error. HYPER -> deepmap -> gimmie | 18:08 | |
laben | ugexe: check out the fix i made for the same problem is JSON::Tiny | 18:10 | |
s/ is / in / | |||
DrForr | Huh, the ANTLR converter still runs... | 18:13 | |
18:24
dha joined
|
|||
DrForr | dha: Some of your work bears fruit this weekend :) | 18:25 | |
dha | Oh? | 18:26 | |
18:26
lucasb joined
|
|||
DrForr | Yeah, I'm going through builtins and a few other things before YAPC. | 18:27 | |
dha | Cool. Hope it helps. | 18:28 | |
18:30
danaj left
18:32
ggoebel joined
|
|||
dha | Some stuff strikes me as hard to fully automate, however. Certainly behaviors of caller map decently to callframe, but in general... not so much. | 18:33 | |
DrForr | General channel question - The old 'use My::Package foo => 1' has gone away? | ||
dha: Oh, I'm not expecting 100%, not even 80%, but preliminary tests have been encouraging. | |||
dha | Indeed. Just a point, not a dealbreaker. | 18:34 | |
dalek | ast/glr: c28f587 | (Stefan Seifert)++ | S02-types/whatever.t: Fix hang in S02-types/whatever.t Flattening an infinit lazy list leads to and endless loop. We use Slip now to indicate that we want the list to be interpolated. |
18:35 | |
moritz | uhm, but ((1, 2) xx *).flat shouldn't loop, no? | 18:37 | |
18:39
cognominal left
18:42
xinming left
|
|||
nine | moritz: indeed, it will create an iterator. List inherits Iterable's flat method and that does not care about lazyness. | 18:42 | |
So maybe it's time to give List its own flat implementation | 18:43 | ||
OTOH what would be .flat's job if it does just the same as .iterator? | 18:44 | ||
Even stranger: Array has a flat method that does Seq.new(self.iterator) while inheriting .iterator from List while List itself does not use its own iterator for .flat and inherits Iterable's instead. | 18:46 | ||
DrForr | m: $*PERL.version | 18:48 | |
camelia | ( no output ) | ||
GLRelia | ( no output ) | ||
DrForr | m: say $*PERL.version | ||
camelia | rakudo-moar 93418e: OUTPUT«v6.Advent» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«v6.Advent» | ||
DrForr | No numeric versions? | ||
Or will that be v6.1.0 or similar at rollout? | 18:50 | ||
[Coke] | Probably not. | 18:51 | |
dha | My reasearch so far has not indicated that any way of getting at the "version" gives anything actually useful. | 18:52 | |
[Coke] | I think the thought was: any purely numeric versions are going to be confusing as hell given 5 vs. 6 anyway. | ||
dha | Although "v6.Advent" is new. I may need to compile a new rakudo | ||
DrForr | So there won't be an unambiguous way of saying "X is newer than Y". | 18:53 | |
[Coke] | DrForr: I'm pretty sure we'll be able to figure that out, yes. | 18:54 | |
DrForr | Okay, I'll leave it alone for the time being. | ||
[Coke] | I don't think it's written down anywhere. I'll make a note that we need to write something up about version numbers at the SPW if it's not done already. | 18:55 | |
PerlJam | [Coke]++ | 18:56 | |
DrForr | I wasn't expecting a formal spec, I was just looking at 'ok $*PERL.version > 5.006001' and wondering if there was going t be something ordered. | 18:57 | |
Wish I could make it, but my flights are already booked for YAPC. Had I know, I would have requested a few more days off. | |||
PerlJam is still not entirely sure what $*PERL.version *means* | 18:58 | ||
DrForr | m say $*PERL.version | 18:59 | |
m: say $*PERL.version | |||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«v6.Advent» | ||
camelia | rakudo-moar 93418e: OUTPUT«v6.Advent» | ||
dha | m: say $*PERL | ||
camelia | rakudo-moar 93418e: OUTPUT«Perl 6 (6.Advent)» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«Perl 6 (6.Advent)» | ||
[Coke] | there's a version of the spec, and a version of the compiler. | 19:00 | |
pretty sure .Advent is referring to the spec. | |||
DrForr | Makes sense. | 19:01 | |
laben | m: my @a = 1..3; my @b = 4..6; my @c = @a, @b; dd @c | 19:03 | |
camelia | rakudo-moar 93418e: OUTPUT«@c = [1, 2, 3, 4, 5, 6]<>» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«@c = [$[1, 2, 3], $[4, 5, 6]]» | ||
laben | m: my @a = 1..3; my @b = 4..6; my @c = flat @a, @b; dd @c | 19:04 | |
camelia | rakudo-moar 93418e: OUTPUT«@c = [1, 2, 3, 4, 5, 6]<>» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«@c = [1, 2, 3, 4, 5, 6]» | ||
nine | .tell jnthn what is .flat actually supposed to mean? Array has a flat method that does Seq.new(self.iterator) while inheriting .iterator from List. List itself on the other hand does not use its own iterator for .flat and inherits Iterable's instead. | 19:06 | |
yoleaux | nine: I'll pass your message to jnthn. | ||
19:07
zakharyas joined
19:09
araujo joined,
araujo left,
araujo joined
19:13
domidumont left
|
|||
dalek | kudo/glr: 0f328b2 | (Stefan Seifert)++ | src/core/metaops.pm: Fix hypers on lazy/infinite lists and iterators |
19:21 | |
19:22
yqt joined
19:23
bin_005 joined
|
|||
masak | 'night, #perl6 | 19:24 | |
moritz | \o masak | ||
m: say [**] 2, 3 | |||
camelia | rakudo-moar 93418e: OUTPUT«8» | ||
GLRelia | rakudo-moar 3e7cfc: OUTPUT«The 'gimme' method was an internal method used by rakudo before the GreatList Refactor. The fact that you are seeing this message, means that youhave code that was using that unsupported rakudo internal API.Please refactor this code using t…» | ||
colomon | whoops | 19:25 | |
moritz | just a NYI | ||
colomon | moritz: NYF | ||
moritz | a 'git grep gimme' shows some more cases | ||
colomon | or NYG :) | 19:26 | |
moritz | NYGLR'd :-) | ||
[Coke] wonders how many people in #perl6 use git grep instead of ack | 19:27 | ||
colomon has never gotten used to git grep | 19:28 | ||
colomon also frequently acks things not in git. :) | |||
moritz | colomon: it's very handy for largish projects that also create largish caches that 'ack' searches through by default | 19:29 | |
lucasb | Is it realistic to expect to ship GLR in august? Seems there's still lots of work to do... | ||
moritz | lucasb: uhm, no. | 19:30 | |
I mean, release date is tomorrow, right? | |||
[Coke] | moritz: the -default- release date is tomorrow. | ||
lucasb | people were talking about relaxing the third tuesday/thursday rule, wasn't it? | ||
laben | panda is a mess right now | ||
i fixed up the installer, but builder and tester are still KO | 19:31 | ||
moritz | if there's a release tomorrow, it'll be a nom release, not a GLR release | 19:33 | |
dalek | kudo/glr: 1e870ba | (Stefan Seifert)++ | src/core/metaops.pm: Move HYPER for Associative to avoid confusion with Iterable Hashes are Iterable and Associative. Need to move the HYPER multi candidates for Associative before the ones for Iterable to give them a chance to actually run. |
||
moritz | nine++ # GLR hacking | 19:38 | |
m: 'abc' ~~ /(.)+/; say $/.caps | 19:42 | ||
camelia | rakudo-moar 93418e: OUTPUT«0 => 「a」 0 => 「b」 0 => 「c」» | ||
GLRelia | rakudo-moar 1e870b: OUTPUT«0 => 「a」 0 => 「b」 0 => 「c」» | ||
moritz | m: 'abc' ~~ /(.)+/; say $/.caps[1] | ||
camelia | rakudo-moar 93418e: OUTPUT«0 => 「b」» | ||
GLRelia | rakudo-moar 1e870b: OUTPUT«0 => 「b」» | ||
moritz | m: 'abc' ~~ /(.)+/; say $/.caps.^name | 19:43 | |
camelia | rakudo-moar 93418e: OUTPUT«Parcel» | ||
GLRelia | rakudo-moar 1e870b: OUTPUT«Seq» | ||
moritz | is Seq the right thing to return? Or should it be List? | ||
19:44
llfourn joined
|
|||
nine | So many methods return Seq now | 19:44 | |
moritz | one would hope for a nice way to test for Positional|PositionalBindFailover | 19:45 | |
19:48
llfourn left
|
|||
laben | nine: when i somehow get a Seq (in Perl6), what is the usual line to avoid the seq-already-consumed error? | 19:49 | |
dalek | ast/glr: 1d0069f | moritz++ | S05-capture/caps.t: Test that Match.caps and .chunks returns something Iterable |
||
nine | laben: you can .List it | ||
moritz | laben: assign to an array first, or store it's .list | ||
nine | laben: It's been a while since I've seen one however. | ||
moritz | m: my \g = gather { take 1; take 2 }; say g; say g | 19:50 | |
camelia | rakudo-moar 93418e: OUTPUT«1 21 2» | ||
GLRelia | rakudo-moar 1e870b: OUTPUT«1 21 2» | ||
moritz | huh. | ||
m: my \g = gather { take 1; take 2 }; say g.^name | |||
camelia | rakudo-moar 93418e: OUTPUT«List» | ||
GLRelia | rakudo-moar 1e870b: OUTPUT«Seq» | ||
moritz | that's a Seq; why was I able to consume it twice? | ||
PerlJam | you didn't use an iterator with say | 19:51 | |
moritz | m: my \g = gather { take 1; take 2 }; say for g; say for g; | 19:52 | |
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/wFdqAX6ePCUnsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/wFdqAX6ePC:1------> 3my \g = gather { take 1; take 2 }; say7⏏5 fo…» | ||
GLRelia | rakudo-moar 1e870b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/PU4412sPpJUnsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/PU4412sPpJ:1------> 3my \g = gather { take 1; take 2 }; say7⏏5 fo…» | ||
moritz | m: my \g = gather { take 1; take 2 }; .say for g; .say for g; | ||
camelia | rakudo-moar 93418e: OUTPUT«1212» | ||
GLRelia | rakudo-moar 1e870b: OUTPUT«12This Seq has already been iterated, and its values consumed in block <unit> at /tmp/JrsODPlCPJ:1» | ||
laben | nine: i was retesting File::Find without my changes on your latest commit and it gave me that error. fortunately my change fixes it anyway | ||
DrForr | nine: perl6 'use PPI:from<Perl5>; PPI::Document.new()' - PPI::Document isn't loaded in Perl6. It's not bad as I can add 'use PPI::Document:from<Perl5>;', just thought you should know. | 19:57 | |
nine | DrForr: yes, that's a shortcut I took. I don't even look at which packages are actually loaded. I just create a package for the name in the use line. | 20:01 | |
DrForr | No worries. I understand that's a bit too dynamic to pull in. | 20:03 | |
The tool's making the test suite conversion simple so far. | 20:04 | ||
20:05
rangerprice joined
|
|||
rangerprice | Hi | 20:05 | |
nine | DrForr: oh, I think it's actually possible. | 20:06 | |
DrForr | Cool. I note in passing that the error is a bit obsure, but there's nothing for you to worry about on that. | 20:08 | |
dalek | ast/glr: c191630 | moritz++ | S02-types/nested_arrays.t: Fix some element numbers in nested_arrays.t |
20:12 | |
moritz | enough hacking for tonight | ||
TTFN folks | |||
20:14
darutoko left
|
|||
dalek | kudo/glr: 59be37a | (Stefan Seifert)++ | src/core/metaops.pm: Fix infix hypers on Hashes Allows 90 % of the hyper tests to pass now. |
20:15 | |
20:16
colomon left
20:20
rurban_ left
|
|||
nine | The day ends at 210/1047 spec test files failing | 20:21 | |
Nice improvement from the 270 it was two days ago :) | 20:22 | ||
DrForr | This, however... WARNING unhandled Failure detected in DESTROY: No such symbol 'Scalar::Util' | 20:23 | |
20:31
lucasb left
|
|||
DrForr | nine: I think I done gone and broke something deep :) | 20:36 | |
nine | DrForr: no, I've seen such errors. And fixed them. Can you golf it down? | 20:37 | |
20:38
llfourn joined
|
|||
DrForr | Well, it looks like a memory leak, so it's sporadic. | 20:38 | |
And I've got to get to bed here. I'll send you the file in a gist. It *does* generate perl6 errors, so it's not necessarily going to compile. | 20:39 | ||
20:40
colomon joined
|
|||
nine | DrForr: no, no, those errors just appear sporadic but have quite mundane causes | 20:41 | |
20:41
rurban left
|
|||
nine | DrForr: if it depends or not just depends on MoarVM's garbage collector | 20:41 | |
20:43
llfourn left,
rindolf left,
zakharyas left,
diana_olhovik_ left
|
|||
nine | DrForr: it may happen when a method is called on a package but Inline::Perl5 expects an object. I've had such bugs in ->can | 20:45 | |
DrForr | Yeah, it feels like a GC bug. I point out that it's got some 'undeclared routines' that will trip, but the DESTROY is the problem. | 20:47 | |
20:48
Averna joined,
skids joined
|
|||
DrForr | I'm guessing that perl6-valgrind will trip the error reliably, but I'm on a laptop in a VM... | 20:49 | |
vendethiel | DrForr: github.com/niner/Inline-Perl5/issues/38 could you edit the markdown :)? | 20:52 | |
20:54
muraiki joined
|
|||
DrForr | If someone can tell me how to do block formatting... | 20:54 | |
vendethiel | ```blabla``` | ||
DrForr | Yeah, just saw that. | 20:55 | |
Still broken... | 20:56 | ||
vendethiel | DrForr: I don't see a ``` before your code | 20:58 | |
laben | m: my @a = (1..3)>>.succ; for @a {.say;} | ||
camelia | rakudo-moar 93418e: OUTPUT«234» | ||
GLRelia | ( no output ) | ||
vendethiel | DrForr++ | 20:59 | |
laben | why doesn't this work with >> but does with map? | ||
m: my @a = (1..3).map(*.succ); for @a {.say;} | |||
camelia | rakudo-moar 93418e: OUTPUT«234» | ||
GLRelia | rakudo-moar 59be37: OUTPUT«234» | ||
laben | just a NYI or intentional? | ||
DrForr | github.com/niner/Inline-Perl5/issues/39 | 21:00 | |
``` has to be on its own line, apparently. | |||
21:02
xfix left
|
|||
jdv79 | amazing wht env can do to mood | 21:06 | |
istanbul - heat wave and shity beer = unhappier jdv | 21:07 | ||
DrForr | You're in Istanbul? I'm thinking of going there in October. | ||
jdv79 | bamberg - decent beer and its almost too cold to wear shorts and a t-shirt - wow | ||
i was | |||
DrForr | Past tense. Nice. What did you think, aside from the beer and heat? | 21:08 | |
jdv79 | i would like to do it in better weathr | 21:09 | |
it was cool | |||
dalek | rl6-roast-data: f26d75e | coke++ | / (2 files): redo today's glr run. progress! |
21:10 | |
jdv79 is surpringly upbeat | |||
tadzik | heh, klasyk | ||
ww | |||
21:11
kaare_ left
|
|||
[Coke] | m: say 111730-112240 # that many more passing tests in a few hours. | 21:11 | |
camelia | rakudo-moar 93418e: OUTPUT«-510» | ||
GLRelia | rakudo-moar 59be37: OUTPUT«-510» | ||
[Coke] | er, reverse that! | ||
jdv79 | [Coke]: spw? ::EU? | 21:12 | |
21:14
colomon left
21:17
dha left
|
|||
[Coke] | swiss perl workshop | 21:23 | |
act.perl-workshop.ch/spw2015/ | 21:24 | ||
dalek | kudo/glr: 7880bb8 | PerlJam++ | src/core/ (2 files): Restore suggestions for unknown symbols. Something is getting passed to .join that is not a Str, nor can we call a .Str method on it, but we can box it as a Str. |
||
21:26
bin_005_r joined
21:27
bin_005 left
|
|||
laben | Panda::Builder fixed, 1 character change that took like 4 hours to do... | 21:29 | |
21:29
figitaki joined
21:30
figitaki left
21:33
colomon joined
21:37
muraiki left
|
|||
RabidGravy | :) | 21:39 | |
21:40
Averna left
21:53
TEttinger joined
|
|||
timotimo | huh! | 22:00 | |
that seems so wrong ... push_s is most probably going to unbox_s the boxed string again | 22:01 | ||
leont | I have a hash of Match, how can I *elegantly* transform that into a hash of Int? | ||
timotimo | what part of the match do you want to use as the Int? | 22:02 | |
oh, you mean the match was from something like \d ? | 22:03 | ||
leont | Yeah | ||
timotimo | right | ||
deepmap ought to DTRT with hashes, like hyper method calls | |||
leont | I mean, I can think of plenty of non-elegant ways, but this should be easy | ||
timotimo | m: my %foo = "hello", ("123" ~~ / \d+ /), "goodbye" ("hey 444" ~~ / \d+ /); say %foo.perl | 22:04 | |
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/KI5TQkDemLTwo terms in a rowat /tmp/KI5TQkDemL:1------> 3= "hello", ("123" ~~ / \d+ /), "goodbye"7⏏5 ("hey 444" ~~ / \d+ /); say %foo.perl expecting any of: infix infix …» | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/r3vhnzSRWZTwo terms in a rowat /tmp/r3vhnzSRWZ:1------> 3= "hello", ("123" ~~ / \d+ /), "goodbye"7⏏5 ("hey 444" ~~ / \d+ /); say %foo.perl expecting any of: infix infix …» | ||
timotimo | m: my %foo = "hello", ("123" ~~ / \d+ /), "goodbye", ("hey 444" ~~ / \d+ /); say %foo.perl | ||
camelia | rakudo-moar 93418e: OUTPUT«{:goodbye(Match.new(ast => Any, list => (), hash => EnumMap.new(), orig => "hey 444", to => 7, from => 4)), :hello(Match.new(ast => Any, list => (), hash => EnumMap.new(), orig => "123", to => 3, from => 0))}<>» | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«{:goodbye(Match.new(ast => Any, list => (), hash => EnumMap.new(), orig => "hey 444", to => 7, from => 4)), :hello(Match.new(ast => Any, list => (), hash => EnumMap.new(), orig => "123", to => 3, from => 0))}» | ||
timotimo | m: my %foo = "hello", ("123" ~~ / \d+ /), "goodbye", ("hey 444" ~~ / \d+ /); say %foo>>.Int.perl | ||
camelia | rakudo-moar 93418e: OUTPUT«{:goodbye(444), :hello(123)}<>» | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«{}» | ||
timotimo | but i think hyperops are a bit b0rken on GLR right now | ||
looks kind of like somewhere there's a "eagerify this list" missing inside hyper or deepmap or something | |||
leont isn't on glr yet | 22:05 | ||
laben | m: sub foo() { my $f = False; :$f}; my (:$f) = foo(); $f.say; if $f { say "Not Falsey" } else { say "Falsey" } | ||
camelia | rakudo-moar 93418e: OUTPUT«f => FalseNot Falsey» | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«f => FalseNot Falsey» | ||
leont | timotimo++ | 22:07 | |
laben | i think i... fixed Panda::Tester, but the last thing i changed... i dunno how it ever worked?! | ||
timotimo | you're welcome :) | ||
laben | has the return-as-named-param always constructed a Pair? | 22:08 | |
timotimo | star: sub test() { my $f = False; :$f); say test.perl | 22:10 | |
22:10
GLRelia left
|
|||
camelia | star-m 2015.03: OUTPUT«5===SORRY!5=== Error while compiling /tmp/hT2YFx9omuUnable to parse expression in block; couldn't find final '}' at /tmp/hT2YFx9omu:1------> 3sub test() { my $f = False; :$f7⏏5); say test.perl expecting any of: statement end…» | 22:10 | |
timotimo | yikes! what did i do to glrelia? :( | ||
star: sub test() { my $f = False; :$f }; say test.perl | 22:11 | ||
camelia | star-m 2015.03: OUTPUT«"f" => Bool::False» | ||
timotimo | star: sub test() { my $f = False; return :$f }; say test.perl | ||
camelia | star-m 2015.03: OUTPUT«"f" => Mu» | ||
timotimo | ... what | ||
laben | i dont think glrelia has star dist | ||
vendethiel | timotimo: probably didn't like star | ||
timotimo | m: sub test() { my $f = False; return :$f }; say test.perl | ||
camelia | rakudo-moar 93418e: OUTPUT«:f(Mu)» | ||
22:11
GLRelia joined
|
|||
timotimo | ... what? | 22:11 | |
GLRelia | star-m : OUTPUT«Can't chdir to '/home/steve/star/': No such file or directory at lib/EvalbotExecuter.pm line 171. EvalbotExecuter::_auto_execute(HASH(0x253db90), "sub test() { my \$f = False; :\$f); say test.perl", GLOB(0x2824208), "/tmp/aAnBxthDkm", "star-m") called at lib/Evalb…» | 22:12 | |
laben | oh, she's back | ||
m: sub foo() { my $f = False; :$f}; foo.perl.say | 22:13 | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«:!f» | ||
camelia | rakudo-moar 93418e: OUTPUT«:!f» | ||
laben | m: sub foo() { my $f = False; :$f}; dd foo() | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«:!f» | ||
camelia | rakudo-moar 93418e: OUTPUT«:!f» | ||
22:13
TEttinger left
|
|||
laben | m: sub foo() { my $f = False; :$f}; my (:$a) = foo(); $a.perl.say | 22:13 | |
GLRelia | rakudo-moar 7880bb: OUTPUT«:!f» | ||
camelia | rakudo-moar 93418e: OUTPUT«:!f» | ||
laben | m: sub foo() { my $f = False; :$f}; my (:$a) = foo(); $a.say; | 22:14 | |
GLRelia | rakudo-moar 7880bb: OUTPUT«f => False» | ||
camelia | rakudo-moar 93418e: OUTPUT«f => False» | ||
laben | m: sub foo() { my $f = False; return :$f}; my (:$a) = foo(); $a.say; | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«f => (Mu)» | ||
camelia | rakudo-moar 93418e: OUTPUT«f => (Mu)» | ||
laben | oh my | ||
m: sub foo() { my $f = False; return :$f;}; my (:$a) = foo(); $a.say; | |||
GLRelia | rakudo-moar 7880bb: OUTPUT«f => (Mu)» | ||
camelia | rakudo-moar 93418e: OUTPUT«f => (Mu)» | ||
laben | m: sub foo() { my $f = False; :$f}; my (:$a) = foo(); $a.value.say | 22:15 | |
GLRelia | rakudo-moar 7880bb: OUTPUT«False» | ||
camelia | rakudo-moar 93418e: OUTPUT«False» | ||
laben | ... anyway i got panda working over glr. this is after having patched File::Find and Shell::Command, while JSON::Tiny has the changes already pushed to git | 22:16 | |
timotimo | very cool :) | ||
laben | the last thing is making (re)bootstrap work i think | 22:17 | |
for now, ufo saved my life | |||
22:19
RabidGravy left,
Averna joined
|
|||
laben | it's getting late over here, i guess i'll publish the patches on gist. the rest if for tomorrow and later on | 22:20 | |
timotimo | thank you for your hard work! | ||
laben | this is for File::Find gist.github.com/b47ed8bfb11ea001c23a | 22:22 | |
22:23
bin_005_r left
|
|||
laben | this is for Shell::Command gist.github.com/71682f09109a5169e5d5 | 22:24 | |
timotimo | ideally, hyper-methodcall would be fixed instead of having to turn >>. into .map(*. ) | 22:26 | |
laben | the last one is for the branch 'glr' of Panda gist.github.com/0935bf0a54ce50685f93 | 22:29 | |
timotimo: possible yeah, but the panda ones are different and possibly wont change even after fixing up rakudo/glr | 22:30 | ||
m: my @a = (1..3)>>.succ; for @a {.say} | |||
GLRelia | ( no output ) | ||
camelia | rakudo-moar 93418e: OUTPUT«234» | ||
laben | m: my @a = (1..3).map(*.succ); for @a {.say} | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«234» | ||
camelia | rakudo-moar 93418e: OUTPUT«234» | ||
laben | see what happened? >> did not work there | ||
not sure if intentional or NYI | 22:31 | ||
truthfully speaking, the strange one is the File::Find one, but im not gonna dig deeper, since i dont know enough about rakudo to check that out | 22:32 | ||
22:37
leont left
|
|||
laben | better republish the ufo one too, still backwards compatible but better conceptually gist.github.com/bfac93f00649f1609ec2 | 22:37 | |
with this, good night or good hacking #perl6 | 22:38 | ||
timotimo | >> not working there is definitely not intentional | ||
22:39
llfourn joined
|
|||
timotimo | mhhh, this cat is getting cuddled something fierce | 22:42 | |
22:43
llfourn left
22:44
yqt left
22:48
virtualsue left
|
|||
timotimo | i wanted to stop cuddling the cat and went to wash my hands, now i'm back and the cat is requesting, nay demanding more cuddles | 22:49 | |
22:52
krakan joined
23:01
danaj joined
23:06
telex left
23:08
telex joined
|
|||
rangerprice | I'm happy on my Arch Linux distribution | 23:24 | |
23:25
SHODAN joined
|
|||
rangerprice | Everybody that use Windows 10 should read this: i.imgur.com/Gu6bBV1.png | 23:25 | |
timotimo | i wouldn't expect anybody who uses windows seriously to take this text seriously | 23:27 | |
tadzik | I don't expect anyone serious to take it seriously either :) | 23:29 | |
flussence | stale copypasta is stale | ||
tadzik | I even have a weechat script for that | 23:30 | |
but it's very spammy, obvioustly, so I'll resist now | |||
flussence | heh :) | ||
timotimo | did anybody try zef yet? with the glr branch? | 23:34 | |
ugexe: any words about glr support? | 23:35 | ||
i see you have a one-line-change commit in zef that is explicitly related to glr | |||
does that mean everything else already works? | |||
23:35
spider-mario left
|
|||
timotimo | m: reat { } | 23:44 | |
GLRelia | rakudo-moar 7880bb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/pgPbvBrTTDUndeclared routine: reat used at line 1» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/UelTK9goTNUndeclared routine: reat used at line 1» | ||
timotimo | m: react { } | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8rsQHD9G0bUndeclared routine: react used at line 1» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/yB1nhMv2KnUndeclared routine: react used at line 1» | ||
timotimo | m: supply { } | ||
GLRelia | rakudo-moar 7880bb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_Vvk22BQdrUndeclared routine: supply used at line 1» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/XjrpeVI4_rUndeclared routine: supply used at line 1» | ||
timotimo | didn't that get merged? | 23:45 | |
m: say &REACT | |||
GLRelia | rakudo-moar 7880bb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/0Uevs4_7WKUndeclared routine: &REACT used at line 1» | ||
camelia | rakudo-moar 93418e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/60vuqyXA6iUndeclared routine: &REACT used at line 1» | ||
timotimo | the version of rakudo on camelia is kind of old | 23:46 | |
23:56
BenGoldberg joined
|
|||
timotimo | doc.perl6.org/type-basic.html - huh? | 23:57 | |
labster | We only have advanced types? | 23:58 | |
timotimo | probably |