Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-08-16

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:33 [Coke] (bah. the bisect pointed at that commit, but I'm having trouble getting a working version with the moarvm just before that, either.)
00:49 TimToady my cursory glance at perl6-all-modules seems to indicate most parser tests are success oriented, or use boolean context for failure, so that's close to okay
00:51 Geth ¦ rakudo/nom: cbfda90615 | (Aleks-Daniel Jakimenko-Aleksejev)++ | docs/ChangeLog
00:51 Geth ¦ rakudo/nom: Log all changes since 2017.07
00:51 Geth ¦ rakudo/nom:
00:51 Geth ¦ rakudo/nom: Deliberately not logged:
00:51 Geth ¦ rakudo/nom:
00:51 Geth ¦ rakudo/nom: 0d7ea0a0 8cc64696 6723006f 4c8b1523 37b14836 d56573a7 de02bc3d 278e2918
00:51 Geth ¦ rakudo/nom: d37be249 91be8bc1 8e960522 b8036aff d46f8371 875b0843 356dc404 e0d108bf
00:51 Geth ¦ rakudo/nom: 64064187 1d06770b 15debeec dc4ed746 50d38a1f 5a58498c 59e55646 99375e4a
00:51 Geth ¦ rakudo/nom: 48ce47e6 f083cfc6 a8016278 7fdbb49c f1464e22 c63c57e9 67455170 6e001867
00:52 Geth ¦ rakudo/nom: 59ba9c02 3c797b05 a256c26d 7599e0c3 c43ba0d0 d9f51da8 412c576b abf1cfe7
00:52 Geth ¦ rakudo/nom: bf7063d1 c3da74d8 da4a0f50 29e41b45 c68762f4 6c76ed0a ce0b7b31 d151d8ad
00:52 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cbfda90615
00:52 Geth ¦ roast/6.c-errata: b0044b0751 | TimToady++ | 2 files
00:52 Geth ¦ roast/6.c-errata: fix tests that depend on failed parse --> Nil
00:52 Geth ¦ roast/6.c-errata: review: https://github.com/perl6/roast/commit/b0044b0751
00:57 AlexDaniel releasable6: status
00:57 releasable6 AlexDaniel, Next release in 3 days and ?18 hours. 2 blockers. 164 out of 165 commits logged
00:57 releasable6 AlexDaniel, Details: https://gist.github.com/cd7f696d7be986c6f6fb440adad0299b
00:57 AlexDaniel releasable6: how can I log (or ignore) something if I don't know its sha yet? You stupid.
00:57 releasable6 AlexDaniel, I cannot recognize this command. See wiki for some examples: https://github.com/perl6/whateverable/wiki/Releasable
00:59 timotimo "added change of changelog to changelog"
00:59 timotimo "added change of changing the changelog to changelog"
00:59 AlexDaniel timotimo: but then you'll have to, yes
01:00 TimToady .oO(What is the name of the changelog called?)
01:00 astj joined #perl6-dev
01:00 AlexDaniel This is how robot uprising is going to look like. They will torture us asking to include a sha in the commit message of the same damn commit
01:01 timotimo we have to mine changelogcoin
01:01 AlexDaniel wait, but it's only 8 characters
01:02 AlexDaniel which is… kinda a lot, but what's the estimate?
01:02 timotimo should be doable with a little time investment
01:03 Zoffix (+ Internal:   + Introduced Mixy.total-positive [f49c49bb].... that's not a very internal-looking method name; wrong section?)
01:04 Zoffix Dunno, is this really worth putting in the changelog? ¯\_(?)_/¯ "+ Removed a 3-year old hack [e86bdfca]"
01:04 AlexDaniel Zoffix: yea, I've been thinking about this too. It's not in roast yet, as far as I know, so decided to put it there
01:04 Zoffix "Internal" section was originally meant as "large internal changes that may indirectly impact users".
01:04 AlexDaniel oh
01:04 Zoffix Just saying. I'm not here to tell you how to run the show :)
01:04 * Zoffix re-disappears
01:05 AlexDaniel feedback is welcome, thanks :)
01:06 Geth ¦ roast: b53616f8e6 | TimToady++ | 2 files
01:06 Geth ¦ roast: fix tests that depend on failed parse --> Nil
01:06 Geth ¦ roast: review: https://github.com/perl6/roast/commit/b53616f8e6
01:06 Geth ¦ roast: 1fb68c4b7a | TimToady++ | S05-grammar/example.t
01:06 Geth ¦ roast: generalize overly specific parsing test
01:06 Geth ¦ roast:
01:06 Geth ¦ roast: We shouldn't be testing to see that a parse specifically returns
01:06 Geth ¦ roast: Nil, since in the future it will be returning Failure.  In any
01:06 Geth ¦ roast: case, that's not what this test is trying to test, so it shouldn't.
01:06 Geth ¦ roast: review: https://github.com/perl6/roast/commit/1fb68c4b7a
01:13 Geth ¦ rakudo/nom: 9501edae4f | TimToady++ | src/core/Grammar.pm
01:13 Geth ¦ rakudo/nom: return Failure from failed P6-level .parse
01:13 Geth ¦ rakudo/nom:
01:13 Geth ¦ rakudo/nom: The .parse and .parsefile methods will now return a Failure object that points
01:13 Geth ¦ rakudo/nom: to the high-water state of the parser, if available.  (The .subparse method
01:13 Geth ¦ rakudo/nom: does not, since it is presumed to be for lower-level piecemeal matching that
01:13 Geth ¦ rakudo/nom: is likelier to be success-oriented and have its own failure recovery modes.)
01:13 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9501edae4f
01:14 TimToady okay, we'll see if that flies in the ecosystem
01:14 TimToady if not, it's an easy retraction
01:14 TimToady my inspection of perl6-all-modules did not turn up any danger signs, but we could yet be blindsided
01:15 TimToady otoh, we're getting an amount of bad press about not showing a default error message on grammar failure, so it might be worth a bit of heartburn
01:35 AlexDaniel this looks very promising
01:36 AlexDaniel but oh Larry, our brave man. Three days before the release :)
01:37 TimToady sometimes it's difficult to tell the brave from the foolhardy, except in retrospect :)
01:37 * TimToady just hopes perl6-all-modules is representative of most usage
01:38 TimToady otoh, it can be argued that people who don't test the return value of .parse deserve what they get :)
01:39 TimToady and in any case, the fixes should be relative trivial, if any are needed
01:39 TimToady *tively
01:40 samcv TimToady, why would you show an error on false parses though?
01:40 samcv i mean we don't do it for regex
01:41 samcv i mean i guess it could be optional?
01:41 samcv not sure why they would expect it though. there's LOADS of times a failed parse is expected
01:41 AlexDaniel it gives you a Failure, you don't have to sink it ;)
01:42 TimToady and you can always use .subparse if you want finer control
01:42 AlexDaniel m: grammar G { rule TOP { <a> <a> }; rule a { <b> }; rule b { <c> }; rule c { $<d>=x } }; my $x = G.parse('x z'); say WHAT $x
01:50 camelia rakudo-moar 9501ed: OUTPUT: «(Failure)?»
01:50 AlexDaniel m: grammar G { rule TOP { <a> <a> }; rule a { <b> }; rule b { <c> }; rule c { $<d>=x } }; G.parse('x z')
01:50 camelia rakudo-moar 9501ed: OUTPUT: «5===SORRY!5=== Error while compiling <anon>?Confused?at <anon>:1?------> 3<BOL>7?5x z?Actually thrown at:?  in block <unit> at <tmp> line 1??»
01:50 awwaiid TimToady: I just checked a random script of mine which does .parse, and it indeed blindly tries to use the result -- I believe in a way that is no worse off with your change, and will be significantly proved if it takes your change into account (with only a single line addition). As another datapoint for you :)
01:50 AlexDaniel c: HEAD~10 grammar G { rule TOP { <a> <a> }; rule a { <b> }; rule b { <c> }; rule c { $<d>=x } }; my $x = G.parse('x z'); say WHAT $x
01:50 committable6 AlexDaniel, ¦HEAD~10: «(Any)»
01:50 awwaiid significantly improved
01:50 TimToady almost all the uses of .parse I saw were success oriented in that way :)
01:52 ilbot3 joined #perl6-dev
01:52 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
01:53 TimToady I guess ilbot missed that bit of conversation :)
01:54 [Tux] joined #perl6-dev
02:13 travis-ci joined #perl6-dev
02:13 travis-ci Rakudo build failed. TimToady 'return Failure from failed P6-level .parse
02:13 travis-ci https://travis-ci.org/rakudo/rakudo/builds/264970177 https://github.com/rakudo/rakudo/compare/cbfda9061573...9501edae4f73
02:13 travis-ci left #perl6-dev
02:13 buggable [travis build above] ? All failures are due to timeout (0), missing build log (0), GitHub connectivity (1), or failed make test (0).
02:21 samcv yay more tests
02:21 Geth ¦ roast: 649d9dc503 | (Samantha McVey)++ | S03-operators/comparison.t
02:21 Geth ¦ roast: Add tests to make sure synthetics compare properly
02:21 Geth ¦ roast:
02:21 Geth ¦ roast: These tests are to handle the fixes done here:
02:21 Geth ¦ roast: "Fix MVM_string_compare to support deterministic comparing of synthetics"
02:21 Geth ¦ roast: https://github.com/MoarVM/MoarVM/commit/abc38137b3b61b8192486363ebdb03c0dcb693cd
02:21 Geth ¦ roast: review: https://github.com/perl6/roast/commit/649d9dc503
02:21 Geth ¦ roast: 8695092352 | (Samantha McVey)++ | S03-operators/comparison.t
02:21 Geth ¦ roast: Change all tests in comparison.t to use is-deeply
02:21 Geth ¦ roast:
02:21 Geth ¦ roast: Also remove some trailing whitespace.
02:21 Geth ¦ roast: review: https://github.com/perl6/roast/commit/8695092352
02:25 BenGoldberg m: sub foo { COMPILING::<bar> = my sub { 42 } }; package Baz { BEGIN foo(); bar() }; # What am I doing wrong?
02:25 camelia rakudo-moar 9501ed: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Undeclared routine:?    bar used at line 1. Did you mean 'VAR', 'bag'???»
02:27 samcv all the 3 i added fail before i added that change. declared the strings in the order that would cause them to fail
03:35 pharv_ joined #perl6-dev
03:42 Geth ¦ roast: 51c4ac08bd | (Samantha McVey)++ | S03-operators/comparison.t
03:42 Geth ¦ roast: Add a large number of string comparison tests
03:42 Geth ¦ roast:
03:42 Geth ¦ roast: * Test comparing empty strings with cmp & leg
03:42 Geth ¦ roast:
03:42 Geth ¦ roast: = Add a function to test various cases:
03:42 Geth ¦ roast: * Test same string but different in length
03:42 Geth ¦ roast:  ** Test reversed term returns opposite result
03:42 Geth ¦ roast: * Same string of various lengths but last grapheme is different
03:42 Geth ¦ roast: * Same length string but different character is in various locations
03:42 Geth ¦ roast:  ** Same as previous test, but the different character is a lower codepoint
03:42 Geth ¦ roast:     than previous test
03:42 Geth ¦ roast: review: https://github.com/perl6/roast/commit/51c4ac08bd
03:51 AlexDaniel samcv++
03:56 samcv i wonder how much work adding a string search algorithm would be
03:57 samcv since now ignoremark/ignorecase+ignoremark/plain index operations all go through the same function
03:57 samcv well aside from the index when both are flat strings of the same type that use memmem
03:58 samcv adding it before would have required either doing it for just plain search or doing what has now been done AND adding the algorithm. but now that it's all in one function it makes adding the algorithm work for all the functions which is pretty nice
05:00 pharv_ joined #perl6-dev
05:45 brrt joined #perl6-dev
06:48 brrt joined #perl6-dev
08:43 lizmat Files=1217, Tests=67435, 267 wallclock secs (13.61 usr  5.08 sys + 1795.67 cusr 176.89 csys = 1991.25 CPU)
08:59 nebuchadnezzar joined #perl6-dev
10:03 pmurias joined #perl6-dev
10:08 llfourn joined #perl6-dev
12:46 [Coke] has someone written a script to do a bisect across rakudo/nqp/moarvm?
12:52 brrt don't think we have. also, arguably not easily bisectable, since the space is threedimensional
12:52 yoleaux 11:49Z <markmont> brrt: https://irclog.perlgeek.de/moarvm/2017-08-16#i_15024158
13:36 nine Zoffix: would you be ok with IRC::Client not just catching all exceptions and turning them into warnings? That's the reason why Geth keeps disappearing. Connection gets reset for some reason and the warning logged, but since Geth doesn't exit, systemd will not restart it.
13:36 AlexDaniel brrt: doesn't necessarily have to be. If I got it right, you can swap moar in some cases without any issues
13:38 AlexDaniel brrt: and even if not, you can compile on demand. There are 12 steps IIRC, so that's 12×3 minutes approximately
13:38 AlexDaniel brrt: but you can speed it up if you compile two rakudos ahead of time for the next step
13:39 AlexDaniel that should halve the time, if I got it right
13:40 AlexDaniel there's https://github.com/perl6/whateverable/issues/40 and maybe https://github.com/perl6/whateverable/issues/195
13:41 AlexDaniel whateverable right now has moar and rakudo built on every commit since 2014.01
13:41 AlexDaniel and it takes just a little bit of space actually
13:41 AlexDaniel so even if it is threedimensional as you say, you can still squish it into a reasonable amount of space
13:46 AlexDaniel oh also, 12 steps a wrong number. Should be less because you only have a couple of commits between bumps
13:46 Zoffix nine: what's the warning?
13:46 AlexDaniel that's considering the fact that rakudo bisect is a solved problem
13:47 Zoffix I rather IRC::Client reconnect instead of crashing and relying on some support script to restart it
13:54 nine Zoffix: that would be absolutely fine, too, of course :)
13:54 nine Zoffix: warning could be "Jul 29 23:15:52 camelia perl6[32400]: ??? _ Connection closed"
13:54 nine Zoffix: also "Aug 13 10:35:56 camelia perl6[27970]: [ERROR] [27970] [11] connection reset by peer   in method send-response at /home/geth/.perl6/sources/41D120CC8C5AC1ADBAA2CC7E606E4F8710D84044 (HTTP::Server::Tiny) line 350"
13:55 nine Or this one: Aug 11 13:55:29 beta perl6[25007]: connection reset by peer
14:00 Zoffix .in 3d fix IRC::Client/Geth: https://irclog.perlgeek.de/perl6-dev/2017-08-16#i_15024568
14:00 yoleaux Zoffix: I'll remind you on 19 Aug 2017 14:00Z
14:00 Zoffix K, I'll try to fix this on the weekend
14:00 nine ++Zoffix
14:12 [Coke] AlexDaniel: can't use whatever for this because I'm specifically chasing something on OS X.
14:13 [Coke] (though maybe I can if I install it locally, I dunno)
14:13 AlexDaniel [Coke]: I know, right. I'm planning to make bots easily runnable locally, right now they are not.
14:41 TimToady joined #perl6-dev
15:05 brrt joined #perl6-dev
15:22 Geth ¦ rakudo/nom: 63cdc426ad | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Rakudo/Iterator.pm
15:22 Geth ¦ rakudo/nom: Fix two typos to unbreak JVM build
15:22 Geth ¦ rakudo/nom:
15:22 Geth ¦ rakudo/nom: Per
15:22 Geth ¦ rakudo/nom: - https://github.com/rakudo/rakudo/commit/3ad3346938919e8a0b22fb444999c9c528f20e3b#commitcomment-23677553
15:23 Geth ¦ rakudo/nom: - https://github.com/rakudo/rakudo/commit/50f0508f60eecc65cccd00f19b7fcc7dcbdf395c#commitcomment-23677589
15:23 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/63cdc426ad
15:23 Skarsnik joined #perl6-dev
15:27 lizmat Zoffix++   # catching JVM build errors /me let through
15:29 Skarsnik Hello, Dunno if it's interesting but some tests for NC fail on my chromebook (armv71)
15:32 lizmat hmmm I had given up on building JVM, but it appears it is now busted for me completely:
15:32 lizmat https://gist.github.com/lizmat/ca7311a55f076f40105215013a53e715
15:34 * lizmat tries a fresh clone
15:34 timotimo lizmat: the method it refers to, String.codePoints, seems to be new in Java8?
15:34 lizmat same result  :-(
15:35 lizmat $ javac -version
15:35 lizmat javac 1.7.0_45
15:36 timotimo is java8 just java 1.8? or is it more silly than that?
15:36 Skarsnik https://gist.github.com/Skarsnik/8df31328a9ba43de80b44f93664d644f
15:36 lizmat joined #perl6-dev
15:37 timotimo Skarsnik: little endian vs big endian?
15:37 nine timotimo: it's just that
15:37 timotimo ok, so if we use String.codePoints we definitely should somehow explicitly require Java8 or newer
15:37 lizmat timotimo: I have *no* idea
15:37 timotimo so it bails out with a much more helpful error message
15:39 Skarsnik hm
15:41 Skarsnik can someone fix the test message in https://github.com/rakudo/rakudo/blob/nom/t/04-nativecall/02-simple-args.t#L62 ? (replace uint8 by uint16 and uint32). I could do it and do a PR but I have to create a branch on my fork and sync it with upstream probably
15:42 timotimo you can make changes to files directly on github, it'll create a correct branch for you if i'm not mistaken
15:42 lizmat hmmm... so I upgraded to 8.0.144 or so, now it still claims to use 1.7.045  :-(
15:43 Skarsnik directly on rakudo repository or my fork?
15:43 lizmat Skarsnik: will do
15:45 Geth ¦ rakudo/nom: 591f69af1e | (Elizabeth Mattijsen)++ | t/04-nativecall/02-simple-args.t
15:45 Geth ¦ rakudo/nom: Fix copy-pasto, Skarsnik++
15:45 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/591f69af1e
15:46 ggoebel joined #perl6-dev
15:53 dogbert17 joined #perl6-dev
16:02 * lizmat gives up on JVM
16:06 Skarsnik hm
16:08 Skarsnik I added a printf in https://github.com/MoarVM/MoarVM/blob/master/src/core/nativecall.c#L239 to have the value of the ushort before the cast. I end with -15xxxxx instead of just 65518
16:10 jnthn TimToady: So I'm adding various atomic ops to enable doing various lock-free algos (as well as atomic increment/decrement). For now cas is a function, but while putting them in I just did https://github.com/rakudo/rakudo/blob/atomics/src/core/Atomic.pm
16:10 jnthn TimToady: That is, threw them in a class so you write Atomic.assign($head, $node) or so
16:11 jnthn But my feeling is they want to be functions really
16:11 jnthn There's nothing method-y about them
16:12 jnthn I'm having a bit of a hard job naming them though, in that postfix:<++> is now we spell post-increment, and = is how we spell assignment, so atomic-assign and atomic-int feel a tad odd.
16:12 TimToady well, that's why the setting is an outer scope, so it won't override a user's sub atomic ($particle) { "or so" }
16:12 jnthn Any thoughts? :)
16:12 jnthn Sure, I'm not worried about users with existing functions
16:13 jnthn I'm worried about what to even call them in the first place :)
16:13 TimToady but yeah, if you have an additional name there, I gotta think a little
16:13 Skarsnik *65534
16:13 jnthn Yeah, my names so far are in the file I linked. I mean, we could just call them atomic-fetch, atomic-inc, atomic-add, etc.
16:14 TimToady well, that's pretty clear, if a bit clunky
16:14 jnthn Yeah, feels it to me too
16:14 TimToady I guess what bothers me is that you'd like to name them as variants of built-in operators where possible
16:14 jnthn Right
16:15 TimToady but maybe that's not doable
16:15 jnthn The inc/dec have the semantics of the postfix, not prefix, fwiw.
16:15 TimToady atomic:<++> leaves out the category in a C++y way...
16:16 TimToady will we have both prefix and infix ones?
16:16 jnthn Yeah
16:16 TimToady atomic-infix:<+> is even longer, but how often are you going to call them anyway?
16:17 TimToady infix:<+>:atomic
16:17 jnthn The operations (these are tied to what hardware typically provides) are ++, --, +=, =, .<> (that is, decont)
16:17 jnthn Note that it's += not just +
16:18 jnthn That is, the operation (at a low level) takes the address of an integer and another integer to add
16:18 TimToady well, atomic-infix:<+=> would presumably just be a name, nothing special on the category
16:18 jnthn Yeah
16:19 * TimToady is carefully not suggesting capitalizing them :)
16:19 Skarsnik :nuclearemojiunicode:+=
16:19 perlpilot atomic::infix:<+>   :-)
16:19 TimToady INFIX:<+>
16:19 jnthn Skarsnik: Haha, I already thought about looking for atomic-y Unicode chars and doing a meta-op :P
16:19 jnthn But...well no :P
16:20 jnthn Huffman coding wise, these will be rarely used
16:20 TimToady $a A+= $b
16:20 TimToady but that don't work so well for prefix/postfix
16:20 jnthn Yeah, but then you'd have to write $foo\A++
16:20 lizmat +++   ?
16:21 Skarsnik hm, should I run the spec test on my chromebook?
16:21 jnthn Skarsnik: What's the worst that could happen? :)
16:21 Skarsnik it explode !
16:21 perlpilot make sure you get video if that happens.
16:22 perlpilot Perl 6 -- so advanced, it makes chromebooks explode.
16:22 Skarsnik having NC test that fails bother me x)
16:23 TimToady $foo? ++
16:23 jnthn *groan* :)
16:23 Skarsnik huhu
16:24 Zoffix ? looks really nice :)
16:24 Zoffix nuka-infix:<+>
16:26 TimToady $foo++?   might be perceived more as a modifier
16:26 Geth ¦ rakudo/nom: 435f7e36c0 | (Elizabeth Mattijsen)++ | t/04-nativecall/02-simple-args.t
16:26 Geth ¦ rakudo/nom: Oops, Skarsnik++
16:26 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/435f7e36c0
16:27 lizmat .u ?
16:27 yoleaux U+2622 RADIOACTIVE SIGN [So] (?)
16:27 jnthn True
16:27 jnthn How'd we Texas it? :)
16:27 lizmat hmmm.. isn't this all about scalars ?
16:27 TimToady why would we want to nuke Texas?
16:27 lizmat perhaps use ? as a sigil ?
16:27 b2gills postfix:<?++>
16:28 Zoffix u: ?
16:28 unicodable6 Zoffix, U+269B ATOM SYMBOL [So] (?)
16:28 TimToady if it's rare enough, I'd say the obscurity of unicode is a feature :)
16:28 Zoffix lol :D
16:28 TimToady I like ?
16:28 Skarsnik I don't see it x)
16:29 TimToady atomic orbitals and a nucleus
16:29 TimToady though I don't think any atom has 3 symmetrical orbitals like that :)
16:29 Skarsnik are some spec tests supposed to fail?
16:29 TimToady not generally
16:29 Skarsnik I have S17-supply-syntax that is marked dubious
16:30 TimToady we do still have occasional glitches, so try rerunning the test by hand
16:30 b2gills The orbits are actually more like electron clouds of possible position in real atoms
16:30 TimToady anything in S17 tends to have occasional races, though thankfully they are getting rarer
16:31 TimToady I had that one fail in my last run with TEST_JOBS=6, but running it alone works okay
16:31 jnthn Yeah, I see that one occasionally get unhappy also
16:32 jnthn Didn't manage to figure it out yet.
16:32 lizmat FWIW, I think the race conditions are now mostly in the tests  :-)
16:34 jnthn In general I like the idea of something that looks like the operators. I guess we could have a prefix of it on its own as the atomic fetch also
16:34 jnthn I figure full-memory-barrier() can just be a function called that :P
16:34 jnthn I'd really like an ASCII form though.
16:35 lizmat jnthn: but if you do such an op on a variable with a REPR that doesn't support it, wouldn't that crash and burn ?
16:35 jnthn lizmat: The set of things you can do this one is VERY constrained
16:36 jnthn You can do it on a native int (which may be held in a lexical, attribute, or native array) for the integer operations
16:36 jnthn Or a Scalar container for the reference ones
16:36 jnthn These are really quite low level
16:36 * lizmat is surprised a Scalar container works at all
16:36 lizmat or is there some magic involving a native int involved there ?
16:36 jnthn No, it's because you can CAS a pointer
16:37 lizmat ah, ok
16:37 jnthn That's how most lock free data structures are done
16:37 jnthn (Yes, I'll do docs once we get the naming straightened out)
16:38 jnthn There are places in CORE.setting we'll be able to use these. Like the increment/decrement of loads in ThreadPoolScheduler
16:39 Zoffix What's CAS stand for anyway?
16:39 jnthn (atomic) compare and swap
16:39 Zoffix Ah, thanks.
16:39 Skarsnik hm rakudo github page show that travis an appvoyer build failed. it that normal?
16:40 lizmat jnthn: and I know one place in Damians Quantum:: modules that could use it as well
16:40 Zoffix Skarsnik: not really. Though since it's not reported by a bot, sometimes the failures on it can go unnoticed for a bit.
16:40 TimToady for Texas we could just fall back on an :atomic operator modifier, I suppose
16:40 TimToady $a + $b :atomic
16:40 jnthn Well, except only += is available as an atomic op, not +
16:40 TimToady $a +- $b :atomic
16:41 jnthn The point of these are they do an atomic update of a storage location
16:41 Skarsnik probably need new op then?
16:41 TimToady $a += $b :atomic
16:41 lizmat (atom++)
16:41 lizmat (atom+=)
16:41 lizmat etc ?
16:41 jnthn Or what lizmat suggested
16:42 jnthn Which is consistent with our other texas forms I guess
16:42 jnthn Thoudh I'd atomic rather than atom :)
16:42 lizmat agree  :-)
16:43 Skarsnik does other language like c++ has special op or something for that?
16:43 jnthn Skarsnik: Probably they just do it as functions
16:43 jnthn Which our operators are anyway
16:44 jnthn I think the main attraction to me of doing it with operators is
16:44 jnthn atomic-inc($a) # OK, is it returning the original or the new?
16:44 jnthn Whereas
16:44 jnthn $a(atomic++) doesn't leave you guessing
16:45 jnthn I only worry if there'd be ambiguity there with call syntax... :S
16:45 lizmat ah, but wouldn't that be interpreted as a call of a Callable in $a ?
16:45 Skarsnik std::atomic<long> value(0);
16:45 Skarsnik value++; //This is an atomic op
16:45 Skarsnik value += 5; //And so is this
16:45 jnthn Depends if LTM wins...
16:45 Skarsnik this is so ugly ><
16:45 jnthn But yeah, that's a downside of the parens approach
16:46 jnthn We're back to "not enough ASCII" again :P
16:46 TimToady I know, we could use special Unicode brackets instead :P
16:47 * TimToady again profers the fact that $a += $b :atomic is already available
16:47 lizmat m: sub postfix:<(atomic++)> (\a) { a++ }; my $a = 42; dd $a(atomic++); dd $a   # actually, it works  :-)
16:47 camelia rakudo-moar 435f7e: OUTPUT: «42?Int $a = 43?»
16:47 TimToady but it's misleading to the eye
16:49 TimToady druther just have to write $a\A++ if it comes to that
16:49 TimToady at least it looks different from anything we have
16:50 jnthn What could we do with regards to a prefix?
16:50 TimToady LTM wins there too
16:50 jnthn True
16:50 TimToady and $a A+= $b already looks metaoppy
16:51 ugexe too bad you cant do something like Atomic[+=] or some such, like with R[+=] but with a postfix
16:51 robertle joined #perl6-dev
16:51 TimToady well, we can, it'd just be a special case
16:51 jnthn I kinda thought ?$a would be atomic load, but A$a is probably gonna be rathr problematic ;)
16:51 jnthn *rather
16:53 TimToady well, that might need a bit of special casing, but it could work as a syntax, at least until someone defines class A
16:54 b2gills Isn't there already a problem if they defined class X
16:54 TimToady well, there used to be more of a problem
16:54 TimToady but the internals look up things in SETTING or so these days
16:55 jnthn That was a namespace clash rather than a syntax clash :)
16:55 b2gills We could make it so you can't create a class with a single letter without doing ::(A)
16:55 ugexe is there special handling of X:: ? if so, where? (this could be related to a weird bug I was hunting down)
16:55 TimToady obviously we need a load prefix that is a no-op ordinarily :)
16:55 jnthn Well, actually .<> is our spelling of decont
16:56 jnthn So a postfix A<> would be an option too
16:56 TimToady A<> $x
16:57 TimToady but I still think there's a case to be made for leaving out the Texas version entirely, and using foo() notation in that case instead
16:57 Geth ¦ rakudo/atomics: 46b1a7f277 | (Jonathan Worthington)++ | src/core/Atomic.pm
16:57 Geth ¦ rakudo/atomics: Make full-barrier() just a sub.
16:57 Geth ¦ rakudo/atomics: review: https://github.com/rakudo/rakudo/commit/46b1a7f277
16:57 jnthn TimToady: Yeah, I'd also be good with that
16:59 jnthn sub atomic:<++>(int $x is rw) { $x++ }; my int $x = 42; atomic:<++>($x); say $x
16:59 jnthn m: sub atomic:<++>(int $x is rw) { $x++ }; my int $x = 42; atomic:<++>($x); say $x
16:59 camelia rakudo-moar 435f7e: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Cannot add tokens of category 'atomic'?at <tmp>:1?------> 3sub atomic:<++>7?5(int $x is rw) { $x++ }; my int $x = 42;?»
17:00 jnthn If we want that we'll have to allow it I guess
17:01 Geth ¦ roast: bd54af79c2 | (Jonathan Worthington)++ | S17-lowlevel/atomic.t
17:01 Geth ¦ roast: Follow function -> method change.
17:01 Geth ¦ roast: review: https://github.com/perl6/roast/commit/bd54af79c2
17:06 jnthn Well, guess I should head home and have dinner :)
17:06 travis-ci joined #perl6-dev
17:06 travis-ci Rakudo build passed. Zoffix Znet 'Fix two typos to unbreak JVM build
17:06 travis-ci https://travis-ci.org/rakudo/rakudo/builds/265201947 https://github.com/rakudo/rakudo/compare/9501edae4f73...63cdc426adbc
17:06 travis-ci left #perl6-dev
17:21 Skarsnik make spectest take forever x)
17:27 TimToady we mostly run it in parallel using TEST_JOBS=4 make spectest or whatever
17:27 TimToady (I use 6)
17:27 TimToady ((cuz I have 4 cores))
17:41 lucasb joined #perl6-dev
17:45 Skarsnik https://gist.github.com/Skarsnik/7f9836d34d3bccb04ddac272e41fc50b (the grep is here because I can't scroll while selecting stuff in the console)
17:46 nine m: use NativeCall; sub foo() { my sub memcpy(Pointer $d, Pointer $s, size_t $size) returns Pointer is native(Str) { * }; memcpy(Pointer, Pointer, 0); }; foo; foo;
17:46 camelia rakudo-moar 435f7e: OUTPUT: «Type check failed for return value; expected NativeCall::Types::Pointer but got Whatever (*)?  in sub memcpy at <tmp> line 1?  in sub foo at <tmp> line 1?  in block <unit> at <tmp> line 1??»
17:47 nine ^^^ golf of RT #131898
17:47 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131898
17:47 nine It's....really odd. When one moves the memcpy sub outside the foo sub it works
17:49 timotimo and this happens at run-time? :\
17:49 Skarsnik how he event found memcpy after the sub declaration?
17:49 nine m: use NativeCall; use nqp; sub foo() { my sub memcpy(Pointer $d, Pointer $s, size_t $size) returns Pointer is native(Str) { * }; say nqp::objectid(&memcpy); memcpy(Pointer, Pointer, 0); }; foo; foo;
17:49 camelia rakudo-moar 435f7e: OUTPUT: «22278832?22279328?Type check failed for return value; expected NativeCall::Types::Pointer but got Whatever (*)?  in sub memcpy at <tmp> line 1?  in sub foo at <tmp> line 1?  in block <unit> at <tmp> line 1??»
17:49 Skarsnik *even
17:49 nine It's a different &memcpy object on the second run. But why then doesn't the still existing &CALL-ME method get called?
17:50 nine The same sub that creates the new subroutine body changes the invokespec so the body gets called instead of &CALL-ME. So how can the latter part be in effect but the new subroutine body be missing?
17:51 TimToady Skarsnik: that looks like you're out of sync with nqp/moarvm, so maybe try . config.status and then remake
17:53 nine Or asked the other way round: how can the new &memcpy object have a changed invokespec? It has never been called and thus neither it's !create-optimized-call.
17:54 timotimo closure clones?
17:58 nine That would of course explain the different objectids
17:59 nine But somehow nqp::bindattr seems to affect the clone while nqp::setinvokespec affects the original which then propagates into the clones.
18:04 nine Because of course the invocation_spec is part of the STable which is shared by the clone.
18:06 nine So now I feel like I understand the problem. But a solution has yet to reveal itself.
18:10 Skarsnik config.status?
18:12 Skarsnik it's weird, it's like an install from 2 weeks
18:12 * geekosaur finds "config.status --recheck" a handy way to resync
18:12 geekosaur (no ".""souce" needed, in fact it's likely a bad idea as you don't want to pollute your interactive shell with all its temporary vars)
18:13 Skarsnik it's a git command?
18:13 geekosaur no
18:14 geekosaur it's generated by configure, and is a quick way to regenerate configure results
18:14 geekosaur with --recheck it basically reruns configure with everything it had the first time, without your having to know/remember how it was run before, so it will pick up changes to dependencies
18:15 geekosaur without --recheck it just regenerates everything configure generated the first time, in case you lost/trashed them somehow
18:16 Skarsnik unkwon option, hm
18:16 Skarsnik too bad I can't install synergy on this :(
18:16 timotimo well, we don't have a traditional configure script like autotools would create
18:16 Skarsnik I mean it display the help of the config.pl
18:17 Skarsnik and says there is no --recheck option
18:17 geekosaur oh, then you might well have to just rerun it. I still suspect the "." is wrong unless someone practiced very careful script hygiene
18:17 travis-ci joined #perl6-dev
18:17 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Fix copy-pasto, Skarsnik++'
18:17 travis-ci https://travis-ci.org/rakudo/rakudo/builds/265211901 https://github.com/rakudo/rakudo/compare/63cdc426adbc...591f69af1e05
18:17 travis-ci left #perl6-dev
18:17 Skarsnik I ran sh config.status --recheck
18:22 timotimo geekosaur: what do you mean your terminals aren't throw-away? :)
18:28 ggoebel joined #perl6-dev
18:29 samcv nine, you regressed my change I made here: https://github.com/rakudo/rakudo/commit/96e6b338c with your commit https://github.com/rakudo/rakudo/commit/ec7bc25c4
18:32 Geth ¦ rakudo/nom: 9a0afcbcec | (Stefan Seifert)++ | 2 files
18:32 Geth ¦ rakudo/nom: RT 131898: Fix native closures failing on the second run
18:32 Geth ¦ rakudo/nom:
18:32 Geth ¦ rakudo/nom: On the first call of a native sub we create a new subroutine body and replace
18:32 Geth ¦ rakudo/nom: the original (stored in the routine's $!do attribute). We also set the
18:32 Geth ¦ rakudo/nom: invocation spec so the body will be called instead of the CALL-ME method. This
18:32 Geth ¦ rakudo/nom: invocation spec is shared between an original routine and it's clones. If the
18:32 Geth ¦ rakudo/nom: routine is a clousre, the body won't be shared as only a clone of the routine
18:32 Geth ¦ rakudo/nom: will be actually visible in the lexical scope. So until someone comes up with
18:32 Geth ¦ rakudo/nom: a better idea, we won't create an optimized version for a closure anymore.
18:32 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9a0afcbcec
18:32 nine On a scale from 1 to OMG, how ugly is this workaround? ^^^
18:34 Skarsnik I say blue
18:34 nine samcv: oh, sorry about that. I do need to communicate the nesting level to the precompilation processes and RAKUDO_MODULE_DEBUG seemed like a good vehicle for that.
18:36 Zoffix ninety :)
18:36 samcv so how did you change the functionality of the variable with that commit?
18:36 Zoffix Also, IIRC callsame is much slower than just doing the actual call; which one is it calling self.Mu::clone? Perhaps it's faster to rewrite it to that
18:37 samcv i believe my fix made it so if it was 0 or empty it was false and if it was some other nonempty string then it was true
18:37 nine samcv: well I assume I start out with 1 and can increment it for every level of nested precompilation so I know how far to indent the debug output.
18:37 samcv if you set it to a nonnumber then rakudo won't compile
18:38 samcv i would think that should make it assume a number of '1' instead of breaking everything
18:38 nine samcv: to be honest that feels very much like a DIHWIDT
18:38 samcv DIHWIDT?
18:38 samcv "Doctor, It Hurts When I Do This."
18:38 samcv hmm uhm
18:39 samcv true
18:39 samcv i mean i'm not totally against changing it as long as we get something out of it
18:39 samcv but you should change the comment at the top of the file if we're changing what we accept
18:41 samcv i'm not sure why your change causes that. at least the CRON job started failing immediately after that commit so you could have made another commit that did it? but that's the only commit since mine to the file i did which fixed it back to how it used to be many months ago
18:42 samcv hmm ok it seems maybe in src/Perl6/ModuleLoader.nqp things may have stayed the same but in  src/core/Process.pm it got changed to only accept numbers?
18:43 samcv not sure what the results of your change do, to be honest
18:43 nine I guess I should use $DEBUG instead of $rakudo-module-debug? Will it retain positive numbers other than 1?
18:43 nine Haha, I'm not sure what the nqp::radix business does either :)
18:43 samcv i'm not against using rakudo-modelu-debug
18:43 samcv well i think i wrote this code: https://github.com/rakudo/rakudo/commit/ec7bc25c4#diff-0d8e8c0fd2098a3c0f10f2573bdf2f2aL3
18:44 samcv but it does what the comment shows above it
18:45 nine Meh...we'd still have to duplicate the same here: https://github.com/rakudo/rakudo/commit/ec7bc25c4#diff-665fd069dc7ffe47f7670d1021d722ccR4
18:46 nine And at that point it really feels like just not worth the hassle.
18:46 nine If it's fine by you, I'll just remove the now misleading comment
18:46 samcv yeah it's fine if you change it
18:46 samcv just change the comment
18:47 samcv and then we should be good
18:47 Geth ¦ rakudo/nom: 3e70d44d47 | (Stefan Seifert)++ | src/Perl6/ModuleLoader.nqp
18:47 Geth ¦ rakudo/nom: Remove now misleading comment
18:47 Geth ¦ rakudo/nom:
18:47 Geth ¦ rakudo/nom: The RAKUDO_MODULE_DEBUG environment variable is now used for communicating
18:47 Geth ¦ rakudo/nom: the nesting level to precompilation processes, so it really should always
18:48 Geth ¦ rakudo/nom: be numeric. Would have been more user friendly to accept any truthy value but
18:48 Geth ¦ rakudo/nom: the implementation hassle just seems not worth it any longer.
18:48 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3e70d44d47
18:49 samcv cool thanks :-)
18:50 samcv NeuralAnomaly, status
18:50 NeuralAnomaly samcv, [?] Next release will be in 2 days and 9 hours. Since last release, there are 50 new still-open tickets (4 unreviewed and 1 blockers) and 170 unreviewed commits. See http://perl6.fail/release/stats for details
18:51 samcv m: sub foo(:color(:$colour)) { $colour + 1 }; my $s; for ^1000000 { $s += foo(:color($_)) }; say $s; say now - INIT now
18:51 camelia rakudo-moar 3e70d4: OUTPUT: «Unexpected named argument 'color' passed?  in sub foo at <tmp> line 1?  in block <unit> at <tmp> line 1??»
18:58 Skarsnik how bugs end in this list? x)
19:05 Zoffix Which list? perl6.fail ? It's all of rakudo's currently-open bugs on one page.
19:07 Skarsnik hm, bug with a rakudo tag on rt?
19:07 Skarsnik like I don't see this one https://rt.perl.org/Ticket/Display.html?id=126688
19:08 AlexDaniel by the way, what time of the day people expect the release to happen?
19:08 AlexDaniel for example, releasable6 currently reports slightly different time
19:08 AlexDaniel releasable6: status
19:08 releasable6 AlexDaniel, Next release in 2 days and ?23 hours. 1 blocker. 164 out of 171 commits logged
19:08 releasable6 AlexDaniel, Details: https://gist.github.com/0628c6ffa9c5c00537431037921a0c41
19:09 geekosaur Skarsnik, it was merged into another ticket
19:09 AlexDaniel so one hour ago on Saturday
19:10 lucasb m: sub f(:a(:$b)) {}; f(:a) for ^1000
19:10 camelia rakudo-moar 3e70d4: ( no output )
19:10 Skarsnik how do you see that? for me it's merged with this bug number
19:10 lucasb m: sub f(:a(:$b)) {}; f(:a) for ^10000
19:10 camelia rakudo-moar 3e70d4: OUTPUT: «Unexpected named argument 'a' passed?  in sub f at <tmp> line 1?  in block <unit> at <tmp> line 1??»
19:10 lucasb known issue, right?
19:10 lucasb ^^ samcv showed above
19:11 AlexDaniel Also, can I have access for “Upload the tarball and the signature to http://rakudo.org/downloads/rakudo and https://rakudo.perl6.org/downloads/rakudo/” ?
19:12 geekosaur Skarsnik, I think you just said the same thing. the point is, your ticket is no longer an independent ticket; it will be considered part of the ticket it was merged into
19:12 geekosaur so only that ticket should show up in lists
19:12 AlexDaniel or is somebody willing to upload these for me?
19:13 Zoffix Skarsnik: no, all open bugs. It's there on the main page https://perl6.fail/ You're probably looking at http://perl6.fail/release/stats , which only shows tickets since last release.
19:13 Zoffix AlexDaniel: what's your public key?
19:13 Skarsnik Oh yeah, that was it
19:13 AlexDaniel Zoffix: https://github.com/AlexDaniel.keys
19:14 Zoffix how come it's so short? Mine is like 4 lines long: https://github.com/zoffixznet.keys
19:14 lucasb AlexDaniel: congrats on the commit bit and good luck on shipping the release saturday :)
19:15 AlexDaniel lucasb: thanks!
19:15 AlexDaniel Zoffix: I'm wondering that too… hold on…
19:15 geekosaur Zoffix, yours describes an RSA key with a long bit length; AlexDaniel's is an elliptic curve key
19:15 AlexDaniel right!
19:18 Skarsnik AlexDaniel, did you finish your Benchable stuff to check for memory usage?
19:18 Zoffix AlexDaniel: ok, ssh rakudo@rakudo.org the dirs with tarballs are in /home/rakudo/public_html/downloads/    and ssh rakudo@www.p6c.org the dirs with tarballs are in /var/www/rakudo.perl6.org/public_html
19:18 AlexDaniel Skarsnik: no, no yet. But why are you interested?
19:19 AlexDaniel Skarsnik: because maybe I can do something quickly for you
19:19 Zoffix As for when people expect release: there's no set time.
19:20 Skarsnik To show that run 'echo', 'foo'; take nearly 100Mb now. since 2 release
19:20 AlexDaniel Zoffix: ssh-ed to rakudo@www.p6c.org just fine, but can't get into rakudo@rakudo.org
19:20 Skarsnik https://gist.github.com/Skarsnik/6adfba55ff9b0d179a8ffee923112393
19:21 Skarsnik well not 100Mb, but too much
19:21 AlexDaniel it asks me for password which probably means that my key was not installed right
19:21 Skarsnik even when forcing a gc
19:23 AlexDaniel does it mean that it simply does not support ed25519 somehow?
19:24 Zoffix AlexDaniel: can you try once more? Don't seem I did any changes, but I copy-pasted the line with the key off p6c.org directly to rakudo.org now...
19:25 AlexDaniel Zoffix: nope, doesn't work. Let's try with rsa key maybe, but I'll have to make one now…
19:25 samcv i don't see RAKUDO_MODULE_DEBUG documented anywhere
19:25 samcv and while MoarVM shows a list of respected ENV vars when doing moar --help, perl6 doesn't
19:25 samcv maybe we want a command line option that will show a list of all ENV vars that influence behavior of Perl 6?
19:26 samcv would be a nice option, since it can be a possible security/implementation issue to know what env vars can affect it. and relates directly to the binary itself, and not just the language
19:26 samcv so could make sense to be able to be shown there
19:27 Zoffix $ cat /etc/*release*
19:27 Zoffix CentOS release 5.8 (Final)
19:27 Zoffix no idea if that supports ed25519
19:28 AlexDaniel Zoffix: ok try this one https://github.com/AlexDaniel.keys
19:29 Zoffix AlexDaniel: done. Did it work?
19:31 Zoffix ZofBot: the suspense is killing me!
19:31 ZofBot Zoffix, x = ''; method y { nqp::iseq_s($!x, $!x) } }
19:31 Zoffix Damn. I need to reset its brain. Nothing but code :(
19:32 AlexDaniel Zoffix: I think it does, but I have to do something on my end…
19:33 ZofBot joined #perl6-dev
19:33 Zoffix ZofBot: how are you feeling now?
19:33 ZofBot Zoffix, To open a ticket, email> "rakudobug@perl
19:33 AlexDaniel it says “Authentication failed.”, why?
19:33 Zoffix <3
19:34 Zoffix No idea.
19:34 Zoffix moritz: are you around? AlexDaniel has trouble getting to rakudo@rakudo.org despite my trying to add a key to keys files :/ any ideas?
19:37 Zoffix oh
19:37 AlexDaniel on my end it feels like the key was not installed
19:37 Zoffix AlexDaniel: can you try one more time?
19:38 AlexDaniel doesn't work
19:38 AlexDaniel “Authentication failed.”
19:38 Zoffix :| no idea
19:38 AlexDaniel Zoffix: but what was the issue?
19:38 Zoffix oh wait
19:39 Zoffix AlexDaniel: can you try again? There are stray newlines in the "sha-rsa sig name"
19:39 Zoffix were
19:39 AlexDaniel works
19:39 Zoffix \o/
19:39 AlexDaniel Zoffix: \o/ thanks!
19:39 Zoffix moritz: nevermind :D
19:40 geekosaur something "helpfully" line-wrapped it for you. possibly the browser
19:40 Zoffix :)
19:42 AlexDaniel and ed25519 simply didn't work huh… I remember having this kind of issues with it two years ago or something
19:42 geekosaur if the sshd is old enough then it may not support it
19:42 Zoffix Yeah, ed was on one line. uname -a tells me the install is from 2011... Still sporting perl 5.8.8 >_<
19:44 geekosaur well, the kernel is. but it sounds like a downrev debian and its sshd probably does predate elliptic curve keys
19:44 AlexDaniel Zoffix: hm, maybe NeuralAnomaly should take a break, as it currently reports information which is a bit out of sync from what I do
19:44 AlexDaniel NeuralAnomaly: status
19:44 NeuralAnomaly AlexDaniel, [?] Next release will be in 2 days and 8 hours. Since last release, there are 50 new still-open tickets (4 unreviewed and 1 blockers) and 170 unreviewed commits. See http://perl6.fail/release/stats for details
19:44 AlexDaniel releasable6: status
19:44 releasable6 AlexDaniel, Next release in 2 days and ?23 hours. 1 blocker. 164 out of 171 commits logged
19:44 releasable6 AlexDaniel, Details: https://gist.github.com/1d9f37c5e6bef048fa01dcf792161828
19:45 AlexDaniel or maybe not, just please don't wonder why there are 170 unreviewed commits :)
19:46 NeuralAnomaly joined #perl6-dev
19:47 Zoffix NeuralAnomaly: status
19:47 NeuralAnomaly Zoffix, Use releasable6 bot instead. e.g. try: releasable6: status
19:47 Zoffix NeuralAnomaly: botsnack
19:47 NeuralAnomaly Zoffix, om nom nom nom
19:47 synopsebot6 om nom nom
19:47 Zoffix :)
19:47 Zoffix <3 IRC::Client
19:53 travis-ci joined #perl6-dev
19:53 travis-ci Rakudo build passed. Elizabeth Mattijsen 'Oops, Skarsnik++'
19:53 travis-ci https://travis-ci.org/rakudo/rakudo/builds/265227064 https://github.com/rakudo/rakudo/compare/591f69af1e05...435f7e36c01c
19:53 travis-ci left #perl6-dev
19:56 Skarsnik timotimo, after a rebuild I get the same fail for the spectest Moar is 2017.07.15-g07 ad rakudo 2017.07-69.g5a5
19:59 AlexDaniel Zoffix: actually, I can make it respond to NeuralAnomaly
19:59 AlexDaniel I mean, when somebody says “NeuralAnomaly:”
20:00 AlexDaniel but this works too
20:02 AlexDaniel hm I can do it anyway
20:08 samcv i'm excited for the release
20:09 samcv so i can get my knuth-morris-pratt string search algorithm merged in afterward :-))
20:14 awwaiid joined #perl6-dev
20:16 AlexDaniel Skarsnik: oh, it is also using run… so we need unrestricted bot here, I see
20:17 AlexDaniel Skarsnik: thing is, you can already use Linux::Proc::Statm from within the bot
20:17 Skarsnik yeah but you want to bisect based on this value and not a run time?
20:18 AlexDaniel c: use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm<data>
20:18 committable6 AlexDaniel, ¦use: «Cannot find this revision (did you mean “all”?)»
20:18 AlexDaniel c: HEAD use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm<data>
20:18 committable6 AlexDaniel, ¦HEAD(3e70d44): «988260»
20:18 AlexDaniel so in theory you can just “say get-statm<data> < 424242” and give it to bisectable
20:19 Skarsnik hm that 900Mb what
20:19 * AlexDaniel squints
20:19 AlexDaniel mch: use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm<data>
20:19 committable6 AlexDaniel, ¦2015.12: «78820» ¦HEAD(3e70d44): «163332»
20:19 AlexDaniel mch: use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm<data>
20:19 committable6 AlexDaniel, ¦2015.12: «75144» ¦HEAD(3e70d44): «163336»
20:20 AlexDaniel c: releases use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm<data>
20:20 AlexDaniel Skarsnik: I think it was the precompilation
20:20 Skarsnik precomp was around 200Mb for me I think
20:20 Skarsnik or does it precomp all module?
20:20 committable6 AlexDaniel, https://gist.github.com/f73cc92d8da4d09a9ab4be591e027e3d
20:20 AlexDaniel just this one I think
20:21 AlexDaniel am I… seeing this right?
20:21 AlexDaniel c: releases use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm<data>
20:21 committable6 AlexDaniel, https://gist.github.com/424dee4cd04b8f0dcbf8a31199157368
20:22 Skarsnik mch: use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm-human<data>
20:22 committable6 Skarsnik, ¦2015.12: «75.132 kB» ¦HEAD(3e70d44): «163.336 kB»
20:22 AlexDaniel thing is, I don't know what it does when you point different versions to same precomp files
20:22 Skarsnik I think it redoes it?
20:23 AlexDaniel I don't know, but numbers seem to go down when you try it again
20:23 AlexDaniel Skarsnik: I guess you're right, I'll have to do it properly in benchable…
20:24 Skarsnik what was the test for each release?
20:25 Skarsnik c: releases use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm-human<data>
20:25 committable6 Skarsnik, https://gist.github.com/4ffbb86b8e7802cf80aef4b7195ef6c6
20:25 Skarsnik still head is crazy
20:26 AlexDaniel I thing I know how to bisect this XD
20:26 Skarsnik inline the code of l:p:statm
20:27 AlexDaniel c: 9658dd98c9dd8ec use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm-human<data>
20:27 committable6 AlexDaniel, ¦9658dd9: «163.392 kB»
20:27 AlexDaniel c: 9658dd98c9dd8ec^^ use lib ‘data/all-modules/Skarsnik/p6-linux-proc-statm’; use Linux::Proc::Statm; say get-statm-human<data>
20:27 committable6 AlexDaniel, ¦9658dd98c9dd8ec^^: «85.620 kB»
20:27 AlexDaniel there
20:28 AlexDaniel jnthn: do you have any thoughts on this? ?
20:28 AlexDaniel Skarsnik: I bisected this by running bisectable as many times as it was needed
20:28 AlexDaniel Skarsnik: it feels like in the end the right stuff was precomped and I got to this stable result
20:29 Skarsnik m: say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5]
20:29 camelia rakudo-moar 3e70d4: OUTPUT: «34066?»
20:30 AlexDaniel oh
20:30 AlexDaniel nice
20:30 Skarsnik m: sub getpagesize is native(Str) returns int32 { * }; say getpagesize();
20:30 camelia rakudo-moar 3e70d4: OUTPUT: «5===SORRY!5=== Error while compiling <tmp>?Can't use unknown trait 'is native' in a sub declaration.?at <tmp>:1?    expecting any of:?        rw raw hidden-from-backtrace hidden-from-USAGE?        pure default DEPRECATED inlinable nodal? …»
20:30 Skarsnik m: use NativeCall; sub getpagesize is native(Str) returns int32 { * }; say getpagesize();
20:30 camelia rakudo-moar 3e70d4: OUTPUT: «4096?»
20:30 AlexDaniel bisect: say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] < 100000
20:30 bisectable6 AlexDaniel, On both starting points (old=2015.12 new=3e70d44) the exit code is 0 and the output is identical as well
20:30 bisectable6 AlexDaniel, Output on both points: «True»
20:30 Skarsnik m: say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] * 4096
20:30 camelia rakudo-moar 3e70d4: OUTPUT: «140095488?»
20:30 AlexDaniel c: releases say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5]
20:31 committable6 AlexDaniel, https://gist.github.com/2fd4039561080668f7f85393a3d282c8
20:31 Skarsnik You need the pagesize
20:31 Skarsnik it depend on your system
20:31 AlexDaniel bisect: say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] < 30000
20:31 bisectable6 AlexDaniel, Bisecting by output (old=2015.12 new=3e70d44) because on both starting points the exit code is 0
20:31 bisectable6 AlexDaniel, bisect log: https://gist.github.com/5cf477671560bad21251207895708d94
20:31 bisectable6 AlexDaniel, There are 3 candidates for the first “new” revision. See the log for more details
20:31 AlexDaniel it's the same result
20:32 Skarsnik m: say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] * 4096 / 1024;
20:32 camelia rakudo-moar 3e70d4: OUTPUT: «136452?»
20:32 Skarsnik hm, that still a lot
20:32 Skarsnik 136mb
20:33 AlexDaniel ok let's bisect your wget code. Changes are it's the same thing
20:33 Skarsnik c: release say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] * 4096 / 1024;
20:33 committable6 Skarsnik, ¦release: «Cannot find this revision (did you mean “releases”?)»
20:33 Skarsnik c: releases say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] * 4096 / 1024;
20:33 Skarsnik you can put echo "plop"
20:34 committable6 Skarsnik, https://gist.github.com/19a3389f02aba56f13d75dfb297c61a2
20:34 Skarsnik I think it's the same
20:34 Skarsnik yeah HEAD is big
20:34 Skarsnik in this
20:35 AlexDaniel Skarsnik: is it identically bad with qqx, shell and run?
20:36 Skarsnik c: releases sub mem { say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] * 4096 / 1024 }; mem(); run 'yes'; mem();
20:36 Skarsnik Yeah, was the same
20:36 committable6 Skarsnik, https://gist.github.com/e5a93da89dd32dcb11d429e36ad4678f
20:36 Skarsnik damn
20:37 AlexDaniel it's ok I can do it here
20:37 AlexDaniel this is what I'm going to try: https://gist.github.com/AlexDaniel/4e97dcb0349ec4bac7846719b2b481a3
20:39 Skarsnik there is nqp::gc_force I think to force a gc pass
20:40 AlexDaniel Skarsnik: perhaps join #whateverable if you're interested to see it in action
21:38 pmurias joined #perl6-dev
21:39 pmurias if I find a serious security hole in rakudo what should I do besides fixing it?
21:40 Geth ¦ nqp: b15923522c | pmurias++ | src/vm/js/nqp-runtime/multicache.js
21:40 Geth ¦ nqp: [js] Stop caching captures with named arguments
21:40 Geth ¦ nqp:
21:40 Geth ¦ nqp: The partial way we did was causing problems
21:40 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/b15923522c
21:40 Geth ¦ nqp: dd25a92463 | pmurias++ | 3 files
21:40 Geth ¦ nqp: Fix serious security hole
21:40 Geth ¦ nqp: review: https://github.com/perl6/nqp/commit/dd25a92463
21:40 Skarsnik repport it?
21:42 pmurias when run in a directory perl6-m executes code from the blib subdirectory there
21:42 [Coke] pmurias: theoretically, there is a mailing list for that that ends up in a ticket queue.
21:43 [Coke] which would give us a chance to remediate the issue before publishing it.
21:44 jnthn AlexDaniel: The new spesh data collection initially (after that commit) logged closures, which could end up keeping a lot of stuff alive. That was later resolved, though. If HEAD is still costly, not sure.
21:44 pmurias [Coke]: you could easily find the issue from the commit
21:44 AlexDaniel jnthn: RT #131914 and RT #131915
21:44 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131914
21:44 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131915
21:45 AlexDaniel jnthn: personally, I don't care about 131915 as much, but 131914 is a bit unfortunate :)
21:45 pmurias if you run perl6-m -e '123' in a say a random github repo clone it will execute the hostile bytecode from the repo
21:45 AlexDaniel jnthn: I think our mistake is not including numbers for HEAD… yes. One second
21:45 jnthn It's no surprise whatsoever that Proc costs as much as Proc::Async now :)
21:45 jnthn Or more
21:46 AlexDaniel still LTA a bit
21:46 pmurias jnthn: I removed code from nqp that makes perl6-m execute code from $CWD
21:46 jnthn pmurias: Alright, thanks. Well, it's disclosed now, so I guess all folks can do is upgrade...
21:47 AlexDaniel jnthn: ¦9658dd98c9dd8ec^^: «58628» ¦9658dd9: «138220» ¦HEAD(3e70d44): «136436»
21:47 jnthn Should probably include a prominent notice about it in the release that's a couple of days away.
21:47 AlexDaniel that's this code: say "/proc/$*PID/statm".IO.lines[0].split(/\s/)[5] * 4096 / 1024
21:47 [Coke] and make sure there's an RT for it if there isn't already.
21:47 [Coke] pmurias++
21:48 jnthn Odd
21:48 jnthn /usr/bin/time perl6-m -e 'sleep 2'
21:48 jnthn 0.11user 0.05system 0:02.22elapsed 7%CPU (0avgtext+0avgdata 70524maxresident)k
21:48 AlexDaniel pmurias: can you create a ticket?
21:48 pmurias AlexDaniel: no
21:48 jnthn 70 is quite a lot less than 136
21:49 pmurias AlexDaniel: I mean I didn't create one
21:49 pmurias AlexDaniel: what should a ticket mention
21:49 jnthn Wonder what statm is reporting on
21:49 AlexDaniel [Coke]: ? ?
21:50 Skarsnik resident   (2) resident set size
21:50 Skarsnik (same as VmRSS in /proc/[pid]/status)
21:50 Skarsnik shared     (3) number of resident shared pages (i.e., backed by a file)
21:50 Skarsnik (same as RssFile+RssShmem in /proc/[pid]/status)
21:50 Skarsnik text       (4) text (code)
21:50 Skarsnik lib        (5) library (unused since Linux 2.6; always 0)
21:50 Skarsnik data       (6) data + stack
21:50 Skarsnik damn
21:50 Skarsnik 5 is data (the doc start at 1)
21:51 [Coke] At some point, we should have the vulnerability described so that we can write a test for it. I don't know how much detail we want to start with in a public-facing ticket. some guidance from mst or p5 folk or people who have dealt with this in other OS projects would be nice.
21:51 [Coke] (if we knew what we were doing, we'd have already advertised the process)
21:51 [Coke] (e.g. I just tried to duplicate this with a recentish perl6 and cannot)
21:52 ugexe with PERL6LIB="" we didnt do anything special
21:52 pmurias [Coke]: you mean you can't duplicate the vulnerability I found
21:52 pmurias ?
21:54 [Coke] pmurias: with the one line description you mentioned? right.
21:54 [Coke] if there's steps to reproduce, I didn't see those.
21:54 ugexe its just dot @INC
21:54 ugexe same thing
21:55 ugexe https://wiki.gentoo.org/wiki/Project:Perl/Dot-In-INC-Removal # same concept
21:55 [Coke] so, why don't we try to follow what we'd want in a new ticket and create an item in the security queue. One sec, let me find that email addy.
21:56 travis-ci joined #perl6-dev
21:56 travis-ci NQP build passed. pmurias 'Fix serious security hole'
21:56 travis-ci https://travis-ci.org/perl6/nqp/builds/265341823 https://github.com/perl6/nqp/compare/99abffd7f74f...dd25a9246389
21:56 travis-ci left #perl6-dev
21:57 [Coke] please open a security ticket by emailing to "perl6-security-report@perl.org"
21:57 ugexe https://github.com/perl6/roast/commit/10cf641e28dd7ba970082b36ece2ed2519fcf3a9 # here is a test for a similar flaw at perl6 level
21:57 AlexDaniel .tell stmuk you may be interested in this discussion: https://irclog.perlgeek.de/perl6-dev/2017-08-16#i_15027543
21:57 yoleaux AlexDaniel: I'll pass your message to stmuk.
21:58 [Coke] moritz & I have access to that today, so we can do a run through about how things would work from there.
21:59 ugexe from 'Avoid magic $cwd in module search path RT #130883 '
21:59 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=130883
22:01 [Coke] so, I'm confused I guess - this is a new vulnerability, or one that was fixed and we just want to advertise the fix?
22:01 [Coke] if it's pre-existing and reported, don't bother opening a new ticket. If it's new, then the exercise is probably still worth it.
22:01 * [Coke] commutes.
22:01 ugexe it gives prior art for how such a ticket might be handled, and a model to test it
22:01 pmurias [Coke]: it's old pre-exisiting an fixed
22:01 pmurias * and
22:02 pmurias [Coke]: there are some details to reproduce it which I'll mention in the ticket I'm writing
22:02 [Coke] ah, then ignore my new ticket crap. Use that for -new- security vulnerabilities. :)
22:04 pmurias [Coke]: so should I explain the details on irc?
22:04 pmurias [Coke]: I don't think it was reported
22:09 timotimo [Coke]: the profiler will grab a template from a relative path if it can (it assumes it might be in the nqp repository) - is this security-relevant or just unfortunate?
22:11 ugexe its only a problem if you are running something with elevated privs that will load something from somewhere that someone with less privs can place code (like /tmp)
22:11 pmurias [Coke]: I sent the mail to perl6-security-report
22:12 ugexe perl community seemed pretty split on if perl should fix dot @INC or if debian should just be more careful
22:13 ugexe e.g. i dont think the security ramifications are huge here
22:14 pmurias if you download a repo from github that you don't trust you can't run any Perl 6 programs in that directory
22:14 ugexe that is always the case
22:15 timotimo ugexe: well, it does generate a html page that the user then probably opens right away, so could be a way to abuse a browser bug. if the profiler result is then hosted somewhere it could steal cookies and stuff
22:15 ugexe it has to have moarvm bytecode, which i assume also has to be generated specifically for your env/rakudo
22:16 pmurias ugexe: do you expect cd ~/untrusted-directory;perl6-m -e 'say "hi"' to hijack your system?
22:16 ugexe m: use Test:from<NQP>;
22:16 camelia rakudo-moar 3e70d4: OUTPUT: «===SORRY!===?While looking for 'Test.moarvm': no such file or directory?»
22:16 ugexe i dont expect a Test.moarvm from some repo to run on my local system
22:18 pmurias perl6-m would just load the blib/Perl6/Ops.moarvm from the $CWD
22:19 ugexe oh, it autoloads modules, not just sets up a lib that can be hijacked?
22:20 pmurias ugexe: yes
22:20 ugexe still, it would have to be precompiled already as well yes?
22:20 timotimo ugexe: actually, you can build a .moarvm file to rely on no other files
22:20 timotimo or at least it should be possible
22:20 ugexe doesn't its location on the file system matter?
22:21 ugexe or what built in?
22:21 ugexe built it^
22:22 pmurias you can avoid serialization dependencies in a custom built .moarvm
22:24 pmurias I noticed the exploit because perl6-m was annoying me by loading bytecode from a different checkout
22:36 ugexe ive seen it in gdb output but I never thought it could be exploited as such
22:36 ugexe or maybe strace
22:40 ugexe stat("./NQPCORE.setting.moarvm", 0x7ffd00da2450) = -1 ENOENT (No such file or directory)
22:40 ugexe stat("blib/NQPCORE.setting.moarvm", 0x7ffd00da2450) = -1 ENOENT (No such file or directory)
22:40 ugexe stuff like that
22:52 travis-ci joined #perl6-dev
22:52 travis-ci Rakudo build failed. Stefan Seifert 'Remove now misleading comment
22:52 travis-ci https://travis-ci.org/rakudo/rakudo/builds/265279497 https://github.com/rakudo/rakudo/compare/9a0afcbcec84...3e70d44d47d1
22:52 travis-ci left #perl6-dev
22:52 BenGoldberg joined #perl6-dev
22:52 buggable [travis build above] ? Did not recognize some failures. Check results manually.
22:53 ugexe While looking for 'Perl6/ModuleLoader.moarvm': no such file or directory
22:53 ugexe it must have pulled in that nqp commit
22:55 ugexe now i remember why i left this alone :)
22:57 BenGoldberg joined #perl6-dev
23:02 ugexe pmurias: that breaks rakudo for some reason
23:17 pmurias ugexe: I'll grab some sleep and if nobody fixes rakudo get round to it tomorrow morning
23:18 ugexe its in the Makefile. it needs the nqp equivilent of -I. or -Iblib/
23:18 ugexe ...but i dont know what that is
23:20 ugexe there we go. --module-lib
23:26 Zoffix .tell [Coke] good news! I got paid :)
23:26 yoleaux Zoffix: I'll pass your message to [Coke].
23:26 Zoffix Spent it all in one place on a shiny new toy :D https://twitter.com/zoffix/status/897962614696882182
23:46 [Coke] Zoffix: (paid) glad to hear it, thanks for your work!
23:46 yoleaux 23:26Z <Zoffix> [Coke]: good news! I got paid :)
23:47 stmuk_ joined #perl6-dev
23:59 samcv yay for getting paid

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary