Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
00:16 MasterDuke joined, MasterDuke left, MasterDuke joined
MasterDuke uh, does --target=parse (even for -e '') work for anybody? 00:54
yoleaux 7 Apr 2019 18:11Z <Kaiepi> MasterDuke: no it still segfaults
7 Apr 2019 18:11Z <Kaiepi> MasterDuke: er, trace trap
MasterDuke on two different systems at HEAD, it's just chewing up 100% of a core and ram used keeps growing 00:56
--target=optimize works fine
committable6: 2018.12 say run <perl6 --target=optimize -e ''> 01:03
committable6 MasterDuke, gist.github.com/56903b7d96c11d6f01...8eb0ff22ee
MasterDuke committable6: 2018.12 say run <perl6 --target=parse -e ''>
hm, its default timeout may be too long for this... 01:06
committable6 MasterDuke, ¦2018.12: ««timed out after 40 seconds» «exit signal = SIGHUP (1)»» 01:08
MasterDuke committable6: 2018.08 say run <perl6 --target=parse -e ''> 01:09
committable6 MasterDuke, gist.github.com/158ea0f9d9ce9dd87b...df97cd7923
MasterDuke committable6: 2018.09 say run <perl6 --target=parse -e ''>
committable6 MasterDuke, gist.github.com/bbaf0dabd274fc316f...1b9053371d
MasterDuke committable6: 2018.10 say run <perl6 --target=parse -e ''>
committable6 MasterDuke, gist.github.com/78830f5e024c21614b...ab8e32e448
MasterDuke committable6: 2018.11 say run <perl6 --target=parse -e ''>
ok, looks like it happened sometime between 2018.10 and 2018.11 01:10
committable6 MasterDuke, ¦2018.11: ««timed out after 40 seconds» «exit signal = SIGHUP (1)»» 01:11
02:03 epony left 03:08 vrurg left 03:24 epony joined 03:38 AlexDani` joined 03:42 AlexDaniel left 04:29 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined
AlexDaniel bisectable: old=2018.10 new=2018.11 say run <perl6 --target=parse -e ''> 04:52
worth a try :)
sooooo…? 04:55
bisectable6: help
04:55 bisectable6 left 04:58 bisectable6 joined 04:59 bisectable6 left 05:04 bisectable6 joined 05:18 evalable6 left, committable6 left, bisectable6 left 05:20 bisectable6 joined 05:22 evalable6 joined, ChanServ sets mode: +v evalable6
AlexDaniel let's try again 05:23
05:23 committable6 joined
AlexDaniel bisectable: old=2018.10 new=2018.11 say run <perl6 --target=parse -e ''> 05:23
… what 05:24
05:26 bisectable6 left 05:27 bisectable6 joined
AlexDaniel bisectable: old=2018.10 new=2018.11 start { sleep 5; exit 1 }; say run <perl6 --target=parse -e ''> 05:31
:|
aaah actually 05:32
05:33 shareable6 left
bisectable6 AlexDaniel, Bisecting by exit code (old=2018.10 new=2018.11). Old exit code: 0 05:33
05:33 reportable6 left, reportable6 joined
bisectable6 AlexDaniel, bisect log: gist.github.com/d5a0aa39c2773cb485...87fa160f26 05:34
AlexDaniel, (2018-10-27) github.com/rakudo/rakudo/commit/46...96034408c8
AlexDaniel c: 46ef0ea08cae96^,46ef0ea08cae96 start { sleep 5; exit 1 }; say run <perl6 --target=parse -e ''> 05:35
05:36 shareable6 joined, ChanServ sets mode: +v shareable6 05:37 AlexDaniel left 05:48 AlexDaniel joined
committable6 AlexDaniel, gist.github.com/fabb5bd36bec34e81f...a344854ccc 05:50
06:37 patrickb joined
patrickb releasable6: status 06:37
yoleaux 8 Apr 2019 18:55Z <brrt> patrickb: yes, I have seen it, I couldn't really do anything with it
8 Apr 2019 18:55Z <brrt> patrickb: actually I had not 06:38
releasable6 patrickb, Next release in ≈11 days and ≈12 hours. 12 blockers. 0 out of 172 commits logged
patrickb, Details: gist.github.com/1a5d67397bad04a180...413dc535e8
06:51 ufobat_ left 07:14 tobs` joined 07:15 tobs left, tobs` is now known as tobs 07:16 |Tux| left 07:17 |Tux| joined
lizmat Files=1254, Tests=87994, 386 wallclock secs (20.90 usr 6.54 sys + 2759.31 cusr 231.45 csys = 3018.20 CPU) 07:31
~10 seconds faster :-) 07:32
AlexDaniel that's awesome 07:41
timotimo that's neat 07:50
08:06 pmurias joined
jnthn 10 seconds wallclock, but more CPU, yes? :) 09:08
(As in, the saving in CPU is larger than that, because it's running in parallel.) 09:09
timotimo no, the CPU time is also at a low point compared to the last few days 09:29
for as far back as my scroll buffer goes
jnthn Ah yes, yesterdays was 3059.02 CPU 09:31
m: say 3018 / 3059
evalable6 0.986597
jnthn Hmm, not so impressive as what I got locally
timotimo it was even 3028 a few days ago 09:32
jnthn But still, nice.
timotimo aye
jnthn Not bad for just changing a number :)
timotimo we need a mode where the test file runs five times start to finish so that spesh perhaps has a chance to kick in 09:33
then we can measure if the cpu time goes up 5x or less
(also, hooray, half an hour spec test time again!)
Geth rakudo/more-precise-return-tracking: 165f918403 | (Jonathan Worthington)++ | 2 files
Better tracking of what needs return handlers

So that we can produce code with a lot less of them. This can give a speedup since it results in code that's easier to analyze and slightly more compact.
09:42
jnthn Sticking that in a branch for later digging; it triggers some kind of spesh bug 09:45
09:49 AlexDaniel left, AlexDaniel joined 09:57 AlexDaniel left, AlexDaniel joined 10:06 AlexDaniel left
Geth nqp: 34bfa2c71e | (Paweł Murias)++ | 2 files
[js] Fix nqp::uname and make it call the uname command
11:03
nqp: 85ec713c6c | (Paweł Murias)++ | src/vm/js/nqp-runtime/browser.js
[js] Add a placeholder nqp::uname in the browser
nqp: 74d95cb65f | (Paweł Murias)++ | src/vm/js/const_map.nqp
[js] Add UNAME constants
11:09 AlexDaniel joined 12:02 bloatable6 left, bloatable6 joined, ChanServ sets mode: +v bloatable6
Geth rakudo: 8fc53ec263 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
WIP: re-implementation of sprintf()

For now available as "zprintf()" to allow for easier testing.
13:03
13:14 pmurias left 13:16 lucasb joined 13:29 vrurg joined 13:42 pmurias joined
Geth rakudo/more-precise-return-tracking: 451b864b00 | (Jonathan Worthington)++ | lib/Test.pm6
Avoid hack involving early return in Test.pm6

Instead, implement it with a control exception. This means that we could lift the restriction on needing a `Callable` that can be returned from in this place too; unfortunately, we have spectests that make sure it fails, so simply lifting the restriction will cause failures in the spectest for released language versions. For now, just preserve the existing behavior, but in a way that won't break our more accurate tracking of which things need return handlers.
13:57
Guest16965 lizmat: the original sprintf implementation is incomplete, is the new one better, i.e. supports more formatting flags? 14:05
14:24 ctilmes left
Geth rakudo/more-precise-return-tracking: 84b0e38048 | (Jonathan Worthington)++ | lib/Test.pm6
Avoid hack involving early return in Test.pm6

Instead, implement it with an exception. This means that we could lift the restriction on needing a `Callable` that can be returned from in this place too; unfortunately, we have spectests that make sure it fails, so simply lifting the restriction will cause failures in the spectest for released language versions. For now, just preserve the existing behavior, but in a way that won't break our more accurate tracking of which things need return handlers.
15:14
rakudo/more-precise-return-tracking: 9072278092 | (Jonathan Worthington)++ | src/core/Mu.pm6
Fix .&fail after better return handler tracking

Also, the fact this was needed points to us missing optimizing the
  $foo.&bar case into &bar($foo) rather than going through the dispatch
helper.
rakudo/more-precise-return-tracking: 69c535ecfb | (Jonathan Worthington)++ | src/Perl6/Grammar.nqp
Retain current return from default behavior

Currently, `sub { sub foo($x = return 42) { } say foo }` sees the return actually return from the enclosing sub! While that's probably a bug, unfortunately a spectest exists specifying it this way. So, retain the semantics that the test suite wants for now.
15:29 pmurias left 15:32 pmurias joined 15:35 patrickb left
Geth specs: pmqs++ created pull request #124:
tell: use the term "bytes" instead of "octets"
15:44
16:05 pmurias left
lizmat Guest16965: for now, it is trying to do the same as the current implementation, but to be (much) faster on repeated calls with the same format 16:05
since it is all written in Perl 6, adding new formatting flags should be pretty straightforward 16:06
Geth specs: d0393d762d | (Paul Marquess)++ (committed using GitHub Web editor) | S32-setting-library/IO.pod
tell: use the term "bytes" instead of "octets"

Make "tell" and "seek" use the same unit.
  github.com/perl6/specs/issues/85
16:08
specs: 8d471152f4 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | S32-setting-library/IO.pod
Merge pull request #124 from pmqs/master

tell: use the term "bytes" instead of "octets"
16:10 MasterDuke left, vrurg left 16:12 vrurg joined 16:13 vrurg left, vrurg joined 16:21 ggoebel joined 16:30 Kaiepi left 16:31 Kaiepi joined
timotimo lizmat: anycontingency for when some code keeps generating more and more different format strings? 16:50
this isn't something you should be doing, but for example for ^100_000 { sprintf "number $_: %s", "lol" } will give 100k different format strings, technically
Geth rakudo: 12a094ad5d | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Streamline flag handling

Since we don't enforce any order in the flags, it feels like we can simplify flag checking significantly by just storing the flags in a single Match, and then just use .contains to see whether a flag is set.
16:54
lizmat timotimo: yeah, I'm aware of that eventuality. I was thinking of adding a maximum to the number of keys in FORMATS and deleting the first from the hash iterator if that number is exceeded 16:55
timotimo: but in real situations, I don't think this will occur so much 17:02
timotimo: so it's more about preventing a DOS rather than anything else
Geth rakudo: 7201d89e5a | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Make sure we only keep 100 formats around

To prevent a DOS attack by eating memory by generating many, many different format specifications.
17:04
17:06 llfourn left
Geth rakudo/more-precise-return-tracking: 2eb93b2d7d | (Jonathan Worthington)++ | 2 files
Don't emit unrequired init code for natives

When we assign to them immediately, then we don't need to retain the initial zeroing out. Shaves a few cycles off all the things that use natively typed lexicals.
17:21
rakudo/more-precise-return-tracking: 286aa29e2a | (Jonathan Worthington)++ | src/core/Array.pm6
Simplify array fast-path checking

We need to evaluate all the pieces anwyay; this means we get less control flow in the resulting generated code. (We do trade off doing some evaluations, but the common case is that all of these are true.)
rakudo/more-precise-return-tracking: a21cf6ae0b | (Jonathan Worthington)++ | src/Perl6/Metamodel/BOOTSTRAP.nqp
Initialize $!reified/$!todo to a type object

Which means spesh turns it into something simpler; together with a JIT improvement in MoarVM, we save over 300 bytes off the machine code that is produced for ASSIGN-POS.
Kaiepi can someone running oracle's jdk run this and tell me what its output looks like? hastebin.com/kimuvucini.cs 17:42
vrurg Kaiepi: I have jdk, but never used java. How do I run this? 17:44
Geth rakudo: 29107b172d | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Fix various issues with order of flag checks

Also, if there is no size specified, we don't need to check for anything wrt to justification or padding.
17:45
Kaiepi vrurg, save it as Test.java, then run javac Test.java, then java Test 17:46
vrurg Kaiepi: Found myself. ;) 17:47
lizmat m: dd sprintf("%#o",65) # shouldn't this need to be 0o101 ??
evalable6 "0101"
vrurg I'll make hastebin.com/ohaxasejis.coffeescript
Kaiepi and you're sure it's oracle's jdk, not openjdk? 17:48
vrurg It's macOS and I was downloading from Oracle.
javac 1.8.0_201 17:49
Kaiepi alright
it matches openjdk's output, perfect
actually wait, what i was planning to do with this probably isn't the best idea, which is to allow SO_SNDTIMEO/SO_RCVTIMEO support for getsockopt/setsockopt by adding 1 and 2 to whatever the highest value is to get their values for the SockOpt enum 17:51
i'm not sure what the best way to write this is 17:52
Geth rakudo: 972a242f9a | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Add ssupport for "o" and "x" formats

By generalizing the "b" format handling. This deviates "o" format handling from the current implementation, which I deem to be in error. See R#2830
18:11
synopsebot R#2830 [open]: github.com/rakudo/rakudo/issues/2830 dd sprintf("%#o",65) # is 0101, shouldn't this be 0o101 ??
dogbert17 lismat: FWIW both P5 and Ruby returns 0101 18:17
gah 18:18
lizmat: FWIW both P5 and Ruby returns 0101
lizmat dogbert17: but does that make it right ? 18:19
dogbert17 that's how it seems to be specced, "For o, x, X types, the text 0, 0x, 0X, respectively, is prepended to non-zero numbers" en.wikipedia.org/wiki/Printf_format_string 18:20
lizmat m: use MONKEY; dd EVAL sprintf("%#x",65) 18:23
evalable6 65
lizmat m: use MONKEY; dd EVAL sprintf("%#b",65)
evalable6 65
lizmat m: use MONKEY; dd EVAL sprintf("%#o",65)
evalable6 Potential difficulties:
Leading 0 has no meaning. If you meant to create an octal numb…
lizmat, Full output: gist.github.com/5f7896da3fe0bfae26...e4f5298463
lizmat feels to me the output of sprintf("%#o"...) should roundtrip 18:24
it does so in C, Perl 5 and Ruby, but not so in Perl 6
also, usually octal literals are used for things like chmod() 18:26
but in Perl 6 you *also* have to specify them with 0o, like chmod(0o644, $file) 18:27
dogbert17 that complicates thing 18:37
*things
Geth rakudo: 1cad10b76e | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Revert "o" format to Perl 5 / C / Ruby behaviour

Which I think is wrong, but here you go.
18:38
dogbert17 lizmat: possibly insane suggestion but perhaps you could introduce another specifier for outputting P6 octal values, e.h. O instead of o ? 18:40
Kaiepi so i'm writing support for SO_SNDTIMEO/SO_RCVTIMEO for my setsockopt/getsockopt pullreq 18:53
i ran into a problem on the jvm though
async sockets allow you to set a separate timeout for sending/receiving data, but sync sockets don't, they just use one timeout for both
should i allow having separate read/write timeouts with async sockets or make it follow the same behaviour as sync sockets? 18:54
vrurg Kaiepi: I would allow it. 18:58
Kaiepi ok good, that's what i already wrote lol 19:01
Geth rakudo: 4ae023c717 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Introduce "O" format for Perl 5 semantics

The "o" format conforms to the way "x" and "b" are rendered. dogbert17++ for the suggestion.
19:30
19:44 lucasb left
dogbert17 lizmat: cool, just wondering if 'o' should be P5 style and 'O' P6 style instead? 19:45
bartolin lizmat: I think about adding a return type --> Nil to method !RE-INITIALIZE here: github.com/rakudo/rakudo/blob/4ae0...y.pm6#L281 This seems to help with two spectest failures in S02-types/array-shapes.t on the JVM backend. Do you think such a change would be ok moar, too? (There are no spectest failures on moar, at least.) 19:48
lizmat dogbert17: but then the O format would generate a 0o123 string 19:50
bartolin: looks ok to me 19:51
bartolin lizmat: thanks!
Geth rakudo: af7b833f0d | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Make sure that "x" creates lowercase hex characters
19:52
lizmat bartolin: good catch!
dogbert17 lizmat: yes, and 'o' would create 0123, just like P5/Ruby/C etc 19:53
bartolin roast++ :)
lizmat dogbert17: will think about it... it feels wrong to me to perpetuate an inconsistency if it is not necessary 19:55
dogbert17 lizmat: sounds like a plan, sorry for the bikeshedding :) 19:57
lizmat no pb... glad to have someone look at my code :-)
Geth rakudo: 417fa68e9f | usev6++ | src/core/ShapedArray.pm6
Don't return internal value from !RE-INITIALIZING

This fixes internal errors for the JVM backend for code like
   'my @c[2;2] .= new(:shape(2, 2), <a b>, <c d>)'
20:02
lizmat bartolin++
Geth roast: 07ad1f284b | usev6++ | S02-types/array-shapes.t
[JVM] Unfudge now passing tests

Fixed with github.com/rakudo/rakudo/commit/417fa68e9f
20:04
lizmat m: dd sprintf(q/%#X--%2$d/,0xFF) # feels to me this should die
evalable6 "0XFF--0"
lizmat m: dd sprintf(q/%#X--%0$d/,0xFF) # this is definitely LTA 20:05
evalable6 (exit code 1) This representation (Null) does not support elems (for type VMNull)
in block <unit> at /tmp/Z2_ibreN2O line 1
20:35 Kaiepi left, Kaiepi joined 20:37 lucasb joined, Kaiepi left, Kaiepi joined
dogbert17 lizmat: in your first example P5 prints the same result while Ruby dies with an ArgumentError 20:43
Ruby dies, ArgumentError, in the second example as well 20:46
20:47 ggoebel left
lizmat dogbert17++ 20:48
20:59 Kaiepi left 21:01 Kaiepi joined 21:02 Kaiepi left, Kaiepi joined 21:12 ggoebel joined 21:15 llfourn joined 21:22 vrurg left 21:24 vrurg joined
Geth rakudo: 745053891b | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Add support for the "N$" index feature

TIL you can actually access specific arguments in your format string.
21:54
rakudo: d000a12557 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Fix issue with "u"

Caused by running value() in a scope that didn't have a valid $/
22:06
rakudo: dc02335dd9 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/Sprintf.pm6
Make sure the EVAL doesn't show in any backtraces
22:16
lizmat and that concludes my hacking for today
Geth roast: tony-o++ created pull request #527:
add tests of rounding methods (adverbs for basic rounding methods) se…
22:25
rakudo: tony-o++ created pull request #2831:
see:rakudo/rakudo#2826; add HALF-[UP|DOWN|EVEN|ODD] | [TO|FROM]-ZERO …
22:35
synopsebot RAKUDO#2826 [open]: github.com/rakudo/rakudo/issues/2826 [math] Rounding behaviors
22:43 travis-ci joined
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Introduce "O" format for Perl 5 semantics 22:43
travis-ci.org/rakudo/rakudo/builds/517949480 github.com/rakudo/rakudo/compare/1...e023c717ce
22:43 travis-ci left 23:52 travis-ci joined
travis-ci Rakudo build passed. usev6 'Don't return internal value from !RE-INITIALIZING 23:52
travis-ci.org/rakudo/rakudo/builds/517963829 github.com/rakudo/rakudo/compare/a...7fa68e9f9f
23:52 travis-ci left