| 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 |