Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2015-01-19

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:25 jack_rabbit joined #perl6
00:43 tinyblak joined #perl6
00:47 dayangkun joined #perl6
01:00 masak 'night, #perl6
01:10 tinyblak joined #perl6
01:13 ugexe does anyone know if the meta6.json items in 'emulates' should count as a fulfilled dependency? should it be up to the user? or should anything declared under 'depends' be taken as a requirement even if if you have a module installed that claims to emulate it?
01:14 ugexe superceded and friends claim to not have anything to do with depends, so im guessing emulates is also intended to not have any association with depends
01:17 skids For the purpose of panda, or module loading?  For the latter I think it's clear that if you want to load a particular auth you have to be specific.
01:19 ugexe for the purpose of any module installer
01:21 ugexe and for the latter the specs example show a non-auth specific module as emulating an auth specific module
01:21 ugexe emulates : { "JSON::Fast" : "JSON::XS:auth<cpan:MLEHMANN>" }
01:22 ugexe the question is, if a package requires JSON::XS but you already have JSON::Fast installed (and not JSON::XS) should the package manager install JSON::XS
01:22 ugexe s/requires/depends/
01:28 Ben_Goldberg joined #perl6
01:38 skids Well, IMO that can get sticky:
01:38 skids If the package really needs a particular implementation of that interface it can say so by supplying an owner.
01:38 skids But then an addition to repos can break that until the package manager gets around to adjusting the Meta file.
01:39 skids from the user perspective:
01:39 skids It would be annoying to a user if a package manager kept installing an implementation they did not want because it was breaking things on their system.
01:44 skids If the repos could have virtual packages that were backwards to the way Debian does it (they list eligible packages) then problems like that could be more easily fixed by "distro" maintainers.
01:47 ugexe you are describing supersedes
01:49 ugexe i am mostly interested in automatically attempting to resolve dependency failures
01:50 ugexe afterall, the user does not get to pick what depends they pull in for the most part anyway so they should have no reason to be annoyed
01:51 dj_goku joined #perl6
01:52 skids Well, don't say that to me when I'm screaming at apt.  But anyway, my point is let us say that a recommendation manager declares all emulates to satisfy a dependency.  Then if a package that everyone usually has installed starts to emulate another package in a broken fashion, it will break a depending package until that other module author fixes that package's Meta.
01:53 skids (Asuuming they did not already have the "pure" dependency installed)
01:58 chenryn joined #perl6
02:00 ugexe it would only break it if your package manager was not very smart. a smart package manager would not install a broken dependency, or a dependency that lead to the original module to fail its tests
02:02 ugexe so then your reccomendation manager could ask if you'd like to try <some other module that claims to emulate the failed module>
02:03 dj_goku joined #perl6
02:03 dj_goku joined #perl6
02:04 skids That strikes me as analogous to a "sufficiently smart compiler" train of thought: sure panda could be made that smart, that I can believe, but thorough test suites throughout the entire ecosystems strains credibility.
02:04 ugexe im not talking about panda, and it also involves the help of the actual ecosystem involved (which holds all the meta data of all the modules)
02:05 ugexe the ecosystem would actual make the recomendation
02:05 ugexe remember there will be many ecosystems/auths and package managers
02:08 ugexe including test matrixes that can test a module build with various modules that claim to emulate each other
02:08 skids Sure.  Anyway I don't think the docs make it clear in enough places to say whether certain sentences apply to the compunit loader or the recommendation manager.
02:08 skids IIRC that was lizmat++'s thing, maybe she could clarify.
02:19 virtualsue_ joined #perl6
02:21 raiph joined #perl6
02:26 BeeWT joined #perl6
02:28 BenGoldberg_ joined #perl6
02:36 ugexe a distro maintainer can already supply alternative modules to be installed on failure as well
02:45 leont Is there any centralized description for that meta6.json?
02:46 ilbot3 joined #perl6
02:46 Topic for #perl6 is now »ö« Welcome to Perl 6! | http://perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: http://irc.perl6.org | UTF-8 is our friend!
02:49 regreg joined #perl6
02:51 chenryn joined #perl6
03:02 adu joined #perl6
03:07 raiph joined #perl6
03:20 Mso150 joined #perl6
03:27 chenryn joined #perl6
03:28 Ben_Goldberg joined #perl6
03:29 tinyblak joined #perl6
03:37 * skids catches up on some old things he should have filed as RTs
03:38 skids Can someone with a newish compile test https://gist.github.com/skids/11d8dca21973925c7850 so I don't file an already-fixed RT?
03:38 vendethiel joined #perl6
03:39 rhr joined #perl6
03:57 noganex joined #perl6
03:58 ugexe did you try putting a '/' at the end of the { True }
03:59 ugexe er, '\'
04:04 ugexe yeah, that gives the same result
04:04 ugexe which is expected
04:04 ugexe (same result as the first example)
04:05 skids Yeah, same here, fails when using / to make it one "line"
04:05 ugexe \, not /
04:05 ugexe and its supposed to fail
04:05 skids OK, good then I'll file that as an RT.  Right I used \
04:05 skids Why would you expect it to fail?
04:06 ugexe role A takes arguments, and you are calling does A[ ]
04:06 skids Named args are optional.
04:07 skids r: role A [ :$d ] { } ; class B does A[ ] { }; B.new;
04:07 camelia rakudo-{parrot,moar} 6279e1: ( no output )
04:08 ugexe i see
04:19 kurahaupo joined #perl6
04:20 anaeem1 joined #perl6
04:22 anaeem1_ joined #perl6
04:24 ugexe fwiw you get a similar error using programtic checks in any signature on a default assignment
04:24 ugexe m: sub A($bs where { True } = 1) { }; A(3);
04:24 camelia rakudo-moar 6279e1: OUTPUT«Cannot modify an immutable Block␤  in method ACCEPTS at src/gen/m-CORE.setting:3281␤  in sub A at /tmp/5ayhGJwfai:1␤  in block <unit> at /tmp/5ayhGJwfai:1␤␤»
04:28 vendethiel joined #perl6
04:32 skids m: sub a ($bs where { True } ␤= 1) { }; a(3); # Yeah that is suspiciously newline dependent too.
04:32 camelia rakudo-moar 6279e1: ( no output )
04:33 kaleem joined #perl6
04:34 skids And better yet, that shows a problem when run from -e
04:36 ugexe -e runs with less strictness, although im not sure if that matters
04:36 ugexe use v6; will run it with normal strictness
04:39 skids Weird.  I'm able to do the role one on -e now, without use v6, but ISTR that did not owrk before.
04:40 skids m: role A [ :$bs where { True } = 512] { }; class B does A[ ] { }; B.new;
04:40 camelia rakudo-moar 6279e1: OUTPUT«===SORRY!===␤None of the parametric role variants for 'A' matched the arguments supplied.␤Cannot modify an immutable Block␤»
04:40 skids m: role A [ :$bs where { True } ␤= 512] { }; class B does A[ ] { }; B.new;
04:40 camelia rakudo-moar 6279e1: ( no output )
04:46 ugexe m: role A [ :$bs where { not True } ] { }; class B does A { }; B.new;
04:46 camelia rakudo-moar 6279e1: OUTPUT«===SORRY!===␤None of the parametric role variants for 'A' matched the arguments supplied.␤Cannot call ''; none of these signatures match:␤:(::$?CLASS ::::?CLASS $, :bs($bs) where { ... })␤»
04:49 skids RT123623
05:00 vendethiel joined #perl6
05:08 adu joined #perl6
05:11 raiph joined #perl6
05:25 chenryn joined #perl6
05:40 kaare_ joined #perl6
06:00 davercc joined #perl6
06:04 tinyblak joined #perl6
06:12 chenryn joined #perl6
06:19 xfix joined #perl6
06:26 Rounin joined #perl6
06:33 dayangkun joined #perl6
06:45 [Sno] joined #perl6
06:48 kaleem joined #perl6
06:58 vendethiel joined #perl6
07:11 jluis joined #perl6
07:15 chenryn joined #perl6
07:30 gfldex joined #perl6
07:53 vendethiel joined #perl6
08:01 FROGGS joined #perl6
08:08 telex joined #perl6
08:09 kjs_ joined #perl6
08:10 prime joined #perl6
08:11 zakharyas joined #perl6
08:14 kjs_ joined #perl6
08:21 booly-yam-4366 joined #perl6
08:25 vendethiel joined #perl6
08:29 darutoko joined #perl6
08:31 chenryn joined #perl6
08:33 abraxxa joined #perl6
08:42 xinming_ joined #perl6
08:48 virtualsue joined #perl6
08:49 tinyblak_ joined #perl6
08:52 vendethiel joined #perl6
09:09 chenryn joined #perl6
09:10 jnthn Ooh, snow! :) Morning, #perl6
09:11 tadzik good morning jnthn
09:14 FROGGS morning
09:15 nwc10 I used to know that - "snö"
09:15 nwc10 (but I had to look it up, because I couldn't remmeber what sort of accented o it has"
09:15 nwc10 er. s/"/)/
09:20 Mso150 joined #perl6
09:22 zakharyas joined #perl6
09:23 JimmyZ morning, jnthn
09:24 moritz nwc10: in Norwegian it would be snø - not sure about Swedish
09:24 nwc10 Google thought Swedish was snö
09:24 moritz might well be possible
09:24 nwc10 it used to be the only Swedish word I (reliably) knew
09:25 nwc10 I fail - I don't even know "beer" (in Swedish)
09:25 jnthn öl
09:25 nwc10 good. that's like Danish.
09:25 nwc10 I stand a chance of remmebering that.
09:25 nwc10 thanks
09:25 nwc10 jnthn++
09:26 FROGGS do you pronounce the swedish ö like the german ö?
09:26 moritz it's very close
09:27 moritz that is, indistinguishable for a German
09:27 jnthn I already knew snö, because it's one of the words sometimes used to explain why my train is late/cancelled :P
09:27 moritz de snø, de snø, tidelibom
09:28 nwc10 "the big book of Swedish railway excuses"?
09:28 nwc10 jnthn: do they also have the "wrong kind of snow"?
09:29 jnthn "Comes in 3 volumes!"
09:29 jnthn Yes, there's that too :)
09:29 nwc10 (which, seriously, was a genuine excuse - the "wrong" kind was very fine dry snow, not the usual wet snow, and the wrong kind was getting through the grills and stuff, and then melting inside the trains)
09:30 mvuets joined #perl6
09:30 moritz which of course no engineer could have predicted
09:32 nwc10 possibly they could, but the cost/benefit analysis was "oh, smeg it"
09:32 nwc10 (possibly using a ruder term)
09:32 kjs_ joined #perl6
09:34 jnthn .oO( "oh, снег it" )
09:35 dakkar joined #perl6
09:40 vendethiel joined #perl6
09:44 mathw morning!
09:44 mathw in England we have the wrong kind of leaves on the line
09:45 mathw which is laughed at a lot, but they form a sort of slippery film that means the trains can't brake effectively
09:45 mathw recent news reports said they were testing train-mounted lasers to clear such things off the tracks
09:45 mathw it's the future!
09:46 mathw I can tell because we have Perl 6 and LASERS ON TRAINS
09:46 moritz we had lasers on watches in 2001 (in a Bond movie, that is... :-)
09:46 * mathw sets up a GitHub repo for Railway::Util::Laser
09:47 sergot hi o/
09:52 TuxCM joined #perl6
09:54 FROGGS sergot: btw, I am working (hard) on XML::LibXML, in case you wanna joing the fun :o)
09:54 FROGGS join*
09:59 FROGGS sergot: the good thing is, once we have the libxml2 bindings, XML::Compile should be fairly straight and perhaps easy to port
10:00 FROGGS and then we can slurp WSDL files and access webservices just like an ordinary routine /o/
10:00 rindolf joined #perl6
10:01 moritz and then we're doomed.
10:02 FROGGS no we're not :o)
10:02 moritz I'm 70% joking and 30% serious
10:03 moritz pretending a remote interface is local is dangerous
10:03 * FROGGS .oO( perhaps we are DOMed )
10:03 moritz because reliability, security and performance differ significantly between local and remote interfaces
10:03 FROGGS moritz: you'd call it on your soap object... like in P5
10:04 moritz FROGGS: then it's likely a rather small DOOM :-)
10:04 sergot FROGGS: sounds interesting :)
10:04 jnthn Still, it's fun to see moritz++ on his SOAP box... :)
10:04 sergot FROGGS: I'm joining :))
10:04 FROGGS \o/
10:04 FROGGS --> https://github.com/FROGGS/p6-XML-LibXML
10:05 moritz guess I read too much Fowler
10:05 jnthn moritz: I largely agree, fwiw. :)
10:05 jnthn http://citeseerx.ist.psu.edu/viewdoc/download​;jsessionid=E59A29E29374D410E0F70C97247C6225?​doi=10.1.1.41.7628&amp;rep=rep1&amp;type=pdf is good reading on the matter
10:05 FROGGS sergot: the test files have a lot commented out tests, that need some missing mapping or functionality
10:05 FROGGS sergot: that'd be a good place to start
10:05 moritz jnthn: but you can't resist a SOAP pun :-)
10:06 rurban joined #perl6
10:06 FROGGS sergot: besides that, I have the tests from the P5 modules uncommitted on my box... I'll commit these once I've 6ified them a bit
10:15 denis_boyun_ joined #perl6
10:18 virtualsue_ joined #perl6
10:20 vendethiel joined #perl6
10:20 nwc10 http://programming.tudorconstantin​.com/2015/01/perl-already-won.html -- ... it results that the average Perl developer has 12 years of software development experience. What kind of code would you prefer in your business critical, money making software products? ...
10:21 nwc10 I had never thought of spinning it *that* way.
10:22 sergot FROGGS: oki :)
10:23 FROGGS sergot: commit messages go to #perl-lwp-gsoc btw
10:28 rurban1 joined #perl6
10:28 rurban1 left #perl6
10:32 osfameron nwc10: nice link, thanks
10:32 nwc10 osfameron: credit davewood for it (I failed to, above)
10:39 osfameron nwc10: ah, great (I just RT'd @tudorconstantin's tweet about it in the end)
10:39 Woodi_ hallo today :)
10:43 Woodi_ orginal plan for Multics/Unix was to have memory in "layers" but accesible in same way. but Unix got "everything is filesystem" :)  so maybe remote objects accesing/calling could be generalized in some way too ?
10:45 donaldh joined #perl6
10:46 rurban1 joined #perl6
10:51 Woodi_ so we had a bit of state of Perl6 lastly :) looks nqp is what to blame (for everything). would be nice to know what is not right in nqp - becouse eventual porting Perl6 to new platfroms probably would be via nqp (or vm). and Parrot needs something from nqp and nqp wants something from Parrot...
10:53 Woodi_ also looks like Parrot threads have parts of sheduler/Channel build in, would be hard to get that MS API to Parrot ? :)
10:54 vendethiel joined #perl6
10:54 moritz Woodi_: what gives you the impression that nqp is to blame for anything?
11:03 Woodi_ it is common part in hot discusions
11:04 pecastro joined #perl6
11:05 Woodi_ moritz: and nqp is natural candidate for problematic place: it API point to the external world from Perl6
11:05 moritz Woodi_: can you please be more specific?
11:05 Woodi_ not realy...
11:06 IllvilJa joined #perl6
11:06 timotimo what discussions are you refering to?
11:06 moritz Woodi_: the only reference that I could relate to your statement was from rurban yesterday, who claimed that NQP lexpads were broken
11:06 timotimo (also: good morning!)
11:06 moritz (without any evidence)
11:06 moritz but given that NQP lexpads implement Perl 6 semantics just fine, I hesitate to agree
11:07 Woodi_ moritz: first, from history ;) nqp was part when things goes separate ways.
11:08 Woodi_ moritz: possible it is that Parrot implementation cast something on Parrot-using applications
11:09 moritz Woodi_: your statements are still too vague for me to make any sense of, sorry
11:09 salv0 joined #perl6
11:10 donaldh Woodi_: Who is "we" that "had a bit of state of Perl6" ?
11:10 donaldh Woodi_: What is nqp to blame for?
11:11 * btyler also can't really understand what Woodi_ is talking about
11:11 * timotimo neither
11:11 donaldh Woodi_: Perl6 is already on parrot, jvm and moarvm largely due to the portability of nqp.
11:12 Woodi_ moritz: np :) that history is more p2p then (actual) technical issues. but I'm sure rurban++ have something specific in mind about nqp "model"
11:12 donaldh So Perl6 can be ported to (oralready runs on) any hardware platform that can run those vms.
11:12 Woodi_ donaldh: we, here, nation of backloggers :)
11:12 IllvilJa joined #perl6
11:13 Woodi_ donaldh: a) history of Perl6 internal conflicts;  b) rurban++ pointed something about MoarVM's simple thread implementation - that's a state
11:15 Woodi_ donaldh: I do not negate need for nqp. just as it is one of methods to implement Perl6 so it must communicate with all that big world out there. and this make it point of problems
11:16 timotimo we have problems inside NQP, we have problems inside Rakudo, we have problems inside parrot, moarvm, the JVM ... i don't understand what point you're making :)
11:17 donaldh Woodi_: If you have some specific nqp problems that need to be fixed then describing them would be helpful, so we can have a go at fixing them.
11:17 Woodi_ timotimo: just some specific info not our usual pink fog :)
11:18 Woodi_ donaldh: that's my point. I would like to know more eg. what rurban++ would like to have available from nqp
11:18 timotimo not meaning to offend, but it seems like you're just adding more pink fog right now? at least i don't exactly understand what you mean
11:19 timotimo oh, so maybe it's that you're receiving some pink fog from rurban?
11:19 Woodi_ timotimo: possible, I assume rurban talk sensibly :) maybe from Parrot paint of view.
11:21 KCL joined #perl6
11:24 Woodi_ also: "simple thread optimization", maybe there is no such thing :)
11:25 Woodi_ optimization^Wimplementation
11:26 denis_boyun_ joined #perl6
11:35 rurban https://github.com/perl6/nqp/issues/67
11:37 FROGGS I remember that one
11:37 FROGGS it is just... I don't know what to do
11:38 leont joined #perl6
11:38 moritz FROGGS: I felt that same. We should add that to the issue
11:42 jnthn donaldh: Did you get any further with https://gist.github.com/do​naldh/91a212b38725642131be ?
11:42 FROGGS I dunno what "support the new Proxy pmc" means by looking at https://github.com/perl6/nqp/blob/ma​ster/src/vm/parrot/pmc/nqplexpad.pmc
11:42 FROGGS rurban: can you explain a bit what we need to do?
11:43 jnthn donaldh: Now I'm more concentrated, #2 still feels like the way to go (assuming we're clearing them on the cloned node after cloning)
11:43 donaldh jnthn: good reminder. I have a trivial fix that clears the annotations at the same time as clearing the node.
11:44 jnthn donaldh: Ah, cool.
11:44 jnthn donaldh: Then I'll not task steal it anytime soon :)
11:44 donaldh I'll commit the nqp changes and then submit a PR for rakudo.
11:44 jnthn \o/
11:44 FROGGS donaldh++
11:44 jnthn Does it shave much off CORE.setting size, ooc?
11:45 donaldh A bit yes. i will make note of the size differences.
11:45 jnthn Cool :)
11:47 jnthn I got a meg or so off yesterday in a branch I'm working on; that was measured on MoarVM, but (once I do a bit more porting of 6pe) we'll get a win on JVM too; maybe less given the .jar is compressed.
11:49 timotimo a meg isn't half bad!
11:51 virtualsue joined #perl6
11:56 rurban I'm a bit busy preparing the new release on slow vms...
11:56 LLamaRider joined #perl6
11:58 FROGGS rurban: no hurry
12:06 dalek nqp: 9f1320c | donaldh++ | src/QAST/Node.nqp:
12:06 dalek nqp: Add clear_annotations method.
12:06 dalek nqp: review: https://github.com/perl6/nqp/commit/9f1320cb2f
12:09 nwc10 is there a release name yet for this month?
12:10 donaldh CORE.setting.jar 2.9M -> 2.6M (10%)
12:10 nwc10 nice.
12:11 donaldh That's nearly 1M off the raw .class file.
12:12 nwc10 win
12:12 jnthn \o/
12:14 nwc10 [Coke]: is there a name yet for this month?
12:14 nwc10 as it looks like he's the right person to ask directly
12:15 jnthn err&
12:16 nwc10 doh, my pun-o-matic is failing me, as I can't quite figure out a seamless way to make some comment about "going out the dor"
12:19 nwc10 andthen no-one else attempts to help me. :-(
12:21 pecastro joined #perl6
12:28 * masak .oO( help me, orelse )
12:35 donaldh jnthn: https://github.com/rakudo/rakudo/pull/356
12:36 pecastro joined #perl6
12:37 dalek rakudo/nom: 37a03fc | donaldh++ | src/Perl6/Actions.nqp:
12:37 dalek rakudo/nom: Clear the QAST annotations when building inlining info.
12:37 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/37a03fc42e
12:37 dalek rakudo/nom: 35c0507 | donaldh++ | tools/build/NQP_REVISION:
12:37 dalek rakudo/nom: Bump nqp version to get QAST::Node.clear_annotations
12:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/35c0507873
12:38 dalek rakudo/nom: 0bf4263 | FROGGS++ | / (2 files):
12:38 dalek rakudo/nom: Merge pull request #356 from donaldh/nom
12:38 dalek rakudo/nom:
12:38 dalek rakudo/nom: Clear the QAST annotations when building inlining info.
12:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0bf4263518
12:49 moritz looking at the discussion and the two patches for pull request 356, it's clear to me that quite some diagnosis work (several hours) went into this, and yet basically only three lines of codes were added :-)
12:51 FROGGS moritz: I love it when you only have to add or tweak a few lines... often that means that the approach is right :o)
12:52 vendethiel FROGGS: or that you added bigger bugs ;-)
12:53 moritz FROGGS: or even just remove a line or two :-)
12:55 moritz the other day I thought "what would happen if we made scopes first-class objects?"
12:55 moritz and a vision emerged where variables/objects inside a scope could be either private or public
12:56 moritz private elements are only exposed to the lexical scope itself, public ones can be accessed from everywhere
12:56 arnsholt donaldh++
12:56 moritz and by adding some scope as an outer to a scope, you could get importing / inheritance-like structures
12:56 moritz indeed, donaldh++
12:57 moritz and then i wondered how far object orientation and scopes could be unified
12:57 jnthn donaldh++ # nice find!
12:57 FROGGS moritz: interesting idea
12:58 moritz and I thought "wait, scopes have no instantiation", but that's not entirely true
12:58 moritz entering the outer scope kinda instantiates a scope
12:58 moritz but it's not quite the same as with objects
12:58 moritz (just for the record, this is not something that I want to pursue for Perl 6, more of a general interesting in programming languages)
12:59 moritz I guess I have to mediate a bit more on that
12:59 kaleem joined #perl6
13:00 moritz well, lexicals in a closure are kind of like attributes, and instantiation does correspond to taking a closure / creating a scope in some way
13:05 jnthn moritz: In C#, they compile closures to an object plus a delegate (function pointer associated with object instance), and promote the local variables to be stored in that object. Which shows that at least as an implementation strategy the idea works... :)
13:08 moritz jnthn: well, I thought more the other way round: implement objects in terms of scopes/closures
13:08 moritz or not implement, more "expose to the user"
13:13 jnthn ah
13:26 lumimies moritz: IIRC Self works somewhat like that
13:27 fhelmberger joined #perl6
13:28 lumimies moritz: It uses prototype delegation as access to an outer scope
13:29 moritz lumimies: ah yes, the prototype model does seem to fit with the idea
13:47 dayangkun joined #perl6
14:00 masak good afternoon, #perl6
14:00 pr1_ joined #perl6
14:02 pr1_ left #perl6
14:18 adu joined #perl6
14:19 rurban joined #perl6
14:29 jaderdias joined #perl6
14:35 vike joined #perl6
14:37 xfix joined #perl6
14:38 masak m: my @a; my $i = -2; try @a[$i]; say $! ~~ X::Subscript::Negative; say $!.^name
14:38 camelia rakudo-moar 0bf426: OUTPUT«False␤X::OutOfRange␤»
14:38 masak I have a test failure in 007 because the exception used to be X::Subscript::Negative but is now X::OutOfRange instead.
14:39 masak I will change the 007 code regardless -- just curious what prompted this change.
14:39 arnsholt More general, I guess?
14:40 masak why is that a good thing here? X::Subscript::Negative is more specific and more descriptive.
14:40 masak I can't think of a better situation to use it.
14:40 masak note that we still *have* X::Subscript::Negative in the setting.
14:40 arnsholt Yeah. But for an array that supports arbitrary indices (which Perl 6 arrays should, ultimately), I think out of range is the appropriate response
14:41 masak I don't think that argument holds up as long as I'm using .[]
14:41 masak my S09 is a bit rusty, but I think .[] always starts at 0.
14:41 donaldh the subscript is out of range. The fact that it is also negative is an interesting property, but not the error.
14:42 masak why did it change from one (specific) exception type to another (more general and less descriptive)?
14:42 arnsholt Ah. I thought an appropriately shaped array was supposed to support @foo[-1]
14:42 donaldh don't negative subscripts select from end?
14:42 masak that's Perl 5.
14:42 masak in Perl 6, that's spelled .[*-2]
14:43 arnsholt No, not as "index from end", but an array that lets you have something like -2 .. 2 as valid indices
14:44 masak then you have to use .{}, IIRC.
14:44 arnsholt Ah, ok
14:44 adu joined #perl6
14:45 jnthn masak: It may be an unintentional change of behavior; lizmat++ is the person to ask
14:45 masak aye, I saw her changes in the git log.
14:45 masak it's probably just a change introduced by mistake.
14:45 masak m: say X::Subscript::Negative ~~ X::OutOfRange
14:45 camelia rakudo-moar 0bf426: OUTPUT«False␤»
14:45 donaldh Sameex
14:45 donaldh Same exception for both ends of the range?
14:47 dalek mu: 033b83e | sergot++ | misc/gsoc-2015/ideas.md:
14:47 dalek mu: ideas page for gsoc2015, lets fill it up
14:47 dalek mu: review: https://github.com/perl6/mu/commit/033b83e3fd
14:47 masak then why do we still have X::Subscript::Negative?
14:48 arnsholt I agree that Negative should be a subclass of outofrange
14:49 donaldh As long as you never use it for anything else.
14:49 arnsholt Troo
14:50 FROGGS m: my @a; @a[1.7] = 42; say @a[1] # <--- is that intended?
14:50 camelia rakudo-moar 0bf426: OUTPUT«42␤»
14:50 masak yes.
14:50 FROGGS k
14:51 masak what behavior did you expect, ooc?
14:51 JimmyZ m: ( 13827390 - 12081111 ) /1024/1024
14:51 camelia rakudo-moar 0bf426: ( no output )
14:51 JimmyZ m:say ( 13827390 - 12081111 ) /1024/1024
14:51 masak `say`
14:51 FROGGS masak: some sort of out of range exception
14:51 JimmyZ m: say ( 13827390 - 12081111 ) /1024/1024
14:51 camelia rakudo-moar 0bf426: OUTPUT«1.66538143␤»
14:52 masak FROGGS: (a) works in Perl 5, (b) it's within range, in the sense that the array auto-extends
14:52 gtodd "To succeed in today’s market, services and IT organizations  must use high-performing technologies to increase revenue and margin while improving customer satisfaction, gain competitive advantages and strengthen their brands."
14:52 masak "not an integer" does not mean "out of range".
14:52 gtodd oops
14:53 gtodd ww
14:53 masak gtodd: you meant to paste that to #marketingbs ? :P
14:53 FROGGS masak: though, the indexes are integers, not nums
14:53 masak gtodd: as a modern consumer, I'm always looking for more ways to engage with brands.
14:54 masak FROGGS: Perl has a tendency to cast rather than fail when it's straightforward to do so.
14:54 JimmyZ m: say ( 13827390 - 12077603 ) /1024/1024
14:54 camelia rakudo-moar 0bf426: OUTPUT«1.66872692␤»
14:54 masak FROGGS: just as hashes auto-cast to Str keys, arrays auto-cast to Int indices.
14:54 jnthn masak, FROGGS: You could say it's a floored design... :P
14:55 JimmyZ donaldh++ # 1.668 smaller on MoarVM
14:55 tinyblak joined #perl6
14:55 donaldh nice!
14:55 masak jnthn: floor wax *and* dessert topping!?
14:55 FROGGS jnthn: in german I could say: "I'm going to the ceiling" :P
14:55 FROGGS masak: yes, you are right of course
14:55 gtodd heh my chat app is "friends: with en2es@bot.talk.google.com  .. etc. meant to paste in there
14:55 JimmyZ with 6pe will 11M
14:55 JimmyZ *will be
14:56 gtodd masak: machine translation really fails on some of these things :)
14:56 jnthn BS in, BS out... :P
14:57 JimmyZ jnthn: will we have static optimization for .moarvm in the long future? :P
14:58 gtodd masak: OTOH this could be a sort of fortuitous accident that inspires #perl6 to boost the brand!
14:58 donaldh joined #perl6
14:58 jnthn JimmyZ: Perl6::Optimizer and NQP::Optimizer do the static optimization stuff. Dynamic optimization is inherently dynamic.
14:58 jnthn That is, based on the types and usages patterns that actually show up at runtime.
14:59 JimmyZ I  meant something like CSE and AA etc
15:00 JimmyZ basic AAa/CSE
15:00 tinyblak joined #perl6
15:01 jnthn I can imagine CSE showing up in Perl 6 level optimization, perhaps... AA isn't an optimization, it's just an analysis you need to do something with, and the sorts of things you'd do are likely better done at VM level.
15:01 jnthn And about those two at VM level, you probably get more bang for your buck if doing them post-inlining.
15:02 jnthn And inlining certainly depends on type specialization, which is certainly dynamic.
15:02 jnthn So no, I don't see those two wanting doing at bytecode assembly time
15:02 jnthn It's also important to remember that optimization is costly and has to pull its weight.
15:03 masak gtodd: "if only we had more marketing people among us" :P
15:03 jnthn And "do it when we know the code is hot" is one way to do better on that axis.
15:03 JimmyZ jnthn: I saw a lot code like wval ....; getattr ..... when accessing $!x multi time in a method, which looks like a good static optimization
15:04 JimmyZ it's about CSE?
15:04 * JimmyZ is not sure...
15:04 jnthn Under spesh, though, the getattr tends to become a pointer index operation, and the wval instruction is deleted.
15:05 jnthn You could certainly lift duplicate wval accesses
15:05 jnthn Though again, we can JIT most of those into static pointer loads.
15:07 JimmyZ so it's about load forwarding
15:08 tinyblak_ joined #perl6
15:11 _4d47 joined #perl6
15:17 timotimo JimmyZ: can you also measure the maxrss of a hello world before and after donaldh's patch?
15:23 JimmyZ timotimo: look like ~0.01s save
15:25 jnthn I think timotimo meant memory use
15:25 jnthn But another 0.01s off is good too :)
15:27 timotimo yeah, memory usage please :)
15:28 kurahaupo joined #perl6
15:30 JimmyZ REPL: 55.1M, , after hello world: 127.8m
15:30 JimmyZ REPL: 55M, after hello world: 119.6M
15:31 JimmyZ save 8.2M , donaldh++ again
15:31 timotimo holy nice!
15:31 timotimo donaldh++ # i like that a lot
15:34 jnthn away for a few hours &
15:34 jnthn oh, and donaldh++ again :)
15:42 perturbation joined #perl6
15:42 perturbation left #perl6
15:47 kjs_ joined #perl6
15:58 spider-mario joined #perl6
16:12 mr-foobar joined #perl6
16:34 khisanth_ joined #perl6
16:35 dj_goku joined #perl6
16:35 dj_goku joined #perl6
16:35 brrt joined #perl6
16:36 kaleem joined #perl6
16:53 booly-yam-4366 joined #perl6
16:57 lizmat good *, #perl6
16:58 telex joined #perl6
17:00 dwarring joined #perl6
17:04 rindolf joined #perl6
17:07 [Sno] joined #perl6
17:31 dalek ecosystem: 8cebaad | (David Warring david.warring@gmail.com)++ | META.list:
17:31 dalek ecosystem: added CSS::Module::CSS3::Selectors - a component of CSS::Module
17:31 dalek ecosystem: review: https://github.com/perl6/e​cosystem/commit/8cebaad21e
17:31 mr-foobar joined #perl6
17:38 dwarring ^^ that's a small low depenency, for when you just want Level 3 Selectors
17:38 abraxxa joined #perl6
17:39 dwarring prompted by discussions a few days ago on porting Mojo::DOM::CSS
17:39 dwarring hoelzro: ^^ hoping that might be a useful lightweight alternative
17:40 dwarring to the pretty hefty and experiemental CSS::Module
17:42 dwarring btw, CSS::Grammar will also need to be reinstalled
17:43 rmgk_ joined #perl6
17:47 stimpi joined #perl6
17:54 jluis_ joined #perl6
18:01 flussence I tried writing a CSS grammar around 2010-ish, but a bunch of things made me give up out of frustration. I think the css3-syntax spec itself had errors...
18:02 moritz jnthn: am I right in assuming that instances of class Variable are only available in traits?
18:02 masak flussence: I imagine part of the difficulty is that (like with HTML), CSS has to be fault-tolerant and resume the parse even when there are errors.
18:04 flussence masak: part of the frustration, back then, was waiting insane amounts of time for small tests to run :)
18:04 masak huh.
18:05 flussence and the regex engine didn't always work as expected - I think I picked the wrong time to try heavy string processing projects...
18:05 lizmat masak: wrt to the changed <0 exception: I felt that one exception for all out of bounds errors would be best
18:06 molaf joined #perl6
18:06 lizmat I just haven't gotten around to removing the other <0 errors, which is why there is still code using it
18:06 masak lizmat: I see.
18:06 lizmat but if you think we should have a separate exception for <0
18:06 masak lizmat: I don't have any objection either way -- but I was curious about why the semantics had changed.
18:06 lizmat then I'll put those in again
18:06 masak I didn't see it announced anywhere.
18:06 masak and it broke my code, because I relied on Rakudo throwing that exception :)
18:07 lizmat well, I've moved the <0 check from postcircumfix[] to at_pos
18:07 masak but it's all good -- already fixed my code and now we're throwing the exception instead.
18:07 lizmat that feels fragile
18:07 lizmat and reminds me of the whole discussion on p5 wrt to new warnings
18:07 masak once the exception type goes away, we'll either declare it ourselves, I guess, or decide to just have one OutOfRange type too.
18:07 lizmat and the use of "use FATAL"
18:07 moritz m: my %h is EnumMap;
18:07 camelia rakudo-moar 0bf426: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/24Hb6NMOinâ�¤Variable trait 'is TypeObject' not yet implemented. Sorry. â�¤at /tmp/24Hb6NMOin:1â�¤------> [32mmy %h is EnumMap[33mâ��[31m;[0mâ�¤    expecting any of:â�¤        constraintâ�¤Â»
18:07 moritz didn't we used to do that?
18:08 masak moritz: not that I recall.
18:08 lizmat not as far as I now
18:08 lizmat I tried to when I was working on traits
18:08 lizmat but my fu was too weak then, and probably is now
18:08 skids Only way I could get at an EnumMap to test somethin the other day was to make a Match.hash
18:09 lizmat ??
18:09 moritz m: say EnumMap.new(a => 42).perl
18:09 camelia rakudo-moar 0bf426: OUTPUT«EnumMap.new()␤»
18:09 moritz m: say EnumMap.new("a" => 42).perl
18:09 camelia rakudo-moar 0bf426: OUTPUT«Default constructor for 'EnumMap' only takes named arguments␤  in method new at src/gen/m-CORE.setting:950␤  in block <unit> at /tmp/ihhEVMv0qi:1␤␤»
18:09 moritz m: say EnumMap.new().perl
18:09 camelia rakudo-moar 0bf426: OUTPUT«EnumMap.new()␤»
18:10 moritz ah well, at least an empty enummap is easy to get :-)
18:10 skids ^^ what moritz just did
18:10 lizmat I'm not sure what you'd expect there
18:10 lizmat EnumMap does not have public attributes
18:11 skids Id' expect it to operate like a ro Hash.
18:11 moritz m: for EnumMap.new(a => 42) -> $p { say $p.perl }
18:11 camelia rakudo-moar 0bf426: ( no output )
18:11 skids m: my %h = Hash.new(1 => 2); %h.say # that works, so why not EnumMap?
18:11 camelia rakudo-moar 0bf426: OUTPUT«1 => 2␤»
18:13 lizmat skids: we could do that, I guess
18:14 lizmat masak moritz jnthn TimToady timotimo comments?
18:15 moritz lizmat: I agree with skids++ that EnumMap is pretty useless right now as a user-exposed type
18:15 lizmat for what I can seem, EnumMap is not really a first class citizen atm
18:15 moritz right
18:15 moritz so we should either make it one, or hide it as much as possible
18:16 masak EnumMap, besides having a really wonky name, is currently being kept in the cupboard under the stairs, yes.
18:18 skids Do subclasses of EnumMap benefit efficiency-wise from notinheriting an initializer?
18:18 lizmat I doubt it
18:18 moritz skids: I don't think performance is the issue
18:19 moritz skids: it's more that hash assignment is implemented in the STORE method
18:19 moritz skids: so the Hash constructor creates an empty hash, and then calls STORE
18:19 skids Ah.
18:19 moritz skids: but EnumMap doesn't have the STORE method
18:19 [Sno] joined #perl6
18:19 moritz (all "if I remember correctly")
18:20 vendethiel .oO( or maybe we should have a "is ro" on variables. )
18:20 vendethiel or is that what ::= is for?
18:22 * lizmat tries something by moving new and STORE from Hash to EnumMap
18:23 dj_goku joined #perl6
18:23 dj_goku joined #perl6
18:24 moritz lizmat: do your remember what 'has $.slash' in class Variable is about?
18:24 moritz oh, it seems to be the match object with which it was parsed
18:26 lizmat yup, needed for some variable traits
18:26 lizmat iirc
18:27 bowtie joined #perl6
18:30 masak the fact that this thread https://news.ycombinator.com/item?id=8906331 seriously argues that Perl *4* was the best Perl ever, feels oddly comforting in some way.
18:30 masak I mean, one suspects in many cases that HN is full of cooks, but it's seldom this clear.
18:30 huf i dunno, every time i tried to look at HN i found hype-chasers
18:31 masak it is a bit of a relief from the normal Perl 5 vs Perl 6 thing, I confess. :)
18:31 huf :)
18:31 gtodd masak: aren't they all very young "whiz kid" types who passionately believe they are entrepreneurs?
18:31 huf i guess perl4 was the last awk-replacement-ish-ish version of perl?
18:31 huf (note: i'm far too young to have used p4)
18:32 gtodd in case awk sed scripts did not work on your versio of unix you could install gnu versions or just install perl
18:33 huf yeah, perl is portable. it was the easiest way to implement readlink -f (iirc) on osx ;)
18:33 gtodd I remember using perl4 it with windows 3.1 ....
18:33 * geekosaur finds HN mostly useless fwiw
18:33 gtodd (via telnet on a unix host)
18:33 huf yeah, at least reddit is racist and horrible, so it confirms my depressing worldview :)
18:34 gtodd twitter? :)
18:36 gfldex joined #perl6
18:40 masak geekosaur: I find the articles interesting, but I usually just skim the comments for a little bit of perspective on the article itself. usually not that much.
18:41 geekosaur I never see comments. (/me <3 Shut Up browser extension)
18:43 18VAB0DX1 joined #perl6
18:44 japhb Did anyone have any ideas for how multiple Roles can all contribute to BUILD (or some other object construction hook) without having to write an explicit BUILD in the composing class that invokes the Role BUILDs explicitly?
18:45 timotimo lizmat: comments about what?
18:49 mvuets joined #perl6
18:58 lizmat timotimo about making EnumMap.new a full ciitzen
19:01 lizmat $ 6 'my $h = EnumMap.new("a"=>42); $h<a> = 43; say $h'
19:01 lizmat EnumMap.new("a" => 43)
19:01 lizmat skids: I guess ^^^ should be verboten ?
19:01 brrt joined #perl6
19:02 skids Right, even assignment I think, maybe.
19:02 lizmat you mean afterwards assigning to $h ?
19:03 skids I mean I don't know, should declarative assignment work or not?
19:03 skids my EnumMap %h = ( ... );
19:03 masak no.
19:03 lizmat dinner&
19:04 masak not unless you are storing EnumMaps in that hash.
19:04 brrt FROGGS: fwiw i can explain the nqp lexpad bug report
19:04 masak remember, with collection types, the declared type before the variable is the type of the *values* stored in the collection type.
19:04 brrt or at least i think i can
19:05 skids Oh right.
19:06 skids That's one of those things I'll have to use 5 times before it finally sinks in :-)
19:07 dalek doc: 53cbdb8 | moritz++ | / (2 files):
19:07 dalek doc: (paritially) document class Variable
19:07 dalek doc: review: https://github.com/perl6/doc/commit/53cbdb8c89
19:07 Hor|zon joined #perl6
19:07 anaeem1_ joined #perl6
19:10 gtodd unless one uses a language all the time ...  how does one remember things ....    ?
19:10 masak :)
19:11 gtodd with java your IDE remembers :)
19:11 gtodd the virtue of those crazy perl5 perlvar mnemonics was errm that you may have learned them under age 25 and so they were unforgettable :)
19:11 masak for me, it's about hanging things on the right hooks, mentally.
19:11 gtodd perl6 is/has a way
19:11 gtodd hmm yes
19:11 gtodd hooks
19:14 gtodd I think having sigils helps :-)  ... but amazing error messages ++
19:14 skids Yeah the error messages just keep getting better and better.
19:15 gtodd p6 error messages ++
19:16 gtodd I want them to be easier to make / add :-) ... but  maybe not to the core distribution :-D  I guess something like ~/.perl6critic/my_reminders  ....
19:17 anaeem1 joined #perl6
19:17 gtodd where I create my own custom error grammar that gets to know me :)
19:20 FROGGS joined #perl6
19:21 skids Maybe integrate that into an IDE editor and turn your common mistakes red.
19:21 Mso150 joined #perl6
19:23 denis_boyun_ joined #perl6
19:23 gtodd perl6 has a grammar of itself ... now I want a grammar of myself using perl6 :)
19:23 gtodd hrrm can't build on bsd .... git hist says I'm on branch/nom --> 35c0507
19:24 gtodd In file included from src/core/threads.c:2:
19:24 Mso150_y joined #perl6
19:24 gtodd src/platform/threads.h:7:5: error: conflicting types for 'pthread_yield'
19:25 moritz seems to be a MoarVM thing
19:26 moritz so the moarvm commit might be more interesting
19:26 moritz (but I likely won't be of any use either way)
19:26 gtodd hmm yeah can't tell ... when did it happen ... I haven't been updating moar nqp etc as frequently
19:26 * gtodd looks
19:32 FROGGS gtodd: https://github.com/MoarVM/MoarVM/c​ommit/0194409f7599850d73b8861cd26d​2fe9b9f7f85b#commitcomment-9331701
19:32 bartolin hi #perl6
19:33 FROGGS hi bartolin
19:33 * bartolin is a bit too late to point to that comment
19:33 FROGGS just a bit :o)
19:33 gtodd FROGGS: perfect
19:36 bartolin did anyone had a chance to look at PR 218 for nqp (https://github.com/perl6/nqp/pull/218)?
19:39 nwc10 bisect (eventually) agrees
19:39 Hor|zon joined #perl6
19:39 nwc10 0194409f7599850d73b8861cd26d2fe9b9f7f85b is the first bad commit
19:42 gtodd why would that line have been added (to quiet threads yield)  ... for clang3.5?
19:43 bartolin gtodd: jnthn++ was fixing some warnings clang emitted (see also some of the preceeding commits)
19:44 gtodd yeah  "Quiet pthread_yield() warnings." maybe I will just upgrade my clang :)  ... but I guess it needs some sort of configure dancing to not break on older ones
19:44 bartolin gtodd: http://irclog.perlgeek.de/m​oarvm/2015-01-17#i_9957677
19:45 gtodd I will try to use mostly the same software as jnthn++ :-)
19:46 gtodd (except on BSD) and see what happens
20:01 dalek nqp: f2577cb | usev6++ | src/HLL/sprintf.nqp:
20:01 dalek nqp: Do not try to intify a missing argument
20:01 dalek nqp: return zero instead and let the check for the right number of arguments
20:01 dalek nqp: do its job later on
20:01 dalek nqp:
20:01 dalek nqp: fixes RT #122907
20:01 dalek nqp: review: https://github.com/perl6/nqp/commit/f2577cb116
20:01 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=122907
20:01 dalek nqp: ff57c3a | moritz++ | src/HLL/sprintf.nqp:
20:01 dalek nqp: Merge branch 'master' of github.com:usev6/nqp
20:01 dalek nqp: review: https://github.com/perl6/nqp/commit/ff57c3a30f
20:17 jantore_ joined #perl6
20:28 * lizmat tried working on the Perl6 weekly just now, but is not feeling well enough
20:28 lizmat probably something I ate yesterday  :-(
20:28 lizmat I'll try to do it tomorrow morning
20:28 moritz lizmat: get well soon!
20:29 moritz (for your own sake, not just for the weekly)
20:29 lizmat moritz: thank you
20:29 masak lizmat: what moritz said.
20:32 dalek rakudo/nom: d78c678 | lizmat++ | src/core/ (2 files):
20:32 dalek rakudo/nom: Make EnumMap a first class citizen, skids++
20:32 dalek rakudo/nom:
20:32 dalek rakudo/nom: EnumMap.new should now work like Hash.new.  There are still issues to be
20:32 dalek rakudo/nom: resolved wrt to the immutability of the EnumMap.  Most of this patch consists
20:32 dalek rakudo/nom: of moving methods "new" and STORE from Hash to EnumMap.
20:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d78c67846d
20:32 lizmat afk&
20:37 booly-yam-6137 joined #perl6
20:43 japhb jnthn: around?
20:44 denis_boyun__ joined #perl6
20:46 denis_boyun joined #perl6
20:51 kjs_ joined #perl6
21:02 araujo joined #perl6
21:02 araujo joined #perl6
21:03 Mso150_y_i joined #perl6
21:04 dalek nqp: 52733c5 | (Gerhard R)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
21:04 dalek nqp: Optimize nqp::join() on JVM
21:04 dalek nqp: review: https://github.com/perl6/nqp/commit/52733c5aa4
21:04 dalek nqp: a702d5a | moritz++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
21:04 dalek nqp: Merge branch 'gerdr/opt-jvm' of github.com:gerdr/nqp
21:04 dalek nqp: review: https://github.com/perl6/nqp/commit/a702d5a79e
21:05 moritz see https://github.com/perl6/nqp/p​ull/106#issuecomment-70560333 for a discussion of the merits of the patch just pushed
21:07 bbkr joined #perl6
21:10 bbkr hi. how to properly define 2 classes with circular dependency? "class A; use B; class A; has B $b" (the other file has A and B reversed) still gives me info that A is not found
21:11 bbkr "class A {...}; use B; class A; has B $.b" - I meant that, not declaring A::A
21:12 arnsholt They need to be defined in the same file
21:15 bbkr can they be stubbed in same file but implemented in different?
21:16 arnsholt Don't think so. I can't quite remember why it's like this, but I'm pretty sure they need to both be in the same file
21:16 arnsholt Something to do with parsing, IIRC
21:17 bbkr thanks, I'll try this way
21:20 kjs_ joined #perl6
21:23 panchiniak joined #perl6
21:27 panchiniak left #perl6
21:27 panchiniak joined #perl6
21:28 virtualsue joined #perl6
21:28 moritz arnsholt, bkkr: I think the catch is that you can only use a stubbed class as a type constraint if you un-stub (properly define) it in the same compilation unit
21:30 masak it's a bit like you can only call a sub if you declare it in the same compilation unit.
21:30 arnsholt Yeah. And there's a moderately fundamental reason it has to be like that, IIRC
21:30 masak only difference is that subs don't have to be predeclared.
21:33 masak I kind of like these "ok, you're allowed to do this, but I'll come back and CHECK at the end of the compunit" things. they make the language more forgiving without giving up on useful checks.
21:33 moritz well, with subs, the reason is that subs live in lexpads, and those are immutable
21:33 moritz that is to say, they become immutable at CHECK time
21:34 moritz so if they can't be resolved at CHECK time, they never can be
21:40 bbkr makes sense, thanks for explanation
21:40 Alina-malina joined #perl6
21:44 moritz oh, another thing is sorting MMD candidates
21:44 moritz that needs to happen at some point, and if a type that appreas in a signature isn't fully defined, we don't know its MRO, and thus can't compare it to others for sorting
21:45 masak oh, that is a good reason.
21:45 donaldh joined #perl6
21:45 moritz *appears
21:45 masak wow, a lot of things come together at CHECK time.
21:46 moritz I'm glad they do, otherwise all that stuff would need to happen at run time
21:46 masak or the compiler would do it ASAP but would lose a lot of that patience/forgiveness.
21:48 moritz and what happens if multi is called before the candidate list can be sorted?
21:49 kaare_ joined #perl6
21:51 masak that's an interesting question.
21:51 masak I'd say that'd force an early sorting of the candidate list. if it's to be allowed at all.
21:51 masak oh, you said "before it can be sorted". OK.
21:52 masak well, hm. I guess there are *some* dispatches that could work out anyway in some cases.
21:52 masak but it feels like playing with fire.
21:52 masak maybe the answer should be "don't do that".
21:52 leont joined #perl6
21:57 masak m: class T { ... }; multi foo(Int) { say "Int" }; multi foo(T) { say "T" }; BEGIN foo(42)
21:57 camelia rakudo-moar d78c67: OUTPUT«Intâ�¤[31m===[0mSORRY![31m===[0m Error while compiling /tmp/G5wODPXzyXâ�¤The following packages were stubbed but not defined:â�¤    Tâ�¤at /tmp/G5wODPXzyX:1â�¤------> [32m multi foo(T) { say "T" }; BEGIN foo(42)[33mâ��[31m<EOL>[0mâ�¤    expecting a…»
21:57 masak seems to can do dispatch before.
21:57 masak I wonder if there is some more interesting corner case than that...
21:57 virtualsue_ joined #perl6
21:57 bbkr r-m: use A B; # LTA error
21:57 camelia rakudo-moar d78c67: OUTPUT«===SORRY!===␤Cannot invoke null object␤»
21:58 masak bbkr: reported?
21:58 bbkr checking RT right now... I'll report if not known yet
21:58 masak great
21:58 masak ++bbkr
22:00 * TimToady notes that subs are actually specced to become immutable at LINK time, to give the entire application a say in the matter
22:01 TimToady *can have a say
22:01 TimToady oh wait, 'to give'
22:01 TimToady nm
22:02 donaldh :)
22:02 * TimToady obviously doesn't know enough about language :)
22:03 * masak hugs TimToady
22:04 donaldh That's nice. I can run the spectests on JVM in under 20 min, with TEST_JOBS=4
22:05 moritz donaldh: how much memory do you need for that?
22:05 TimToady which probably drives the load average up to about, oh, 12
22:05 donaldh load above 8 yes.
22:05 TimToady though I can get away with =3 on 4 cores
22:05 TimToady if I don't mind firefox getting really sluggish
22:06 donaldh moritz: macbook pro with 16GB but the eval server runs with max 3000m heap
22:07 TimToady 3 kilometers?
22:07 donaldh moritz: That's Java 8
22:08 moritz donaldh: does the standard 'make spectest' use the eval server right now?
22:08 donaldh yes.
22:08 donaldh make spectest can only use the eval server on the JVM backend
22:09 donaldh the codez make it so
22:11 moritz donaldh: I just remembered some back-and-forth because the eval server didn't work reliably for some folks
22:12 * moritz is glad he can spectest rakudo-moar in <4min without any eval server
22:16 dalek nqp: ae6e8e4 | donaldh++ | src/vm/jvm/runtime/org/perl6/n​qp/jast2bc/JASTCompiler.java:
22:16 dalek nqp: Tweak JVM bytecode generation - use constant bytecodes where possible.
22:16 dalek nqp: review: https://github.com/perl6/nqp/commit/ae6e8e4b56
22:25 rhr joined #perl6
22:29 mr-foobar joined #perl6
22:44 kjs_ joined #perl6
22:48 [particle] joined #perl6
22:52 * jnthn back
22:53 jnthn Given EnumMap was meant to be immutable, giving it a STORE method feels kinda wrong.
22:53 japhb jnthn: Is there any (not completely hackish) way for multiple Roles to compose into the same class and yet all contribute to object construction?
22:54 jnthn moritz: iirc, Variable instances are created just for the purpose of variable traits, yes.
22:55 skids jnthn: I think lizmat knows that and that was what she was referring to about the immutability needing to be worked out.
22:55 jnthn japhb: As in, all specify code towards a BUILD?
22:55 jnthn japhb: Not afaik
22:56 jnthn has $.a = ...default value code...; # works fine
22:56 jnthn And the normal initialization approach too
23:02 japhb jnthn: I was looking to have a base class that specified a number of attributes, but roles could be composed in to a subclass to specify stock initialization methods for particular attributes.  So that rather than specify code for building these attributes, subclasses could just 'does FooInitialization'.
23:02 japhb But then I realized for some classes I wanted to initialize some attributes one way, and other attributes another.
23:02 masak nice: http://py3readiness.org/
23:03 japhb The only way I've found to do that is to take advantage of Role punning and 'is' the Roles, rather than 'does' it.
23:03 donaldh Is it possible to use nqp types in perl6 ? e.g. use QAST::Node, etc. in perl6?
23:04 donaldh or do I have to write nqp ?
23:06 jnthn donaldh: FROGGS++'s v5 module uses those from Perl 6, iirc
23:06 jnthn It's maybe not very convenient, but I think it works out.
23:06 adu joined #perl6
23:11 donaldh jnthn++ FROGGS++ I just need :from<NQP>
23:12 skids m: role A { has $.a = self.foo_def; method foo_def { 4 };}; role B does A { method foo_def { 5 } }; class C does B { }; C.new.a.say; # japhb
23:12 camelia rakudo-moar d78c67: OUTPUT«5␤»
23:12 avuserow joined #perl6
23:14 japhb skids: Hmmm, that's not quite I meant, but I might be able to make 'has $.foo = self.foo_def;' work out the way I'm wanting ....
23:16 skids Right now, if you diamond-compose the role with the "has" in it more than once, that only works for class composition, so don't try to do that in a role.
23:17 tinyblak joined #perl6
23:29 tinyblak joined #perl6
23:31 booly-yam-6137 joined #perl6
23:34 fwilson joined #perl6
23:46 dalek rakudo-star-daily: 921da01 | coke++ | log/ (9 files):
23:46 dalek rakudo-star-daily: today (automated commit)
23:46 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/921da0198b
23:46 dalek rakudo-star-daily: ef16e7c | coke++ | log/ (9 files):
23:46 dalek rakudo-star-daily: today (automated commit)
23:46 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/ef16e7c8e4
23:46 dalek rakudo-star-daily: c2b6519 | coke++ | log/ (9 files):
23:46 dalek rakudo-star-daily: today (automated commit)
23:46 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/c2b65191c6
23:46 dalek rakudo-star-daily: da62159 | coke++ | log/ (9 files):
23:46 dalek rakudo-star-daily: today (automated commit)
23:46 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/da6215906d
23:46 dalek perl6-roast-data: 1def276 | coke++ | / (5 files):
23:46 dalek perl6-roast-data: today (automated commit)
23:46 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/1def2765eb
23:46 dalek perl6-roast-data: 1829743 | coke++ | / (5 files):
23:46 dalek perl6-roast-data: today (automated commit)
23:46 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/1829743fe7
23:46 dalek perl6-roast-data: d2a8174 | coke++ | / (5 files):
23:46 dalek perl6-roast-data: today (automated commit)
23:46 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/d2a8174690
23:46 dalek perl6-roast-data: ddde45c | coke++ | / (5 files):
23:46 dalek perl6-roast-data: today (automated commit)
23:46 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/ddde45cedd
23:47 tinyblak joined #perl6
23:48 telex joined #perl6
23:56 adu wow commitfest
23:57 jnthn Hm, rakudo.moar-jit clean, 1 fail for rakudo.moar

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo