»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by moritz on 25 December 2014.
vendethiel wendy++ 00:00
pretty amazing, if you ask me ;-)
tadzik oh, I'm on the internet :) 00:02
woolfy++
masak_grr internet++
woolfy tadzik: I still have lots of troubles finding a flattering picture of you... 00:03
tadzik heh
well, there's always the one with red mohawk... :
:P
woolfy By the way, this is certainly a El_Che++ for putting all the info into the FOSDEM system, not an easy task...
tadzik El_Che++
woolfy I got a lovely one of you at the French Perl Workshop in 2012 00:04
adu tadzik: lol
tadzik oh, I had some nice ones from there :)
woolfy: well, if you can't find anything by tomorrow I can try to take one of myself :) 00:05
now I'm too sleepy
tadzik zzz * 00:05
woolfy Nope, got it. On to the next fotogenic person. Three to go.
tadzik &
masak_grr tadzik: sleep well
woolfy tadzik: sleep well
El_Che doesn't the intertubes have shameful pics of you all to put on the fosdem site?
:)
tadzik thank you, and so to you, when you decide to :) 00:06
woolfy No, but Wendy's backup does have pictures of many people, including El_Che! :-)
El_Che omg
:)
woolfy Muhahaha!
El_Che: go to bed!!!
:-)
El_Che yeah, getting up in 5h18 minutes :( 00:07
damn, I need to win the lottery :)
woolfy Ouch...
El_Che goingto bed, good idea
bye
woolfy \o
adu I figured it out! 00:42
masak_grr let's hear it.
adu I put the long enums in C::AST::Ops, and everything else in a single file 00:44
so much cleaner
I think I made a number of mistakes 00:45
I was doing "use C::AST3", but the thing at the top was "module C::AST;" 00:46
github.com/andydude/p6-c-parser/bl...C/AST3.pm6 01:02
isn't it pretty? 01:03
masak 'night, #perl6 01:22
skids m: my @in = (Num.^methods.gist x 400).split(/\s+/); now.say; my @t = @in.grep({ /ee/ }); now.say; my $in = @in.join(" "); my @v = $in ~~ m:g/\w*ee\w*/; @v = @v».Str; now.say; say so (@v) eq (@t) # drastic performance difference 01:50
camelia rakudo-moar 0463a4: OUTPUT«Instant:1421373078.155182␤Instant:1421373081.166052␤Instant:1421373081.401042␤True␤»
TimToady subtraction...hard... 02:07
why not use @v eqv @t, which will hopefully short circuit if an early element is different 02:12
m: my @in = (Num.^methods.gist x 400).split(/\s+/); now.say; my @t = @in.grep(/ee/); now.say; my $in = @in.join(" "); my @v = $in ~~ m:g/\w*ee\w*/; @v = @v».Str; now.say; say @v eqv @t 02:15
camelia rakudo-moar 0463a4: OUTPUT«Instant:1421374540.527195␤Instant:1421374543.173888␤Instant:1421374543.408081␤True␤»
TimToady you can get rid of ⅔ of the time just be losing the closure around the /ee/
*by
TimToady hopefully you can lose most of the other ⅓ by implementing the GLR 02:16
skids: see backlog
skids Yeah actually I put the closure in at one point to see if it helped the rx stay compiled (assuming that was part of it) and forgot to take it back out before pasting. 02:20
The parens/lists were just superstitious 02:22
TimToady so was the so :) 02:23
cbk1090 When installing Rakudo what does "Parrot without ICU is not supported anymore." mean and how do I fix it? 02:32
leont Parrot uses the ICU library for unicode support
cbk1090 Ok so just fix unicode. got it. Thanks 02:34
adu You can't fix unicode 02:36
geekosaur you need to make sure the ICU development headers and libraries are installed when parrot is built (usually Configure ... --gen-parrot) 02:38
cbk1090 It looks like the ICU headers are not being installed with the Configure --gen-parrot option. At least for me 02:39
geekosaur ... 02:40
maybe I need to rephrase that
gen-parrot does not install ICU for you; you must install it, however you need to do it on your OS, *before* the gen-parrot
or parrot will build without it, and will not work for rakudo-parrot 02:41
cbk1090 oh ok.
adu hmm 05:12
raydiak hm? 05:44
raydiak m: my $a = 'foo'; $a.substr-rw(2,1) = 'x'; say $a; 05:56
camelia rakudo-moar 0463a4: OUTPUT«No such method 'substr-rw' for invocant of type 'Str'␤ in block <unit> at /tmp/FXDKKGCLEh:1␤␤»
raydiak can anyone suggest a good way to replace 1 character in a string by index?
thought we had substr-rw implemented already, but guess it's gone 05:57
raydiak rn: my $a = 'foo'; $a.substr-rw(2,1) = 'x'; say $a; 06:01
camelia niecza v24-109-g48a8de3: OUTPUT«(signal ABRT)Stacktrace:␤␤ at <unknown> <0xffffffff>␤ at (wrapper managed-to-native) object.__icall_wrapper_mono_gc_alloc_string (intptr,intptr,int) <0xffffffff>␤ at (wrapper alloc) object.AllocString (intptr,int) <0xffffffff>␤ at string…»
..rakudo-{parrot,moar} 0463a4: OUTPUT«No such method 'substr-rw' for invocant of type 'Str'␤ in block <unit> at /tmp/tmpfile:1␤␤»
adu o raydiak 06:09
raydiak omg adu where'd yer arm go!? 06:10
adu pastie.org/9834616
my arm?
TimToady I found it over here --> / 06:11
adu I don't get it
raydiak ^^^^^^ thought " o " was a o/ missing the part that TimToady found :)
adu o that's what it means 06:12
I always though "\o" was just a lazy way of spelling "hello"
raydiak heh I spent a good few months lurking here wondering what kind of escape sequence "\o" was 06:12
nice adu++ # tenacity 06:13
adu I apparently spent several years doing the same
raydiak so you've got CAST starting to work? 06:14
adu yes
I'm on my second major rewrite, CAST3
github.com/andydude/p6-c-parser/bl...C/AST3.pm6 06:15
isn't it beautiful?
TimToady 11 more rewrites and you can get it to CASTE if you stick to hex 06:16
raydiak oh pretty 06:16
TimToady I guess that would be B momre rewrites though
adu TimToady: lol 06:17
TimToady *more
adu 0x65
JimmyZ why AST3? not AST
adu JimmyZ: because I like to copy some things instead of write from scratch, when I'm ready I'll rename s/AST3/AST/ when I merge into master branch 06:18
TimToady crud, the civil time idiots are adding another leap-second in June 06:36
I thought they were getting over that
xiaomiao TimToady: you could convince earth to wobble less ;) 06:38
TimToady let's also persuade all our timezones to relocate all of their positions to the exact center of each timezone, then maybe leap seconds would matter slightly 06:39
all leap seconds do is screw things up 06:40
TimToady it doesn't matter if civil time drifts a minute or two over the next century 06:40
TimToady we should've just nail civil time to atomic time in 2000, and the let the people in 3000 decide whether it's got bad enough to warrant an adjustment yet 06:45
*nailed
*then 06:46
can't type tonight
probably some leap-microseconds in there I didn't account for
moritz agrees 100% with TimToady++ 07:51
TimToady rosettacode.org/wiki/Ulam_spiral_%2...%29#Perl_6 08:07
jnthn hah, I read the var name as $yolo... 08:08
masak $yolo, #perl6 10:00
moritz \o masak
masak I've been back to the drawing board, and I now have a new 4x4 maze generator algorithm, Correct This Time™, which I will implement. 10:01
moritz oh, was the previous one buggy? 10:03
masak subtly so. 10:04
which is good, because that'll make for an even better blog post ;)
ab5tract yay for blogpost :) 10:15
dalek p: 081cde2 | donaldh++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/IndyBootstrap.java:
Fix compilation warnings on Java 1.8
10:30
kudo/nom: 6f79fcc | lizmat++ | src/core/Str.pm:
Implement Str.substr-rw, raydiak++ for spotting
10:33
lizmat_ .tell raydiak my $a = "foo"; $a.substr-rw(2,1) = "x"; say $a # -> fox
yoleaux lizmat_: I'll pass your message to raydiak.
lizmat .tell raydiak github.com/rakudo/rakudo/commit/6f79fcc296 implements it, tests welcome 10:34
yoleaux lizmat: I'll pass your message to raydiak.
Woodi_ hallo today :) 10:44
Perl5 have some problems with regexes and non ascii chars, yes ? $_ =~ /(\w+)'s$/ sometimes not catch 's words... 10:45
masak finds a use for infix:<^^> 10:45
FROGGS cute 10:46
lizmat .tell jnthn from an optimization point of view, would it make sense to move functionality like Str.substr(|c) to sub substr(Str, |c) ? as a sub call optimizes better ? 11:04
yoleaux lizmat: I'll pass your message to jnthn.
moritz it would 11:13
lizmat ok, I'll see if I can get that together 11:14
moritz but please run some non-trivial benchmarks 11:15
it could be that we're calling the method form everywhere
lizmat in the setting, it's about 2/3 method, 1/3 sub 11:16
moritz and thus moving the functionality to the sub introduces a redispatch, and makes things slower
dunno if we care about the semantics if somebody subclasses Str and overrides substr
lizmat no, my idea would be that the sub case would *not* do a redispatch
it does a redispatch now
moritz well 11:17
sorry
I meant that calling the method would introduce a re-dispatch to the sub
unless you want to implement it twice
lizmat the method version of .substr would call the sub version of substr 11:18
moritz thus making the method form slower
that's what I meant
lizmat not necessarily, as the sub call inside the method could be inlined
lizmat so, the idea is that the method version would not get slower, but the sub version would 11:19
s/slower/faster
*sigh*
the sub version would get faster
moritz aye
worth a trial, at the very least 11:20
dalek p/parrot-rpa: 7d370c8 | rurban++ | / (7 files):
Replace unneeded QRPA with ResizablePMCArray
11:22
nqp/parrot-rpa: d91e5e2 | rurban++ | tools/build/Makefile-Parrot.in:
nqp/parrot-rpa: Makefile-Parrot: simplify ops2c rule, no chdir needed
ab5tract we would we not inline a method in the same way that we would inline a sub in a method? 11:26
that seems weird to me
masak ab5tract: and you say this knowing about the late binding of method dispatch, I take it? 11:27
jnthn moritz, lizmat: As a design principle we've almost always had it that sub versions of things delegte to method versions, not the other way around. 11:28
yoleaux 11:04Z <lizmat> jnthn: from an optimization point of view, would it make sense to move functionality like Str.substr(|c) to sub substr(Str, |c) ? as a sub call optimizes better ?
lizmat jnthn: that's not how the implementation looks atm :-)
jnthn lizmat: It does in many cases.
lizmat in about 1/3
but glad I'm on to something here 11:29
jnthn On performance, the answer is that you really want to avoid |c when you can just delegate with normal parameters. 11:30
Then it doesn't matter much which way around we have it.
Whichever one is doing the delegating will be a good inlining candidate. 11:31
The static optimizer has an easier time of subs, but it's also extremely restrictive in what it will do
It exists mainly to inline native operations so they get good code-gen from the start. 11:32
ab5tract masak: i say this not comprehending how inlining the sub in a late-bound dispatch makes it any less late-bound
jnthn The majority of interesting inlining for non-natives is done dynamically by the VM
ab5tract i am admittedly out of my depth here :)
jnthn And it can see through dynamic dispatch.
And is only going to get better at doing so. 11:33
masak jnthn: I'm still taken aback by that at times.
jnthn masak: Which bit? :) 11:34
masak it being able to see through dynamic dispatch.
lizmat jnthn: so to gist what you're saying: don't bother, but kill any occurrences of |c
ab5tract and if the answer to speed up method calls is to call a sub from the method, then why not wire that together implicitly 11:35
jnthn lizmat: Well, not *any* occurences, but if you can write a couple of specific candidates rather than one general one, then yes, it's worth it.
lizmat ok
jnthn lizmat: |c is not well optimized, and it's a multi-day project to make things significantly better (with at least a day thinking hard about how on earth to make it better :)) 11:36
lizmat I hear ya... :-)
masak ab5tract: because method calls dispatch depending on the type you call them on. 11:37
jnthn masak: Type specialization done by Moar and also using indy on the JVM is done on exact types, and if you know the exact type you know its exact method table, and if you know its exact method table you know the method. :)
jnthn Most programs are "eventually static" in most places. 11:38
masak *nod*
does that mean that, in some sense, the dynamism put in by the programmer is "for people to read, and only occasionally for computers to execute"? 11:39
dalek kudo/nom: 2004789 | lizmat++ | src/core/ (8 files):
Make .infinite faster by using MMD
11:41
jnthn I'm not sure you put in dynamism knowingly. Or at least, I don't. It's just that the code doesn't demand much.
masak well, not dynamism for the sake of it. 11:42
masak maybe it just sneaks in because of other things that are straightforward to write. 11:43
jnthn And we tend to like that because the less demanding a piece of code is on the world/data it interacts with, the easier it is to keep it working as the world/data changes around it.
masak more "lack of explicit constraints" than "dynamism", perhaps.
jnthn Up to a point, at least.
*least
masak jnthn: right -- a program can spesh differently based on different inputs, I guess.
jnthn Oh, very much so.
Consider a method foo($a) { $a.bar } 11:44
In a module.
If one program passes the method a Gym, and another program passes it a Pub, you'll get different specializations :) 11:45
The Gym bar may be short enough to inline, but a good Pub bar probably won't. :P
masak :P 11:46
jnthn But yeah, the same code can, depending on how it gets used in a program, specialize in a different way.
That extends to the runtime and even the compiler.
Mouq 'morning #perl6! 12:18
I ran the 4x4 last night:
100352
perl6 reboot.clean.p6 9293.29s user 109.52s system 99% cpu 2:36:46.80 total
masak that number looks familiar from oies 12:19
it's the one that counts symmetric mazes multiple times. 12:20
Mouq I'd really like to find a way to only generate the symmetric ones, without having to build a list and subsequently filter it 12:22
masak the number of symmetric ones is 12600
see gist.github.com/masak/eb8e9a370300c666a0ec for the newest, Correct This Time™, algorithm 12:24
oeis*
Mouq masak++ 12:25
lizmat .tell jnthn could you tell me if there's something wrong with gist.github.com/lizmat/6176e1bfab8a9e5289c4 12:40
yoleaux lizmat: I'll pass your message to jnthn.
lizmat .tell jnthn it makes things siginificantly slower
yoleaux lizmat: I'll pass your message to jnthn.
lizmat .tell jnthn I guess having just a single method still beats MMD
yoleaux lizmat: I'll pass your message to jnthn.
masak Mouq: and 28 symmetric 3x3 mazes. (where before I had 24.) 12:42
timotimo o/ 12:48
lizmat timotimo o\ 12:49
need to be afk, unfortunately &
timotimo did i miss something good today already?
masak .oO( afk is a cruel and barren place to be ) 12:50
timotimo: leap seconds, inlined subs and methods, mazes. 12:51
timotimo we had multiple leap second in the mean time?
damn it
masak no. we will have one in July. 12:53
masak .oO( Not So Great Leap Forward )
jnthn fails to melt down all his possessions 12:54
yoleaux 12:40Z <lizmat> jnthn: could you tell me if there's something wrong with gist.github.com/lizmat/6176e1bfab8a9e5289c4
12:40Z <lizmat> jnthn: it makes things siginificantly slower
12:40Z <lizmat> jnthn: I guess having just a single method still beats MMD
masak jnthn: is this a case for "smelt", or are both OK? 12:55
masak Mouq: if I switch off the symmetry checking, I get 100352 for 4x4 too, which is promising. 12:56
jnthn masak: Well, I'm sure the process smelt too :P
lizmat: Well, did you check how often you hit the delegation-y cases? 12:57
lizmat: self.gimme(*) if nqp::isnanorinf(nqp::unbox_n(target)); for example 12:58
timotimo is anyone TGIFing today? 13:26
hoelzro o/ #perl6 13:28
dalek kudo-star-daily: 8680f63 | coke++ | log/ (9 files):
today (automated commit)
13:31
[Coke] what do I need to install on hack.p6c.org to make modules/DBIish tests pass? 13:32
hoelzro I would like to add some text describing how Grammar actions' methods work with look[ahead|behind]; where would that go best? 13:33
[Coke] still a bunch of failures on rakudo-star-jvm
jnthn timotimo: As in, being glad it's Friday? :) 13:35
timotimo yeah
jnthn Yes, very
timotimo and having something cool planned for the weekend
jnthn 'cus I've been teachign the last 3 days with a cold.
And at the weekend can rest enough to get rid of it :)
timotimo my condolences
jnthn Planning to hack on Perl 6 stuffs at the weekend :) 13:36
timotimo \o/
Mouq masak: \o/ 13:37
jnthn Given 6pe a shove further along and start using it a bit, I hope :)
*Give
Mouq jnthn: \o/
Mouq needs to put his hands down if he hopes to drive to school 13:37
o/ #perl6
timotimo sounds great! 13:38
we have all of the tests passing on moar and jvm now, yes?
[Coke] news.perlfoundation.org/2015/01/gra...pid-a.html - only one submittal this period, leave a comment if you have the feels. 13:48
masak jnthn: what's 6pe?
timotimo "sixpack of 'eer" 13:50
masak :P
adu TimToady: what about the civilians who calculate the probability of asteroid collisions with Earth? 13:55
masak that sounds like a question screaming for more context. 13:56
adu masak: lol 13:57
"<TimToady> crud, the civil time idiots are adding another leap-second in June" 13:58
donaldh Java 7 reaches end of public updates in April - www.oracle.com/technetwork/java/jav...35779.html 14:00
pmurias if I have a chunk of QAST how should I run it on moarvm? 14:04
(when running on moarvm)
timotimo you can feed it to what you get from getcomp 14:07
getcomp gives you the HLL::Compiler subclass for the given name 14:08
adu pmurias: something along the lines of Perl6::Compiler.eval() or something 14:10
timotimo you can feed it to the stage that comes after qast 14:13
pmurias what I have thus far: pastie.org/9835301
dalek jo6: aa71078 | hoelzro++ | t/mojo/css.t:
Test E[attr]
14:14
jo6: 7c63f76 | hoelzro++ | lib/Mojo/DOM/CSS.pm:
Implement E[attr]
jo6: 48e4f5e | hoelzro++ | lib/Mojo/DOM/CSS.pm:
Notes for cleanup
jo6: a94613f | hoelzro++ | t/mojo/css.t:
Test E[attr="value"]
jo6: 45d0362 | hoelzro++ | lib/Mojo/DOM/CSS.pm:
Implement E[attr="value"]
jo6: cb2254d | hoelzro++ | lib/Mojo/DOM/CSS.pm:
A bit of refactoring
donaldh I don't think there is a compiler exposed for QAST tho
timotimo every compiler turns their stuff into qast 14:15
masak well. NQP and Rakudo do.
masak adu: I guessed that it was a continuation of that conversation. where you're heading with that question still eludes me, though. what would be a possible answer? "well, I guess they might be one second too late in their estimated impact calculations..." ? 14:17
pmurias nqp::getcomp('nqp') does seem to be available from Perl 6
donaldh Oh, they do expose their stages :D
timotimo that's what i meant 14:20
[Coke] hoelzro++
pmurias just abusing the Perl6 compiler and turning of optimalisation works
donaldh Something like nqp::getcomp('perl6').compile($qast, :from('ast')) 14:21
jnthn timotimo: Yes, but only 'cus I didn't write enough tests :P
timotimo :D
jnthn masak: "6model parametric extensions"
nqp::getcomp('QAST') may also work :) 14:23
pmurias jnthn: that gets me mast
jnthn Yes, true :)
pmurias which I figured how to save to disk but not how to run 14:24
I'm not sure what to do with the result of assemble_and_load
jnthn Invoke it, iirc :) 14:25
See what method eval in HLL::Compiler does
pmurias doesn't seem to work from Perl6 land
jnthn oh, wait, it refers to the whole compilation unit
So you need to get the mainline code iirc
But yeah, using the pipeline of one of the existing compilers using HLL::Compiler is likely easier. 14:26
pmurias abusing the pipeline of an existing compiler should be enough for stage 1 of secret project 14:27
jnthn Ooh, what does it do? :) 14:29
donaldh r: nqp::getcomp('perl6').compile('say "hi"'))()
camelia rakudo-{parrot,moar} 200478: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unexpected closing bracket␤at /tmp/tmpfile:1␤------> qp::getcomp('perl6').compile('say "hi"')⏏)()␤»
donaldh r: nqp::getcomp('perl6').compile('say "hi"')()
camelia rakudo-{parrot,moar} 200478: OUTPUT«hi␤»
lizmat jnthn: before gimme MMD patch: Files=935, Tests=34357, 197 wallclock secs ( 8.92 usr 3.03 sys + 1194.02 cusr 144.41 csys = 1350.38 CPU) 14:34
after: Files=935, Tests=34357, 217 wallclock secs ( 9.54 usr 3.40 sys + 1329.13 cusr 151.26 csys = 1493.33 CPU) 14:35
lizmat that's 10% more CPU and wallclock 14:36
vendethiel all(@names.map: { $attrs{$^name}:exists }); <- can't that be all($attrs{@names}:exists) ? 14:37
lizmat vendethiel: feels that it should 14:40
timotimo i'd prefer [&&] tbh
vendethiel right
[&&] is definitely better when just using the junction as a bool :) 14:41
timotimo and yeah, putting @names inside the { } as an array should be optimizabler. 14:42
[Coke] in github.com/rakudo/rakudo/commit/20...a4be06e90, a method is changed to multi but there don't appear to be any actual multi methods; isn't this a behavioral change (now we can have multis, before we couldn't) to get a speedup? is this right? 14:42
lizmat [Coke]: that's what I understand 14:43
timotimo having the :D check in a place that's closer to the MMD itself lets us optimize (or rather: introspect) it more easily 14:44
FROGGS I understand [Coke]++'s question more as: do we want to make changes to behaviour for the sake of performance? 14:45
and... is this behaviour wanted?
sjn woolfy++ # great fosdem devroom schedule! 14:46
oh and good *, #perl6 :)
moritz without answering the actual question, I'd like to add that the specs are not very explicit about which methods are multis and which aren't
pmurias jnthn: 007.js
lizmat [Coke]: in any case, I try to batch my commits for easy revertability 14:47
PerlJam FROGGS: what's the downside of changing the behavior? (I can't think of one)
sjn woolfy: a few typos though, but nothing horrible :)
FROGGS PerlJam: I am just formulating how I understood [Coke]'s question :o) 14:48
pmurias jnthn: stage 1 is a Q -> QAST translator
FROGGS I also think that there is no pro or contra to the behaviour change...
woolfy sjn: the texts are from the speakers... and we did remove some typos. You're very much welcome to send me (and/or El_Che) any corrections.
sjn: The corrections can/will be put into the texts online. It's too late to change anything in the printed texts. FOSDEM has sent all texts to the printer. The whole schedule for the Perl-devroom will be in the booklet. 14:49
sjn woolfy: s/""/"/g; s/^"|"$//g; 14:52
[Coke] FROGGS++ has it. just wondering if the behavior change is worth it. to moritz++'s point, we should probably decide if we want multis or not for core class methods.
also, lizmat++ for doing the work in the first place.
woolfy sjn: in my thoughts, I will distribute your ++ to the speakers, of which several can be found in this awesome channel! jnthn++ tadzik++ nine++ pmichaud++ FROGGS++ CurtisOvidPoe++ mst++ rjbs++ sawyer++ stevanlittle++ mickeyn++ 14:52
sjn agrees :) 14:53
PerlJam woolfy++ too for doing the work :)
[Coke] as a generic OO user, I'm still kind of surprised we have multi methods and non multi methods.
moritz and [Coke]++ for raising the issue
woolfy and El_Che++ !!!
moritz and hugs for everybody!
lizmat [Coke]: jnthn can explain that one better, from an implementation point of view 14:54
FROGGS free hugs /o/
sjn El_Che++ # deserves lots of praise
PerlJam moritz++ for the FindBin patch that you submitted in 2011 and I just noticed that it was you today ;)
woolfy sjn: I don't understand... 14:54
moritz PerlJam: tinita++ has been nagging about that FindBin thingy 14:55
sjn woolfy: there are a couple of the talk descriptions that are in quotes
woolfy Just got word that somebody from the city of Perl has an extra special surprise for the Perl 6 speakers at FOSDEM... I hope it works out. 14:56
sjn hehe
woolfy sjn: ah. Yes, I saw that. I will leave that to El_Che to fix.
sjn vaguely remembers one more typo, but can't seem to find it any more 14:57
donaldh r: my Mu $c := nqp::getcomp('perl6'); $c.compile($c.compile('say "hi"', :target('ast'), :compunit_ok), :from('ast'))
camelia ( no output )
donaldh my Mu $c := nqp::getcomp('perl6'); $c.compile($c.compile('say "hi"', :target('ast'), :compunit_ok), :from('ast'))()
PerlJam woolfy: some random person from the city of Perl or an offical of the city?
*official
sjn well, there are still some capitalization bugs in mst's text :)
sjn nothing major though 14:57
PerlJam sjn: I haven't looked, but are you sure mst didn't captialize that way on purpose ? :) 14:58
sjn heheh
woolfy mst's text might be from Mark... ;-)
woolfy PerlJam: neither... and if I explain, the surprise is gone. :-) 14:59
dalek kudo/nom: 1b59b0b | lizmat++ | src/core/GatherIter.pm:
Use natives in GatherIter.reify
15:01
PerlJam woolfy: Just make sure the interaction is recorded so that those of us who are locationally challenged can fee like we were there :) 15:02
woolfy sjn: the awesome El_Che already fixed the "..." typos. Thanks for mentioning.
PerlJam *feel
woolfy PerlJam: see video.fosdem.org/ and that will happen this year again! 15:03
Though, we have one volunteer now for doing the videorecording. And we could use another one or two. There will be 8 hours of recording to do... 15:04
woolfy So if anybody here would like to volunteer for doing some video recording... please message me. 15:04
Ow, this was the Perl-room last year: K.3.201 video.fosdem.org/2014/K3201/Saturday/ 15:05
The volunteer will get a little bit of training: push this button to start, that one to end, that one to focus, etc. Take care of the cables, microphone, aim camera at the speaker and/or at the screen and sometimes at the audience. 15:06
espadrine I'm tempted, but I haven't even got my train ticket to fosdem 15:09
(yet)
sjn hopes the videos this year work out 15:11
too many bad ones last year :-( 15:12
dalek kudo/nom: 3b0cef5 | lizmat++ | src/core/Str.pm:
Lose |c on signature
15:16
kudo/nom: 997864d | lizmat++ | src/core/ (6 files):
Reify is always called with parameters

So lose the defaults for faster MMD dispatch / smaller binary
woolfy sjn: we hope the same... problem with cables (to microphones, and power cables), and the power units... It was driving VanHoesel crazy (our volunteer). 15:17
sjn mm 15:18
woolfy This has been reported to FOSDEM, and we were not the only ones.
sjn one useful trick would be to offer some headphones so that one might at least hear what's being recorded 15:18
woolfy So, let's hope lessons were learned. It was the first time every room got a videorecording setup
sjn woolfy, El_Che: Oh, one more thing for the schedule! Stevan Little should be Stevan "#damnitstevan" Little! :D 15:24
woolfy Oh no, absolutely not, that meme should have died some time ago!
sjn aw :-( 15:25
El_Che hi sjn thx for the fixes
woolfy well, we can change your name to dammitsalve!
sjn isn't competent enough to deliver #p5mop and that goodness, so damning me wouldn't make any difference :-| 15:26
El_Che sjn: we can try :) 15:27
El_Che sjn: will we be honoured by your gracious presence at fosdem this year? 15:28
woolfy sjn: the dammit was because of something else...
lizmat afk for a few hours 15:29
sjn El_Che: I'll be there, arriving friday, leaving monday 15:30
although s/gracious/bumbling/ :)
El_Che sjn: nice 15:31
woolfy sjn: \o/
afk for some time
El_Che woolfy: don't let lizmat escape now she's afk
:)
woolfy -> ...(bicycle trip...) 15:32
rurban found the blocking parrot resizablepmcarray bug github.com/parrot/parrot/issues/1174 15:36
masak pmurias: did you say... 007.js? 15:42
hoelzro there's no shorthand for $<foo>.defined ?? $<foo>.Str !! '', is there? 15:44
moritz ~($<foo> // '') 15:45
hoelzro ah, that makes sense
hoelzro I was thinking something along the lines of $<foo>.?Str 15:46
mst woolfy: actually, I think it's recycled from a previous submission 16:06
dalek ast: a31f1e7 | lizmat++ | test_summary:
Fix deprecation
16:26
timotimo lizmat: "reify is always called with parameters" and then + method reify() { () } 16:27
seems wrong?
lizmat timotimo: excellent catch 16:28
timotimo :)
ugexe re META6.json: if a module B emulates module A, and module C depends on module A, if module B is already installed should module A be pulled in as a dependency of module C? or should module B satisify that dependency?
dalek kudo/nom: 407630f | lizmat++ | src/core/Nil.pm:
Nil.reify always called with 1 param, timotimo++
16:29
dalek ast: 2fe1e1f | lizmat++ | S32-io/copy.t:
Replace deprecated .path by .IO
16:36
dalek ast: 01dd57f | lizmat++ | S32-io/io-path-cygwin.t:
Replace deprecated .directory by .dirname
16:40
dalek ast: 2e63301 | lizmat++ | S32-io/io-path.t:
Replace deprecated .path by .IO
16:43
dalek ast: 3c0f230 | lizmat++ | S32-io/io-path.t:
Replace deprecated .directory by .dirname
16:44
dalek ast: 42a5d1b | lizmat++ | S32-list/uniq (2 files):
.uniq is now .unique
16:48
ast: 6bbf7c3 | lizmat++ | S32-list/unique.t:
Change all the references of .uniq to .unique
kudo/nom: 63402e5 | lizmat++ | t/spectest.data:
We renamed the .uniq testfile, so follow suit
16:49
dalek ast: 8c129b3 | lizmat++ | integration/advent2011-day23.t:
Replace deprecated .uniq by .unique
16:52
TimToady adu: the location of the earth in its orbit has almost nothing to do with the earth's wobble, so astronomers will already be using a timebase independent of leap seconds for that purpose 17:19
but it's true that astronomers are really the only group of people who care much about exactly where to point their telescopes when 17:20
but they're already used to doing complicated calculations
inflicting that damage on all users of civil time, a much larger group, is not really supportable 17:21
tadzik hmm, didn't github use to use gravatar for avatars? 17:22
dalek kudo/nom: a3e5f25 | lizmat++ | src/core/ListIter.pm:
Presize array with 5 for .reify(Whatever)

