nine .tell pmurias Good question. Right now the answer is: we can't. Inline::Perl5 disables precompilation of modules that use Inline::Perl5. 06:41
yoleaux2 nine: I'll pass your message to pmurias.
masak hi, #perl6-dev 07:51
where is QAST code turned into backend-specific code? in nqp? in Moar?
nine masak: in nqp 07:55
masak: src/vm/moar/QAST/QASTCompilerMAST.nqp 07:56
masak thank you 07:57
nine: and how would you characterize MAST? something that can easily be serialized into MoarVM's bytecode? 07:58
nine For some value of easy :) 08:06
masak somewhere on a scale between "wow, that's slick" and "yay, my brain didn't catch on fire!" 08:07
nine Is t/spec/S06-signature/introspection.rakudo.moar failing for anyone else? 08:54
Oh, I should probably run config.status
lizmat nine: failing for me as well, afiak 08:55
pmurias masak: most of the magic seems to happen both *after* the transformation from MAST to bytecode and while compiling QAST to MAST
yoleaux2 06:41Z <nine> pmurias: Good question. Right now the answer is: we can't. Inline::Perl5 disables precompilation of modules that use Inline::Perl5.
masak pmurias: which is consistent with MAST being close to the bytecode, no? 08:56
pmurias yes
DrForr Inline::Perl5::Inception 08:57
pmurias masak: OTOH some other vms/compilers seem to do a lot of transformations on their low level form
nine pmurias: I haven't given up on making precompilation work with Inline::Perl5 though :) I just had to learn a lot about how our module loading and precompilation works. Luckily there were a couple of minor tasks in that area in the past year ;) 08:58
pmurias nine: good, precompilation seems to be one of the most important features 09:01
dalek rakudo/lexical_module_load: b54e04b | niner++ | src/Perl6/ (3 files): 09:04
rakudo/lexical_module_load: Make importing globals from loaded modules lexical
rakudo/lexical_module_load:
rakudo/lexical_module_load: Right now if A depends on C:auth<foo> and B depends on C:auth<bar> you
rakudo/lexical_module_load: cannot use A and B in the same program. Fix this by having not only
rakudo/lexical_module_load: exported symbols be lexical but also the globals contained in a module.
rakudo/lexical_module_load:
rakudo/lexical_module_load: So only A will even have a C that's bound to C:auth<foo>. This means
rakudo/lexical_module_load: that you have to "use" modules in every scope that accesses those names,
rakudo/lexical_module_load: which is a good thing to do anyway.
rakudo/lexical_module_load:
rakudo/lexical_module_load: Definitely 6.d material though as it will break existing code.
nine review: github.com/rakudo/rakudo/commit/b5...5ad5b563d8 09:05
[TuxCM] This is Rakudo version 2016.08.1-15-g998e2b7 built on MoarVM version 2016.08 09:16
csv-ip5xs 9.926
test 15.157
test-t 7.281
csv-parser 16.286
pmurias masak: what would be an elegant way to have the tests use the QAST backend? 09:28
nine TimToady, jnthn input on github.com/rakudo/rakudo/commit/b5...5ad5b563d8 very much appreciated 09:29
jnthn morning, #perl6-dev 09:39
pmurias morning 09:42
jnthn nine: Well, it's interesting how little code it takes at the very least :)
nine: fwiw, my ponderings had sorta been along the lines of "we still have a GLOBAL package, but it's always fully qualified (with :from, :auth, :ver, etc.) and the shortname forms are lexical. I dunno how feasible/better (if at all) that is than going to whole hog. 09:43
pmurias jnthn: does that have any benefits? 09:46
jnthn Largely, just letting you pretend things are like they are today until you actually get a conflict. 09:48
At which point we can give a decent (compile time) error noting the symbol is already bound to a particular version. 09:49
And it'd mean there was still a meaningful GLOBAL::
nine jnthn: talked to lizmat about it and we came to the same conclusion that we do want the longname in GLOBAL and a lexically imported shortname. 09:53
With compile time errors on conflicting lexical shortnames 09:54
pmurias will GLOBAL have the full longname with everything or just with the details specified by the use statement?
nine pmurias: full longname I think 09:55
jnthn Yeah, I expect it'd have to be what the module considers itself to be called
nine Because people will always be lazy and underspecify the use statements. 09:56
Also we probably don't want a Test and Test:auth<Perl> in GLOBAL :)
jnthn aye 09:57
pmurias so do get something from GLOBAL you will have to type in the full longname?
nine pmurias: yes
pmurias what's the use case for that? 09:58
nine It's needed to make loading different versions of a module in the same program actually work. 09:59
different versions or different auths or different froms
The latter blocking an important improvement to Inline::Perl5
pmurias nine: what I meant what's the use case for having both a fully qualified name in GLOBAL:: and lexical one as opposed to just having a lexical one? 10:00
jnthn Being able to write code that talks about the two versions is probably useful. Imagine you wanted to write a test or a benchmark and try it against each version, for example. 10:01
pmurias if we expose the full names in GLOBAL wouldn't that prevent us from expanding them latter on? 10:05
jnthn Expanding them?
nine github.com/niner/CompUnit-Reposito...ncyTracker already shows another way of finding out what exact modules we loaded. 10:06
pmurias adding a use Foo:new-thing<....> but it would only affect the new modules 10:07
jnthn Is that a problem? 10:09
lizmat m: say MY::.keys
camelia rakudo-moar 998e2b: OUTPUT«($=pod !UNIT_MARKER EXPORT $_ $! ::?PACKAGE GLOBALish $¢ $=finish $/ $?PACKAGE)␤»
pmurias jnthn: no
lizmat m: { say MY::.keys } 10:10
camelia rakudo-moar 998e2b: OUTPUT«($_ $*DISPATCHER)␤»
pmurias jnthn: having a 'use Foo' and then using the exact version from GLOBAL seems like a more serious potential problem
jnthn pmurias: Still one we could catch at compile time, though 10:12
lizmat m: { say MY::.keys; say $*DISPATCHER } # isn't thos weird ? 10:13
camelia rakudo-moar 998e2b: OUTPUT«($_ $*DISPATCHER)␤Dynamic variable $*DISPATCHER not found␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
pmurias jnthn: like only being able to use a module from GLOBAL if you import it fully qualified? 10:14
jnthn: we should catch such issues at module author compile time before the code is released on CPAN ;) 10:15
jnthn: I don't have a strong conviction about putting the fully qualified name into GLOBALs but it just seems extra effort to implement a way to shoot yourself in the foot 10:19
jnthn Most useful things always have ways to get hurt with... 10:20
pmurias talking about both versions is also possible in the only lexical scheme, just slightly less convinient 10:25
*c convenient
my $old-Foo = do {use Foo:ver<3.1>; Foo} 10:26
the synopsis also mention an unimplemented use OldFoo:name<Foo>, :name adverb 10:27
nine ~/win 23 10:46
TheLemonMan RT#129060 looks like the constructor is recursive 10:49
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129060
nine TheLemonMan: yes 10:53
TheLemonMan: I rejected the ticket 10:55
masak yeah, was gonna say 10:57
masak .oO( it's Bla all the way down! )
dalek kudo/nom: 2153bf5 | lizmat++ | src/core/Any.pm:
Make default === check for object identicality

A very cheap check, with large consequences when successfully applied to large objects (like a Bag with 1000 elements)
10:58
TheLemonMan WRT #128964 I think the right solution would be to generate the appropriate type checks against the constraint type in p6typecheckrv, anyone got a better idea ? 12:04
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128964
jnthn TheLemonMan: Well, it's also a case of performing the coercion 12:06
I wonder if p6typecheckrv can go away entirely as an op, in favor of just compiling an appropriate check or coercion...after all, by the time we're finishing up the code of the block, all the traits should have already been applied. 12:07
TheLemonMan jnthn, that should be just a matter of factoring out some code from bind_one_param to actually perform the coercion (I think) 12:10
jnthn Well, except that we're doing code-gen in the return case, rather than interpreting a signature as in bind_one_param 12:11
But the operation is the same kind of thing, yes
We can figure out while compiling that we have a coercion type 12:12
pmurias masak: when will bond conf be streamed? 12:52
dalek p/expose-decode-stream: b30de50 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Map decodestream ops.
13:00
p/expose-decode-stream: 39d4365 | jnthn++ | t/moar/05-decoder.t:
Stub in tests for decoder.
mst takes a -pie chainsaw to rakudo 13:57
lizmat how retro :-) 13:58
mst so's hardcoding the wrong path into the source code :P
RabidGravy Mmmmm pie 14:17
mst IT FUCKING WORKED 14:20
timotimo \o/
mst I appear to have at least semi-viable Alien::MoarVM Alien::NQP Alien::Rakudo 14:21
jnthn mst++ 14:25
mst note this is based on some fairly horrible hackery, but it's intended to be backportable horrible hackery
jnthn And a bunch of patches to the build toolchain so next time you swear less? :)
mst most of it's patches to that tbh, though they're not entirely clean yet 14:26
hence them living inside my work
the nasty one was regexping ModuleLoader.nqp to unfuck the BOOTSTRAP search logic
perl -pi -e 'my $$q = "'"'"'"; s{!! nqp::backendconfig<prefix> ~ $${q}/s
hare/nqp/lib/$${q}}{!! $${q}$(M_INST_LIBPATH)/$${q}}' $(M_BUILD_DIR)/m-ModuleLoa
der.nqp
^^ not my most elegant work 14:27
jnthn: I stand by my statement of "this stuff is amateur hour, but it's pretty well factored easy-to-unfuck amateur hour for something that's obviously never seen a toolchainer"
which, honestly, I hope comes over as mostly a compliment
dalek ast: f096ae5 | lizmat++ | S06-signature/introspection.t:
Skip tests broken by 560170f31ef22a2dbc7

