Perl 6 language and compiler development 2.0 | Logs at irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by moderator on 1 May 2018.
00:55 Kaiepi joined 01:58 ilbot3 joined
moderator Perl 6 language and compiler development 2.0 | Logs at irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
02:21 MasterDuke joined 05:46 ufobat joined 06:14 ggoebel joined 07:35 brrt joined 07:53 [TuxCM] joined
nine brrt: this hint has been there for years: github.com/rakudo/rakudo/blob/mast...ry.pm6#L14 07:54
brrt: the question about an ENV var for disabling precomp has come up again and again, but apparently no one was ever motivated enough to add the one line implementation. I certainly wasn't because whenever people were asking for it, they just wanted workarounds for issues while I wanted to fix them. 07:55
brrt so, my main interest in the whole thing is, for the purpose of debugging, i want to have completely repeatable 'runs' 07:57
precomp uses forking, right? 07:58
well there you go
anyway, thanks :-)
nine We don't do forks. But it starts an external perl6 process.
brrt is not feeling like being pedantic about the matter 07:59
yeah, i see
samcv i'm going to be working on adding an ignoremark option to Str.split to fix [Tux]'s issue in Text::CSV, because split won't work splitting on `"` when there's an extend character after it 08:43
may have to make a new op. nqp::indexim_something that will return not just the index of the grapheme, but the index of the codepoint within the grapheme. and let you resume indexing from specific codepoint inside the grapheme 08:44
though first going to try and solve by doing it in rakudo probably 08:45
09:13 brrt joined 09:45 [Coke] joined 10:01 lizmat joined 10:37 brrt joined 11:09 robertle joined 11:39 AlexDaniel joined 11:40 shareable6 joined
robertle I am trying to understand where the $*PERL.compiler.id comes from and what goes into it. I did look at src/core/Compiler.pm6 of course, but I can't quite see where COMPILER_CONFIG gets set... 11:58
12:08 Zoffix joined
lizmat m: use nqp; dd nqp::getcomp("perl6").config 12:11
camelia {:build-date("2018-04-30T19:09:40Z"), :codename(""), :implementation("Rakudo"), :language_version("6.c"), :libdir("/home/camelia/rakudo-m-inst-2/share"), :prefix("/home/camelia/rakudo-m-inst-2"), :release-number(""), :source-digest("575b384f51539327e8…
lizmat robertle: ^^^ does that answer your question ? 12:12
Zoffix robertle: it's set in src/main.nqp (or nqp/perl6-debug.nqp if using perl6-debug), which is from src/Perl6/Compiler.pm6 (note, Perl6/ not the core/ Compiler). That object inherits it from HLL::Compiler, which lives in nqp's src/HLL/Compiler.nqp
robertle: and the ID looks to come from source-digest, which is genned in rakudo's tools/build/gen-version.pl from a SHA of the sauce
nine Zoffix nailed it 12:13
Zoffix \\o/
github.com/rakudo/rakudo/blob/mast...pl#L32-L35
|Tux| Inline::Perl5 with XS: Cannot unbox a type object (VMNull) to int. 12:14
nine In terms of goals instead of implementation: the compiler ID should uniquely identify the compiler, i.e. the state of the whole source code + the unique id of the base compiler (NQP)
AlexDaniel |Tux|: try nuking .precomp folders?
|Tux| was just trying to do so ...
AlexDaniel |Tux|: R#1783
synopsebot R#1783 [open]: github.com/rakudo/rakudo/issues/1783 [⚠ blocker ⚠] New sporatic explosions likely related to precomp
jnthn Is sporatic a spello or deliberate? :) 12:15
Zoffix It' 12:16
It's FFS. Fat Finger Syndrome :)
|Tux| Now it is Cannot find method 'run_alt' on object of type NQPArray
Zoffix We had a user with that in #perl6 the other day. But blowing .precomp helped them. 12:17
Maybe you have more .precomp dirs to nuke somewhere?
|Tux| yes, I had. I nuked all of them
But this looks promising: 12:18
perl6 test-t 50000 2.372 2.162
Zoffix \\o/
AlexDaniel |Tux|: what about, hmm, ~/perl6/precomp ?
or .precomp in subdirs?
|Tux| AlexDaniel, will try next
AlexDaniel oops
I meant ~/.perl6/precomp
|Tux| .precomp in subdirs already tried, but not in perl6' own environment 12:19
12:19 Zoffix left
AlexDaniel or that, yea 12:19
nine We really need someone who can reproduce this issues gathering the necessary debug information. I just cannot for the life of mine reproduce the issue. 12:21
And I've also not encountered it so far.
12:22 AlexDaniel joined
robertle lizmat, Zoffix: thanks! that perl script was what I was missing 12:25
|Tux| nine, thanks again for your help in Oslo in bringing the issue down to a reproducible blob of 4 : I now completely understand the problem, and so does samcv
NICE! (drumroll ...) 12:26
12:27 AlexDaniel joined 12:30 hoelzro joined 12:31 Stig_ joined
Stig_ Make a brew 12:31
lizmat hears a fading drumroll in the background 12:32
|Tux| (running everything twice takes time)
Rakudo version 2018.04.1-35-g8cd70d1ee - MoarVM version 2018.04.1-51-g6d69c6b08
csv-ip5xs0.864 - 0.867
csv-ip5xs-208.497 - 8.667
csv-parser36.518 - 37.141
csv-test-xs-200.423 - 0.461
test9.048 - 9.048
test-t2.360 - 2.386
test-t --race0.990 - 1.069
test-t-2042.752 - 42.802
test-t-20 --race15.150 - 15.373
12:33
2018-04-05 09:08:50 test-t 2.374
2018-04-30 10:59:13 test-t 2.373
2018-05-02 14:17:19 test-t 2.372
2018-03-29 14:36:32 test-t 2.372
2018-05-02 14:24:37 test-t 2.360
lizmat whee, test-t race below 1 second!
|Tux| I said dromroll for a reason :) 12:34
lizmat hmm... seems like we need to bum Moar :-)
jnthn I...uh... :P
|Tux| We need a beer (or a dram of Whisky) to celebrate?
lizmat *bump :-) 12:40
|Tux| cannot suppress a smile 12:43
12:57 AlexDaniel joined 13:41 skids joined
japhb lizmat: To pick up samcv's hash performance improvement? Or is there something else? 14:14
14:22 FROGGS_ joined 14:41 ufobat joined
Geth rakudo: jsimonet++ created pull request #1792:
Fix smartmach exception explosion.
15:01
rakudo: 97d5d83ed8 | (Julien Simonet)++ | src/core/Map.pm6
Fix smartmach exception explosion.

