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 nounFAILED 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 expectedcurrent 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_100reduceFAILED 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_100reduceFAILED 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 42error:imcc:syntax error, unexpected STRINGC, expecting '(' ('"www.ibm.com"') in file 'EVAL_17' line 46Could not find non-existent sub socketcurrent 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 valueCould not find non-existent sub forcurrent instr.: '_block14' pc 186 (EVAL_17:78)» | ||
masak | rakudo: (.say for .split(",")) for <a,b,c d,e,f> | ||
p6eval | rakudo bb22e0: OUTPUT«abcdef» | ||
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 stopperFAILED 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 stringcurrent 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 expectedcurrent 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 expectedcurrent 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
|