Not sure what to do with these, as that commit was supposed to make something illegal that wasn't but should have been.
14:32
RabidGravy mst, from you if the sentence only contains "unfuck" once it's a compliment as far as I've learned ;-) 14:33
jnthn mst: Yup. Any bits of the MoarVM configure/build stuff I did were largely done thinking "I hope somebody who's good at this stuff will replace it" :) 14:34
nine mst: FWIW the openSUSE spec files for rakudo and nqp also need to sed those lines 14:35
mst: a cleaner solution would be most welcome
mst I'm hoping we'll get to the point where we don't
aggravtingly, moarvm's libpath already has the right places to look, hence why I didn't have to touch anything else in the loading code 14:36
just that one insists
also, it strikes me that checking blib/Perl6/BOOTSTRAP.moarvm first is a cwd() attack in the making, potentially
dalek kudo/nom: 9a1616e | LemonBoy++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Print the right type name when the type constraint check fails.

RT#126124
14:48
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126124
dalek kudo/nom: 76e1ede | lizmat++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Merge pull request #845 from LemonBoy/classname

Print the right type name when the type constraint check fails.
TheLemonMan lizmat, I've added some tests in roast #146, still haven't run those yet though 15:03
jnthn, as far as I can see there's no typed exception for that :\ 15:21
jnthn TheLemonMan: OK. Maybe would be better to pattern-match against the message to see if it contains the type? 15:22
TheLemonMan is there a test harness to do so? I think I've seen a similar test but don't remember where 15:23
ItayAlmog I just pushed to github an updated to my compiler, so now I use ANTLR for parsing, which will make it alot easier to parse the Perl6 code, Also I now have say and simple compile time type checking :) [This is the project github.com/Itay2805/Perl6-Native-Compiler] 15:24
dalek p/expose-decode-stream: cd2d9df | jnthn++ | t/moar/05-decoder.t:
Add a bunch more decoder tests.
p/expose-decode-stream: edd7ef7 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Map decodertakeavailablechars op.
p/expose-decode-stream: a692899 | jnthn++ | t/moar/05-decoder.t:
Test decodertakeavailablechars op.
jnthn TheLemonMan: I think throws-like uses smartmatch, so you might be able to just write something like message => /Mu/ or so 15:31
timotimo that sounds about right 15:32
TheLemonMan that's damn neat, updated! 15:33
m: sub x(int $x where * < 3) { ... }; x(); 15:51
camelia rakudo-moar 76e1ed: OUTPUT«Too few positionals passed; expected 1 argument but got 0␤ in sub x at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
TheLemonMan m: sub x(int $x? where * < 3) { ... }; x();
camelia rakudo-moar 76e1ed: OUTPUT«Stub code executed␤ in sub x at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
dalek kudo/nom: 33be22f | lizmat++ | lib/TAP.pm6:
Remove unneeded returns from TAP.pm6