This seems to have a slightly beneficial effect on the spectest. Please revert if this is showing up as badness in other ways.
17:26
hoelzro does Perl 6 have something like \Q ... \E or quotameta from Perl 5? 18:01
flussence er... normal ' and " should do it 18:02
hoelzro I would like to see if a string begins with an arbitrary substring, where the latter can contain regex meta characters
oh, really?
so $str ~~ /^ "$prefix" /?
flussence exactly!
psch m: say '$prefix' ~~ / '$prefix' / 18:03
camelia rakudo-moar 63402e: OUTPUT«「$prefix」␤»
flussence wait... you don't need quotes there
$vars just interpolate as strings.
hoelzro oooooh
thanks flussence
osfameron what if you *wanted* them to expand to regexp metachars? ;-)
psch m: my $prefix = '$%foo'; say '$%foo-baz' ~~ / ^ $prefix /
camelia rakudo-moar 63402e: OUTPUT«「$%foo」␤»
flussence if you *want* a variable interpreted as regex, <$var> iirc
osfameron cute
TimToady osfameron: note that changing the default here is what allows us to combine Perl 5's $1 and \1 into a consistent $0 18:05
and we can do that because regexes are no longer considered strings, but a language of their own 18:06
so it's easy to flip the semantics of interpolation
masak oh, nice. I had never put those two facts together before. 18:07
timotimo hoelzro: i'm surprised you didn't know that o_O 18:20
hoelzro timotimo: regexes are one of my weaker areas in P6 =/ 18:21
and I seldom use / $var /
timotimo but they are one of the stronger areas in P6 :)
hoelzro yes
so I need to work on that =)
nwc10 did you see how close they got to pulling it off? vine.co/v/OjqeYWWpVWK 18:26
masak nwc10: o.O 18:28
TimToady the problem appears to be attidude more than velocity
masak .oO( think positive thoughts! ) :P
TimToady unless it fell over from knocking one of the legs off
nwc10 there's an explanation here twitter.com/elonmusk/with_replies
jercos So... is there anything practical to do with lists constructed from pairs, like [=>] 1, 2, 3, 4? Sorta vaugely resembles lispy cons lists, but doesn't seem too useful given the higher level datastuctures available. 18:29
nwc10 with the lovely final (so far) comment "At least it shd explode for a diff reason."
TimToady they said it wouldn't be a slamdunk, but it might be a slam or a dunk; looks like the slam won... :)
nwc10 TimToady: explanation in twitter suggests your observations are spot on, and explain why
TimToady *attitude 18:30
is an 'attidude' like an 'attaboy'?
masak jercos: only "practical" uses of it I've seen are when the problem was specified such that cons lists were required. (on RC, for example) 18:31
TimToady masak: it's a useful data structure when you want to share tails of lists 18:33
masak troo
TimToady and trim the fronts visibly to the GC
masak read that as "and trim the fronds" 18:34
TimToady you have a fern grasp of the facts
jercos with fronds like these, who needs anemones? 18:35
TimToady has only a spore grasp of the facts
masak I just need to read the sentence slower and more palmly
TimToady for that you need more date-time 18:36
raydiak m: my int $a = 1; say $a.WHAT; 18:42
yoleaux 10:33Z <lizmat_> raydiak: my $a = "foo"; $a.substr-rw(2,1) = "x"; say $a # -> fox
camelia rakudo-moar a3e5f2: OUTPUT«(Int)␤»
yoleaux 10:34Z <lizmat> raydiak: github.com/rakudo/rakudo/commit/6f79fcc296 implements it, tests welcome
raydiak oh brilliant, lizmat++ 18:43
m: my int $a = 1; say $a.WHAT; # anyway, what is going on here?
camelia rakudo-moar a3e5f2: OUTPUT«(Int)␤»
TimToady boxing 18:47
natives can only be storage types, not object types 18:48
at least until we get typed pointers of some sort
raydiak I see...thank you 18:50
TimToady but letting in pointers without the rest of C's ills is somewhat...fraught...
especially since JVM goes out of its way to make pointers very difficult
jnthn++ is working on native arrays with the 6pe branch, which should help with that sort of thing some 18:52
but Perl 6 is defined to keep temporary values in the widest types by default, so for any normal method call, the int has to be boxed into an Int 18:54
we may add pragmas that change the default at some point
keeping integer temps in an int64 is going to be indistinguishable for most practical purposes, which typically excludes math :) 18:56
defaulting to correct is important though 18:57
raydiak so using native types in pure P6 code isn't likely to gain you anything, then...not speed, memory savings...nothing? 18:58
TimToady native arrays are very compact
lizmat m: class A { multi method a(int $a) { say "int" }; multi method a(Int $a) { say "Int" } }; A.a(my int $ = 42); A.a(42) # native int multis work
camelia rakudo-moar a3e5f2: OUTPUT«int␤Int␤»
TimToady and certainly if the optimizer can determine that your temps won't exceed a certain value, they can substitute faster representations 18:59
s/they/it/
and the spesher can deal with that sort of thing dynamically to some extent 19:01
jnthn The actual rules at the moment de facto are that if you declared at least one of the things involved in a computation as a native int, then you'll get native int operations. 19:02
TimToady m: my int $x = 2 ** 60; say $x * $x 19:03
camelia rakudo-moar a3e5f2: OUTPUT«0␤»
TimToady I see
jnthn Which imo is fair game; you opted in. 19:04
literal op literal will never go for native int versions
otoh, it'll probably also have gotten constant folded by the time you're doing runtime. But still, it's the same interpreter on both sides of the fence... 19:05
TimToady m: my int $x = 2 ** 60; say $x * 2 ** 60
camelia rakudo-moar a3e5f2: OUTPUT«1329227995784915872903807060280344576␤»
TimToady in this case it looks like both args have to be int to get int semantics 19:06
jnthn Hm, odd
Oh
TimToady perhaps that a good thing? 19:07
jnthn I wonder if the 2 ** 60 gets constant folded to something that doesn't look like a normal literal
TimToady sez it's an Int
jnthn m: my int $x = 2 ** 60; say $x * 1329227995784915872903807060280344576
camelia rakudo-moar a3e5f2: OUTPUT«1532495540865888858358347027150309183618739122183602176␤»
jnthn oh, what on earth am I doing... :) 19:08
TimToady beats me
jnthn survived 3 days teaching with a cold, but probably ain't good for much tonight :)
It's almost gone, though, so I should be able to have a good run at the parametric stuffs at the weekend :) 19:09
TimToady prefers his parameters without goobers all over them... 19:10
adu TimToady: I suppose 19:11
b2gills I think I would settle for parametric types with "goobers" on them, than no parametric types at all. 19:12
adu just saw the "timebase independent of leap seconds" comment
TimToady hmm, maybe that slang term for snot is more of a regionalism than I thot 19:13
jnthn We call 'em bogies where I'm from :P
TimToady thinks the 'goober' slang is probably a metathesis of 'boogers' 19:14
which is obviously related etymologically to 'bogies' 19:15
jercos so *that's* what a bat bogey hex does.
jnthn
.oO( They asked me to defend my thesis, so I wrote them a metathesis... )
jercos defend your thesis, take up a sword! 19:16
TimToady syncpe, apocop, methatesis...
garden pathological 19:17
jdv79 isn't goobers a candy?
raydiak yum
jnthn If you're desparate enough, I guess... :P
TimToady probably, it's also peanuts in the south
jdv79 that might be a regional and/or generational slang
TimToady the original is apparently a rube or hick sort of person 19:18
oh, and our favorite: vowul harmonu 19:19
we used to collect linguistic terms that were examples of themselves :) 19:20
jnthn :D
TimToady epinethesis 19:21
er, epenethesis
jnthn *groan*
arnsholt Vowul harmonu is pretty nice! 19:22
I like epenenthesis too =D
lizmat m: sub a(\b) { b(42) }; say a(*-1) # would expect to see 41 there
camelia rakudo-moar a3e5f2: OUTPUT«===SORRY!=== Error while compiling /tmp/dOJoqUuttE␤Variable '&b' is not declared␤at /tmp/dOJoqUuttE:1␤------> sub a(\b) { ⏏b(42) }; say a(*-1) # would expect to ␤»
lizmat jnthn: is that a bug or something that we just cannot expect to work ? 19:23
TimToady garden pathological is the one I made up after grad school, and wish we could've thunk of it in time to impress our profs
jnthn lizmat: Your expectations are off.
m: sub a(&b) { b(42) }; say a(*-1)
camelia rakudo-moar a3e5f2: OUTPUT«41␤»
jnthn That's how to write it. 19:24
lizmat ok, and if b could be something else, we need to write $b
TimToady m: sub a(\b) { b.(42) }; say a(*-1)
camelia rakudo-moar a3e5f2: OUTPUT«41␤»
TimToady or that way
but b is defined as a term
lizmat that's probably sub-optimal from a performance point of view
TimToady so it will never expect arguments
it's like saying pi() 19:25
dalek ast: 6740efe | raydiak++ | S32-str/substr-rw.t:
Add a test for method form of substr-rw
jnthn b.(42) should compile into something sensible
lizmat ok, I'll go with that then
TimToady m: sub a(\b) { (b)(42) }; say a(*-1)
camelia rakudo-moar a3e5f2: OUTPUT«41␤»
TimToady m: sub a(\b) { b\(42) }; say a(*-1) 19:26
camelia rakudo-moar a3e5f2: OUTPUT«41␤»
TimToady that almost works visually :)
or should I say :\
m: sub a(\b) {\ b\(42)\ }; say a(*-1); # if you can't convince 'em, confuse 'em 19:27
camelia rakudo-moar a3e5f2: OUTPUT«41␤»
TimToady m: sub a(\b) { b andthen .(42) }; say a(*-1) 19:28
camelia rakudo-moar a3e5f2: OUTPUT«Nil␤»
TimToady aww
m: sub a(\b) { .(42) given b }; say a(*-1)
camelia rakudo-moar a3e5f2: OUTPUT«41␤»
TimToady m: sub a(\b) { b andthen 41 }; say a(*-1) 19:30
camelia rakudo-moar a3e5f2: OUTPUT«41␤»
TimToady so it's not topicalizing correclty
I guess that was a tpyo 19:33
jnthn Hm, yeah. Though I can never quite remember the spec of andthen... :) 19:38
jnthn back in 20 or so
japhb goobers are peanuts, in my mind 19:45
Heh
Backscrolled, didn't realize it. :-)
lizmat hmmm... interesting state of affairs: 19:51
nice patch to make substr() a lot faster 19:52
it fails *every* spec test when run under make
it runs all of them fine with perl6
lizmat it appears PERL6LIB setting is the difference 20:08
ugexe if i create a CompUnit with a module that already has a precompiled version, and then delete that precompiled version, am i supposed to create a new CompUnit or somehow tell the CompUnit that it no longer $has-precomp? 20:11
im creating a CompUnit, then checking for precomp-path.e and deleting if true. then calling .precomp but get cannot pre-compile an already pre-compiled file 20:12
lizmat A CompUnit for a given source path is a sentinel for the process
ugexe: in that case, there is a bug
you can also specify the :force flag with .precomp
ugexe force doesnt affect that specific die statement 20:13
lizmat on another note: vine.co/v/OjqeYWWpVWK # close but no cigar
lizmat ugexe: oops, wrong order in checks 20:14
ugexe die <message> if $.has-precomp;
github.com/rakudo/rakudo/blob/0154...#L113-L114 20:15
lizmat ugexe: yeah, looking at it now 20:16
testing a fix 20:17
ugexe cool
dalek kudo/nom: 2cd9645 | lizmat++ | src/core/CompUnit.pm:
Make CompUnit.precomp(:force) work, ugexe++
20:23
jnthn back 20:24
ugexe lizmat: just so i understand correct... if i create a CompUnit that already has a precomp, then delete the precompiled file, its correct for $comp-unit.has-precomp to return true? 20:38
lizmat well, fwiw, I'd like to think that the location of the precomped file is not important
so, if you want to create a new one regardless of existing, use :force 20:39
ugexe right, but the existence of the file is
lizmat if you remove the file underneath the object, you will get failure later 20:40
I'm just trying to reduce the number of stat calls
I mean, during the lifetime of a CompUnit object, you'd expect it to be the same all the time
creating a new precomp would be ok, I guess, but not much more 20:41
ugexe so i should treat .has-precomp's value as what it was during .new, not during the time it was called? 20:42
i understand how to work around it and what you are saying
lizmat yeah, that's the idea 20:43
ugexe ok. thanks for fixing it lizmat++
lizmat yw
jnthn: will ~ box unboxed strings ? 20:47
moritz m: say .signature.perl for &prefix:<~>.candidates 20:50
camelia rakudo-moar a3e5f2: OUTPUT«:(Any \a)␤:(Str:D \a --> Str)␤:(str $a --> str)␤»
lizmat I guess that would be a yes then
?
moritz no
str $a --> $str
the last one looks suspiciously like a no-op to me
lizmat m: say .signature.perl for &infix:<~>.candidates 20:51
camelia rakudo-moar a3e5f2: OUTPUT«:(Any $x = { ... })␤:(Any \a, Any \b)␤:(Blob:D $a, Blob:D $b)␤:(Str:D \a, Str:D \b --> Str)␤:(str $a, str $b --> str)␤»
lizmat that would be a yes then :-)
sorry for not being clear I meant infix ~
moritz except infix ~ on two str 20:57
which doesn't box 20:58
jnthn What moritz said. :) 21:00
moritz++, I mean :) 21:01
dalek c: 280c3c4 | moritz++ | lib/Type/Metamodel/AttributeContainer.pod:
document set_rw
21:08
dalek c: 77cac07 | moritz++ | lib/Type/Metamodel/AttributeContainer.pod:
Metamodel::AttributeContainer: document rw
21:10
moritz wonders if those docs are actually of use to anybody 21:11
masak that one in particular, or all of the doc effort? 21:11
moritz masak: the metamodel docs 21:12
masak ah.
masak it's hard for me to gauge. I think what I'd most expect to find as a newcomer, is a document giving an overview of *all* of the MOP. 21:12
there could well be individual articles with stuff too, but the overview would be the valuable/central one. 21:13
kind of a `perldoc perlmop` thing, if you see what I mean.
jnthn I can imagine various module authors wanting to do MOP stuff. 21:21
psch fwiw, i hope MOP docs will help me with a fully functional JavaHOW 21:28
dalek kudo/nom: 1b417d8 | lizmat++ | src/core/ (2 files):
Streamline substr()/.substr substr-rw/.substr-rw

  - substr() is about 15% faster
  - .substr() is about 7% *SLOWER*
  - substr-rw is almost 4x as fast
  - .substr-rw is just over 3x as fast
