Geth | rakudo/nom: bd4094e24b | (Elizabeth Mattijsen)++ | src/core/Junction.pm Only actually stringify non-Str in Junction.Str Makes it about 2x as fast if the junction already consistes of strings. |
08:12 | |
rakudo/nom: a3c71e7d39 | (Elizabeth Mattijsen)++ | src/core/Junction.pm Concatting a Junction with an empty string is just .Str |
08:24 | ||
brrt | can we make a plan for killing the extops | 08:51 | |
Geth | roast: 1d784096c9 | (brian d foy)++ (committed using GitHub Web editor) | S06-signature/slurpy-params.t Minor typo |
09:35 | |
nqp: 980ea2684d | pmurias++ | src/vm/js/nqp-runtime/io.js [js] Make nqp::readfh work on stdin This works on linux, but needs to be tested on windows (which lacks /dev/stdin) |
09:45 | ||
nine | Killing extops? I'd like that. They never made sense to me considering that MoarVM was explicitly written to run rakudo :) | 09:48 | |
jnthn | They're largely "things we didn't have time to design right in the VM, so exported the technical debt" :) | 09:49 | |
(Yes, I'd like to see them go. No, I don't care to do it by just moving them.) | |||
brrt | what would you recommend we'd need for them to go? | 10:06 | |
jnthn | Well, step 1 is probably to re-design the stuff that underpins Scalar | 10:08 | |
Which we need to do for spesh to better understand it anyway | |||
brrt | hmmm | ||
jnthn | Once *that* is moved into MoarVM at least a few ops will go away | ||
The p6box_i, p6box_s etc. can easily go today | 10:09 | ||
Anyone can do that | |||
We "just" need to turn them into a wval + box instruction | |||
Or perhaps a hllboxtype_i + box | |||
That probably just leaves a small number of things | 10:10 | ||
brrt | uhuh | ||
Geth | nqp: fff99261e1 | (Jonathan Worthington)++ | docs/ops.markdown Design/document soon-to-be-added atomic ops. These will be implemented in MoarVM and used to make atomics available in Rakudo. |
11:10 | |
dogbert17_ | ZOFFLOP: S03-junctions/autothreading.t, S05-modifier/ignoremark.t, S05-modifier/samemark.t, S17-promise/nonblocking-await.t, S32-io/IO-Socket-Async.t and S32-io/IO-Socket-INET.t | 11:56 | |
jnthn | So I'm putting in various atomic ops and pondering exactly how we'll expose them at Perl 6 level. | 13:05 | |
A cas function is fine enough and we can overload it for Scalar and int | 13:06 | ||
Question beyond that is if we'd prefer an interface like Atomic.something(...) or a more functional interface | |||
timotimo | just can't be bigint ... or immutable Int :P | 13:07 | |
jnthn | Right, has to be an `int $target is rw` | ||
m: multi m(int $target is rw) { say "int" }; multi m($x is rw) { say "reference" }; my int $test = 42; m($test); my $test2 = Mu; m($test2) | 13:08 | ||
camelia | int?Cannot resolve caller m(Mu); none of these signatures match:? (int $target is rw)? ($x is rw)? in block <unit> at <tmp> line 1?? | ||
jnthn | oops | ||
m: multi m(int $target is rw) { say "int" }; multi m($x is rw) { say "reference" }; my int $test = 42; m($test); my $test2 = Any; m($test2) | |||
camelia | int?reference? | ||
jnthn | m: multi m(int $target is rw) { say "int" }; multi m($x is rw) { say "reference" }; my int $test = 42; m($test); my $test2 = 42; m($test2) | 13:09 | |
camelia | int?reference? | ||
jnthn | So those fall fine out of multi | ||
The other operations on scalars are atomic load and atomic store | |||
The other opreations on native int are atomic increment, decrement, add, load, and store | |||
timotimo | ah, scalars will also store and load actual objects | 13:10 | |
jnthn | There's then an argument-less memory barrier | ||
The boring answer is just Atomic.add($i, 42) | |||
Atomic.full-barrier() | |||
etc. | |||
timotimo | Atomic+ Atomic- :P | ||
is this anything to do with making object hashes perl6-level and making them threadsafe? | 13:11 | ||
or your latest secret project? | |||
jnthn | But...well yeah, we can do horrors like $x A= $obj | ||
:P | |||
timotimo | we do have the S metaop for "sequential" or something | ||
that's sort of what you get when you use atomic ops | |||
jnthn | No, it's to do with somebody offering me funding to implement atomics :-) | ||
timotimo | oh, cool | 13:12 | |
.o( now in theaters: Atomic Jonthe ) | |||
jnthn | :P | ||
Wait, what secret project? :P :P Just 'cus I've got my first talk in ages coming up doesn't mean there'll be a big reveal :P | |||
timotimo | :D | 13:13 | |
jnthn | Or at least, it doesn't *have* to... ;-) | ||
timotimo | no pressure | ||
jnthn | I pondered some atomic-y meta-op | ||
But it seems pretty poor generalization | |||
timotimo | very | ||
i mean, it could be like += but instead of "assigning" it'll compare-and-swap in a loop or something?! | 13:14 | ||
jnthn | We'd have to pick a non-ascii char for it too | ||
+= can't fail | |||
There's a direct atomic add | |||
So no implicit loop there | |||
timotimo | bad example, indeed | ||
jnthn | I think cas just wants to be a function | ||
timotimo | A.= lc | ||
jnthn | Yeah but ++ and -- are the other ones | 13:15 | |
And you can't A++ and A-- 'cus it'd have to be written $foo\A++ to not be ambiguous anyway | |||
timotimo | indeed, that'd be ugly | ||
jnthn | And then it'd only work on a native int of the right size :P | ||
timotimo | +A+ -A- *ugh* | ||
jnthn | eww :P | ||
++A and --A and =A and +=A would work but...uh... ) | 13:16 | ||
timotimo | except we also have pre-increment | ||
though i believe the increment and decrement atomic ops give you the before value already | |||
jnthn | Not natively but yeah, we can simulate it | ||
Right | |||
I think I'll go the boring route for now | 13:17 | ||
timotimo | that'll be acceptable | ||
jnthn | There are pretty special case anyway | ||
Argubably they could just be functions | |||
Not Atomic.blah | |||
Since cas already is | |||
pmurias | jnthn: are $a.=repeated and $a .= repeated meant to compile differently? | 14:24 | |
jnthn: $a.=repeated has a sink when compiled while $a .= repeated doesn't | 14:25 | ||
jnthn | They're parsed very differently | 14:30 | |
The first is parsed as a method call, like .+ and .* are | 14:31 | ||
The latter as an infix op | |||
pmurias | both are intended to have identical semantics? | ||
jnthn | Yeah | ||
Not sure what stops the latter one getting the sink | |||
Oh | |||
Maybe the problem is the former does get the sink though | |||
Yeah, it's an assignment | |||
And assignments shouldn't be sunk | 14:32 | ||
pmurias | the sink is somehow called only on the JVM/JS backends | 14:33 | |
I'll debug that | |||
jnthn | pmurias++ | 14:34 | |
Geth | nqp/atomics: 8fddad9170 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp Map new atomic ops on MoarVM backend. |
14:43 | |
pmurias | jnthn: it turns out that nqp::p6sink is called on MoarVM backend but it doesn't do anything because it gets a container (and nqp::p6sink deconts that container on the jvm and js) | 15:21 | |
jnthn: I assume I should fix nqp::p6sink on js & jvm and stop the nqp::p6sink being emitted for .= on all backends? | 15:23 | ||
Geth | rakudo/atomics: 01b6d3f56e | (Jonathan Worthington)++ | 4 files Initial implementation of real cas on Scalars. |
15:31 | |
jnthn | I guess if something's in a container we shouldn't sink it, yeah | 15:32 | |
And yes, we don't want to sink .= since it's stored | |||
Geth | roast: a42b3995b3 | (Jonathan Worthington)++ | S17-lowlevel/cas.t Add tests for the cas function. |
15:34 | |
rakudo/atomics: 40853b4f73 | (Jonathan Worthington)++ | 2 files Re-implement auto-looping form of cas. This time actually doing it atomic. |
16:24 | ||
rakudo/atomics: 0155358517 | (Jonathan Worthington)++ | t/spectest.data Run new cas tests. |
|||
AlexDaniel | .seen perlpilot | 16:41 | |
yoleaux | I saw perlpilot 2 Aug 2017 17:52Z in #perl6: <perlpilot> Altreus: gist works | ||
nine | jnthn: functions are much easier to replace in a lexical scope, i.e. a new language version. So when in doubt about an API, functions are a less risky way. | 17:59 | |
samcv | AlexDaniel, that RT is probably not caused by me. i made changes which fixed a bug in ignoremark | 18:16 | |
ignoremark used to match if the first two codepoints in the needle were a match (no matter what else was in the needle) | |||
so 'hello' ~~ /:m hem/ would match | |||
i will reply to the RT after i make some tea | |||
RT if anyone curious rt.perl.org/rt3/Public/Bug/Display...?id=131881 | 18:17 | ||
though i maybe commited some other fixes that i will have to check | 18:18 | ||
ah no i haven't made a fix another location yet. not sure if it will fix this. it is possible? i will see in a bit. | 18:24 | ||
tea & | |||
jnthn | nine: Good point, though in this case I'd expect it to be relatively low-risk; this is epxosing rather well-defined primitives. :) | 18:27 | |
But yeah, I guess functions are more natural than methods always called on a type object | 18:28 | ||
pmurias | function calls are easier to optimize too | 18:50 | |
jnthn | That also | 18:54 | |
samcv | AlexDaniel, so that bug is going to be fixed, just running spectest on everything. full details on squashing in #moarvm | ||
jnthn | Don't need the speculative opt | ||
samcv | NeuralAnomaly, staus | 18:56 | |
NeuralAnomaly, status | |||
NeuralAnomaly | samcv, [?] Next release will be in 4 days and 9 hours. Since last release, there are 49 new still-open tickets (2 unreviewed and 3 blockers) and 156 unreviewed commits. See perl6.fail/release/stats for details | ||
Geth | nqp: 63d534d6ab | (Samantha McVey)++ | tools/build/MOAR_REVISION Bump MoarVM to get ignoremark fixes and other changes Full list of changes brought in: 712cff33 Fix a bug in index/eqat(im) and in ord_getbasechar 3e3f66ea Cleanup typos, formatting, etc in comments 7c4150f5 Cleanup typos, formatting, etc in comments 29d48d99 Cleanup typo in comments ... (16 more lines) |
19:11 | |
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...-g712cff33 | |||
rakudo/nom: 7b81f0f996 | (Samantha McVey)++ | tools/build/NQP_REVISION Bump Moar/NQP for ignoremark fixes NQP changes brought in: 63d534d6a Bump MoarVM to get ignoremark fixes and other changes fff99261e Design/document soon-to-be-added atomic ops. 980ea2684 [js] Make nqp::readfh work on stdin ... (23 more lines) |
19:16 | ||
Ā¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....g63d534d6a | |||
roast: c185acc57a | (Samantha McVey)++ | S05-modifier/ignoremark.t Add ignoremark tests to cover JSON::Tiny regression + other issue Synthetics with decomposable base characters properly work with ignoremark \c[LATIN SMALL LETTER J WITH CARON, COMBINING DOT BELOW]" ~~ /:m:i j / Since letter j with caron is one codepoint. It used to not decompose it. With latest MoarVM changes this is fixed, as well as the JSON::Tiny regression. |
19:19 | ||
samcv | moritz, the JSON::Tiny bug should be fixed now | 19:31 | |
moritz | samcv: thanks! | ||
lizmat | FWIW, I will fix t/spec/S03-junctions/autothreading.t issues tomorrow | 19:33 | |
samcv | you're very welcome moritz | ||
Geth | roast: 8e1f6718ab | pmurias++ | S04-statements/sink.t Test that we don't sink things in containers |
20:05 | |
pmurias | hmm, how can I add a sink method to a Proxy (or any other container) and still have it remain usable as a container | 20:22 | |
lizmat | but role { method sink { } } | 20:24 | |
AlexDaniel | releasable6: status | 20:54 | |
releasable6 | AlexDaniel, Next release in 4 days and ?22 hours. 3 blockers. Changelog for this release was not started yet | ||
AlexDaniel, Details: gist.github.com/03d0c3bbcd3b966773...2056b27da3 | |||
AlexDaniel | kinda like this | ||
perlpilot | AlexDaniel: what's up? | 21:04 | |
yoleaux | 7 Aug 2017 21:08Z <AlexDaniel> perlpilot: github.com/perlpilot/p6-sake/pull/6 plz | ||
perlpilot | ah | 21:05 | |
AlexDaniel | :) | ||
perlpilot | though, I'm clearly behind the curve a little bit in what's going on :) | ||
EVALFILE doesn't require some MONKEY-THING? | 21:07 | ||
AlexDaniel | perlpilot: hm, that's an interesting question, but nope | ||
perlpilot: there's one more pull request that I'd love to see merged, btw :) | 21:12 | ||
perlpilot | AlexDaniel++ | 21:14 | |
AlexDaniel | thanks! | 21:15 | |
samcv | releasable6, status | 21:24 | |
releasable6 | samcv, Next release in 4 days and ?21 hours. 3 blockers. Changelog for this release was not started yet | ||
samcv, Details: gist.github.com/eb9a23d677af0303c7...2287e8dc5b | |||
samcv | hm wonder how long it takes to update. i just closed one of the blockers | 21:25 | |
AlexDaniel | samcv: blockers are taken from perl6.fail/ and the list is maintained manually there | 21:26 | |
samcv: I'll do something about it, maybe, but later | |||
samcv: by the way, any tests for that ticket? | 21:27 | ||
samcv | yes | ||
:) | 21:28 | ||
AlexDaniel | ah, I see already | ||
samcv: great, thanks! | |||
releasable6, status | |||
releasable6 | AlexDaniel, Next release in 4 days and ?21 hours. 1 blocker. Changelog for this release was not started yet | ||
AlexDaniel, Details: gist.github.com/19ebdeca33f069a41e...046dd0924c | |||
samcv | nice so do we have all blockers resolvd then? | 21:30 | |
AlexDaniel | samcv: I misclickedā¦ :) | 21:31 | |
releasable6: status | |||
releasable6 | AlexDaniel, Next release in 4 days and ?21 hours. 2 blockers. Changelog for this release was not started yet | ||
AlexDaniel, Details: gist.github.com/99392a3652831427fa...a2e55672b4 | |||
AlexDaniel | this one is right | ||
the memory issue thingā¦ I just tested it. It got better, but it's still leaking | |||
let's see if I can reproduce the leak with the provided exampleā¦ | 21:32 | ||
yeah, I can. But it's less severe | 21:35 | ||
samcv | is it a really bad memory leak? (is/was?) | ||
AlexDaniel | it was horrible, yes. Currently not that much | 21:36 | |
in fact, I'm not sure if it was perfectly clean before it got worse | 21:37 | ||
samcv | hm | 21:41 | |
jnthn | AlexDaniel: I'll try and take care of rt.perl.org/Public/Bug/Display.html?id=131857 this week | 22:02 | |
AlexDaniel | jnthn: ok! Thanks | 22:03 | |
jnthn: regarding RT #131879, I just reverted my commits that increased timeouts for bot tests (which is how I initially noticed the issue), everything is fine | 22:04 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131879 | ||
AlexDaniel | jnthn: so it is still leaking, noticeably but not too significantly, so I don't think that many people will notice it. Therefore, it's OK | ||
jnthn | OK, guess that'll do for now then :) | ||
AlexDaniel | releasable6: status | 22:06 | |
releasable6 | AlexDaniel, Next release in 4 days and ?20 hours. 1 blocker. Changelog for this release was not started yet | ||
AlexDaniel, Details: gist.github.com/ee20b024b14c5c6491...6d9ddae0d8 | |||
AlexDaniel | alright | ||
lizmat | AlexDaniel++ # welcome to the core team | 22:12 | |
AlexDaniel: shouldn't you be in CREDITS now ?? | |||
AlexDaniel | lizmat: \o/ thanks | 22:13 | |
lizmat: I never wondered what's the criteria for inclusion there | 22:16 | ||
lizmat | well, having a commit bit definitely means you should be in there :-) | ||
AlexDaniel | alright I'll add myself then | ||
Geth | rakudo/nom: 29e41b45fa | (Aleks-Daniel Jakimenko-Aleksejev)++ | CREDITS Add myself to CREDITS |
22:22 | |
lizmat | AlexDaniel++ :-) | 22:26 | |
AlexDaniel | by the way, the release process will be a little bit different this time. Still automated and awesome, but different | 22:34 | |
I'm doing some tests right now, so more info on that later | |||
Geth | rakudo/nom: 231cb3f5fe | (Jonathan Worthington)++ | src/core/IO/Path.pm Fix bad assumption about methods being closures. They're not, since they're looked up via a table in the meta-object. Thus this could cause data races when paths were being manipulated from different threads. |
22:53 | |
jnthn | That caused some pretty weird errors :P | 22:54 | |
lizmat | and another issue of the Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/08/14/...in-review/ | 23:02 | |
good night, #perl6-dev! | 23:05 | ||
Zoffix | lizmat++ # good weekly | 23:10 | |
TimToady waves from mountain view | 23:15 | ||
timotimo waves views from wave mountain | 23:22 |