BenGoldberg m: use MONKEY; my $m = 'foo'; my $p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say $p[42]; 00:41
camelia Could not instantiate role '<anon|71855152>':
Too few positionals passed; expected 2 arguments but got 1
in any protect at gen/moar/stage2/NQPCORE.setting line 1033
in block <unit> at <tmp> line 1
BenGoldberg Why is the error comming from the setting?
travis-ci Rakudo build passed. Zoffix Znet 'Fix inability of `make`ing type objects 00:46
travis-ci.org/rakudo/rakudo/builds/272465957 github.com/rakudo/rakudo/compare/3...d105b8b620
ugexe i did what jnthn said to do and it appears to fix the issue 02:20
BenGoldberg m: use MONKEY; my $m = 'foo'; my $p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say $p; 03:00
camelia (<anon|63922400>)
BenGoldberg m: use MONKEY; my $m = 'foo'; my $p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say $p.^paramaterize: 42;
camelia No such method 'paramaterize' for invocant of type 'Perl6::Metamodel::ParametricRoleHOW'. Did you mean 'parameterize'?
in block <unit> at <tmp> line 1
BenGoldberg m: use MONKEY; my $m = 'foo'; my $p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say $p.^parameterize: 42;
camelia (<anon|68890224>[Int])
BenGoldberg Oooh.
m: use MONKEY; my $m = 'foo'; my \p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say p[42]; 03:01
camelia Could not instantiate role '<anon|80811840>':
Too few positionals passed; expected 2 arguments but got 1
in any protect at gen/moar/stage2/NQPCORE.setting line 1033
in block <unit> at <tmp> line 1
BenGoldberg m: use MONKEY; my $m = 'foo'; constant p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say p[42];
camelia Use of uninitialized value $m of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
(<anon|82951936>[Int])
in block at <tmp> line 1
BenGoldberg m: use MONKEY; constant p = do { my $m = 'foo'; EVAL qq!role :: [\$value] \{ method $m \{ \$value } }! }; say p[42];
camelia (<anon|64249616>[Int])
BenGoldberg m: use MONKEY; my $m = 'foo'; my $p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say $p.^paramaterize(42).foo; 03:04
camelia No such method 'paramaterize' for invocant of type 'Perl6::Metamodel::ParametricRoleHOW'. Did you mean 'parameterize'?
in block <unit> at <tmp> line 1
BenGoldberg m: use MONKEY; my $m = 'foo'; my $p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say $p.^parameterize(42).foo;
camelia 42
BenGoldberg m: use MONKEY; my $m = 'foo'; my $p = EVAL qq!role :: [\$value] \{ method $m \{ \$value } }!; say $p[42].foo; 03:05
camelia Could not instantiate role '<anon|67928256>':
Too few positionals passed; expected 2 arguments but got 1
in any protect at gen/moar/stage2/NQPCORE.setting line 1033
in block <unit> at <tmp> line 1
travis-ci Rakudo build passed. Jonathan Worthington 'Fix thread safety of "foo{$x}bar" 03:21
travis-ci.org/rakudo/rakudo/builds/272466720 github.com/rakudo/rakudo/compare/d...454b03cc3e
Geth rakudo: ashgti++ created pull request #1152:
Correcting IO::Notification.watch-path event paths for individual files
04:48
roast: ashgti++ created pull request #308:
Adding new tests around watching files
04:49
[Tux] This is Rakudo version 2017.08-87-ge7a588060 built on MoarVM version 2017.08.1-128-gde6dceda 06:26
csv-ip5xs 1.317 - 1.341
test 9.828 - 9.899
test-t 3.543 - 3.838
csv-parser 10.885 - 11.422
masak speaking of 007 being a canary for Rakduo... I have t/features/expr.t from the 007 project segfaulting very reliably on latest Rakudo 06:42
does someone want to help me confirm this? 06:43
under `prove`, it segfaults after 1 test. with just `perl6`, it segfaults after 6 out on my branch, and 7 on master.
I suspect it might be GC-related.
is there a way (environment variable or something) to run without the GC? I forget. 06:47
samcv releasable6, status 06:52
releasable6 samcv, Next release in 9 days and ≈12 hours. 1 blocker. Changelog for this release was not started yet
samcv, Details: gist.github.com/da2c95341bafcb52fb...1f9d21384d
travis-ci Rakudo build errored. Jonathan Worthington 'Make temp and let on a Failure throw it 07:11
travis-ci.org/rakudo/rakudo/builds/272477158 github.com/rakudo/rakudo/compare/c...a3255b2d87
buggable [travis build above] ☠ Did not recognize some failures. Check results manually.
travis-ci Rakudo build passed. Zoffix Znet 'Bump NQP to bring heap analyzer API changes' 07:34
travis-ci.org/rakudo/rakudo/builds/272491985 github.com/rakudo/rakudo/compare/8...ee5a1ed537
pmurias samcv: is it intended that unipropcode works for both property names and property values? 07:54
nqp-m: say(nqp::unipropcode('whitespace')); say(nqp::unipropcode('White_Space')) 07:55
camelia 103
17
lizmat_ Files=1223, Tests=67403, 291 wallclock secs (11.10 usr 4.59 sys + 1976.30 cusr 206.87 csys = 2198.86 CPU) 08:13
Geth rakudo/nom: 2362dfd6f6 | (John Harrison)++ | src/core/IO/Notification.pm
Correcting IO::Notification.watch-path event paths for individual files