21:38
psch gist.github.com/peschwa/45ff88238adc74aa2405 <- fixed this just now \o/ 22:01
jnthn psch++ 22:04
FROGGS dang, how I love documentation.... >.< 22:05
xmlXPathObjectPtrxmlXPathNewString(const xmlChar * val)
Create a new xmlXPathObjectPtr of type string and of value @val
val:the xmlChar * value
Returns:the newly created object.
? 22:06
jnthn "the newly created object" :D 22:06
So insight!
psch ah yes, the "reorder the objects in the description" documentation method, often seen in javadoc as well
FROGGS absolutely...
I'd like to know what I'd use it for 22:07
dalek ast: 47d0d01 | lizmat++ | S32-str/substr.t:
Fudge dubious test
22:08
raydiak can anyone suggest something faster than but equally portable to "my &clear = $*DISTRO.is-win ?? {shell 'cls'} !! {run 'clear'};" ? 22:09
lizmat not me :-( 22:14
psch .oO( readline bindings..? ) 22:15
oh hm. during debugging i merged my JavaHOW work that implements .^methods and .^add_method, but now the PR wouldn't be minimally scoped anymore 22:17
that's what cherry-picking is for i think?
jnthn The depressing Windows answer... support.microsoft.com/kb/99261
dalek kudo/nom: 46e92b2 | lizmat++ | src/core/ (17 files):
Favour substr(foo,...) over foo.substr(...)

as substr() is 13% faster than .substr()
22:18
lizmat
.oO( shell 'cls' it is then )
22:19
psch oh, now, cherry-picking is for repacking changes into different commits apparently 22:20
*no
raydiak thanks jnthn++, won't be wasting any more time on that for now :) 22:21
dalek Heuristic branch merge: pushed 22 commits to rakudo/newio by lizmat 22:24
lizmat good night, #perl6! 22:34
raydiak sleep well lizmat 22:35
psch jnthn: is it sensible/feasible to bring this into the JavaHOW? gist.github.com/peschwa/0f8830ba3c6a2eb852ba 22:41
jnthn: that is, for every method pair of the form set_$ident generate a method named just $ident that wraps the previous two in a Proxy
*set_$ident and get_$ident 22:42
jnthn psch: For public fields? 22:44
psch jnthn: right. my qualms about this is more about the perl6 side though 22:45
jnthn But yeah, that'd seem helpful...I just wonder if there's cases where it collides with a method name. But that'd be odd I guess.
psch jnthn: as in, i have no clue how to Proxy.new in JavaHOW.nqp 22:46
jnthn Ah
Yeah...hmm. "With difficulty."
psch afaict we don't have $*W in Metamodel/, so i can't find_symbol 22:47
jnthn I wonder if we could write JavaHOW in Perl 6
And include it in the CORE.setting instead somehow.
Then we would have easy access :) 22:48
psch i suppose i could call a method on the JavaHOW from the vm in RakudoJavaInterop too, but i don't know if that's actually easier... 22:49
as for having the JavaHOW in Perl 6, i'm not sure where i'd start :) 22:50
timotimo m: if 1 ~~ True { } 22:51
camelia rakudo-moar 1b417d: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead␤ at /tmp/G_NH7xOKPE:1␤ ------> if 1 ~~⏏ True { }␤»
timotimo m: enum Frob <Hello Goodbye>; if 1 ~~ Hello { } 22:51
camelia ( no output )
psch as for collisions, my idea was to warn and drop the field, seeing as we still get set_$ident and get_$ident as fallback
timotimo hum.
psch but reaching the method isn't as easy when the shortname gets dropped
timotimo oh 22:52
m: enum Frob <Hello Goodbye>; if 1 ~~ Helloo { }
camelia rakudo-moar 1b417d: OUTPUT«===SORRY!===␤Function Helloo needs parens to avoid gobbling block␤at /tmp/hiMtyy9z5f:1␤------> Frob <Hello Goodbye>; if 1 ~~ Helloo { }⏏<EOL>␤Missing block (apparently taken by 'Helloo')␤at /tmp/hiMtyy9z5f:1…»
psch and telling users "if you have a field and overloaded methods of the same name you have to call the method with 'method/mmd+$methName/([Ljava/lang/Object;)java/lang/Object' instead" feels kind of unreasonable 22:53
psch because that's (at least close to) the descriptor for the generated dispatch method 22:54
i'm not 100% sure on the return type, might be SixModelObject :)
adu hey 23:08
why does this not work? pastie.org/9836063
I get the error "Variable '$op' is not declared"
timotimo i think you want to put a : before "our" 23:09
um
actually
you're putting perl6 code directly into a rule
that is parsed as regex syntax
that's kinda weird
psch that's a weird mixture of action method and rule
timotimo++ for the details 23:10
adu o crap, s/rule/method/ works
timotimo :)
adu sorry guys
my bad 23:11
timotimo :)
adu another thing 23:14
CAST::TransUnit or 23:15
C::AST::TransUnit ?
psch adu: isn't that between C::Parser::CAST::TransUnit and C::Parser::C::AST::TransUnit?
adu psch: github.com/andydude/p6-c-parser/bl...C/AST3.pm6 23:16
psch: I'm thinking of just removing the 3, and merging that into the master branch 23:17
I think the ${SingleChar}AST system works for 2 or 3 systems, but it's not extensible to every language and/or Slang that will be written 23:18
so I think C::AST is better
psch adu: right. having CAST in the root namespace seems pollute-y to me
there's an argument to be made for having Language::C::* instead, but i'm not gonna make. i think it's probably mostly traditional 23:19
adu psch: right, but using C::AST in a package called "C::Parser" is also a little poluty
Language::C is how Haskell does it 23:20
but I don't know anything about Perl5 convention, I'm just guessing, basically
psch adu: but people could only use C::AST if they don't need the Parser, couldn't they? which imho justifies having it next to Parser instead of below
s/only use/use only/ 23:21
adu I'm a convert from Java ANTLR to Perl6, so all that "oh it's just like Perl5" means nothing to me 23:21
psch: should I put C::AST into a different github repo? 23:22
dalek p: 0556d2e | donaldh++ | src/HLL/Compiler.nqp:
Fixed thinkos in HLL::Compiler.removestage
adu psch: or should I just declare it in the META.info thing?
psch adu: i think the latter, iirc provides allows this kinda of thing
adu ok :) thanks for the help 23:23
psch i.e. "the 'provides' field allow one repo to supply multiple packages"
adu: in the end this is just what i think, and i'm far from a champion for our cpan-ish thingy 23:24
adu cpanish, that's a new one
I think "C::AST" and "C::Parser" is a good example of that 23:25