»ö« 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 masak on 12 May 2015. |
|||
00:00
intrigue left
00:03
intrigue joined,
Alina-malina left
00:11
Alina-malina joined
|
|||
colomon | do we have the C++ interface working yet? | 00:19 | |
psch | colomon: github.com/rakudo/rakudo/blob/nom/...l/11-cpp.t passes at least mostly, iirc | 00:21 | |
colomon | psch++ | 00:23 | |
looks like it all passes on my machine | 00:24 | ||
00:25
Hor|zon joined,
skids joined
00:30
Hor|zon left
|
|||
lizmat | P6 Weekly: p6weekly.wordpress.com/2015/10/27/...niceville/ | 00:31 | |
get it while they're good! | |||
00:31
Actualeyes joined
|
|||
lizmat | and with that, I wish #perl6! a good night! | 00:32 | |
gfldex | m: no strict; $lizmt++ x 44; | 00:33 | |
camelia | rakudo-moar cd7766: OUTPUT«WARNINGS:Useless use of "x" in expression "++ x 44" in sink context (line 1)» | ||
gfldex | m: no strict; $lizmat++ x 44; # o.0 | ||
camelia | rakudo-moar cd7766: OUTPUT«WARNINGS:Useless use of "x" in expression "++ x 44" in sink context (line 1)» | ||
00:34
colomon left
00:35
lizmat left
00:40
spider-mario left
00:41
adhoc left,
kid51 joined
00:42
tokuhirom joined
00:44
colomon joined
|
|||
psch | m: "a" x 4 | 00:45 | |
camelia | rakudo-moar cd7766: OUTPUT«WARNINGS:Useless use of "x" in expression "\"a\" x 4" in sink context (line 1)» | ||
psch | that's somewhat LTA | ||
i mean, with the ++ | |||
m: $++ x 4 | 00:46 | ||
camelia | rakudo-moar cd7766: OUTPUT«WARNINGS:Useless use of "x" in expression "++ x 4" in sink context (line 1)» | ||
gfldex | m: my $i = $++; say $i; | 00:49 | |
camelia | rakudo-moar cd7766: OUTPUT«0» | ||
gfldex | what's a $++ and who put it into my perl? o.O | ||
psch | gfldex: shorthand for (state $)++ | ||
00:49
BenGoldberg joined
00:50
BenGoldberg left
|
|||
psch | m: sub lizmat is rw { $ }; lizmat++ xx 4; say lizmat | 00:52 | |
camelia | rakudo-moar cd7766: OUTPUT«4» | ||
psch | err, i hope that's not pinging on her end... :S | ||
or belling, or \a-ing or somesuch | |||
gfldex | you can increment me instead if you like | 00:53 | |
psch | heh, i demonstrated what i meant to, but thanks gfldex++ :) | ||
00:54
ab6tract left
|
|||
flussence | given the lack of nick-highlighting for those lines, there's no need to worry about pinging :) | 00:58 | |
(handy feature to have, that) | |||
gfldex | i found it in design.perl6.org/S02.html#Names | 01:00 | |
but i knew what i was looking for. That's a mean trap for a novice Perl 6 learner | |||
psch | flussence: i guess you're right. most clients only highlight the own nick on the beginning of the line, don't they | 01:01 | |
flussence | yeah... I'm using some irssi plugin I found a while back that gives the whole scrollback a 256-colour fruit salad look :D | 01:02 | |
01:04
raiph left
|
|||
ShimmerFairy | my client would've highlighted that, fwiw :) | 01:11 | |
01:21
raiph joined
01:26
Hor|zon joined,
sufrostico left
01:31
Hor|zon left
|
|||
gfldex | m: my Any is ro $foo; # i'm quite sure Any is declared | 01:31 | |
camelia | rakudo-moar cd7766: OUTPUT«5===SORRY!5===Type 'Any' is not declaredat /tmp/uYzX7ytRVn:1------> 3my Any 7⏏5is ro $foo; # i'm quite sure Any is declMalformed myat /tmp/uYzX7ytRVn:1------> 3my Any 7⏏5is ro $foo; # i'm quite sure Any is decl» | ||
gfldex | i'm leaning towards LTA | ||
01:41
ingy joined
|
|||
AlexDaniel | gfldex: hmmm I think there was some similar bug… | 01:44 | |
gfldex | i will dig for the RT tomorrow | 01:45 | |
AlexDaniel | gfldex: rt.perl.org/Public/Bug/Display.html?id=125902 | ||
m: my Any $foo is ro; | 01:46 | ||
camelia | rakudo-moar cd7766: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_EJEtDCKjpCan't use unknown trait 'is ro' in a variable declaration.at /tmp/_EJEtDCKjp:1------> 3my Any $foo is ro7⏏5; expecting any of: TypeObject default dyn…» | ||
psch | it's a parsing muck-up somewhere, yeah | 01:48 | |
m: sub trait_mod:<foobar>() { }; my Any foobar $x | 01:49 | ||
camelia | rakudo-moar cd7766: OUTPUT«5===SORRY!5===Type 'Any' is not declaredat /tmp/Rkh7wF3sHy:1------> 3sub trait_mod:<foobar>() { }; my Any 7⏏5foobar $xMalformed myat /tmp/Rkh7wF3sHy:1------> 3sub trait_mod:<foobar>() { }; my Any 7⏏5foobar $x» | ||
psch | traits between type and var make the grammar confused | ||
02:02
leont left
02:03
Zoffix joined
02:13
chenryn joined
02:15
kid51 left,
dayangkun joined
02:23
secwang joined
02:27
Hor|zon joined
02:32
Hor|zon left
02:34
secwang left
02:45
rangerprice joined
|
|||
rangerprice | hi | 02:45 | |
03:05
vike left
03:18
ParsonsNose joined
03:20
rangerprice left
03:23
yeahnoob joined
03:27
vike joined
03:28
Hor|zon joined
03:32
Hor|zon left
03:38
llfourn joined
03:53
chenryn left
04:00
ShimmerFairy left
04:06
khw left
04:07
softmoth left
04:13
ShimmerFairy joined,
skids left
|
|||
ShimmerFairy | m: package A::B { constant C = 42 }; say A::B::C | 04:28 | |
camelia | rakudo-moar cd7766: OUTPUT«42» | ||
ShimmerFairy | m: package A::B { constant C = 42 }; say A::<B>::<C> | ||
camelia | rakudo-moar cd7766: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kQuWvLN79bConfusedat /tmp/kQuWvLN79b:1------> 3ge A::B { constant C = 42 }; say A::<B>:7⏏5:<C> expecting any of: colon pair» | ||
ShimmerFairy | ^ any idea why that doesn't work? | ||
04:28
quester joined
04:29
Hor|zon joined
|
|||
ShimmerFairy | m: package A::B { constant C = 42 }; my \foo = A::<B>; say foo::<C>; # a workaround, but one that feels LTA to need | 04:29 | |
camelia | rakudo-moar cd7766: OUTPUT«42» | ||
04:34
Hor|zon left,
chenryn joined
04:42
AlexDaniel left
04:58
Fluor left
04:59
Fluor joined
05:03
Fluor left
05:07
Fluor joined
05:17
adu joined
05:20
adu left
05:25
aborazmeh joined,
aborazmeh left,
aborazmeh joined
05:26
raiph left
05:30
Hor|zon joined
05:35
Hor|zon left
05:50
softmoth joined
05:51
skogs joined
05:52
xfix joined
05:55
softmoth left
06:00
dayangkun_ joined
06:02
dayangkun left
06:10
skogs left
06:21
darutoko joined
06:29
chenryn left
06:31
Hor|zon joined
06:33
chenryn joined
06:35
_dolmen_ joined
06:36
Hor|zon left
06:48
bjz joined
06:56
bjz left,
bjz joined
06:58
domidumont joined
|
|||
nine | .tell jnthn Welcome back! Since it wasn't mentioned in the p6weekly, we've started work on implementing your CompUnit design in the curli branch. Progress is somewhat slow but steady. It's a good example of the best way to understand a design being to implement it :) | 07:01 | |
yoleaux | nine: I'll pass your message to jnthn. | ||
07:02
domidumont left
07:04
domidumont joined
07:07
telex left
07:08
domidumont left
07:12
geraud left
|
|||
[Tux] | test 50000 39.855 39.739 | 07:15 | |
test-t 50000 39.578 39.463 | |||
07:16
telex joined
07:17
domidumont joined
07:21
Actualeyes left
07:24
Actualeyes joined
07:27
telex left
07:29
lizmat joined
07:32
Hor|zon joined
07:34
_dolmen_ left
07:35
FROGGS joined
07:37
Hor|zon left
07:38
softmoth joined
07:41
bjz left
07:42
bjz joined,
RabidGravy joined,
softmoth left
07:49
rurban joined
07:50
risou is now known as risou_awy
07:51
risou_awy is now known as risou,
chenryn left
07:57
lizmat left
07:59
abraxxa joined
08:00
chenryn joined
|
|||
dalek | kudo/nom: 4bdc880 | usev6++ | src/Perl6/Grammar.nqp: Look for all terminators in case of missing sigil Completes fix for RT #120831 |
08:02 | |
kudo/nom: 438d786 | FROGGS++ | src/Perl6/Grammar.nqp: Merge pull request #563 from usev6/rt120831 Look for all terminators and EOF in case of missing sigil |
|||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=120831 | ||
08:05
[Sno] left
|
|||
cosimo | [Coke]: ok, I thought http_proxy support was indeed implemented. Do you have a test case at hand? | 08:11 | |
08:18
aborazmeh left
08:19
ely-se joined
08:20
telex joined
|
|||
RabidGravy | yes it is, though not for an https connection | 08:21 | |
cosimo, while you're here would you except a PR to kebab-case the snake_case method names and remove the (commented out) legacy parts in Cache::Memcached? | 08:23 | ||
cosimo | RabidGravy: I think I can do better than that | 08:24 | |
RabidGravy | cool | 08:25 | |
cosimo | RabidGravy: you should now be allowed to push to my perl6-cache-memcached repo | ||
RabidGravy | :) Yeah got it | 08:26 | |
08:26
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
RabidGravy | cheers! | 08:27 | |
cosimo | and thanks | ||
08:28
telex left
|
|||
RabidGravy | thanks for making it in the first place | 08:28 | |
08:30
rindolf joined
08:32
kmel_ joined
08:33
Hor|zon joined,
telex joined
08:34
Actualeyes left
08:37
[Sno] joined
|
|||
cosimo | kebab-case I had never heard before | 08:37 | |
08:38
Hor|zon left
08:40
leont joined
08:41
lizmat joined
08:42
kmel_ left
|
|||
ChoHag | I have a Str but Foo, where Foo does Iterable. Mapping over the string works (finally) so the Iterator is doing its thing, but how can I ensure the iterator is used in a for loop too? | 08:43 | |
lizmat | good *, #perl6! | ||
ChoHag | Wider question, how does perl determine that map uses the iterator but for uses the Str? | 08:44 | |
moritz | ChoHag: is your variable inside a scalar container? | ||
ChoHag | Yes. | ||
moritz | ChoHag: if yes, "for" will not iterate over it | ||
ChoHag | Is the best kind of answer always another question? | 08:45 | |
moritz | ChoHag: I'd recommend putting it into an @-sigiled variable | ||
lizmat | m: my Int $a but Iterable; for $a {} # don't think a @ is needed | 08:46 | |
camelia | rakudo-moar cd7766: OUTPUT«Method 'iterator' must be implemented by Int+{Iterable} because it is required by a role in any compose_method_table at gen/moar/m-Metamodel.nqp:2661 in any apply at gen/moar/m-Metamodel.nqp:2671 in any compose at gen/moar/m-Metamodel.nqp:2807…» | ||
moritz | ChoHag: well, if you don't show us actual code, all we can do is ask more questions to find out what's wrong | ||
lizmat | if it does Iterable, it is expected to have an iterator method, and for will call it | ||
moritz | lizmat: I'm pretty sure that's not true | ||
m: my $a = [1, 2, 3]; for $a { say 42 } | |||
camelia | rakudo-moar cd7766: OUTPUT«42» | ||
moritz | m: my $a = [1, 2, 3]; for $a { say 42 }; say $a ~~ Iterable | 08:47 | |
camelia | rakudo-moar cd7766: OUTPUT«42True» | ||
ChoHag | lizmat: It certainly seems towork that way. | ||
moritz | ... unless it's inside a scalar container | ||
m: my \a = [1, 2, 3]; for a { say 42 }; | |||
camelia | rakudo-moar cd7766: OUTPUT«424242» | ||
08:47
Actualeyes joined
|
|||
ChoHag | Interestingly the pull-one method is called the first time when looping over the (now-@-sigilled) variable with map but not the second time when looping over it with for. | 08:48 | |
So, not that I need to in this instance, but is there a way to ensure that Iterator's results aren't cached? | |||
moritz | ChoHag: for might call .cache | 08:49 | |
ChoHag | Would such an action even make sense or be grounds for taking away one's programming license? | ||
lizmat | if you don't want it cached, you could implement your own .cache method that doesn't do anything, I think | ||
lizmat admits to not quite being awake yet | 08:50 | ||
moritz | method cache { self } | ||
ChoHag | Hmm. How do I force a $-sigilled variable to treated as though it's @-sigilled without re-sigilling it? | 08:51 | |
And does sigilling have one or two ells? | |||
moritz | m: my $a := [1, 2, 3]; for $a { say 42 } | ||
camelia | rakudo-moar cd7766: OUTPUT«424242» | ||
moritz | ChoHag: you bind to it. Though I'm not sure that's a good idea | ||
lizmat | .oO( isn't that sigillizing ? ) |
08:52 | |
moritz | contrary to what folks believe, sigils do carry meaning in Perl 6 | ||
ChoHag | Sorry, not make the variable pretend it's @-sigilled, just treat it in one specific instance as though it is. | ||
moritz | *some folks | ||
and it's best to use the appropriate sigil | |||
you can also do | |||
ChoHag | Like I naiively thought for @($haha-I'm-a-list) { ... } did. | ||
moritz | m: my $a = [1, 2, 3]; for @$a { say 42 } | ||
camelia | rakudo-moar cd7766: OUTPUT«424242» | ||
moritz | yes, that works | 08:53 | |
ChoHag | Not here. Must be because my object's weird. | ||
moritz | deweirdify it :-) | ||
ChoHag | It's actually a Str but with a role that does Positional and Iterable. | ||
moritz | in German we call that "Eierlegende Wollmilchsau" | 08:54 | |
en.wiktionary.org/wiki/eierlegende_Wollmilchsau | |||
08:55
leont left
|
|||
moritz | egg-laying wool-milk-sow | 08:55 | |
ChoHag | Yes thanks. My 15 year old lessons and Google were both having trouble with that one. | ||
What I'm doing does make a sort of sense. I hope. | 08:56 | ||
I'll know when I've done it. | |||
If. | 08:58 | ||
09:02
dakkar joined
|
|||
ChoHag | Interesting. If I start with my pigsheep in an @ it loops correctly in for, if I start with it in a $ then put it into an @, it still thinks its a scalar. | 09:02 | |
09:02
zakharyas joined
|
|||
ChoHag | If someone knows how to make sense of that then great, but I'll live with it (being able to treat the magic bacon like a list is really the exception) but it brings to mind a more useful question - are the syntax changes brought about by the GLR documented? | 09:05 | |
Also: Mmmm. Furry bacon. | |||
gfldex | m: my ($s1, $s2, $s3) = [1,2],[3,4],[5,6]; my @a1 = <a b>; my @a2 = <c d>; my @a3 = <e f>; .say for flat $s1, $s2, $s3; .say for flat @a1, @a2, @a3; | 09:08 | |
camelia | rakudo-moar cd7766: OUTPUT«[1 2][3 4][5 6]abcdef» | ||
Timbus | erm. are you putting your item into an array, or are you.. putting it 'into' an array. like as the first item at position 0 | 09:09 | |
gfldex | some things are flatter then others | ||
09:09
azawawi joined
|
|||
azawawi | hi #perl6 | 09:09 | |
09:09
aborazmeh left,
Hor|zon joined
|
|||
ChoHag | In a nutshell: method (Str :$to) { $to but WollMilchSau unless $to ~~ WollMilchSau; ...; my @to = $to; ...; } | 09:09 | |
Timbus | my @thing = $other-thing.list; seems to allow iteration, but im not sure if you've got something fancy here | ||
oh | 09:10 | ||
gfldex | ChoHag: some changes are documented, some are not. It depends on the document and the thing. | ||
azawawi | github.com/azawawi/perl6-selenium-...s/chrome.t # Automated chrome UI testing in Perl 6 :) | ||
Timbus | well.. that's putting it in the array as the first element isn't it? | ||
RabidGravy | azawawi++ # go go go! | ||
ChoHag | Apparently. | 09:11 | |
Timbus | you might want $to.list there | ||
azawawi | RabidGravy: thx :) | ||
Timbus | oh but you cant seem to listify your ubject huh.. I missed that. well then.. | 09:12 | |
azawawi | any update on module version support in panda or Zef like PAUSE/CPAN | 09:14 | |
? | |||
timotimo | ohai happy perl people | 09:15 | |
azawawi | timotimo: hey there | ||
lizmat | azawawi: irclog.perlgeek.de/perl6/2015-10-27#i_11437939 | ||
azawawi reads it | |||
09:16
xinming left
|
|||
azawawi | lizmat: cool | 09:16 | |
lizmat | m: use nqp; class A { method a is raw { nqp::list(1,2,3) } }; dd nqp::atpos(A.a,0) # but not when it's a class method ? | 09:17 | |
camelia | rakudo-moar cd7766: OUTPUT«This type does not support positional operations in block <unit> at /tmp/jOAHVkWFqK:1» | ||
ChoHag | Ah that's why the iteration only happens once. my @foo = "bar" but ChickenPig; iterates immediately. | 09:18 | |
lizmat | .tell jnthn use nqp; class A { method a is raw { nqp::list(1,2,3) } }; dd nqp::atpos(A.a,0) # is this failure intended, side effect or a NYI ? | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
ChoHag | So @something is literally a list, not an object which happens to be listy. | 09:19 | |
Right? | |||
lizmat | .tell jnthn it works with my/our subs: not working with class method is holding back internal sub -> Rakudo::Internals migration | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
09:19
lizmat left
|
|||
azawawi | can we use 'NETWORK_TESTING=1 or 0' in HTTP::UserAgent? | 09:20 | |
i feel it is the right way for tests requiring network testing | 09:21 | ||
i know in Perl land there is NO_NETWORK_TESTING and NETWORK_TESTING | |||
09:22
diana_olhovik_ joined,
quester left
|
|||
azawawi | the assumption that tests can access the internet freely is wrong in restricted corporate environments | 09:22 | |
timotimo | oh lord | 09:25 | |
does the "named arguments inside a method call inside a return call" problem still exist? | |||
09:26
softmoth joined
09:29
Begi1114 joined
09:31
softmoth left,
lizmat joined
|
|||
lizmat | timotimo: doesn't ring a bell to me | 09:32 | |
timotimo | return Blah.new(:$foo, :$bar); -- gives "the default constructor for Blah only takes named arguments" | 09:34 | |
my $c = Blah.new(:$foo, :$bar); return $c; -- works | |||
09:35
tokuhiro_ joined
09:36
xfix left
09:39
tokuhiro_ left
|
|||
azawawi | what's the best module to port to Perl 6 land to handle Zip files? | 09:41 | |
timotimo | totally build a gui automation thing to drive a WinRAR instance! | 09:42 | |
09:43
bjz_ joined
|
|||
RabidGravy | azawawi, probably Archive::Zip | 09:43 | |
09:43
xinming joined
09:44
bjz left
|
|||
azawawi | im reading its cpan ratings :) | 09:44 | |
one thing i noticed that it is not intuitive... members vs the concept of files | |||
RabidGravy | well it seems to be the thing that most of the things on CPAN depend on | 09:45 | |
azawawi | cool | ||
it depends on Zlib | |||
RabidGravy | azawawi, that is the zip terminology, they aren't files until you put them on disk ;0) | 09:46 | |
azawawi | but i remember using it before and i was like why is it so complicated... | ||
09:46
CIAvash joined
|
|||
azawawi | the API is not that user friendly | 09:46 | |
a good mdule API is one that you can use to accomplish your given task in like 5 minutes | 09:47 | ||
RabidGravy | it depends on what that task is | 09:48 | |
azawawi | RabidGravy: see metacpan.org/source/PHRED/Archive-...extract.pl | ||
RabidGravy | sure, but that doesn't preclude making something on top of it that has an interface that does what *you* want it to do | 09:49 | |
azawawi | yup | ||
kebab-cased API... yummy :) | 09:50 | ||
RabidGravy | for something like zip, it's best to make something a somewhat unintuitive, but flexible and generalised API with the expectation that other people will use it in different ways | 09:51 | |
mrf | No reason you can't get a bit of both. | 09:52 | |
The core functions people are likely to use a lot (Archive and Extract) should be fairly simple to grok | |||
RabidGravy | but I'd go a separate module for that | 09:53 | |
mrf | RabidGravy: why? | ||
DrForr contemplates gyro-case. Somehow I visualize lots of parentheses and whitespace. | |||
azawawi | my $members = File::Zip.unzip('foo.zip').members; | 09:54 | |
mrf | azawawi: yeah Though I would caution that members might be very specific knowledge to zip docs. Maybe items | ||
azawawi | mrf: i will re-read zip file format first and then implement. Porting blindly = bad | 09:55 | |
RabidGravy | because if I want to e.g. zip for streaming or storing in a database or whatever I want a fairly low-level API and not be doing with the rest | ||
mrf | Yeah though I caution using the terminology in the Zip docs as it is probably unfamiliar to lots of people using it as a pure archiving tool | 09:56 | |
timotimo | Archive-Zip only supports deflate, is that the only compression type you'll find in pkzip archives? | ||
RabidGravy | it's the only one that is un-encumbered as I understand it | 09:57 | |
mrf | RabidGravy: still no reason not to have a more intuitive api for access to the features 90% will want. | ||
azawawi | timotimo: if it can read JARS and firefox XPIs, it would be enough for me atm :) | ||
mrf | Basically I don't see why you can't have your cake and eat it | 09:58 | |
timotimo | azawawi: i have no idea :) | ||
09:58
yeahnoob left
|
|||
azawawi | timotimo: Jars (Java archives) are zip files along with firefox extensions (XPIs) | 09:59 | |
mrf | azawawi: any way this could be hoked into IO. so that "file.zip".IO.unzip would work? | ||
RabidGravy | mrf, we appear to be at cross purposes. I'm not arguing against providing such an interface, just for a separate way of providing it | ||
e.g. Archive::Zip. Archive::Zip::File in the same distribution | 10:00 | ||
10:00
diana_olhovik__ joined
|
|||
RabidGravy | the latter using the former to provide the common interface | 10:00 | |
azawawi | mrf: true at the end of the day, you need to unzip a file entry and maybe read a particular file entry to change a value or something | ||
mrf | RabidGravy: Clearly I misinterpretted you. I was under the impression you were arguing for seperate distributions | ||
azawawi Travis CI rocks (docs.travis-ci.com/user/gui-and-hea...browsers/) :) | 10:01 | ||
10:01
diana_olhovik_ left
|
|||
RabidGravy | no, just a separation of concerns | 10:01 | |
mrf | RabidGravy: then I completely agree | ||
RabidGravy | of course there's nothing to preclude someone who has a completely different view of what the simple API from looking like making a completely different one as a separate distribution ;-) | 10:03 | |
10:06
espadrine joined
|
|||
RabidGravy | azawawi, it is entirely possible, having looked at this for a second or two, that this could be acomplished with a few changes to Compress::Zlib::Raw and a wrapper module | 10:06 | |
as most likely you're going to end up using zlib anyway | 10:07 | ||
azawawi | true | 10:08 | |
RabidGravy | strangely, it appears (or at least ldd tells me,) that the "unzip" here uses libbz2 | ||
azawawi starts working on it :) | |||
10:09
Upasaka left
|
|||
nine | RabidGravy: so the user has to decide up front which interface to use. What if the requirements change as the program grows and the user suddenly needs functionality that's no longer covered by the simplified API? | 10:10 | |
RabidGravy | they change their code, being programmers and all | 10:12 | |
nine | Sucks to rewrite everything just because you need an additional feature in one place | ||
10:12
rindolf left
|
|||
nine | I'm arguing here for a scalable API with high level functions that cover the most common use cases and still can be combined with lower level methods for the interesting edge cases. | 10:13 | |
RabidGravy | er, but how do they use different functionality without doing that? | ||
and that API can be provided by a hierarchy of modules | 10:15 | ||
nine | Like in Inline::Perl5 you usually will use only use Foo:from<Perl5> and maybe EVAL "foo()", :lang<Perl5>; but if you need to, you can combine that with $p5.call, .invoke, .require and so on. | ||
10:15
Odud joined
10:16
diana_olhovik__ left,
bjz_ left
|
|||
RabidGravy | if Foo::Simple uses Foo to provide some functionality then a user of Foo::Simple has the features of Foo at their disposal | 10:16 | |
Odud | I'm trying to install a module using panda, I can see it in modules.perl6.org/ but it doesn't show up when I do panda list? | 10:17 | |
10:17
bjz joined,
chenryn left
|
|||
RabidGravy | anyway, more important things like checking out a south asian sweet shop for divali gifts call | 10:17 | |
have fun | |||
azawawi | so basically Travis CI comes with PhantomJS (headless web-kit based browser testing) and firefox (via X virtual frame buffer). Cool :) | 10:18 | |
10:18
kjs_ joined
|
|||
azawawi | travis-ci.org/azawawi/perl6-seleni...4099#L1348 # firefox webdriver is being tested now via Travis CI :) | 10:20 | |
10:21
RabidGravy left
10:28
rarara_ left
|
|||
dalek | c: 97bcfa4 | lizmat++ | doc/Type/Supply.pod: Some work on documenting Supply.throttle WIP, more later today during the lulls at OSCON Europe |
10:29 | |
lizmat | afk for a few hours& | ||
10:30
lizmat left
10:32
Upasaka joined
|
|||
Odud | ah, needed a panda update first, now found and installed | 10:34 | |
10:35
kid51 joined
10:37
rindolf joined
10:43
lucasb_ joined
10:50
zakharyas left
10:51
zakharyas joined
|
|||
lucasb_ | Is jnthn available? Is he the only one who can upload releases to moarvm site? I'm just reminding. I don't need it anymore; I've already built it from the repo. | 10:56 | |
10:56
chenryn joined,
zakharyas1 joined
10:57
zakharyas left
|
|||
jnthn | lucasb_: Yeah, I'm back now...will do the tarball today. | 10:57 | |
yoleaux | 26 Oct 2015 21:47Z <AlexDaniel> jnthn: No, there was no input from TimToady yet. Although I like my pull request the way it is, there are a couple of things to think about: “out” or “runout”, “runout” or “run-out”, and whether qx// should still exist with “no strict”. | ||
07:01Z <nine> jnthn: Welcome back! Since it wasn't mentioned in the p6weekly, we've started work on implementing your CompUnit design in the curli branch. Progress is somewhat slow but steady. It's a good example of the best way to understand a design being to implement it :) | |||
09:18Z <lizmat> jnthn: use nqp; class A { method a is raw { nqp::list(1,2,3) } }; dd nqp::atpos(A.a,0) # is this failure intended, side effect or a NYI ? | |||
09:19Z <lizmat> jnthn: it works with my/our subs: not working with class method is holding back internal sub -> Rakudo::Internals migration | |||
jnthn | lucasb_: And yeah, we should figure out a way to scale the number of people who can do such uploads to be > 1 :) | ||
lucasb_ | jnthn++, cool! | 10:58 | |
jnthn | nine++ # working on implementing the compunit design \o/ | ||
10:58
zakharyas1 left
10:59
zakharyas joined
|
|||
jnthn | .tell lizmat Intended; we assume subs are in the same language and so will always return us a value that doesn't need hll-mapping, but for method calls we always hll-map (at the callee side, so "is raw" doesn't change anything) | 10:59 | |
yoleaux | jnthn: I'll pass your message to lizmat. | ||
jnthn | .tell lizmat You can explicitly nqp::findmethod(A, 'a')(A) to avoid it. Alternatively, we could special-case calls on Rakudo::Internals to not code-gen a hllize, which would be the more pretty option in the code. | 11:00 | |
yoleaux | jnthn: I'll pass your message to lizmat. | ||
azawawi | mrf: pkware.cachefly.net/webdocs/casest...PPNOTE.TXT # zip file spec | ||
mrf: 4.1.3 "... Compression method 8 (Deflate) is the method used by default by most ZIP compatible application programs. ..." | 11:02 | ||
11:02
eone joined,
spider-mario joined
11:03
mathw_ is now known as mathw
11:10
Odud left
|
|||
timotimo | m: say Rat.^roles; say FatRat.^roles; say "<- huh?" | 11:12 | |
camelia | rakudo-moar cd7766: OUTPUT«((Rational[Int,Int]))((Rational[Int,Int]))<- huh?» | ||
11:13
ParsonsNose left,
ParsonsNose joined
11:14
softmoth joined
|
|||
timotimo | i mean ... that's how it's defined, but is that right? | 11:16 | |
11:19
softmoth left,
ely-se left
|
|||
jnthn | MoarVM 2015.10 release now at www.moarvm.org/releases/MoarVM-2015.10.tar.gz | 11:21 | |
11:21
TEttinger left
|
|||
nine | m: my subset PosInt of Int:D where * > 0; my PosInt $i = PosInt; say $i.defined; | 11:22 | |
camelia | rakudo-moar cd7766: OUTPUT«False» | ||
nine | jnthn: your use of a subset of a :D type in your gist has opened up a can of questions like ^^^ | ||
jnthn: the bug in Metamodel::DefiniteHOW it uncovered is already fixed | 11:23 | ||
11:23
weihan joined
|
|||
nine | jnthn: though neither FROGGS++ nor I are sure if the fix is actually correct :) | 11:23 | |
jnthn | Well, given PosInt is a type object, that should probably complain... :) | 11:24 | |
11:28
pmurias joined
|
|||
pmurias | jnthn: the list of test files 'node nqp-bootstrapped.js' passes: paste.debian.net/318326 | 11:29 | |
jnthn | Wow | 11:30 | |
pmurias++ | |||
pmurias++ for expanding NQP's test coverage too :) | |||
timotimo | yes, very pmurias++ | 11:31 | |
jnthn | FROGGS: On the perf issue I mentioned yesterday: it appears that it's actually a "returns Int:D" that is costly | ||
11:32
eone left
|
|||
jnthn is also disturbed by a lack of inlining in the profile he's looking at | 11:32 | ||
timotimo | yes, lack of inlining's also a thing i've been seeing more and more often | 11:33 | |
11:37
adhoc_ joined
11:39
kid51 left
|
|||
jnthn | Ouch, the "let Failure though return" has cost us a lot there :/ | 11:41 | |
mrf | Should named captures always appear in match object even if the calling rule was called using <.rule>. ie. should rule TOP {<.bar>} token bar {<baz>} give you a $<baz> | ||
timotimo | i'm still amazed at how jnthn can get from a profile to such a realization; i have a hard time with that, still ... | ||
jnthn | timotimo: Well, looking at spesh_log by now :) | 11:42 | |
timotimo | mrf: i don't think so | ||
jnthn | mrf: No | ||
mrf | Why. What is teh rational. | ||
timotimo | mrf: you'd have a $<bar><baz> if it did capture, but the . throws out the $<bar> completely | ||
and just putting named captures into a caller's result seems very icky | 11:43 | ||
mrf | for RFC grammars its really annoying and quite slow to have to provide either a massive heirachy or none of the tokens people want. | ||
FROGGS | jnthn: it is nice that you are back :o) | ||
timotimo | then you can successively { make $<...> } and use $<foo>.ast | ||
jnthn | mrf: You're aware of actions? :) | ||
11:43
abraxxa left
|
|||
mrf | jnthn: I am ish | 11:43 | |
jnthn | mrf: Those let you decouple the data structure you build from the grammar structure. | ||
mrf | I am aware of the concept of actions. | ||
jnthn | mrf: Which would probably help | ||
11:44
colomon left
|
|||
timotimo | jnthn: do we actually generate a bit of code into our methods/subs to do the failure-returning/type-check thing? | 11:44 | |
mrf | jnthn: would you suggest that in these cases it is likely best to declare almost everything with <.rule> and just use actions to actually handle data mapping from the parse | 11:45 | |
timotimo | you still need to capture the subrule in order to get at its .ast | ||
mrf | timotimo: ah ok | ||
11:46
rurban left
|
|||
jnthn | timotimo: Yeah, but I need to work out exactly what/why | 11:47 | |
11:48
ely-se joined
11:50
tokuhiro_ joined,
khw joined
11:51
colomon joined
11:52
sufrostico joined
11:55
tokuhiro_ left,
chenryn left,
abraxxa joined
11:57
Jo_ joined
11:58
Jo_ left
12:01
adhoc_ is now known as adhoc
12:11
loren joined
12:13
dayangkun_ left
|
|||
masak | hi, #perl6 | 12:15 | |
yoleaux | 26 Oct 2015 13:46Z <lizmat> masak: hejki told us to say hi to you at EuroOSCON | ||
masak | hej, hejki :) | ||
DrForr | UGT, masak. | 12:16 | |
pmurias | masak: hi | 12:17 | |
masak is working on 007 tonight | |||
ShimmerFairy | "*sigh* For the last time, Bond, this equipment is all very expensive. I really don't think you're getting this." | 12:18 | |
DrForr | Bummer, you missed yesterday's release date :) | 12:19 | |
masak | :) | ||
we've decided to go and watch the movie while we're still in .cn | |||
with luck, it'll be subtitled, not dubbed | |||
DrForr | I should check to see if there's an IMAX in Lyon. | 12:20 | |
timotimo | which "the" movie are we talking about? | ||
is there a new james bond movie? | |||
DrForr | Spectre, I assume. | ||
masak | aye | 12:21 | |
DrForr | Pathe' Carre de Soie. | 12:22 | |
Bummer, Nov. 11th. | 12:23 | ||
masak | oh? then maybe it hasn't premiered here either... | 12:28 | |
tadzik | hejki :) | ||
DrForr watches the trailer. | |||
tadzik | I still haven't watched the "old" bond movie | 12:29 | |
with blond bond | |||
12:29
kjs_ left
|
|||
masak | tadzik: there's, like, three of them | 12:29 | |
DrForr | 'the "old" bond movie' is somewhat ambiguous :) | 12:30 | |
tadzik | oh, time flies :) | ||
oha | that "old" between quotes will cost you a lot in the future, tadzik | ||
masak | tadzik: you could just read the 007 README.md instead *boom dssh* | ||
tadzik | well, with Daniel Craig or so | ||
masak: I think I did :) | |||
masak | well, no need to watch the movie then | ||
tadzik | oha: the old part, or the between quotes part? | ||
oha | tadzik, that, too | ||
tadzik | . o O ( I feared a "yes" answer ) | ||
well, old as in "not the newest one which comes out a day after I get the steam controller" | 12:31 | ||
oha | you are making it worse :) | ||
DrForr | Well, given /Quantum of Solace/ that's not entirely unreasonable. | 12:32 | |
dalek | oblem_solver_tutorial: 55bece5 | lichtkind++ | chapter/text1.md: updated overview chapter 1 |
||
tadzik | hey, I only watched star trek to understand the jokes that you oslians made on #is | 12:34 | |
keep pestering me and I'll have to watch the bonds too! :P | |||
12:35
Begi1115 joined
12:36
Begi1114 left
|
|||
jdv79 | is there an equiv for .? for a private meth? | 12:43 | |
masak | jdv79: no, I don't think so | 12:44 | |
flussence | .oO( ‽ ) |
||
jdv79 | self.?pubmeth but self!?privmeth | ||
masak | jdv79: guess you can always MOP it | ||
timotimo | um, isn't .? for when you don't know if a method exists | ||
jdv79 | yes but what if its private | ||
timotimo | hm, with private methods you may be inside a role and trying to call a private method on another composed role or the target class | ||
so there *is* some sense to that | |||
masak | I'd like to call y'all's attention to tonight's 007 oddity: a proposed melt() built-in: github.com/masak/007/issues/61 | ||
jdv79 | i'll just workaround it then | 12:45 | |
12:45
kaare_ joined
12:47
rurban joined
|
|||
timotimo | is your use-case actually where you have roles or something and you don't know if a given private method will be there? | 12:47 | |
masak | m: role A { method foo { self!bar() } }; role B { method !bar { say "OH HAI" } }; class C does A does B {}; C.new.foo | ||
camelia | rakudo-moar cd7766: OUTPUT«OH HAI» | ||
masak | huh. :) | 12:48 | |
timotimo | i remember when the decision was made that private methods and attributes should be shared between roles and such | 12:50 | |
flussence | oh timotimo, did you see? tokuhirom++ made a WebSocket module \o/ | ||
timotimo | yes! | 12:51 | |
with client *and* server parts! | |||
12:51
bjz left
12:52
kjs_ joined
|
|||
flussence scratches one thing off my ever-growing list of things that get endlessly procrastinated on... | 12:52 | ||
12:55
RabidGravy joined
|
|||
masak | tokuhirom++ # making Perl 6 a lot more interesting | 12:58 | |
jnthn | Any thoughts on rt.perl.org/Ticket/Display.html?id=126459 ? | ||
exit *does* cause END phasers to be run, so arguably LEAVE ones could too BUT I don't see that behavior extending to LEAVE blocks in call stacks on other threads, and would kinda prefer not to open this can of worms and leave things as they are. | 12:59 | ||
(The issue is nothing to do with die/fail and everything to do with the exit call in the CATCH, fwiw) | 13:00 | ||
RabidGravy | yeah, I'd go with documenting the behaviour | 13:02 | |
13:03
softmoth joined,
kmel joined
|
|||
masak | jnthn: it's not immediate to me that LEAVE has the same claim to running on exit() as END does | 13:03 | |
jnthn: LEAVE has some kind of guaranteed-ness about it *if* the program is still executing normally | 13:04 | ||
13:04
CIAvash left
|
|||
jnthn | I also don't really buy the "different compunit" argument too much, in so far as if you bury exit calls in modules you're already asking for trouble. | 13:04 | |
[Coke] | (not for https) - ok, there's a redirect from http to https. ah well. | 13:05 | |
RabidGravy | if you exit in a module you should be taken outside | ||
masak | RabidGravy: ...and smooched? | 13:06 | |
jnthn: didn't we have an exit in a module at some point at $client? :P | |||
(someone else's code, that is) | |||
jnthn | Probably :P | 13:07 | |
jdv79 | timotimo: yes. | ||
13:07
softmoth left
|
|||
timotimo | OK | 13:08 | |
13:10
Begi1115 left
|
|||
RabidGravy | masak, smooched is an option | 13:11 | |
but yeah once you've left the building by the window you can't expect to swipe your door card on the way out | 13:13 | ||
timotimo | so we should call it "defenestrate" instead of "exit"? | 13:15 | |
13:15
azawawi left
|
|||
pink_mist | throw-out-the-back-entrance | 13:16 | |
psch | so the CATCH outside of &f delays the exception unwinding until after it's finished? | 13:17 | |
because S04 says "at every block exit time (even stack unwinds from exceptions)" for LEAVE | |||
timotimo | it has to, doesn't it? | ||
13:17
sufrostico left
|
|||
psch | i'm just asking to understand correctly :) | 13:17 | |
masak | m: constant foo = say("OH HAI"); BEGIN { say "yep" } | 13:18 | |
camelia | rakudo-moar cd7766: OUTPUT«OH HAIyep» | ||
psch | timotimo: but yes, "it has to" seems intuitively right. i mean, unwinding the exception means letting it bubble up into it's dealt with | ||
and if "dealing with it" means bailing the program we don't reach the spot where we finished dealing with it, which would be where LEAVE would be called | 13:19 | ||
13:19
sufrostico joined
|
|||
tadzik | hmm, does anyone remember a piece of documentation of sorts that explained grammars giving URI parsing as an example? | 13:19 | |
I think it might've been moritz++'s site, but perlgeek.de looks down | |||
masak | m: say "and then there was runtime"; role R { say "OH HAI" }; class C does R {} | ||
camelia | rakudo-moar cd7766: OUTPUT«OH HAIand then there was runtime» | ||
psch | tadzik: the wikibook has URL | 13:20 | |
en.wikibooks.org/wiki/Perl_6_Progr...g/Grammars | |||
dalek | p: 5db12c0 | jnthn++ | src/QRegex/P6Regex/Actions.nqp: Don't allow quantifying anchors. They're certain to be zerowidth, so it almost always indicates a mistake. |
||
jnthn | psch: We don't unwind the stack until *after* the CATCH block has been left | ||
psch | tadzik: and essays.ajs.com/2010/05/writing-perl...odule.html has URI | ||
jnthn | psch: That is, the CATCH is in the dynamic scope of the die | ||
masak | m: say "run"; class C { say "!" } | ||
camelia | rakudo-moar cd7766: OUTPUT«run!» | ||
jnthn | (On the stack top) | ||
masak | huh :) | ||
jnthn | Thus why resumable exceptions are trivial: it's just a return from the handler | 13:21 | |
masak | m: say "run"; role R { say "role" }; class C does R { say "class" } | ||
camelia | rakudo-moar cd7766: OUTPUT«rolerunclass» | ||
tadzik | psch: yeah, I recall something that was perhaps not 100% RFC-compliant but very easy to understand and explain, with not too many fancy characters :P | ||
jnthn | Also means you have the dynamic scope where the exception took place. | ||
masak | m: say "run"; role R { say "role" }; for ^3 { class C does R { say "class" } } | ||
camelia | rakudo-moar cd7766: OUTPUT«rolerunclassclassclass» | ||
psch | jnthn: okay, i think that means i understood it mostly correctly :) | 13:22 | |
dalek | kudo/nom: d5786ca | jnthn++ | tools/build/NQP_REVISION: Bump for error on quantifying anchors. |
||
ast: c49587f | jnthn++ | S05-metachars/line-anchors.t: Tests for RT #126438. |
|||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126438 | ||
13:22
Begi1115 joined
|
|||
jnthn | That was an easy RT at least :) | 13:23 | |
13:27
brrt joined
13:30
AlexDaniel joined
13:32
tokuhirom left
13:34
carlin left
13:35
risou is now known as risou_awy,
aindilis left
13:36
risou_awy is now known as risou,
tokuhiro_ joined
13:37
bjz joined,
skids joined
|
|||
[Coke] | jnthn++ #moarvm tarball. Thanks! | 13:40 | |
13:40
tokuhiro_ left
|
|||
RabidGravy | cosimo, yay! travis-ci.org/cosimo/perl6-cache-memcached | 13:40 | |
13:40
bjz_ joined
13:41
loren left
13:42
bjz left
13:46
jdv79 left
|
|||
psch | hrm, i'm not really seeing a way forward wrt r-j | 13:46 | |
timotimo | todo passed! | 13:47 | |
psch | from the looks of it, the NQP-level concept of a CompUnit is too closely tied to "singular output-file" to make the general case of splitting classfiles feasible | ||
timotimo | luckily we don't expect user code to be as big as the setting is right now | ||
so we can probably do something to partition the core setting | 13:48 | ||
pmurias | arbitrary limitations suck | ||
jnthn | *sigh* JVM :/ | ||
We've already hit and worked around a bunch of limitations. | |||
psch | pmurias: yeah, especially considering the classfile field that holds the size is actually 32bit afair, but still limits at 2**16 | ||
jnthn | For this one, I'm not sure what to do. | 13:49 | |
psch | well, if we accept the conjecture that only CORE.setting is large enough to need splitting it could probably special-cased | ||
jnthn | We always --target=jar so we could feasibly produce one class file that forwards method calls to all the rest | ||
13:49
Skarsnik joined
|
|||
jnthn | And pack the lot into the JAR | 13:49 | |
psch | i'm thinking something along the lines of splitting the CU into a super- and subclass, which should be workable when entering from the subclass | 13:50 | |
although figuring out how, when and where to split is gonna be fun | 13:51 | ||
but again, in a special case it should be workable | |||
jnthn | *nod* | ||
Ugh | |||
What's actually too large? | 13:52 | ||
Number of methods? | |||
Or the amount of bytecode? | |||
psch | the latter | ||
jnthn | bah | ||
psch | "The value of the code_length item must be less than 65536." | ||
it bails with a "Classfile too large" RTE | |||
timotimo | perhaps we can improve our code-gen to bridge the gap for another month or two | 13:53 | |
jnthn | Huh? Really? CORE.setting compiled into 64KB oc doe? | ||
*of code? | |||
(until recently) | |||
jnthn can't believe that... | |||
psch | jnthn: i think code_length is number of ins, not bytes | ||
timotimo | we may be hitting some degenerate case or something | ||
FROGGS | perhaps 65536 frames or something similar? | 13:54 | |
psch | i'm gonna check the classfile for cd77669d09d38e5ddb89ee8f6c8392bacebdf829 (which still compiled) for the value the classfile spec is talking about | 13:55 | |
just to verify that's actually what's behind this | |||
"The last byte of the last instruction in the code array must be the byte at index code_length - 1. " 'nother bit from the spec | 13:56 | ||
ilmari | docs.oracle.com/javase/specs/jvms/s...vms-4.html says it's bytes | 13:57 | |
docs.oracle.com/javase/specs/jvms/s...jvms-4.7.3 specifically | |||
that's a for a single method | |||
psch | mhm, i might've been misreading a lot, it seems | 13:58 | |
in my defense, actually reading through the whole standard... well :P | |||
so it's probably not code_length, but an actual limit on the classfile, which is specified elsewhere..? | |||
dalek | p: 8c1fe86 | jnthn++ | src/HLL/Grammar.nqp: Fix whitespace. |
13:59 | |
p: a23e6c1 | jnthn++ | src/HLL/Grammar.nqp: Add missing non-assoc check as found in STD. Prevents things like ++$foo++ from compiling. |
|||
ilmari | constant_pool_count, fields_count, methods_count and attributes_count are 16bit | ||
13:59
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
dalek | kudo/nom: 58029ca | jnthn++ | tools/build/NQP_REVISION: Bump NQP_REVISION for non-assoc error. |
14:00 | |
pmurias | psch: isn't code_length a per method limit? | ||
dalek | ast: 5988574 | jnthn++ | S03-operators/precedence.t: Test for RT #125210. |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125210 | ||
psch | pmurias: yeah, ilmari++ hinted at that. i've apparently misread that | 14:01 | |
jnthn | There's one more off the xmas list :) | ||
psch | it's a pity the jvm doesn't tell which constant exactly was exceeded, if that's the problem | ||
14:02
g4 joined
|
|||
timotimo | ah, so you're grabbing the last one that still compiles and look at which value is closest to some arbitrary limit | 14:02 | |
14:03
jdv79 joined,
tokuhiro_ joined,
tokuhiro_ left,
tokuhiro_ joined
|
|||
psch | looks like it's the constant pool | 14:04 | |
[Coke] | I didn't google hard, but some links implied it was a limit on the tool we were using to generate the bytecode. | ||
psch | 0000000: cafe babe 0000 0033 ff9f 0100 2831 4331 | ||
ff9f looks bad :P | |||
timotimo | the ff9f part? | ||
pmurias | timotimo: grepping the jvm source code could show you the exact value | ||
timotimo | ugh :) :) | ||
psch | as in, it's the constant pool count | 14:05 | |
timotimo | what kinds of things land in there? | 14:06 | |
it's not just integers and strings, right? | |||
14:06
azawawi joined
|
|||
jnthn | Callsite descriptors too iirc | 14:06 | |
And type descriptors | |||
azawawi | hi | ||
14:06
aborazmeh left
|
|||
timotimo | hum. | 14:07 | |
psch | timotimo: well, the constant pool starts right after the count in the file | ||
azawawi | first attempt at unzipping a zipped archive github.com/azawawi/scripts/blob/master/unzip.p6 # currently displaying file headers, not uncompressing but we're nearly there :) | ||
psch | timotimo: and it has type descriptors, method descriptors, P6-level attribute names | 14:08 | |
and lots other, too... | |||
like, names of serialized files | |||
timotimo | so we should re-name attributes so that some classes can re-use those names :D | ||
14:08
softmoth joined
|
|||
psch | that could work, yes... :P | 14:09 | |
timotimo | ugh | ||
psch | on that note, it's pretty much only integers and strings that land there, but those strings might be any of the listed examples above | 14:10 | |
especially 'cause we're using strings in nqp mostly to write bytecode, which needs descriptors | |||
timotimo | can you give us a dump of those? | ||
or rather | 14:11 | ||
tell us how to dump those strings :) | |||
[Coke] | RT: 1040, LTA: 89; weird: 12, NOM: 8; tests: 10; xmas: 72 | ||
timotimo | may not be such a good idea to upload a gigantic bunch of strings like that | 14:12 | |
[Coke] | glr: 4 | ||
timotimo | also, perhaps we want to shorten the bytecode-only strings | ||
14:12
kmel left
|
|||
[Coke] | segfault: 10 | 14:12 | |
psch | timotimo: uhm, i'm using xxd | 14:13 | |
timotimo | oh, it's that easy? | ||
just unzip the .jar and xxd? | |||
psch | timotimo: yeah, xxd the .class | ||
timotimo | first i gotta have one at all :| | 14:15 | |
cd77669d09d38e5ddb89ee8f6c8392bacebdf829 is the one i'm going to make | |||
psch | yeah, that's the one i have here | ||
timotimo | good | ||
masak | lol, I blogged! strangelyconsistent.org/blog/macros...el-is-hard | 14:16 | |
PerlJam | masak++ (if nothing else, for the title :) | 14:17 | |
psch | m: 0xfffe - 0xff9f | ||
camelia | rakudo-moar cd7766: OUTPUT«WARNINGS:Useless use of "-" in expression "0xfffe - 0xff9f" in sink context (line 1)» | ||
psch | m: say 0xfffe - 0xff9f | ||
masak | heh :) | ||
camelia | rakudo-moar cd7766: OUTPUT«95» | ||
gfldex | masak: can i read that now or do i have to wait until the future becomes the present? | ||
psch | this also means that e8d7577b662a1ab85d9ed080d3a8eff56036b016 adds at least 96 constant pool entries... | ||
that feels somewhat much | |||
PerlJam | gfldex: the future is already the past! you're too late! | ||
masak: "DeLoeran" ? | 14:18 | ||
masak | ugh. fixing. | ||
PerlJam | masak: btw, I think changing the language used for macros is a necessity for clarity and understanding. So, kudos on that. | 14:19 | |
masak | typo fix'd. | ||
14:19
chenryn joined
|
|||
masak | PerlJam++ | 14:19 | |
14:21
andreoss joined
|
|||
PerlJam adds "macros are gnarly" to his imaginary masak quote file | 14:21 | ||
psch | timotimo: shortening doesn't help with this, we have too many strings, not too long strings :) | 14:26 | |
timotimo | psch: i didn't mean shortening, just sharing | ||
psch | oh | ||
well, classes with the same descriptor are already shared | 14:27 | ||
14:27
andreoss left
|
|||
psch | and for codegen we don't really use many strings that aren't descriptors | 14:27 | |
timotimo | hmm | ||
psch | ironically, if we didn't need to split methods we'd probably not run into the constant pool size limit yet... | 14:29 | |
timotimo | we seem to have a gigantic amount of flattening_* strings in there | ||
like, up to ~200 | |||
psch | and pres_topic_*s too | 14:30 | |
14:30
spacebat left
|
|||
timotimo | these are probably names for locals, so we're probably asking for unique names from a block too far up in the tree? | 14:30 | |
i thought those are per QAST::Block? | |||
pmurias | maybe replacing some strings with integers would help? | ||
timotimo | !HANDLER_*, too | 14:31 | |
dalek | kudo/nom: bd2d5c4 | jnthn++ | src/core/Capture.pm: Fix .perl on Capture with no valid $!list part. |
||
kudo/nom: 5cfda30 | jnthn++ | src/core/List.pm: Prevent creation of Capture from lazy list. Rather than just hanging (which was a slight improvement from the pre-GLR behavior, which was to give back an empty Capture, meaning you could get silent bogus matches on an empty array unpack in a signature). Thus this addresses RT #123581. In a future Perl 6, we may find a way to allow Capture to contain infinite things. But not for 6.christmas. |
|||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=123581 | ||
psch | mhm, "don't use $_" and "don't give int constants meaningful names" would probably help quite a bit | ||
timotimo | fatalizee_*, too | ||
i wonder why we're getting such high numbers | |||
14:32
Aggressively_Alp joined,
raiph joined
|
|||
jnthn | There are names of...locals, right? | 14:32 | |
timotimo | if those get a little thinned out, i'm sure we'll have enough space | ||
jnthn: i think so, yeah | |||
jnthn wonders if we actually need to preserve those down to bytecode level | |||
I mean, we don't in Moar | |||
14:33
tokuhirom joined
|
|||
Skarsnik | Hello. I just created a module (Gumbo) The module document said to tell someone one IRC to have it added to the perl6 modules list: github.com/Skarsnik/perl6-gumbo | 14:33 | |
psch | ugh | ||
jnthn | They're just for identification during compilation; so far as we care beyond that we can call then local_0, local_1, etc. | ||
psch | jnthn: doesn't that mean pre-codegen inlining..? | ||
jnthn | psch: No | ||
psch | oh, or just calling them the same, yeah that would work too | ||
jnthn | psch: Right :) | ||
timotimo | that's for the Perl6::Optimizer to do | ||
psch | err uhm | ||
no, it doesn't help | |||
jnthn | psch: Could even fix it in the bytecode generation | ||
Oh? | 14:34 | ||
psch | wait, it does | ||
misthought there | |||
14:34
lichtkind joined
|
|||
psch | if all the locals are numbered the same | 14:34 | |
of course it helps | |||
as in, every block starts his locals at 0 | |||
14:34
azawawi left
|
|||
timotimo | probably also not terribly hard to implement | 14:34 | |
would that also help on moarvm to keep .moarvm files a little bit smaller? | 14:35 | ||
RabidGravy | Skarsnik, it's make a pull request to add the line to github.com/perl6/ecosystem/blob/ma.../META.list | ||
timotimo | though sometimes the local names have a tiny bit more information in them | ||
jnthn | timotimo: On MoarVM we already don't preserve that info | ||
timotimo | ...oh? | ||
jnthn | timotimo: In the bytecode locals just have indexes. | ||
Since local = register | |||
14:35
ParsonsNose left
|
|||
timotimo | indeed! | 14:35 | |
dalek | ast: 54f672b | jnthn++ | S02-types/capture.t: Tests for RT #123581, plus one other bug. |
14:36 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=123581 | ||
Skarsnik | RabidGravy, thx, how I do that? Git is very confusing for me. | ||
psch | so that's replacing all the (overly) meaningful arguments to QAST::Node.unique() with "local", right? | ||
timotimo | either that or do it "in post" | ||
jnthn | psch: no no, just those for *locals* | ||
psch | uhm, right | 14:37 | |
14:37
sciurius joined,
tokuhirom left
|
|||
psch | i'd prefer that "in post", but i'm not sure in how far we still know what's supposed to be local there | 14:37 | |
76 calls to Node.unique, fwiw | |||
masak | 'night, #perl6 | ||
RabidGravy | Skarsnik, fork, the github.com/perl6/ecosystem. clone your fork locally, make the change, push to your fork, make Pull Request in github | ||
in summary | 14:38 | ||
jnthn | psch: Around github.com/perl6/nqp/blob/master/s....java#L205 I think | ||
14:39
ely-se left
|
|||
dakkar | mrf: gist.github.com/dakkar/07b3c50bdf899421489c | 14:40 | |
14:41
ely-se joined,
Aggressively_Alp left
|
|||
Skarsnik | RabidGravy, thx for the help :) | 14:47 | |
14:48
brrt left
|
|||
psch | hm, neither pres_topic_* nor fatalizee_* actually appear in the decompiled classfile | 14:48 | |
as in, nothing is loaded via those strings | 14:49 | ||
i guess that just confirms that they're local to a given method | |||
14:50
Actualeyes left
|
|||
timotimo | how do you mean "nothing is loaded"? | 14:50 | |
dalek | p: a513828 | (Pawel Murias)++ | src/vm/js/nqp-runtime/bootstrap.js: [js] Set the method_cache on a knowhow metaobj to make nqp::can work. |
14:51 | |
p: fa7a2d5 | (Pawel Murias)++ | t/nqp/90-findmethod.t: Test nqp::can/nqp::findmethod on the knowhow instance and metainstance. |
|||
p: b100410 | (Pawel Murias)++ | src/vm/js/nqp-runtime/bootstrap.js: [js] Make nqp::can work on the knowhow attribute metaobjects. Implement add_method on the knowhow metaobject. |
|||
psch | timotimo: ldc #\d+ | ||
timotimo: i.e. load constant | |||
timotimo | oh | 14:52 | |
psch | timotimo: other cases load a constant and e.g. invoke it as method | ||
timotimo | so the constants are there, but not used at all? | ||
psch | or constructor or whathaveyou | ||
timotimo: it looks like that, yeah | |||
jnthn | Well, just for debugging info I'd guess | 14:53 | |
timotimo | OK. well, even if we can't kick them out completely (for some reason?), if we get to have them share names it'd be a gigantic win for the amount of constants we have | ||
i expect a 75% decrease in constant pool size | |||
just from holding pagedown on strings blah.class | less | |||
psch | 24282 constants are actually loaded | 14:54 | |
so maybe not 75%, but around 50% might be possible | |||
timotimo | how many of those constants are going to be sharing names later on? | ||
why the ... how come 768ECFB91FF8D3046E74BE1165F9984E57671A01 appears a crazy amount of times in strings blah.class | 14:57 | ||
moritz | is that the hash of some object that's referenced everywhere? | ||
14:57
kjs_ left
|
|||
psch | i'd guess it's BOOTSTRAP | 14:57 | |
timotimo | i expect it's a reference to another compunit | ||
hoelzro | o/ #perl6 | 14:58 | |
jnthn | wval probably | ||
timotimo | but why is the whole string in there rather than just a reference to the string constant pool? | ||
jnthn | timotimo: It is, I'd guess? | ||
RabidGravy | Skarsnik, there's a couple of things not quite right with your META.info | ||
jnthn | timotimo: And they all refer to the same constant, and your dumper is derefing it? | ||
RabidGravy | comments on the PR | ||
timotimo | 21181 768ECFB91FF8D3046E74BE1165F9984E57671A01 | ||
Skarsnik | Yes, I just saw the 'comment' | ||
timotimo | jnthn: the dumper is "strings" :) | ||
RabidGravy | cool | ||
timotimo | jnthn: strings doesn't know anything about references | 14:59 | |
dalek | ast: 20171ea | jnthn++ | S09-typed-arrays/hashes.t: Tests to codify behavior in RT #118031. |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=118031 | ||
timotimo | interestingly, the core setting jar is still only 3.5 megabytes big | ||
well, it's compressed | 15:00 | ||
the classfile itself is 11M, which is comparable to moar's core setting, i think | 15:01 | ||
dalek | osystem: eb01a52 | (Sylvain Colinet)++ | META.list: Add Gumbo to ecosystem See github.com/Skarsnik/perl6-gumbo |
||
osystem: da708c9 | RabidGravy++ | META.list: Merge pull request #84 from Skarsnik/master Add Gumbo to ecosystem |
|||
timotimo | almost the same size, actually | ||
psch | timotimo: xxd doesn't only show the constant pool, fwiw | ||
or strings either, fwiw | |||
timotimo | i know | 15:02 | |
i'm wondering why that string appears over and over and over again | |||
and i'm surprised that strings on the core setting for moarvm shows 01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZAabcdefghijklmnopqrstuvwxyza showing up like 15 times in a row | |||
pmurias | timotimo: looks like something from the regex engine | 15:03 | |
15:03
sufrostico left
|
|||
timotimo | nah, look | 15:03 | |
0 appears at the beginning and end | |||
pmurias | hoelzro: hi | ||
timotimo | as do a and A | ||
hoelzro | o/ pmurias | ||
timotimo | i think it's for our handling of .. | ||
15:03
CIAvash joined
|
|||
timotimo | m: m: say "ay" .. "bc" | 15:04 | |
camelia | rakudo-moar cd7766: OUTPUT«"ay".."bc"» | ||
timotimo | m: m: say @("ay" .. "bc") | ||
camelia | rakudo-moar cd7766: OUTPUT«(ay ax aw av au at as ar aq ap ao an am al ak aj ai ah ag af ae ad ac by bx bw bv bu bt bs br bq bp bo bn bm bl bk bj bi bh bg bf be bd bc)» | ||
timotimo | ^- this i mean | ||
moar's core setting strings output is dominated by cuid_[incrementing_number]_[same_thing_over_and_over] | 15:05 | ||
15:05
ParsonsNose joined
|
|||
psch | timotimo: 768ECFB91FF8D3046E74BE1165F9984E57671A01 is an argument to takedispatcher | 15:05 | |
not sure why it actually appears, instead of the const pool ref | |||
15:05
telex left
|
|||
psch | that's probably some kind of bytecode internal... stuff | 15:05 | |
timotimo | is that an op the jvm has? | 15:06 | |
psch | err | ||
misread | |||
15:06
telex joined
|
|||
psch | it's an argument to invokeDynamic... | 15:06 | |
that makes sense, actually. the dynamic callsite gets is name from the constant pool iirc | |||
so 768ECFB91FF8D3046E74BE1165F9984E57671A01 is probably the callsite for wval_noa | 15:07 | ||
and that gets called a lot | |||
timotimo | ah, could be | ||
15:07
Axord left
|
|||
timotimo | but ... if the dynamic callsite gets its name from the constant pool, why does that long string appear literally in the code? | 15:08 | |
15:09
chenryn left
|
|||
timotimo | is this something we can control at all? | 15:09 | |
psch | no | 15:10 | |
timotimo | in that case, i'll shut up | ||
no need to waste time on that | |||
i'll be AFK for a bit, maybe when i'm back you'll have something nice to show from the local renaming thing :) | |||
15:10
chenryn joined
|
|||
psch | re: "how many of those constants are going to be sharing names later on?", there's hardly any ldc insns that load something that's called _\d+ | 15:13 | |
mostly alt_nfa_*, a few ANON_VAR_, and whatever_code_ | |||
15:13
mr_ron joined
|
|||
psch | alt_nfa_* is interesting | 15:13 | |
timotimo | hm, are those not refering to serialized objects? | ||
psch | maybe, yeah | ||
pmurias | hoelzro: nqp-js-compiled-to-js is passing 77 test files, and I'm currently working on debugging the weird bugs (and hidden missing features) that prevent the remaining ones from passing | 15:14 | |
psch | that'd probably explain why alt_nfa_ has two numbers postfixed | ||
hoelzro | pmurias: awesome! I see that others have been lending their expertise on JS stuff here lately =) | ||
mr_ron | star: use IETF::RFC_Grammar::URI; my $g = ::("IETF::RFC_Grammar"); say $g.WHAT | 15:15 | |
camelia | star-m 2015.09: OUTPUT«(RFC_Grammar)» | ||
mr_ron | what does the ::( ) do and where is it documented? | ||
moritz | it's a symbol lookup by name | 15:16 | |
mr_ron | thanks | ||
moritz | dunno if that's documented on perl6/doc anywhere | ||
pmurias | hoelzro: konobi has suggested improving the hackish way nqp-js interacts with the npm | 15:18 | |
hoelzro | yeah? I saw konobi talking a lot with you about it | 15:19 | |
which is great, because my knowledge of that ecosystem is Nil =/ | |||
pmurias | it's mostly alien to me too | 15:21 | |
FROGGS | m: proto foo($x = 42) { } # should that throw like "Cannot put default values on attributes in proto declaration"? | ||
camelia | ( no output ) | ||
FROGGS | jnthn: ^^ | ||
jnthn | FROGGS: Could be a "potential difficulty" if it's an onlystar proto maybe but it's not automatically wrong | 15:23 | |
15:23
andreoss joined
|
|||
FROGGS | ahhh, yes, onlystar vs not... | 15:23 | |
jnthn | But I mean, proto foo($x, $y = $x where $x >= $y) { * } is sensible enough and doesn't mean you're saying anything about the candidates other than that you pre-checked this case in the proto | 15:25 | |
15:25
ParsonsNose left,
chenryn left
|
|||
jnthn | So a ban feels too strong to me | 15:25 | |
15:25
abaugher left
|
|||
jnthn | I'm not even sure it's worth the code in the compiler to warn, tbh. | 15:25 | |
Just document this behavior in the docs for protos | 15:26 | ||
And tests to codify it | |||
Begi1115 | Is it possible to secure an input ? I excpet only a int gist.github.com/Emeric54/786503acdf9a99a4b25f I ex | ||
15:26
abaugher joined
|
|||
dalek | kudo/nom: 78ea30a | jnthn++ | src/ (2 files): Complain over typed *%h at compile time. Makes things consistent with typed *@a. Also introduced a typed exception to cover the two cases and used it. |
15:27 | |
psch | Begi1115: you can add "$nombre ~~ Int" as first condition to the if in a conjunction | ||
lucasb_ | m: say '<-- revision' | 15:29 | |
camelia | rakudo-moar cd7766: OUTPUT«<-- revision» | ||
lucasb_ | ^^ camelia is 3 days outdated? | ||
jnthn | lucasb_: May be when the JVM build busted | ||
lucasb_ | hmm | ||
jnthn | psch++ is looking into that already :) | ||
15:30
FROGGS left
|
|||
RabidGravy | Skarsnik, Gumbo now on modules.perl6.org/ | 15:31 | |
Skarsnik | Thx :) | ||
15:33
pmurias left
|
|||
Begi1115 | psch : $number -> (Str), so it will not works (?) | 15:34 | |
15:34
tokuhirom joined
|
|||
psch | m: sub f ($number) { if $number ~~ Int && 0 < $number < 100 { say "yuss" } else { say "that wasn't right" } }; f "foo"; f 100; f 50 | 15:35 | |
camelia | rakudo-moar cd7766: OUTPUT«that wasn't rightthat wasn't rightyuss» | ||
PerlJam | Begi1115: use $nombre.Numeric and have a CATCH block to do whatever you want when it's not numeric | ||
Begi1115: (as an alternative) | |||
psch: I think he's saying that he'll only ever get a Str from prompt() | 15:36 | ||
psch | oh | ||
i thought &prompt calls &val | |||
m: say 0xff9f - 0xe76c | 15:37 | ||
camelia | rakudo-moar cd7766: OUTPUT«6195» | ||
jnthn | m: my $a = "omg"; with +$a -> $number { say $number } else { say "$a not a number" } | ||
camelia | rakudo-moar cd7766: OUTPUT«omg not a number» | ||
jnthn | m: my $a = 42; with +$a -> $number { say $number } else { say "$a not a number" } | ||
camelia | rakudo-moar cd7766: OUTPUT«42» | ||
PerlJam | oh! I forgot about with/without :) | ||
psch | ^^^ that's the number of free constants pool entries i got free | ||
jnthn | psch: I guess that gives us some breathing room :) | 15:38 | |
psch | github.com/perl6/nqp/blob/master/s....java#L205 <- replaced e.getKey() with "local_" + i | ||
jnthn | psch++ | ||
TimToady | m: my $a = "omg"; with +$a -> $number { say $number } else { say "$_ not a number" } | ||
camelia | rakudo-moar cd7766: OUTPUT« not a number» | ||
TimToady | hmm, supposed to topicalize that else | ||
psch | - actually, with "local_" + i++... | ||
jnthn | with wouldn't topicalize the else too would it? | ||
heh :) | |||
15:38
tokuhirom left
|
|||
psch | jnthn: i don't know, i'll build nom HEAD and see what's around then... | 15:38 | |
TimToady | supposed to, if the last thing was a with | ||
jnthn | TimToady: ah, k. Didn't know you'd decided to do it that way :) | 15:39 | |
psch | jnthn: might be that we get enough for like a week or so of additions... :/ | ||
TimToady | m: my $a = "omg"; with +$a -> $number { say $number } else -> $_ { say "$_ not a number" } | ||
camelia | rakudo-moar cd7766: OUTPUT« not a number» | ||
TimToady | hmm, the explicit case is busted too | ||
coulda sworn I had tests for that... | 15:41 | ||
dalek | ecs: a99182a | jnthn++ | S06-routines.pod: More formal conjectural mention of typed slurpies. And change example that just happened to use them without any notes on their semantics. |
||
lucasb_ | evalbot/build-scripts/rebuild-rakudo.pl tries to build both moar and jvm in the same build run. Maybe split the two into separate processes so camelia-moar can be kept updated while the jvm issue isn't solved? | 15:42 | |
(I'm not certain if this is the actual script that builds things on camelia's server...) | 15:43 | ||
TimToady | m: my $a = "omg"; with +$a -> $number { say $number } else -> $_ { say .WHAT } | 15:45 | |
camelia | rakudo-moar cd7766: OUTPUT«(Failure)» | ||
TimToady | m: my $a = "omg"; with +$a -> $number { say $number } else -> $_ { say .Str } | ||
camelia | rakudo-moar cd7766: OUTPUT«» | ||
TimToady | say wot? | ||
m: my $a = "omg"; with +$a -> $number { say $number } else -> $_ { say .gist } | |||
camelia | rakudo-moar cd7766: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '7⏏5omg' (indicated by 7⏏) in block <unit> at /tmp/PoFdKrkwTn:1» | ||
moritz | I guess it .Str()s to the empty string because it's not a defined value | 15:46 | |
TimToady | I guess the failure is "handled" | ||
moritz | and it doesn't throw because you already handled it by checking for definedness | ||
TimToady | seems like it'd still be worth a warning | ||
m: my $a = "omg"; with +$a -> $number { say $number } else { say .gist } | 15:47 | ||
camelia | rakudo-moar cd7766: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '7⏏5omg' (indicated by 7⏏) in block <unit> at /tmp/xiDJjxLdi_:1» | 15:48 | |
dalek | ast: 3594f51 | jnthn++ | S06-signature/slurpy-params.t: Clean up of typed slurpy parameter tests. We won't do them in 6.christmas, so various tests go away. Add tests to cover the typed exception the compiler gives for the positional and named case. We didn't look at the named case at all before, so this also covers RT #120994. |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=120994 | ||
TimToady | okay, at least the else is not busted | ||
15:50
tokuhiro_ left
15:51
weihan left
|
|||
jnthn | Should be under 70 xmas tickets now :) | 15:51 | |
mrf | TimToady: Did you get an offer of a sponsored visit to london for LPW. | 15:52 | |
[ptc] | \o/ | 15:53 | |
jnthn | Well, or down to 70 :) | ||
15:53
pollei joined
15:56
kjs_ joined
|
|||
psch | m: say 0xffff - 0xe921 | 15:56 | |
camelia | rakudo-moar cd7766: OUTPUT«5854» | ||
psch | that's the total number we have free on nom HEAD | ||
so we got ~300 entries since cd77669d | 15:57 | ||
jnthn | m: .say for gather take do given 1 { default { { a => 1, b => 2 } } } | 15:58 | |
camelia | rakudo-moar cd7766: OUTPUT«a => 1, b => 2» | ||
psch | so we'd have about a month if that was a constant :P | ||
jnthn | m: .say for do given 1 { default { { a => 1, b => 2 } } } | ||
camelia | rakudo-moar cd7766: OUTPUT«a => 1b => 2» | ||
psch | err, no | ||
jnthn | m: .say for do given 1 { default { ${ a => 1, b => 2 } } } | ||
camelia | rakudo-moar cd7766: OUTPUT«a => 1b => 2» | ||
psch | i'm really bad at math it seems | ||
jnthn | m: .say for do given 1 { when True { ${ a => 1, b => 2 } } } | ||
camelia | rakudo-moar cd7766: OUTPUT«a => 1b => 2» | ||
15:59
aundre joined
|
|||
jnthn | m: my $a = 1; .++ for do given 1 { when True { $a } } | 15:59 | |
camelia | rakudo-moar cd7766: OUTPUT«Parameter '$a' expected a writable container, but got Int value in block <unit> at /tmp/xbwILNVX3n:1» | ||
psch | there's 20 times 3 days, which is two months... | ||
vOv | |||
jnthn | m: my $a = 1; .++ for do given 1 { $a } | ||
camelia | ( no output ) | ||
psch | not like it really matters, because it'll hopefully not constantly increase at that rate | ||
jnthn | TimToady: Should when/default decontainerize? | 16:00 | |
TimToady: Related: should for? | |||
At the moment we have a ticket complaing for doesn't and another ticket complaing when/default do :) | |||
m: sub foo { my $s = 0; ($s += $_ for 1..3) }; say foo() | |||
camelia | rakudo-moar cd7766: OUTPUT«(6 6 6)» | ||
colomon | m: Numeric.new.log | 16:01 | |
camelia | rakudo-moar cd7766: OUTPUT«Cannot call log(Numeric: ); none of these signatures match: (Numeric:D $: Cool $base, *%_) (Numeric:D $: Numeric $base, *%_) in block <unit> at /tmp/Agi3RBsJsp:1» | ||
jnthn | That's the use case for for decont'ing, fwiw | ||
colomon | m: Numeric.new.Rat | ||
camelia | rakudo-moar cd7766: OUTPUT«Method 'Rat' not found for invocant of class 'Numeric' in block <unit> at /tmp/84gzuLStpf:1» | ||
lucasb_ | Can I temporally remove jvm from --backends=moar,jvm in the evalbot build script? The commit can be reverted after jvm build is fixed. Anybody approves or opposes? | ||
jnthn | psch: Is your fix about to land? :) | ||
psch | jnthn: yeah, just making up a commit message right now | ||
colomon | m: dd Numeric.new | ||
camelia | rakudo-moar cd7766: OUTPUT«Numeric $var = Numeric.new» | ||
psch | i'd still say that we should decouple jvm and mvm for camelia | 16:02 | |
16:02
aundre left
|
|||
lucasb_ | psch: I'm of the same opinion | 16:02 | |
but just deleting a word for now is easier :) | |||
dalek | p: 61f3e95 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTCompiler.java: Name all locals the same. Due to the increase of Perl 6's CORE.setting, we're running into a constant pool size limitation during classfile generation. This gives us a bit more space by always naming all local variables "__local_\d+", and thus freeing up a few thousand constant pool entries. |
16:03 | |
colomon | m: Numeric.new.Int | 16:04 | |
camelia | rakudo-moar cd7766: OUTPUT«Method 'Int' not found for invocant of class 'Numeric' in block <unit> at /tmp/ImfAQlP0mf:1» | ||
psch | lucasb_: right now, waiting is even easier :) | ||
16:04
donaldh joined
|
|||
psch | oh | 16:04 | |
NQP_REVISION... :S | |||
jnthn | psch: You have a Rakudo commit bit to do it? | 16:05 | |
TimToady | jnthn: today I'm inclined to say no decont, on the theory that a DIHWIDT is better than a CGTFH (Can't Get There From Here) | ||
psch | jnthn: yes | ||
TimToady | but I'd entertain arguments on the other side | ||
dalek | kudo/nom: 1e0b8db | peschwa++ | tools/build/NQP_REVISION: Bump NQP_REVISION to build R-J again. |
16:06 | |
psch | oh hrm, "be able to" probably vOv | ||
16:06
rurban left
|
|||
jnthn | TimToady: Well, what's the idiom for writing the "for" example from the ticket? :) | 16:06 | |
TimToady: In that case a sequence I guess :P | |||
m: sub foo { (for 1..3 { state $s += $_ }) }; say foo() | 16:07 | ||
camelia | rakudo-moar cd7766: OUTPUT«(6 6 6)» | ||
jnthn | TimToady: ^^ is another argument...in some direction :) | ||
TimToady | m: sub foo { my $s = 0; (($s += $_)<> for 1..3) }; say foo() | 16:08 | |
camelia | rakudo-moar cd7766: OUTPUT«(1 3 6)» | ||
TimToady | m: sub foo { my $s = 0; (($s += $_) + 0 for 1..3) }; say foo() | ||
camelia | rakudo-moar cd7766: OUTPUT«(1 3 6)» | ||
jnthn is fine with that | |||
TimToady | but I don't really want to add a for-rw | ||
jnthn | It's not like people trip over this every day :) | ||
Me either! | |||
And you can always use map with a sub :) | 16:09 | ||
Or just a more pure construct :) | |||
TimToady | ayup | ||
.oO("Those who live by the stored die by the stored...") |
16:10 | ||
jnthn | :D | 16:11 | |
Thanks, I'll get these two rulings into RT/Rakudo/tests :) | |||
.oO( If I keep knocking off the easy xmas RTs there'll only be hard ones left... ) |
|||
TimToady | did you scan last week's bugs for new xmaseses? | 16:12 | |
jnthn | Not yet | 16:13 | |
I didn't really scan for new since I did the xmas list | |||
Though I've picked off a few that mighta made it | |||
16:13
ely-se left
|
|||
TimToady has personally sent in some that he thought would qualify, from time to time | 16:13 | ||
16:15
kmel joined,
virtualsue joined
|
|||
jnthn | I figure RT will have somehow recorded the date of my last pass through | 16:15 | |
So I'll know where to start from. | 16:16 | ||
TimToady | for the record, I'm planning to rule on qx, and not foist it off on you :) | 16:19 | |
dalek | c: 76f07c5 | (Zoffix Znet)++ | doc/Language/concurrency.pod: Fix some typos |
16:20 | |
jnthn | ++TimToady ;) | ||
16:20
spider-mario left
|
|||
b2gills | I think 「qx」 made more sense in Perls before 6 since they don't have 「shell」 and 「run」 built in | 16:21 | |
boggard | crazyquotes. | ||
TimToady | if we have qx it will likely default to run with «» parsing or so | 16:22 | |
but I think runout is ugly, and wrong from the user perspective | |||
jnthn | Yes, I knew that name'd not cut it :) | 16:23 | |
TimToady | out is also wrong | ||
'cause the user is thinking of it as coming in | |||
I don't think we can quite swing making run context dependent though to return the results when not in sink | 16:24 | ||
since it has to return a result anyway | |||
jnthn | Yeah, that'd be too much magic | ||
RabidGravy | anyone successfully using travis-ci with a module that uses its own .so files? | ||
TimToady | so maybe a qx() sub to go with the qx// | ||
though the q is wrongish | |||
will do some internal bikeshedding on that | 16:25 | ||
b2gills | q:ww:run< > q:shell< > | ||
lucasb_ | Is there an 'exec' in P6? | 16:26 | |
b2gills | m: exec | ||
camelia | rakudo-moar 1e0b8d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3EyXZ9sBIzUndeclared routine: exec used at line 1» | ||
TimToady | though NativeCall | 16:27 | |
*thr | |||
lucasb_ | hm, ok | ||
donaldh | psch: I'm just catching up with the class file too large issue. | ||
psch: after reading lizmat++'s weekly report | |||
timotimo | donaldh: did you see we fixed it? :) | ||
donaldh | lizmat: yes, for now ;-) | 16:28 | |
psch: block lex values also take up a lot of space in the constant pool. | 16:29 | ||
lucasb_ | yeah, no need to disable jvm in evalbot. thanks psch++ and the others :) | 16:30 | |
Skarsnik | Is there another ouput than html for --profile? | ||
lucasb_ | camelia is already updated | ||
16:30
n0tjack joined
|
|||
psch | donaldh: not sure how those translate to bytecode, but they don't seem caught with the fix i pushed | 16:30 | |
donaldh | psch: in the constant pool, they are a concatenation of package names and ids, etc. so are long unique constants. | 16:31 | |
psch | donaldh: 'cause i'd assume there's more than ~6k block lex values | ||
16:31
Upasaka left
|
|||
donaldh | psch: I'm just mentioning them because it's an area I had considered refactoring. | 16:32 | |
psch | donaldh: well, as mentioned, i'd guess we'll probably run into a full constant pool again in the next few months, assuming CORE keeps growing (which i think is fair, if not as fast as during the last few days) | 16:34 | |
donaldh: and considering that there's only some 24k constants that a accessed in the CORE.setting classfile, i'd guess block lex are quite many | 16:35 | ||
donaldh | There's ~10,000 block lex values averaging > 250 chars | ||
psch | donaldh: so i'd say if it fits go ahead with the refactor somewhat soonish | ||
dalek | kudo/nom: 9621974 | jnthn++ | src/core/control.pm: when/default should not decontainerize. |
16:36 | |
ast: 64b9814 | jnthn++ | S04-statements/when.t: Tests for RT #115384 (when/default decont). |
|||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=115384 | ||
n0tjack | when I'm on a Windows PC, is there a recommended or at least common editing environment? | ||
donaldh | psch: I'm thinking that BLVs could be serialized. The constants for package names and var names are already in the constant pool so the constant pool would shrink by > 2MB. | ||
n0tjack | all I really need is syntax higlighting, and I don't want to go through the hassle of installing VIM | ||
jnthn | n0tjack: Visual Studio Code, or Notepad++ | 16:38 | |
16:38
Upasaka joined
|
|||
donaldh | psch: also thinking that the method annotations could be serialized too | 16:38 | |
n0tjack | not familiar with VSC, I'll go Notepad++, thanks. Any pointers to syntax files for it? | ||
donaldh | psch: because they appear to be quite slow to parse during classfile initialization. | 16:39 | |
psch | i don't really have a thorough understanding of our serialization | ||
donaldh | psch: I looked at the CORE.setting class file ages ago but have not been able to spend any time on it. | ||
b2gills | .oO( my favorite editor was crimson edit, but that was a few years ago, before I started writing Perl 6 ) |
16:40 | |
donaldh | hence mentioning it here in case someone else has time to work on it. | ||
timotimo | donaldh: can you figure out why there's the literal string 768ECFB91FF8D3046E74BE1165F9984E57671A01 a whole bunch of times (in my case, it's 21181) in the class file? | ||
we were thinking it could be the callsite for one of the wval calls or something? | 16:41 | ||
n0tjack | padre looks pretty good, gonna try that | ||
psch | i'm pretty sure it is the indy callsite for wval_noa | ||
jnthn | wval uses indy so it can resolve the constant once and then it should JIT like a Java static final, fwiw. | 16:42 | |
donaldh | timotimo: Well I don't have that particular id. But I'm guessing it's the generated MD5 for the CORE.setting. So it's in all of the BLV constants. | ||
timotimo | BLV? | 16:43 | |
donaldh | block lex value | ||
psch | jnthn: the id timotimo pasted is the constant that identifies the indy callsite | ||
timotimo | i got that id from strings foobar.class | sort | uniq -c | sort -n | ||
m: say 21181 * "768ECFB91FF8D3046E74BE1165F9984E57671A01".chars | |||
camelia | rakudo-moar 1e0b8d: OUTPUT«847240» | ||
donaldh | To make life easier for yourself, use javap | ||
timotimo | m: say (21181 * "768ECFB91FF8D3046E74BE1165F9984E57671A01".chars) / 1024 | 16:44 | |
camelia | rakudo-moar 1e0b8d: OUTPUT«827.382813» | ||
psch | javap doesn't print the constant pool though | ||
timotimo | 827 kilobytes of references to that callsite :) | ||
psch | just those constants that are referenced | ||
donaldh | javap -v -classpath CORE.setting.jar D1BB016295AF34256AA40D0C975C77376BA56CE | ||
16:44
mr_ron left,
domidumont left
|
|||
donaldh | that constant is the classfile name inside my CORE.setting.jar | 16:44 | |
psch | oh, maybe -v prints all of it? | ||
donaldh | Decompiles everything. | 16:45 | |
16:45
andreoss left
|
|||
dalek | ast: c42de8e | jnthn++ | S04-statement (2 files): Tests covering decision on RT #77334. |
16:45 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...l?id=77334 | ||
donaldh | well, not decomiple, but you know what I mean :-) | ||
timotimo | thank you for the javap hint | ||
psch | yeah, -v prints the constant pool | 16:46 | |
that i didn't know - i used javap to see which constants are referenced in the classfile, but xxd to look at the constant pool itself | |||
donaldh | I have BLV constants from #49126 to #59613 | 16:47 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...l?id=49126 | ||
16:48
brrt joined
16:49
Axord joined
|
|||
raiph | m: #`[W=wider, N=narrower] class W {}; class N is W { method N { W }; method W { N } }; sub f(N(W)) { 42 }; say f W # do I have to augment W to get a W to N bind coercion to work? | 16:50 | |
camelia | rakudo-moar 1e0b8d: OUTPUT«Method 'N' not found for invocant of class 'W' in sub f at /tmp/ItgkwWMqHA:1 in block <unit> at /tmp/ItgkwWMqHA:1» | ||
jnthn | OK, enough for now; bbl :) | 16:51 | |
psch | 49122 to 59615 here if i understand correctly | ||
that's not much more | |||
the weirdest bit i saw was integers, from 32780 to 55xxx or something | |||
pretty much all in a row | |||
that's kind of wasteful, but probably neccessary..? | 16:52 | ||
they're not in 1 step increments though | |||
46991 to 49115, only about 2k... | 16:53 | ||
16:53
brrt left
|
|||
psch | also, String and Utf8 duplicates | 16:53 | |
which might also have a solid and understandable reason, but still... | |||
donaldh | Oh, they're not duplicates. | ||
RabidGravy | ew, travis-ci has a way pickier version of gcc than I have here | ||
donaldh | The string just references the UTF-8 | ||
It's the way the constant pool works. | 16:54 | ||
psch | yeah, i assumed something like that | ||
16:55
rurban joined
|
|||
lucasb_ | raiph: iiuc, I would put the coercion method in the base class, not the subclass | 16:56 | |
I think it would be nice if coercions like Foo(Bar) would work if Foo had a constructor .new(Bar) | 16:57 | ||
Skarsnik | Is there any way to speed us the creation of object? I use a C lib to parse html, the C lib take less than 200 ms to parse a 250ko file, but after I spend 2 sec to generate the associated XML::Document | 16:58 | |
dalek | p: 0cec471 | coke++ | docs/release_guide.pod: 4 digit years |
17:02 | |
psch | well, the string occuring over 20k times in nom HEAD definitely doesn't correspond to the name of name .class we have in install/ | 17:04 | |
i'm less confident it's the indy callsite, because that's a different constant pool entry, actually | |||
17:06
mayuresh joined
|
|||
mayuresh | hello :) | 17:07 | |
psch | it's curious. apparently it's used as argument for wval_noa as the caller, or for createsc as the handle | ||
17:07
tokuhiro_ joined
|
|||
n0tjack | all the Perl editing environments on Windows are stagnant. Many of them haven't been updated in 4 years. | 17:09 | |
mayuresh | n0tjack, what about vim for windows? :) | ||
n0tjack | Actually, I even went and installed Vim for Windows | 17:10 | |
17:10
mprelude joined
|
|||
kmel | i use Atom on Linux | 17:10 | |
n0tjack | but then found out the p6 syntax highlighter assumes you're running on a Linux- or BSD (OSX) box | ||
and expects you to be able to type `make install` | |||
mayuresh | :) | ||
kmel | got out of the box perl 6 syntax highlighting | ||
i think it also works on windows | 17:11 | ||
lucasb_ | n0tjack: Can't you just copy the syntax file from github into the vim folder? | ||
mayuresh | yeah, atom has a windows port too. | ||
n0tjack | lucasb_: you'd think so | ||
but not according to the README.MD | |||
I wanted to use Padre, two birds with one stone, but it's a dead project | |||
kmel | but i still use notepad++ when on windows | 17:12 | |
n0tjack | kmel: I don't see a notepad++ syntax highlighting file on perl6.org/whatever | ||
[Coke] | psch: you want me to close out RT #126461? | ||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126461 | ||
n0tjack | kmel: where did you get yours? | ||
17:12
tokuhiro_ left
|
|||
psch | [Coke]: i suppose so, yeah | 17:13 | |
the issue is at least moved back a bit... | |||
17:13
sufrostico joined
|
|||
lucasb_ | n0tjack: There is no need to follow the readme. just copy syntax/perl6.vim into the vim/syntax folder and it works. In my opinion, vim would be the best option. | 17:13 | |
kmel | n0tjack: i meant generally i use n++ on windows. unfortunately no Perl 6 | ||
n0tjack | lucasb_: I'll give it a shot, thanks. | 17:14 | |
mayuresh | lucasb, i agree with you. :) | ||
lucasb_ | n0tjack, mayuresh :) | ||
mayuresh | vi is all that's needed, after-all i've got only 10 fingers! ;) | ||
kmel | n0tjack: but it would be a good idea to create one | ||
n0tjack | I'm also re-learning mIRC isn't as fun and useful as I remember it being | ||
kmel: my TODO list is too long to add that. | 17:15 | ||
mayuresh | n0tjack, has mirc become more noisy? | ||
it would just create a racket the last time (2 years back) i used it. | |||
n0tjack | mayuresh: mIRC hasn't changed since the late 90s. But my tastes and expectations have. | ||
mayuresh | n0tjack, been working under mac os x! | 17:16 | |
:) | |||
[Coke] | RT: 1033; GLR: 4; NOM: 8; LTA: 88; WEIRD: 12; TESTS: 10; XMAS: 67 | ||
n0tjack | mayuresh: Yes, but only recently. Been a Windows guy forever. But I haven't had a need to use IRC in a long time - I'm here because this is how the p6 community organizes itself, and I want to be part of the p6 community. | 17:17 | |
mayuresh | n0tjack, somehow, i am quite pleased with my ubuntu installation. | ||
it just works well, and looks darn pretty too! | |||
:) | |||
n0tjack | Glad to hear it; haven't Linux'd in a long time, but back then "pretty" would not have been in the top 5 adjectives I'd use to describe it. | 17:18 | |
mayuresh | :D | ||
n0tjack | I am loving my Mac, where apps are well thought-out and easy-to-use, but I also get access to a full, real command shell | ||
Though relearning all the keyboard shortcuts was very painful | 17:19 | ||
still is | |||
mayuresh | :) | ||
n0tjack | I think Command+C and Command+V are the stupidest UX decisions I've seen in a decade. | ||
mayuresh | i heard they bundle "bash" with a mac os x installation? | ||
n0tjack | mayuresh: OSX is BSD under the covers. | ||
mayuresh | yeah, i know. | ||
n0tjack | so yes, it has bash | ||
and all the other goodies | 17:20 | ||
mayuresh | i heard that with a mac, you lose control, but gain command! ;) | ||
n0tjack | oh my god that was horrible | 17:21 | |
well done. mayuresh++ | |||
mayuresh | :D | ||
tadzik | oh wow | ||
RabidGravy | ? | 17:25 | |
17:28
andreoss joined,
domidumont joined
17:30
sufrostico left
|
|||
llfourn | What's the best way to lazyily export symbols? So I want to export MyClass from one module to another -- but only want to require ::('MyModule') if it is used by the importer. | 17:33 | |
I think a Proxy object would work | 17:34 | ||
but is there a cleverer way? | |||
17:34
lucasb_ left
|
|||
Skarsnik | Should rakudo warn when you define twice a class? | 17:35 | |
llfourn | m: class A { }; class A { }; | ||
camelia | rakudo-moar 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/MU2sCrFtXSRedeclaration of symbol Aat /tmp/MU2sCrFtXS:1------> 3class A { }; class A7⏏5 { }; expecting any of: generic role» | ||
17:35
tokuhirom joined
|
|||
mayuresh | gah, that just killed the colors on my terminal. | 17:36 | |
Skarsnik | It's maybe because I define the class in a module and it's redefined in another module? | ||
mayuresh | i'll have to quit and rejoin, everything has gone nastily red. | ||
17:36
mayuresh left
17:37
mayuresh joined
|
|||
Skarsnik | I have module A { class X is export {}} and in the main code use A; use X; and it does not complain | 17:37 | |
17:38
kmel left
|
|||
Skarsnik | X is a already installed module | 17:38 | |
17:39
donaldh left
17:40
andreoss left,
tokuhirom left
|
|||
[Coke] | m: say (2/6).WHAT; say (2/6).perl.EVAL.WHAT | 17:40 | |
camelia | rakudo-moar 962197: OUTPUT«(Rat)(Rat)» | ||
RabidGravy | multiple module are fine | ||
Skarsnik | well the module also provide a class X | 17:41 | |
RabidGravy | but the one you have is class A::X really | ||
[Coke] | m: say 'ö'.encode('ASCII') # RT #123673 | 17:42 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=123673 | ||
camelia | rakudo-moar 962197: OUTPUT«Blob[uint8]:0x<3f>» | ||
RabidGravy | m: module A { class X { } }; class X { } | ||
camelia | ( no output ) | ||
17:42
raiph left
|
|||
RabidGravy | m: module A { class X { } }; class X { }; say A::X.new, X.new; | 17:43 | |
camelia | rakudo-moar 962197: OUTPUT«X.newX.new» | ||
RabidGravy | they just know themselves by the short names | ||
17:44
n0tjack left
|
|||
mayuresh | i'll be right back ... | 17:45 | |
17:45
mayuresh left
|
|||
Skarsnik | Maybe I should be clear on what I am trying to do x). I have Gumbo (a html parser). I want to replace the use of html::parser:xml (also a html parser) by providing a fake h:p:x class that use Gumbo. An example is like tricking module that use h:p:x (html::restrict) by using my gumbo base class | 17:45 | |
17:46
mayuresh joined
|
|||
llfourn | do you mean that you want Gumbo to use your fake class? | 17:46 | |
mayuresh | irssi is really way better than ircii | 17:47 | |
thanks mr. wall for the suggestion. | |||
[Coke] | RT #124120 - can people try to reproduce this on windows? If no one can repro it, we can close it out. | ||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=124120 | ||
[Coke] | Skarsnik: the way to do that is to have both of you agree on a role to provide, I think. | 17:48 | |
Skarsnik | llfourn, na the other way, imagine I have writed a script that use html::scrapper. html::scrapper use h:p:x (that is freaking slow). I want to be able to just write in my script something like : use Gumbo :fakehpx; and it take the place of hpx in html::scrapper | 17:49 | |
llfourn | Skarsnik: ah I understand. Hmmmm... | 17:51 | |
retupmoca | [Coke]: on my windows 10, '> perl6 -e "use Digest; say 1"' works fine (in both powershell and cmd.exe) | ||
llfourn | in perl5 it was easy because of all the globals | ||
[Coke] | retupmoca++ # does perl6 -e'my $σ0;' work? | 17:52 | |
Skarsnik | by slow I mean, it take 30 sec to parse 250ko of html where the C lib take 150 ms x) | ||
17:53
raiph joined
|
|||
retupmoca | [Coke]: no errors with that either | 17:53 | |
[Coke] | danke. | ||
17:53
abraxxa left
|
|||
raiph | m: #`[W=wider, N=narrower] class W {}; class N is W { method N { W }; method W { N } }; sub f(N(W)) { 42 }; use MONKEY-TYPING; augment class W { method N { N } }; say f W # lucasb_++ Thanks, I recall some no-need-to-augment-base-class coercion proposals but didn't recall one of them landing | 17:53 | |
camelia | rakudo-moar 962197: OUTPUT«42» | ||
[Coke] | m: :10<1*2**-64> | 17:54 | |
camelia | rakudo-moar 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/sVMgh5RoxjMalformed radix numberat /tmp/sVMgh5Roxj:1------> 3:10<1*2**7⏏5-64> expecting any of: number in radix notation» | ||
[Coke] | m: say 1*2**-64 | 17:55 | |
camelia | rakudo-moar 962197: OUTPUT«5.42101086242752e-20» | ||
[Coke] | m: enum E <Foo Bar>; sub x(Floo) {} | 17:56 | |
camelia | rakudo-moar 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/jInQTgRZ2nInvalid typename 'Floo' in parameter declaration.at /tmp/jInQTgRZ2n:1------> 3enum E <Foo Bar>; sub x(Floo7⏏5) {}» | ||
llfourn | Skarsnik: yep, there maybe some hack though..like hack the compunit resolver but I don't think there is an API for that yet. | ||
17:57
^elyse^ joined,
kmel joined
|
|||
[Coke] | RT - down to 1030 | 17:57 | |
RabidGravy | Skarsnik, you can actually do "constant HTML::Parser::XML := Gumbo' | ||
llfourn | RabidGravy: but he needs to do it inside someone elses module unless I'm confused | 17:58 | |
[Coke] | Or you can call your module the same thing. | ||
and then they can change a use statement, get your modified module instead of the slow one, and not have to do any MOP magic. | |||
(unlike p5, you can have two completely different implementations of the same module with the same name that differ by, say, implementor) | 17:59 | ||
mayuresh | coke, 'mop' == meta-object protocol! | ||
[Coke] | I am thinking we can close RT #77170 as DIHWIDT | ||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...l?id=77170 | ||
[Coke] | mayuresh, yes. | ||
RabidGravy | or, make a HTML::Parser::Any, fix the other modules to use that and have it instantiate the appropriate class ;-) | ||
Skarsnik | or maybe find a way to say these modules provide the same service. like the 4-5 modules for json? x) | 18:00 | |
RabidGravy | there are specced things for doing this, don't know how concrete | 18:01 | |
18:01
japhb left
18:03
rurban left
|
|||
[Coke] | TimToady, jnthn: RT #112216 needs a design decision. | 18:03 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=112216 | ||
18:04
AlexDaniel left
|
|||
Skarsnik | hm doing: constant HTML::Parser::XML := Gumbo::HTML::Parser::XML; throw an error. it seem he does not like the :: | 18:04 | |
18:04
zakharyas left
|
|||
Skarsnik | m: constant A::B::C := 1; | 18:04 | |
camelia | rakudo-moar 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/BmjztQm9VMMissing initializer on constant declarationat /tmp/BmjztQm9VM:1------> 3constant A:7⏏5:B::C := 1;» | ||
llfourn | m: constant A::B::C = 1; | 18:05 | |
18:05
dakkar left
|
|||
camelia | rakudo-moar 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/GDOfQic3xVMissing initializer on constant declarationat /tmp/GDOfQic3xV:1------> 3constant A:7⏏5:B::C = 1;» | 18:05 | |
RabidGravy | m: module A::B { constant C := 1 } | ||
camelia | ( no output ) | ||
RabidGravy | m: module A::B { constant C := 1 }; say A::B::C | ||
camelia | rakudo-moar 962197: OUTPUT«1» | ||
[Coke] | m: use Test; is("\c[LINE FEED]", "\c10", '\c[LINE FEED] works'); | 18:06 | |
camelia | rakudo-moar 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/p9ONBVo_aVUnrecognized character name LINE FEEDat /tmp/p9ONBVo_aV:1------> 3use Test; is("\c[LINE FEED7⏏5]", "\c10", '\c[LINE FEED] works');» | ||
[Coke] | m: say "\c[COLON]" | ||
camelia | rakudo-moar 962197: OUTPUT«:» | ||
18:08
kjs_ left
|
|||
mayuresh | m: say "\c10" | 18:09 | |
camelia | rakudo-moar 962197: OUTPUT«» | ||
18:09
kjs_ joined
|
|||
[Coke] | m: use MONKEY_TYPING; augment slang Regex { token numish { \d+ } }; | 18:09 | |
camelia | rakudo-moar 962197: OUTPUT«===SORRY!===Could not find MONKEY_TYPING in any of: file#/home/camelia/.perl6/2015.10-40-g9621974/lib inst#/home/camelia/.perl6/2015.10-40-g9621974 file#/home/camelia/rakudo-inst-2/share/perl6/lib file#/home/camelia/rakudo-inst-2/share/p…» | ||
mayuresh | so those little 'nl' stand for new-line? | ||
[Coke] | m: use MONKEY-TYPING; augment slang Regex { token numish { \d+ } }; | 18:10 | |
camelia | rakudo-moar 962197: OUTPUT«===SORRY!===QAST::Block with cuid cuid_1_1445969407.65868 has not appeared» | ||
[Coke] | mayuresh: yes. | ||
18:10
llfourn left
|
|||
[Coke] | m: class A { }say "alive"; | 18:10 | |
camelia | rakudo-moar 962197: OUTPUT«alive» | ||
[Coke] | You can also use them when giving camelia code to run | 18:11 | |
mayuresh | how? | ||
simply press "enter"? | |||
can't be! | |||
[Coke] | mayuresh: look at my last send. | 18:12 | |
it has a  after the class definition, avoiding the need for a ; | |||
mayuresh | i am looking at it, and all i see is that little 'nl'. | ||
how did you make that 'nl'? | |||
should i be pressing "shift+enter"? | 18:13 | ||
[Coke] | I cut and pasted it. You could also use whatever your OS/keyboard has for generating unicode. | ||
mayuresh | m: class A { } | ||
camelia | ( no output ) | ||
[Coke] | What OS are you using? | ||
mayuresh | say "alive"; | ||
i am under linux (ubuntu) running irssi. | |||
[Coke] | mayuresh: it's a unicode character. | 18:14 | |
mayuresh | oh! | ||
okay, now i get it. | |||
[Coke] | ok. perhaps one of our linux users can point you at a compose key. | ||
mayuresh | that would be nice. :) | ||
[Coke] | r: say "abcde" ~~ / | @(<a b bc cde>)+»/ | ||
raiph | mayuresh: does cut/paste work? | ||
camelia | rakudo-{moar,jvm} 962197: OUTPUT«「cde」» | ||
mayuresh |  | 18:15 | |
looks like. :) | |||
m: class A { }  say "alive"; | |||
camelia | rakudo-moar 962197: OUTPUT«alive» | ||
mayuresh | :D | ||
gee, nice. :) | |||
[Coke] | r: use MONKEY_TYPING; augment class Cool { method foo (*@) { "foo" } }; Cool.compose; Int.compose; say Int.foo | 18:16 | |
18:16
FROGGS joined
|
|||
camelia | rakudo-moar 962197: OUTPUT«===SORRY!===Could not find MONKEY_TYPING in any of: file#/home/camelia/.perl6/2015.10-40-g9621974/lib inst#/home/camelia/.perl6/2015.10-40-g9621974 file#/home/camelia/rakudo-inst-2/share/perl6/lib file#/home/camelia/rakudo-inst-2/share/p…» | 18:16 | |
..rakudo-jvm 962197: OUTPUT«===SORRY!===Could not find MONKEY_TYPING in any of: file#/home/camelia/rakudo-inst-2/share/perl6/runtime file#/home/camelia/rakudo-inst-2/share/perl6/lib file#/home/camelia/rakudo-inst-2/share/nqp/lib file#/home/camelia/.perl6/2015.10-40-…» | |||
[Coke] | r: use MONKEY-TYPING; augment class Cool { method foo (*@) { "foo" } }; Cool.compose; Int.compose; say Int.foo | ||
camelia | rakudo-{moar,jvm} 962197: OUTPUT«Method 'compose' not found for invocant of class 'Cool' in block <unit> at /tmp/tmpfile:1» | ||
FROGGS | o/ | ||
mayuresh | o/ | 18:17 | |
[Coke] | r: use MONKEY-TYPING; augment class Cool { method foo (*@) { "foo" } }; Cool.^compose; Int.^compose; say Int.foo | ||
camelia | rakudo-{moar,jvm} 962197: OUTPUT«foo» | ||
mayuresh | okay, so issuing an 'm' invokes the moarvm directly, and a 'r' is for putting the same through rakudo! | ||
but i thought the moarvm has it's own bytecode format! then how does it interpret stuff written in ascii? | 18:18 | ||
18:18
sufrostico joined
|
|||
[Coke] | mayuresh: no, it's running rakudo-m | 18:18 | |
whereas r does rakudo-m and rakudo-j | |||
18:18
firstdayonthejob left
|
|||
[Coke] | j: #`[and this is just rakudo-j] say 3 | 18:18 | |
camelia | rakudo-jvm 962197: OUTPUT«3» | ||
psch | r: say $*VM | 18:19 | |
camelia | rakudo-jvm 962197: OUTPUT«jvm (1.7)» | ||
..rakudo-moar 962197: OUTPUT«moar (2015.10)» | |||
mayuresh | okay, i am kind-a lost, what are rakudo-m and rakudo-j? | ||
ah, m for moar, and j for jvm? | |||
psch | r: say $*PERL.compiler | ||
camelia | rakudo-{moar,jvm} 962197: OUTPUT«rakudo (2015.10.40.g.9621974)» | 18:20 | |
mayuresh | that's rather cool. :) | ||
psch | mayuresh: exactly. the compiler is rakudo in both cases, but the underlying vm is moar or jvm respectively | ||
[Coke] | r: &&::{}[];; | ||
camelia | rakudo-{moar,jvm} 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileUndeclared routine: & used at line 1» | ||
psch | mayuresh: wouldn't be possible with an integrated execution environment ;) | ||
mayuresh | :D | ||
[Coke] | r: &::{}[];; | ||
camelia | rakudo-{moar,jvm} 962197: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileUndeclared routine: & used at line 1» | ||
[Coke] | r: ::{}[];; | 18:21 | |
camelia | ( no output ) | ||
[Coke] | yay, can close that old ticket. | ||
RabidGravy | there was a ticket for that | ||
? | |||
weirdos | |||
mayuresh | :) | ||
nine | RabidGravy: around here that's a compliment ;) | 18:22 | |
mayuresh | :D | ||
RabidGravy | oh I know | ||
jnthn | nine: Is the Bool ~~ Int branch still blocking on me looking at it? :) | 18:23 | |
18:25
japhb joined
|
|||
RabidGravy | if I was to send a PR for rakudo to add .device and .inode to IO::Path there'd be all sorts of wailing an gnashing of teeth about it being Unix specific wouldn't there? | 18:26 | |
[Coke] | jnthn: I looked briefly at c\[LINE FEED] - looks like we give codepoints names, but no easy way to have multiple names per point, eh? | ||
RabidGravy: yup | |||
Put it in a module. | |||
RabidGravy | it's in a module | 18:27 | |
that module spends most of its time broken | |||
nine | jnthn: psch++ fixed my weird Bool.^mro[0] !=== Bool issue in github.com/rakudo/rakudo/commit/cc672654e8bd but there's still segfaults (oh yes :-/) in Bool.pick(*) and Bool.roll(*) | ||
RabidGravy | I need those for Linux::Fuser | ||
18:32
espadrine left
|
|||
zengargoyle | typeing  on linux - try Ctrl+Shift+U and see if a little box pops up with a little 'u' in it, then type 2424 and enter. | 18:38 | |
if ubuntu has that particular unicode input method configured. | 18:39 | ||
mayuresh |  | ||
yeah, it does, work! :) | |||
thanks zegargoyle :) | |||
zengargoyle | there, now you can type any unicode if you can remember it's number | ||
mayuresh | yeah, looking up unicode charts now! ;) | ||
zengargoyle | also check out compose key, on my machine compose is configured as the windows key via a .Xmodmap file and windows+< and then < by itself does « | 18:40 | |
and there are a bunch of other compose+something+something mappings. | 18:41 | ||
mayuresh | coolness. | ||
18:43
kjs_ left
|
|||
zengargoyle | there's alsa a an RFC1345 input method you can install that uses &CC sorta like using compose. | 18:47 | |
dalek | ast: 1145029 | FROGGS++ | S32-exceptions/misc.t: add another test for: my Int a |
18:49 | |
mayuresh | मयुरेश <- that's my name in devnagari script! :) | 18:50 | |
zengargoyle, thanks a million for sharing that tip. :) | |||
zengargoyle | tools.ietf.org/html/rfc1345 gives an idea of what to try somethimes, or vim digraphs. | 18:51 | |
ah, see you've probably figured out enough.. :) | |||
mayuresh | :D | ||
zengargoyle | the compose mappings are pretty much a mystery to me aside from a few guessable ones and /usr/share/doc/libx11-dev/i18n/compose/en_US.UTF-8.xml.gz which is a horrible read. | 18:52 | |
mayuresh | hmnn, i found this link; unicode-table.com/en/#control-character | 18:53 | |
zengargoyle | i'm not really sure where to find an actual list of compose things or setup new compose things. mostly stick with the rfc & unicode methods myself. | 18:54 | |
to find unicode things, i usually cut and paste through `iconv -f utf8 -t utf16 | xxd` and look for the code. :) | 18:56 | ||
mayuresh | :) | ||
[Coke] | RT: down to 1028 tickets. | 18:57 | |
RabidGravy | wahay! | ||
mayuresh | off-topic, but, are there any tolkien fans here-abouts? | 18:59 | |
i am looking to get myself a copy of 'lotr' for the kindle. | 19:00 | ||
and can't find any with a good rating on amazon.com | |||
most seem to be messed up during the print-to-digital processing. | 19:01 | ||
FROGGS | mayuresh: I can't help you there | ||
mayuresh | froggs, no worries. | ||
btw, did you get any reply from marijn? | 19:02 | ||
FROGGS | mayuresh: not yet | ||
mayuresh | would advise you to be patient, he usually takes time. | ||
FROGGS | mayuresh: that was my plan :o) | ||
mayuresh | :) | ||
he's most responsive on twitter, @marijnjh | 19:03 | ||
FROGGS | I'm not though | ||
mayuresh | :) | ||
FROGGS | it's a frogs vs birds thing ;o) | 19:04 | |
nine | I slowly get the impression, that loading a module is a kinda complicated process... | ||
FROGGS | nine: it is | ||
FROGGS probably has a patch for RT #125573 | 19:05 | ||
nine | But I also get the feeling, that I understand more and more of it and how jnthn++ wants to untangle it :) | 19:06 | |
FROGGS | for me it starts to get funny once you thought you understand bounded serialization and get your hands on reposession conflicts as well as trying to un- or re-own an object... | 19:08 | |
itz_stmuk | mayuresh: I recently bought the kindle LOTR and it was OK .. there were very minor typos in the OCR but they were rare and it was obvious the correct version | ||
mayuresh | itz_stmuk, can you please share the link? | 19:09 | |
nine | FROGGS: luckily I'm still poking around in the upper layers so I don't have to know anything about that ;) | ||
FROGGS | nine: yes, though we have to think about these problems very soon (for CURLI) | 19:10 | |
dalek | ast: 9c56e42 | coke++ | integration/weird-errors.t: add a test for RT #119999 |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=119999 | ||
itz_stmuk | mayuresh: www.amazon.co.uk/dp/B002RI9176/ref=..._TE_M1T1DP | 19:11 | |
you might be able to subst the co.uk by your local domain | |||
nine | FROGGS: well maybe by then I'll have learned enough to be of help | ||
mayuresh | itz_stmuk, cool, yes, i'll check it out. | ||
thanks :) | |||
dalek | kudo/nom: 6063886 | FROGGS++ | lib/Test.pm: dont override potentially non-zero exit code This will fix RT #125573 |
19:12 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125573 | ||
mayuresh | itz_stmuk; just got myself the copy, thanks a million. :) | 19:14 | |
itz_stmuk | np | 19:15 | |
19:15
CIAvash left
|
|||
[Coke] | t/spec/S17-supply/syntax.t hanging on os x with test-jobs=10ish | 19:17 | |
19:19
raiph left
|
|||
dalek | ast: 2dfcd85 | FROGGS++ | S29-context/die.t: add test for die() + Test.pm |
19:22 | |
19:23
firstdayonthejob joined
|
|||
FROGGS | [Coke]: and it does not on my linux box with 4 test jobs | 19:23 | |
.tell leont is there anything wrong with my patch here? github.com/rakudo/rakudo/commit/6063886343 | 19:24 | ||
yoleaux | FROGGS: I'll pass your message to leont. | ||
[Coke] | FROGGS: I'm trying to see if I can use some xcode tool to attach the hung process and see what it's doing. | 19:27 | |
FROGGS | [Coke]: I bet it is hanging somewhere in libuv... because that's where it hung before IIRC | 19:29 | |
19:29
xfix joined
19:32
mbrock joined
|
|||
mayuresh | coke: i think there's something called "instruments" under x-code which let's you do what you want to. | 19:32 | |
dalek | kudo/nom: 7d885ea | coke++ | src/ (2 files): Don't bother setting recursion limit It only ever did anything on the parrot VM. |
19:33 | |
[Coke] | mayuresh: yes. but I have no idea how to attach it to a moar process and see anything useful. | ||
(I found moar, selected it as something I cared about, and then had no info on how to show anything happening. dtrace seems similarly complex). Doesn't matter, I killed the process now. | 19:34 | ||
mayuresh | code; which version of x-code are you using? | 19:35 | |
i meant, coke! | |||
:) | |||
19:35
mbrock left
|
|||
[Coke] | mayuresh: 7.1 (7b91b) | 19:36 | |
mayuresh | dang. | ||
there used to be something called "spin control" in pre-4.2 | |||
that could be used specifically for monitoring hang activity. | |||
19:37
tokuhirom joined
19:38
kjs_ joined
19:41
tokuhirom left
|
|||
mayuresh | coke; i think they've introduced something called "address sanitizer" in v7. | 19:41 | |
useyourloaf.com/blog/using-the-addr...tizer.html | 19:43 | ||
itz_stmuk | dtruss on OS X resembles linux systrace | 19:44 | |
except you always have to be root | |||
19:46
rangerprice joined
|
|||
rangerprice | hi | 19:46 | |
mayuresh | hi :) | ||
rangerprice | :) | 19:47 | |
kmel | ohai | ||
19:48
sufrosti1o joined
|
|||
mayuresh | alrighty, it's past mid-night, and i need to hit bed. | 19:50 | |
nice chatting with you all. :) | |||
coke, hope your problem gets resolved. :) | |||
19:50
tokuhiro_ joined
|
|||
mayuresh | bye. | 19:50 | |
19:51
mayuresh left
|
|||
rindolf | rangerprice: hi, sup? | 19:51 | |
rangerprice | rindolf: hi, what do you mean with "sup" ? | 19:52 | |
PerlJam | heh | ||
rangerprice | "support" ? | ||
PerlJam | rangerprice: he's asking if you would like to dine with him :) | ||
rindolf | rangerprice: sup is short for "What's up?" | ||
PerlJam | rangerprice: no, really, he's saying slangy ... that | 19:53 | |
19:53
sufrosti2o joined
|
|||
rangerprice | Oh okay | 19:53 | |
rindolf: well well, you ? | 19:54 | ||
PerlJam: Hi there | |||
PerlJam | greetings | ||
rindolf | rangerprice: I'm fine - had another productive day. | ||
rangerprice: and I reached an empty inbox again. | |||
19:55
domidumont left
|
|||
moritz | ah, the good old "rm -rf", "read mail -- really fast" | 19:55 | |
rindolf | moritz: heh. | ||
PerlJam | I wish my days at least /felt/ more productive whether they were or not | 19:57 | |
Because even when I have a productive day, more often than not, it doesn't feel productive because of all the other things that happened | |||
rangerprice | hahaha, i remember when i was on Arch Linux, and accidentally i typed that in my terminal: sudo rm * / | ||
moritz | rangerprice: be glad there was no -r in there | 19:59 | |
(can still hurt a *lot*) | |||
nine | When our scoped variables or classes from a loaded module are not available in the used module, is that a sign that global merging failed? | ||
s/in the used module/in the using module/ | 20:00 | ||
PerlJam | while working with my team on a senior project in college, I tried to remove some spurious files that ended with .8 and I ended up typing "rm *.*" which nuked all of our C source code | ||
rangerprice | And after i installed OpenBSD, but OpenBSD is lack of support, so i re install Arch Linux and now this is my preferred OS | ||
PerlJam: hahahahahaaa | |||
PerlJam | the only "backup" we had was a print out from a few hours before. | 20:01 | |
20:01
AlexDaniel joined
|
|||
PerlJam | (and this was before RCS/CVS/whatever) | 20:01 | |
20:01
lizmat joined
|
|||
PerlJam | lizmat: o/ | 20:02 | |
lizmat | PerlJam o/ | ||
yoleaux | 10:59Z <jnthn> lizmat: Intended; we assume subs are in the same language and so will always return us a value that doesn't need hll-mapping, but for method calls we always hll-map (at the callee side, so "is raw" doesn't change anything) | ||
11:00Z <jnthn> lizmat: You can explicitly nqp::findmethod(A, 'a')(A) to avoid it. Alternatively, we could special-case calls on Rakudo::Internals to not code-gen a hllize, which would be the more pretty option in the code. | |||
lizmat | good *, #perl6! | 20:03 | |
jdv79 | how would i do something like a "before set_value" like in moose? | ||
PerlJam | jdv79: you could .wrap the method perhaps. | 20:04 | |
lizmat | jnthn: if you can tell me where we're hlllizing methods, I could take a stab at doing that for Rakudo::Internals | ||
alternately, maybe we should just implement this as a class trait? | |||
jdv79 | but that's globally scoped, right? | ||
if i runtime mixin a role before the wrap() that would scope it down? | 20:05 | ||
seems likethere has to be a better way | |||
nine | answering my own question: yes, it is! | ||
20:05
aindilis joined
|
|||
PerlJam | nine: what is "global merging" from your question? | 20:06 | |
nine | PerlJam: merging the globals from the loaded module into the GLOBAL package as far as I understand the code | 20:07 | |
PerlJam | ah. | ||
psch | hm, Moose' "before set_value" seems somewhat MOP-y to me, actually | 20:08 | |
PerlJam | psch: Well, IIRC, it does come from Class::MOP | ||
jdv79 | it is | ||
trying to implement a "write once" | |||
and then hopefully someone who knows better can help | 20:09 | ||
20:09
kjs_ left
20:13
abaugher left
20:14
abaugher joined
|
|||
jnthn | lizmat: Going for rest now, but: src/Perl6/Actions.nqp:5720 | 20:19 | |
lizmat | jnthn: and the class attribute idea ? | ||
good night jnthn :-) | 20:20 | ||
RabidGravy | jdv79, you can use wrap() or in the case of the attribute, apply a role that provided the set_attribute, does whatever you want and then optionally calls nextsame/callsame to the original | ||
20:20
darutoko left
|
|||
jnthn | lizmat: Also workable :) | 20:20 | |
lizmat | okidoki | ||
jnthn | Just stick a property on the meta-object or so :) | ||
lizmat | gnight again! | ||
jnthn | cy'all tomorrow | 20:21 | |
'night o/ | |||
RabidGravy | toodlepip | ||
jdv79 | i tried the override approach but got somthing about a collisions method missing | ||
so i thought i'd move on to wrapping | |||
whatever is better in the end - i just want to get it working atm | |||
20:22
kjs_ joined
20:25
Oatmeal joined
|
|||
psch | hmm | 20:25 | |
generated accessors for an Attribute unfortunately don't seem to go through {get,set}_value | |||
kmel | in the docs i can see that there is a distinction between sub and method | 20:26 | |
what is the difference? | |||
psch | that was my MOP-y thought, just declare a WriteOnceAttribute is Attribute has $.written, override set_value to check for $.written and set $!written after the first writing to the value | ||
jdv79 | actually i'm not sure how to do this cause i need the attr name but its in a priv attr which is not accessible to a wrap from a role, right? | ||
dalek | kudo/curli: 449de22 | (Stefan Seifert)++ | src/core/CompUnit (3 files): Migrate module loading code to CompUnit::Loader |
20:27 | |
psch | but yeah, the accessor doesn't go through {get,set}_value, which means you'd have to override compose and add the check to the generated accesors | ||
nine | That was a surprisingly hard commit to do | ||
psch | jdv79: ^^ | ||
kmel: methods can't be declared without a surrounding class and have an implicit invocant | |||
kmel: there might be more distinctions, but those come to mind | 20:28 | ||
(where "can't" means "unless you scope them") | |||
m: method foo { } | |||
camelia | rakudo-moar 7d885e: OUTPUT«Potential difficulties: Useless declaration of a has-scoped method in mainline (did you mean 'my method foo'?) at /tmp/vOqb7_wfPB:1 ------> 3method7⏏5 foo { }» | ||
psch | and, yeah, it's also just a potential difficulty... | ||
so uhm, they can be declared, but *still* have an implicit invocant that looks at the surrounding class (if any) | |||
20:28
rurban joined
|
|||
jdv79 | psch: what goes through {get,set}_value then? | 20:29 | |
20:29
FROGGS left
|
|||
psch | jdv79: i have no idea, unfortunately | 20:29 | |
jdv79 | i was getting a little concerned that my code doesn't run | ||
makes sense at least | |||
psch | github.com/rakudo/rakudo/blob/nom/...ute.pm#L26 | 20:30 | |
that's what you get when you do $foo.bar | |||
those tiny little methods that just do getattrref_* | |||
or getattr_* | 20:31 | ||
kmel | so when it comes to routines already provided by rakudo (say, elems, pop etc.) they all behave the same either sub or method | ||
? | |||
20:31
rindolf left
|
|||
RabidGravy | kmel, not all | 20:31 | |
psch | kmel: &say and e.g. Any.say aren't declared in one spot, if that's what you mean | ||
jdv79 | uh. so this is not trivial to implement | ||
psch | jdv79: i have a strong feeling it should be easier, but as it stands you'd have to override compose | 20:32 | |
jdv79 | and that looks nightmareish | ||
psch | jdv79: well, that's just the nested ?? !! :) | ||
kmel | psch: i agree one may override the other (depending on which class) | 20:33 | |
psch: let me rephrase my question. In other languages routines that return a value are different than routines that don't return but do something | 20:34 | ||
do we have that distinction here? | |||
hi RabidGravy | 20:35 | ||
RabidGravy | no, not really | 20:36 | |
kmel | thanks RabidGravy. I should have explained earlier what I mean by "they're the same" | 20:37 | |
20:37
Begi1115 left
|
|||
psch | kmel: i'm not sure how you'd write a sub or method that returns void (e.g. actually nothing, and trying to assign from it is an error) and not "just" Nil | 20:38 | |
kmel | psch: sub sayhi { say 'hi';}; sayhi; | 20:39 | |
m: sub sayhi { say 'hi';}; sayhi; | |||
camelia | rakudo-moar 7d885e: OUTPUT«hi» | ||
psch | m: sub sayhi { say "hi"; }; say sayhi | ||
camelia | rakudo-moar 7d885e: OUTPUT«hiTrue» | ||
psch | kmel: that returns True | ||
kmel | m: sub returnhi {'hi';}; say returnhi; | 20:40 | |
camelia | rakudo-moar 7d885e: OUTPUT«hi» | ||
kmel | In some languages there is a distinction between the 2 above routines | 20:41 | |
although the end result is the same | |||
20:42
n0tjack joined
|
|||
kmel | got my point? | 20:42 | |
psch | kmel: no, i don't. your &sayhi still returns something | ||
kmel: so there's no distinction | 20:43 | ||
20:43
tokuhirom joined
|
|||
psch | kmel: i know that void as a concept exists in other languages, or different forms of subroutines can be declared, like e.g. delphi procedures | 20:44 | |
kmel: but i don't see how your two examples show any kind of similar behavior | |||
kmel: maybe that just means that we don't distinguish between subs that are designed to have their return value used and subs that aren't on a language level | 20:45 | ||
kmel | psch: yes | 20:46 | |
20:46
n0tjack left
|
|||
jdv79 | how can i mix a role in to do stuff that requires priv vars in the instance? | 20:46 | |
20:46
[Sno] left
|
|||
jdv79 | the copy and paste Proxy implementation of this feature is looking better and better | 20:47 | |
RabidGravy | $foo does Role | ||
20:48
tokuhirom left
|
|||
jdv79 | and $foo has priv attrs that the role can't touch | 20:48 | |
compose and $!type for instance | |||
20:48
geraud joined
|
|||
jdv79 | this may require a mop expert | 20:48 | |
kmel | psch: honestly i don't see it as a must have. I was just making sure this is not the case of sub vs method | 20:49 | |
jdv79 | is there anyone besides jnthn i could ask? | 20:50 | |
20:53
bjz_ left,
kjs_ left
|
|||
nine | jdv79: what exactly are you trying to do? | 20:53 | |
20:53
bjz joined
|
|||
jdv79 | a "write once" attr trait | 20:53 | |
i thought it would be easier but what do i know:) | 20:54 | ||
20:54
firstdayonthejob left
|
|||
nine | why would you need to access private attributes for that? | 20:55 | |
rangerprice | how i can apply a patch manually to a perl module downloaded via metacpan ? | ||
jdv79 | because it seems i need to redefine the compose method on Attribute to od it | ||
idk. do you know of another way? | |||
right now i just copy and paste a Proxy snippet around with a die in the STORE if attr is already defined | 20:56 | ||
something like "has $.foo is w1" would be nicer | 20:57 | ||
rangerprice: metcpan is a p5 thing only so far | 20:58 | ||
20:59
adhoc left
|
|||
nine | jdv79: I guess you'd have to add_method the write once accessor method before Attribute.compose runs | 20:59 | |
21:00
adhoc joined
|
|||
nine | jdv79: or maybe better: replace it afterwards, so you can still use it and avoid duplicating it | 21:01 | |
psch | jdv79: gist.github.com/peschwa/cb8f5e954ba932e15c31 | ||
the else { } blocks can be modified to your liking, depending on what you'd like to have happen | |||
21:01
kjs_ joined
|
|||
psch | jdv79: note that as-is you import the WriteOnceAttribute and *every* class has write-once attributes | 21:01 | |
jdv79: in the current scope, of course | 21:02 | ||
jdv79 | uh, i wanted it as an attr trait cause that's the cleanest, right? | 21:04 | |
not at the class level | |||
but that's closer than i got at least | |||
RabidGravy | psch, ah *that's* who you set the attribute class ;-) | 21:05 | |
rangerprice | jdv79: oh ok | ||
psch | jdv79: i'd have to think a lot to figure it out as a trait, this seemed fairly straight-forward... :S | ||
21:05
yqt joined
|
|||
psch | jdv79: but, as you can see from my gist, mixing a role with a different compose into the traited Attribute that supplies its own $!type could probably work | 21:06 | |
jdv79 | yeah i didn't try that | ||
psch | jdv79: as in, what you can see from my gist is that i'm not accessing Attribute's $!type, but declaring my own for WriteOnceAttribute | ||
because private Attributes aren't inherited in the first place, iirc | |||
whereas roles can access private Attributes from other roles..? | 21:07 | ||
the latter i saw today, so maybe the former is wrong | |||
m: class A { has $!foo = "baz" ; method bar { say $!foo } }; class B is A { }; B.new.bar | |||
camelia | rakudo-moar 7d885e: OUTPUT«baz» | ||
psch | yeah it is | ||
21:08
lostinfog joined
|
|||
jdv79 | i'm not certain. that part of the model isn't intuitive to me | 21:08 | |
psch | m: class A { has $!foo = "baz" ; method bar { say $!foo } }; class B is A { method quux { say $!foo } }; B.new.bar | ||
camelia | rakudo-moar 7d885e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8G6PVTkhdpAttribute $!foo not declared in class Bat /tmp/8G6PVTkhdp:1------> 3ass B is A { method quux { say $!foo } }7⏏5; B.new.bar expecting any of: horizontal whitespace …» | ||
psch | no it's not wrong | ||
the A-scoped &bar knows $!foo because it's A-scoped itself..? | |||
jdv79 | iirc $! vars are essentially lex scoped maybe | 21:09 | |
21:09
bjz left
21:10
yqt left
|
|||
jdv79 | also i'm not sure your side state would be a good idea | 21:11 | |
since the mop probably reaches around that for something | |||
i thought just a defined check on the value slot would be good enouhg | |||
maybe too slow? idk. | |||
lizmat | jdv79 psch private attributes are hidden from subclasses as they are from the rest of the world | ||
psch | S12:Introspection shows there's only one mnemonic for all those capital somethigns for classes :/ | ||
synbot6 | Link: design.perl6.org/S12.html#Introspec...hows_there | ||
psch | jdv79: the state variable is scoped to the accessor method | 21:12 | |
lizmat | if a subclass really wants to access private attributes of a parent class, you will need to use nqp::getattr | ||
jdv79 | i thnk this may have to be my next question to jnthn | ||
yeah but who knows if there's another path to set it | |||
psch | jdv79: well, there is, with set_value | ||
21:12
[Sno] joined
|
|||
psch | jdv79: but that's introspect-y | 21:12 | |
m: class A { has $.foo }; class B is A { }; say nqp::getattr(B.new, 'B', '$!foo') # lizmat..? | 21:13 | ||
camelia | rakudo-moar 7d885e: OUTPUT«P6opaque: no such attribute '$!foo' in block <unit> at /tmp/nfrAvjRUrS:1» | ||
psch | m: class A { has $.foo }; class B is A { }; say nqp::getattr(B.new, 'A', '$!foo') # lizmat..? | ||
camelia | rakudo-moar 7d885e: OUTPUT«P6opaque: no such attribute '$!foo' in block <unit> at /tmp/oB863GSlgr:1» | ||
jdv79 | the intent was "allow set if not already set" | ||
21:13
_dolmen_ joined
|
|||
jdv79 | write once kinda captures that in a pure sense but not in the guys probably | 21:13 | |
lizmat | psch: in your example, foo is public, so $.foo should work | ||
jdv79 | it about type | 21:14 | |
lizmat | but suppose it is private: | ||
jdv79 | if i wanted to override Attribute.compose i would need access to $!type | ||
gfldex | m: my $s = Any.new but role { my $i = 42; method answer(){$i}; method new {!!!} }; $s.new.say; | ||
camelia | rakudo-moar 7d885e: OUTPUT«Any+{<anon|77407088>}.new» | ||
psch | jdv79: no, you can just add an attribute $!type to the subclass of Attribute | 21:15 | |
lizmat | m: use nqp; class A { has $!foo }; class A is B { method bar { nqp::getattr(self,A,'$!foo' } } | ||
camelia | rakudo-moar 7d885e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/emV5Xmb_LERedeclaration of symbol Aat /tmp/emV5Xmb_LE:1------> 3nqp; class A { has $!foo }; class A is B7⏏5 { method bar { nqp::getattr(self,A,'$!f» | ||
jdv79 | yeah but i don't see how to scope that down liek i want | ||
lizmat | m: use nqp; class A { has $!foo }; class B is A { method bar { nqp::getattr(self,A,'$!foo' } } | ||
camelia | rakudo-moar 7d885e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/NoGR8pXiQvUnable to parse expression in argument list; couldn't find final ')' at /tmp/NoGR8pXiQv:1------> 3ethod bar { nqp::getattr(self,A,'$!foo' 7⏏5} }» | ||
lizmat | m: use nqp; class A { has $!foo }; class B is A { method bar { nqp::getattr(self,A,'$!foo') } } | ||
camelia | ( no output ) | ||
lizmat | psch: ^^^ | ||
gfldex | m: my $s = Any.new but role { my $i = 42; method answer(){$i}; method new {!!!} }; my $b = $s.new; say $s.WHAT, $b.WHAT; | 21:16 | |
camelia | rakudo-moar 7d885e: OUTPUT«(Any+{<anon|58717344>})(Any+{<anon|58717344>})» | ||
gfldex | is $s.new comming from Any or the anon role? | ||
psch | lizmat: ooh, right. the second arg to getattr is a type, not a Str | ||
that's what i messed up locally | |||
and brought here | |||
jdv79: well, if you don't make my mistake you can also use getattr instead of adding the attr again | 21:17 | ||
lizmat | yeah, the 2nd parameter is the class of the attribute | 21:18 | |
psch | m: class A { method new {!!!} }; A.new | ||
camelia | rakudo-moar 7d885e: OUTPUT«Stub code executed in method new at /tmp/mIWMyeN4fr:1 in block <unit> at /tmp/mIWMyeN4fr:1» | ||
lizmat | as you can have 2 attributes of the same name (but of different classes) in an object | ||
psch | m: Any.new.new.new.new.new | ||
camelia | ( no output ) | ||
psch | gfldex: ^^^ with those two i'd say the new is from Any | ||
21:19
^elyse^ left
|
|||
lizmat | it's from Mu, I think, though | 21:19 | |
psch | m: Any.new.WHAT | ||
camelia | ( no output ) | ||
jdv79 | i just don't see how to scope it down; like i said | ||
psch | m: Any.new.WHAT.say | ||
camelia | rakudo-moar 7d885e: OUTPUT«(Any)» | ||
psch | jdv79: what does "scope it down" mean? | ||
jdv79 | to an attr trait | ||
psch | jdv79: oh. well, the trait presumably applies to Attributes and mixing in a new compose method | 21:20 | |
jdv79 | has $.foo is write_once; | ||
psch | jdv79: i'd thought you had figured that out already, sorry | ||
jdv79 | huh? if i had figured that out i'd be done. | ||
maybe your definition of "that" is different | |||
psch | probably :) | 21:21 | |
my "that" is "writing a trait" | |||
lizmat | m: use nqp; class A { has $!foo }; class B is A { method bar { nqp::getattr(self,A,q/$!foo/) } } # 2 attributes with same name in 1 B object | ||
camelia | ( no output ) | ||
jdv79 | my that is implementing a trait at the attr granularity | 21:22 | |
lizmat | use nqp; class A { has $!foo }; class B is A { has $.foo; method bar { nqp::getattr(self,A,q/$!foo/) } } # eh, this one :-) | ||
21:24
skids left
21:26
xfix left
|
|||
RabidGravy | jdv79, that's the trait part gist.github.com/jonathanstowe/54f1...e9382b822d | 21:26 | |
psch | hm, the example aren't particularly helpful | ||
err, not examples | |||
the trait_mods that are declared in traits.pm for Attribute don't help me to figure this out :P | |||
that's what i wanted to say | |||
the keys are like, right next to each | 21:27 | ||
other | |||
RabidGravy | as demonstrating over-writing compose | ||
psch | m: gist.github.com/jonathanstowe/54f1...e9382b822d | ||
camelia | rakudo-moar 7d885e: OUTPUT«boo 42» | ||
21:27
sufrosti1o left,
sufrosti2o left,
kaare_ left
21:28
sufrostico left
|
|||
jdv79 | yes i have all that. but now in that Thing.compose don't i need $!type to do it correctly? | 21:28 | |
RabidGravy | do what with $!type? | ||
jdv79 | i don't get what the diff types are | ||
psch | jdv79: you do need it, but you can either add 'has $!type' to your role, or use nqp::getattr() to access the $!type from Attribute | ||
jdv79 | what Attribute.compose does | ||
psch | jdv79: 0 is obj, 1 is int, 2 is num, 3 is str | ||
RabidGravy | I'd go dumber than that | 21:29 | |
jdv79 | yeah but if i'm runtime mixing in my role on an instance of Attribute then having a seperate role attr won't work | ||
RabidGravy | callsame the compose then find the created method using find_method | 21:30 | |
then dick around with that | |||
21:31
lizmat left
|
|||
psch | m: class A { method foo { } }; A.^add_method("foo", method { }) | 21:31 | |
camelia | rakudo-moar 7d885e: OUTPUT«Package 'A' already has a method 'foo' (did you mean to declare a multi-method?) in any add_method at gen/moar/m-Metamodel.nqp:450 in block <unit> at /tmp/4au70_u7tS:1» | ||
psch | RabidGravy: probably runs into that then | ||
RabidGravy | no wrap it | ||
:) | |||
psch | m: class A { method foo { } }; A.can('foo')[0].wrap(-> { say "ok" }); A.new.foo | 21:32 | |
camelia | rakudo-moar 7d885e: OUTPUT«Too many positionals passed; expected 0 arguments but got 1 in block <unit> at /tmp/uap6Ufe2rP:1» | ||
psch | m: class A { method foo { } }; A.can('foo')[0].wrap(-> \fles { say "ok" }); A.new.foo | ||
camelia | rakudo-moar 7d885e: OUTPUT«ok» | ||
psch | yeah, i really should remember that about wrap | ||
it actually replaces the method handle | |||
or sub handle | |||
routine handle, actually i suppose | |||
21:34
ChoHag left
21:39
^elyse^ joined
21:40
pyrimidine left
22:23
ilogger2 joined,
ChanServ sets mode: +v ilogger2
|
|||
lizmat | just like private attributes of a class are not really private if you start using nqp or maybe the MOP | 22:24 | |
jdv79 | yeah, i'll look into it later. thanks. | 22:25 | |
i don't know much about the mop or internals so too many assumptions i guess | |||
RabidGravy | but using those is like breaking the little sticker on the back of an electronic device | ||
22:26
raiph joined
|
|||
psch | m: gist.github.com/peschwa/9e071976dab9eb63fd42 | 22:26 | |
camelia | rakudo-moar e28c25: OUTPUT«123Cannot assign more than once to a writeonce attribute in block at /tmp/ZHopN3NzD8:7 in any enter at gen/moar/m-Metamodel.nqp:3724 in block <unit> at /tmp/ZHopN3NzD8:24» | ||
psch | jdv79: unfortunately you're also breaking the get-ty part of the accessor | ||
so it's more of a write-once-and-never-access-again Attribute... :/ | 22:27 | ||
pink_mist | lol | ||
psch | that's common with my solution from before as well though, in hindsight | ||
jdv79 | yeah - i'll fix it later. i was getting frustrated with my lack of speed getting the various bits in place | 22:28 | |
i think its pub time atm thoug h | |||
thanks all! | |||
psch | .tell jdv79 there is a .set_readonly method on Attribute, which probably helps | 22:29 | |
yoleaux | psch: I'll pass your message to jdv79. | ||
zengargoyle | how do you get at a module's un-exported subroutine for testing purposes? | 22:30 | |
dalek | kudo/nom: f558679 | lizmat++ | src/core/Any-iterable-methods.pm: Presize the list for tailed elements Should ensure fewer re-allocations |
22:32 | |
22:32
raiph left
22:33
raiph joined
22:45
tokuhirom joined
22:48
raiph left,
raiph joined
22:49
tokuhirom left
22:53
Alina-malina joined
22:54
raiph left
|
|||
jdv79 | gist.github.com/anonymous/fbbf8440a94f531e89a0 is the best i can do right now | 22:54 | |
yoleaux | 22:29Z <psch> jdv79: there is a .set_readonly method on Attribute, which probably helps | ||
jdv79 | .tell psch i don't see that but i'm probably a few weeks old here. thanks. | 22:55 | |
yoleaux | jdv79: I'll pass your message to psch. | ||
22:58
raiph joined,
virtualsue joined
|
|||
psch | m: Attribute.^can('set_readonly').say | 23:02 | |
yoleaux | 22:55Z <jdv79> psch: i don't see that but i'm probably a few weeks old here. thanks. | ||
camelia | rakudo-moar f55867: OUTPUT«(<anon>)» | ||
psch | jdv79: it's there, declared in BOOTSTRAP.nqp, not Attribute.pm | ||
23:04
zakharyas joined
23:07
kid51 joined,
Begi joined
|
|||
dalek | c: b84ffc0 | lizmat++ | doc/Type/Supply.pod: Add more Supply.throttle documentation |
23:07 | |
jdv79 | m: say Attribute.^methods | 23:09 | |
camelia | rakudo-moar f55867: OUTPUT«(<anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> compose apply_handles get_value set_value container has-accessor readonly package inlined WHY set_why Str gist)» | ||
jdv79 | why is it not there? | 23:10 | |
23:10
llfourn joined
|
|||
jdv79 | but ok | 23:11 | |
23:11
Begi left
23:12
Begi joined
|
|||
diakopter | mattn_jp: hi | 23:12 | |
lizmat | m: .say for Attribute.HOW.^methods>>.name.grep( { /^set/ } ).sort.squish # jdv79 because you need methods on the MOP object ? | 23:14 | |
camelia | rakudo-moar f55867: OUTPUT«set_array_typeset_authset_autogen_protoset_boolification_modeset_default_invoke_handlerset_default_parent_typeset_hiddenset_invocation_attrset_invocation_handlerset_is_mixinset_mixin_attributeset_multi_invocation_attrsse…» | ||
23:15
llfourn left
|
|||
jdv79 | weird | 23:15 | |
psch | m: .say for Attribute.HOW.^methods>>.name.grep( { /^set_readonly/ } ).sort.squish | 23:17 | |
camelia | ( no output ) | ||
psch | it's is in .^methods, but the code object doesn't know that it's called set_readonly | 23:18 | |
s/is// | |||
that's just the peg it's hang on in Attribute | |||
probably due to circularity reasons | |||
m: Attribute.^attributes[0].WHAT.say | 23:19 | ||
camelia | rakudo-moar f55867: OUTPUT«Method 'say' not found for invocant of class 'BOOTSTRAPATTR' in block <unit> at /tmp/4KHp_u_k2C:1» | ||
23:19
virtualsue left
|
|||
psch | similar to that case, we'd need a BOOTSTRAPMETHOD to have it know it's name i think | 23:19 | |
23:19
BenGoldberg joined
23:20
virtualsue joined
|
|||
ShimmerFairy | I think preferably we'd like it if BOOTSTRAPATTR, NQPRoutine, and the like didn't leak through in Perl 6 :P (or alternately have them sufficiently P6-like that it's not too bothersome, namely having things like .gist) | 23:21 | |
diakopter | m: module Foo { module Bar { say $?PACKAGE.WHO } } #118361 | 23:24 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=118361 | ||
camelia | rakudo-moar f55867: OUTPUT«» | ||
23:24
virtualsue left
|
|||
diakopter | m: module Foo { module Bar { say $?PACKAGE } } #118361 | 23:24 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=118361 | ||
camelia | rakudo-moar f55867: OUTPUT«(Bar)» | ||
23:25
raiph left
23:26
Begi left
23:33
zakharyas left
|
|||
diakopter | m: module Foo { module Bar { say $?PACKAGE.WHO!Map::storage } } | 23:34 | |
camelia | rakudo-moar f55867: OUTPUT«5===SORRY!5=== Error while compiling /tmp/afdiRRL1PpCannot call private method 'storage' on package Map because it does not trust Barat /tmp/afdiRRL1Pp:1------> 3ule Bar { say $?PACKAGE.WHO!Map::storage7⏏5 } } expecting any of: …» | ||
23:44
silug joined
|
|||
lizmat | good night, #perl6! | 23:47 | |
23:49
literal left
23:50
literal joined
23:53
lizmat_ joined
23:54
lizmat_ is now known as lizmat
23:55
lizmat left
23:59
rangerprice joined
|