Handle watching individual files for file system events. The IO::Notification::Change.path should correctly point to the file path of the file.
08:22
rakudo/nom: d5a5fb7cbf | lizmat++ (committed using GitHub Web editor) | src/core/IO/Notification.pm
Merge pull request #1152 from ashgti/nom

Correcting IO::Notification.watch-path event paths for individual files
roast: 25c27f065c | (John Harrison)++ | S17-supply/watch-path.t
Adding new tests around watching files

Test to cover RT #132043
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132043
roast: 105250627d | lizmat++ (committed using GitHub Web editor) | S17-supply/watch-path.t
Merge pull request #308 from ashgti/master

Adding new tests around watching files
08:23
rakudo/nom: 3c9cfdba88 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm
Make sure that open files are properly closed on exit

  - since buffering is now default, we need to flush on exit
  - achieved by keeping a list of PIO's indexed to their fileno
  - when a file is closed, its entry is nulled in the list
  - when an attempt is made to lock the file, its entry is nulled
   - if the lock fails, entry is reinstated
   - if the lock succeeds, entry remains nulled until unlock is done
  - on exit, all non-null entries in list are closed
  - initial size of open files is 0, incremented in batches of 1024 as needed
  - resizing of list is secured by a lock, so that only 1 thread will do this
08:58
jnthn lizmat: That still isn't quite threadsafe though; something doing a read while another thread is doing a resize isn't safe 09:03
lizmat ? 09:04
yoleaux 6 Sep 2017 22:55Z <Zoffix> lizmat: did a bit of debugging of the lock hanging issue. Golfed version is start `./perl6 -e '"foo".IO.open(:w).lock; sleep'` in one terminal. In another terminal in same dir run `./perl6 -e 'start { "foo".IO.open(:w).lock }; sleep 1'` and the second one'll never quit after 1 second, despite the lock running in a separate Promise. Hope that helps :)
6 Sep 2017 22:57Z <Zoffix> lizmat: jnthn++ figured out the cause: irclog.perlgeek.de/moarvm/2017-09-06#i_15127594
lizmat this is only about opening / closing / locking... not about reading writing ?
nine lizmat: auto-closing those handles is very DWIM, so that's certainly good in some cases (like small scripts or one liners). However, I wonder if we should warn, if we find lots of open file handles.
lizmat ah, you mean reading the list
jnthn: Ah,. I see what you mean 09:05
hmmm... ok
jnthn I'm just talking about the array
lizmat yeah, but that would mean checking the lock for each open()
jnthn Yes! Just do it! 09:06
lizmat ok
jnthn In the grand scheme of things it's a drop in the ocean.
nine How about making it have an initial size of 1024 and only resize if fileno is > 1024? That way we'd also only have to check if fileno is > 1024. Which will almost never happen. 09:07
lizmat nine: feels like a plan 09:08
jnthn With locks (the mutex kind), always go with the simplest possible approach until it's proven a bottleneck. 09:09
lizmat jnthn: but this also implies that *any* changes to the list would need a lock protect, not just the adding :-(
jnthn lizmat: That's fine, just factor those add/remove out to a sub so we only lock in two places in the code
Then it's neat
lizmat oki
jnthn The subs'll be small enough to inline is opening files is actually hot path 09:10
*if
lizmat jnthn: we're guaranteed that only 1 thread will run END blocks, I hope ?
jnthn Only if something makes sure of it. ;-) 09:11
Last I checked it just called a dynamic var
lizmat ok, something else to double check then 09:12
jnthn m: END { say "oops"; sleep 1; } start { exit } xx 4
camelia 5===SORRY!5=== Error while compiling <tmp>
Strange text after block (missing semicolon or comma?)
at <tmp>:1
------> 3END { say "oops"; sleep 1; }7⏏5 start { exit } xx 4
expecting any of:
infix
infix stopper
jnthn m: END { say "oops"; sleep 1; }; start { exit } xx 4
camelia oops
oops
jnthn oops ;)
lizmat yuck
jnthn m: (0xa, 0x12, 0xc, 0x22).fmt('%2x', ' ').say 09:14
camelia a 12 c 22
jnthn wonders if there's a way to zero-pad
m: (0xa, 0x12, 0xc, 0x22).fmt('%02x', ' ').say
camelia 0a 12 0c 22
jnthn lol, total guess :) 09:15
pmurias jnthn: I'm investigating the unicode property values being used as unicode name. Is this something we fundamentally want to keep or is it just done that way because changing it casues test failures and is extra work to fix them? 09:22
jnthn pmurias: I'd ask samcv, but I believe it's a historical accident 09:23
samcv i don't get the question pmurias
example? 09:24
pmurias cooks up an example...
nqp-m: say(nqp::unipropcode('Above_Left')) 09:25
camelia 11
pmurias nqp-m: say(nqp::unipropcode('Combining_Class'))
camelia 0
samcv ah
ok
pmurias nqp-m: say(nqp::unipropcode('Line_Break'))
camelia 15
samcv so you should only really care about Script (values) and Property names 09:26
the other property values i wouldn't worry about. and let me know if we have any tests which use values which aren't the script like <:Above_Left> in a regex or something 09:27
i take it you're thinking about implementing nqp::unipropcode?
pmurias yep 09:28
I'll try to sanitize the nqp::unipropcode semantics on MoarVM first 09:30
timotimo unicode 11 is getting a peacock emoji? maybe that'd be a nice name for a distribution 09:36
Rakudo Peacock
and apparently a pile of poo with a sad/angry face? 09:37
Geth rakudo/nom: 9785356413 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm
Make sure all actions on open list are locked

