Zoffix | I'm agreeing with your thoughts ¯\_(ツ)_/¯ | 00:13 | |
timotimo | ah | 00:20 | |
maybe timtoady will bless me with a bit of his wisdom once he's finished and recovered from the flight :) | 00:21 | ||
super annoyed that i only now see the discussion about your blog post in /r/programming | 00:29 | ||
Zoffix | Why annoyed? | 00:32 | |
timotimo | because i'm late to the party | ||
Zoffix | Heh | ||
timotimo | anyway, i want to get a bedtime | 00:33 | |
Zoffix | There weren't really a discussion. Primarily just one person spewing bullshit, trying to convince the world they're better than everyone else :) | ||
timotimo | fair enough | ||
"don't you dare say gobble to MY compiler!" | 00:34 | ||
a programmer would NEVER write something like | |||
if (foo bar) | |||
goto fail; | |||
MasterDuke | .tell lizmat it's not pretty, but it does work. should i submit a PR, or do you want something with Mu.possible-phasers for this RT? gist.github.com/MasterDuke17/eb8e4...312ad0692b | 02:20 | |
yoleaux2 | MasterDuke: I'll pass your message to lizmat. | ||
jdv79 | you have to admit its an odd if not unfortunate phrasing | 02:31 | |
[Tux] | Drat, new failur on CSV and no time to dig | 08:18 | |
# Failed test 'Undefined in Numeric context type' | 08:19 | ||
# at t/30_field.t line 12 | |||
# expected: 'Num' | |||
# got: 'Num|17758144' | |||
This is Rakudo version 2016.07.1-190-g6cd6efe built on MoarVM version 2016.07-18-g2f269d8 | 08:23 | ||
csv-ip5xs 10.147 | |||
test 15.718 | |||
test-t 7.694 | |||
csv-parser 17.025 | |||
[Tux] => $work | |||
arnsholt | m: say Numeric.gist; say Numeric.Str | 08:29 | |
camelia | rakudo-moar 6cd6ef: OUTPUT«(Numeric)Use of uninitialized value of type Numeric in string context.Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful. in block <unit> at <tmp> line 1» | ||
arnsholt | Huh | ||
[Tux]: Anyways, looks like the stringification logic of something changed in Rakudo. Might be github.com/rakudo/rakudo/commit/4d...e86acb632c | 08:31 | ||
Zoffix | Holy shit. My Awesome Errors article exploded on Reddit. | 10:33 | |
DrForr | +$N! | 10:34 | |
nine | Zoffix: URI? | ||
Zoffix | nine, www.reddit.com/r/programming/comme...of_perl_6/ | ||
nine | I only see 5 comments in the reddit linked on P6W | 10:35 | |
Zoffix | And the "Other discussions" of it posted on /r/perl6 and /r/programming | ||
I'm not reading all those comments lol. | |||
timotimo | yeah, more like shit errors! | ||
it's only 33 comments, dood | |||
Zoffix | got 28 points... in /r/programming of all things | 10:36 | |
jnthn | Given this is reddit, it's probably an explosion of whining :P | ||
Zoffix | jnthn, it is :) | ||
The biggest thread is people trying to convince me to compile a multi-line piece of code by randomly sticking a quote into it, and tell the user where the quote should go the first time it compiles correctly. | 10:37 | ||
tadzik | report first instance that produces valid syntax. (...) Probably less costly than the Levenshtein check | 10:38 | |
found the guy that never wrote a parser :P | |||
Zoffix | m: my $str = "BEGIN { trade-your-soul-for-a-sammich }  | 10:39 | |
camelia | rakudo-moar 6cd6ef: OUTPUT«===SORRY!=== Error while compiling <tmp>Unable to parse expression in double quotes; couldn't find final '"' at <tmp>:3------> <BOL>⏏<EOL>» | ||
Zoffix | yeah, let's insert a quote into the first line and see if stuff compiles :) | ||
|Tux| | m: use Test;my Num $n;say $n.WHICH;like($n.WHICH,/^ "Num" \b/,"test") | 10:40 | |
camelia | rakudo-moar 6cd6ef: OUTPUT«Num|19522336Cannot resolve caller like(ObjAt, Regex, Str); none of these signatures match: (Str $got, Regex $expected, $desc = "") in block <unit> at <tmp> line 1» | ||
|Tux| | m: use Test;my Num $n;say $n.WHICH;like($n.WHICH.Str,/^ "Num" \b/,"test") | 10:41 | |
camelia | rakudo-moar 6cd6ef: OUTPUT«Num|22270752not ok 1 - test# Failed test 'test'# at <tmp> line 1# expected: '/^ "Num" \b/'# got: 'Num|22270752'» | ||
DrForr | Programming via git bisect. I guess it ahd to happen eventually :) | 10:42 | |
*had | |||
jnthn | A test that calls .Str on what .WHICH returns is not going to end up well... ObjAt should be treated as an opaque thing. | ||
timotimo | Zoffix: better not tell people on /r/programming that compiling code can have side-effects | 10:43 | |
|Tux| | .Str was my first idea of how I could make this test pass | ||
Zoffix | timotimo, why? | ||
I was about to | |||
timotimo | they'll totally throw a tantrum | ||
Zoffix | Awesome | ||
Zoffix tells | |||
jnthn | |Tux|: My question is more at the level of "why does this test exist"? :) | ||
timotimo | "you're telling me i can't even *compile* untrusted code i found on the internet without looking at it first?" | ||
|Tux| | to test if the return of an object in + context is a Num | 10:44 | |
jnthn | |Tux|: Ah, then $obj ~~ Num | ||
|Tux|: Or if you don't want to allow it to be a subclass of Num, $obj.WHAT === Num | |||
|Tux| | github.com/Tux/CSV/blob/master/t/30_field.t#L12 | 10:45 | |
jnthn | Yeah, that test seems to be misunderstanding what .WHICH is for | ||
It's an opaque object to be used in things like object hashes and sets | 10:46 | ||
The most direct replacement is to just go with the type name, $n.^name | |||
But I'd advise one of the two that I suggested earlier | |||
In general, talking about types as string names in Perl 6 is pretty much always the wrong way to do it | 10:47 | ||
|Tux| | pushed. refresh to see the change | 10:48 | |
|Tux| still learns every day (and I understand thi one completely) | 10:49 | ||
short-sighted conversion of the early days | |||
jnthn | :-) | 10:50 | |
Looks good to me now | |||
lunch & | 10:51 | ||
masak | timotimo: I wonder if that isn't true of Python and Ruby too, though. | 10:58 | |
timotimo | well, when you import something, i believe the __init__.py of a module gets called | 10:59 | |
|Tux| | Clean run from git checkout | 11:00 | |
This is Rakudo version 2016.07.1-190-g6cd6efe built on MoarVM version 2016.07-18-g2f269d8 | |||
csv-ip5xs 9.841 | |||
test 15.124 | |||
test-t 7.370 | |||
csv-parser 16.447 | |||
arnsholt | timotimo: Strictly speaking, Python doesn't have much of a separate compilation stage | 11:03 | |
timotimo | mhm | ||
arnsholt | Modules have to be executed for loading, because def and class are actually covert assignment operators | ||
timotimo | right | ||
nine | Python and Perl 5 are remarkably similar under the hood | ||
timotimo | why can't pypy run perl5 code then | 11:04 | |
arnsholt | Parts of them are. Python's naming/binding model is atrocious, IMO | ||
Based more or less on "Implicit is better than explicit", hilariously enough =) | 11:05 | ||
tadzik giggles | 11:06 | ||
timotimo | i'm not sure how i feel about python having "bound method" objects and perl6 doesn't | 11:07 | |
nine | arnsholt: Python violates all of it's Zen thingies | ||
tadzik | I lost so many hours expecting lambdas to work like proper closures | ||
arnsholt | I may be exaggerating (possibly. a bit), but that's really how it feels | ||
tadzik | and they theoretically do, if you're stupid about what an environment is %) | ||
nine | arnsholt: my favourite however is still that in Python the stack holds an implicit reference to the objects while in Perl 5's XS you have to handle it explicitly. | 11:08 | |
arnsholt | tadzik: Well, the problem is that Python doesn't have the machinery necessary to let the programmer explicitly declare the scope of a variable. Thus the hilarity of using arrays instead | 11:09 | |
Mostly alleviated by nonlocal in Python 3, I think; but still | |||
nine: Oh, but that's the source of one of my favourite Python weird trivia! | |||
tadzik | arnsholt: oh, I think we're on about different things then, let me come up with an example | ||
arnsholt | So in Python, all variables are scoped to the entire function they're declared in, right? | 11:10 | |
Except! | |||
The try/except syntax can also introduce a variable, with the syntax "try: ...; except Exception as e" | 11:11 | ||
tadzik | arnsholt: gist.github.com/tadzik/d6332f22dbf...67767852c4 is my biggest complaint | ||
arnsholt | e has a reference to the invocation record of the function you're in, which has references to all the variables in that function | ||
Therefore, if e were scoped to the function, you'd get a circular reference, which would make the refcounting sad | 11:12 | ||
timotimo | tadzik: yeah, you have to lambda x, a=a: x + a there | ||
tadzik | yeah | ||
arnsholt | Which is why e is scoped to the except block | ||
tadzik | :D | ||
arnsholt | tadzik: Oh, that! YEah, that sucks | 11:13 | |
Again, the problem is that you can't declare the scope of a, right? | |||
So a is scoped to the top-level, which is what you're closing over | |||
tadzik | I think the problem is that a means "the name a" not "the value of variable a" | ||
so whatever the name was set to last will be used | |||
timotimo | tadzik: except if you return that lambda from your function when the function that held a and the lambda no longer exists on it sown | ||
arnsholt | Basically, it's "my $a; for @args -> $a { @lambdas: push sub { $^x + $a } }" | 11:14 | |
timotimo | like, you don't get to access another function's a that way | ||
tadzik | it may have caused some customers ending up with data of other customers in some product in some company once | ||
(before release though) | |||
timotimo: right | 11:15 | ||
arnsholt | Python does have variable declarations, except implicitly through the assignment operator, but they're all pushed to the very top of the containing function (or the top-level if not in a function) | 11:16 | |
So yeah, you get stupid shit like that | |||
nine | same as Javascript | ||
arnsholt | Also, default values for function arguments aren't thunks | ||
tadzik | this one's great too | ||
arnsholt | They're evaluated *once* when the def is executed... | ||
Which is hilariously broken, in every possible way | 11:17 | ||
timotimo | at least that's a gotcha that everybody knows about | ||
tadzik | I'd label it as a design bug | ||
arnsholt | I once a priori diagnosed a colleague's Python bug simply due to knowing that bug | ||
AlexDaniel | meanwhile, I learned while reading reddit comments that people don't want to know what the compiler was expecting… kinda weird, not sure if I will ever be able to understand this way of thinking. | ||
tadzik | but python seems happy with it | ||
arnsholt | I suspect it's kind of an implementation bug from the very early days | 11:18 | |
But since people tend to use ints and the like as defaults, it wasn't detected for a long time, by which point it was a de facto feature | |||
Even if it strictly should be considered a feature | |||
nine | AlexDaniel: frankly, I couldn't be less interested in what weirdly named syntactical category e.g. the PHP compiler was expecting (those T_WHATEVER thingies that never help). I guess the same is true for those commenters. | 11:19 | |
AlexDaniel: they just don't know that those terms are rather meaningful to the Perl 6 programmer, as we can use the same grammar engine as the compiler in our own code. | |||
arnsholt | T_PAYAYIIM_NEKUDOYATIM | ||
Or whatever that fucking thing is called | |||
timotimo | silly php, that's not how you spell "neko" | ||
tadzik | I'd say it'd be nice to at least use the same names in the documentation as in those errors, so that searching for 'infix stopper' gives you something to work with | 11:23 | |
timotimo | "infix stopper" isn't really something the user would sensibly learn about | 11:24 | |
tadzik | then is it really meaningful in a user-facing error message? | ||
I can understand why reddit people say "these errors use confusing language" | 11:25 | ||
heck, I'm not sure what 'infix stopper' is, and I did some messing with the perl6 grammar | |||
I can see the value in having something to ack for in the rakudo code itself if I'm that commited to debugging my code, but I can understand that not everybody considers that helpful | 11:26 | ||
arnsholt | Yeah, some of them are opaque (like infix stopper) | 11:29 | |
But infix, postfix and statement terminator are pretty clear | |||
timotimo | those are, yes | ||
tadzik | yep | 11:34 | |
jnthn | We could probably filter out some of 'em like "infix stopper" | 11:36 | |
timotimo | i don't know how to properly give the error a different cursor, i.e. to make it show the beginning of a gobbled block instead of the end | 11:38 | |
arnsholt | I'm still not sure what an infix stopper is, but the grammar tells me it's <?before> a !! if we're looking for a !!, or before a { or a lambda when it's marked for ws and we're looking for a { or the end of an argument list | 11:41 | |
=) | |||
AlexDaniel | m: #`{{ blah blah blah blah blah blah | ||
camelia | rakudo-moar 6cd6ef: OUTPUT«===SORRY!=== Error while compiling <tmp>Couldn't find terminator }} (corresponding {{ was at line 1)at <tmp>:4------> <BOL>⏏<EOL> expecting any of: }}» | ||
AlexDaniel | I think we should report errors that don't report where the whole thing started | 11:42 | |
(the snipped above is #125247) | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=125247 | ||
masak | arnsholt: what was the Python bug? | 12:03 | |
arnsholt: oh, "default values aren't thunks"? | 12:04 | ||
tadzik: since you're naturally curious, let me share with you what an infix stopper is | 12:09 | ||
m: my $x; say [1, 2, 3] -> $x; for [1, 2, 3] -> $y { say $y } | |||
camelia | rakudo-moar 6cd6ef: OUTPUT«===SORRY!=== Error while compiling <tmp>Unexpected block in infix position (missing statement control word before the expression?)at <tmp>:1------> my $x; say [1, 2, 3]⏏ -> $x; for [1, 2, 3] -> $y { say $y } expecting any of:…» | ||
masak | (`->` not defined, so cannot use it as an operator) | 12:10 | |
tadzik | :) | ||
masak | m: sub infix:<< -> >>($l, $r) { "whoa!" }; my $x; say [1, 2, 3] -> $x | ||
camelia | rakudo-moar 6cd6ef: OUTPUT«[1 2 3]» | ||
masak | (now we can use it as an operator, but it's *ignored* and not evaluated) | ||
m: sub infix:<< -> >>($l, $r) { "whoa!" }; for [1, 2, 3] -> $y { say $y } | |||
camelia | rakudo-moar 6cd6ef: OUTPUT«123» | ||
masak | (here's the reason infix stoppers exist: so that the lambda `->` can override the infix operator `->` when needed) | 12:11 | |
the `infixish` rule has a `<!infixstopper>` assertion early on, to make sure it's disjunct with infix stoppers | 12:12 | ||
currently we have three infix stoppers in the Perl 6 grammar: `!!` (of `?? !!` fame), `->`, and `{` | 12:13 | ||
all of these can be thought of as "eh eh, oh hai, I know you expected an infix here, but I'm here instead so deal with it" | |||
tadzik | nodnod | 12:16 | |
arnsholt | masak: Yeah. Basically he came to me and said "something's weird with this thing I'm working on" and it was pretty obvious without looking at the code that the problem was non-thunking | 12:34 | |
masak: Oh, of course! That makes perfect sense | 12:36 | ||
EXPR just reads terms and infixes until there're none left, so it needs to know when to stop | |||
lizmat | m: sub a( --> Str() ) { 42 }; dd a # should this work ? | 13:10 | |
yoleaux2 | 02:20Z <MasterDuke> lizmat: it's not pretty, but it does work. should i submit a PR, or do you want something with Mu.possible-phasers for this RT? gist.github.com/MasterDuke17/eb8e4...312ad0692b | ||
camelia | rakudo-moar 6cd6ef: OUTPUT«Type check failed for return value; expected Str(Any) but got Int (42) in block <unit> at <tmp> line 1» | ||
gfldex | lizmat: this should not work | 13:14 | |
m: sub a( --> Str(Int) ) { 42 }; dd a | |||
camelia | rakudo-moar 6cd6ef: OUTPUT«Type check failed for return value; expected Str(Int) but got Int (42) in block <unit> at <tmp> line 1» | ||
gfldex | but this should (and do the right thing) | 13:15 | |
m: sub a( --> Str(Int) ) { 42.Str }; dd a | |||
camelia | rakudo-moar 6cd6ef: OUTPUT«Type check failed for return value; expected Str(Int) but got Str ("42") in block <unit> at <tmp> line 1» | ||
lizmat | gfldex: but Str() is just short for Str(Any), so why shouldn't Str() work? | ||
gfldex | oh yes, it should work but doesn't yet. There may be a RT already. | 13:16 | |
lizmat | ok, so we are in agreement :-) | ||
gfldex | ENEEDMORETEA | ||
lizmat: i just checked RT for "return" and could not find a matching RT for this | 13:21 | ||
lizmat | gfldex: ok, shall I RT it or will you ? | 13:22 | |
gfldex | please RT | ||
dalek | kudo/nom: 50c24a8 | lizmat++ | src/core/Set (3 files): Streamline various Set/SetHash methods e.g. Set.kv is now 6x faster, others are more in the 5-10% range |
13:28 | |
lizmat | RT #128964 # gfldex | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128964 | ||
dalek | p/no-eval: 36f81ba | (Pawel Murias)++ | src/vm/js/ (8 files): [js] When loading a compunit save the actual context instead of creating a hackish substitute. Implement iterating over contexts and support nqp::existskey on them. |
13:38 | |
p/no-eval: 907a0ca | (Pawel Murias)++ | t/nqp/101-lexpad-stuff.t: Test that existkey on ctxs and iterating over them works. |
|||
p/no-eval: 3388449 | (Pawel Murias)++ | src/vm/js/Compiler.nqp: [js] Update comment. |
|||
[Coke] | TimToady++ # rt updates! | 13:53 | |
dalek | kudo/nom: c159f0a | lizmat++ | src/core/SetHash.pm: Make SetHash.Set about 80x faster for a 1000 element SetHash |
14:54 | |
unmatched} | :o | 15:01 | |
lizmat++ | |||
lizmat | so what *is* the difference between Hash.push and Hash.append ? | 15:07 | |
m: my %h; %h.push(<a>,<e f g h>,<a>,<k l>); dd %h | 15:12 | ||
camelia | rakudo-moar c159f0: OUTPUT«Hash %h = {:a($[("e", "f", "g", "h"), ("k", "l")])}» | ||
lizmat | m: my %h; %h.append(<a>,<e f g h>,<a>,<k l>); dd %h | ||
camelia | rakudo-moar c159f0: OUTPUT«Hash %h = {:a($["e", "f", "g", "h", "k", "l"])}» | ||
nine | lizmat: looks like the same as between Array.push and Array.append? | 15:19 | |
lizmat | yeah... you need to push/append to the same key twice to see the difference, which was what got me confused | ||
unmatched} | Rele6sr: reminder | 15:30 | |
Rele6sr | 🎺🎺🎺 Friends! I bear good news! Rakudo's release will happen in just 4 days! Please update the ChangeLog with anything you worked on that should be known to our users. 🎺🎺🎺 | ||
🎺🎺🎺 Here are still-open new RT tickets since last release: bug.perl6.party/1471361447.html And here is the git log output for commits since last release: bug.perl6.party/1471361450.html 🎺🎺🎺 | |||
unmatched} | 100 tickets. | 15:31 | |
unmatched} goes over to find any blockers | |||
pmurias | mst: any public info on the "the sysadmin tool mst is building" alluded in the shadow cat blog post? | ||
mst | pmurias: which post? | 15:32 | |
pmurias | mst: "MST travels to YAPC::EU 2016" | 15:35 | |
mst | aha | 15:36 | |
that's the prolog-like thing that's going to underlie a cpan client and later a deployment tool | 15:37 | ||
hence why I was looking at lens-like things | |||
so I can do structural unification on config files | |||
arnsholt | Mmmmmm, tasty tasty logic programming! | 15:39 | |
timotimo | the good thing about perl6 and unification is that we already have very good unicode support | 15:40 | |
unmatched} | :( "severe thunderstorm and possible tornado" weather warning :/ Hope I won't lose internet connection. | 15:50 | |
timotimo | i wish you the best of luck | ||
|Tux| | looking forward seeing many of you in Cluj | 15:55 | |
dalek | kudo/nom: 05cdc14 | lizmat++ | src/core/ (2 files): Make MixHash.Mix|BagHash.Bag about 300x faster Mostly because .new is a lot more involved on Mixes and Bags, and we're bypassing that altogether now. |
15:56 | |
|Tux| | This is Rakudo version 2016.07.1-192-gc159f0a built on MoarVM version 2016.07-18-g2f269d8 | 16:02 | |
csv-ip5xs 9.801 | |||
test 15.086 | |||
test-t 7.254 | |||
csv-parser 16.192 | |||
note that ip5xs is under 10 now | 16:03 | ||
nine++ | |||
|Tux| => HOME | |||
[Coke] | RT: 1347; @LARRY: 11; CONC: 26; GLR: 4; JVM: 66; LHF: 1; LTA: 114; NEW: 869; NYI: 82; OSX: 5; PERF: 23; POD: 17; PRECOMP: 10; RFC: 32; SEGV: 33; STAR: 5; TESTNEEDED: 16; TODO: 10; UNI: 28; UNTAGGED: 491; WEIRD: 3 | 16:20 | |
nine | But, but, but I didn't do anything :) | 16:21 | |
lizmat | afk& | 16:25 | |
dalek | kudo/nom: 1628e48 | jnthn++ | src/Perl6/Optimizer.nqp: Fix over-assuming optimization of R. It dropped values on the floor when there were more than two args, as happens with list assoc things like `R,`. |
17:34 | |
kudo/nom: 65bb9fe | jnthn++ | docs/ChangeLog: Accuratize ChangeLog notes on concurrency fixes. |
|||
ast: be9417e | jnthn++ | S03-metaops/reverse.t: Test for RT #128703. |
|||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128703 | ||
dalek | kudo/nom: f1516f4 | (Zoffix Znet)++ | docs/ChangeLog: Remove duplicate entry The other copy was added into Fixes section, which is a more correct section for this. |
17:40 | |
jnthn | d'oh :) | 17:42 | |
Though arguably it's an addition :) | |||
I mean, we added the symbols to start blocks :P | |||
unmatched} | But wasn't it to fix some sort of issues? :) | 17:43 | |
jnthn | I didn't quite notice it was nicely in sections though | ||
Well, it's a better default to make sure certain issues can't happen | 17:44 | ||
jnthn will be doing Perl 6 stuff tomorrow | |||
Hopefully I sleep much better tonight than last night | |||
brrt | it would be nice if our main perl6 people could stay in one piece these days | 17:45 | |
jnthn | Mostly I'm just happy my iffy stomach on Sunday cleared up really quickly :) | 17:46 | |
brrt | well, that's something | 17:48 | |
[Coke] | jnthn++ | ||
jnthn | Anyways, off to relax, eat, etc. :) | 17:51 | |
unmatched} | The rough plan for the Rele6sr :) Hoping to have it in place for 2016.09 release github.com/zoffixznet/Rele6sr/blob...ROADMAP.md | 18:22 | |
Making the release would essentially become doing this: | |||
Rele6sr: release | |||
:D | 18:23 | ||
geekosaur | : skynet | 18:24 | |
stmuk | use Mojolicious::Lite:from<Perl5>; | 18:25 | |
hahaha | |||
unmatched} | It works quite well actually :) | 18:26 | |
Well, slow as hell, but works :) | |||
dalek | kudo/nom: 1728139 | lizmat++ | src/Perl6/World.nqp: Fix for RT #126264, inspired by MasterDuke17++ Basically taken from gist.github.com/MasterDuke17/eb8e4...312ad0692b except for the (unimplemented) COMPOSE, DOC. |
18:46 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126264 | ||
masak | unmatched}++ # Rele6sr | 18:48 | |
unmatched} | lizmat: looks like your fix for RT#128595 fixed RT#127933, 'cause it's a passing todo for me. In the RT#128595 you say that todos pass for it now, but I actually messed up that test and there's no way for it to pass | 18:57 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128595 | ||
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127933 | |||
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128595 | |||
unmatched} | The two tests in question are next to each other in the file. | ||
lizmat | is that the one testing for hanging ? | 18:58 | |
unmatched} | Yeah, the doesn't-hang() one. It still hangs, cause it's missing the "exit" bit | 18:59 | |
But the one after it, about native types in repl now works for me. | |||
lizmat | brb, making tea | 19:00 | |
dalek | ast: 74b1c12 | (Zoffix Znet)++ | S19-command-line/repl.t: Remove poor fudged test for RT#128595 The test tests for hanginess of the REPL, whereas the proper solution to the ticket is to not start the REPL in the first place, making this test bogus. |
19:01 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128595 | ||
unmatched} | Oh, not your fix for that ticket, but the fix for the ^C in repl stuff | 19:04 | |
lizmat | ah, now we still need to fix the module not found loading error | ||
dalek | ast: 0e31be9 | (Zoffix Znet)++ | S19-command-line/repl.t: Unfudge now-passing tests for RT#127933 Unclear what fixed the issue. Possibly the fix for RT#128900 github.com/rakudo/rakudo/commit/be7ce04 |
19:06 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127933 | ||
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128900 | |||
lizmat | unmatched}: I'm considering removing the fallback to the nqp REPL if module loading failed | 19:14 | |
the idea being that *if* someone too the trouble of adding the module to the command line | |||
they really need it, so there's no point REPLing without it | |||
unmatched} | agreed. | 19:15 | |
lizmat | ok, spectesting that now | ||
dalek | kudo/nom: ba20d34 | lizmat++ | src/Perl6/Compiler.nqp: Fix for RT #128595 By basically removing the CATCH block and falling back to NQP REPL. The idea being that *if* there's something wrong with either loading a module, or with the REPL itself, the resulting fallback would not be what the user would want anyway, so it's better to croak right away. |
19:26 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128595 | ||
unmatched} | jnthn++ looks your async fixes fixed my bug with Mojolicious + Websockets + Proc::Async running a shell app :D | 19:27 | |
s/bug/segv/; | |||
Which means I can now write the "Perl 6 ♥ Mojolicious" article \o/ | 19:28 | ||
lizmat | ++unmatched} | 19:30 | |
masak | Go 1.7 does SSA and 37 optimization passes: pauladamsmith.com/blog/2016/08/go-1.7-ssa.html | 19:33 | |
jdv79 | there were new async fixes? | ||
unmatched} | jdv79: github.com/rakudo/rakudo/blob/nom/...og#L18-L21 | 19:34 | |
Though I don't know if any of that is related to the Proc::Async issue. | |||
jdv79 | nice | 19:36 | |
travis-ci | Rakudo build errored. Elizabeth Mattijsen 'Streamline various Set/SetHash methods | 19:41 | |
travis-ci.org/rakudo/rakudo/builds/152677364 github.com/rakudo/rakudo/compare/6...c24a8a61d0 | |||
buggable | ☢ [travis build above] Build log missing from at least one job. Check results manually. | ||
unmatched} | Yup. One is missing. | 19:42 | |
I guess I should train buggable to not abort in such cases and just report how many are missing | |||
AlexDaniel | .oO( one day we will substitute everyone here with a bot ) |
20:05 | |
dalek | p/no-eval: 4aecc8e | (Pawel Murias)++ | src/vm/js/nqp-runtime/core.js: [js] Fix error in error message found by vendethiel++. |
||
vendethiel | right on time \o/ | ||
jnthn | unmatched}: Wonder which fix it was; may have been the one involving condvars + GC, since that could affect relatively long-lived promises | 20:07 | |
lizmat | jnthn: in related news, TEST_HARNESS=6 make spectest still fails after X test files with "no subtests run" | 20:09 | |
jnthn | Hmm, well, we now know a bunch of bugs that it wasn't at least :P | 20:10 | |
lizmat | jnthn: true | 20:12 | |
and I must say, the behaviour seems more stable now | |||
just not stable enough :-( | |||
jnthn | Is it always after the same X test files? | 20:13 | |
hm, huh | 20:14 | ||
TEST_HARNESS=6 make spectest | |||
... | |||
/usr/bin/perl t/harness5 --fudge --moar --keep-exit-code --tests-from-file=t/spectest.data | |||
It seems to run the 5 harness. Did I do something wrong? :) | |||
dalek | kudo/nom: dd9b760 | lizmat++ | src/core/Pair.pm: Prevent mutable keys in Pairs, RT #128965 |
20:15 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128965 | ||
lizmat | jnthn: oops, it's HARNESS_TYPE=6 make spectest | ||
jnthn | yeah, just figured it from le Makefile :) | 20:16 | |
Final error: Type check failed in assignment to $!buffer; expected Str but got Failure (Failure.new(exception...) | |||
Is that what you see also? | 20:17 | ||
geekosaur | I was actually talking about something more general; the fact that Scalar gets exposed by .VAR means it can be slipped into anything that is supposed to be immutable, making it suddenly mutable | ||
lizmat | yes, with TEST_JOBS= it just starts emitting "no subtests run" | ||
jnthn | Hm, I have that in my environment | 20:18 | |
lizmat | with what value ? | ||
jnthn | So it's running parallel anyway | ||
Oh... :) | |||
lizmat | no, "TEST_JOBS+" | ||
*= | |||
jnthn | I thought you mean "with TEST_JOBS=x" :P | ||
lizmat | nope, the opposite :-) | ||
jnthn | hehe | 20:19 | |
Trying that too, but it failed with that type check fail both times so far | |||
Smells like an over-sharing bug | 20:20 | ||
(Both times being parallel runs) | |||
Yup, I get the no subtests run thing too | |||
So, not OSX this time. ;) | |||
lizmat | *phew* :-) | ||
jnthn | Yes, phew indeed, I still don't yet have that locally :) | 20:21 | |
Here it seems like t/spec/S02-literals/string-interpolation.t is the first one that emits no subtests run | 20:22 | ||
Reliably | 20:23 | ||
Or at least, 3 times in a row :) | |||
Guess I'll dig into it during my Perl 6 time tomorrow. It'd be rather nice if that worked. | |||
And I suspect it ain't going to get golfed for me. :) | |||
lizmat | yup, nice case of dogfooding | 20:24 | |
jnthn | Also it'd maybe mean act.yapc.eu/ye2016/talk/6715 can have a working-er live demo :) | 20:26 | |
lizmat | yup :-) | 20:28 | |
geekosaur | hm. do we have a specification of what operation are permitted on .VAR? I'm thinking of putting a proxy around the Scalar it returns, to try to limit the damage | 20:29 | |
*operations are | |||
lizmat | jnthn: not sure if you're following the discussion on RT #128965 | 20:59 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128965 | ||
lizmat | but I was thinking: wouldn't it be the simplest to have nqp::decont() go to the bottom and handle Scalar objects as well? | ||
or is the Scalar a HLL entity and does nqp:: not know about that ? | |||
jnthn | Not following at present :) | 21:03 | |
geekosaur | the upshot is that allowing Scalar to be visible at the Perl 6 level breaks the type system. you can do things like make immutable types mutable. | 21:04 | |
jnthn | I've already said that's an issue I'd rather not worry about for the moment. | ||
geekosaur | (and Zefrem *is* doing so) | ||
timotimo | nqp:::decont already handles scalars? | ||
geekosaur | only to one level | ||
timotimo | oh | ||
every decont is supposed to strip as many layers as it takes? | 21:05 | ||
what if a container contains itself? | |||
jnthn | No, decont is only ever one layer | ||
geekosaur | so lizmat++ patched Pair to remove a Scalar if it's passed, and Zefrem promptly wrapped it in another Scalar so it still leaked in and made a mutable Pair | ||
timotimo | hah | ||
zefram is good at breaking things | |||
BBIAB | |||
lizmat | I'm just about to commit code to completely disallow Pair.new(Scalar:D) | ||
this also fixes typed hashes, bags and mixes | 21:06 | ||
albeit with a slightly LTA error message, on which I'm working now | |||
geekosaur | then you'll have to do the same for any other immutable value type, or you just end up with the same problem all over again | ||
jnthn | OK, but the more arbitrary patches we do now, the harder a good/consistent solution will be in a year or so's time when it gets to the top of the agenda. | ||
geekosaur | which is why I think the correct solution is to make Scalar not leak through to the Perl 6 level | ||
lizmat | the only other we have in core, is Set | ||
jnthn | geekosaur: That too only hides the problem, no? What about Proxy, which will have the same sorts of issues? | 21:07 | |
lizmat | jnthn: I've added a typed exception for it, so it should be easy to trace in the future | ||
geekosaur | hrm. I was actually wondering if just wrapping the Scalar from .VAR in a Proxy would be enough --- but now that you mention it... | 21:08 | |
still, having to special case everything that uses it seems like a non-scalable and potentially buggy answer | |||
jnthn | geekosaur: Indeed. | 21:09 | |
lizmat | jnthn geekosaur afaik, this is only an issue for Pair, Bag|BagHash, Mix|MixHash, typed Hashes and Set|SetHash | ||
jnthn | But people don't seem to be able to take "we'll deal with this later" for an answer. :/ | ||
lizmat | fixing Pair covers all but Set|SetHash | 21:10 | |
so there would be only 2 places where we would need to do this check | |||
jnthn | Anyway, it's Not My Problem until I've got a good number less problems that are affecting users who are trying to get things done in Perl 6, rather than break stuff. | ||
geekosaur | (actually I think Proxy does the opposite of what I wanted, lets all the mutability of the Scalar through without enabling the kinds of things .VAR is presumably intended for | ||
lizmat | jnthn: ok, will revert the check in Pair, and drop the exception and checking and leave for a future date | 21:12 | |
dalek | kudo/nom: b00d92d | lizmat++ | src/core/Pair.pm: Revert "Prevent mutable keys in Pairs, RT #128965" This reverts commit dd9b760fcedcad3a9329fa76c651ca5adf0a579c. This will be fixed more generally at a later date when there are "a good number less problems that are affecting users who are trying to get things done in Perl 6, rather than break stuff" |
21:13 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128965 | ||
jnthn | also | 21:14 | |
m: my $a = [1,2,3] => 4; $a.key[1]++; say $a | 21:15 | ||
camelia | rakudo-moar dd9b76: OUTPUT«[1 3 3] => 4» | ||
jnthn | That's another case of a pair with a mutable key. In fact, you can create class MyPretendScalar { has $.value is rw }, and use that as a key too | 21:16 | |
lizmat | m: my $a = [1,2,3] => 4; $a.key[1]++; say $a.WHICH | 21:17 | |
camelia | rakudo-moar dd9b76: OUTPUT«Pair|Array|52648624|Int|4» | ||
jnthn | Right, there is a distinction in that sense | 21:19 | |
I suspect the answer is that whatever .VAR returns, it'd better not be just another level of containerness | |||
But identifying what it *should* be is...trickier. | |||
geekosaur | yeh | 21:20 | |
which is why I was thinking in the direction of a proxy that exposes the parts that should be exposed (hence asking what those parts should be earlier), but avoids the mutability leak | 21:21 | ||
jnthn | Given we're in introspection teritory, some kind of variable meta-object | ||
(maybe :)) | 21:22 | ||
I don't think Proxy is an especially good direction though, in so far as you can .VAR a Proxy also | |||
geekosaur | I didn;t mean Proxy, but a different kind of proxy. If you could .VAR it, it would not be doing what it is supposed to. | 21:23 | |
jnthn | Well, .VAR is defined as identity on anything that doesn't explicitly handle it. | 21:24 | |
dalek | ast: e8632c5 | (Zoffix Znet)++ | S19-command-line/repl.t: Remove test for RT#127695 The test checks REPL is exitable when a module cannot be loaded, however, as part of fixing of RT#128595 it was decided REPL must not start at all in such cases, making this test bogus. The test is not present in 6.c-errata |
21:25 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127695 | ||
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128595 | |||
jnthn | Anyway, I really need to rest. | ||
geekosaur | basically a specific proxy that enforces what amounts to access control for the Scalar. if .VAR on that were to return the Scalar, then the proxy would not be enforcing access control; .VAR should indeed return the proxy itself | ||
lizmat | good night, jnthn and #perl6-dev! | ||
jnthn | Oh, .VAR on that object wouldn't return the Scalar it was wrapping, surely :) | ||
my $a = 42; my $b = $a.VAR; my $c = $b.VAR; # $c is the meta-object for the Scalar $b, whose value just happens to be the meta-object of the variable $a | 21:27 | ||
Well, and "$c is" really really means "$c is a Scalar pointing to" :) | 21:28 | ||
Anyway, really resting...I was already frazzled before this. :-) 'night | |||
dalek | ast: 8fa9045 | (Zoffix Znet)++ | S19-command-line/repl.t: REPL with -M must not start if module cannot be loaded RT#128595 |
21:31 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128595 |