01:11 lucasb left 01:28 hungrydonkey joined 01:41 hungrydonkey left 01:42 hungryd59 joined 01:48 Altai-man_ joined 01:51 sena_kun left 02:21 hungryd59 left 02:22 hungrydonkey joined 02:24 squashable6 left 02:26 squashable6 joined 02:38 AlexDani` joined 02:42 AlexDaniel left 03:49 sena_kun joined 03:51 Altai-man_ left 03:53 hungrydonkey left 03:57 hungrydonkey joined 05:48 Altai-man_ joined 05:51 sena_kun left 05:57 Xliff left 06:00 hungrydonkey left 06:01 hungrydonkey joined 06:19 hungrydonkey left 06:21 hungrydonkey joined 06:26 hungrydonkey left
nine Huh? All module builds in my OBS rakudo-git project failed to build with: Unhandled exception: While looking for 'ModuleLoader.moarvm': no such file or directory at <unknown>:1 (/usr/share/perl6/runtime/perl6.moarvm:<dependencies+deserialize> 06:33
patrickb: looks like your static-nqp-home-hll-var merge broke something. All module builds in my OBS rakudo-git project failed to build with: Unhandled exception: While looking for 'ModuleLoader.moarvm': no such file or directory at <unknown>:1 (/usr/share/perl6/runtime/perl6.moarvm:<dependencies+deserialize> 06:36
tellable6 nine, I'll pass your message to patrickb
06:53 jjatria left 07:49 sena_kun joined 07:51 Altai-man_ left 08:20 jjatria joined 08:24 jjatria left, jjatria joined
nine Looks like by hunch was right: I figured that inexplainable issues with attributes are most probably caused by invalid or incomplete type composition information and indeed, adding the auto_viv_container info changes the error. 09:28
It's now: "assign requires a concrete object (got a Any type object instead)" instead of "assign requires a concrete object (got a VMNull type object instead)"
There's also a bug in Metamodel::Primitives.compose_type: Cannot resolve caller to_vm_types(Mu:U) 09:36
As Mu is in the mro of....everything, it must be part of the type configuration
lizmat Files=1306, Tests=111208, 213 wallclock secs (28.53 usr 8.18 sys + 3001.94 cusr 270.82 csys = 3309.47 CPU) 09:45
09:48 Altai-man_ joined 09:51 sena_kun left
nine And another bug: it deconts everything. But in the case of auto_viv_container we must not do that, lest we lose the container it ought to contain 09:51
Fixing that gets me to "Cannot assign to a readonly variable or a value"
[Tux] Unhandled exception: While looking for 'ModuleLoader.moarvm': no such file or directory 10:15
+++ Installing files 10:16
Use of uninitialized value $str in substitution (s///) at /pro/3gl/CPAN/rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 1420.
and more/moar less than awesome output
+++ Checking for moar NQP version 10:17
+++ Expanding gen/moar/main-version.nqp
Use of uninitialized value $str in substitution (s///) at /pro/3gl/CPAN/rakudo/3rdparty/nqp-configure/lib/NQP/Config.pm line 1420.
10:17 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined 10:35 squashable6 left, squashable6 joined 10:55 lichtkind joined
lichtkind lizmat: i have a midterm plan for a new raku data type, code name unreal, its a real with a second value (i think will be rather a role) that represents margin of error 11:00
i alerady spoke about it with jonathan
not only statistics needs it but also every numerically unstable algorithm (read a lot) 11:01
11:04 MasterDuke left
lizmat sounds reasonable and well possible in module space 11:07
nine Which is exactly what's so great about Raku :) 11:08
lizmat m: sub postcircumfix:<± %>(\a, \b) { dd a,b }; 5±3% # sadly doesn't compile :-( 11:14
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing required term after infix
at <tmp>:1
------> 3b }; 5±3% # sadly doesn't compile :-(7⏏5<EOL>
expecting any of:
11:18 patrickb joined
patrickb . 11:22
tellable6 hey patrickb, you have a message: gist.github.com/0b591bf6fb6ce2dcdc...7a10d626b3
Geth_ nqp: e89893ed73 | (Patrick Böker)++ | 7 files
Revert "Merge pull request #611 from patrickbkr/static-nqp-home-hll-var"

This reverts commit d8cda301624c40fcdf9b2db0640e70dbd7af9422, reversing changes made to 80cc57370013b3f1bf5b1b5b491c5d69bd177ac4.
patrickb nine, [Tux]: I reverted the commits for now. I'll probably find time to fix this in the evening. 11:24
11:24 patrickb left
nine m: sub infix:<±> ($a, $b) { note "$a ± $b" }; sub postfix:<%> ($a) { class :: { has $.a; method Str() { "$!a percent" } }.new(:$a) }; 5±3% 11:26
camelia 5 ± 3 percent
nine lizmat: ^^^
lizmat: this is composable and therefore better anyway. Let's you specify absolute and relative margins of error 11:27
lizmat nine+ 11:28
even -)
lichtkind ^^
nine m: class RelativeNum { has $.value; method apply-to($a) { $a * $!value / 100 }; method Str() { "$!value percent" } }; class FuzzyNum { has $.num; has $.error; method gist() { "$!num ± { $!error ~~ RelativeNum ?? $!error.apply-to($!num) !! $!error }" } }; sub infix:<±> ($num, $error) { FuzzyNum.new(:$num, :$error) }; sub postfix:<%> ($value) { RelativeNum.new(:$value) }; say 5±3%; say 5±1 11:35
camelia 5 ± 0.15
5 ± 1
nine This language is so beautiful it makes me almost cry
lichtkind lizmat: what does ^^ mean? 11:41
lizmat look up there 11:42
11:49 sena_kun joined
lichtkind ah 11:51
11:51 Altai-man_ left 11:53 MasterDuke joined
nine m: class RelativeNum { has $.value; method apply-to($a) { $a * $!value / 100 }; method Str() { "$!value percent" } }; class FuzzyNum { has $.num; has $.error; method Str() { "$!num plus or minus $!error" }; method gist() { "$!num ± { $!error ~~ RelativeNum ?? $!error.apply-to($!num) !! $!error }" } }; sub infix:<±> ($num, $error) is tighter(&infix:<**>) { FuzzyNum.new(:$num, :$error) }; sub postfix:<%> 11:55
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3m.new(:$num, :$error) }; sub postfix:<%>7⏏5<EOL>
expecting any of:
new name to be defined
jdv79 lichtkind: you're aware of $*TOLERANCE and =~=?
nine ($value) { RelativeNum.new(:$value) }; multi sub infix:<+>(FuzzyNum $a, FuzzyNum $b) { FuzzyNum.new(:num($a.num + $b.num), :error($a.error + $b.error)) }; say 5 ± 1 + 3 ± 2
lichtkind jdv79++
not yet , thanks
but sounds global and not relating to a value 11:56
jdv79 yup
lichtkind but need a toleance per value 11:57
nine m: class Rel{has $.v;method apply-to($a) {$a*$!v/100}};class Fuzzy{has $.n;has $.e;method gist(){"$!n±{$!e.?apply-to($!n)//$!e}"}};sub infix:<±>($n,$e) is tighter(&infix:<**>){Fuzzy.new(:$n,:$e) };sub postfix:<%> ($v){Rel.new(:$v)};multi sub infix:<+>(Fuzzy $a, Fuzzy $b){Fuzzy.new(:n($a.n+$b.n),:e($a.e.apply-to($a.n)+$b.e))};say 5 ± 1% + 3 ± 2 12:03
camelia 8±2.05
nine Making this mathematically correct is left as an exercise for the reader :)
lichtkind nine: im currently work on the matrix decompositions but when i got this i would liek to work on it 12:27
nine Finally! 12:58
lizmat ein Aha! Erlebnis? 12:59
nine It was indeed more issues with Metamodel::Primitives.compose_type. The for %hash.kv -> $k, $v in sub to_vm_types(%hash) caused the original Scalar container of the attribute to be replaced with a read-only Scalar container. 13:01
Changing that to for %hash.kv -> $k, \v keeps the container intact.
Fair to say: writing a fully fletched meta class in Raku remains hard 13:02
.oO( I didn't find all the fully fledged ones I wrote in NQP all that easy... :P )
nine ah, that's the spelling 13:04
jnthn Though tbh I expected a lot of usages would boil down to sub-classing...
(Which I guess they do.)
nine Pretty sure about tha
[Tux] Rakudo version 2020.02.1-295-gafff3b0b2 - MoarVM version 2020.02.1-76-gec53e4dfc
csv-ip5xs0.712 - 0.716
csv-ip5xs-205.877 - 6.327
csv-parser27.643 - 27.828
csv-test-xs-200.384 - 0.429
test7.676 - 7.800
test-t1.965 - 2.044
test-t --race0.983 - 0.990
test-t-2031.469 - 33.828
test-t-20 --race8.910 - 9.899
nine I'd be quite happy with my progress, if I weren't dreading the precompilation issue: getlex: outer index out of range in any package_declarator:sym<perl5class> at /home/nine/rakudo/install/share/perl6/lib/Perl6/World.moarvm line 1 13:07
MasterDuke ugh, for some reason writing the header last for the bytecode is more annoying than i'd thought. currently dies with `+++ Compiling gen/moar/stage2/QASTNode.moarvmCannot call method 'load_module' on a null object at <unknown>:1 (gen/moar/stage2/NQPCORE.setting.moarvm:<dependencies+deserialize>)` 13:24
13:31 lichtkind left 13:48 Altai-man_ joined 13:51 sena_kun left
Kaiepi jnthn, are the issues you mentioned with github.com/rakudo/rakudo/pull/3451 and friends fixed now? 14:03
and yeah, metaclasses aren't all that easy to write :P 14:06
that reminds me, Metamodel::Primitives is still lacking methods exposing nqp::can and the parameterization ops 14:07
jnthn I'd not do nqp::can, I dunno if it's going to survive the dispatcher re-think. 14:11
AlexDaniel moritz: so you probably want to git pull to get at least this commit: github.com/moritz/perl6-all-module...c464745f42 14:13
moritz: now, I tried running it with --ignore-errors and it was able to finish with 500+ new commits
moritz: so I'd like to know how exactly it fails for you 14:14
it did ask for credentials a few times and I just pressed enter 14:15
no idea if you're seeing the same in different for or what
nine Oh, so many passing tests :) Next up: Calling methods on Perl 5 subclasses of Raku extended Perl 5 classes leads to infinite loops. I think I could get around that by mirroring the inheritance structure on the Raku side. 14:43
I love how the solutions in this new implementation generally fall in the category of "do things properly" instead of hacks 14:46
jnthn nine++ 14:48
[Coke] nine++ 14:51
Kaiepi ooo if nqp::can's not going to survive a few of my modules will need updating 15:00
nine That's the price for using nqp 15:02
Kaiepi yep 15:03
it wasn't something i could really avoid
how will checking if methods exist on any metaobject work with the dispatching rethink? 15:04
timotimo nqp::can is gonna get canned!
MasterDuke will we do a can-can to celebrate? 15:05
nine Kaiepi: that's a trap we all fall into and will pay the price for eventually. The correct solution would not have been "ok, I'll use nqp then" but adding the desired functionality to rakudo.
Kaiepi ah 15:06
nine At least when I've directly accessed the multidispatch cache, I've done so defensively: github.com/niner/Inline-Perl5/blob...HOW.pm6#L4 15:07
Kaiepi nice 15:08
with that and Metamodel::Primitives exposing parameterization ops, Kind, Kind::Subset::Parametric, and Data::Record have no need for nqp anymore 15:09
nine Took me quite a while to find a precompilation friendly way of gracefully handling those compilation errors...
Kaiepi Trait::Traced needs nqp as well for some reason, but i forget why... it was something fairly minor
i think it unboxes a string somewhere, but wouldn't assigning a Str:D to a str work? 15:11
nine think so
15:14 lichtkind joined 15:49 sena_kun joined 15:51 Altai-man_ left
nine And subclasses work. This was not nearly as bad as I expected 16:01
Last failure: not ok 20 - Destructor ran
And it looks like that's not even a memory leak. We just fail to call the base class' destructor 16:20
Ah yes, those need to be called manually in Perl 5 if a subclass has a DESTROY method. Another bug unearthed by unifying stuff 16:23
Geth_ rakudo: Kaiepi++ created pull request #3609:
Expose nqp parameterization ops through Metamodel::Primitives
roast: Kaiepi++ created pull request #634:
Add tests for Metamodel::Primitives parameterization methods
17:09 squashable6 left 17:12 squashable6 joined 17:36 lichtkind left 17:48 Altai-man_ joined 17:51 sena_kun left 17:54 patrickb joined 18:34 toddr joined 19:02 finsternis joined
patrickb vrurg: Thank you for taking over #3604! 19:25
vrurg patrickb: basically, it means it could stuck for another 2-4 weeks. 19:27
Unfortunately. :(
patrickb vrurg: We could merge the PR as is to get the problem itself solved. And then make it pretty later... 19:28
vrurg patrickb: Nothing is more permanent than a temporary solution... :( But perhaps we should do it for now. 19:29
patrickb: maybe just make a ticket about the need to get it done right and assign it to me.
patrickb vrurg: Will do! 19:30
vrurg patrickb: Looking at your patch. You shouldn't use $config instead of $nqp_config in configure_moar_backend because then you make backend-specific things global with risk to override something. 19:32
$nqp_config is actually $self->{impls}{moar}. Content of this hash is visible in template under for_backends macro. I.e. those values are just context-dependent. Sure, you can't see them anywhere else. 19:34
patrickb vrurg: OK, will try to refactor accordingly. 19:35
$self->{impls}{moar}{config} or $self->{impls}{moar}?
vrurg patrickb: config because this is what is visibile through @var@ in templates. 19:37
{impls}{moar} is for internal script use.
patrickb ok
19:49 sena_kun joined
nine Did we have any changes that could affect backtraces in the past few months? I've noticed backtraces showing the wrong file name (the top level script instead of the module) and think it happens when we load a module from source instead of from precompilation 19:50
19:51 Altai-man_ left
MasterDuke 12a336374eaa06717a6102a8d47d1e1a81290099 or 7c3681647909f1183014c7bd45369a2125610c9f maybe? 19:55
linkable6 (2020-03-18) github.com/rakudo/rakudo/commit/12a336374e Introduce / effectuate "is implementation-detail" trait
(2020-03-04) github.com/rakudo/rakudo/commit/7c36816479 Make Backtrace independent of context.
nine m: BEGIN $*REPO.precomp-repository does role :: { method may-precomp() { note "YOU MAY NOT PRECOMP"; False } }; use NativeCall; trait_mod:<is>(Routine, :native(Str)); 20:01
Invocant of method 'signature' must be an object instance of type 'Code', not a type object of type 'Routine'. Did you forget a '.new'?
in sub check_routine_s…
nine m: BEGIN $*REPO.precomp-repository does role :: { method may-precomp() { False } }; use NativeCall; trait_mod:<is>(Routine, :native(Str));
camelia Invocant of method 'signature' must be an object instance of type 'Code', not a type object of type 'Routine'. Did you forget a '.new'?
in sub check_routine_sanity at /home/camelia/rakudo-m-inst-1/share/perl6/core/sources/947BDAB9F96E0E5FCCB38312…
nine odd....this shows "in sub check_routine_sanity at -e line 739 in sub trait_mod:<is> at -e line 777 in block <unit> at -e line 1" here
MasterDuke nine: don't want to distract too much, but if you're looking for a change of pace any idea why github.com/Raku/nqp/pull/612/commi...57914edf41 dies with `+++ Compiling gen/moar/stage2/NQPCORE.setting.moarvmAnnotation segment overflows end of stream, offset = 71976, size = 4608, data_size = 76576 at 20:05
src/vm/moar/ModuleLoader.nqp:47 (gen/moar/stage1/ModuleLoader.moarvm:)`? 20:06
nine MasterDuke: I'd ignore the error message and compare bytecode files
MasterDuke the $hll differs 20:09
but that's just an index into the string heap, right? 20:10
nine yes 20:11
But still...why would it differ?
You should get 100 % identical output
MasterDuke because it's added to the string heap at a different time i assume. at the end of all the other writing, instead of before 20:12
nine Ok, that makes sense indeed. Of course that doesn't make the hunt any easier 20:13
MasterDuke yeah. next difference isn't until a bunch of bytes later, outside the header i believe 20:16
nine And now it plays nicely with AUTOLOAD. I fear I'm gonna have to tackle that precomp issue soon. 20:22
MasterDuke are these bugs in rakudo you're finding? or I::P5?
nine I::P5
A couple rakudo bugs along the way ;) 20:23
jnthn MasterDuke: Not looked at the patch, but could it be it's writing the string heap and/or its length before adding the hll string? 20:32
nine Once someone's said it, it's so god damn obvious 20:33
MasterDuke ha!
nine And he not even looked at the code :)
MasterDuke and i've even been playing around with that $hll a bunch and didn't think of that
jnthn hah, that's what it was? 20:34
nine jnthn: you know, you could have pretended that it was any challenge at all for you
MasterDuke i'm testing now
the files aren't bit-identical, but the nqp build finishes 20:38
i.e., the *.moarvm in gen/moar/stage2 when built with current HEAD vs the previous commit on this branch that goes back and fixes up header values after the fact 20:39
nine where are the differences? 20:40
MasterDuke oops, looked at a "new" file i'd copied away. they are actually identical now 20:41
nine cool :)
MasterDuke rakudo builds
jnthn \o/ 20:42
MasterDuke jnthn++
i'm about to force push the newly rebased commit, but i guess it's still up for discussion whether it's a change that's desired at all 20:43
push to the PR
patrickb Are there separate makefiles generated in rakudo for the different backends? I'm wondering because all tools/templates/{moar,js,jvm}/Makefile.in include Makefile-backend-common.in 20:46
MasterDuke ok, github.com/Raku/nqp/pull/612 is updated. the first three commits (but really the majority of the change is in the second commit) write (some of the larger pieces of) the bytecode on the fly, but has to go back and correct the header. the fourth commit changes to write the header at the end 20:49
if the end state (some bytecode written on the fly) is in fact desired, i can always rebase/remove whichever other implementation isn't picked 20:50
uhh. t/qast/01-qast.t has a bunch of fails if i `make m-test`, but passes if i do `make t/qast/01-qast.t`, but then has fails again if i `./nqp-m t/qast/01-qast.t` 20:59
doh, dumb error, fixed now 21:05
passes nqp tests and rakudo spectests 21:08
21:32 MasterDuke left 21:41 MasterDuke joined 21:48 Altai-man_ joined 21:51 sena_kun left 22:04 Xliff joined
Geth_ rakudo: 47650ebed2 | (Patrick Böker)++ | tools/lib/NQP/Config/Rakudo.pm
Fix building non-moar backends on Windows

On non-moar backends the nqp executable extension is still '.bat' and not
rakudo: 9e19c1a6d8 | (Patrick Böker)++ (committed using GitHub Web editor) | tools/lib/NQP/Config/Rakudo.pm
Merge pull request #3604 from patrickbkr/fix-3591

Fix building non-moar backends on Windows
¦ rakudo: patrickbkr assigned to vrurg Issue Clean solution for backend specific nqp runner extensions github.com/rakudo/rakudo/issues/3610 22:13
22:32 Altai-man_ left 23:03 patrickb left 23:11 lizmat left