As discussed: irclog.perlgeek.de/perl6-dev/2017-...i_15129408
10:07
nqp/master: 5 commits pushed by pmurias++ 11:04
travis-ci Rakudo build failed. lizmat 'Merge pull request #1152 from ashgti/nom 11:46
travis-ci.org/rakudo/rakudo/builds/272802444 github.com/rakudo/rakudo/compare/e...a5fb7cbfcf
buggable [travis build above] ✓ All failures are due to timeout (0), missing build log (0), GitHub connectivity (1), or failed make test (0).
lizmat m: END { say "oops"; sleep 1; } start { exit } xx 4 # jnthn: this also poses the question: should an exit() from a non initial thread actually exit? 11:52
camelia 5===SORRY!5=== Error while compiling <tmp>
Strange text after block (missing semicolon or comma?)
at <tmp>:1
------> 3END { say "oops"; sleep 1; }7⏏5 start { exit } xx 4 # jnthn: this also
expecting any of:
infix
lizmat jnthn: or should it throw an exception like "thread exited with value x" ? 11:53
timotimo i'd say it should
lizmat timotimo: why ?
timotimo exit is about program exit, for threads there's join instead
but join requires communication i think 11:54
lizmat ok, so I use a module in a thread, and it does an exit (because it is a stupid module)
do we allow it to take down the whole process?
or do we handle it as a special kind of die() ? 11:55
nine lizmat: exit is exit 12:08
lizmat ok ok :-)
nine The exit in the thread may also be very useful. There's no way for us to determine that up front
lizmat ok, anyways, I just realized this could be a module space option 12:09
pmurias the jvm backend seems to be down :/
lizmat hasn't been able to build the JVM backend for a few months :-( 12:10
jnthn Should actually exit 12:18
ilmari for reference, glibc exit() calls exit_group(), which terminates all threads 12:21
POSIX doesn't say anything about threads in the exit() manual page 12:22
[Coke] I had difficulty a few days ago in an old checkout, but ISTR I did eventually end up with a working rakudo-j
(old checkout that I updated)
pmurias lizmat: AFAIR the previous problem you had was that you had java 1.7 while rakudo-j depends on java 1.8 12:25
(I updated the check in nqp-j Configure.PL today)
Geth_ star: f1ab57cfd1 | (Steve Mynott)++ | README
doc that JDK 8 is needed
12:54
lizmat jnthn: ok, so I have a patch that will run END blocks only in 1 thread 12:58
*but* it only works if my code actually ends in "exit"
END { say "oops in $*THREAD.id()" }; start { exit } xx 4; # not ok
END { say "oops in $*THREAD.id()" }; start { exit } xx 4; exit # ok 12:59
so it looks like the END blocks are being called somewhere else on normal program exit
timotimo aye, the HLL::Backend or HLL::Compiler probably handles this
pmurias what is unimatch intended to do? S15 claims that it should check if the character is in the specified category 13:01
lizmat the only references I can find for @END_PHASERS are in run_profiled ?? 13:02
timotimo lizmat: it's in rakudo's src/main.nqp 13:06
lizmat aaaaahhhh :-) 13:07
ok, /me needs to think about that a bit and goes off to get another perspective 13:10
masak I have good news about the bug I've been golfing. 13:24
I caught it.
m: my $n = " ".indent(0); $n.indent(1) && .say for ^Inf
camelia (signal SEGV)0
masak I guess... I guess that's the bad news :P
Geth nqp/master: 4 commits pushed by pmurias++ 13:25
masak it showed up in a recent Rakudo. I haven't bisected Rakudo yet -- will do that now. it's currently making the 007 test suite fail.
timotimo isn't susceptible without spesh 13:26
hm, does it blow the stack, i wonder 13:27
jnthn ==8303== Thread 2: 13:28
==8303== Invalid read of size 8
==8303== at 0x50894B6: merge_graph (inline.c:595)
==8303== by 0x50894B6: MVM_spesh_inline (inline.c:936)
masak bisects
timotimo we're merging a subgraph to inline some code, but the handler_goto_ins table has a null pointer in slot 0
masak you people are my favorites 13:29
timotimo the last output is "Can inline infix:<~> (4245) into (4188)"
masak famous last words
:P
timotimo looks like that's the block inside the map in the "indent" method 13:30
jnthn hm, odd 13:31
Wonder how that happens
timotimo the infix:<~> that it talks about here doesn't have any handlers 13:33
jnthn It's the inliner rather than the inlinee having handlers that'd matter here
timotimo OK
man, this sub ends up with a crapton of empty BBs 13:34
we may want to put a pass in that takes care of those, if only to make the logs more readable
jnthn Yeah, it's a bit "look how much code I killed!" :) 13:35
timotimo didn't the "Annotation: Fh Goto" once also say what block it'd go to? i mean, i can see the successor being 96 here, but still 13:36
jnthn Is there a matching FH GOTO?
timotimo [Annotation: FH Goto (4)]
[Annotation: FH End (4)]
these?
jnthn Yeah, is there an FH Goto for every FH Start? 13:37
'cus if there isn't, that cause the problem
timotimo 0, 1, 2, 3, and 4 have a goto
and a start 13:38
and an end, too
jnthn Yeah, we'd be looking for a mismatched one I guess
timotimo this is only the Before, though
allow me to kick off the magic that is the "trace spesh actions" script :)
masak is still bisecting, with very limited success 13:39
jnthn gist.github.com/jnthn/323906079c44...309cd36ea5 seems to help 13:40
timotimo didn't know about unreachable handlers yet 13:41
jnthn They're ones that get killed off when BBs become dead 13:42
timotimo mhm
yeah, we probably shouldn't try to handle these
jnthn Yeah, though I'd have kinda expected their annotations to converge on each other and "zero out" 13:43
ohh
And maybe they do
timotimo we don't handle a start *and* end on the same instruction?
jnthn But since we else if...
Right
timotimo 20 minutes from evalbot to fix, not bad. 13:44
a bug related to inlining, no less
jnthn Trying the simpler patch of just tossing the else 13:45
lizmat Q: how do I find Rakudo::Internals from within main.nqp ? 13:46
timotimo i don't think it's possible without having a "register the internals as an hll symbol or similar" trick 13:47
if you only need it after the program has ended, that's good news :)
lizmat yeah, I only need it then
jnthn Nope, curiously making it handle them converging on the same instruction doesn't do it 13:49
lizmat the alternative being that I simply make R:I.THE_END a global sub
jnthn Guess I'll go with the original fix, which works 13:50
lizmat brb 13:51
travis-ci NQP build failed. pmurias '[js] nqp::can works on stdout' 13:54
travis-ci.org/perl6/nqp/builds/272896135 github.com/perl6/nqp/compare/6bfc3...b7c9c5166a
jnthn masak: fix in as github.com/MoarVM/MoarVM/commit/e86428d45e; don't suppose you'd be able to add a test, or RT it to make sure we get one? 14:13
masak I really wish I could RT this one, but I'm in .cn without a VPN :/ 14:15
someone else is very welcome to 14:16
it's going a bit better with the bisecting now. will report if I find something
jnthn++ # fix 14:17
looking forward to it landing in Rakudo so that Travis starts flagging my branch as green again :D 14:18
also, I truly enjoyed the golf
timotimo .o( Masak A Largo )
masak .oO( make Rakudo not segfault again ) 14:24
jnthn
.oO( nobody makes better spesh bugs than me! )
14:25
timotimo .o( tremendous crashes. i can't even hold these crashes in my big hands! )
masak .oO( who knew writing a specializer was hard? nobody. ) 14:27
ok, the bisect flagged up cbce672126a9c1dd2497c121c3c7c767e75f0dad is the first bad commit 14:49
someone who submits an RT ticket might want to include that :)
&
ugexe is the proper way to MVMROOT multiple pointers to nest MVMROOT blocks? 15:44
timotimo we don't seem to have support for one mvmroot block with multiple vars 15:45
ugexe looks like yes, and to not intent the levels
timotimo don't forget that you can also use the explicit functions for temp root pushing and popping
if it makes the code nicer to read
ugexe what can i grep for? i dont know what those are :) 15:46
timotimo gc_root_temp 15:47
jnthn Just use MVMROOT and don't indend when there's multiple
ugexe i wonder if 5 MVMROOT levels will be the new record 16:00
[Coke] masak: were you doing the bisect by hand and not with the bot? 16:44
lizmat .tell Zoffix I feel that tests 3/4 of S24-testing/8-die_on_fail.t are bogus 18:42
yoleaux lizmat: I'll pass your message to Zoffix.
lizmat in test 4, I think the second ok should be 1, and :0status, if the goal is to check non-firing of failing todo'd tests 18:43
oops,test 3 I mean
in test 4, it should be :255status, because the DIE_ON_FAIL fires
please note that currently, core returns the wrong exit codes, so maybe that's the source of confusion 18:44
bartolin good evening, #perl6-dev 19:15
long time no see
Geth rakudo/nom: 1adacc72cb | (Elizabeth Mattijsen)++ | 3 files
Streamline exit / END phaser handling

  - falling off the end of a program / exit now share END phaser handling
  - the first value given to exit() is what will be returned to the OS
   - END blocks can also execute exit(), so we could nest
  - only *one* thread will execute the END phasers on first come/served basis
   - before, multiple threads could be doing this
