»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by moritz on 25 December 2014. |
|||
00:25
jack_rabbit joined
00:33
pecastro left
00:37
jack_rabbit left
00:43
tinyblak_ left,
tinyblak joined
00:47
dayangkun joined
00:48
tinyblak left
|
|||
masak | 'night, #perl6 | 01:00 | |
01:08
tangentstorm left
01:10
tinyblak joined
|
|||
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:13 | |
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:14 | ||
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:17 | |
ugexe | for the purpose of any module installer | 01:19 | |
and for the latter the specs example show a non-auth specific module as emulating an auth specific module | 01:21 | ||
emulates : { "JSON::Fast" : "JSON::XS:auth<cpan:MLEHMANN>" } | |||
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 | ||
s/requires/depends/ | |||
01:28
Ben_Goldberg joined
01:31
BenGoldberg left
01:37
kurahaupo left
|
|||
skids | Well, IMO that can get sticky: | 01:38 | |
If the package really needs a particular implementation of that interface it can say so by supplying an owner. | |||
But then an addition to repos can break that until the package manager gets around to adjusting the Meta file. | |||
from the user perspective: | 01:39 | ||
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. | |||
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:44 | ||
ugexe | you are describing supersedes | 01:47 | |
01:48
dj_goku left
|
|||
ugexe | i am mostly interested in automatically attempting to resolve dependency failures | 01:49 | |
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:50 | ||
01:51
dj_goku joined
|
|||
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:52 | |
(Asuuming they did not already have the "pure" dependency installed) | 01:53 | ||
01:58
chenryn joined
01:59
dj_goku left
|
|||
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:00 | |
so then your reccomendation manager could ask if you'd like to try <some other module that claims to emulate the failed module> | 02:02 | ||
02:03
dj_goku joined,
dj_goku left,
dj_goku joined
|
|||
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) | ||
the ecosystem would actual make the recomendation | 02:05 | ||
remember there will be many ecosystems/auths and package managers | |||
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. | ||
IIRC that was lizmat++'s thing, maybe she could clarify. | |||
02:19
virtualsue_ joined,
dayangkun left
02:20
virtualsue left,
virtualsue_ is now known as virtualsue
02:21
raiph joined
02:26
BeeWT joined
02:28
BenGoldberg_ joined
02:32
Ben_Goldberg left
|
|||
ugexe | a distro maintainer can already supply alternative modules to be installed on failure as well | 02:36 | |
leont | Is there any centralized description for that meta6.json? | 02:44 | |
02:44
ilbot3 left
|
|||
ugexe | github.com/perl6/specs/blob/master...format.pod | 02:45 | |
skids | leont: it is specced in S22 | ||
02:46
ilbot3 joined
02:48
chenryn left
02:49
BeeWT left,
regreg joined
02:51
chenryn joined
03:01
virtualsue left
03:02
adu joined
03:03
raiph left
03:07
raiph joined
03:08
colomon left
03:11
tinyblak left
03:20
Mso150 joined
03:25
chenryn left
03:27
chenryn joined
03:28
Ben_Goldberg joined
03:29
tinyblak joined
03:31
BenGoldberg_ left
|
|||
skids catches up on some old things he should have filed as RTs | 03:37 | ||
03:37
vendethiel left,
rhr left
|
|||
skids | Can someone with a newish compile test gist.github.com/skids/11d8dca21973925c7850 so I don't file an already-fixed RT? | 03:38 | |
03:38
vendethiel joined
03:39
rhr joined
03:56
Mso150 left
03:57
noganex joined
|
|||
ugexe | did you try putting a '/' at the end of the { True } | 03:58 | |
er, '\' | 03:59 | ||
03:59
noganex_ left
|
|||
ugexe | yeah, that gives the same result | 04:04 | |
which is expected | |||
(same result as the first example) | |||
04:04
chenryn left
|
|||
skids | Yeah, same here, fails when using / to make it one "line" | 04:05 | |
ugexe | \, not / | ||
and its supposed to fail | |||
skids | OK, good then I'll file that as an RT. Right I used \ | ||
Why would you expect it to fail? | |||
ugexe | role A takes arguments, and you are calling does A[ ] | 04:06 | |
skids | Named args are optional. | ||
r: role A [ :$d ] { } ; class B does A[ ] { }; B.new; | 04:07 | ||
camelia | ( no output ) | ||
04:07
araujo left
|
|||
ugexe | i see | 04:08 | |
04:17
adu left
04:19
kurahaupo joined
04:20
anaeem1 joined
04:21
anaeem1 left
04:22
anaeem1_ joined
04:23
vendethiel left
04:24
leont left
|
|||
ugexe | fwiw you get a similar error using programtic checks in any signature on a default assignment | 04:24 | |
m: sub A($bs where { True } = 1) { }; A(3); | |||
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
|
|||
skids | m: sub a ($bs where { True } = 1) { }; a(3); # Yeah that is suspiciously newline dependent too. | 04:32 | |
camelia | ( no output ) | ||
04:33
raiph left,
kaleem joined
|
|||
skids | And better yet, that shows a problem when run from -e | 04:34 | |
ugexe | -e runs with less strictness, although im not sure if that matters | 04:36 | |
use v6; will run it with normal strictness | |||
04:37
molaf__ left
|
|||
skids | Weird. I'm able to do the role one on -e now, without use v6, but ISTR that did not owrk before. | 04:39 | |
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» | ||
skids | m: role A [ :$bs where { True } = 512] { }; class B does A[ ] { }; B.new; | ||
camelia | ( no output ) | ||
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 { ... })» | ||
skids | RT123623 | 04:49 | |
04:52
vendethiel left
04:59
kaleem left
05:00
vendethiel joined
05:08
adu joined
05:11
raiph joined,
Ben_Goldberg left
05:25
chenryn joined
05:35
[Sno] left
05:40
kaare_ joined
05:41
kaare__ left,
mr-foobar left
05:51
tinyblak left
06:00
davercc joined
06:01
chenryn left
06:04
tinyblak joined
06:12
chenryn joined
06:19
xfix joined
06:26
davercc left,
Rounin joined
06:28
vendethiel left
06:33
dayangkun joined,
dayangkun left
06:45
[Sno] joined
06:48
kaleem joined
06:56
raiph left
06:58
vendethiel joined
07:01
regreg left
07:11
chenryn left,
jluis joined
07:14
booly-yam-4366 left
07:15
chenryn joined
07:30
gfldex joined
07:33
Sqirrel left
07:39
gfldex left
07:42
vendethiel left
07:53
vendethiel joined
08:01
FROGGS joined
08:05
prime left
08:07
telex left
08:08
telex joined
08:09
kjs_ joined
08:10
prime joined
08:11
zakharyas joined,
kjs_ left
08:14
kjs_ joined
08:16
vendethiel left
08:18
kjs_ left
08:20
adu left
08:21
booly-yam-4366 joined
08:25
vendethiel joined
08:27
chenryn left
08:29
darutoko joined
08:31
chenryn joined
08:33
abraxxa joined
08:42
xinming_ joined
08:46
xinming left
08:48
virtualsue joined,
vendethiel left
08:49
tinyblak_ joined
08:50
tinyblak left
08:52
vendethiel joined
09:04
zakharyas left
09:06
chenryn left
09:09
chenryn joined
|
|||
jnthn | Ooh, snow! :) Morning, #perl6 | 09:10 | |
tadzik | good morning jnthn | 09:11 | |
FROGGS | morning | 09:14 | |
nwc10 | I used to know that - "snö" | 09:15 | |
(but I had to look it up, because I couldn't remmeber what sort of accented o it has" | |||
er. s/"/)/ | |||
09:20
Mso150 joined
09:22
zakharyas joined
|
|||
JimmyZ | morning, jnthn | 09:23 | |
moritz | nwc10: in Norwegian it would be snø - not sure about Swedish | 09:24 | |
nwc10 | Google thought Swedish was snö | ||
moritz | might well be possible | ||
nwc10 | it used to be the only Swedish word I (reliably) knew | 09:25 | |
I fail - I don't even know "beer" (in Swedish) | |||
jnthn | öl | ||
nwc10 | good. that's like Danish. | ||
I stand a chance of remmebering that. | |||
thanks | |||
jnthn++ | |||
FROGGS | do you pronounce the swedish ö like the german ö? | 09:26 | |
moritz | it's very close | ||
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 | ||
moritz | de snø, de snø, tidelibom | ||
nwc10 | "the big book of Swedish railway excuses"? | 09:28 | |
jnthn: do they also have the "wrong kind of snow"? | |||
jnthn | "Comes in 3 volumes!" | 09:29 | |
Yes, there's that too :) | |||
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
|
|||
moritz | which of course no engineer could have predicted | 09:30 | |
nwc10 | possibly they could, but the cost/benefit analysis was "oh, smeg it" | 09:32 | |
(possibly using a ruder term) | |||
09:32
kjs_ joined
|
|||
jnthn | .oO( "oh, снег it" ) |
09:34 | |
09:35
vendethiel left,
dakkar joined
09:40
vendethiel joined,
TuxCM left
09:44
salv0 left
|
|||
mathw | morning! | 09:44 | |
in England we have the wrong kind of leaves on the line | |||
which is laughed at a lot, but they form a sort of slippery film that means the trains can't brake effectively | 09:45 | ||
recent news reports said they were testing train-mounted lasers to clear such things off the tracks | |||
it's the future! | |||
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... :-) | ||
mathw sets up a GitHub repo for Railway::Util::Laser | |||
sergot | hi o/ | 09:47 | |
09:52
TuxCM joined
|
|||
FROGGS | sergot: btw, I am working (hard) on XML::LibXML, in case you wanna joing the fun :o) | 09:54 | |
join* | |||
sergot: the good thing is, once we have the libxml2 bindings, XML::Compile should be fairly straight and perhaps easy to port | 09:59 | ||
and then we can slurp WSDL files and access webservices just like an ordinary routine /o/ | 10:00 | ||
10:00
rindolf joined
10:01
vendethiel left
|
|||
moritz | and then we're doomed. | 10:01 | |
FROGGS | no we're not :o) | 10:02 | |
moritz | I'm 70% joking and 30% serious | ||
pretending a remote interface is local is dangerous | 10:03 | ||
FROGGS .oO( perhaps we are DOMed ) | |||
moritz | because reliability, security and performance differ significantly between local and remote interfaces | ||
FROGGS | moritz: you'd call it on your soap object... like in P5 | ||
moritz | FROGGS: then it's likely a rather small DOOM :-) | 10:04 | |
sergot | FROGGS: sounds interesting :) | ||
jnthn | Still, it's fun to see moritz++ on his SOAP box... :) | ||
sergot | FROGGS: I'm joining :)) | ||
FROGGS | \o/ | ||
--> github.com/FROGGS/p6-XML-LibXML | |||
moritz | guess I read too much Fowler | 10:05 | |
jnthn | moritz: I largely agree, fwiw. :) | ||
citeseerx.ist.psu.edu/viewdoc/downl...p;type=pdf is good reading on the matter | |||
FROGGS | sergot: the test files have a lot commented out tests, that need some missing mapping or functionality | ||
sergot: that'd be a good place to start | |||
moritz | jnthn: but you can't resist a SOAP pun :-) | 10:06 | |
10:06
rurban joined
|
|||
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:06 | |
10:15
denis_boyun_ joined
10:16
Mso150 left
10:18
virtualsue_ joined
10:19
virtualsue left,
virtualsue_ is now known as virtualsue
10:20
vendethiel joined
|
|||
nwc10 | programming.tudorconstantin.com/201...y-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:20 | |
I had never thought of spinning it *that* way. | 10:21 | ||
sergot | FROGGS: oki :) | 10:22 | |
FROGGS | sergot: commit messages go to #perl-lwp-gsoc btw | 10:23 | |
10:23
denis_boyun_ left
10:24
virtualsue left
10:28
rurban1 joined,
rurban1 left
|
|||
osfameron | nwc10: nice link, thanks | 10:32 | |
nwc10 | osfameron: credit davewood for it (I failed to, above) | ||
osfameron | nwc10: ah, great (I just RT'd @tudorconstantin's tweet about it in the end) | 10:39 | |
Woodi_ | hallo today :) | ||
10:41
vendethiel left
|
|||
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:43 | |
10:45
donaldh joined
10:46
rurban1 joined
10:48
rurban1 left
|
|||
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:51 | |
10:53
IllvilJa left
|
|||
Woodi_ | also looks like Parrot threads have parts of sheduler/Channel build in, would be hard to get that MS API to Parrot ? :) | 10:53 | |
10:54
vendethiel joined
|
|||
moritz | Woodi_: what gives you the impression that nqp is to blame for anything? | 10:54 | |
Woodi_ | it is common part in hot discusions | 11:03 | |
11:04
pecastro joined
|
|||
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? | ||
Woodi_ | not realy... | ||
11:06
IllvilJa joined
|
|||
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 | ||
timotimo | (also: good morning!) | ||
moritz | (without any evidence) | ||
but given that NQP lexpads implement Perl 6 semantics just fine, I hesitate to agree | |||
Woodi_ | moritz: first, from history ;) nqp was part when things goes separate ways. | 11:07 | |
moritz: possible it is that Parrot implementation cast something on Parrot-using applications | 11:08 | ||
moritz | Woodi_: your statements are still too vague for me to make any sense of, sorry | 11:09 | |
11:09
salv0 joined
|
|||
donaldh | Woodi_: Who is "we" that "had a bit of state of Perl6" ? | 11:10 | |
Woodi_: What is nqp to blame for? | |||
btyler also can't really understand what Woodi_ is talking about | 11:11 | ||
timotimo neither | |||
donaldh | Woodi_: Perl6 is already on parrot, jvm and moarvm largely due to the portability of nqp. | ||
11:12
IllvilJa left
|
|||
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. | ||
Woodi_ | donaldh: we, here, nation of backloggers :) | ||
11:12
IllvilJa joined
|
|||
Woodi_ | donaldh: a) history of Perl6 internal conflicts; b) rurban++ pointed something about MoarVM's simple thread implementation - that's a state | 11:13 | |
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:15 | ||
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:16 | |
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 :) | ||
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 | ||
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
11:23
KCL_ left
|
|||
Woodi_ | also: "simple thread optimization", maybe there is no such thing :) | 11:25 | |
optimization^Wimplementation | |||
11:26
denis_boyun_ joined
11:28
chenryn left
|
|||
rurban | github.com/perl6/nqp/issues/67 | 11:35 | |
FROGGS | I remember that one | 11:37 | |
it is just... I don't know what to do | |||
11:38
leont joined
|
|||
moritz | FROGGS: I felt that same. We should add that to the issue | 11:38 | |
jnthn | donaldh: Did you get any further with gist.github.com/donaldh/91a212b38725642131be ? | 11:42 | |
FROGGS | I dunno what "support the new Proxy pmc" means by looking at github.com/perl6/nqp/blob/master/s...lexpad.pmc | ||
rurban: can you explain a bit what we need to do? | |||
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. | ||
jnthn | donaldh: Ah, cool. | 11:44 | |
donaldh: Then I'll not task steal it anytime soon :) | |||
donaldh | I'll commit the nqp changes and then submit a PR for rakudo. | ||
jnthn | \o/ | ||
FROGGS | donaldh++ | ||
jnthn | Does it shave much off CORE.setting size, ooc? | ||
donaldh | A bit yes. i will make note of the size differences. | 11:45 | |
jnthn | Cool :) | ||
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:47 | ||
timotimo | a meg isn't half bad! | 11:49 | |
11:51
kaleem left,
virtualsue joined
|
|||
rurban | I'm a bit busy preparing the new release on slow vms... | 11:56 | |
11:56
LLamaRider joined
|
|||
FROGGS | rurban: no hurry | 11:58 | |
dalek | p: 9f1320c | donaldh++ | src/QAST/Node.nqp: Add clear_annotations method. |
12:06 | |
nwc10 | is there a release name yet for this month? | 12:10 | |
donaldh | CORE.setting.jar 2.9M -> 2.6M (10%) | ||
nwc10 | nice. | ||
donaldh | That's nearly 1M off the raw .class file. | 12:11 | |
nwc10 | win | 12:12 | |
jnthn | \o/ | ||
nwc10 | [Coke]: is there a name yet for this month? | 12:14 | |
as it looks like he's the right person to ask directly | |||
jnthn | err& | 12:15 | |
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:16 | |
12:19
pecastro left
|
|||
nwc10 | andthen no-one else attempts to help me. :-( | 12:19 | |
12:21
pecastro joined
|
|||
masak .oO( help me, orelse ) | 12:28 | ||
12:30
LLamaRider left
12:34
pecastro left
|
|||
donaldh | jnthn: github.com/rakudo/rakudo/pull/356 | 12:35 | |
12:36
pecastro joined
|
|||
dalek | kudo/nom: 37a03fc | donaldh++ | src/Perl6/Actions.nqp: Clear the QAST annotations when building inlining info. |
12:38 | |
kudo/nom: 35c0507 | donaldh++ | tools/build/NQP_REVISION: Bump nqp version to get QAST::Node.clear_annotations |
|||
kudo/nom: 0bf4263 | FROGGS++ | / (2 files): Merge pull request #356 from donaldh/nom Clear the QAST annotations when building inlining info. |
|||
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:49 | |
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:51 | |
vendethiel | FROGGS: or that you added bigger bugs ;-) | 12:52 | |
moritz | FROGGS: or even just remove a line or two :-) | 12:53 | |
the other day I thought "what would happen if we made scopes first-class objects?" | 12:55 | ||
and a vision emerged where variables/objects inside a scope could be either private or public | |||
private elements are only exposed to the lexical scope itself, public ones can be accessed from everywhere | 12:56 | ||
12:56
anaeem1_ left
|
|||
arnsholt | donaldh++ | 12:56 | |
moritz | and by adding some scope as an outer to a scope, you could get importing / inheritance-like structures | ||
indeed, donaldh++ | |||
and then i wondered how far object orientation and scopes could be unified | 12:57 | ||
jnthn | donaldh++ # nice find! | ||
FROGGS | moritz: interesting idea | ||
moritz | and I thought "wait, scopes have no instantiation", but that's not entirely true | 12:58 | |
entering the outer scope kinda instantiates a scope | |||
but it's not quite the same as with objects | |||
(just for the record, this is not something that I want to pursue for Perl 6, more of a general interesting in programming languages) | |||
I guess I have to mediate a bit more on that | 12:59 | ||
12:59
kaleem joined
|
|||
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:00 | |
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:05 | |
moritz | jnthn: well, I thought more the other way round: implement objects in terms of scopes/closures | 13:08 | |
or not implement, more "expose to the user" | |||
13:09
kaare_ left
|
|||
jnthn | ah | 13:13 | |
13:24
rurban left
|
|||
lumimies | moritz: IIRC Self works somewhat like that | 13:26 | |
13:27
fhelmberger joined
|
|||
lumimies | moritz: It uses prototype delegation as access to an outer scope | 13:28 | |
moritz | lumimies: ah yes, the prototype model does seem to fit with the idea | 13:29 | |
13:47
dayangkun joined
|
|||
masak | good afternoon, #perl6 | 14:00 | |
14:00
pr1_ joined
14:02
pr1_ left
14:03
Rounin left
14:18
adu joined
14:19
rurban joined
14:24
xfix left
14:29
vike left,
adu left,
jaderdias joined
14:35
vike joined,
jaderdias left
14:37
xfix joined
|
|||
masak | m: my @a; my $i = -2; try @a[$i]; say $! ~~ X::Subscript::Negative; say $!.^name | 14:38 | |
camelia | rakudo-moar 0bf426: OUTPUT«FalseX::OutOfRange» | ||
masak | I have a test failure in 007 because the exception used to be X::Subscript::Negative but is now X::OutOfRange instead. | ||
I will change the 007 code regardless -- just curious what prompted this change. | 14:39 | ||
arnsholt | More general, I guess? | ||
14:39
tinyblak_ left
|
|||
masak | why is that a good thing here? X::Subscript::Negative is more specific and more descriptive. | 14:40 | |
I can't think of a better situation to use it. | |||
note that we still *have* X::Subscript::Negative in the setting. | |||
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 | ||
masak | I don't think that argument holds up as long as I'm using .[] | 14:41 | |
my S09 is a bit rusty, but I think .[] always starts at 0. | |||
donaldh | the subscript is out of range. The fact that it is also negative is an interesting property, but not the error. | ||
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] | ||
donaldh | don't negative subscripts select from end? | ||
masak | that's Perl 5. | ||
in Perl 6, that's spelled .[*-2] | |||
arnsholt | No, not as "index from end", but an array that lets you have something like -2 .. 2 as valid indices | 14:43 | |
masak | then you have to use .{}, IIRC. | 14:44 | |
arnsholt | Ah, ok | ||
14:44
adu joined
|
|||
jnthn | masak: It may be an unintentional change of behavior; lizmat++ is the person to ask | 14:45 | |
14:45
adu left
|
|||
masak | aye, I saw her changes in the git log. | 14:45 | |
it's probably just a change introduced by mistake. | |||
m: say X::Subscript::Negative ~~ X::OutOfRange | |||
camelia | rakudo-moar 0bf426: OUTPUT«False» | ||
donaldh | Sameex | ||
Same exception for both ends of the range? | 14:46 | ||
dalek | : 033b83e | sergot++ | misc/gsoc-2015/ideas.md: ideas page for gsoc2015, lets fill it up |
14:47 | |
masak | then why do we still have X::Subscript::Negative? | ||
arnsholt | I agree that Negative should be a subclass of outofrange | 14:48 | |
donaldh | As long as you never use it for anything else. | 14:49 | |
arnsholt | Troo | ||
FROGGS | m: my @a; @a[1.7] = 42; say @a[1] # <--- is that intended? | 14:50 | |
camelia | rakudo-moar 0bf426: OUTPUT«42» | ||
masak | yes. | ||
FROGGS | k | ||
masak | what behavior did you expect, ooc? | 14:51 | |
JimmyZ | m: ( 13827390 - 12081111 ) /1024/1024 | ||
camelia | ( no output ) | ||
JimmyZ | m:say ( 13827390 - 12081111 ) /1024/1024 | ||
masak | `say` | ||
FROGGS | masak: some sort of out of range exception | ||
JimmyZ | m: say ( 13827390 - 12081111 ) /1024/1024 | ||
camelia | rakudo-moar 0bf426: OUTPUT«1.66538143» | ||
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." | ||
masak | "not an integer" does not mean "out of range". | ||
gtodd | oops | ||
ww | 14:53 | ||
masak | gtodd: you meant to paste that to #marketingbs ? :P | ||
FROGGS | masak: though, the indexes are integers, not nums | ||
masak | gtodd: as a modern consumer, I'm always looking for more ways to engage with brands. | 14:54 | |
FROGGS: Perl has a tendency to cast rather than fail when it's straightforward to do so. | |||
JimmyZ | m: say ( 13827390 - 12077603 ) /1024/1024 | ||
camelia | rakudo-moar 0bf426: OUTPUT«1.66872692» | ||
masak | FROGGS: just as hashes auto-cast to Str keys, arrays auto-cast to Int indices. | ||
jnthn | masak, FROGGS: You could say it's a floored design... :P | ||
JimmyZ | donaldh++ # 1.668 smaller on MoarVM | 14:55 | |
14:55
tinyblak joined
|
|||
donaldh | nice! | 14:55 | |
masak | jnthn: floor wax *and* dessert topping!? | ||
FROGGS | jnthn: in german I could say: "I'm going to the ceiling" :P | ||
masak: yes, you are right of course | |||
gtodd | heh my chat app is "friends: with [email@hidden.address] .. etc. meant to paste in there | ||
JimmyZ | with 6pe will 11M | ||
*will be | |||
gtodd | masak: machine translation really fails on some of these things :) | 14:56 | |
jnthn | BS in, BS out... :P | ||
JimmyZ | jnthn: will we have static optimization for .moarvm in the long future? :P | 14:57 | |
14:57
donaldh left
|
|||
gtodd | masak: OTOH this could be a sort of fortuitous accident that inspires #perl6 to boost the brand! | 14:58 | |
14:58
donaldh joined
|
|||
jnthn | JimmyZ: Perl6::Optimizer and NQP::Optimizer do the static optimization stuff. Dynamic optimization is inherently dynamic. | 14:58 | |
That is, based on the types and usages patterns that actually show up at runtime. | |||
JimmyZ | I meant something like CSE and AA etc | 14:59 | |
basic AAa/CSE | 15:00 | ||
15:00
tinyblak left,
tinyblak joined
|
|||
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 | |
And about those two at VM level, you probably get more bang for your buck if doing them post-inlining. | |||
And inlining certainly depends on type specialization, which is certainly dynamic. | 15:02 | ||
So no, I don't see those two wanting doing at bytecode assembly time | |||
It's also important to remember that optimization is costly and has to pull its weight. | |||
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. | ||
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:03
dayangkun left
|
|||
JimmyZ | it's about CSE? | 15:04 | |
JimmyZ is not sure... | |||
jnthn | Under spesh, though, the getattr tends to become a pointer index operation, and the wval instruction is deleted. | ||
You could certainly lift duplicate wval accesses | 15:05 | ||
Though again, we can JIT most of those into static pointer loads. | |||
JimmyZ | so it's about load forwarding | 15:07 | |
15:08
tinyblak_ joined
15:11
_4d47 joined
15:12
tinyblak left
15:15
kurahaupo left
|
|||
timotimo | JimmyZ: can you also measure the maxrss of a hello world before and after donaldh's patch? | 15:17 | |
15:18
KCL left
|
|||
JimmyZ | timotimo: look like ~0.01s save | 15:23 | |
15:23
kjs_ left
|
|||
jnthn | I think timotimo meant memory use | 15:25 | |
But another 0.01s off is good too :) | |||
15:26
kaleem left
|
|||
timotimo | yeah, memory usage please :) | 15:27 | |
15:28
kurahaupo joined
|
|||
JimmyZ | REPL: 55.1M, , after hello world: 127.8m | 15:30 | |
REPL: 55M, after hello world: 119.6M | |||
save 8.2M , donaldh++ again | 15:31 | ||
timotimo | holy nice! | ||
donaldh++ # i like that a lot | |||
jnthn | away for a few hours & | 15:34 | |
oh, and donaldh++ again :) | |||
15:39
rindolf left
15:42
perturbation joined,
perturbation left
15:47
kjs_ joined
15:54
[Sno] left
15:57
booly-yam-4366 left
15:58
spider-mario joined
16:11
kjs_ left
16:12
denis_boyun_ left,
mr-foobar joined
16:20
dj_goku left
16:31
zakharyas left
16:34
khisanth_ joined
16:35
dj_goku joined,
dj_goku left,
dj_goku joined,
brrt joined
16:36
kaleem joined
16:37
fhelmberger left,
Khisanth left,
kaleem left
16:43
brrt left
16:53
booly-yam-4366 joined
16:56
telex left
|
|||
lizmat | good *, #perl6 | 16:57 | |
16:58
telex joined
16:59
mvuets left
17:00
dwarring joined
17:04
rindolf joined
17:07
[Sno] joined
17:30
mr-foobar left
|
|||
dalek | osystem: 8cebaad | (David Warring [email@hidden.address] | META.list: added CSS::Module::CSS3::Selectors - a component of CSS::Module |
17:31 | |
17:31
Guest53643 left,
mr-foobar joined
17:36
FROGGS left
17:37
khisanth_ is now known as Khisanth,
abraxxa left
|
|||
dwarring | ^^ that's a small low depenency, for when you just want Level 3 Selectors | 17:38 | |
17:38
abraxxa joined
|
|||
dwarring | prompted by discussions a few days ago on porting Mojo::DOM::CSS | 17:39 | |
hoelzro: ^^ hoping that might be a useful lightweight alternative | |||
17:39
donaldh left
|
|||
dwarring | to the pretty hefty and experiemental CSS::Module | 17:40 | |
btw, CSS::Grammar will also need to be reinstalled | 17:42 | ||
17:43
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
17:47
stimpi joined
17:48
stimpi left
17:54
jluis_ joined
|
|||
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:01 | |
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:03
dj_goku left
|
|||
flussence | masak: part of the frustration, back then, was waiting insane amounts of time for small tests to run :) | 18:04 | |
masak | huh. | ||
18:04
dakkar left
|
|||
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
|
|||
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. | ||
lizmat | but if you think we should have a separate exception for <0 | ||
masak | lizmat: I don't have any objection either way -- but I was curious about why the semantics had changed. | ||
lizmat | then I'll put those in again | ||
masak | I didn't see it announced anywhere. | ||
and it broke my code, because I relied on Rakudo throwing that exception :) | |||
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. | ||
lizmat | that feels fragile | ||
and reminds me of the whole discussion on p5 wrt to new warnings | |||
masak | once the exception type goes away, we'll either declare it ourselves, I guess, or decide to just have one OutOfRange type too. | ||
lizmat | and the use of "use FATAL" | ||
moritz | m: my %h is EnumMap; | ||
camelia | rakudo-moar 0bf426: OUTPUT«===SORRY!=== Error while compiling /tmp/24Hb6NMOinVariable trait 'is TypeObject' not yet implemented. Sorry. at /tmp/24Hb6NMOin:1------> my %h is EnumMap⏏; expecting any of: constraint» | ||
moritz | didn't we used to do that? | ||
masak | moritz: not that I recall. | 18:08 | |
lizmat | not as far as I now | ||
I tried to when I was working on traits | |||
but my fu was too weak then, and probably is now | |||
skids | Only way I could get at an EnumMap to test somethin the other day was to make a Match.hash | ||
lizmat | ?? | 18:09 | |
moritz | m: say EnumMap.new(a => 42).perl | ||
camelia | rakudo-moar 0bf426: OUTPUT«EnumMap.new()» | ||
moritz | m: say EnumMap.new("a" => 42).perl | ||
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» | ||
moritz | m: say EnumMap.new().perl | ||
camelia | rakudo-moar 0bf426: OUTPUT«EnumMap.new()» | ||
18:10
Hor|zon left
|
|||
moritz | ah well, at least an empty enummap is easy to get :-) | 18:10 | |
skids | ^^ what moritz just did | ||
lizmat | I'm not sure what you'd expect there | ||
EnumMap does not have public attributes | |||
skids | Id' expect it to operate like a ro Hash. | 18:11 | |
moritz | m: for EnumMap.new(a => 42) -> $p { say $p.perl } | ||
camelia | ( no output ) | ||
skids | m: my %h = Hash.new(1 => 2); %h.say # that works, so why not EnumMap? | ||
camelia | rakudo-moar 0bf426: OUTPUT«1 => 2» | ||
18:12
virtualsue left
|
|||
lizmat | skids: we could do that, I guess | 18:13 | |
18:14
pecastro left
|
|||
lizmat | masak moritz jnthn TimToady timotimo comments? | 18:14 | |
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
[Sno] left
|
|||
moritz | right | 18:15 | |
so we should either make it one, or hide it as much as possible | |||
masak | EnumMap, besides having a really wonky name, is currently being kept in the cupboard under the stairs, yes. | 18:16 | |
skids | Do subclasses of EnumMap benefit efficiency-wise from notinheriting an initializer? | 18:18 | |
lizmat | I doubt it | ||
moritz | skids: I don't think performance is the issue | ||
skids: it's more that hash assignment is implemented in the STORE method | 18:19 | ||
skids: so the Hash constructor creates an empty hash, and then calls STORE | |||
skids | Ah. | ||
moritz | skids: but EnumMap doesn't have the STORE method | ||
18:19
[Sno] joined
|
|||
moritz | (all "if I remember correctly") | 18:19 | |
vendethiel | .oO( or maybe we should have a "is ro" on variables. ) |
18:20 | |
or is that what ::= is for? | |||
lizmat tries something by moving new and STORE from Hash to EnumMap | 18:22 | ||
18:23
dj_goku joined,
dj_goku left,
dj_goku joined
|
|||
moritz | lizmat: do your remember what 'has $.slash' in class Variable is about? | 18:24 | |
oh, it seems to be the match object with which it was parsed | |||
lizmat | yup, needed for some variable traits | 18:26 | |
iirc | |||
18:27
bowtie joined
18:28
bowtie is now known as Guest83546
|
|||
masak | the fact that this thread news.ycombinator.com/item?id=8906331 seriously argues that Perl *4* was the best Perl ever, feels oddly comforting in some way. | 18:30 | |
I mean, one suspects in many cases that HN is full of cooks, but it's seldom this clear. | |||
huf | i dunno, every time i tried to look at HN i found hype-chasers | ||
masak | it is a bit of a relief from the normal Perl 5 vs Perl 6 thing, I confess. :) | 18:31 | |
huf | :) | ||
gtodd | masak: aren't they all very young "whiz kid" types who passionately believe they are entrepreneurs? | ||
huf | i guess perl4 was the last awk-replacement-ish-ish version of perl? | ||
(note: i'm far too young to have used p4) | |||
gtodd | in case awk sed scripts did not work on your versio of unix you could install gnu versions or just install perl | 18:32 | |
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 .... | ||
geekosaur finds HN mostly useless fwiw | |||
gtodd | (via telnet on a unix host) | ||
huf | yeah, at least reddit is racist and horrible, so it confirms my depressing worldview :) | ||
gtodd | twitter? :) | 18:34 | |
18:36
gfldex joined
|
|||
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:40 | |
geekosaur | I never see comments. (/me <3 Shut Up browser extension) | 18:41 | |
18:43
VAB0DX1 joined
18:44
leont left
|
|||
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:44 | |
timotimo | lizmat: comments about what? | 18:45 | |
18:47
abraxxa left
18:49
mvuets joined
|
|||
lizmat | timotimo about making EnumMap.new a full ciitzen | 18:58 | |
$ 6 'my $h = EnumMap.new("a"=>42); $h<a> = 43; say $h' | 19:01 | ||
EnumMap.new("a" => 43) | |||
skids: I guess ^^^ should be verboten ? | |||
19:01
brrt joined
|
|||
skids | Right, even assignment I think, maybe. | 19:02 | |
lizmat | you mean afterwards assigning to $h ? | ||
skids | I mean I don't know, should declarative assignment work or not? | 19:03 | |
my EnumMap %h = ( ... ); | |||
masak | no. | ||
lizmat | dinner& | ||
masak | not unless you are storing EnumMaps in that hash. | 19:04 | |
brrt | FROGGS: fwiw i can explain the nqp lexpad bug report | ||
masak | remember, with collection types, the declared type before the variable is the type of the *values* stored in the collection type. | ||
brrt | or at least i think i can | ||
skids | Oh right. | 19:05 | |
That's one of those things I'll have to use 5 times before it finally sinks in :-) | 19:06 | ||
dalek | c: 53cbdb8 | moritz++ | / (2 files): (paritially) document class Variable |
19:07 | |
19:07
Hor|zon joined,
anaeem1_ joined
|
|||
gtodd | unless one uses a language all the time ... how does one remember things .... ? | 19:10 | |
masak | :) | ||
gtodd | with java your IDE remembers :) | 19:11 | |
the virtue of those crazy perl5 perlvar mnemonics was errm that you may have learned them under age 25 and so they were unforgettable :) | |||
masak | for me, it's about hanging things on the right hooks, mentally. | ||
gtodd | perl6 is/has a way | ||
hmm yes | |||
hooks | |||
19:11
Hor|zon left
|
|||
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
anaeem1_ left
|
|||
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:16 | |
19:17
anaeem1 joined
|
|||
gtodd | where I create my own custom error grammar that gets to know me :) | 19:17 | |
19:20
FROGGS joined
|
|||
skids | Maybe integrate that into an IDE editor and turn your common mistakes red. | 19:21 | |
19:21
Mso150 joined
19:23
denis_boyun_ joined
|
|||
gtodd | perl6 has a grammar of itself ... now I want a grammar of myself using perl6 :) | 19:23 | |
hrrm can't build on bsd .... git hist says I'm on branch/nom --> 35c0507 | |||
In file included from src/core/threads.c:2: | 19:24 | ||
19:24
Mso150_y joined
|
|||
gtodd | src/platform/threads.h:7:5: error: conflicting types for 'pthread_yield' | 19:24 | |
moritz | seems to be a MoarVM thing | 19:25 | |
so the moarvm commit might be more interesting | 19:26 | ||
(but I likely won't be of any use either way) | |||
gtodd | hmm yeah can't tell ... when did it happen ... I haven't been updating moar nqp etc as frequently | ||
gtodd looks | |||
19:26
Mso150 left
19:27
denis_boyun_ left
19:30
rindolf left
|
|||
FROGGS | gtodd: github.com/MoarVM/MoarVM/commit/01...nt-9331701 | 19:32 | |
bartolin | hi #perl6 | 19:33 | |
FROGGS | hi bartolin | ||
bartolin is a bit too late to point to that comment | |||
FROGGS | just a bit :o) | ||
gtodd | FROGGS: perfect | ||
bartolin | did anyone had a chance to look at PR 218 for nqp (github.com/perl6/nqp/pull/218)? | 19:36 | |
nwc10 | bisect (eventually) agrees | 19:39 | |
19:39
Hor|zon joined
|
|||
nwc10 | 0194409f7599850d73b8861cd26d2fe9b9f7f85b is the first bad commit | 19:39 | |
gtodd | why would that line have been added (to quiet threads yield) ... for clang3.5? | 19:42 | |
bartolin | gtodd: jnthn++ was fixing some warnings clang emitted (see also some of the preceeding commits) | 19:43 | |
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: irclog.perlgeek.de/moarvm/2015-01-17#i_9957677 | 19:45 | |
gtodd | I will try to use mostly the same software as jnthn++ :-) | ||
(except on BSD) and see what happens | 19:46 | ||
dalek | p: f2577cb | usev6++ | src/HLL/sprintf.nqp: Do not try to intify a missing argument do its job later on fixes RT #122907 |
20:01 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122907 | ||
dalek | p: ff57c3a | moritz++ | src/HLL/sprintf.nqp: Merge branch 'master' of github.com:usev6/nqp |
||
20:11
darutoko left
20:17
jantore_ joined
20:18
jantore left,
booly-yam-4366 left
20:20
jantore_ is now known as jantore
|
|||
lizmat tried working on the Perl6 weekly just now, but is not feeling well enough | 20:28 | ||
probably something I ate yesterday :-( | |||
I'll try to do it tomorrow morning | |||
moritz | lizmat: get well soon! | ||
(for your own sake, not just for the weekly) | 20:29 | ||
lizmat | moritz: thank you | ||
masak | lizmat: what moritz said. | ||
dalek | kudo/nom: d78c678 | lizmat++ | src/core/ (2 files): Make EnumMap a first class citizen, skids++ EnumMap.new should now work like Hash.new. There are still issues to be resolved wrt to the immutability of the EnumMap. Most of this patch consists of moving methods "new" and STORE from Hash to EnumMap. |
20:32 | |
lizmat | afk& | ||
20:35
anaeem1 left
20:37
booly-yam-6137 joined
|
|||
japhb | jnthn: around? | 20:43 | |
20:44
denis_boyun__ joined
20:46
denis_boyun joined
20:47
rurban left
20:49
denis_boyun__ left
20:52
kjs_ joined
20:55
Alina-malina left
21:00
_4d47 left
21:02
araujo joined,
araujo left,
araujo joined
21:03
Mso150_y_i joined
|
|||
dalek | p: 52733c5 | (Gerhard R)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Optimize nqp::join() on JVM |
21:04 | |
p: a702d5a | moritz++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Merge branch 'gerdr/opt-jvm' of github.com:gerdr/nqp |
|||
21:04
Mso150_y left
|
|||
moritz | see github.com/perl6/nqp/pull/106#issu...t-70560333 for a discussion of the merits of the patch just pushed | 21:05 | |
21:07
brrt left,
bbkr joined
|
|||
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:10 | |
"class A {...}; use B; class A; has B $.b" - I meant that, not declaring A::A | 21:11 | ||
arnsholt | They need to be defined in the same file | 21:12 | |
bbkr | can they be stubbed in same file but implemented in different? | 21:15 | |
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 | |
21:16
jluis_ left
|
|||
arnsholt | Something to do with parsing, IIRC | 21:16 | |
bbkr | thanks, I'll try this way | 21:17 | |
21:19
kjs_ left
21:20
kjs_ joined
21:21
Mso150_y_i left
21:23
panchiniak joined
21:26
xfix left
21:27
panchiniak left,
panchiniak joined
21:28
virtualsue joined
|
|||
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:28 | |
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 | ||
masak | only difference is that subs don't have to be predeclared. | ||
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 | ||
that is to say, they become immutable at CHECK time | 21:34 | ||
so if they can't be resolved at CHECK time, they never can be | |||
21:37
denis_boyun left
|
|||
bbkr | makes sense, thanks for explanation | 21:40 | |
21:40
Alina-malina joined
|
|||
moritz | oh, another thing is sorting MMD candidates | 21:44 | |
21:44
kjs_ left
|
|||
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:44 | |
masak | oh, that is a good reason. | 21:45 | |
21:45
donaldh joined
|
|||
moritz | *appears | 21:45 | |
masak | wow, a lot of things come together at CHECK time. | ||
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. | ||
moritz | and what happens if multi is called before the candidate list can be sorted? | 21:48 | |
21:49
kaare_ joined
|
|||
masak | that's an interesting question. | 21:51 | |
I'd say that'd force an early sorting of the candidate list. if it's to be allowed at all. | |||
oh, you said "before it can be sorted". OK. | |||
well, hm. I guess there are *some* dispatches that could work out anyway in some cases. | 21:52 | ||
but it feels like playing with fire. | |||
maybe the answer should be "don't do that". | |||
21:53
leont joined
|
|||
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===SORRY!=== Error while compiling /tmp/G5wODPXzyXThe following packages were stubbed but not defined: Tat /tmp/G5wODPXzyX:1------> multi foo(T) { say "T" }; BEGIN foo(42)⏏<EOL> expecting a…» | ||
masak | seems to can do dispatch before. | ||
I wonder if there is some more interesting corner case than that... | |||
21:57
virtualsue_ joined
|
|||
bbkr | r-m: use A B; # LTA error | 21:57 | |
camelia | rakudo-moar d78c67: OUTPUT«===SORRY!===Cannot invoke null object» | ||
masak | bbkr: reported? | 21:58 | |
bbkr | checking RT right now... I'll report if not known yet | ||
masak | great | ||
++bbkr | |||
TimToady notes that subs are actually specced to become immutable at LINK time, to give the entire application a say in the matter | 22:00 | ||
22:00
virtualsue left,
virtualsue_ is now known as virtualsue
|
|||
TimToady | *can have a say | 22:01 | |
oh wait, 'to give' | |||
nm | |||
22:02
panchiniak left
|
|||
donaldh | :) | 22:02 | |
TimToady obviously doesn't know enough about language :) | |||
masak hugs TimToady | 22:03 | ||
donaldh | That's nice. I can run the spectests on JVM in under 20 min, with TEST_JOBS=4 | 22:04 | |
moritz | donaldh: how much memory do you need for that? | 22:05 | |
TimToady | which probably drives the load average up to about, oh, 12 | ||
donaldh | load above 8 yes. | ||
TimToady | though I can get away with =3 on 4 cores | ||
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 | ||
TimToady | 3 kilometers? | 22:07 | |
donaldh | moritz: That's Java 8 | ||
22:07
mr-foobar left
|
|||
moritz | donaldh: does the standard 'make spectest' use the eval server right now? | 22:08 | |
donaldh | yes. | ||
22:08
spider-mario left
|
|||
donaldh | make spectest can only use the eval server on the JVM backend | 22:08 | |
the codez make it so | 22:09 | ||
moritz | donaldh: I just remembered some back-and-forth because the eval server didn't work reliably for some folks | 22:11 | |
moritz is glad he can spectest rakudo-moar in <4min without any eval server | 22:12 | ||
dalek | p: ae6e8e4 | donaldh++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTCompiler.java: Tweak JVM bytecode generation - use constant bytecodes where possible. |
22:16 | |
22:24
rhr left
22:25
rhr joined
22:29
mr-foobar joined
22:30
fwilson left
22:41
bbkr left
22:44
kjs_ joined
22:48
[particle] joined
22:50
[particle]1 left
|
|||
jnthn back | 22:52 | ||
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? | ||
jnthn | moritz: iirc, Variable instances are created just for the purpose of variable traits, yes. | 22:54 | |
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? | ||
japhb: Not afaik | 22:56 | ||
has $.a = ...default value code...; # works fine | |||
And the normal initialization approach too | |||
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 | |
But then I realized for some classes I wanted to initialize some attributes one way, and other attributes another. | |||
masak | nice: py3readiness.org/ | ||
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? | ||
or do I have to write nqp ? | 23:04 | ||
jnthn | donaldh: FROGGS++'s v5 module uses those from Perl 6, iirc | 23:06 | |
It's maybe not very convenient, but I think it works out. | |||
23:06
adu joined
|
|||
donaldh | jnthn++ FROGGS++ I just need :from<NQP> | 23:11 | |
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
|
|||
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:14 | |
23:16
tinyblak_ left
|
|||
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:16 | |
23:17
tinyblak joined
23:27
mvuets left
23:28
tinyblak left
23:29
tinyblak joined,
booly-yam-6137 left
23:31
booly-yam-6137 joined
23:32
kjs_ left
23:33
tinyblak left
23:34
fwilson joined
23:39
gfldex left
|
|||
dalek | kudo-star-daily: 921da01 | coke++ | log/ (9 files): today (automated commit) |
23:46 | |
kudo-star-daily: ef16e7c | coke++ | log/ (9 files): today (automated commit) |
|||
kudo-star-daily: c2b6519 | coke++ | log/ (9 files): today (automated commit) |
|||
kudo-star-daily: da62159 | coke++ | log/ (9 files): today (automated commit) |
|||
rl6-roast-data: 1def276 | coke++ | / (5 files): today (automated commit) |
|||
rl6-roast-data: 1829743 | coke++ | / (5 files): today (automated commit) |
|||
rl6-roast-data: d2a8174 | coke++ | / (5 files): today (automated commit) |
|||
rl6-roast-data: ddde45c | coke++ | / (5 files): today (automated commit) |
|||
23:47
tinyblak joined,
telex left
23:48
telex joined
|
|||
adu | wow commitfest | 23:56 | |
23:56
virtualsue left
|
|||
jnthn | Hm, rakudo.moar-jit clean, 1 fail for rakudo.moar | 23:57 | |
23:58
donaldh left
|