This seems to have a positive effect on both the speed as well as the stability of "make spectest"
All tests successful. Files=1118, Tests=52599, 307 wallclock secs
16:11
lizmat afk&
TheLemonMan how do you get all the tickets with NEEDSTEST ? 16:25
timotimo buggable: testneeded 16:28
huggable: testneeded
huggable timotimo, nothing found
timotimo buggable: help
buggable timotimo, rt | rt TAG
timotimo rt testneeded
buggable: rt testneeded
buggable timotimo, Found no tickets with tag TESTNEEDED 16:29
timotimo i think that's only for tickets with TESTNEEDED in the title
NotZoffix TheLemonMan: try this URL: rt.perl.org/Search/Results.html?Fo...C%0A%27__P 16:35
Oh, doesn't even work. 16:36
timotimo urgh, rt urls 16:37
NotZoffix TheLemonMan: it's pretty retarded. Basically go to rt.perl.org/Search/Build.html?NewQuery=1 then at the top right click 'Advanced' and paste this into the query box: Queue = 'perl6' AND Status != 'rejected' AND Status != 'resolved' AND CF.{Tag} = 'testneeded'
And then save and search.
I'm working on 'R6' ATM, a saner UA for RT: i.imgur.com/PApt3tC.png 16:39
timotimo retarded isn't a word i'd use for things that are not cool, tbh
but i do appreciate R6 :)
TheLemonMan NotZoffix, that url's horrible, but R6 looks beautiful 16:40
timotimo zoffix really knows a bit or two about pretty interfaces
NotZoffix Yeah. The trick is to go to BootSwatch and then pretend you made it ;) bootswatch.com/flatly/ 16:41
TheLemonMan I was just about to say it needs more bootstrap heh
timotimo <3 16:42
NotZoffix timotimo: why not 'retarded'? No one uses that word to refer to mentally disabled anymore. Just as 'idiot' is not a medical condition anymore. Just as 'dumb' is not used to describe deaf people. Just because people whose comprehension of language fails to consider context are loud about a word, doesn't make it a bad word. 16:44
timotimo huh, i hear retarded be used for people who stopped developing at some point 16:45
perlpilot "dumb" is not for deaf people, it's for those unable to speak. 16:46
timotimo right
hmm 16:47
dalek kudo/nom: a4cc1ca | lizmat++ | src/core/Any.pm:
Oops, wrong order of checks, Brad Gilbert++
17:02
lizmat afk&
b2gills Well it wasn't the wrong order of checks, it just wasn't the best order 17:10
dalek kudo/async-socket-str-fixes: 10c5a29 | jnthn++ | src/core/IO/Socket/Async.pm:
First steps on fixing string async socket reads.