timotimo heyo bartolin 19:20
how are you doing?
bartolin hi timotimo. thanks, i'm fine. I took a bit of a break from perl6 over the last months, but I'm eager to join the fun again 19:22
bartolin will try to read the logs of #perl6-dev to see what happened
timotimo glad to see you return :) have you kept up or caught up with the weeklies yet? 19:24
bartolin no, not yet. I've read the last two, but the older ones are on my list :-) 19:25
perlpilot lizmat++ (for the weeklies) 19:35
lizmat++ (for that END/exit change)
bartolin I've looked at the failing build for the jvm backend yesterday and I think, I've found the issues 19:40
the one I don't understand is a NullPointerException here: github.com/rakudo/rakudo/blob/1ada...r.nqp#L256 (introduced with ed4f6cc998)
AlexDaniel bartolin++ 19:41
bartolin the other two are ops that are not known on the jvm backend: $!signals-setup-lock.protect (1f411693bd6) and nqp::eqatim/nqp::indexic (215a5fa731) 19:42
the latter two could be worked around with some '#?if moar ... #?endif' conditions 19:43
r: use nqp; my $stopper = nqp::null; ; $stopper := $stopper ~~ /foo/; dd $stopper # this also gives a NPE on jvm 19:44
camelia java.nio.file.NoSuchFileException: /nqp/lib/Perl6/BOOTSTRAP.jar
in <anon> (gen/jvm/ModuleLoader.nqp:90)
in load_module (gen/jvm/ModuleLoader.nqp:77)
in <anon> (gen/jvm/CORE.setting)
in <anon> (gen/jvm/ModuleLoader.nqp:255)
in load_sett…
Bool::False
bartolin but now to reading the weeklies (and yes, a lot of ++ for lizmat++ for those) 19:47
Geth roast: f564faa728 | (Elizabeth Mattijsen)++ | S24-testing/8-die_on_fail.t
Fix two broken tests

