perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/
Set by mncharity on 25 March 2009.
00:00 kate21de left 00:02 Lrrr joined 00:04 cls_bsd_ joined
Lrrr pugs compilation is failing badly on Ubuntu Hardy 00:05
00:10 wknight8111 joined
jnthn -> sleep 00:10
night all
00:16 cspencer left 00:26 cls_bsd left 00:27 cls_bsd_ left, cls_bsd joined 00:29 wknight8111 left
s1n frioux: ping? 00:29
frioux s1n: pong 00:32
lemme drive home
and then we can get started
00:33 frioux is now known as frioux_away 00:38 DemoPhreak left 00:48 eternaleye left 00:53 frioux joined
frioux s1n: here 00:54
00:54 frioux is now known as frooh 01:05 orafu left, OuLouFu joined, OuLouFu is now known as orafu 01:13 eternaleye joined 01:23 kimtaro left 01:26 alc joined
diakopter Lrrr: how did you try to compile it? 01:33
Lrrr diakopter: perl Makefile.PL
major fail 01:34
diakopter take a look at the INSTALL file
Lrrr Can't find anything in Google.
diakopter it's intended to be built via hackage
well, recommended anyway
01:35 NordQ left
Lrrr Well then the docs might be unclear on that 01:35
diakopter the hackage releases actually aren't distributed/packaged from the svn.pugscode.org anymore
Lrrr ah... and it is explicitely said so
diakopter which docs 01:36
Lrrr svn.pugscode.org...
I did not see the "Cut here" line.
diakopter ahh
Lrrr Sorry then.
diakopter yeah, hrm, maybe the rest of that file should be cut up and moved to another file 01:37
or reserved for posterity in the svn history :)
Lrrr It's no big deal. Afterall it installed fine with Cabal.
diakopter oh, good.
Lrrr Yeah, whenever I feel like keeping a bit of code or doc I end up saying "fuck it it's under version control" 01:38
diakopter Lrrr: you're trying out pugs? 01:40
Lrrr I'm about to read about Perl6, so I thought I'd try Pugs first. 01:41
diakopter ah, good place to start is perl6-projects.org/
perhaps starting with the Wikis and blogs section
Lrrr I've have a lot to read to get up to date. 01:42
diakopter the blogs have good summaries 01:43
and wikis 01:44
actually, someone should modify that "mailing lists" link
Lrrr I'll had Planet Perl 6 to my Google Reader.
Sweet, there is a wikibook, and it has stuff. 01:46
01:47 bsb joined
diakopter feather.perl6.nl/~diakopter/cameliafav.ico.png 01:53
s1n std: use v5; 01:54
p6eval std 26002: OUTPUT«ok 00:02 34m␤»
diakopter I must admit, I'm somewhat mesmerized 01:55
s1n std: use v5; { print $ARGV } 01:57
p6eval std 26002: OUTPUT«Potential difficulties:␤ Variable $ARGV is not predeclared at /tmp/abedzAH4vi line 1:␤------> use v5; { print $ARGV }␤ok 00:02 35m␤»
diakopter TimToady sez 'use v5' is a no-op in STD fttb
01:58 justatheory joined
diakopter in theory 01:58
s1n diakopter: is it supposed to do something and he hasn't done it yet? 01:59
02:00 kimtaro joined
diakopter last I heard it won't do anything... afaict it'd have to hook in libperl5 to itself or something to figure out where is the first } that the p5 parser barfs on 02:00
by checking syntax against incrementally smaller substrings of the rest of the input 02:01
I dunno.
I guess it could also perl -c the rest of the input using the same method :)
s1n diakopter: well, but it's still in the spec, and iirc that bit about migration was written a long time ago 02:02
is it still planned that a valid impl will support v5?
diakopter I questioned that (here) fairly rigorously a few days ago, and the consensus was, "that's what she [the set of synopses] said", so that's how it'll be. or something. I think there were some reasons/rationale given as well. ;) 02:03
er, s/rig/vig/ 02:04
s1n well, i'm questioning it's necessity to be included in the language 02:05
honestly, that's the damn kitchen sink, we should avoid becoming the emacs of programming languages
built in p5 code sounds like an impl feature or a user module 02:06
TimToady: what's your take?
diakopter s1n: phrase your question as a request for synopsis clarification. :D
(hint)
s1n lemme try: can someone clarify to me if 1) the spec's requirement to support embedded p5 code is still valid and 2) that's not something that can be provided as a user module or implementation feature? 02:08
diakopter well, since 'use ...;" can affect the parsing anyway... hmm. I'm leaning to agree. 02:10
s1n with which side?
diakopter (you)
s1n the reason why i ask is because it seems to create an undue burden on implementations to support libperl or libperl++ (if ever completed) 02:11
diakopter (cough) ;) undue burden as opposed to the rest of the spec? 02:12
s1n heh true
as if p6 isn't enough to be able to handle, it also has to handle p5
diakopter I kinda like my idea of how to (at least check syntax of) 'use v5' 02:14
'course, that assumes that the use v5 block is correctly parseable.
s1n i kinda like the idea of not supporting use v5
Tene jnthn: do you have a plan for a better way to handle the %*INC pre-compile workaround evil hack in setting.pm? 02:15
diakopter s1n: which implementation are you imagining (most) here 02:16
02:16 dKingston left
s1n diakopter: all of them, you're doing ironperl right? you want to support v5 in ironperl? is there even a libperl that works on win32? 02:17
diakopter heh
depends on which c runtime...
s1n here's my opinion: 02:18
02:18 eternaleye_ joined
s1n if v5 is required, someone can do a grammer like STD.pm and actually connect it to actions 02:18
skids is it ok to feed evalbot stuff that loops? It'll cut itself off, right?
diakopter yeah, that's an interesting idea... making a derivation of STD.pm that tries to be v5 02:19
s1n beyond that, there's no reason to make all perl6 impl support perl5
diakopter skids: yeah it's ulimited
02:19 szabgab left
diakopter and time limited I think 02:19
skids OK, well here goes...
02:19 szabgab joined
skids rakudo: my $a = 4 but False; $a.say 02:19
02:19 kimtaro left
diakopter waits 02:20
p6eval rakudo bb22e0: No output (you need to produce output to STDOUT)
02:20 kimtaro joined
diakopter s1n: to answer your question, ActiveState's libperl (msvcrt) is called perl510.dll (and its .net bridge is made up of Perl510RT73.dll and Perl510NH73.dll), and strawberry perl's libperl (mingw32) is also called perl510.dll 02:26
02:32 eternaleye left, msmatsko joined
skids seems any literal with "but" anything loops, even just as a standalone statement. 02:34
diakopter rakudo: 3 but 3 02:35
p6eval rakudo bb22e0: No output (you need to produce output to STDOUT) 02:36
diakopter rakudo: 3 but 02:37
p6eval rakudo bb22e0: OUTPUT«Statement not terminated properly at line 1, near "but"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
diakopter std: 3 but
p6eval std 26002: OUTPUT«##### PARSE FAILED #####␤Can't understand next input--giving up at /tmp/TWM4mtfuwH line 0:␤------> ␤ expecting prefix or noun␤FAILED 00:02 35m␤»
diakopter s1n: and on cygwin it's called libperl.dll.a and libperl.a 02:39
camelia anagrams: I a camel. I am lace. acme ail. I came la. a la mice. a malice. 02:43
camelia: use v6; say "hi"
meppl goog night 02:48
s1n diakopter: btw, how's your ironperl going?
02:49 meppl left
diakopter thanks for asking 02:50
s1n heh that well huh?
diakopter today tycho got the tycho:runtime:dispatch-method() method 02:51
s1n i'm not sure i know what that means, but great! :)
diakopter which returns a closure of the method that would be invoked if the method named arg1 would be invoked on the invocant of dispatch-method(arg1, args, ...) 02:52
my "type" god object progresses
types are created and have simple multiple inheritance
s1n do you have an evalbot for me to play with yet? 02:53
diakopter har no
not fer a while, prob 02:54
OMeta is a really cool parser generator, I must say, though.
(tried using NPEG but it was way too slow)
s1n hmm, never heard of either of those 02:55
diakopter OMeta's are much faster (blindingly). not sure how much slower it will get when another layer of indirection is added to support local parser method overriding
who knows.
google: codeplex ometasharp
if you're curious
the JS implementation was the reference one
the OMeta language has success actions, but it sorely needs failure actions and partial failure actions. 02:56
tried to hack those in last week... stalled...
for anyone who's curious, I gave up for the time being on trying to swallow the whole of STD's yaml output and ported my simple yap6 parser thingie to OMeta# 02:57
currently my overall strategy is one of source translation (from Perl 6 to tycho) 02:59
but since the parser is theoretically callable from tycho code, it need not be
(since all of .net is callable from tycho code) 03:00
s1n what do you mean by "swallow the whole of STD's yaml output"? 03:01
03:01 alester joined
diakopter like, try to build up actions to handle all the various categories 03:01
alester Does Rakudo install yet?
diakopter rakudo: 'install' but die 03:02
p6eval rakudo bb22e0: OUTPUT«Null PMC access in isa()␤current instr.: 'infix:but' pc 21472 (src/builtins/op.pir:489)␤»
alester so no
diakopter didn't expect that
alester will it work with an installed Parrot?
diakopter wait, I'm not sure I intended to answer your 1st question
alester More importantly, how are people doing development using rakudo?
diakopter alester: read use.perl.org/~JonathanWorthington/journal/38701 for today's progress 03:03
dunno how/if anyone else is using it... 03:04
alester That's not really what I'm looking at.
Well, I see Perl 6 projects on rakudo.org
so somehow people are installing Rakudo
diakopter what page on rakudo.org? 03:05
(I don't see a link to the page you created 2 days ago) "Perl 6 projects" 03:06
)
alester well, I created it yester 03:07
rakudo.org/perl-6-projects
brb
diakopter the log says 2 days 4 hours ago, so that's what I went by
03:07 alester left 03:09 Alias joined 03:10 disismt left 03:11 felipe left 03:18 alc left
pmichaud I don't know that people are "installing rakudo" yet. 03:19
s1n pmichaud: i could make a Gentoo ebuild for the fakexecutable :) 03:20
pmichaud It would be interesting to see some prebuilt rakudos, yes. 03:22
packaging it with parrot is still a bit tricky, I think.
s1n do we need parrot for the fakexecutable? 03:24
pmichaud yes.
s1n how does it find parrot?
from the parrot_config?
pmichaud it just finds libparrot.so (on unix systems) 03:25
but it also has to be able to find PCT.pbc and PGE.pbc and other libraries.
s1n it only needs the so?
how does it find those?
pmichaud the fakecutable isn't really machine code -- it's just a fancy way of convertinga .pbc file into an executable. Internally it's still a .pbc, and wants the Parrot build around in order to run.
(yes, I think it gets the infromation from the parrot config) 03:26
diakopter alester: afaik the two projects (masak's) there on that page have been around for a little while... (since before rakudo left the pnest)
alester: but you're not brb
s1n so if i use --gen-parrot, it will always look under ./parrot/?
pmichaud yes. 03:27
no.
s1n okay, that won't work then
oh....
pmichaud if you use --gen-parrot, it will always look under $PWD/parrot
for example, on my system the fakecutable looks for /home/pmichaud/rakudo/parrot
s1n is it looking in that directory for everything, or just the parrot exe? 03:28
i mean, how is that going to work in /usr/bin?
pmichaud s1n: I've said for months that parrot's install has issues.
s1n: the fakecutable isn't intended to be the final solution.
s1n pmichaud: i realize that, but does it look under $PWD/parrot/?
pmichaud it looks under whatever directory parrot was built in 03:29
no matter where the fakecutable is located, it looks for the parrot build directory.
s1n oh... that'll be tough
pmichaud (i.e., the directory where parrot was when the fakecutable was generated)
s1n you'd have to chroot a fake directory to build... 03:30
ie chroot /home/pmichaud/rakudo/; perl Configure.pl --gen-parrot; make perl6; exit 03:31
that _might_ work
pmichaud anyway, I think the real solution is to play around with 'make install' from parrot (or perhaps 'make install-dev' and then see what tweaks are needed to rakudo's Makefile to build and run from the installed parrot. 03:32
s1n why not skirt the issue until parrot's install is fixed? if the chroot idea works, sounds like a good stop-gap to me 03:34
pmichaud because I think parrot's install is likely to be fised rsn
*fixed
s1n if it's about to be fixed, then you might be able to work around it for the mean time 03:35
pmichaud I'm open to considering patches, yes.
it's not something that's a personal priority for me to resolve at the moment. 03:36
s1n well, if there's a semi-working install, i can make a gentoo ebuild for it 03:37
pmichaud Rakudo doesn't even have an 'install' makefile target at the moment.
03:37 frooh is now known as frooh_away 03:38 Alias left
Tene pmichaud: got a sec? 03:44
pmichaud sure 03:45
Tene pmichaud: can you tell me which class in the Code hierarchy I should add the .leave() method to?
pmichaud I would add it directly to Parrot's Sub PMC class.
.namespace ['Sub']
.sub 'leave' :method
... 03:46
.end
at least to get things started.
Tene src/classes/Sub.pir yes?
pmichaud yes, it can go there. 03:47
Tene :)
pmichaud Note that Perl6's Sub isn't the same as Parrot's Sub, though.
03:47 felipe joined
Tene :/ 03:47
pmichaud it might be more appropriate in Code.pir 03:48
but it should go into the ['Sub'] namespace so that it's attached to Parrot's Sub PMC
03:48 mikehh left
Tene If it ends up in ['Sub'], it would be inherited by Perl6's Sub? 03:48
pmichaud sure, since all executable objects are ultimately subclasses of Parrot Sub 03:49
Tene Okay.
s1n pmichaud: i saw a ticket (frooh's, i can't remember what it was for) where embedded pir was recommended over p6. wouldn't that be somewhat backend dependent?
pmichaud s1n: yes.
Tene Also, this adds a handler to every block. That's not a problem for you?
pmichaud adding a handler to every block -- I'd prefer to avoid that. 03:50
s1n pmichaud: and it was still recommended for the setting code?
pmichaud s1n: "setting" simply means "builtins"
s1n: it doesn't necessarily mean "only written in Perl 6"
s1n pmichaud: rakudo setting is specific to rakudo's current backend?
pmichaud s1n: I suspect that all implementations will have some implementation-specific code in their setting. 03:51
Tene: I'm not sure that "leave" should be exception based. 03:52
s1n i was under the impression that setting code was not specific to any particular implementation
to eliminate the need to reinvent the wheel
pmichaud s1n: I know a lot of people have been under that impression, but that's not been what I've been saying.
Tene pmichaud: had a conversation with TimToady and Jonathan a while back about this... lemme try to find it in the logs...
pmichaud s1n: not every builtin can be written in Perl 6. 03:53
s1n: therefore, by definition, some parts of the setting will be in something other than Perl 6.
s1n iirc the PIR recommendation was for speed 03:54
pmichaud s1n: speed is part of it, but not the whole story.
s1n okay, cause i think speed shouldn't be any part of it
pmichaud my philosophy is that whichever provides the most straightforward implementation is what should be used.
s1n embedded pir is more straightforward? 03:55
pmichaud in some cases, yes.
s1n okay, i'll have to take your word for now
pmichaud If I have to choose between 10-20 lines of Perl 6 code versus 3 lines of inline PIR, I think it's clear that the inline PIR is likely more straightforward. 03:56
Tene pmichaud: approximately here: irclog.perlgeek.de/perl6/2009-03-13#i_983767
s1n is there no p6 equivalent to xs?
pmichaud wouldn't xs fall in the category of "implementation dependent"? 03:57
Tene pmichaud: jonathan's plan was to manually walk the call chain (ideally also calling the appropriate LEAVE blocks and such) and then extract the retcont from the appropriate sub and invoke it directly. 03:58
Does that implementation sound more like what you had in mind?
pmichaud yes.
that also seems to match what TimToady is saying, I think. (still reading the whole conversation) 03:59
s1n well, by xs equivalent, is there any plan/idea of making a DSL to talk to the backend 04:00
pmichaud s1n: not that I'm aware of.
s1n or something equally odd
Tene I haven't heard of any proposals for that.
04:00 aindilis left 04:01 mikehh joined, alester joined
pmichaud s1n: I suspect that eventually we'll provide a shared "core setting" reference that implementations can borrow from. But different implementations will want to optimize to different things. 04:01
04:01 aindilis joined
pmichaud and so each implementation will have parts of its setting that aren't exactly the same as the shared version. 04:01
s1n that's kinda what i was expecting
pmichaud in Rakudo's case, our parts that aren't the same as the (someday) shared version are the inline PIR sections. 04:02
Tene: this is another place where I think that we need some way of representing Contexts as an object 04:03
i.e., "leave" is really something we do to a specific invocation of a block/sub 04:04
and Parrot doesn't support that very well yet.
Tene So you'd prefer I don't commit this exception-based leave()? 04:05
pmichaud do we have a strong need for leave() at the moment?
Tene jonathan was trying to implement it to fix a bug with junctions. 04:06
I never found out the details of the bug, or how serious it is.
04:07 NoirSoldats left
pmichaud the exception-based version of leave puts a control handler in every block? 04:08
Tene Yes.
pmichaud for routines, is it the same handler that would be handling return ?
Tene No, at least not currently. 04:09
04:09 orafu left, OuLouFu joined, OuLouFu is now known as orafu 04:10 NoirSoldats joined
pmichaud Tene: I think it may be worth re-checking with jnthn++ to see if .leave is still needed for handling junction dispatch. 04:11
Tene pmichaud: as of today he still needed it to fix the junctions bug.
pmichaud okay. 04:12
04:13 mberends joined
pmichaud thinking. 04:13
Tene I'm working in a branch anyway, so if you need to wait to consult with jonathan, that's fine too. 04:14
pmichaud I think I need to consult with jonathan.
Tene :)
pmichaud One of his arguments against doing this in the dispatcher was that blocks would also need a special dispatcher. 04:15
But that may no longer be the case since blocks no longer autothread over junctions (iiuc).
04:15 orbii joined
pmichaud at least, I _think_ that's what one of the recent synopsis changes indicated. 04:16
04:16 kst left 04:17 kst joined, orbii left
alester ok back 04:17
pmichaud: How are we installing rakudo these days? Can we yet?
mberends s1n: hi, currently I'm preparing to wrap Parrot's recently revived (by bacek++ and jnthn++) socket functions in rakudo/src/setting/IO.pm. I cannot imagine doing that without Q:PIR.
lambdabot mberends: You have 1 new message. '/msg lambdabot @messages' to read it.
04:18 Kisu joined
pmichaud alester: rakudo doesn't have a 'make install' target yet. 04:18
alester So how are people developing using it?
Just manually copying to /usr/local/bin
pmichaud I think they're just using whatever version of perl6 they build. yes.
alester but parrot has to be in the path, right?
pmichaud no.
alester oh 04:19
pmichaud the fakecutable is tied to the build directory.
so whatever version of parrot was used to build "perl6" has to remain in place.
alester huh
fakecutable meanin perl6
Tene executable with embedded parrot 04:20
pmichaud yes, "perl6(.exe)" is a fakecutable.
mberends not manually copying to /usr/local/bin, symlinking to perl6
pmichaud which is to say, it's an executable that is linked to the build copy of libparrot.so 04:21
s1n mberends: why not just write it all in PIR?
mberends I lack the brainz
pmichaud and contains the perl6.pbc bytecode as a struct (which is then interpreted by the libparrot code)
s1n: getting subroutine signatures correct in PIR is very difficult (especially for MMD). Using Perl6 for that is much more robust. 04:22
alester I have thrown away my fork 04:23
and am starting afresh
pmichaud also, just because part of the subroutine body is written with Q:PIR doesn't mean the entire body needs to be. 04:24
s1n i just wanted to know why setting mixed code was preferred over plain PIR 04:26
mberends s1n: plain PIR is probably superior in a similar way to assembler being superior to C 04:27
s1n heh yeah i suppose, i wasn't proposing it was superior though 04:28
pmichaud mberends: actually, I suspect that the socket() example you gave earlier can be written in pure Perl 6, though.
mberends then my efforts are in vain!
pmichaud no, not in vain. 04:29
we still need them to be written.
:-)
mberends pmichaud, if you give me a short example as style guide, I'll follow that
pmichaud unfortunately, I don't know the details of Parrot's socket implementation, or of Perl 6's socket design 04:30
so it gets a bit nebulous from there
that said...
Parrot's socket opcodes are now specced to be method calls instead 04:31
since they're method calls, no PIR is needed -- we can just invoke the methods directly from Perl 6
04:31 FurnaceBoy left
pmichaud we still need something to wrap Parrot's idea of sockets into Perl 6's IO objects (or however Perl 6 wants socket io to take place) 04:32
it may be that Parrot doesn't ipmlement the method form of socket operations yet. (I don't know.)
mberends unless the implementation is procedural, not method calls....yes
it's the old way, probably 04:33
pmichaud in that case, you'd have to use the socket opcodes in the interim. However, those are already declared to be incorrect, so I don't know how long they'll survive.
mberends anything is better than nothing @now, fine to refactor later
pmichaud at any rate, to use the opcodes -- yes, inline PIR is the way to go. 04:34
mberends phew, not all in vain :)
pmichaud, some work to date: gist.github.com/85885 04:36
pmichaud I'm not sure that "socket sock, domain, type, protocol" is going to work. 04:39
mberends so after this is completed it's a Parrot job to replace opcodes with methods. That's still foreign territory to me, but interesting :)
pmichaud "sock" is an IO object, and I'm not sure what parrot's "socket" opcode is expecting.
mberends parrot/examples/io/httpd.pir:113 has a call like that, and it works 04:40
pmichaud reading that makes me believe that "socket" returns a Socket PMC into sock 04:41
i.e., as if someone had written sock = socket 2, 1, 6
mberends there are examples like that elsewhere, afair 04:42
pmichaud sure
my point is that it will end up having nothing to do with the $sock parameter 04:43
er $socket
mberends and that would be fatal of course
pmichaud so I _think_ what the socket opcode is doing is creating a new Socket PMC, and setting the 'sock' register to that PMC 04:44
your routine would then need to get it into the IO object represented by $socket
mberends yes, other code refers to sock as pmc indeed 04:45
04:45 kimtaro_ joined
mberends currently the bare socket pmc is enough for me. an IO object is a higher level thing that I intend to approach later, if that could work in the interim. 04:47
pmichaud sure, that can work. 04:48
mberends (the current Q:PIR is outside of setting/IO.pm)
doing this in two stages :)
pmichaud It's the "IO" constraint on the first parameter that was throwing me off.
s/was/is/ 04:49
04:49 kimtaro left, kimtaro joined, s1n left 04:50 s1n joined
mberends it could be re-typed to whatever P6 finds convenient. a packed binary string? 04:50
pmichaud it doesn't have to be typed at all.
mberends ok
pmichaud or, I should say -- it doesn't have to be constrained at all. 04:51
mberends thanks, this gives me enough food for thought atm
socket !=== IO, thus 04:53
sub socket( $socket, Int $domain, Int $type, Int $protocol ) { Q:PIR ... } 04:54
04:54 drbean_ joined 04:55 kimtar___ joined, kimtaro left, kimtaro joined
pmichaud afk # battery low 05:00
05:07 kimtaro_ left 05:08 nihiliad left 05:11 drbean left 05:12 kimtar___ left 05:15 nww joined 05:23 alc joined 05:30 takadonet joined 05:32 nww left 05:35 takadonet left 05:41 alester left, masak joined
mberends masak: hi! 05:42
masak mberends: hello! 05:48
mberends i could not sleep... head full of pir and sockets
masak 哈哈 05:49
I'm up because I've temporarily managed to get my sleep right. back to 11:30-5:00 sleep.
sorry, s/11/10/.
mberends sounds good :)
masak aye.
plans for the day: some gratuitous Druid programming; trying to get the Lobster running. 05:53
mberends good job!
masak yeah -- looking forward to it.
the fact that I will have to do a $WORK day will probably distract me a bit, though. 05:54
hopefully not too much.
mberends this HTTP::Daemon socket refit is giving this pir n00b quite a few errors :P
masak tell me about it. 05:55
PIR is non-trivial. 05:56
luckily, there is often good source material to copy from.
mberends Method 'HOW' not found for invocant of class 'Sockaddr' WTF?
masak :)
mberends: do you define Sockaddr in PIR? 05:57
mberends I think bacek++ did, but all in lowercase. that is part of my confusion.
masak ah. 05:58
yes, that's unusual for a class name.
bacek_ no, it's not. 06:01
Sockaddr is parrot's class, not Rakudo's.
masak ah.
bacek_ So it doesn't has all fancy stuff
mberends you should try ./parrot ./examples/io/httpd.pir - it rocks!
masak tries 06:02
06:02 parduncia joined
mberends masak: parrot r37707 06:06
masak aye.
whoa.
mberends the source in examples/io/httpd.pir is my main guide atm 06:09
masak sounds good. 06:10
mberends++
06:12 bacek_ left, eternaleye_ left 06:39 finanalyst joined 06:40 eternaleye joined 06:43 justatheory left 06:59 hercynium left 07:00 eternaleye left 07:02 kimtaro left 07:09 eternaleye joined
masak wow, I'm getting spoiled. writing Perl 5 code, thinking "what, I can't loop over three elements at a time? I have to adapt my _data structure_ to the inadequacies of the language?" 07:20
moritz_ masak: List::MoreUtils::natatime 07:22
masak moritz_: thank you. :)
moritz_ good morning btw ;-)
masak likewise. :)
I solved it with AoA instead. feels slightly more light-weight in this case.
07:23 cotto joined
finanalyst morning all. 07:30
I have been playing with junctions some more and have some questions 07:31
any body interested in helping?
07:33 disismt joined
masak sure. 07:34
(and in general, just ask the questions you have, don't necessarily bother asking if it's ok to ask them.) 07:40
07:41 kate21de joined 07:42 PacoLinux left 07:46 araujo left 07:51 alc left 07:55 araujo joined
finanalyst masak: thanx. I am very grateful for the extra understanding. I am trying to be polite to a group of people I have never met in person 07:59
masak finanalyst: no need. :) just ask your questions already.
I'm curious. :)
finanalyst rakudo: my @x=1|11,2,1|11; my $s=[+] @x; my $p=[+](@x,1); say 's '~$s.perl; say 'p '~$p.perl 08:01
p6eval rakudo bb22e0: OUTPUT«s any(any(4, 14), any(14, 24))␤p any(any(5, 15), any(15, 25))␤»
finanalyst here we have two series. For the game of 21, I need to get rid of values > 21
then compare the maximum values in each series 08:02
How do I filter out the unncessary values?
moritz_ don't use junctions for that.
masak grep?
finanalyst what should be used if not junctions?
moritz_ arrays 08:03
finanalyst it doesnt seem to me to be a set question
moritz_ or custom data structures
finanalyst we are looking at possible permutations, not all of which are needed
grep on what? 08:04
moritz_ rakudo: my @a = 1, 2, 11; my @b = 11, 1; (@a X+ @b).grep({ $_ <= 21 }).perl.say
p6eval rakudo bb22e0: OUTPUT«[12, 2, 13, 3, 12]␤»
moritz_ something along these lines 08:05
but I don't know from which arrays you want to calculate the permutations
finanalyst a hand of cards in which an ace can have a value of 1 or 11 depending on the context. 08:06
moritz_ hm
rakudo: my @a = 1|11, 2, 1|11; (@a X+ @b).grep({ $_ <= 21}).perl.say 08:07
p6eval rakudo bb22e0: OUTPUT«Scope not found for PAST::Var '@b' in ␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)␤»
moritz_ rakudo: my @a = 1|11, 2, 1|11; (@a X+ @a).grep({ $_ <= 21}).perl.say
p6eval rakudo bb22e0: OUTPUT«[any(any(2, 12), any(12, 22)), any(3, 13), any(any(2, 12), any(12, 22)), any(3, 13), 4, any(3, 13), any(any(2, 12), any(12, 22)), any(3, 13), any(any(2, 12), any(12, 22))]␤»
finanalyst in the two sets i gave above, both hands (@x, (@x,1)) have two aces and a single card with another value 08:08
the winning hand should have value 15 winning over 14
moritz_ finanalyst: when you use junctions for that, then the results of your calculations will be junctions again, which you probably don't want
and when you find a good collapsing behaviour you might answer the question "which set won" but not by which combination 08:10
finanalyst i am experimenting with junctions to see if they fit this problem area
08:10 PacoLinux joined
finanalyst junctions are interesting and I have never used them before 08:10
so finding the right collapsing behaviour is what I am trying to understand
moritz_ probably because no other programming language implements them ;-) 08:11
rakudo: say ?(any(3, 14, 4) > all(12, 4))
p6eval rakudo bb22e0: OUTPUT«1␤»
finanalyst but it does seem to me that there should be a way to eliminate from the junction values that are wrong
some sort of filter
moritz_ rakudo: say ?(any(3, 14, 4) > all(15, 4))
p6eval rakudo bb22e0: OUTPUT«0␤» 08:12
moritz_ finanalyst: you're trying to use them as sets again :)
08:12 alc joined
finanalyst possibly. I seem to be SET in my ways :) 08:12
moritz_ ;-)
finanalyst: so do junctioins setisfy you? *g* 08:13
08:13 eternaleye left 08:14 eternaleye joined
finanalyst rakudo: my @x=1|11,2,1|11; my $s=[+] @x; my $p=[+](@x,1); say 's '~$s.perl; say 'p '~$p.perl;say ?(any($s) > all($p)) 08:14
p6eval rakudo bb22e0: OUTPUT«s any(any(4, 14), any(14, 24))␤p any(any(5, 15), any(15, 25))␤1␤»
moritz_ you use all() on one element, so it has no effect 08:16
finanalyst this is the wrong result, because the 24 in $s is greater than the 5 in $p. Whereas what we want is the 15 in $p > 14 in $s
moritz_ you'd have to construct the junction as all() junction all the way first
08:16 WootKit joined 08:17 WootKit left
finanalyst rakudo: my @x=1&11,2,1&11; @y=1&11,3,1&11;my $s=[+] @x; my $p=[+]@y; say 's '~$s.perl; say 'p '~$p.perl;say ?(any($s) > all($p)) 08:18
p6eval rakudo bb22e0: OUTPUT«Scope not found for PAST::Var '@y' in ␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)␤»
finanalyst rakudo: my @x=1&11,2,1&11;my @y=1&11,3,1&11;my $s=[+] @x; my $p=[+]@y; say 's '~$s.perl; say 'p '~$p.perl;say ?(any($s) > all($p))
p6eval rakudo bb22e0: OUTPUT«s all(all(4, 14), all(14, 24))␤p all(all(5, 15), all(15, 25))␤0␤» 08:19
finanalyst rakudo: my @x=1&11,2,1&11;my @y=1&11,3,1&11;my $s=[+] @x; my $p=[+]@y; say 's '~$s.perl; say 'p '~$p.perl;say ?(any($s) < all($p))
p6eval rakudo bb22e0: OUTPUT«s all(all(4, 14), all(14, 24))␤p all(all(5, 15), all(15, 25))␤0␤»
08:19 DemoFreak joined
moritz_ finanalyst: what you really need is a list of all possible values for each set. And then on lists you can say any(@a) < all(@b) 08:22
finanalyst but i also need to filter out values in any set > 21 08:23
if any of @a > 21, they will win over any of @b < 21. Not correct behaviour
moritz_ that's why you need lists - you can filter them easily with grep 08:24
rakudo: my @set = (1, 11) X+ 3 X+ (1, 11); @set.perl.say 08:25
p6eval rakudo bb22e0: OUTPUT«too many arguments passed (3) - 2 params expected␤current instr.: 'infix:X+' pc 197018 (src/gen_metaop.pir:1352)␤»
moritz_ rakudo: my @set = ((1, 11) X+ 3) X+ (1, 11); @set.perl.say
p6eval rakudo bb22e0: OUTPUT«[5, 15, 15, 25]␤»
finanalyst may be this problem should be solved in a different way. But is it wrong to want a filter for junction values?
moritz_ it's not wrong to want it, but that's not how they are designed 08:26
rakudo: my @set = ((1, 11) X+ 3) X+ (1, 11); @set.grep({$_ <= 21 }).perl.say
p6eval rakudo bb22e0: OUTPUT«[5, 15, 15]␤»
moritz_ finanalyst: you can create the sets like that
and then use any(@set1) < all(@set2)
finanalyst i can see that, thanx
moritz_ rakudo: [X+] [1, 11], 3, [1, 11] 08:27
p6eval rakudo bb22e0: OUTPUT«Statement not terminated properly at line 1, near "+] [1, 11]"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
moritz_ :(
finanalyst i was just thinking the same! 08:28
moritz_ meta operators are sort of hacked into rakudo right now
std: [X+] [1, 11], 3, [1, 11]
p6eval std 26002: OUTPUT«##### PARSE FAILED #####␤Can't reduce a additive operator because it's diffy and not chaining at /tmp/01EQmClno4 line 1:␤------> [X+] [1, 11], 3, [1, 11]␤ expecting prefix_circumfix_meta_operator__S_100reduce␤FAILED 00:02 35m␤»
finanalyst rakudo: [X+] ([1,11],3,[1,11]) 08:29
p6eval rakudo bb22e0: OUTPUT«Statement not terminated properly at line 1, near "+] ([1,11]"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
moritz_ rakudo: ([1,11], 3, [1,11]).reduce({$^a [X+] $^b}) 08:30
finanalyst rakudo: << X+ << ([1,11],3,[1,11])
p6eval rakudo bb22e0: OUTPUT«Statement not terminated properly at line 1, near "[X+] $^b})"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
rakudo bb22e0: OUTPUT«Syntax error at line 1, near "<< X+ << ("␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
moritz_ rakudo: ([1,11], 3, [1,11]).reduce({$^a X+ $^b})
p6eval rakudo bb22e0: RESULT«[3]»
moritz_ rakudo: ([1,11], 3, [1,11]).reduce({@($^a) X+ @($^b)})
p6eval rakudo bb22e0: RESULT«[5, 15, 15, 25]»
moritz_ scary. 08:31
finanalyst aha
moritz_ should blog about it :)
finanalyst does this mean that [X+] should work and that the .reduce is a workaround? 08:32
moritz_ no, STD.pm says it doesn't work, because of associativity issues (which I don't understand, frankly)
anyway, got to go, bbl 08:33
masak moritz_: o/
finanalyst thanx. 08:34
masak further insights into SVG bring me one step closer to actually being able to publish that blog post about the Druid refactor.
08:39 kst left, kst joined 08:42 kate21de left 08:55 drbean_ is now known as drbean 09:12 ejs joined 09:16 WootKit joined
WootKit ;@echo off 09:16
;goto make
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; beeper - Kernel Mode Drive 09:17
; Makes beep thorough computer speaker
;
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.386
.model flat, stdcall
option casemap:none
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
masak WootKit: stop that, please.
WootKit ; I N C L U D E F I L E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
include \masm32\include\w2k\ntstatus.inc
include \masm32\include\w2k\ntddk.inc
include \masm32\include\w2k\hal.inc
jnthn lost his op bit :-(
WootKit includelib \masm32\lib\w2k\hal.lib
mberends oy! stop trying to beep my speaker!
WootKit ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; E Q U A T E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
TIMER_FREQUENCY equ 1193167 ; 1,193,167 Hz
OCTAVE equ 2 ; octave multiplier
PITCH_C equ 523 ; C - 523,25 Hz
masak doesn't regularly have one, since he logs out regularly :/
WootKit PITCH_Cs equ 554 ; C# - 554,37 Hz
PITCH_D equ 587 ; D - 587,33 Hz
PITCH_Ds equ 622 ; D# - 622,25 Hz 09:18
masak any op here?
WootKit PITCH_E equ 659 ; E - 659,25 Hz
PITCH_F equ 698 ; F - 698,46 Hz
PITCH_Fs equ 740 ; F# - 739,99 Hz
jnthn
.oO( So this is the earliest I woke up on a week day for ages and already I can see it was a bad idea )
WootKit PITCH_G equ 784 ; G - 783,99 Hz
PITCH_Gs equ 831 ; G# - 830,61 Hz
PITCH_A equ 880 ; A - 880,00 Hz
PITCH_As equ 988 ; B - 987,77 Hz
PITCH_H equ 1047 ; H - 1046,50 Hz
; We are going to play c-major chord
TONE_1 equ TIMER_FREQUENCY/(PITCH_C*OCTAVE)
masak jnthn: one gets used to it.
WootKit TONE_2 equ TIMER_FREQUENCY/(PITCH_E*OCTAVE)
TONE_3 equ (PITCH_G*OCTAVE) ; for HalMakeBeep
DELAY equ 1800000h ; for my ~800mHz box
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; M A C R O S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DO_DELAY MACRO
mov eax, DELAY
.while eax
dec eax
.endw
ENDM
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 09:19
; C O D E
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
moritz_ WootKit: stop that
masak ignores #perl6 until the dust settles
WootKit .code
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
araujo ?
WootKit ; MakeBeep1
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
masak glad I'm not the idiot this time.
WootKit MakeBeep1 proc dwPitch:DWORD
; Direct hardware access
cli
araujo thought for a moment this was a new bot
WootKit mov al, 10110110y
out 43h, al
moritz_ we need more ops
WootKit mov eax, dwPitch
out 42h, al
mov al, ah
out 42h, al
; Turn speaker ON
in al, 61h
or al, 11y
masak WootKit--
WootKit out 61h, al
sti
DO_DELAY
cli 09:20
; Turn speaker OFF
in al, 61h
and al, 11111100y
out 61h, al
sti
ret
MakeBeep1 endp
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; MakeBeep2
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
MakeBeep2 proc dwPitch:DWORD
; Hardware access using WRITE_PORT_UCHAR and READ_PORT_UCHAR
; functions from hal.dll
cli
09:20 mberends left
WootKit invoke WRITE_PORT_UCHAR, 43h, 10110110y 09:20
masak but wait -- there's more!
WootKit mov eax, dwPitch
invoke WRITE_PORT_UCHAR, 42h, al
mov eax, dwPitch
invoke WRITE_PORT_UCHAR, 42h, ah
; Turn speaker ON
invoke READ_PORT_UCHAR, 61h
or al, 11y
jnthn I wish some of the cdoe I worked on was this weel commented..
WootKit invoke WRITE_PORT_UCHAR, 61h, al 09:21
sti
DO_DELAY
cli
; Turn speaker OFF
invoke READ_PORT_UCHAR, 61h
and al, 11111100y
invoke WRITE_PORT_UCHAR, 61h, al
sti
ret
MakeBeep2 endp
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; DriverEntry
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING
invoke MakeBeep1, TONE_1
invoke MakeBeep2, TONE_2
; Hardware access using hal.dll HalMakeBeep function
invoke HalMakeBeep, TONE_3
DO_DELAY
invoke HalMakeBeep, 0
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
masak it's assembler -- comments are even more important than in HLLs.
09:21 WootKit left
Matt-W woohoo 09:22
masak thank the gods.
Matt-W we do need someone who's usually around at this time of day to be an op
09:22 mberends joined
moritz_ that used to be me and jnthn 09:22
Matt-W oh yes
moritz_ but we lost our ops some time ago
Matt-W so it did
hmm
jnthn Yeah, lost it when feather had its maint.
09:24 DemoFreak left
amoc wo- what a storm, 09:24
09:25 netsquire joined
amoc i think it would be better to have ChanServ or the like. 09:33
09:33 Maghnus joined 09:36 bacek left 09:37 donaldh joined
masak 2009-03-26 marks the date when I switch a mid-sized task from Perl 5 to Perl 6 for the first time. my Perl 5 regex segfaulted. the Perl 6 regex works, but is slow as tar. 09:40
09:41 netsquire left
rgs stack overflow ? 09:41
moritz_ or with embedded closures? 09:42
masak might be. I don't know enough about Perl 5 internals to tell.
I don't see an immediate reson why my regex would be a resource hog in any way.
rgs if there's lots of backtracking, that might be it
masak there isn't.
it was a very innocent regex. 09:43
rgs no-one is innocent
moritz_ with nested quantifiers?
masak but I'm OT now. I'll see if I submit a bug about it.
moritz_: can you give an example?
rgs (a*)*
masak hm, yes.
moritz_ that might explain it
because it can match in many different ways, when forced to backtrack 09:44
sometimes (?>...) around the inner group can help
or *+, if you use 5.10
masak ok. 09:45
I still don't see why it backtracks, but what you say makes a great deal of sense. 09:46
moritz_ consider a regex line (a*)*b when matching agaisnt aaaa.....aa (no trailing b)
then it'll first try to match all a's with the inner a*
and one repetition of the (...) group 09:47
then fails to match b
09:47 wayland76 joined
moritz_ then backtracks, tries to match the a's differently 09:47
masak right.
moritz_ so it tries all lengths of a's for the inner (a*)
rgs that's where "cut"ing the match is useful
masak my inner one was [^)]+, directly followed by a \) 09:48
so I suppose a cut there is only reasonable.
moritz_ (actually in my example it won't, because it'll look for a literal b and detects its absence rather quickly
rgs :: in P6, no ?
moritz_ but if you take a char class like [bc] instead of b, that optimization doesn't work)
rgs: in P6, you usually just use a 'token' for the inner group, that prevents backtracking automatically 09:49
masak hm, it still segfaults, even after I add (?> ... )
moritz_ token inner { a* }; if $str ~~ / <inner>+/ { ... }
yes, we have backtracking control with :, :: and :::, but tokens are so much easier to write :-) 09:50
rgs and to read
moritz_ :)
masak hm, my string is one million characters long. that might simply be it. 09:52
moritz_ yes
masak but Rakudo++ for processing it, albeit slowly.
moritz_ perl 5 thinks that Inf (in regexes) is 2**15, or so
masak this is the first instance where Rakudo excels in terms of stability over perl.
mberends is that a substring of your DNA ;) 09:53
masak moritz_: that sounds bad. :P
mberends: I'm not at liberty to tell.
mberends: but I do work in bioinformatics.
mberends thought so...
moritz_ masak: that's back from the auld days, when memory was scarce
but I guess it's harder to upgrade than s/int16/int64/ in a few places 09:54
otherwise somebody would have done it by now
masak ah, the auld days. 09:55
jnthn aulde. :-P
(erm. I think.) 09:56
moritz_ (that one Burns Supper seems to have spoiled me)
jnthn: probably depends on how far back you go
it's spelled without e in 'auld lang syne'
masak indeede. 09:57
mberends maybe it was 'ye olde days'
jnthn Oh? I always had it as aulde in that sentence. :-) But you're probably right.
mberends: Oh, yes!
That's probably what I was thinking of....
amoc wow: All tests successful. 10:04
masak it would sometimes be useful to have something that visualized how much a given regex matched a given string. 10:05
mberends saw a 'regex explorer' once, but cannot remember where 10:06
www.ivysim.com/tools/regex/ 10:07
moritz_ masak: $/.perl :-) 10:08
masak :)
moritz_ that's why I wrote it :-)
mberends :-) # just add SVG 10:09
moritz_ mberends: that's a very neat idea
mberends oh
masak aha -- there was a bug in my set of assumptions. 10:13
regexes++ 10:14
Tene masak: pleasedieinafire.net/cgi-bin/regex-graph 10:16
masak: it's a thin CGI wrapper around GraphViz::Regex
masak Tene: nice. I think I've seen that one before.
that's probably what I had in mind when I wished a moment ago.
Tene doesn't show how a specific string matches, though. 10:17
masak ah, no.
Tene but still useful
masak but still neat.
Tene I love using it for teaching regex
masak I can imagine.
masak boggles at how graphviz manages to draw curved arrows 10:18
Tene hm? 10:19
moritz_ why is there no arrow from a to a succeed node?
amoc is anyone have perl6-mode for emacs ?
masak Tene: it seems a nontrivial problem to me.
moritz_ masak: it is.
amoc: there's an old one in the pugs repo, in tools/ or so 10:20
amoc thx!
moritz_ masak: I used to render my gpg keyring with graphviz, and it just took ages
Tene moritz_: <repeat> nodes mean "match the solid line as many times as indicated in the label, then follow the dashed line when the solid line can't match anymore
If that's what you meant
otherwise, I don't understand the question.
moritz_ vim users have more luck, literal++ update perl6.vim 10:21
Tene: the (foo)+ has a Succeed node after it, the a* not. Why?
Tene moritz_: unsure
moritz_: it generates the graph by watching how perl compiles the regex 10:22
so that's how perl itself represents it
moritz_ Tene: I figured, yes
Tene I suspect it's related to ()s
moritz_ tries with (?:..) instead 10:23
doesn't make a difference 10:24
weird.
10:29 alc left 10:34 Tene_ joined 10:45 Tene left 10:54 disismt left, disismt joined 11:03 ruoso joined
moritz_ std: 1 X+ 2 X+ 3 11:03
p6eval std 26002: OUTPUT«ok 00:02 35m␤»
11:03 mikehh left
moritz_ std: [X+] 1, 2, 3 11:03
p6eval std 26002: OUTPUT«##### PARSE FAILED #####␤Can't reduce a additive operator because it's diffy and not chaining at /tmp/TDP38P7QsE line 1:␤------> [X+] 1, 2, 3␤ expecting prefix_circumfix_meta_operator__S_100reduce␤FAILED 00:02 35m␤»
moritz_ I don't understand the difference 11:04
why is the first form allowed, but not the second form?
jnthn The error looks dubious too.
moritz_ and what is 'diffy'? my dictionary doesn't know it
let's hilight TimToady, in the hope that he'll backlog and either explains or fixes :-) 11:05
amoc quote: Any infix operator (except for non-associating operators) can be surrounded by square brackets in term position to .... 11:08
std: [+] 1, 2, 3
p6eval std 26002: OUTPUT«ok 00:02 37m␤»
mberends jnthn, do you have time to help me with some pir problems? 11:09
amoc std: [,] 1, 2, 3 11:11
p6eval std 26002: OUTPUT«ok 00:02 37m␤» 11:12
jnthn mberends: ish :-)
mberends send me away when you've had enough :-) this file has 2 problems: gist.github.com/86012 11:13
lines 41 and 108 11:14
11:17 kst left
amoc o_O........ i think it's just a parse error as it shows, 11:17
11:17 mikehh joined, kst joined
ruoso was pondering what kinds of magics a Set type would provide... 11:18
jnthn mberends: I think passing around the SockAddr PMC directly may work out to be a bad idea...
11:18 meppl joined
jnthn mberends: I'd probably have a Perl 6 address object or something, which encapsulates it as a field. 11:19
moritz_ jnthn: try to assign it to an $Ithing register first
mberends yes, a better idea would be very welcome
jnthn mberends: Also a warning
moritz_ erm, I meant mberends
jnthn I'd avoid using the opcode versions of the ops and go for the methods on the socket PMC
moritz_ oh, it's an int already
jnthn Because the opcodes are endangered.
moritz_ should read first
11:20 donaldh left, donaldh joined
mberends jnthn, methods as in line 124? 11:21
11:21 bacek joined
jnthn mberends: Exactly. 11:21
mberends: Also bacek may have some hints. ;-) 11:22
ruoso .oO( my @cardvalues = set( set(1,11), 2..13 ); my $sum = [+] @cardvalues[1,8,2]; say $sum.perl; # set(11,21)
mberends bacek: hi, your breakthrough has given me lots of work :) gist.github.com/86012
11:29 charsbar left
bacek good evening :) 11:32
wayland76 evening++ :) 11:33
11:33 charsbar joined
bacek mberends: you probably shouldn't spend your time wrapping parrot's sockets into Rakudo's functions. 11:36
mberends bacek: right. I don't really know what else to do though. pmichaud++ also mentioned that Parrot sockets are deprecated. 11:40
bacek mberends: and I'm currently getting rid of them :)
mberends aha! :)
bacek implemented too old spec. Like 1 week old... 11:41
mberends heh
jnthn bacek: You implemented the method versions as well though, I think? 11:42
bacek jnthn: yes. But examples/io/httpd.pir uses opcodes. And there is no method for "sockaddr".
jnthn bacek: Ah. 11:43
bacek jnthn: got few minutes to apply another patch? :) 11:56
jnthn bacek: Give me a link - I'll do it soonish 11:57
bacek jnthn: gist.github.com/86041 11:58
gist.github.com/86043 is log for it 11:59
11:59 orafu left
bacek mberends: (about your gist). You can leave "socket" and "sockaddr". "bind" and "connect" should "just works". Even without my latest patches. 12:04
and "socket" and "sockaddr" returns PMCs. 12:05
mberends bacek: I shall try. But, I do not know how to work with the PMCs in Rakudo :/ 12:06
bacek mberends: is just objects. 12:07
12:07 wayland76 left 12:08 exodist joined
bacek rakudo: my $sock = Q:PIR{ %r = socket 2,1,6 }; my $a = Q:PIR{ %r = sockaddr "www.ibm.com", 80 }; $sock.connect($a); $sock.print("HEAD / HTTP/1.0\r\n\r\n"); for $sock.readline { .say } 12:09
p6eval rakudo bb22e0: OUTPUT«error:imcc:syntax error, unexpected INTC, expecting '(' ('2')␤ in file 'EVAL_17' line 42␤error:imcc:syntax error, unexpected STRINGC, expecting '(' ('"www.ibm.com"')␤ in file 'EVAL_17' line 46␤Could not find non-existent sub socket␤current instr.: '_block14' pc 61
..(EVAL_17:42)␤»
mberends bacek: $sock nice object :) very nice :) 12:10
bacek mberends: I've got plenty of them. Main problem to find proper pair :) 12:11
mberends plenty sockets here too, all disconnected ;) 12:12
12:15 cognominal joined
masak rakudo: .say for .split(",") for <a,b,c d,e,f> # should this work? 12:16
p6eval rakudo bb22e0: OUTPUT«Use of uninitialized value␤␤Could not find non-existent sub for␤current instr.: '_block14' pc 186 (EVAL_17:78)␤»
masak rakudo: (.say for .split(",")) for <a,b,c d,e,f>
p6eval rakudo bb22e0: OUTPUT«a␤b␤c␤d␤e␤f␤»
jnthn std: .say for .split(",") for <a,b,c d,e,f> 12:17
p6eval std 26002: OUTPUT«##### PARSE FAILED #####␤Malformed block at /tmp/oEBV9ZF9XV line 0:␤------> ␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ parameterized block␤ standard stopper␤FAILED 00:04 35m␤»
mberends bacek: on r37707 sockaddr says get_bool() not implemented in class 'Sockaddr', $sock.print segfaults. I probably need to update with your latest patches :) 12:20
bacek mberends: hmm... 12:21
mberends: give me few minutes to check. It definitely should'n segfault. 12:23
mberends no prob 12:24
12:41 alanhaggai joined 12:42 zamolxes joined, dKingston joined
mberends bacek: built a separate Rakudo r37744, and sockaddr there seems to work ok. $sock.print still segfaults though. 12:43
12:47 DemoFreak joined 12:50 disismt left, disismt joined 12:51 alester joined, alester left 13:03 ruoso left
mikehh rakudo (bb22e02) builds on parrot r37743 - make test/make spectest PASS = Kubuntu Intrepid i386 13:18
13:20 ruoso joined
masak rakudo: /<[-]>/ 13:39
p6eval rakudo bb22e0: OUTPUT«perl6regex parse error: Unescaped '-' in charlist (use '..' or '\-') at offset 3, found '-'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10167 (compilers/pge/PGE/Perl6Regex.pir:1219)␤»
masak pmichaud: I guess it's a conscious decision to make '-' illegal in character enumerations as the one above? have you considered loosening the restriction to only the inside of such an enumeration? if it occurs at the ends, what the programmer means is probably a literal '-'. I see nothing about this in S05. 13:41
13:44 donaldh left 13:47 hercynium joined
mberends masak, S05:127 reserves such cases for future use, afaics 13:47
masak ah.
masak looks
moritz_ in character classes? 13:48
masak right.
mberends: no, that does not apply.
moritz_ character classes have their own syntax 13:49
masak a language within a language within a language. 13:50
PerlJam putting - in a character class is likely a perl5-thinko. I think Larry wanted to ween people away from that usage by making it illegal for a while.
masak fair enough.
it's consistent, too.
mberends are character classes exempt from S05:85 and S05:95?
masak I just had the natural reaction when being bitten by the error despite knowing what I was doing. 13:51
mberends: they are at least exempt from S05:95, AFAICT. 13:52
at least most of them.
moritz_ PerlJam: it could be allowed at start or end of a character class though
masak notable exceptions being \- and \] and \\
moritz_ and let's face it, /<[-]>/ is such a nice smiley, it would be a shame to forbid them :-) 13:53
13:55 hercynium left
mberends /<['-']>/ has cute eyes :-) 13:55
moritz_ /<[°-°]>/ 13:56
/<[°+°]>/ # that's even a valid regex
masak mberends: aye, but /<['-']>/ does not mean a quoted dash.
mberends gotta invent a purpose for those !
masak we could use it as a Rakudo logo! 13:57
masak ducks
mberends they all look like pokemon faces
PerlJam mberends: I'd say that <[-]> complaining is because of S05:85 and S05:95. 13:59
masak PerlJam: in that case, it'd be complaining for <[+]> as well. 14:00
PerlJam masak: I agree :) 14:01
(Assuming you mean that to be a character class of one character)
masak has no energy for arguing with people who agree with him
PerlJam: aye.
PerlJam I think perhaps (after a quick skim of S05) that meta/non-meta characters in character classes needs to be made explicit. I would expect that any non-alphanumeric inside a character class to be meta unless it had quotes around it. So you'd need to use <['!'..'?']> instead of <[!..?]> (not to mention how you match a space character as part of the class :) 14:06
(quotes or backwhacked with \)
masak time to email p6l, it seems.
PerlJam: but it's already been established that quotes don't work that way in character classes. 14:07
on that point I've had unambiguous information from pmichaud. 14:08
mberends PerlJam: agreed. fewer rules == more consistency. The - was singled out to enforce S05:1368
PerlJam you're probably right ... that's why someone other than me needs to make things explicit :)
masak shall I write a short email to p6l asking the question?
moritz_ masak: please do
masak does 14:09
PerlJam that would be excellent, yes
Given that <[ a .. z ]> only matches, the characters "a" through "z", how would I add a space character to the character class? 14:11
I can only think of one way and I don't like it 14:12
moritz_ <[a..z ]> or <[a..z]+[ ]> 14:13
PerlJam moritz_: From S05:1372, "Whitespace is ignored within square brackets: / <[ a..z _ ]>* /" 14:14
moritz_ hrmpf
diakopter why not ' ' 14:15
PerlJam so, the way I can think of is to make a rule myspace { ' ' } and use <[a..z]+myspace> (I used <myspace> instead of <space> because <space> is already predefined to be the same as \s )
diakopter <[ a..z ' ' ]> 14:16
PerlJam diakopter: See masak's earlier comments :)
14:18 AzureStone_ joined 14:20 ejs left, aindilis left, skids left, pugs_svn left, Eevee left, c1sung left, simcop2387 left, PacoLinux left, lisppaste3 left, sunnavy left, estrabd left, cj left, baest left, IRSeekBot left, disismt left, DemoFreak left, dKingston left, alanhaggai left, charsbar left, mikehh left, parduncia left, bsb left, cls_bsd left, pmichaud left, elmex left, Lrrr left, Diederich left, frioux_away left, mj41 left, r0bby left, scrottie left, cxreg left, szbalint left, yves left, allbery_b left, ilbot2 left, gravity left, f00li5h left, szabgab left, diakopter left, buubot left, sri_kraih_ left, yahooooo left, kcwu left, Tene_ left, Southen_ left, kane_ left, broquaint left, meteorjay left, mtve left, Maddingue left, Woody2143 left, Maghnus left, masak left, NoirSoldats left, REPLeffect left, Sepheebear left, Grrrr left, AzureStone left, dmpk2k left, bacek left, eternaleye left, s1n left, xinming left, PerlJam left, kidd_ left, tarbo2 left, Helios left 14:21 justatheory joined, bacek joined, eternaleye joined, s1n joined, kidd_ joined, xinming joined, PerlJam joined, tarbo2 joined, Helios joined, zostay joined, pasteling joined, Aisling joined, silug joined, zev joined, NoirSoldats joined 14:22 PacoLinux joined, lisppaste3 joined, sunnavy joined, estrabd joined, cj joined, IRSeekBot joined, baest joined, disismt joined, DemoFreak joined, dKingston joined, alanhaggai joined, charsbar joined, mikehh joined, parduncia joined, bsb joined, cls_bsd joined, Lrrr joined, pmichaud joined, elmex joined, Diederich joined, frioux_away joined, mj41 joined, yves joined, gravity joined, allbery_b joined, szbalint joined, f00li5h joined, cxreg joined, ilbot2 joined, scrottie joined 14:27 kimtaro joined 14:29 szabgab joined, diakopter joined, buubot joined, sri_kraih_ joined, yahooooo joined, kcwu joined, gfldex joined, idemal joined 14:31 Maghnus joined 14:35 Southen joined, Tene_ joined, masak joined, Southen_ joined, REPLeffect joined, kane_ joined, Sepheebear joined, Grrrr joined, broquaint joined, meteorjay joined, mtve joined, dmpk2k joined, Maddingue joined, Woody2143 joined, pjcj joined, literal joined, avar joined, spinclad joined, frobnitz joined, justatheory left 14:36 kane_ left, mtve left, Southen_ left, Southen left, meteorjay left, broquaint left, Maddingue left, frobnitz left, spinclad left, Tene_ left, avar left, Woody2143 left, Grrrr left, pjcj left, REPLeffect left, dmpk2k left, Sepheebear left, literal left, masak left 14:40 ChanServ sets mode: +o PerlJam 14:41 Southen joined, Tene_ joined, masak joined, Southen_ joined, REPLeffect joined, kane_ joined, Sepheebear joined, Grrrr joined, broquaint joined, meteorjay joined, mtve joined, dmpk2k joined, Maddingue joined, Woody2143 joined, pjcj joined, literal joined, avar joined, spinclad joined, frobnitz joined, ChanServ sets mode: +o moritz_, ChanServ sets mode: +o masak, ChanServ sets mode: +o [particle] 14:42 ChanServ sets mode: +o pmichaud, ChanServ sets mode: +o jnthn
diakopter ok, that might last a netsplit or two 14:42
14:43 Lrrr left
diakopter PerlJam: did you see my reply to your last? 14:44
amoc is greedy for op
PerlJam diakopter: I did not.
diakopter ah
amoc .oO( the lord of the op... my precious ) 14:45
diakopter I must've been splitted
I said how about <[ a..z \ ]> (on the theory that whitespace wouldn't be ignored if it was escaped, per char)
(or is whitespace allowed between the escape backslash and its target) 14:46
PerlJam diakopter: yeah, that might work too, not sure though.
[particle] as in unspace? hrmm
14:47 Southen_ left, ChanServ sets mode: +o ruoso, frobnitz left, spinclad left, mtve left, meteorjay left, broquaint left, Tene_ left, Southen left, kane_ left, Maddingue left, avar left, Woody2143 left, pjcj left, dmpk2k left, Grrrr left, Sepheebear left, REPLeffect left, literal left, masak left 14:48 nihiliad joined 14:49 cspencer joined, cspencer left, cspencer joined 14:53 szabgab left 14:54 frobnitz joined, meteorjay joined, Maddingue joined 14:56 literal_ joined, Grrrr joined, masak` joined, Sepheebear joined
pmichaud to match a space in a character class, backwhack it. 14:57
<[ a .. z \ ]> 14:58
diakopter wins
PerlJam still seems "too invisible" to me
pmichaud I think that \x20 also works.
(if it doesn't it should be made to work fairly simply) 14:59
moritz_ \c[SPACE]
PerlJam so ... <[\!..\?]> (or the associated hex/octal/whatever version)
moritz_ std: "\c[SPACE]"
pmichaud no, I think that's just <[!..?]>
p6eval std 26002: OUTPUT«ok 00:04 36m␤» 15:00
moritz_ std: "\d[SPACE]"
p6eval std 26002: OUTPUT«ok 00:05 40m␤»
pmichaud I don't think one has to backwhack the ! or ? inside of a character enumeration
moritz_ I can never remember which one it is
PerlJam pm: okay, now the question is: why? Are not the ! and ? meta ?
moritz_ PerlJam: not in char classes
pmichaud inside of a character enumeration? no
PerlJam okay, why not?
moritz_ PerlJam: because there's no reason to make them meta
pmichaud the only metas are backslash and space, I think. 15:01
PerlJam and dot
(as in ..)
pmichaud even dot isn't meta when used singly
<[a.b]> # match a, dot, or b
15:01 szabgab joined
PerlJam heh, so <[,...]> is a fine character class? :) 15:01
pmichaud afaik, yes.
diakopter std: /<[,...]>/ 15:02
p6eval std 26002: OUTPUT«ok 00:03 35m␤»
15:02 hercynium joined
diakopter std: /<[...]>/ 15:02
p6eval std 26002: OUTPUT«ok 00:02 35m␤»
diakopter std: /<[..]>/
p6eval std 26002: OUTPUT«ok 00:02 35m␤»
diakopter lol
pmichaud those look wrong to me
rakudo: "hello, world" ~~ /<[,...]>/ 15:03
diakopter std: /<[xxxxx]>/
p6eval rakudo bb22e0: RESULT«Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ ast => ",",␤ text => ",",␤ from => 5,␤ to => 6,␤)»
std 26002: OUTPUT«ok 00:02 35m␤»
pmichaud rakudo: say "hello, world" ~~ /<[..]>/
p6eval rakudo bb22e0: OUTPUT«␤»
PerlJam So ... the rule is that you don't have to memorize a list of which characters are meta or not (except in character classes)
and the exception for character classes is because there are so few meta chars?
moritz_ PerlJam: yes 15:04
pmichaud only two, as I mentioned.
hyphen is meta to prevent p5-thinkos
diakopter std: /<[................]>/
PerlJam okay, I can live with that :)
p6eval std 26002: OUTPUT«ok 00:02 35m␤»
15:04 DemoFreak left
PerlJam (though I hope that the Perl 6 Camel at least mentions the exception for character classes) 15:05
pmichaud well, there are other situations like that as well. 15:06
< . , ? ! > # match a dot, comma, query, or bang 15:07
15:07 Woody2143 joined
pmichaud none of those are "meta" and require escaping 15:07
15:08 ChanServ sets mode: +v p6eval
PerlJam but they're quoted 15:08
15:08 cspencer left
PerlJam (and the first space is meta in a way :) 15:08
15:08 ChanServ sets mode: +v dalek
pmichaud oh yes, I guess the angles are a quote there. 15:08
one could say that <[ ... ]> forms a quote pair too :-)
15:10 alanhaggai left
dalek kudo: 7d9cd97 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 332 files, 7424 passing, 0 failing
15:11
15:12 literal_ is now known as literal
PerlJam Then perhaps they should be mentioned under the section "Simplified lexical parsing of patterns" along with the other quote forms. :) 15:12
15:12 ejs joined, aindilis joined, skids joined, simcop2387 joined, Eevee joined, c1sung joined, pugs_svn joined 15:14 frioux_away left, frioux_away joined, frioux_away is now known as frioux 15:20 donaldh joined 15:21 Cybera joined, Cybera left, Cybera joined 15:27 grwi joined 15:31 gravity left 15:32 grwi left 15:33 gravity joined
jnthn 7424 passing! :-) 15:34
skids jnthn++ 15:35
pmichaud yes, we're almost half-way. :-)
[particle] halfway to 14848!
[particle] hopes the goalposts get moved again this summer
pmichaud somehow I suspect the second 7500 tests will be a bit harder than the first 7500 tests.
I also wonder what tests we're not passing.
[particle] ack -af | grep -vsomething-or-other t/spectest.data 15:36
15:36 skids left
pmichaud well, there's a detailed list at www.pmichaud.com/perl6/rakudo-tests...-03-26.txt 15:36
[particle] i meant the testfiless we're not running 15:37
pmichaud so, in spectest.data, there's 1958 tests we currently skip
[particle] t/spec - t/spectest.data
pmichaud 15518-9707 15:38
5811
there's 5811 tests we don't even attempt
that seems like a lot
jnthn pmichaud: I figure those skips/todos tend to indicate features we didn't finish implementing yet but have some of.
Or where we have bugs.
And those we don't attempt are mostly featuers that we don't yet implement.
[particle] many parser bugs lurking
pmichaud it still feels like a lot. yeah, parser bugs might be quite a few. 15:39
perhaps operator overloading.
[particle] those two are most of the skips, i think
jnthn Actually we lose a significant amount in the skips to:
15:39 skids joined
jnthn * not having implemented want yet (I think this is a 3-figure number) 15:39
* not allowing positionals to be passed as nameds 15:40
[particle] ah, right. calling conventions. sigh.
jnthn I had to work around two Parrot calling conventions issues in the space of an afternoon when doing some Rakudo hacking recently. 15:41
pmichaud what are your guesses as to the likelihood of parrot calling conventions being fixed before July release?
jnthn pmichaud: You want my blunt answer?
pmichaud sure.
jnthn At least 50% chance of it happening, depends if one or both of us gets pissed off with it sufficiently to do it ourselves. 15:42
(Like lexicals.)
pmichaud I can pretty much guarantee it won't be me.
jnthn Right, and you've got more important things to do.
I don't *want* to do it.
And it's *easily* two solid weeks of effort, I estimate. 15:43
pmichaud before fixing parrot calling conventions I'd likely just get rakudo's dispatch and signature handling to work around them.
15:43 disismt left
jnthn It's not that easy to work around, I don't think :-( 15:43
15:43 disismt joined
jnthn Not the named as positional. 15:43
15:43 skids left, pugs_svn left, Eevee left, ejs left, simcop2387 left, c1sung left, aindilis left
jnthn I think your :lookahead suggestion would give us what we need. 15:44
pmichaud oh, that's not that hard to work around.
we just always grab arguments into slurpy positional and slurpy named, and then do our own binding.
15:44 skids joined, ejs joined, aindilis joined, simcop2387 joined, Eevee joined, c1sung joined, pugs_svn joined
jnthn We could do that yeah. 15:44
We'd just lose even more performance.
pmichaud also allison and chromatic keep arguing over how the calling conventions should be handled, and that's not a debate I feel like stepping into. 15:46
15:46 disismt left
jnthn Which is another reason I really don't want to do it either. 15:46
pmichaud so at some point I think we just take the performance hit so we can make progress (if it gets us more passing tests) 15:47
15:47 Southen joined
jnthn Aye. 15:48
I say let's watch it for another month or two, see if there's any visible progress on the Parrot side, and if not just go our own way.
pmichaud sounds fine with me. 15:49
skids So right now substr is staying as PIR because everything uses it... is it supposed to be an lvalue like in Perl5 though?
15:49 Tene joined
pmichaud right now substr is staying as PIR because I don't have a good alternate implementation. 15:49
if _you_ can write substr in Perl 6, I'd like to see it :-)
15:49 kst left
pmichaud and yes, I think it's supposed to be an lvalue. There's a patch that bacek++ wrote several months ago to do that, but I'm not yet convinced I like the approach he's taken. 15:50
15:50 FurnaceBoy joined, kst joined
skids Well, that's very hard, because A) we don't have type buf and B) unicode. 15:50
jnthn I suspect that Rakudo's substr probably wants to be based at some level on Parrot's substr op. 15:51
pmichaud I agree
skids But I was working up to suggesting that a working buf would mitigate some of the reliance on it.
pmichaud what's wrong with relying on it?
moritz_ the question is, does any part of the compiler use substr before the setting is fully compiled?
pmichaud Parrot's substr already handles unicode (and a variety of other encodings as well)
the whole point of having a virtual machine is so that it can provide fast implementations of operations like this. 15:52
(well, that's not the _whole_ point, but it's one of them)
jnthn moritz_: I'm coming around to the idea that we are maybe going to have in the first-stage compile a very basic copy in PIR of a few of the types/functions that we will later then drop in favor of compiling the Perl 6 versions. 15:53
That is, where we include an empty gen_setting.pir in the stage 1, it may actually have some very primitive versions of the types that give us infrastructural stuff that we can't do without.
I'd rather put off that until we know we *really* need it though. 15:54
pmichaud agreed
jnthn Rather than assuming we do.
pmichaud so far I can't think of places where we need it.
and yes, we have a simple mechanism for it when we do.
jnthn pmichaud: There's going to be circularities.
pmichaud jnthn: yes, there will (esp in STD.pm)
jnthn Just pulling List and Array out of the first stage is being non-trivial. 15:55
I moved one method recently and half of make test segfaulted under the harness and at the command line then ran find under the debugger. :-| 15:56
s/find/fine/
pmichaud I think I might need to take a crack at that (pulling List/Array out of the first stage)
jnthn I'd love help on that. 15:57
pmichaud although it seems to me that we still end up with List/Array in the first stage
15:57 Southen_ joined
masak` rakudo: /<[..b]>/ 15:57
p6eval rakudo 7d9cd9: OUTPUT«Cannot get character of empty string␤current instr.: 'parrot;PGE;Perl6Regex;parse_enumcharclass' pc 9104 (compilers/pge/PGE/Perl6Regex.pir:911)␤»
jnthn In fact, moving those into the setting, and hash too, is basically the big task that remains for me to finish up my grant.
masak` submits rakudobug
15:57 masak` is now known as masak
masak ouch, that netsplit really hurt. 15:58
skids OK, point taken. I guess I'm just biased towards buf8 :-)
pmichaud I'm not sure that List/Array belong in the setting (as perl6 code)
skids Being that I mostly work with packets.
jnthn pmichaud: My motivation for moving them there is that they need to become parametric roles.
I didn't really want to have to maintain PIR code for that...
pmichaud I agree that they need to be parametric roles, but they're also fundamental enough that we may need PIR for that. 15:59
masak pmichaud: closing bracket is a metacharacter in character enumerations. and dash, as I point out in my email to p6l.
15:59 r0bby joined
pmichaud masak: closing bracket doesn't need to be a metachar 15:59
masak oh, ok.
pmichaud oh wait, maybe it does now.
let me re-check.
jnthn What's the main motivation for needing them in the stage 1?
(Not disagreeing, just curious where you feel it's needed.)
pmichaud jnthn: we'll need them for STD.pm stuff 16:00
16:00 Alias_ joined
pmichaud can't compile STD.pm without lists/arrays 16:00
jnthn Ah.
OK.
moritz_ things like <[a]+[b]> are allowed, so ] needs to be meta, even if not followed by >
jnthn Maybe I need to ponder if we can make parametric types writtable more nicely in PIR then.
Not to mention attaching Perl 6 signatures afterwards...
pmichaud moritz_: yes, I think you're right -- ] needs to be meta also now. 16:01
masak here I am! :)
pmichaud: my point is that there are quite a few metachars in character enumerations, it's starting to feel cumbersome, and it's not at all specced by S05 as far as I can see. 16:03
16:03 Southen_ left, Tene left, Southen left, pugs_svn left, Eevee left, skids left, ejs left, simcop2387 left, c1sung left, aindilis left 16:04 NoirSoldats left
pmichaud masak: I'm open to changes in the spec there. In some ways I wish we could just get rid of character enumerations altogether -- they're a pain to implement. especially if/when we start supporting things like \w, \s, etc. 16:04
masak aye.
16:04 Southen_ joined, Tene joined, Southen joined 16:05 skids joined, ejs joined, aindilis joined, simcop2387 joined, Eevee joined, c1sung joined, pugs_svn joined
PerlJam if <space> and \s are equivalent, can we use <[a..z]+\s> just like we would use <[a..z]+space> ? :) 16:05
[particle] pmichaud: but they're extremely convenient and fast
masak pmichaud: as a Perl 6 user, I'm often surprised by the fact that apostrophes quote things outside of character classes but not inside of them. whereas whitespace, for example, works just the same.
[particle] i think the user's needs outweigh the implementors there :(
pmichaud [particle]: they're not fast.
jnthn pmichaud: How much would you hate a kind of PIR pre-processor, or maybe even looking at using PIR macros, to help us with attaching signatures etc to stuff we can't move into the Perl 6 setting? 16:06
PerlJam and if we can use <[a..z]+\s>, can we not also use <[a..z]+' '> ?
pmichaud jnthn: why not just a PIR function to do it?
16:06 NoirSoldats joined
pmichaud jnthn: we already have methods for attaching signatures 16:07
jnthn pmichaud: True...just means we have to write another PIR sub to attach a signature to another one.
We can do that I guess.
pmichaud that's effectively what happens now from the output of actions.pm
jnthn Yes, the point being that's generated and we don't have to worry about maintaining generated code. :-) 16:08
pmichaud agreed.
jnthn Or if the way we construct signatures for some reason changes.
pmichaud I'm not sure how much of an issue it will be in the long run (more)
I'd say we should focus on refactoring List/Array first and then see what we have.
16:08 pugs_svn left, Eevee left, skids left, ejs left, simcop2387 left, c1sung left, aindilis left, Southen left, Southen_ left, Tene left
pmichaud and yes, I'll put that on my plate. I thought about it a bit during my trip and figured it ought to be doable without too much pain 16:09
16:09 pugs_svn joined, c1sung joined, Eevee joined, simcop2387 joined, aindilis joined, ejs joined, skids joined, Southen_ joined, Tene joined, Southen joined
jnthn pmichaud: Is your refactoring going to try and make us has-a RPA rather than isa RPA? 16:09
pmichaud yes.
I figure that's the first step to resolving the issue.
jnthn That's not a nice change to have to make, but I think it's needed.
OK, good. 16:10
You may have a much better approach than I at it. But a couple of hours experimenting showed it to be non-trivial.
OTOH part of it will be easier now with some methods in the setting
And thus poking less into guts.
pmichaud I think we have to continue to allow push/pop on Lists (vtable) without exposing those as methods to Perl 6
jnthn I figured if we took the approach of defining push vtable in Object and re-dispatching to .push we'd manage that? 16:11
pmichaud Lists appear immutable to the Perl 6 programmer, but internally we can mutate them all we want. :-)
jnthn (e.g. more generally than just one List etc)
Ah, yes, true.
Though at the same time how vtable methods work determines how Lists behave to other langauges somewhat. 16:12
Rather than just being our own low-level-ish things.
pmichaud we may do it with private methods then.
jnthn Aye, that may be better.
16:13 skids left, Eevee left, pugs_svn left, ejs left, simcop2387 left, c1sung left, aindilis left, Southen left, Southen_ left, Tene left
jnthn Of course, if we have an RPA internally, we can still ahve the private methods do a vtable push on that. 16:13
pmichaud correct.
jnthn Heck it's an attribute if it's a has-a rel, so we can getattribute it and push vtable it if we really want...
16:13 pugs_svn joined, c1sung joined, Eevee joined, simcop2387 joined, aindilis joined, ejs joined, skids joined
jnthn (Which saves us adding methods to RPA, which we maybe shouldn't be doing...) 16:14
16:14 skids left, Eevee left, pugs_svn left, ejs left, simcop2387 left, c1sung left, aindilis left
pmichaud oh, I know we shouldn't be doing that -- those are workarounds. 16:14
it's never been my intent that those remain permanent.
jnthn OK. :-) 16:15
pmichaud nopaste.snit.ch/15967 # list of files in t/spec that we currently skip 16:16
16:17 skids joined, ejs joined, aindilis joined, simcop2387 joined, Eevee joined, c1sung joined, pugs_svn joined
dukeleto pmichaud: that looks like a good list for a gsoc student to attack 16:21
jnthn pmichaud: Is that skip as in, don't run at all? 16:22
pmichaud yes, don't run at all.
which is where the bulk of our skips are (5k+)
jnthn Some of them look like things we should be able to do...
S02-builtin_data_types/enum.t
for example
pmichaud I'm generating a list of the number of planned tests in each 16:23
nopaste.snit.ch/15968 16:24
jnthn S06-advanced_subroutine_features/wrap.t
I pondered implementing wrapping recently
But other stuff was more pressing.
Shoudln't be hard, anyways.
S06-traits/is-readonly.t - should be easy too 16:25
16:25 kst left
pmichaud lots of tests depend on adverbs, or options to regexes 16:25
jnthn Hmmm. Maybe I should spend Rakudo day next week going through some of these that I think we should be close to passing some of.
[particle] what's it cost to get pge's perl5 regexen working? 16:26
jnthn Ah.
[particle] that'd buy hundreds of unskips
16:26 kst joined
pmichaud we'd still need adverbs. 16:26
unless we recognized it as a special token/quoter 16:27
dukeleto it looks like t/spec/S32-trig/e.t can be run, it has one test that fails but it is properly skipped
pmichaud but yes, we'd get a lot of passing tests that way (> 1K). I'm not sure they're particularly useful ones.
16:28 ejs1 joined
pmichaud i.e., handling :P5 regexes doesn't seem that important to me in the larger sense of "what helps people use Rakudo" 16:28
jnthn Aye.
16:29 pugs_svn left, Eevee left, skids left, ejs left, simcop2387 left, c1sung left, aindilis left, skids joined, ejs joined, aindilis joined, simcop2387 joined, Eevee joined, c1sung joined, pugs_svn joined
pmichaud I haven't quite figured out how we want to handle things like "\c[NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE]" 16:30
jnthn That's a valid character name? 16:31
pmichaud it's in S02.
jnthn oh wow
:-)
pmichaud U+22AF
www.fileformat.info/info/unicode/ch.../index.htm
jnthn wow, that site has a page for every unicode char! :-) 16:32
pmichaud so maybe we just do a web lookup whenever we encounter \c[ ... ] :-P
afk for a bit 16:33
jnthn Well, we got sockets now ;-)
ooh, I should be afk too... .pm group meeting starts in 30 mins.
skids rest assured I will put them to nefarious use :-)
pmichaud we still need a name for april rakudo release :-) 16:34
PerlJam pm: are you going to use "pittsburg" for the June release? :) 16:36
16:37 pawel_ joined, ejs left, Alias_ left, Alias joined 16:39 DemoFreak joined
skids Not for rakudo, but "Willie" might deserve a Parrot naming honor: tinyurl.com/dkbgj7 16:41
16:41 mncharity joined 16:45 ejs1 left 16:46 mncharity left, pugs_svn left, Eevee left, skids left, simcop2387 left, c1sung left, aindilis left 16:47 Psyche^ joined 16:48 Patterner left, Psyche^ is now known as Patterner
pmichaud Haven't decided on june release. Might use pittsburgh for May release -- I need to contact them and see what they prefer. 16:49
16:50 zamolxes left 16:52 mncharity joined
mncharity >7 people. yay. 16:52
rakudo: say "a b" ~~ /:P5 a b/ 16:53
p6eval rakudo 7d9cd9: OUTPUT«␤»
mncharity rakudo: say "a b" ~~ /:P5(?:a b)/
p6eval rakudo 7d9cd9: OUTPUT«Statement not terminated properly at line 1, near "~~ /:P5(?:"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
mncharity rakudo: say "a b" ~~ /:P5::(?:a b)/
pmichaud I don't think PGE recognizes :P5 yet.
p6eval rakudo 7d9cd9: OUTPUT«perl6regex parse error: Quantifier follows nothing in regex at offset 21, found ':'␤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10167 (compilers/pge/PGE/Perl6Regex.pir:1219)␤»
mncharity ah.
any thoughts on what is supposed to be correct? 16:54
pmichaud /:Perl5 a b/ is likely the correct form. 16:55
at least according to S05
(assuming you're asking for the modifier inside of the expression)
[particle] that's better huffmanization :)
mncharity so the space after the :Perl5 gets disappeared. ok. I can fudge that, I just wanted to make sure I wasn't confused.
my thanks. :) 16:56
pmichaud I think we had decided that trailing spaces after modifiers would get eaten
mncharity sounds good. 16:57
TimToady: I note in passing that current viv's parse of /:P5 a b/ doesn't look right. 17:01
regrettably elfparse's old STD/gimme5 is also not getting it right (differently). 17:02
17:03 Tene joined
mncharity sigh. I just want a p6 parser... ah well. maybe skip rx_on_re test passing for :P5, and just do p6 rx. 17:04
then back to std.pm, MEMO and $lang, and then shaking it down towards self-compilation. 17:05
17:05 skids joined, aindilis joined, simcop2387 joined, Eevee joined, c1sung joined, pugs_svn joined
mncharity skids: are you in Boston? there's periodically the concept of doing a "Boston.p6 users group" get together. 17:07
pawel_ I want to use Perl on CGI server. I don't think it would allow me to install perl modules. is there any way to load module without installing it ( I want to make Jabber client using Net::Jabber on CGI server )
skids mncharity: western MA. Near UMASS Amherst. 17:08
mncharity then parse speed. elfparse/emit6.pm.
skids: ah, ok.
skids Though I work in Worcester.
mncharity then elf_i, getting on_lisp to compile it, finding/creating a fast multiple dispatch implementation for p5, and an multi based elf_j. 17:10
skids: are there any p5 user groups out there, or is boston the closest? 17:11
skids I dunno I'm not a very active "community" person.
mncharity :)
mberends pawel_, only development of Perl 6 is done here. you should try www.irc.perl.org/ 17:12
mncharity getting list handling right, general signatures/captures (written in p6), ...
17:13 NordQ joined
mncharity unboxing and proper operator inlining optimizations, plus uncontainering to permit real containers without prohibitive cost, ... 17:14
17:17 cotto left
mncharity Has anyone started looking at a STD/viv/???/Moose p6 implementation? 17:17
17:18 kst left, kst joined
ruoso mncharity, what do you mean> 17:19
?
mncharity End of quarter approaches, and I've been wondering whether to continue elf's slow creep, mothball it, suggest people focus on STD/viv//Moose, or what.
17:19 pugs_svn left, Eevee left, skids left, simcop2387 left, c1sung left, aindilis left, pugs_svn joined, c1sung joined, Eevee joined, simcop2387 joined, aindilis joined, skids joined 17:21 |jedai| joined 17:22 jedai left
mncharity ruoso: STD/viv is creeping towards being a p6 to p5 transliterating compiler. a simple one, but perhaps enough to support development of a real p6 compiler written in p6. since that's the only reason elf exists at this point, perhaps it would be better to avoid the distraction and focus folks at STD/viv. 17:24
17:25 pawel_ left
mncharity STD/viv/mildew/smop would be a fine alternative to a STD/viv/???/Moose. 17:25
ruoso I see... TimToady is the one behind that idea, it seems
mncharity my impression is just that we're a ways from being able to use mildew/smop in elf-scale p6 development. 17:26
ruoso as soon as the refactoring is over... smop should be much easier to deal with
mncharity nod
ruoso and we're much close to bootstrapping Multi, which is a very important milestone
17:27 ejs joined
ruoso by bootstrap I mean using the Multi.pm written in Perl 6 17:27
mncharity right. it's just the gap between "working" and... Multi.pm written in Perl 6? ears perk. pointer?
ruoso v6/mildew/CORE/*.pm 17:28
mildew got a Perl 6 implementation of the core at the same time as rakudo
altough much less complete ;)
mncharity perlcabal.org/svn/pugs/browse/v6/mildew/CORE 17:29
anyone wants to do a bot, it'd be nice to have a svnfile: /CORE/ command which gives links to source files. 17:30
ruoso mncharity, it starts at CORE.pm 17:31
17:31 Southen joined, donaldh left 17:34 Cybera left
dalek kudo: 0f6354d | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to take advantage of PGE changes in r37748.
17:34
mncharity tries to find signature ACCEPTS 17:37
drat. pumpkin. let's see... 17:39
ruoso mncharity, I think it's in the smartmatch table 17:40
mncharity danke. cheers. &
17:40 mncharity left 17:41 Kisu left 17:44 masak left
Matt-W Right 17:50
I should write some code
18:11 frzntoz joined, finanalyst left, dKingston_ joined, dKingston left 18:13 kst left, kst joined 18:14 icwiener joined 18:16 schmalbe joined 18:18 meppl left 18:28 hercynium left 18:45 amoc left, ZuLuuuuuu joined 18:48 eternaleye left 18:51 cdarroch joined 19:15 icwiener left, kst left 19:16 kst joined 19:34 ZuLuuuuuu left 19:44 parduncia left 19:49 parduncia joined
Matt-W I really wish Parrot would tell me which thing that wanted 3 parameters is actually being passed two 19:49
19:52 Kisu joined 19:53 parduncia left, rblasch joined 20:01 charsbar_ joined 20:04 eternaleye joined 20:06 rblasch1 joined
dalek kudo: 00cd1fd | pmichaud++ | src/ (2 files):
Add perl versions of trim() to setting (RT #64096).
20:07
kudo: a0c6e3d | pmichaud++ | src/ (2 files):
Add Perl 6 version of p5chop and p5chomp to setting (RT #64092).
kudo: 3bbb1c4 | pmichaud++ | src/ (2 files):
Add Perl 6 versions of cis() and rand() to setting (RT #64108).
kudo: 8af4574 | pmichaud++ | src/setting/Any-num.pm:
Clean up rand() and cis() from RT #64108 patch.
kudo: 5c07c7b | pmichaud++ | src/setting/Any-str.pm:
Use \x0a instead of \o12 (I find it easier to deal with hex).

newlines instead of using \n.
20:07 ejs left 20:11 Diederich left, kst left 20:12 kst joined 20:17 rblasch2 joined, charsbar left 20:24 rblasch left
dalek kudo: c3e5408 | pmichaud++ | t/spectest.data:
Update t/spectest.data with p5chop and p5chomp tests.
20:24
20:33 ZuLuuuuuu joined 20:36 rblasch1 left 20:37 justatheory joined, frioux left 20:41 rblasch2 left 20:42 eternaleye left 20:43 rblasch joined 20:46 exodist left 20:47 frioux joined, skids left, skids joined
mberends Matt-W: ping 20:51
20:53 sri_kraih joined, eternaleye joined
Matt-W mberends: pong 20:54
mberends are you working on Form?
20:56 frzntoz left 20:57 FurnaceBoy left 20:58 rblasch1 joined 21:02 kst left 21:03 kst joined 21:09 sri_kraih_ left 21:15 rblasch left 21:16 rblasch1 left 21:18 mikehh left 21:19 rblasch joined, schmalbe left 21:33 dKingston_ is now known as dKingston 21:34 mberends left 21:41 cspencer joined, justatheory left 21:42 eternaleye left 21:45 ruoso left 21:48 kst left, kst joined 21:50 ZuLuuuuuu left 22:00 DemoFreak left 22:08 rblasch1 joined 22:12 betterworld joined 22:20 rblasch2 joined 22:25 eternaleye joined
cspencer is there a way of determining the return context in rakudo yet? 22:25
22:26 eternaleye left, rblasch left
cspencer ie) list vs scalar 22:27
22:28 eternaleye joined, cdarroch left 22:30 pmurias joined
moritz_ no 22:31
22:31 rblasch joined
cspencer ok, i'll skip implementing things that rely on that then :) 22:32
22:35 rblasch1 left 22:36 kst left 22:37 kst joined 22:42 FurnaceBoy joined 22:43 pmurias left 22:48 rblasch2 left 22:50 Diederich joined 22:51 nihiliad left
cspencer perl6: say chr(104, 101, 108, 108, 111) 22:54
p6eval rakudo c3e540: OUTPUT«too many arguments passed (5) - 1 params expected␤current instr.: 'parrot;Any;chr' pc 11757 (src/builtins/any-num.pir:49)␤»
..pugs: OUTPUT«*** No compatible multi variant found: "&chr"␤ at /tmp/9Foz5xc8G1 line 1, column 5 - line 2, column 1␤»
..elf 26002: OUTPUT«Undefined subroutine &GLOBAL::chr called at (eval 123) line 3.␤ at ./elf_h line 5863␤»
pmichaud there shouldn't be many things that rely on list or scalar context.
cspencer should something like: (104, 101, 108, 108, 111).chr work?
moritz_ I don't know how it's specced, but I don't see a good reason for it 22:55
pmichaud it might work, but perhaps wouldn't give you what you expect. 22:56
rakudo: say (5..69).chr
p6eval rakudo c3e540: OUTPUT«A␤»
pmichaud :-)
cspencer rakudo: say 64.chr
p6eval rakudo c3e540: OUTPUT«@␤» 22:57
pmichaud there's always @list.«chr if that's what you want. (I might have the angles in the wrong place.)
22:57 rblasch left
cspencer rakudo: say 'A'.ord 22:57
p6eval rakudo c3e540: OUTPUT«65␤»
moritz_ it should be @list».chr I think (but the order of » and . is interchangable, iirc)
pmichaud anyway, we have a way to vectorize .chr already :-) 22:58
cspencer pmichaud: S29 indicated that chr/ord could be called on lists of values, was just wondering if that extended to methods as well, or just as subs
or perhaps that part of the spec is out of date...?
pmichaud possibly out of date, possibly never "ratified" 22:59
cspencer however, since there's a method for vectorizing, should i just implement it as expecting a single argument? 23:00
it's currently how the PIR version does it
moritz_ rakudo: say chr(65, 66)
p6eval rakudo c3e540: OUTPUT«too many arguments passed (2) - 1 params expected␤current instr.: 'parrot;Any;chr' pc 11757 (src/builtins/any-num.pir:49)␤»
pmichaud clearly multi Char sub chr(Int *@grid) isn't really what we expect 23:01
moritz_ aye
pmichaud (since we should either be getting back a List or a Str)
moritz_ I'll just change it to read chr(Int $ord) 23:02
pmichaud Personally, I'd go with the single-argument form until there's agreement that there should be a list form.
cspencer alright, that's easy enough
pmichaud I'd get rid of the Int.
(I don't know why we persist in putting false constraints on things.)
moritz_ habit :(
cspencer heh 23:03
moritz_ pmichaud: I think TimToady explained in a recent diff that for things that expect an Int, there should really be two multis, one expecting an Int and one expecting an Any
[particle] that habit didn't come from perl 5, that's for sure.
pmichaud where the Any version just does chr(+$x) ? 23:04
moritz_ right
I'll see if I can find it...
pmichaud I've seen him say that, yes.
It seems weird to require two subs where one will do.
moritz_ that's because the user may want to define a multi that's more specific than Any, but less specific than Int 23:05
pmichaud I can't think of an example for that.
moritz_ for example one that expects a Num, and does special magic[tm]
but at some point it'll re-dispatch to the Int version
pmichaud multi sub chr(Num $x) # more specific than Any
moritz_ that new multi could never re-dispatch to the "core" multi sub chr(Any $x) 23:06
pmichaud why not?
multi sub chr(Num $x) { $x.int.chr }
multi sub chr(Num $x) { chr($x.int); }
moritz_ because an Int also conforms to Num
and that tighter than Any 23:07
in your example chr($x.int) would pick the Num version
not the Any
pmichaud because Int ~~ Num ?
moritz_ yes.
(I don't know if it does in the Int ~~ Num case, because the relation between those two types is weird) 23:08
but in general it's a problem
23:09 kate21de joined
moritz_ pmichaud: S04:660 is the example I meant 23:13
it defines infix:<eq> with (Str, Str), and (Any, Any) re-dispatches to that 23:14
introduced by r25626 23:15
23:18 __felix__ joined
jnthn je tu po pm-om skupine 23:18
... 23:19
jnthn is here after pm group
pmichaud moritz_: I understand it for infix:<eq>, definitely. For chr() it's a little less obvious to me.
jnthn In multi-dispatch, Int is narrower than Num.
Because Int ~~ Num 23:20
(narrowness isn't just about isa, but also doesa)
(and weird special cases in this particular example...)
pmichaud is nearly finished adding :P5 to rx and m 23:21
moritz_ pmichaud: when you have a builtin(Foo) and Foo doeesn't directly inherit from Any (but with other steps like Num inbetween) then this problem arises
pmichaud when does Foo not inherit from Any? you mean when it inherits from Object ?
moritz_ pmichaud: *directly inherit* 23:22
pmichaud if Foo does Num
then chr(Num) would always take precedence over chr(Any)
23:22 kst left
moritz_ yes 23:22
pmichaud but yes, I see your point.
actually, I don't. 23:23
moritz_ and chr(Num) would have no way to redispatch to chr(Any)
23:23 kst joined
jnthn pmichaud: If you have a multi sub (Any $x) and a multi sub (Int $x) you could insert a multi Num($x) and it would sort between the two. 23:23
moritz_: chr(Num) could do (currently unspoorted in Rakudo) probably &chr<Any>($foo)
moritz_ jnthn: it could, but it would be rather ugly (IMHO) 23:24
pmichaud yeah, it just seems weird to me that we end up with two or more versions of every builtin.
overriding builtins in this way probably should be ugly :-)
(IMHO :-)
jnthn pmichaud: (weird) Should I read backscroll, or can you give me some context on that?
pmichaud I can give you context.
moritz_ that's the price we pay for having both fine graded types *and* having the operator (and not the types) determine the operation 23:25
pmichaud take for example, chr()
jnthn Two versions of every built-in hadn't ever quite occured to me...
pmichaud according to moritz++, we need both chr(Int $x) and chr(Any $x)
the second of which redispatches to the first
jnthn Why can't we just have chr(Any $x)? 23:26
pmichaud that was my position :-)
was/is
moritz_ jnthn: because I didn't knew about chr<Any>($x)
;-)
if we didn't have that form, a user defined chr(Num) could not coerce to Int and have it re-dispatch to chr(Any) 23:27
pmichaud at any rate, for the time being I want Rakudo to just do one, except in places where we explicitly need multiple ones, or until there's a clear declaration that we need multiple.
jnthn OK. At this point it occurs to me that we can go two ways on that: (1) we _require_ you have have an Int to call chr or (2) we say it's OK to pass whatever and coerce it to an int.
pmichaud (the infix:<eq> case being a clear declaration, obviously :-)
23:27 bacek_ joined 23:28 kate21de1 joined
pmichaud I know that requiring an Int isn't going to work. 23:28
my $a = <65>; say $a.chr;
(or say chr($a) )
my $a = $*IN; say chr($a);
jnthn pmichaud: Aye. And for cases where the user having the right type of thingy in the first place is unimportant, I guess Any is the Right Place. 23:29
It'll probably do a coercion in the sig, once we support as.
pmichaud right. That's partially why grep, join, map, and the rest of the builtins tend to be defined in Any and not some other specific class
jnthn *nod*
pmichaud I don't even think a coercion is necessary/wanted in many cases 23:30
do the coercion lazily inside of the body of the method sounds better to me
jnthn pmichaud: I suspect it'll end up happenign somewhere whether we do it in the sig or not.
I don't think it matters so much where we do it, tbh.
I like the sig because it gives publicly introspectable info (and thsu documentation) as to how the value will be treated. 23:31
*thus
moritz_ multi chr(Any $x as Int) { ... }
jnthn I like to hope that some day there won't be an efficiency argument over where we do it, too. :-)
pmichaud but it might also change the way things get dispatched (e.g., with 'lift') 23:32
jnthn moritz_: Well, Any is the default...
moritz_ jnthn: yes, it could be written shorter ;-)
pmichaud I guess if things are being lifted then we wouldn't be doing the coercion, though.
jnthn pmichaud: I haven't had chance to think through the ramifications, or how we'll implement, lift yet.
(Actually I'm not quite at the point of understanding the justification for it.) 23:33
pmichaud I haven't thought of implementation yet.
sometimes we want functions (such as builtins) to execute as though they were in their caller's lexical scope
moritz_ like most builtin functions, actually
jnthn Ok, that's a clean explanation. I'll buy that. :-)
pmichaud for example, if I define a custom infix:<eq>, and then call a function that uses eq to do comparisons, I might want that function to use my lexically scoped <eq> and not the one that was in scope when the called function was compiled 23:34
but this example argues against using coercions
because if we coerce an argument to some other type, we lose its original identity when we do a lifted operation.
jnthn Aye, you're right. :-)
pmichaud so, if "most builting functions" are intended to be doing lifts, they shouldn't be coercing arguments. 23:35
*builtin
jnthn Right, given lift that follows.
pmichaud++
But yes, we still need to work out how to implement lift. :-)
pmichaud I fear we're going to need/want contexts as standard PMCs sooner rather than later. 23:36
either that or some better introspection facilities.
jnthn That means we need non-sucky GC if it's gonna be core. ;-)
pmichaud agreed; I'm not optimistic though. Maybe I'm just in a pessimistic mood about Parrot development overall lately. 23:37
jnthn Of course, our own dynPMC that increments the reference count and holds onto a context and gives us what we want is no problem.
pmichaud: Unfortunately, I am too.
[particle] know any students who can implement gc for parrot?
moritz_ lol 23:38
jnthn (not quite sober comment coming up) Half of me wants to really damm yell at some people...
pmichaud I hadn't thought about creating a custom PMC for contexts without replacing the existing implementation.
23:38 rachelBROWN joined
pmichaud that's a cool idea. 23:38
jnthn pmichaud: In a way, I'd rather contribute to making core Parrot better than hack around core Parrot in Rakudo.
pmichaud jnthn: feel free to yell at me :-)
jnthn pmichaud: Yeah, but you're not the person that needs yelling at...
pmichaud maybe in Oslo we can come up with a list of yells we ought to be making. While having beer, of course :-) 23:39
jnthn pmichaud: My conflict really is that I _want_ to focus on Rakudo and trust that Parrot is going to happen.
As in, is going to go the Right Way. 23:40
pmichaud jnthn: yes, I have a similar conflict.
jnthn With fairly minimal intervention on my part.
Sometimes that happens (example: bacek++ for sockets).
Other times it doesn't.
pmichaud I suspect we need to come up with a clear unambiguous mechanism for indicating to Parrot folks "RAKUDO NEEDS THIS"
I've thought about adding a "Rakudo critical" tag to Trac 23:41
moritz_ or maybe more genera HLL critical
jnthn That only matters if we can make it really matter to people.
pmichaud Well, I did mark a ticket as being critical (in general) and allison moved it back to ordinary priority
(sigh)
[particle] use the list, the ticketing system, and #parrotsketch. 23:42
pmichaud [particle]: I've been doing that with little success.
[particle] and use me. hell, i've got to be good for something.
pmichaud (the list, ticketing system, #parrotsketch)
[particle] it's my job.
jnthn We can say calling stuff sucks and write flames about Parrot in comments in the Rakudo source (erm, sorry, I was pissed off...), but frankly it's gone nowhere of late.
[particle] tell me what you need. point me to it via email, even a short note since i have some of the context, and i'll make it happen. 23:43
jnthn I feel really bloody arrogant saying unless if JFDI it ain't going to change, but it's getting harder and harder not to feel that way. :-(
s/if/I/
[particle] look, parrot has a roadmap, and milestones
we've worked successfully off of that for months now
pmichaud particle: i disagree.
[particle] well, with some success 23:44
jnthn [particle]: We've been successful in achieving the things that were chosen as critical on the roadmap, IMO.
Which - don't get me wrong - *is* an achievement.
[particle] yes, it is.
pmichaud even there I'm not completely in agreement. 'install' was critical but really hasn't come together yet.
[particle] that's news to me. but i haven't been around much 23:45
jnthn pmichaud: Actually, I think your comment points to a deeper issue.
23:45 kate21de left
jnthn A bunch of refactors and stuff have got done. 23:45
e.g. MMD
But there's done and then there's done as well as I'd like to have seen them done.
pmichaud I agree, I have that issue as well. 23:46
jnthn And yes, I know it's open source, blah blah.
pmichaud calling conventions is one - I identified :lookahead as being critical (or at least very important) for rakudo back at PDS and was told it would be done as part of the calling conventions refactor
jnthn Which, IMO, never even happened.
pmichaud but it got marked as 'landed' 23:47
jnthn Renaming some functions is I guess one definition of "refactoring"
But it's not really what we wanted/needed.
pmichaud exactly.
many things were listed as "landed" in the roadmap but that didn't address the concerns of the language implementors.
jnthn And having been at PDS too, I heard exactly the same discussions as you. And I agree completely that saying that what was requested at PDS in terms of calling conventions was achieved is, IMO, a (bad) joke. 23:48
(erm. not that I'm suggesting that's your opinion...sorry...) 23:49
pmichaud no problem, I'm not adverse to that opinion.
jnthn It was a snider version of the way you put it. ;-)
[particle] ok, well, airing gripes in an open channel (even if it's the wrong one) is fine and all, but i'd like to make progress on what you need.
pmichaud [particle]: alas, I'll have to leave to fetch dinner in a moment. (more) 23:50
I'd like to make progress also, but the standard mechanisms (trac tickets, parrotsketch reports, mailing list) doesn't seem to be working. either I'm using them incorrectly or there's a seriously broken process somewhere.
jnthn [particle]: This is a channel where Perl 6 implementers can talk about implementing Perl 6.
[particle] jnthn: sure, and i can point folks to the log 23:51
pmichaud hmmm, my rx:P5 patch results in two spectest failures -- I'll have to fix those when I get back from dinner fetch. 23:52
bbiaw
[particle] they're just not listening for their names as they're not in channel atm
23:54 allbery_b left
jnthn pmichaud: enjoy dinner :-) 23:55
23:55 allbery_b joined
cspencer rakudo: say ${^ENCODING} 23:58
p6eval rakudo c3e540: OUTPUT«say requires an argument at line 1, near " ${^ENCODI"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
cspencer rakudo: say $*ENC
p6eval rakudo c3e540: OUTPUT«Use of uninitialized value␤␤»
23:59 wknight8111 joined