This uses the new VM-backed streaming decode API, which will allow for much better error handling, choosing the encoding, and in the future provide support for userspace decoders to be plugged in. This nearly works, with a caveat: we run into a phaser scoping bug with the LAST block that will need some attention. (Also, the streaming decode stuff is not yet available for the JVM backend.)
19:04
[Coke] rakudo.org/rt/testneeded - tickets with testneeded. 19:33
I will second, please don't use "retarded" in that sense. Right up there with "that's so gay". 19:36
NotARobot [Coke]: are TESTSNEEDED the only tag that we use as an RT tag, rather than text-in-subjectline tag? 19:44
[Coke] no. there are lots of other things that aren't in the subject line. 19:45
platform and VM are 2 of the biggest.
NotARobot Alright. I was kinda hoping to reduce the number of requests to RT API in my R6 app, since the ticket# + subject line can be fetched via a single request, while more info requres fetching individual tickets. 19:47
[Coke] you can request more stuff in the same request via the API. 19:54
I think. one sec.
I'm doing a single 'rt' call in my thing that's using the p5 client. 19:55
(no clue what it's doing behind the scenes) 19:56
github.com/coke/rt-six-help/blob/m...p6#L21-L34
geekosaur winces at the code injection possibilities... admittedly there's not much that could be done there and not from the shell, but 19:58
[Coke] geekosaur: It's a command -i am running myself from the commandline-. 19:59
needs my private key to do anything with rt.
That said, patches welcome. :)
geekosaur the "but" is that you kinda get terrible behavior for what in most cases will have been an innocent typo 20:01
masak pmurias: 'fraid there'll be no streaming or video of Bond-con. 20:24
pmurias: but there will be a talk, with slides, and plentiful notes.
Bond-con is a three-day conference, the same three days as YAPC::Europe 20:25
today was a great day, with a total of 0 talks
they were often described as "incomparable", which makes sense because they had an average rating of NaN 20:26
timotimo \o/ 20:29
MasterDuke i was just playing around with benchable and thought this was interesting: gist.github.com/Whateverable/0956f...4340525bca 23:09
Zoffix [Coke]++ indeed, all I was missing is format=l for RT API to get extra info. Really helps out R6 to be awesome :) 23:29
Zoffix asked for a spot at TPM's September Lightning Talks... to do a "Perl 6: What Programming In The Future Is Like" talk :) 23:32
Gonna show how to convert a 1-core program to run on 32-core box and the ease of doing so with P6
dalek ast: 869d395 | (Zoffix Znet)++ | S03-operators/relational.t:
Test RT#128421 (#128)

100 ≅ -100 and 100 =~= -100 must return False
23:35
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128421
dalek ast: c0feebd | LemonBoy++ | S06-signature/types.t:
Tests for #126124 (#146)
23:36
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126124
dalek ast: 0a8b8b5 | (Zoffix Znet)++ | S06-signature/types.t:
Use vaguer match for exception message

Fixes test failure
23:46