Smartmatch should never explodes.
Fix #1772
15:16
synopsebot RAKUDO#1772 [closed]: github.com/rakudo/rakudo/issues/1772 [LHF] Hash ~~ Hash violates "smartmatch never throws" paradigm
Geth rakudo: 1447f41e68 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Map.pm6
Merge pull request #1792 from jsimonet/master

Fix smartmach exception explosion.
15:54 ExtraCrispy joined
tony-o lizmat: deathbyperl6.com/perl6-chains-tools-reindeer/ 16:16
16:19 cog_ joined 16:39 AlexDaniel joined
AlexDaniel notable6: weekly 16:41
notable6 AlexDaniel, 14 notes: gist.github.com/7175ead811cba5251f...20a49a1672
AlexDaniel notable6: weekly reset 16:42
notable6 AlexDaniel, Moved existing notes to “weekly_2018-05-02T16:42:11Z”
AlexDaniel notable6: weekly github.com/github/linguist/pull/4083
notable6 AlexDaniel, Noted!
AlexDaniel notable6: weekly www.kickstarter.com/projects/14228...ts/2176624
notable6 AlexDaniel, Noted!
tony-o AlexDaniel: are you able to add that pts post to weekly ^ ?
moritz I think everybody can use the bot 16:54
El_Che Am I paranoid or are we being "shortchanged"? "Learning Perl 6, the Nutshell Book from O'Reilly Media" <-- I don't remember being it a Nutshell book 16:56
Geth nqp/pluggable-spesh: 490be12199 | (Jonathan Worthington)++ | t/moar/52-pluggable-spesh.t
Add test to exercise spesh plugins as hot code
17:06
samcv [Tux]: you around? 17:18
17:24 cog_ joined 17:34 ktown joined
AlexDaniel tony-o: you can do it yourself, same command 18:03
18:03 ktown joined
AlexDaniel notable6: help 18:05
notable6 AlexDaniel, Like this: notable6: weekly rakudo is now 10x faster # See wiki for more examples: github.com/perl6/whateverable/wiki/Notable
18:09 Zoffix joined
Zoffix El_Che: just had a look at the history of email updates… Looks like it always had "Nutshell" in the title: temp.perl6.party/lp6.png 18:09
El_Che Zoffix: good news then 18:10
tony-o ah
notable6: weekly deathbyperl6.com/perl6-chains-tools-reindeer 18:11
notable6 tony-o, Noted!
18:22 [TuxCM] joined 18:25 stmuk_ joined
samcv .tell [Tux] try this branch, and do split with :ignoremark option. only implemented for .split(@array). doesn't do what ignoremark in regex does atm. it just does things by codepoint 18:28
yoleaux samcv: I'll pass your message to [Tux].
samcv (:ignoremark in regex will essentially search using .NFD and decompose things like á which exist as a single codepoint. so could probably be :codepoints or something
.tell [Tux] oh the repo is here github.com/samcv/rakudo/tree/split-ignoremark 18:30
yoleaux samcv: I'll pass your message to [Tux].
[Tux] I am now
yoleaux 18:28Z <samcv> [Tux]: try this branch, and do split with :ignoremark option. only implemented for .split(@array). doesn't do what ignoremark in regex does atm. it just does things by codepoint
18:30Z <samcv> [Tux]: oh the repo is here github.com/samcv/rakudo/tree/split-ignoremark
18:38 Zoffix left
AlexDaniel squashable6: next 18:44
squashable6 AlexDaniel, ⚠🍕 Next SQUASHathon in 1 day and ≈15 hours (2018-05-05 UTC-12⌁UTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
lizmat weekly deathbyperl6.com/perl6-chains-tools-reindeer/ 18:49
weekly: deathbyperl6.com/perl6-chains-tools-reindeer/ 18:50
notable6 lizmat, Noted!
lizmat tony-o++
[Tux] samcv, with your branch, tests fail with and without the :ignoremark option 18:57
maybe try checkout github.com/Tux/CSV and see for your self
the split we're dealing with is at line 1038 in sub chunks 19:00
samcv yeah it fails 5 tests. but does it pass that code we were working on the other day
El_Che AlexDaniel: added support for Fedora 28 in the canary 19:01
samcv with the Buf and the encoding as utf8c8. can you send me a link to the source for that
AlexDaniel El_Che: o that's wonderful
El_Che the rakudo+./Configure --the-world is on my todo list for later (commented out for now)
AlexDaniel “this allows zef to bypass parsing the entirety of the ecosystem JSON to determine what's needed for installing/building a module and just make an http query to get the dependency chain” 19:02
I don't understand that ↑, how come building the dependency chain takes so much time? 19:03
what is it doing exactly?
El_Che aka compared to cpanm which is instantanous
[Tux] rebuilds from scratch ... 19:05
AlexDaniel so it has to parse META6.json of every module just to know what is provided by that module? 19:06
samcv [Tux]: the tests are failing due to the hash randomization, and it assums a specific ordering of a hash's keys 19:08
lizmat goes to look at the tests
samcv fails about 1-2/4 times 19:09
lizmat samcv: which tests specifically ?
tony-o lizmat: sorry it took so long
samcv err. i mean passes about 1-2/4 times
t/90_csv.t
lizmat tony-o: no worries, it'll be in next week's P6W
it's not like I didn't have enough for the past week 19:10
:-)
[Tux] ./perl6-m tools/build/install-core-dist.pl /pro/3gl/CPAN/rakudo/install/share/perl6 19:13
Too few positionals passed; expected 2 arguments but got 1
in block <unit> at tools/build/install-core-dist.pl line 17
lizmat [Tux]: that smells like the precomp issue again
[Tux] rebuilds from scratch (again) ... 19:14
lizmat pretty sure that's not going to help :-(
nine I really hope someone who's able to reproduce the bug will post the debug info somewhere soon 19:15
[Tux] (after removing all .precomp's of course)
MasterDuke nine: what do you need? tarballs of the complete directory?
nine MasterDuke: yes
MasterDuke just the rakudo directory? or ~/.perl6/precomp also? 19:16
AlexDaniel I'd say with precomp dirs also
that's going to be directly reproducible, I think 19:17
nine the install directory and precomp directories
There must be some difference between before and after that just shouldn't be there
MasterDuke think i'll have to blow away my ~/.perl6/precomp and redo the steps, i have multiple rakudo installations on the machine where i followed Zoffix's steps 19:18
where in those steps do you want the snapshots? 19:19
dogbert17 ZOFFLOP: t/06-telemetry/01-basic.t
nine MasterDuke: after the first and third make test 19:20
MasterDuke k
[Tux] 1. veriffied that new branch just fails 4 tests without the :ignoremark option 19:25
(it fails a lot more *with* the option)
19:27 robertle joined
[Tux] I get further, but not quite there. I'll have to dig 19:28
I'll commit the test files 19:29
And I understand the 4 fails, but I have to think about a solution to that 19:38
19:41 cog_ joined
samcv [Tux]: ah. maybe you get fails since i didn't test mine with :ignore-empty hm 19:43
[Tux] I'm off for today. Early rise tomorrow :( 19:47
MasterDuke nine: ok, i have two tarballs of the rakudo folder, there wasn't anything created in my ~/.perl6/precomp 19:48
i excluded .git folders 19:49
nine MasterDuke: sounds good! How can I get them? 19:50
MasterDuke how big are github gists allowed to be?
these are 28 and 35 meg 19:51
nine can you email them? 19:52
MasterDuke AlexDaniel: where in /var/www can i put files for nine to download them?
AlexDaniel MasterDuke: uh… not sure if there's any place actually
yeah I don't think it's possible 19:54
nine MasterDuke: you could upload via anonymous ftp to niner.name 19:56
MasterDuke: into niner.name/upload 19:57
MasterDuke nine: you got my message? were you able to download them? 19:59
dogbert17 ZOFFLOP: t/spec/S32-io/IO-Socket-INET.t 20:01
nine MasterDuke: affirmative 20:02
MasterDuke cool, i'm going to remove them now 20:03
nine MasterDuke: funny story. Using your 1783-after rakudo, make test still passes here 20:20
Except....for tests like t/04-nativecall/01-argless.t 20:21
MasterDuke huh. i had a whole bunch of errors 20:22
nine Trying before now to compare
Oooooh... in the before it passes, so I can now debug!
MasterDuke excellent
nine The precomp files are identical. And its loading the same files. WTF? 20:25
And copying lib/.precomp from after into before does not break anything 20:26
MasterDuke afk for a bit, if you need anything from me just leave a message and i'll check back 20:27
nine There are however quite a lot of differences in the .moarvm files in blib 20:31
Oh, maybe it's the hash randomization! 20:32
That may make builds a lot less reproducible.
lizmat aaahhh... so we lose reproducible builds with has randomization :-( 20:33
nine I do wonder why that seems to only affect rakudo's NQP modules. And why it never happens in my own builds 20:34
lizmat nine: maybe a kernel version issue>? 20:36
samcv had a nice presentation about hash randomization at the Amsterdam.pm meeting last night
nine I'm running 4.16 on both my machines. But but but but how can that affect hash randomization? 20:37
lizmat it went into the difference between systems, and how some kernel versions supported something better than /dev/urandom
perhaps the check is wrong somehow and you have none ?
nine The getrandom() syscall. But IIRC that was introduced some time last year
lizmat: I remember fixing some hash randomization related issue in a spec test last week 20:38
Yep, commit b2c864690b7f81c9f515c50b7d40e3b03f01fa0a Fix flappy test in slurpy-and-interpolation.t
Anyway, we're at least a lot closer to what's going on already. Thanks MasterDuke for those invaluable test files! 20:41
gfldex where is BOOTStr coming from? 21:17
lizmat afaik that's a native str from NQP land 21:33
gfldex i'm getting: Type check failed in binding to parameter '<anon>'; expected Any but got BOOTStr (?) 21:34
in line 42 of gist.github.com/gfldex/dc77a98bb07...t-down-L42 21:35
and I'm having a hard time to golf that
lizmat gfldex: could you try cleaning all of the .precomp dirs and see if that helps ? 21:46
also: is "make test" clean for you ?
gfldex lizmat: make test is fine and rming .precomp did not help 21:54
Geth roast: jsimonet++ created pull request #423:
Add test for smartmatch hash with Mu values.
21:57
lizmat gfldex :( 22:04
22:11 MasterDuke joined 22:43 skids joined 23:09 nebuchad` joined
samcv nine: if you want i could make a env flag or something that would disable hash randomization. if there's no way to sort things etc 23:10
jnthn In the medium term we should probably fix it to sort stuff, but in the short term such a flag could alleviate the pain. 23:11
I'd rather we will such a flag off ASAP if we add it though 23:12
Otherwise it'll end up posted somewhere as an answer to "how to make my tests run reliably" :)
samcv :)
jnthn s/will such/kill such/
23:13 cog_ joined
samcv yeah if we kept it i'd probably make it a compile time option not built by default to discourage its use 23:15
nine: if you didn't have getrandom call then it'd use /dev/urandom, and if you don't have /dev/urandom it'd use the PID of the moarvm instance with the microsecond time you started moarvm so it'd still be random 23:17
nine/anyone else curious
23:19 greppable6 joined, committable6 joined, statisfiable6 joined
MasterDuke m: sub a(Str:D *@b where { .elems > 0 }) { dd @b }; a("a", "b"); 23:27
camelia 5===SORRY!5=== Error while compiling <tmp>
Slurpy positional parameters with type constraints are not supported
at <tmp>:1
------> 3sub a(Str:D *@b where { .elems > 0 }7⏏5) { dd @b }; a("a", "b");
expecting any of:
cons…
MasterDuke why not ? ^^^
timotimo because slurpies are potentially lazy 23:29
but what you pass in doesn't have to be typed
MasterDuke what does laziness have to do with typing? 23:30
jnthn How can you determine if all the things meet the type constraint without evaluating them all? 23:32
Laziness aside, though, recall that an `Int @foo` type parameter only accepts things that are declaratively Positional[Foo] 23:33
*typed
Though I see in this case it's about a `where`, which if it applies to the whole array rather than the elements we could perhaps allow 23:34
Since it's not a nominal type
MasterDuke i guess i imagine types are checked as elements are reified, and an exception is thrown 23:35
if a newly reified (if that's really the right word) element fails the check 23:36
23:37 stmuk joined
MasterDuke fyi, inspired by stackoverflow.com/questions/501355...nt-in-main 23:37