As described at: irclog.perlgeek.de/perl6-dev/2017-...i_15132079
20:16
AlexDaniel releasable6: status 20:25
releasable6 AlexDaniel, Next release in 8 days and ≈22 hours. 1 blocker. Changelog for this release was not started yet
AlexDaniel, Details: gist.github.com/99b6e51424ae9d74c2...05c39899ee
Geth rakudo: book++ created pull request #1153:
Fix typo: s/admissable/admissible
20:29
ugexe m: /buffer 5 20:33
camelia 5===SORRY!5===
Regex not terminated.
at <tmp>:1
------> 3/buffer 57⏏5<EOL>
Unable to parse regex; couldn't find final '/'
at <tmp>:1
------> 3/buffer 57⏏5<EOL>
expecting any of:
infix stopper
Other potential …
ugexe heh
geekosaur new entry format for the lottery? 20:46
Geth rakudo/nom: dfbd39b829 | (Philippe Bruhat (BooK))++ | src/Perl6/Metamodel/BOOTSTRAP.nqp
Fix typo: s/admissable/admissible
20:48
rakudo/nom: 456c43984e | lizmat++ (committed using GitHub Web editor) | src/Perl6/Metamodel/BOOTSTRAP.nqp
Merge pull request #1153 from book/nom

Fix typo: s/admissable/admissible
rakudo/nom: 347da8e5b1 | (Elizabeth Mattijsen)++ | 2 files
Don't use an END block to close all open files

  - END blocks can be added/removed at runtime, technically
  - turn END block into a private method close-all-open-handles
  - call this private method *after* having run all END blocks
20:49
lizmat and this concludes my hacking for today& 20:51
jnthn lizmat++ 20:52
Geth nqp: 8742805cb1 | (Samantha McVey)++ | 2 files
Add more index* tests to test empty string paths
22:24
nqp: ad8355850e | (Samantha McVey)++ | 15 files
Merge branch 'master' of github.com:perl6/nqp
travis-ci NQP build failed. Samantha McVey 'Merge branch 'master' of github.com:perl6/nqp' 22:47
travis-ci.org/perl6/nqp/builds/273073699 github.com/perl6/nqp/compare/a6b7c...8355850e0b