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 1Actually 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 1Actually 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 |