»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by Juerd on 28 August 2009. |
|||
06:43
ilogger2 joined
|
|||
wolfe.freenode.net | »ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! | ||
PacoLinux joined,
gbacon joined
06:44
daemon joined
06:45
IRSeekBot joined
06:46
Trey joined,
xinming joined
06:51
constant joined
06:55
justatheory joined
06:57
justatheory left
07:19
desertm4x_ joined
07:26
agentzh joined
07:27
Bzek joined
07:32
desertm4x_ left
07:36
ssm joined,
quuxx joined
07:46
iblechbot joined
07:57
TimToady sets mode: +v iblechbot
07:58
mariuz joined,
TimToady sets mode: +vvvv buubot dalek hugme iblechbot,
TimToady sets mode: +vvv ilbot2 ilogger2 IRSeekBot,
TimToady sets mode: +vvv p6eval phenny pugs_svn,
TimToady sets mode: +v quuxx
08:00
ssm left,
ssm joined
08:01
xabbu42 joined
08:14
literal joined
08:39
ihrd joined
08:42
ihrd left
08:43
xenoterracide joined
08:57
zamolxes joined
09:05
Su-Shee joined
09:07
xabbu42 left
09:09
agentzh left
|
|||
zamolxes | mewonders if Perl6 is a good way to express gameplay logic :) like en.wikipedia.org/wiki/Game_Oriented...embly_Lisp | 09:11 | |
09:25
lambdabot joined
09:35
riffraff joined,
charsbar joined
09:50
eternaleye joined,
am0c joined
09:58
Su-Shee left
09:59
ShaneC joined
10:00
Su-Shee joined
10:15
charsbar left
10:18
charsbar joined
|
|||
mathw | Good morning | 10:23 | |
10:33
xinming left
|
|||
diakopter | hi | 10:45 | |
10:47
pmurias joined
|
|||
pmurias | diakopter: hi | 10:48 | |
diakopter | pmurias: yo | ||
pmurias: uni uses lots of your time? | 10:52 | ||
10:59
masak joined
|
|||
masak | hola, #perl6 | 10:59 | |
colomon | \o | ||
jnthn | oh morning | 11:02 | |
oh noes...masak beat me here by all of 3 mins! | |||
masak laughs meanly | |||
and I didn't even try very hard. :) | 11:03 | ||
jnthn | Ooh, not much backlogging to do today. | ||
masak | for once. | ||
jnthn | Makes a change, yeah. | 11:04 | |
I guess ETOOEARLY for pmichaud++ | |||
jnthn is has a Rakudo day | |||
masak | \o/ | 11:05 | |
colomon | woah, pmichaud didn't post anything last night. no wonder the channel seemed so quiet.... | 11:08 | |
s/post/commit/ | 11:09 | ||
jnthn | Today we start moving Rakudo onto nqp-rx :-) | 11:12 | |
colomon | \o/ | 11:13 | |
I hope pmichaud got a good night's sleep, then! | |||
11:18
pnu joined
11:23
pmurias left,
xabbu42 joined,
pmurias joined
11:33
Chillance joined
|
|||
pmurias | diakopter: not that much, it's more a distraction | 11:38 | |
moritz_ | I'm curious if I recognize rakudo after being offline for the weekend | 11:39 | |
jnthn | We'll do our best to make it unrecognizably beautiful compared to before. :-) | 11:41 | |
moritz_ | please also make it unrecognizably fast :-) | 11:42 | |
dalek | kudo: d154eb9 | jonathan++ | (2 files): Add an s1_setting.pir file, where we can put things that we'd like to be in the stage 1 compiler, but not in the final Rakudo. For now just has print and say. Should make things a little easier while we rebuild Rakudo on the new grammar engine. |
11:43 | |
jnthn | (easier mostly because we can actually use print and say in the s1!) | 11:44 | |
11:48
fax joined
|
|||
mathw | jnthn: That could be handy | 11:48 | |
jnthn | Indeedy. | 11:49 | |
jnthn is installing nqp-rx | 11:50 | ||
Figure that'll be useful to have too ;-) | |||
11:53
IllvilJa joined
11:55
rgrau joined
|
|||
IllvilJa | Hello! I have a suggestion for the next fragment to add to the work-in-progress Perl 6 book: How to write modules :-). | 12:02 | |
That way we clueless perl 6 wannabies understand how to proceed with infecting CPAN with Perl 6 modules! | |||
jnthn | hmm | 12:03 | |
make test on nqp-rx gives me | |||
prove -r --exec .\nqp.exe t\nqp | |||
Unknown option: exec | |||
12:03
pnate2 joined
12:06
takadonet joined
|
|||
takadonet | morning all | 12:06 | |
jnthn | Ah, my test harness was super old | 12:07 | |
Anyway, all pass. \o/ | |||
takadonet | gj jnthn! | 12:08 | |
moritz_ | IllvilJa: I'm afraid we don't really know that yet ourselves :/ | 12:09 | |
jnthn | hi takadonet :-) | 12:11 | |
takadonet | hey jnthn | ||
Su-Shee | a chapter how to write bindings of lib xy for perl 6 would be very helpfull and probably speed up having nice future modules. | 12:12 | |
moritz_ | Su-Shee: you're very welcome to contribute that :-) | ||
jnthn | The spec on that is still a tad hazy, no? | 12:13 | |
Su-Shee | moritz_: prepared a bunch of experiments, wrote down some stuff on notes and then the new job kicked in :/ | ||
work really doesn't help with perl 6. ;) | |||
moritz_ | work-- | 12:14 | |
@karma work | |||
lambdabot | work has a karma of -1 | ||
12:16
pnate left
12:17
pnate joined
|
|||
jnthn | hugme: add jnthn to nqp-rx | 12:17 | |
hugme | jnthn: You need to register with freenode first | ||
jnthn | aww. | ||
moritz_ | hugme: add jnthn to nqp-rx | 12:18 | |
hugme hugs jnthn. Welcome to nqp-rx! | |||
jnthn | \o/ | ||
IllvilJa | moritz_: Ok | 12:19 | |
12:21
envi^home joined
|
|||
jnthn finally gets around to registering his nick with freenode anyway :-) | 12:22 | ||
dalek | p-rx: c489620 | jonathan++ | build/Makefile.in: Add an install target to the nqp-rx makefile - just followed the precedent set in the Rakudo Makefile. |
12:25 | |
12:27
pmurias left
12:28
pmurias joined
12:31
pnate2 left
|
|||
jnthn | phenny: tell pmichaud I've created the branch usenqprx in the Rakudo repo to begin The Big Switchover. :-) | 12:31 | |
phenny | jnthn: I'll pass that on when pmichaud is around. | ||
12:31
pnate2 joined
|
|||
takadonet | jnthn: so better get my version of rakudo now before it's broken? | 12:34 | |
moritz_ | takadonet: the 'master' branch won't break easily | ||
(which is the default) | |||
takadonet | hopefully :) | ||
masak | IllvilJa: helo. | 12:35 | |
IllvilJa: I kinda like your suggestion about modules. | |||
takadonet | just rebuilding my rakudo now to see if my code from a few weeks ago still work | ||
masak | IllvilJa: but I'm suffering from knowing too much about it myself: what is it that you'd like to know to get started? | 12:36 | |
IllvilJa | masak: well, I'm tempted to try port Term::ANSI to Perl6. It's tiny enough to fit into the short attention span I have on Perl 6 projects but still provides rather immediate visual effect on Perl 6 programs. | 12:37 | |
Su-Shee | masak: "a perl 6 module does not need 1; at the end of the file. that's good news, isn't it? to create a perl 6 module, do foo, bar, baz. add x, y, z and upload here." | ||
moritz_ | that *is* a rather good idea | ||
pmurias | IllvilJa: you mean Term::ANSIColor? | 12:38 | |
IllvilJa | pmurias: Yes, that's the one. My misspelling... | ||
masak | IllvilJa: creating a module goes something like this: in order to make 'use X::Y' work, create a file Y.pm in a dir X/, and put X/ where Rakudo will look. | ||
pmurias | that's a very good module | ||
masak | nod. please port that one to Perl 6. :) | 12:39 | |
moritz_ | and most Perl 6 modules are organized just like perl 5 modules | ||
.pm files in lib/, tests in t/ | |||
README in README (ORLY? :-) | |||
Su-Shee | isn't that called IGNOREME now? | ||
jnthn | Only if you don't want it read. | 12:40 | |
If you want people to actually read it, what Su-Shee said. | |||
:-) | |||
12:40
am0c left
|
|||
IllvilJa | Ok. A good way to do this is to peek at an already existing Perl 6 module ;-). Any Perl 6 module at CPAN people could recommend as a "good example" of how to write such modules? | 12:40 | |
12:41
astrojp joined
|
|||
masak | no idea. :P | 12:41 | |
moritz_ | there's no CPAN for Perl 6 (yet) | ||
github.com/moritz/json is a module that works :-) | 12:42 | ||
IllvilJa | Ah, thanks! | ||
pmurias | jnthn: IGNOREME looks like an autogenerated file that needs rm'ing ;) | ||
12:42
pnate2 left
|
|||
moritz_ | just like the files you create so that stupid content trackers don't ignore empty directories | 12:42 | |
jnthn | pmurias: That's *still* more attention than the typical README gets. ;-) | ||
12:43
pnate2 joined
12:44
pnate left
|
|||
IllvilJa | README's are usually read once you get lost. E.g when a build fails, or when there (for some reason) is no Makefile.PL around or when the good old ./configure is missing in some OOS package out there when you try to build. | 12:45 | |
pmurias | OOS = ? | ||
IllvilJa | Classical example: when building the Perl language itself, you don't have any ./configure and immediately you look for a README. | ||
pmurias: it's me having too little coffee... It should be OSS, Open Source Software. | 12:46 | ||
Su-Shee | I actually read READMEs and I exspect to find a detailed explanation in there how to install X and NOT a url like "to see how to install x, click here" | ||
IllvilJa | But when everything is setup "as usual", README's are very low priority. | ||
pmichaud | good morning, #perl6 | ||
phenny | pmichaud: 12:31Z <jnthn> tell pmichaud I've created the branch usenqprx in the Rakudo repo to begin The Big Switchover. :-) | ||
jnthn | morning, pmichaud | 12:48 | |
pmichaud | I would've probably picked a shorter branch name. :) | ||
jnthn | "foo"? ;-) | ||
Or just "x" :-) | 12:49 | ||
Heh, we can rename. :-) | |||
pmichaud | probably "rx" | ||
masak | morning, pmichaud | ||
'the-branch' :) | |||
pmichaud | last night and this morning I've been wondering about how we want to make nqp-rx available for rakudo building | ||
jnthn | pmichaud: heh. So I thought "ah, I'll write an install target into the nqp-rx Makefile.in" :-) | 12:50 | |
12:50
huf joined
|
|||
pmichaud | right | 12:50 | |
but I'm not sure that's the best approach | |||
jnthn | pmichaud: I then realized that, erm...the naive approach blows away the original nqp.pbc ;-) | ||
pmichaud | well, we can call it nqprx when it's in the parrot repo | 12:51 | |
jnthn | True. | ||
diakopter | README_ITS_SHORT_I_SWEAR | ||
pmichaud | but stepping back from that a bit further, I wonder if we want to be rebuilding the nqprx code at all | ||
and I also think the same for Rakudo | |||
(bear with me a bit -- this takes a bit of explaining) | |||
currently when someone gets a copy of the rakudo repo, we compile the sources to produce the .pir files to produce the rakudo executables | 12:52 | ||
...why not just have the .pir already generated in the repo, and compile that? | |||
for developers we'll still have a make target that regenerates the .pir, but for someone who just wants to download and play with rakudo, we could have .pir already generated | |||
jnthn | True, it'd make the build a bit faster. | 12:53 | |
OTOH, every time we check something in, the diff is full of generated crap. | |||
pmichaud | oh, that's true. | 12:54 | |
12:54
lichtkind joined
|
|||
jnthn | Yeah, that irked me a little reading some of the nqp-rx diffs. | 12:55 | |
masak | me too. | ||
pmichaud | well, I've tried to keep the generated checkins separate from the others | ||
jnthn | The bulk of it was - sub_name_with_old_timestamp, + sub_name_with_new_timestamp | ||
pmichaud: Yes, but we'd ahve to do it every check-in here. | |||
Or near enough. | |||
masak | I filtered out the generated files when viewing the diffs. | ||
pmichaud | agreed | ||
so, let's not do that | 12:56 | ||
we might do that for releases | |||
jnthn | Yes, I was about to say that. | ||
pmichaud | so, we need to update rakudo's build system to be able to download + install nqp-rx | ||
jnthn | Keep the repo optimized for development, and the releases optimized for end users. | ||
pmichaud: --gen-nqprx ? :-) | |||
pmichaud | I'm thinking we might also need a NQPRX_REVISION | 12:57 | |
jnthn | oh gee. | ||
But yes, probably. | |||
The other fun is that nqp-rx and Rakudo may have different ideas on required Parrot version. | |||
pmichaud | Rakudo will have to keep track. | ||
jnthn | True. | 12:58 | |
Well, hopefully nqp-rx won't change too often. | |||
masak | lolmoritzblogged! | ||
pmichaud | essentially Rakudo will have to make sure its PARROT_REVISION is always >= the one needed by nqprx | ||
jnthn | Yes. | ||
pmichaud | but after we get past this conversion I suspect nqp-rx won't change significantly | ||
I'd prefer not to have separate --gen-nqprx and --gen-parrot targets | 12:59 | ||
feels like it ought to be --gen-dependencies | |||
(but a better name) | |||
jnthn | --gen-reqs | ||
--dwim | |||
pmichaud | --gen-prereqs, maybe | 13:00 | |
we could just use --gen-parrot as a surrogate, but it does both. | |||
jnthn | True | ||
That way people don't have to get used to a change. | |||
Let's do that for now. | 13:01 | ||
People don't like change. :-) | |||
And nobody will read the docs to find out the new way even if we bother to update them. ;-) | |||
pmichaud | okay, so I'm guessing we update the build/gen_parrot.pl script | 13:03 | |
pmichaud goes to look at the install target | |||
jnthn | pmichaud: It's wrong. ;-) | 13:04 | |
pmichaud | yes, it's not copying the other .pbc files :-| | 13:05 | |
need 4 pbcs | |||
Regex.pbc, P6Regex.pbc, HLL.pbc, and NQP.pbc | |||
pugs_svn | r28955 | pmurias++ | [mildew-js] molds in js/molds are compiled to js | ||
jnthn | oh, all four? | ||
sheesh. | |||
jnthn adds | 13:06 | ||
pmichaud | Regex.pbc -- the regex library. It basically is the replacement for PGE.pbc | ||
jnthn | pmichaud: I'd already discovered that. | ||
pmichaud: Well, one by one ;-) | |||
pmichaud | HLL.pbc -- the HLL library (HLL grammar and HLL compiler). It's basically the replacement for PCT::HLLCompiler and PCT::Grammar | ||
P6Regex.pbc -- the p6 regular expression compiler. It replaces the p6 regex part of PGE.pbc | |||
jnthn | pmichaud: tweaking make install... | 13:07 | |
Going to check it actually, like, works, this time. ;-) | |||
pmichaud | the expectation is that most HLL compilers will use Regex.pbc and HLL.pbc | 13:08 | |
if the compiler wants to compile its own Perl 6 regular expressions, it also uses P6Regex.pbc | |||
jnthn | Ah, OK. | ||
P6Regex has the Perl 6 specific bits? | |||
pmichaud | for compiling p6 regexes, yes. | ||
jnthn | kk | 13:09 | |
So overall, what's our plan? | |||
pmichaud | I don't know yet, I'm working that out now :) | ||
dalek | ok: f7088f8 | duff++ | wip/rp (2 files): [wip] pick a better name for the rpn calculator |
||
pmichaud | need to figure out where to stash thing | ||
*things | 13:10 | ||
jnthn | .oO( git stash ) |
||
pmichaud | perhaps we should move to #parrot for a bit | ||
jnthn | Sure, if it's better there. | ||
pmichaud | since this affects parrot more than rakudo at themoment | ||
jnthn | True. | ||
ok, let's go there. | |||
It's fairly quiet at the moment anyway. :-) | |||
13:14
IllvilJa left
13:16
PerlJam joined
|
|||
dalek | p-rx: 62d1e7b | jonathan++ | build/Makefile.in: Fix make install up a bit. We avoid blowing away the original nqp.pbc and install nqprx.pbc instead. |
13:18 | |
masak | TimToady: re 'a closure in a [string|regex] establishes its own lexical scope' -- I always thought that fell out automatically from the nature of closures. put another way, in what way could the spec be misinterpreted were those added sentences absent? | ||
13:18
lisppaste3 joined
|
|||
moritz_ | masak: pmichaud asked for clarification | 13:18 | |
masak | then maybe pmichaud can answer, too. :) | ||
13:19
fax left
|
|||
pmichaud | in looking at the grammar for STD.pm, it appeared that closures in regexes were not being parsed as normal blocks | 13:19 | |
instead, they were being parsed as statementlists surrounded by curlies | |||
masak | oh. | 13:20 | |
that sounds counter-spec-ish. | |||
pmichaud | which could imply that they're "inline" instead of separate closures. | ||
masak | I thought curlies always implied closure (and thus lexical scope) | ||
pmichaud | they do | ||
I was asking for confirmation in this case | |||
because STD.pm could be interpreted otherwise | |||
masak | right. | 13:21 | |
13:21
maja joined
|
|||
masak | so the spec is the same as before, only (possibly) clearer? | 13:21 | |
pmichaud | yes. | ||
Juerd | Is there a "this regex" scope? | ||
pmichaud | regexes have a scope, yes. They're just methods. | ||
moritz_ | and inside that (...) and [...] introduce some kind of pseudo-scope, no? | 13:22 | |
pmichaud | if you're asking if there's a way to embed stuff in the current scope, it can be done using :my | ||
Juerd | I mean: is there a way to get a variable in the first block in /{ ... } { ... }/ that still exists in the second block, but no longer when the match is done? | ||
Oh, :my in the regex itself? | |||
pmichaud | Juerd: :my | ||
yes. | |||
Juerd | Wow. I hadn't noticed that change. Neat. | 13:23 | |
pmichaud | regex xyz { :my $value; <subrule> { $value = 3 } <submatch2> { say $value } } | ||
Juerd still thinks </subrule></submatch2> :( | |||
I've had way too much HTML. | 13:24 | ||
pmichaud: Clear example; thanks. | |||
13:25
xinming joined
|
|||
[particle] | juerd: you can create a </...> op that complains wildly that you're using Perl, not HTML :) | 13:28 | |
Juerd | Hee :) | ||
jnthn | pmichaud: just nqp.exe now. | ||
Juerd | my @irc-commands = </me /join /part /subject ...>; # nahh ;) | ||
dalek | p-rx: ee72079 | jonathan++ | build/Makefile.in: Install as nqp.exe, not nqprx.exe. |
13:29 | |
PerlJam | one of the things that I find utterly cool but am still having mild difficulty believing is how you can intermingle grammar/class/role/sub/rule | 13:30 | |
pmichaud | jnthn: doesn't the nqp.exe need to be rebuilt using the --install flag ? | ||
jnthn | pmichaud: heh, no idea. | ||
pmichaud: It seems to work... | |||
(from Rakudo source tree) | 13:31 | ||
pmichaud | oh, I guess it's okay | ||
jnthn | oh, maybe because my source tree is still there? | ||
pmichaud | because we're using the install copy of parrot to build nqp | ||
jnthn | Ah | ||
OK, cool | |||
pmichaud: My first step was trying and compile signature.pm (which I don't expect to change much) under nqp-rx ;-) | |||
PerlJam | role R { rule x { "x" } }; grammar Foo does R { rule TOP { ^ <x> $ } }; say Foo.parse("x") ?? "yes" !! "no"; # is just awesome IMNSHO | ||
jnthn | pmichaud: Sadly, it was a fail. ;-) | ||
PerlJam: Just think of a regex/rule/token as being like a sub, just with the contents inside in a different language. | 13:32 | ||
well, s/sub/method/ I guess, but still. | |||
PerlJam | jnthn: yeah, I have no problem with understanding it, it's just that my mind sometimes has a hard time believing that something so wonderful can exist :) | 13:33 | |
jnthn | :-) | ||
pmichaud | jnthn: my first step was going to be to replace rakudo's base grammar | ||
is the current signature.pm written for nqp? | 13:34 | ||
jnthn | pmichaud: Yes. | ||
pmichaud looks | |||
jnthn | pmichaud: And it's fairly small, and we'll need it. | ||
pmichaud: It can get neater with with nqp-rx :-) | |||
pmichaud: Since we now has $!attrs. | |||
pmichaud | I don't know if those work yet... I only put the preliminary code in last night. | ||
hasn't been fully tested. | |||
jnthn | ah, ok | ||
Well, I was working aroudn them anyway. | |||
I agree that we should just replace the base grammer too. | 13:35 | ||
I was kinda hoping you'd do that. ;-) | |||
pmichaud | I will, as soon as I can get the other preliminaries out of the way. | ||
jnthn | OK, great. | ||
pmichaud | also I have a change to the nqp grammar to make | ||
jnthn | OK. | 13:36 | |
I'll try and work out why signature.pm doesn't compile under the new nqp. | |||
pmichaud | where is it defined? | ||
jnthn | src/parser/signature.pm | 13:37 | |
It's the compile time signature object (Perl6::Compiler::Signature) | |||
pmichaud | we might need tests in nqp for slurpy hashes | ||
13:37
nihiliad joined
|
|||
pmichaud | does it compile and fail, or fail to compile ? | 13:38 | |
jnthn | Fail to compile | ||
Unable to parse blockoid, couldn't find final '}' at line 134 | |||
pmichaud: Leave it to me, I'll hunt the issue down. | |||
pmichaud | oh | ||
jnthn | pmichaud: And let you know what I find. | ||
pmichaud | nqp doesn't implement @(...) yet. | ||
jnthn | Ah | ||
pmichaud | feel free to add it :) | ||
jnthn | That'd do it. | 13:39 | |
OK. :-) | |||
dalek | ok: 3939893 | moritz++ | src/regexes.pod: [RX] s/alternative/branch/ in some of PerlJam++'s awesome changes |
||
pmichaud | I even have a test written already | ||
jnthn | I'll do the tests for slurpy hashes too. | ||
Feel free to commit the test. | |||
@(...) is just calling .list on the ... yes? | |||
lambdabot | Unknown command, try @list | ||
jnthn | lambdabot: jump off a cliffe | ||
pmichaud | yes | 13:40 | |
jnthn | kk, I'll do it. :-) | ||
masak | rakudo: sub postfix:<%>($x) { $x * 100 }; say 57% | 13:41 | |
p6eval | rakudo d154eb: OUTPUT«Confused at line 2, near "%"in Main (file <unknown>, line <unknown>)» | ||
jnthn | aww | ||
moritz_ | masak: don't you want to *divide* by 100? ;-) | ||
dalek | p-rx: 646acb7 | pmichaud++ | src/NQP/ (2 files): As promised, the operator precedence table is now defined in the |
||
p-rx: 0772654 | pmichaud++ | t/nqp/35-prefix-sigil.t: Add 35-prefix-sigil to test @(...) . |
|||
jnthn | std: Unable to parse blockoid, couldn't find final '}' at line 134sub postfix:<%>($x) { $x * 100 }; say 57% | ||
p6eval | std 28955: OUTPUT«===SORRY!===Confused at /tmp/c70IsVJY6q line 1:------> parse blockoid, couldn't find final '}' ⏏at line 134sub postfix:<%>($x) { $x * 10 expecting any of: bracketed infix infix stopper standard stopper statement modifier loop | ||
..terminat… | |||
masak | moritz_: not if I want to print the number. | ||
jnthn | oh wtf | ||
diakopter | heh | ||
jnthn | std: sub postfix:<%>($x) { $x * 100 }; say 57% | ||
p6eval | std 28955: OUTPUT«ok 00:03 123m» | 13:42 | |
jnthn | Meh, looks like we need a new and improved grammar engine. | ||
masak | but who'd have the time to write it? | ||
it's a huge project. | |||
jnthn | masak: We need to send it to somewhere where everything is huge. | 13:43 | |
masak: How about Texas? | |||
masak | jnthn: I like your thinking. | ||
[particle] | <<grammar-engine>> | ||
pmichaud | currently NQP's error messages are very LTA | 13:44 | |
"Unable to parse blockoid" generally means "some sort of error inside the block". | |||
we can clean those up as we go, also. | |||
pmurias | diakopter: why did you choose v8 for sprixel? | 13:46 | |
pmichaud | oooh, signature.pm should be a lot nicer now that we have object attributes :) | ||
jnthn | pmichaud: tell me about it. | ||
pmichaud | and pir::opcode | ||
jnthn | *nod* | 13:47 | |
heh, you've not looked at it before now? ;-) | |||
pmichaud | I've been too busy writing nqp-rx | ||
jnthn | mwahaha | ||
My diffs are the unread! | |||
;-) | |||
pmichaud | oh | ||
$var<sigil> := $sigil; | |||
$var<twigil> := $_<twigil>; | |||
$var<itype> := Perl6::Grammar::Actions::container_itype($sigil); | |||
$var<type> := $_<nom_type>; | |||
those are going to have to go away | |||
jnthn | nod | 13:48 | |
pmichaud | ....which means that getting signature.pm to work at the outset might not be the best approach | ||
jnthn | pmichaud: That's fine. | ||
pmichaud: I was more going for, "does it compile under the new nqp and produce something usable?" | |||
pmichaud | okay | ||
that's a useful datapoint, yes | |||
jnthn | e.g. I'd compile just that one file with nqp-rx | ||
pmichaud | I'll be curious if actions.pm compiles under nqp-rx also | 13:49 | |
jnthn | In theory, it should Just Work. It'll give us an idea of how drop-in nqprx is. | ||
pmichaud | (but definitely start with something small) | ||
jnthn | Yes, actions.pm was not really something I considered a starting point. ;-) | ||
pmichaud | it'll also give us some idea of where we need to awesomenize the error messages | ||
(awesomize?) | 13:50 | ||
jnthn | I've been using awesomize :-) | ||
13:52
KatrinaTheLamia joined
|
|||
pmichaud | okay, I guess I now get to figure out how to pull projects from git repositories instead of svn | 13:52 | |
moritz_ | git clone $url | ||
pmichaud | sure | ||
but how to get to a specific revision | |||
moritz_ | and then git checkout $sha1 | ||
pmichaud | and to see if we already have it | ||
and don't roll-back if we're at a valid later version | 13:53 | ||
I'm guessing git rev-parse is in there somewhere | |||
moritz_ | pmichaud: if git log $sha1..HEAD is non-empty, we're ahead of that version | 13:54 | |
pmichaud | moritz_: git rev-parse $sha1 gives me what I need | 13:55 | |
if $sha1 isn't present, git rev-parse returns an error | |||
but more generally... | |||
with parrot, I can check config['revision'] to see what version of Parrot I'm running | |||
moritz_ | note that $sha1 can be present in the index, but the checkout is older | ||
pmichaud | how can I do similar with nqp? or rakudo? hmmmm.... | 13:56 | |
mathw ponders the relative merits of 'awesomeise' and 'awesomify', as his brain can't handle code this afternoon | |||
13:56
payload joined
|
|||
mathw | In semi-related non-awesome error messages, I just got this one: "Windows cannot copy AllServers.sln as it is in use by another program" | 13:56 | |
I'm *copying* it, not moving it! | 13:57 | ||
moritz_ | very exclusive locking? ;-) | ||
masak | very conservative locking. :) | 13:58 | |
mathw | masak: possibly necessary, I wouldn't put it past Visual Studio to keep the solution file in a dodgy state on disc to be honest | 13:59 | |
pmichaud | I wonder if nqp-rx (and other similar projects) want to be maintaining their own revision numbers | ||
instead of relying on the vcs to do it | 14:00 | ||
mathw | what's wrong with the vcs's numbers? | ||
pmichaud | (or as another tracker parallel to the vcs) | ||
for git, they're not sequential | |||
masak | pmichaud: I thought nqp-rx would eventually get incorporated into mothership Parrot. | ||
14:00
meppl joined
|
|||
pmichaud | masak: I'm not sure that will happen. | 14:00 | |
mathw | well git doesn't really do revision 'numbers' | ||
masak | pmichaud: oh, interesting. | ||
moritz_ | pmichaud: git-describe can give some sequentiality back | ||
pmichaud | masak: and I continue to cross my fingers that parrot will move to git, which means we'll have to resolve the issue anyway :) | ||
moritz_ | no, it's spelled differently... | 14:01 | |
git describe HEAD | |||
2009-10-31-gd154eb9 | |||
that's the last tag name | |||
14:01
alester joined
|
|||
moritz_ | followed by the number of commits since then | 14:01 | |
and a short SHA1 | |||
masak | just 'git describe' works here. | ||
pmichaud | the tricky part is coming up with a number that can be easily embedded in executables | 14:02 | |
and then can be tested to say "do you have a sufficiently advanced version" | |||
moritz_ | masak: somehow the git-$foo form of my commands stopped working | ||
now I need spaces | |||
masak | moritz_: aye, that's from git 1.5 or so. | ||
pmurias | pmichaud: requiring the exact version might be best till nqp-rx gets stable enough | 14:03 | |
pmichaud | pmurias: that becomes a big pain for devels, though | ||
diakopter | pmurias: b/c it's the fastest js engine, it's embeddable into perl, and it's MIT-ish licensed | ||
pmichaud | because it means whenever I make a change to nqp-rx locally I have to go bump my revisions to get it to compile | ||
otherwise my build scripts end up inadvertently rolling back to a prior commit | 14:04 | ||
mathw | hmm okay that is tricky | ||
pmichaud | number of commits since tag is interesting | ||
assuming that we do monthly releases as 0, 1, 2, 3, 4, etc. (same as rakudo) | 14:05 | ||
mathw | if your tags increase in a sortable manner, that would provide a comparable chunk of information | ||
jnthn | pmichaud: Any idea why adding this caused a "Confused at ..." error? | ||
token circumfix:sigil { <sigil> '(' ~ ')' <EXPR> } | |||
pmurias | diakopter: good, i used for mildew-js v8 because it was what sprixel did, but now i have a solid reason ;) | ||
jnthn | nqp: token circumfix:sigil { <sigil> '(' ~ ')' <EXPR> } | ||
p6eval | nqp: OUTPUT«Confused at line 1, near "token circ"current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)» | ||
pmichaud | then internal releases could be 0.1, 0.2, 0.3, ... 0.n where "n" is the number of commits since the monthly release | 14:06 | |
jnthn: token circumfix:sym<sigil> { ... } | |||
mathw | pmichaud: actually at my work we do a similar sort of thing, only we count how many nightly builds. We end up with big numbers, but we can tell exactly where something's from. | ||
pmichaud | nqp doesn't understand the circumfix:sigil sugared form yet | 14:07 | |
jnthn | pmichaud: oh. is that ENQPNOTPERL6 or ESTDISWRONG? :-) | ||
ah, ok | |||
moritz_ | does it have to be 'sym'? | ||
pmichaud | moritz_: yes. | ||
mathw has to brush up on grammars again | |||
jnthn | mathw: Same! | ||
pmichaud | moritz_: at least, I haven't seen anything that indicates otherwise. | ||
moritz_ | pmichaud: I haven't seen any indication that it must be called :sym | 14:08 | |
jnthn | pmichaud: yes, that did it. | ||
moritz_ | pmichaud: actually :sym never appears anywhere in the spec | ||
pmichaud | moritz_: it's in STD.pm | ||
moritz_ | so I thought one can add arbitrary colonpairs to the long name of a token | ||
pmichaud | you can have arbitrary colonpairs in the longname, but only :sym is recognized for <sym> iiuc | 14:09 | |
moritz_ | wfm, as long as we have spec | ||
pmichaud | STD.pm:63 | ||
and category:name is syntactic sugar for category:sym<name> | |||
which further indicates that :sym<...> is "special" | 14:10 | ||
moritz_ | ok | ||
PerlJam | moritz_: just change the spec however you like ;) | ||
mathw doesn't understand what these things are for | 14:11 | ||
frettled | mathw: great, that makes two of us. :) | ||
jnthn | pmichaud: STD has circumfix:sigil as a token, but the test you committed expects to be able to write @( ... ) as well as @(...) | 14:12 | |
moritz_ | I've tried to explain that in perlgeek.de/en/article/mutable-gram...for-perl-6 | ||
mathw | frettled: I seem to think it's got something to do with protoregexes, but I don't grok those either, so... | ||
pmichaud | jnthn: checking | ||
std: @( 3 + 4 ) | |||
p6eval | std 28955: OUTPUT«ok 00:01 108m» | ||
jnthn | oh | ||
moritz_ | mathw, frettled: they are needed to add branches to an alternative | ||
pmichaud | I think STD presumes that <EXPR> will eat ws | ||
jnthn | I know why | ||
well now | 14:13 | ||
moritz_ | without rewriting the alternative | ||
jnthn | std has <semilist> | ||
moritz_ | (through subclassing) | ||
pmichaud | right | ||
jnthn | But we don't ahve <semilist> in NQP. | ||
pmichaud | we can add it | ||
jnthn | I'd just gone with EXPR | ||
OK | |||
pmichaud | or just put <.ws> in front of <EXPR> | ||
14:13
huf left
|
|||
pmichaud | latter might be simpler for the moment | 14:13 | |
NQP is unlikely to support semilists | |||
or, perhaps best is to define | 14:14 | ||
rule semilist { <EXPR> } | |||
jnthn | ah, I like that option | ||
I'll do that. | |||
pmichaud | and then use <semilist> in the appropriate places | ||
oh | |||
even better | |||
frettled | moritz_: Yes, that web page was actually clarifying. | 14:15 | |
moritz_ | great | ||
pmichaud | rule semilist { [ <statement><.eat_terminator> ]? } | ||
or still better | |||
mathw | moritz_: I've read that before, but forgot it. Now I know it again, for the next few days at least. | ||
pmichaud | rule semilist { <statement>? } | ||
moritz_ | mathw: and when you ask again in a week, I'll point you to that page again ;-) | ||
pmichaud | that last one is likely to be most std-like | 14:16 | |
jnthn | pmichaud: I'll shoot for that one. | ||
moritz_ | mathw: that way I feel I've written something useful ;-) | ||
frettled | moritz_: \o/ | ||
alester | What is Lewis' nick? | ||
14:16
frettled sets mode: +o moritz_,
frettled sets mode: +o mathw
|
|||
[particle] | quietfanatic | 14:16 | |
alester | is he quietfanatic? | ||
I had no idea. | |||
moritz_ | thought so to | 14:17 | |
o | |||
[particle] | not-so-quiet anymore | ||
pmichaud | jnthn: if you want to just do rule semilist { <statement> } for now, that might also be best | ||
alester | well rt.perl.org/rt3/Ticket/Display.html?id=70119 would suggest it :-) | ||
I just thought it was cool that he's working on this. | |||
mathw | moritz_: You have indeed written something very useful. | 14:18 | |
jnthn | pmichaud: OK. I have it as <EXPR> and it passes the tests. Will change to <statement> now, re-test and commit. | 14:19 | |
14:19
moritz_ sets mode: +oo alester [particle]
|
|||
masak | Lewis/quietfanatic also identifies himself as 緑 on Twitter. means 'green'. | 14:20 | |
we're all green wrt Perl 6, I guess. | |||
except for that TimToady guy. he has almost 10 years of experience. :P | 14:21 | ||
moritz_ is technicoloured wrt Perl 6 | |||
[particle] | i feel plaid | ||
jnthn sometimes looks green when he reads the spec of things he needs to implement | |||
masak | jnthn: then the torment is working. :P | ||
jnthn | pmichaud: omg is teh win, committing. :-) | 14:22 | |
pmurias | who is Lewis/quietfanatic? | 14:23 | |
moritz_ | just another perl hacker ;-) | ||
masak | pmurias: he's the one who wrote GameBase! \o/ | 14:24 | |
frettled | moritz_: what, you're green in Technicolor? | ||
jnthn | pmichaud: Whee. It parses/compiles signature.pm now. | ||
masak | also, if Perl succession is dynastic, I guess quietfanatic will be around when we start drafting Perl 7... | 14:25 | |
dalek | p-rx: 0bee741 | jonathan++ | src/NQP/ (2 files): Support contextualizers; passes 35-prefix-sigil.t. |
||
14:25
frettled sets mode: +o masak
|
|||
frettled | heh | 14:25 | |
masak | mwhahaha, whoz op? :> | ||
frettled | whoops | ||
masak waves op wand around like Mickey Mouse did once | 14:26 | ||
jnthn | masak: Line 35 of bind.c was just for you. :-) | 14:27 | |
masak | checking... | ||
*lol* | 14:28 | ||
jnthn | pmichaud: signature.pm compiled under nqp-rx passes all sanity tests and benchmarks. Nice work! | 14:30 | |
pmichaud | whoa | ||
really? | |||
jnthn | ya rly | ||
pmichaud | that's.... amazing. | ||
jnthn | Yup, just needed the contextualizers patch. | 14:31 | |
pmichaud | yes.... yet another 12-line patch :) | ||
jnthn | :-) | ||
I'll commit the change to the makefile in the branch to compile that file under nqp-rx. | 14:32 | ||
:-) | |||
14:32
envi^home left
|
|||
pmichaud | okay | 14:32 | |
so, are you managing nqp builds manually at the moment, or ... ? | 14:33 | ||
jnthn | pmichaud: Yeah | ||
pmichaud: All I did was: github.com/rakudo/rakudo/commit/98d...ae7461c8fd | |||
And relied on having nqp make install'd. | |||
OTOH, at least you know that this + make install'd nqp-rx work together. | 14:34 | ||
So "just" need the --gen-parrot to do the work to install it if it's missing. | |||
pmichaud | yes | ||
jnthn | ok, just for fun... | ||
pmichaud | I'm thinking I like the release.commits numbering scheme | ||
14:35
huf joined
|
|||
PerlJam | pmichaud: just use a timestamp :) | 14:36 | |
jnthn | It sounds like it'll work fine. | ||
14:36
envi^home joined
|
|||
pmichaud | oh, timestamp isn't bad, either | 14:36 | |
14:36
NorwayGeek_ joined
|
|||
jnthn | pmichaud: Just out of curiosity, I tried to compile the current actions.pm with nqp-rx. We make it to line 11. | 14:36 | |
Confused at line 11, near "%?CLASSMAP" | 14:37 | ||
pmichaud | nqp-rx doesn't understand the '?' sigil yet | ||
er, twigil | |||
that's a one-char fix, if you want to fix it :) | |||
jnthn | heh, why not | ||
This almost feels like karma whoring. | 14:38 | ||
pmichaud | PerlJam: perhaps "time-of-last-commit" ? | ||
jnthn | :-) | ||
PerlJam | pmichaud: yes. | ||
(I'm biased a bit towards time-based release these days) | 14:39 | ||
pmichaud | I'm hugely biased towards it these days | ||
I've also been thinking that our linux users group needs monthly release managers, where "release" == "meeting" | |||
mathw | time is good | ||
time increases monotonically, and it's easy to relate it to... well. Times. | |||
jnthn | Plus everyone already understands it. Kinda. :-) | 14:40 | |
PerlJam | mathw: except near a black hole ;) | ||
mathw | PerlJam: no it still increases there, just more slowly | ||
jnthn | Meh, yeah, but it sucks there. | ||
PerlJam | mathw: right, no longer monotonically | ||
mathw | PerlJam: and I doubt people that close to a black hole are worried about our release schedule | ||
PerlJam | jnthn++ | ||
mathw | PerlJam: monotonic doesn't require a constant rate | ||
pmichaud | I have it on good authority that black holes do not suck. :) | 14:41 | |
PerlJam | mathw: Are you absolutely sure that time moves in the same direction all the time near a black hole? | ||
pmichaud | but I agree that they tend to put things under a lot of pressure :) | ||
mathw | PerlJam: I believe that's what's thought to happen | ||
PerlJam: however, I may be mistaken. | 14:42 | ||
PerlJam | mathw: does it really matter wrt perl6? :) | ||
mathw | No, probably not | ||
Perl 6 is not yet of interstellar interest | |||
dalek | p-rx: 217bb06 | jonathan++ | src/NQP/Grammar.pm: Support ? twigil. |
||
pmichaud | anyway, we'll assume that time is monotonically increasing for now, but I'm sure a future spec revision will change that. | ||
PerlJam | I bet when we meet aliens though, perl 6 programmers will have an advantage in communicating with them. | 14:43 | |
jnthn | pmichaud: In that case, we need to make NQP's error messages less black-hole-ish. :-) | ||
erm, more black-hole-ish | |||
erm, less suckful. whatever. | |||
mathw | jnthn: I think let's stick with awesomeness as a measure for error messages | ||
PerlJam | mathw++ indeed | ||
jnthn | Unable to parse blockoid, couldn't find final '}' at line 447 # well, better than failing at line 11 ;-) | 14:44 | |
14:44
justatheory joined
|
|||
PerlJam | "blockoid"? | 14:45 | |
jnthn | nqp: my $sub; | ||
p6eval | nqp: ( no output ) | ||
jnthn | nqp: my $sub; $sub() | ||
p6eval | nqp: OUTPUT«Confused at line 1, near "$sub()"current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)» | ||
masak | PerlJam: welcome to the world of Perl 6 parsing terms. | ||
jnthn | pmichaud: ^^ that one | ||
pmichaud | jnthn: I'm not sure that postcircumfix:<( )> is implemented. | 14:46 | |
jnthn | pmichaud: oh | ||
that'd do it | |||
pmichaud: Should it be? | |||
pmichaud | yes. | ||
jnthn | kk | ||
PerlJam | jnthn: are you just going to keep implementing stuff until it compiles? | ||
jnthn | Heh, actions.pm is providing a nice test case. ;-) | ||
PerlJam: Well, that or pmichaud tells me to do something else. :-) | |||
mathw thinks 'keep implementing stuff until it compiles' is a great plan | |||
pmichaud | jnthn: we'll want tests for that also | 14:47 | |
jnthn | pmichaud: Got any up your sleave this time? | ||
pmichaud | jnthn: nope | ||
jnthn | Aww noes. I'll have to write tests! | ||
pmichaud | my $sub = { ok(1, "works"); } | ||
$sub() | |||
er, s/=/:=/ | 14:48 | ||
jnthn | phew, I don't have to write tests | ||
:-) | |||
pmichaud | I have no idea if that will actually work. :-) | ||
jnthn | nqp: my $sub = { ok(1, "works"); } # well, does this bit... | ||
p6eval | nqp: OUTPUT«Confused at line 1, near "my $sub = "current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)» | ||
jnthn | fail | ||
oh | |||
pmichaud | := | ||
jnthn | nqp: my $sub := { ok(1, "works"); } # well, does this bit... | ||
p6eval | nqp: ( no output ) | ||
jnthn | Yes, I copy-pasted and ignored the correction. :-/ | ||
ok, that works, should be eays. | 14:49 | ||
pmichaud | nqp: my $sub := { ok(1, 'works'); }; say $sub; | ||
p6eval | nqp: OUTPUT«Confused at line 1, near "say $sub;"current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)» | ||
pmichaud | nqp: my $sub := { ok(1, 'works'); }; say($sub); | ||
p6eval | nqp: OUTPUT«_block14» | ||
jnthn | \o/ | ||
pmichaud | I absolutely need to implement listops in nqp | ||
not hard, just haven't done it yet. | |||
mathw | If you don't there are going to be a lot of confused NQPs around | 14:50 | |
while anybody working on it tries to retrain their fingers to write say() | 14:51 | ||
pmichaud | well, at the time we originally created nqp, parsing listops was painful | ||
it's much less painful now, so I'm okay with adding it | |||
mathw | \o/ | 14:53 | |
I think that just shows how far you've come with NQP-rx | |||
14:54
gfldex joined
14:56
tylerni7 joined,
iblechbot left
|
|||
pmichaud | partially that, but also the grammar details are much improved now | 14:57 | |
(for p6 syntax) | |||
PerlJam: so, just a unix timestamp, perhaps? | 14:58 | ||
or should we make it human-readable? | |||
PerlJam | human readable for sure | ||
humans find comfort in recognizing patterns :) | 14:59 | ||
jnthn | pmichaud: Whee. Now we get a lot further through actions.pm :-) | 15:00 | |
pmichaud: Guess what the error is? ;-) | |||
oh noes, github has epic fail | |||
pmichaud | what's the error? | 15:02 | |
jnthn | pmichaud: You have to ask? :-) | 15:03 | |
Unable to parse blockoid, couldn't find final '}' at line 2416 | |||
pmichaud | oh. | ||
jnthn hasn't actually seen nqp give another erorr other than being unable to parse a blockoid... :-/ | |||
Oh no, I got Confused once. :-) | |||
pmichaud | the PIR q<...>; form is no longer supported | 15:04 | |
jnthn | oh | ||
pmichaud | it's now Q:PIR { | ||
jnthn | good catch | ||
pmichaud | (easy catch, I just looked at line 2416 and said "what's wrong with this...?" ) | 15:05 | |
jnthn | :-) | ||
15:05
pmurias left
|
|||
jnthn | nqp: if 42 { say("lol") } else{ say("wtf") } | 15:07 | |
p6eval | nqp: OUTPUT«Confused at line 1, near "if 42 { sa"current instr.: 'parrot;HLL;Grammar;panic' pc 359 (src/cheats/hll-grammar.pir:197)» | ||
15:07
iblechbot joined
|
|||
jnthn | nqp: if 42 { say("lol") } else { say("wtf") } | 15:07 | |
p6eval | nqp: OUTPUT«lol» | ||
15:07
Psyche^ joined
|
|||
jnthn | pmichaud: nqp is correct here? | 15:07 | |
pmichaud | in terms of the space required after 'else' ? | 15:08 | |
jnthn | pmichaud: ye | ||
moritz_ | std: if 42 { say("lol") } else{ say("wtf") } | ||
jnthn | s | ||
pmichaud | what moritz++ wrote | ||
p6eval | std 28955: OUTPUT«===SORRY!===Missing semicolon or comma after block at /tmp/RPFVgsmI0e line 1:------> if 42 { say("lol") } ⏏else{ say("wtf") } expecting any of: infix stopper statementUndeclared routine: else used at line 1FAILED 00:02 | ||
..108m» | |||
jnthn | OK, good, then actions.pm bug. | ||
jnthn adds a space and...nqp-rx accepts and compiles actions.pm. | |||
pmichaud | whoa | 15:09 | |
jnthn | We don't know the output was good yet. ;-) | ||
pmichaud | I'm... doubly-shocked | ||
thus far my experience with nqp-rx has been one of | |||
(1) try something a bit ambitious, it Just Works | |||
(2) try something a bit ambitious, fix a minor bug or two and it Just Works | 15:10 | ||
(3) ...there is no #3 | |||
jnthn | pmichaud: Bad news. The producing gen_setting.pir is bad. | ||
error:imcc:undefined identifier 'outerlex' | |||
in file 'src/gen_setting.pir' line 718 | |||
pmichaud | ...gen_setting? | ||
jnthn | pmichaud: The gen_setting.pir produced by running Rakudo with actions.pm compiled under nqp-rx. | 15:11 | |
pmichaud | I'd be very shocked if it works. | ||
jnthn | I'm just impressed it not only parsed actions.pm and produced valid code, but that it made it far enough to produce PIR output for the entire setting. | ||
Even if that PIR appears to have some issues. | 15:12 | ||
pmichaud | oh | ||
one thing to keep in mind (might not make a difference) is that subs in NQP default to 'my' scope instead of 'our' | |||
15:12
masq joined
|
|||
masq | Hey. | 15:12 | |
jnthn | I'll spend a moment to see if it's anything obvious. | 15:13 | |
pmichaud | okay | ||
I think I may back-burner the "automatically download and compile NQP" for a bit so I can work on other cool things | |||
jnthn | wfm | ||
oh, well, this looks wrong | 15:14 | ||
mathw | jnthn: that is awesome | ||
jnthn | new $P890, 'String' | ||
set $P890, " .local pmc outerlex" | |||
$P890(" getinterp $P0", " set outerlex, $P0[\"outer\";\"lexpad\";1]") | |||
mathw | jnthn++ | ||
pmichaud++ | |||
(my job today is encouragement and cheerleading, it seems) | |||
pmichaud | looks like something didn't inline properly, perhaps? | ||
jnthn | yeah | ||
the code in question is: | |||
$block[0].push( PAST::Op.new( | |||
:inline(' .local pmc outerlex', | |||
' getinterp $P0', | |||
' set outerlex, $P0["outer";"lexpad";1]'))); | |||
Something with colonparis and lists within them? | 15:15 | ||
pmichaud | yes | ||
definitely | |||
parsing of colonpairs changed | |||
jnthn | ah | 15:16 | |
Do we need to write our code differently in actions.pm, or fix NQP? | |||
e.g. which is wrong? | |||
pmichaud | I think it's just a minor bug somewhere | ||
jnthn | ah, ok | ||
pmichaud | actions.pm is right | ||
jnthn | OK, cool. | ||
pmichaud | i.e., that should continue to work | ||
jnthn | Well, that's one more thing we know to fix. :-) | ||
pmichaud tests | 15:17 | ||
15:17
NorwayGeek_ left
|
|||
jnthn | nqp: sub foo(:@x) { for @x { $_.say() } }; foo(:x(1,2,3)) | 15:17 | |
p6eval | nqp: OUTPUT«too many positional arguments: 3 passed, 3 expectedcurrent instr.: 'foo' pc 30 (EVAL_1:0)» | ||
pmichaud | here's the problem | 15:18 | |
jnthn | error fail! | ||
pmichaud | (nopasting) | ||
mathw | Wow | 15:19 | |
That's quite an error message | |||
jnthn | Ah, foo(:x(1,2,3)) ends up becoming $P13 = "foo"(1, 2, 3) | ||
pmichaud | nopaste.snit.ch/18507 # colonpair fail | ||
15:20
NorwayGeek joined
|
|||
jnthn | pmichaud: yup, hmm. | 15:20 | |
pmichaud | might look at the actions for colonpair and arglist in nqprx | ||
jnthn | aye, looking :-) | 15:21 | |
pmichaud | bbiab | ||
jnthn | ah | 15:22 | |
if $expr.name eq 'infix:<,>' { | |||
for $expr.list { $past.push($_); } | |||
} | |||
else { $past.push($expr); } | |||
15:23
Psyche^ is now known as Patterner
|
|||
jnthn | And of course, circumfix with a comma list in it produces infix:<,> | 15:24 | |
Of course, changing it to "if $expr.name eq 'infix:<,>' && !$expr.named {" fixes it. | 15:28 | ||
But I've a feeling that it's, well, wrong... | |||
15:32
payload left
15:33
payload joined
|
|||
jnthn | ah well, it makes gen_setting.pir be something that compiles. ;-) | 15:35 | |
15:38
nihiliad left
|
|||
mathw | jnthn: I would have thought that if it finds a comma list inside a circumfix it could give you a context in which to play with it which is, well, inside the circumfix | 15:38 | |
moritz_ heads off for the weekend | |||
TTFN guys | 15:39 | ||
and gals | |||
mathw | moritz_: bye! have fun! | ||
PerlJam | moritz_: have a great weekend! | ||
moritz_ | thanks | ||
pmichaud | back | ||
15:39
tylerni7 left
|
|||
TimToady | now that moritz_ is leaving, I can come back too :) | 15:39 | |
pmichaud | the !$expr.named is fine for now | 15:40 | |
PerlJam | TimToady: is there something like a TimToady exclusion principle? | ||
mathw | PerlJam: TimToady has kidnapped moritz_ and is impersonating him, thus we can only ever see one of them at once | 15:41 | |
PerlJam | TimToady: no two perl6ians may occupy the same #perl6 simultaneously | ||
TimToady | .oO(I don't know if Heisenberg was here, but Pauli wasn't with him.) |
||
pmichaud | jnthn: out of curiosity, which is faster at compiling actions.pm? (It won't surprise me if it's slower... there are still some big optimizations to be done) | ||
(nqp-parrot versus nqp-rx) | |||
jnthn | pmichaud: I didn't time them. | 15:42 | |
15:42
KyleHa joined
|
|||
jnthn | pmichaud: I think it may well be faster in the branch. | 15:43 | |
pmichaud | that would be awesome if true | ||
jnthn | pmichaud: Well, it makes it through the compile now, so we can time it. | ||
pmichaud: Actually, Rakudo fully builds now. Has a fail on startup, but compiles. | |||
pmichaud | I thought it was already making it through actions.pm ? | ||
ah. | |||
jnthn | pmichaud: no, no, it makes ir all the way through the compile | 15:44 | |
We get a perl6.exe | |||
With latest tweaks (all pushed). | |||
It's just when we run that, it fails. | |||
Actually I think I know what's wrong. | |||
our %?CLASSMAP; | |||
%?CLASSMAP<Object> := 'Perl6Object'; | |||
%?CLASSMAP<Array> := 'Perl6Array'; | |||
%?CLASSMAP<Hash> := 'Perl6Hash'; | |||
%?CLASSMAP<Pair> := 'Perl6Pair'; | |||
I think this isn't getting run, or set up properly. | 15:45 | ||
pmichaud | oh, yes | ||
that's correct | |||
mainline isn't automatically :load :init any longer | |||
easy fix: | |||
INIT { | |||
%?CLASSMAP<Object> := 'Perl6Object'; | |||
... | |||
} | |||
jnthn | trying | 15:46 | |
the our inside there too, yes? | |||
pmichaud | you need it on the outside as well | ||
look at the beginning of src/NQP/Actions.pm for an example | |||
jnthn | kk | ||
pmichaud | actually, the Actions.pm in NQP may still have the old sub INIT() { ... } form, which won't work | ||
you should be able to have just one our on the outside | 15:47 | ||
15:47
tylerni7 joined
|
|||
pmichaud | but best bet is to put one both outside and inside | 15:47 | |
jnthn | Yeah, it does sub INIT() { | ||
Anyway, just did INIT. | |||
Compiling... | |||
still compiling (the setting...) | 15:49 | ||
plz say this gets faster ;-) | |||
pmichaud starts a file on "differences between old and new NQP" | |||
jnthn | Good plan. | ||
heh, now we make it through startup. | |||
Sadly, nothing works, but we can start up. | 15:50 | ||
15:50
IllvilJa joined
|
|||
pmichaud | I'm amazed we get even as far as startup. | 15:50 | |
15:50
renormalist joined
|
|||
jnthn | Making it through startup is a big deal. | 15:51 | |
Startup is super hard. | |||
Given that all the trait applications give multi-dispatch and a bunch of OO stuff quite a working out. | 15:52 | ||
pmichaud | if you don't mind, I think I'll start a new branch for the conversion, though. "ng" | ||
jnthn | ng? | ||
pmichaud | "next generation" | ||
"new grammar" | |||
15:52
mberends joined
|
|||
pmichaud | something like that :) | 15:52 | |
jnthn | "need gin" | ||
pmichaud | that too | ||
first step will be to rip up the makefile :) | 15:53 | ||
jnthn | pmichaud: OK, we can probably toss mine. | ||
pmichaud | keep it around | ||
jnthn | pmichaud: Sure sure. I didn't do much in it. | ||
pmichaud | it'll take me a bit to get the makefile and new grammar in place | ||
made even more difficult by github being down :-( | |||
oh, it's up again! | |||
jnthn | it's up for at least git push | 15:54 | |
pmichaud: OK, I think it's best if I leave you to that. | |||
since (a) you know what to do and (b) it doesn't really parallelize. | 15:55 | ||
Plus I can run an errand to...oh shi...it's closed. | |||
Ah well, I'll stay here and hack on something then. :-) | 15:56 | ||
Tene | ... I just remembered why I was waiting for contextuals in Rakudo. | 15:57 | |
my html-generation library currently uses a global variable. I wanted to move it to use a contextual instead. | |||
pmichaud | Rakudo now has contextuals. | ||
NQP has contextuals also, although they only look up the dynamic scope and not a global scope. | 15:58 | ||
Tene | I like the feeling of projects queueing up for me again. :) | ||
15:58
Exodist_ joined
15:59
Exodist_ left
|
|||
jnthn | pmichaud: Added a couple of tests for pos/named slurpies in nqp-rx. | 16:02 | |
Gotta love the Twitter status page. | 16:03 | ||
erm, github status on twitter | |||
mathw | Rakudo compiles all the way through with nqp-rx??? | ||
jnthn | "We are now experiencing problems with our backends...." | ||
mathw falls over | |||
jnthn | mathw: Yes. Enough for perl6.exe to start up even. | ||
mathw | That is FAST | ||
jnthn | mathw: However, nothing works beyond that. | ||
mathw | Yeah but | 16:04 | |
As you said, startup's a big deal | |||
jnthn | But still. | ||
Yes | |||
I'm surprised, and impressed. | |||
pmichaud++ | |||
mathw | I'm enormously impressed | ||
Not only does pmichaud demonstrate the awesomeness of Parrot and his giant brain by writing nqp-rx in the time he did, you then go and demonstrate the awesomeness of Rakudo and your giant brain by swapping Rakudo over to it with far less initial pain than I would have expected. | 16:05 | ||
this whole Parrot + PCT toolchain business is really fantastic technology | |||
if I was talking about this at work, someone would probably use the word 'leverage' at this point | 16:06 | ||
And I just know that I have to write a compiler | |||
16:08
envi^home left
|
|||
masak | pmichaud++ jnthn++ | 16:13 | |
16:15
cdarroch joined
|
|||
jnthn | pmichaud: Benchmakred 'em for ya. | 16:17 | |
pmichaud: Not much between them. | |||
pmichaud | okay, that's good | ||
jnthn | Old: 31 seconds | ||
New: 34 seconds | |||
pmichaud | that's *really* good | ||
jnthn | Which to say PGE got optimizations, and this is shiny and new and unoptimized... | ||
pmichaud | the new regex engine is still doing a few number of method calls that can be inlined | ||
I'll be eager to sic the profiler on the engine :) | 16:19 | ||
actually, if you wanted to profile compiling actions.pm, something might pop out quickly | |||
jnthn | pmichaud: That may...take a while... ;-) | ||
pmichaud | it might | ||
jnthn | pmichaud: Maybe I can do signature.pm though? | ||
pmichaud | could profile.... right | ||
at least we know that the new engine isn't significantly slower than the previous one | 16:20 | ||
which, considering that it's now going through PAST+POST to generate code (instead of just straight to PIR as PGE was doing), is saying a fair bit also | 16:21 | ||
jnthn | Yes, quite. | 16:23 | |
I've run the profiler, but it produced 240 MB of output, so pprof2cg.pl may take a little while. :-) | 16:24 | ||
jnthn makes a cuppa | |||
16:24
payload left
16:32
jan_ joined
|
|||
jnthn | pmichaud: You're not going to believe this. | 16:32 | |
pmichaud: The reason we were crashing when I tried anything in the repl was... | 16:33 | ||
my $?FILE := Q:PIR { %r = find_caller_lex '$?FILES' }; | |||
$main.unshift(PAST::Op.new(:inline(".annotate 'file', '" ~ $?FILE ~ "'"))); | |||
In the new NQP, this came back with a null PMC in $?FILE somehow - before it musta somehow auto-vivified or otherwise coped with the null string in the concat. | |||
pmichaud: Anyway, with those commented out, it works. | 16:34 | ||
pmichaud: Further, we pass *all* of the sanity tests. | |||
pmichaud | wow | ||
alester | Dial up the sanity! | ||
"You must be this sane to ride this project." | |||
jnthn | alester: oh crap, I best go off it... | ||
*get | 16:35 | ||
pmichaud: In other news, pprof2cg.pl is still working on the profiling output <grin> | |||
TimToady | "...this sane and no saner..." | ||
16:35
nihiliad joined
16:40
TopoMorto joined,
chappar joined
16:43
eternaleye left,
dalek joined
|
|||
jnthn | Just for kicks, I'm running the spectests with actions.pm compiled with nqp-rx | 16:43 | |
pmichaud | that should be interesting :) | 16:44 | |
jnthn | oh, profiler postprocessor finally gave me something | ||
pmichaud | jnthn: in the nqp-rx install, do you just install the .pbc files? not the exec? | ||
no, I see the exe | 16:45 | ||
hmmm | |||
oops! | |||
Makefile-spaces-are-not-tabs-fail | |||
[particle] | gah | ||
jnthn | pmichaud: oops | 16:47 | |
pmichaud: Yes, this is why I shouldn't be allowed near makefiles ever. | |||
16:48
lichtkind_ joined
|
|||
Tene | So... parrot implementation of Make that all HLLs and other parrot-reliant projects can use on all parrot-supported platforms? | 16:48 | |
or a make-alike build/install tool? | 16:49 | ||
pmichaud | my experience is that any tool-that-is-not-make isn't used unless it also supports all of make's features | 16:50 | |
jnthn | pmichaud: I'm probably reading the profile wrong, but it somehow looks here like we spend a lot of time in package_declarator. | ||
pmichaud | in package_declarator itself, or in things that it calls also? | ||
jnthn | Well, that's what I'm wondering | ||
But here's what's odd | |||
pmichaud | because nearly the entire compilation will be done in package_declarator | ||
16:50
chappar left
|
|||
jnthn | Yes | 16:50 | |
But if the Called column is "how many times did we call this" | 16:51 | ||
Then we call Cursor;!protoregex 3,863 times. | |||
pmichaud | sure | ||
jnthn | And Gramar;term:sym<package_declarator> 940 times. | ||
pmichaud | that's expected | ||
16:51
payload joined
|
|||
jnthn | Is that second one expected too? | 16:51 | |
Given there's only one instances of "module" in the file? | 16:52 | ||
colomon | I hate to interrupt the awesomeness going on here, but can someone quickly tell me what the p5 equivalent of <a b c> is? | ||
pmichaud | that one is less expected | ||
16:52
lichtkind left
|
|||
jnthn | qw(a b c) I think. | 16:52 | |
pmichaud | colomon: qw(a b c) | ||
16:52
lichtkind_ is now known as lichtkind
|
|||
colomon | jnthn++, pmichaud++ # Thanks! (Stupid maintenance of old code.) | 16:52 | |
pmichaud | well, term:sym<package_declarator> will be called every time there's a term that might be a package declarator | ||
jnthn | Anyway, Cursor;!protoregex seems to be where we spend most time. | ||
pmichaud: Oh? I thought protoregexes avoided that... | 16:53 | ||
pmichaud | !protoregex gets called anytime we're in a protoregex | ||
diakopter adds p5eval as a wife for jseval in sprixel's bed | |||
pmichaud | they do avoid that, if the prefixes are set up properly | ||
jnthn | Ah. | ||
16:54
am0c joined
|
|||
pmichaud | but if a regex ends up with a null prefix, it gets called for every possible string | 16:54 | |
so the question becomes, is there an issue with package_declarator | |||
looking | |||
diakopter | mberends: ^^ p5eval, oh boy | 16:55 | |
jnthn | The thing we call most - which is probably no surprise either - is Cursor;!cursor_start (just short of 15,000 times) | ||
mberends | diakopter: ??? | ||
pmichaud | right | ||
jnthn | However it doesn't appear to be the biggest use of time. | ||
pmichaud | we call cursor_start every time we enter a new regex | ||
jnthn | nod | ||
diakopter | mberends: just like invocations of jseval (in the .pm setting, or in Perl 6 input source), except evaluated by perl | 16:56 | |
jnthn | pmichaud: I don't think this can be inclusive of things called by the way. Otherwise surely Compiler;main would be right at the top. | ||
And it's not - it's way down. | |||
So if I'm reading this right, not only are we calling package_declarator a lot of times, but it's also really ratehr pricey when we do. | 16:57 | ||
pmichaud | well, it makes sense that package_declarator is getting called a lot if we're getting into term:<package_declarator> | ||
looking | |||
mberends | diakopter: ah, missed the 'wife' remark | 16:58 | |
pmichaud | something must be happening with the package_declarator prefixes | 16:59 | |
jnthn | pmichaud: token package_declarator:sym<class> { $<sym>=[class|grammar] <package_def> } | ||
pmichaud | pmichaud@orange:~/rakudo/nqp-rx$ ./nqp | 17:00 | |
> NQP::Grammar.DUMP_TOKRX('package_declarator') | |||
"package_declarator" => Hash { "class" => PMC 'Sub' { ... }, "grammar" => \package_declarator["class"], "module" => PMC 'Sub' { ... } | |||
lambdabot | <no location info>: | ||
lexical error in string/character literal at chara... | |||
pmichaud | } | ||
> | |||
lambdabot | not an expression: `' | ||
jnthn | Maybe those whould be broken out into two? | ||
dalek | p-rx: db50144 | pmichaud++ | build/Makefile.in: Update the Makefile a bit, eliminate spaces-instead-of-tab. |
||
jnthn | one for class, one for grammar? | ||
pmichaud | jnthn: shouldn't matter. The DUMP_TOKRX is correctly determining that the valid prefixes are "class", "grammar", and "module" | ||
jnthn | oh, so it is | ||
I mis-read it. | 17:01 | ||
pmichaud | is your branch pushed to github? | ||
well, actually, what I'm thinking of won't help much in this case | 17:02 | ||
jnthn | pmichaud: Everything I have is pushed. | ||
pmichaud | I kinda want an option to be able to turn on tracing from the command line | 17:03 | |
hmmm | |||
btw, to see the protoregex tables, it's just | |||
> NQP::Grammar.DUMP_TOKRX('name-of-protoregex') | |||
lambdabot | <no location info>: | ||
lexical error in string/character literal at chara... | |||
pmichaud | (from the nqp REPL) | ||
jnthn | Tests that fail when running Rakudo with actions.pm and signature.pm compiled with nqp-rx rather than nqp: gist.github.com/222529 | 17:04 | |
pmichaud | if you do NQP::Grammar.DUMP_TOKRX('term') you'll see that module/class/grammar are transitively promoted to <term> also | ||
jnthn | pmichaud: Thanks, that's nice to know. | ||
pmichaud | 6 tests fail? | ||
jnthn | Yes, seriously. | ||
diakopter | rakudo: (*())(&_) | 17:05 | |
p6eval | rakudo d154eb: OUTPUT«Method 'postcircumfix:( )' not found for invocant of class 'Failure'in Main (file src/gen_setting.pm, line 324)» | ||
pmichaud | jnthn: okay, you're freaking me out a bit here :) | ||
jnthn | Plesae can somebody else replicate this so we know I'm not insane? ;-) | ||
17:07
ejs joined
|
|||
colomon | jnthn: what would need to be done to replicate it on a fresh clone? | 17:07 | |
17:07
[particle] joined
|
|||
colomon is trying to fix his $work build process, and that's sooooo slow.... | 17:07 | ||
jnthn | colomon: Switch to branch usenqprx | 17:08 | |
colomon: Also clone nqp-rx | |||
Do --gen-parrot | 17:09 | ||
After that, but before make, configure, make and make install nqp-rx | |||
17:09
fax joined
|
|||
colomon | jnthn: clone nqp-rx where? | 17:09 | |
17:09
am0c left
|
|||
KyleHa | git clone git://github.com/perl6/nqp-rx.git | 17:09 | |
jnthn | Doesn't matter where you put it when you clone it. But you'll need to give it's Configure.pl the --parrot-config=... with ... being path to the parrot_confg your --gen-parrot in Rakudo installed. | 17:10 | |
pmichaud | (need to pass the --parrot-config option to the nqp-rx build) | ||
jnthn | colomon: make install in nqp-rx will then put the right things in the right place, hopefully. | ||
17:11
am0c joined
|
|||
colomon | okay, started with a fresh clone of rakudo, then used KyleHa++'s git clone. Now doing --gen-parrot. | 17:12 | |
diakopter | mberends: interestingly, Perl 5 source sent to p5eval can also invoke js code.... o_o | ||
mberends | diakopter: that's curious... | 17:13 | |
diakopter | yeah, since at that point, V8 thinks it's waiting for some external function to return... | ||
KyleHa | If I --gen-parrot in ~/p6/rakudo, do I then --parrot-config=~/p6/rakudo/parrot_install in nqp-rx ? | 17:14 | |
pmichaud | need full path to parrot_config binary | ||
=~/p6/rakudo/parrot_install/bin/parrot_config | |||
KyleHa | Thanks! | ||
pmichaud | (I'm definitely going to implement part of S19 this weekend.) | 17:16 | |
KyleHa | OK, I did 'make' and 'make install' for nqp-rx. 'make' in rakudo bombs. | 17:17 | |
17:17
am0c left
|
|||
pmichaud | oh, there's still an issue with the makefile, I believe. | 17:17 | |
just a sec | |||
jnthn | oh, wait, did I... | 17:18 | |
pmichaud | my latest change probably broke something | ||
17:18
masak left
|
|||
pmichaud | just a sec | 17:18 | |
jnthn | Oh, you mean the spaces in the nqp-rx one? | ||
KyleHa | It says [src/gen_actions.pir] | ||
It says also, "Parent isn't a Class". | 17:19 | ||
pmichaud | right | ||
jnthn didn't see that one :) | |||
pmichaud | in nqp-rx, do "git pull" and rebuild nqp-rx | ||
I made a boo-boo in my makefile fix. | |||
jnthn | ah, no worries. | ||
colomon | blast, forgot to switch to usenqprx. which doesn't seem to have been pulled? | 17:20 | |
17:20
stephenlb joined
|
|||
jnthn | git checkout usenqprx | 17:20 | |
pmichaud | (it's pulled automatically when you clone the branch) | 17:21 | |
KyleHa | git checkout origin/usenqprx # on mine, anyway | ||
jnthn | ah, yes | ||
pmichaud | KyleHa++ | ||
colomon | jnthn++ | ||
oh weird, git checkout usenqprx seems to have worked for me. (at least, PARROT_REVISION was where it should be) | 17:22 | ||
17:22
mariuz left
|
|||
colomon | (I did accidentally do git branch usenqprx first, maybe that helped?) | 17:22 | |
KyleHa | Oh. That may have created a new local branch called usenqprx unrelated to the remote origin/usenqprx | 17:23 | |
jnthn | aye | ||
dalek | p-rx: ed6362d | pmichaud++ | build/Makefile.in: Fix bug in "make install". |
||
colomon | Hmmm... when I switched to it, I had the right PARROT_REVISION, as I said. But just to be safe I'll start over... | 17:25 | |
jnthn | colomon: PARROT_REVISION in the branch is higher than in master. | 17:26 | |
17:26
cottoo joined
|
|||
colomon | right, that's how I knew I had it wrong at first, and then why I thought I had it right. | 17:26 | |
pmichaud | ETOOMANYWINDOWSONMYDESKTOP | ||
colomon | this time I'll smartly do it on my faster computer, anyway. | ||
jnthn | pmichaud: I just looked at switching Perl6::Compiler::Signature to use has $!foo syntax | ||
pmichaud: However, I need to be able to init the attributes somehow. | 17:27 | ||
What's the Right Way to do that with NQP? | |||
pmichaud | there's no auto-init | ||
you have to create your own accessors to do it | |||
jnthn | Ah. But if I do if $!entries and it's null, I'll go explode. | ||
pmichaud | I think that it assumes Undef for null | 17:28 | |
jnthn | oh, they get vivid. | ||
ok | |||
pmichaud | well, null entries are returned as Undef (but not vivified) | ||
I'm still thinking about that one a bit. | |||
KyleHa | Rakudo built. What's the test? | 17:29 | |
pmichaud | "make test" -- see if sanity tests pass | 17:30 | |
"make spectest" -- see how many spectests fail | |||
jnthn had 6 failures w/"make spectest" | |||
KyleHa | Sanity passed. | ||
pmichaud | 17:04 <jnthn> Tests that fail when running Rakudo with actions.pm and signature.pm compiled with nqp-rx rather than nqp: gist.github.com/222529 | ||
jnthn: NQP now has a --parsetrace option.... using --parsetrace lets you see which regexes are being invoked and whether they pass/fail | 17:32 | ||
could try --parsetrace on actions.pm and see where package_declarator is being called so often | |||
KyleHa | I see a pattern. | ||
jnthn's test failures appear to be ones using my horrific is_run() concoction. | 17:33 | ||
They work on my machine. | |||
17:33
ShaneC left
|
|||
pmichaud | jnthn: when I run --parsetrace on NQP's Actions.pm, I only see one package_declarator call. So.... I'm not sure. | 17:34 | |
jnthn | pmichaud: OK, once I've tried to get Signature.pm switched over the $!foo's and has's... | ||
pmichaud: Oh, hmm | |||
KyleHa | I'll let the spectest suite run here, but I suspect it will all pass. | ||
pmichaud | I'll give the branch a try. | ||
jnthn | pmichaud: Wonder if the profiler output was funked up. | ||
pmichaud | I suppose that's possible. | 17:35 | |
I'll try it here and see what I get. | |||
jnthn | pmichaud: Wow. | ||
I just managed to crash POST::Compiler. | |||
Method 'iterator' not found for invocant of class 'String' | |||
current instr.: 'parrot;POST;Compiler;pir_children' pc 10093 | |||
dalek | p-rx: 2cd14a3 | pmichaud++ | src/ (3 files): [nqp]: Add --parsetrace option to nqp. |
||
pmichaud | jnthn: that typically means that a "make" is missing somewhere. | ||
or a .ast | 17:36 | ||
those will be cleaned up shortly -- the meaning of .ast changed in S05 a couple of days ago so we can get something much more intelligent out | |||
.oO( I wonder if there's a way to tell git to not record/report diffs for the auto-generated files) |
17:39 | ||
jnthn | nqp: has $!foo; method bar($bar) { $!foo := $bar }; | ||
p6eval | nqp: OUTPUT«Method 'iterator' not found for invocant of class 'String'current instr.: 'parrot;POST;Compiler;pir_children' pc 10093 (src/POST/Compiler.pir:70)» | 17:40 | |
jnthn | pmichaud: There you go. | ||
KyleHa | jnthn: I'd be curious to know whether pugs/t/03-test-util/is_run.t works for you, since those are the tests I wrote for is_run() itself. | ||
pmichaud | "has" has to be in a class definition to be any good. | ||
diakopter | to what did .ast change | ||
jnthn | pmichaud: mine is. | ||
pmichaud | .ast now returns undef/false if no ast object has been set | ||
jnthn | nqp: class Wibble; has $!foo; method bar($bar) { $!foo := $bar }; | ||
p6eval | nqp: OUTPUT«Method 'iterator' not found for invocant of class 'String'current instr.: 'parrot;POST;Compiler;pir_children' pc 10093 (src/POST/Compiler.pir:70)» | ||
pmichaud | preivously it returned the matched string | 17:41 | |
jnthn: that looks very familiar, but I don't recall why | |||
jnthn | nqp: class Wibble; has $!foo; method bar($bar) { }; | ||
p6eval | nqp: ( no output ) | ||
jnthn | nqp: class Wibble; has $!foo; method bar($bar) { $!foo }; | ||
p6eval | nqp: ( no output ) | ||
jnthn | nqp: class Wibble; has $!foo; method bar($bar) { my $x; $x := $bar }; | ||
p6eval | nqp: ( no output ) | ||
jnthn | ah, just attr ass. | ||
pmichaud | oh!!! | 17:42 | |
I know the problem. | |||
silly me. | |||
jnthn | \o/ | ||
pmichaud | PAST bug. | ||
jnthn | OK, I would start pouring over the PAST and POST trees then. :-) | ||
pmichaud | I fixed it locally but didn't commit. | ||
17:42
nihiliad left
|
|||
pmichaud | (this is what I get for working past the point when I really should've gone to bed) | 17:43 | |
17:43
TopoMorto left,
zamolxes left
|
|||
jnthn | ;-) | 17:43 | |
pmichaud | need to bump to r42174 | ||
jnthn | dakujem :-) | ||
17:45
frodwith left
|
|||
dalek | p-rx: 8976132 | pmichaud++ | build/PARROT_REVISION: Bump to Parrot r42174 to get fix for PAST::Val attributes. |
17:47 | |
KyleHa | So is this Rakudo+nqp spectest I'm running obsolete now? | ||
jnthn | KyleHa: No | ||
Well, no more than it once was. :-) | 17:48 | ||
*ever was | |||
pugs_svn | r28956 | lwall++ | [pm.txt] more answers | ||
KyleHa | OK, it just finished. | ||
pmichaud | KyleHa: it may be a week or two before we have the new version up to speed | ||
jnthn | Yay | ||
KyleHa: This is jsut running current Rakudo on stuff compiled using nqp-rx. | |||
KyleHa | It all passed except for the two usual suspects. As I predicted. | ||
jnthn | ...all passed? | ||
KyleHa | Yes. The is_run()-based stuff that failed for you passes for me. Did you try that t/03-test-util/is_run.t test? | 17:49 | |
pmichaud | ...what is "is_run()", ooc ? | 17:50 | |
jnthn | KyleHa: Where is that test? | 17:51 | |
KyleHa | jnthn: pugs repo. | ||
jnthn | ah, I don't think I have that checked out other than the spectest parts. | ||
diakopter | ? t/03-test-util/is_run.t | ||
KyleHa | pmichaud: See t/spec/pacages/Test/Util.pm It spawns a separate Rakudo and checks its output. | ||
jnthn | KyleHa: When were they added? It's entirely possible these tests fail for me in master too... | 17:52 | |
KyleHa | jnthn: Looks like about three weeks ago. | 17:53 | |
jnthn | oh, OK | ||
I didn't see thsoe fail in master of late, iirc. | |||
KyleHa: I doubt I'll spend much time looking into it, given usenqprx branch is a throw-away for the most part. | 17:54 | ||
Though the Signature.pm changes I'm doing in there now will likely get copied over to the ng branch. | |||
KyleHa | Okeydoke. Well, that's where those failures seem to stem, if you decide to chase them down. | 17:55 | |
jnthn | OK, good to know - thanks. :-) | ||
pmichaud | ...I'm glad I don't have much planned for the weekend, it's going to be really busy with nqp-rx related stuff :) | ||
jnthn | :-) | 17:56 | |
pugs_svn | r28957 | lwall++ | [S05] | ||
r28957 | document reversed character range compilation failure | |||
r28957 | clarify what happens if an indirect rule fails to compile | |||
jnthn | .oO( should i do two consecutive Rakudo days? ) |
||
colomon | Is there any way to tell that you're on the NQP-RX branch? I mean, that it built correctly and that's what you're using? | 17:57 | |
jnthn | git branch -a | ||
pmichaud | "git branch" | ||
jnthn | See which one is *'d. | ||
colomon | *(no branch), actually | ||
PerlJam | git status also tells you which branch you're on | ||
jnthn | oh wtf | ||
TimToady | pmichaud: one side effect of combining <noun> with <term> is that my terms now don't have a well-formed .caps; probably needs a fix in gimme5 to 'sub term' | 17:58 | |
PerlJam | colomon: did you do "git checkout <SHA>" at some point? | ||
TimToady | std: 42, rand ~ '' | ||
p6eval | std 28956: OUTPUT«Can't use an undefined value as an ARRAY reference at Cursor.pm line 97.FAILED 00:02 108m» | ||
colomon | git checkout origin/usenqprx | ||
nqp-rx built and installed okay. (I didn't try a make test there?) | |||
PerlJam | oh. that doesn't do what you think it does :) | ||
pmichaud | TimToady: since I'm not doing .caps yet, shouldn't be an issue for me | 17:59 | |
jnthn | pmichaud: Just committed a signature.pm that uses has $!x syntax | ||
pmichaud | (will be when I get there :-) | ||
jnthn | pmichaud: Got rid of some inline PIR. :-) | ||
pmichaud | jnthn: awesome | ||
jnthn: and passes tests? | |||
jnthn | sanity | ||
17:59
Bzek_ joined
|
|||
pmichaud | even more awesome | 17:59 | |
TimToady | turns out it's confusing the list associative reducer, which wants .caps to be there, is where the message comes from | ||
jnthn | didn't re-test with spectests yet, but if it gets that much right. | ||
We can steal that straight into the new branch when it comes, anyway. | 18:00 | ||
pmichaud | jnthn: I was thinking "does it pass the signature.pm tests". "passes sanity" is even more awesome. | ||
jnthn | pmichaud: I put in earlier today something to let us have some built-ins just in the stage 1 compiler rather than the setting. | 18:01 | |
pmichaud | I can go ahead and push what I have in the ng branch, although I think it's Epic Fail at the moment. | ||
jnthn | pmichaud: I figured that'd help us debug things a bit more. | ||
pmichaud | I'm doing about three-too-many tasks at once at the moment. | ||
jnthn | :-) | ||
pmichaud | well, my first step in ng is quite literally to switch to the NQP grammar and actions. | ||
jnthn | Sure | ||
pmichaud | then we'll see how much of sanity we pass, and start from there. | ||
jnthn | I'm just mentioning it. You don't need to do anything with it. :-) | 18:02 | |
Well, our problem is this: we ain't going to parse all the setting. | |||
pmichaud | oh, I figure setting is a ways off yet | ||
our bigger problem is that we don't even parse Test.pm yet | |||
jnthn | Right, but given things like, infix:<+> and even say live in the setting these days... ;-) | ||
pmichaud | I'm being quite literal and serious when I say that we'll be building up from scratch again | ||
PerlJam | poor scratch | 18:03 | |
jnthn | We're going to have a hard time running the sanity tests without having some "fake" stuff in place for a while. | ||
pmichaud | right | ||
I think we can use pirops to fake a lot of the math ops | |||
jnthn | Indeed. | ||
pmichaud | our biggest focus will (once again) be on getting Test.pm to compile | ||
jnthn | :-) | ||
pmichaud | unfortunately it's no longer as simple as it once was | ||
jnthn | Aye. | 18:04 | |
18:04
KyleHa left
|
|||
pmichaud | anyway, it'll be the same process as before -- get the basic operators to work, then lexicals, then positional+associative, then exceptions, then Test.pm | 18:04 | |
jnthn is curious how many of the Rakudo sanity tests the nqp grammar as it is today parses/runs. | 18:05 | ||
pmichaud | but in the process we'll also deal with things like the 'rw' property and the like | ||
jnthn | *nod* | ||
pmichaud | since we now know what the operations are supposed to look like, that should be much easier | ||
but I figure compiling settings may be a week or more away | 18:06 | ||
(might be quicker, I'm being very surprised this week at how quickly things are coming together) | |||
jnthn | Sure, agree. | ||
Well, we may find we can start bringing it back bit by bit. | |||
pmichaud | right | ||
we might also want to rename it to CORE anyway | |||
jnthn | :-) | ||
pmichaud | I really have gutted big parts of the Makefile | ||
so if we move setting to CORE we can figure pieces out as we go | 18:07 | ||
(i.e., move files across one-at-a-time) | |||
jnthn | Plesae say you didn't gut the dynops and dynpmcs? :-) | ||
pmichaud | no, they're still there, of course. | ||
jnthn | phew :-) | ||
pmichaud | I don't think those change at all. | ||
jnthn | No | ||
I shouldn't expect so. | |||
The other question I had. | |||
Should we try and start this all of with a merged loadinit? | |||
Rather than one for every routine? | 18:08 | ||
Or easier to keep it per routine for now? | |||
pmichaud | I've decided it has to be per-routine for the most part | ||
jnthn | OK. | ||
For now or in the long-run? | |||
pmichaud | for some things, in the long-run | ||
however, we can be smarter on the actions.pm side | |||
jnthn | OK. | ||
pmichaud | i.e., we can put some things in $?PACKAGE.loadinit instead of @?BLOCK[0].loadinit | 18:09 | |
jnthn | Ah, true. That's easier now. | ||
pmichaud | but I've come across a number of cases where I've realized that PAST cannot automatically combine :loadinits for us. | ||
jnthn | Ah | ||
pmichaud | so it's up to the hll to decide when to do it | 18:10 | |
jnthn | OK. | ||
pmichaud | (but as just noted, that's not all that hard now) | ||
jnthn | contextuals++ | ||
pmichaud | ...my usenqprx branch doesn't seem to have the actions.pm updates in it | ||
specifially, the PIR q<...> -> Q:PIR changes | 18:11 | ||
I must have not pulled the branch properly? | |||
ah, I didn't switch to the branch | 18:12 | ||
pmichaud tries profiling on actions.pm | |||
18:12
Su-Shee left
|
|||
jnthn | hehe | 18:13 | |
:-) | |||
pmichaud: That'll take a little while. ;-) | 18:14 | ||
pmichaud | it's okay, I have plenty else to keep me busy. | ||
And I should get lunch. | |||
jnthn | yeah | ||
pmichaud | omg it's 13h14 already | ||
jnthn | I need to go buy some nom. | ||
pmichaud | where did the morning go? | ||
jnthn | nqp-rx...rakudo... | ||
;-) | |||
pmichaud | this should be a very interesting weekend :) | 18:15 | |
btw, as soon as we start putting rakudo on the new grammar I think I can claim M1 on my Hague grant :) | |||
18:15
Su-Shee joined
|
|||
PerlJam | twice now in recent memory I've told people how you went home for a weekend and the following monday you came back with pmwiki. See if you can get that same vibe going ;) | 18:15 | |
jnthn | pmichaud: yay! | 18:16 | |
pmichaud | PerlJam: depends on what else happens IRL here :) | 18:17 | |
PerlJam: and how tired I get (or don't get) | |||
PerlJam | pmichaud: make sure you have plenty of food and Dr Pepper and a not-so-cozy-you-can't-get-out-of-bed place to sleep | 18:18 | |
jnthn | OK, food break all around. :-) | ||
pmichaud | PerlJam: actually, sleeping comfortably would likely improve my overall productivity :) | ||
PerlJam | pmichaud: why aren't you sleeping comfortably now? | 18:20 | |
18:20
Bzek left
|
|||
pmichaud | PerlJam: don't know. been a little too busy to worry about it or care, though :) | 18:20 | |
PerlJam | perhaps you need an in-door hammock | 18:21 | |
(I presume it's a little too cold outside for hammocking) | |||
pmichaud | was 48degF here this morning | 18:22 | |
afk, lunch | 18:24 | ||
18:28
riffraff left
|
|||
pmichaud | (ng branch pushed to github) | 18:30 | |
diakopter | rakudo: say(5 ! 3) | 18:39 | |
18:39
nihiliad joined
|
|||
p6eval | rakudo d154eb: OUTPUT«say requires an argument at line 2, near "(5 ! 3)"in Main (file src/gen_setting.pm, line 2593)» | 18:39 | |
diakopter thinks a bit | |||
std: say(5 ! 3) | 18:40 | ||
p6eval | std 28957: OUTPUT«===SORRY!===Unable to parse argument list; couldn't find final ')' at /tmp/CgjodzFNZh line 1:------> say(5 !⏏ 3) expecting any of: bracketed infix infix stopper standard stopper terminatorFAILED 00:01 107m» | ||
diakopter wonders how rakudo parsed that | 18:41 | ||
TimToady | it probably didn't, which is maybe why it thought there was no argument | ||
rakudo: 5 ! 3 | |||
p6eval | rakudo d154eb: OUTPUT«Confused at line 2, near "! 3"in Main (file <unknown>, line <unknown>)» | ||
TimToady | it just backtracked out and ignored it | 18:42 | |
(presumably) | |||
diakopter | rakudo: die(5 ! 3) | ||
p6eval | rakudo d154eb: OUTPUT«Confused at line 2, near "(5 ! 3)"in Main (file <unknown>, line <unknown>)» | ||
diakopter | oh | ||
18:44
Su-Shee_ joined
|
|||
TimToady | std is probably missing a panic in the ! metaop | 18:45 | |
18:45
Su-Shee left
|
|||
diakopter | std: !\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-- | 18:48 | |
buubot | diakopter: Error: DBD::SQLite::db do failed: called with 3 bind variables when 4 are needed at plugins/karma_modify.pm line 61. | ||
p6eval | std 28957: OUTPUT«ok 00:01 106m» | ||
diakopter | buubot: erm | ||
buubot | diakopter: Couldn't match input. | ||
diakopter | buu: ^^ say wha? | 18:49 | |
TimToady | it was trying to change the karma of 0, I guess | 18:50 | |
diakopter | 0++ | ||
buubot | diakopter: Error: DBD::SQLite::db do failed: called with 3 bind variables when 4 are needed at plugins/karma_modify.pm line 61. | ||
diakopter | null-- | ||
''-- | 18:51 | ||
' '-- | |||
1-- | |||
ah well. | |||
PerlJam | undef++ :) | 18:52 | |
diakopter | buubot: ? | ||
buubot | diakopter: Couldn't match input. | ||
diakopter | buubot: help | ||
buubot | diakopter: Provides help text for a specific command. Try 'help echo'. See also the command 'plugins' to list all of the currently loaded plugins. | ||
diakopter gets a room | |||
mberends | "tormenting the implementations"? | 18:53 | |
diakopter | std: [\ ++\/o__o\/++ /] | 18:55 | |
p6eval | std 28957: OUTPUT«ok 00:01 110m» | ||
18:55
Su-Shee_ is now known as Su-Shee
|
|||
diakopter | diakopter: I see what you did there... | 18:55 | |
TimToady | some people like to torment themselves... | 18:56 | |
jnthn | I'm still lost on what that parsed as... | 19:08 | |
diakopter | std: 3 | | | | | | 4 | ||
p6eval | std 28957: OUTPUT«ok 00:02 107m» | ||
jnthn | ...and that... | ||
diakopter | the first is whence the wild things peer | 19:09 | |
TimToady | you just have to keep your terms/infixes/postfixes straight | 19:10 | |
sjohnson | rakudo: say [1, 2, 3].WHAT; | 19:11 | |
p6eval | rakudo d154eb: OUTPUT«Array()» | ||
diakopter | rakudo: say [\ ++\/o__o\/++ /].WHAT | 19:12 | |
p6eval | rakudo d154eb: OUTPUT«Method 'succ' not found for invocant of class 'Regex'in Main (file src/gen_setting.pm, line 324)» | ||
sjohnson | diakopter: :) | ||
jnthn | Well, doesn't that succ. | ||
sjohnson | Q: in p6 parlance, if i assign any array to a $ scalar, will it make a reference for me? or need I use the & technology | ||
jnthn | In p6 parlance, reference is now like swearing. | 19:13 | |
Really, there's not much going on under the hood over than storing an array object in a scalar container. | |||
The difference is the context it enforces on the RHS. | |||
TimToady | sjohnson: to the first approximation, everything is already a reference, so there's no point in mentioning it | 19:15 | |
diakopter | rakudo: (/./)(/./) | ||
p6eval | rakudo d154eb: OUTPUT«set_pmc() not implemented in class 'Regex'in Main (file <unknown>, line <unknown>)» | ||
sjohnson | kinda like... $ref = <1 2 3> | ||
TimToady | so at some point we went through the specs and did s:g/reference/object/ | 19:16 | |
sjohnson | heh | ||
%s/bad parts/better parts/g | |||
yesterday my brother finally conceded that perl was a big deal after he was forced to write a server upgrade check point script | 19:17 | ||
sjohnson chalks up another point for perl | 19:18 | ||
diakopter | rakudo: say $(*) | 19:21 | |
p6eval | rakudo d154eb: OUTPUT«!whatever_dispatch_helper» | ||
sjohnson | rakudo: say ( `ー´).WHAT; | 19:22 | |
p6eval | rakudo d154eb: OUTPUT«say requires an argument at line 2, near " \uff08\u3000\uff40\u30fc\x{b4}\uff09.W"in Main (file src/gen_setting.pm, line 2593)» | ||
diakopter | rakudo: say $(1&\ &3&4) # jnthn: <--- | 19:23 | |
p6eval | rakudo d154eb: OUTPUT«all(1, undef, 4)» | ||
19:25
Bzek_ left
|
|||
pugs_svn | r28958 | lwall++ | [Cursor] don't die on malformed caps | 19:26 | |
r28958 | [STD] EXPR now produces .caps without omitting the keys | |||
r28958 | [STD] catch diakopter++'s :::::::::::::::::::::::::::::::: names | |||
r28958 | [STD] refrain from producing LTA error messages on ! and !! | |||
r28958 | [STD] put in better recursion protection in panic | |||
r28958 | [STD] Regex must define its own infixstopper or s!foo!! doesn't like !! | |||
r28958 | [STD] remove old crufty comments | |||
r28958 | [viv] some code to detect accidental gaps | |||
jnthn | diakopter: Rakudo is probably fine on that one. | 19:28 | |
oh, maybe other than that &3 maybe isn't a valid identifier... | |||
diakopter | I think it thinks it's thinking it's a contextualizer | 19:29 | |
jnthn | perhaps | ||
Dunno | |||
I don't really care. | |||
TimToady | std: &3 | 19:30 | |
p6eval | std 28957: OUTPUT«ok 00:02 126m» | ||
jnthn | I just wish we could detect these cases and be like "wtf are you doing" :-) | ||
PerlJam doesn't really grok what &3 should mean | |||
(in that context) | |||
std: |3 | 19:31 | ||
p6eval | std 28957: OUTPUT«ok 00:01 105m» | ||
PerlJam | crazy | ||
sjohnson | dereference of an int object? | ||
PerlJam | sjohnson: definitely not | ||
TimToady | just inlines it as a valid argument, which it already was | ||
sjohnson | PerlJam: i thought in P6, there are no wrong answers :) | ||
jnthn | TimToady: Is &3 actually a sub-ref? | 19:32 | |
jnthn isn't sure what it's parsing as... | |||
TimToady | well, it thinks it's the name of a sub, but in general the parser doesn't check numeric names for existence | 19:33 | |
jnthn | :-) | ||
PerlJam | std: ^3 | ||
p6eval | std 28957: OUTPUT«ok 00:01 105m» | ||
TimToady | presumably it's claiming that $/[3] is of type Code or some such | ||
diakopter | std: 0() | ||
p6eval | std 28957: OUTPUT«ok 00:01 102m» | ||
PerlJam | std: %3 | ||
p6eval | std 28957: OUTPUT«ok 00:01 103m» | 19:34 | |
PerlJam | std: *3 | ||
p6eval | std 28957: OUTPUT«===SORRY!===Two terms in a row at /tmp/oAQmtfo2IH line 1:------> *⏏3 expecting any of: POST bracketed infix infix stopper postfix postfix_prefix_meta_operator standard stopper statement modifier loop | ||
.. terminator whitespaceFAILED 0… | |||
PerlJam | finally! :) | ||
sjohnson | jnthn: perhaps we need a wtf: &3; bot | ||
PerlJam | std: ^3 | ||
p6eval | std 28957: OUTPUT«ok 00:01 105m» | ||
diakopter | rakudo: say $(1&\ &(say 99)&4) | 19:35 | |
PerlJam | std: %3 + 2 | ||
p6eval | rakudo d154eb: OUTPUT«Use of contextualizer & not implemented. at line 2, near "&4)"in Main (file src/gen_setting.pm, line 3073)» | ||
std 28957: OUTPUT«ok 00:01 105m» | |||
TimToady | maybe we need a new pragma | 19:36 | |
use mjd; | |||
"You can't just make shit up and expect Perl to understand it at foo line 42" | 19:37 | ||
jnthn | There will be modules. :) | ||
TimToady | it would also change SORRY! to IDIOT! | ||
PerlJam | TimToady++ RETARDO! | 19:38 | |
That line still cracks me up whenever I see it. | |||
It would be good easter egg to put in perl6 :) | |||
TimToady | actually, use abusive would be a good test of the error message internationalization mechanism | ||
diakopter | std: sub wtf(@^_, %^_) { die 'Worse Than Failure: '~@_ }; | 19:40 | |
Juerd | I'm actually against internationalizing error messages. It makes finding help using a search engine way too hard for seldom seen messages. | ||
p6eval | std 28957: OUTPUT«===SORRY!===Placeholder variable @_ cannot override existing signature (@^_, %^_) at /tmp/zWAJHJXTQ0 line 1:------> ^_, %^_) { die 'Worse Than Failure: '~@_⏏ }; expecting any of: POST postfix postfix_prefix_meta_operator | ||
..standard stopp… | |||
TimToady | or I guess that would actually be localization, where the locale in question is NYC | ||
dukeleto | Juerd: that is a good point | ||
Juerd | It keeps biting me hard in Windows. | ||
diakopter | hence error numbers/codes + messages | 19:41 | |
TimToady | what you want is alternating lines of English and New Yorker | ||
Juerd | Also, it will pose the question "do we or do we not translate jargon" for every language. | ||
TimToady | I think it all goes into the the html file that the error message refers to :) | 19:42 | |
Juerd | I've seen a Dutch translation of some Perl book that used "lijst" as the translation for both array and list. It's correct but incredibly unhelpful. | ||
TimToady | "Here you must be careful to distinguish lists from lists..." | 19:43 | |
sjohnson | TimToady++ for: use abusive; | ||
TimToady | abuse warnings; | ||
diakopter | std: sub (@*_, %*_, $*_) { }; | ||
p6eval | std 28957: OUTPUT«ok 00:01 107m» | ||
diakopter | obtuse warnings; | 19:44 | |
Juerd | Just only throw errors in the form of URLs | ||
sjohnson | i suppose use sugarcoating; would be its opposit | ||
jnthn | abuse *; | ||
sjohnson | use Grammer::Nazi; | 19:45 | |
diakopter | use punitive; # downloads/runs viruses/trojans on errors | ||
Juerd | diakopter: You have an evil mind. | ||
TimToady | std: sub (@*x, %*x, $*x) { } | ||
p6eval | std 28957: OUTPUT«ok 00:01 105m» | ||
lichtkind | sjohnson: there is no such module :( | ||
TimToady | std: sub (@^x) { } | 19:46 | |
jnthn | TimToady: Does that update the contextual currently in scope with that name? | ||
p6eval | std 28957: OUTPUT«Potential difficulties: Illegal to use ^ twigil in signature at /tmp/hsUD3ZAkhN line 1:------> sub (⏏@^x) { }ok 00:01 105m» | ||
TimToady | no, makes a new one | ||
jnthn | TimToady: Or just put it in a lexical that is context? | ||
OK. | |||
TimToady | just like my $*x | ||
jnthn | OK. | ||
Makes sense, just wanted to check. | |||
diakopter | std: sub (*&) { } | 19:47 | |
TimToady | temp $*x also makes a new one these days, but inits it with the outer one | ||
p6eval | std 28957: OUTPUT«ok 00:01 105m» | ||
PerlJam | rakudo: my $x = 5; { temp $x = 7; say $x }; say $x | ||
p6eval | rakudo d154eb: OUTPUT«Could not find non-existent sub tempin Main (file src/gen_setting.pm, line 324)» | ||
PerlJam | ah, rakudo doesn't do temp yet | ||
TimToady | temp on contextuals is a different animal though | 19:48 | |
just desugars to my $*X = CALLER::<$*X> or some such | |||
jnthn | What's the use-case for temp now that we have contextuals? | 19:49 | |
diakopter | rakudo: (sub (*&) { say $ })(888) | ||
p6eval | rakudo d154eb: OUTPUT«Cannot take substr outside stringin Main (file <unknown>, line <unknown>)» | ||
PerlJam | jnthn++ good question | ||
diakopter | Cannot take substr outside string? | 19:50 | |
(and what happened to src/gen_setting.pm, etc) | |||
jnthn | heh, that's an...interesting...one | ||
diakopter | rakudo: (sub (*$) { say $ })(888) | 19:51 | |
p6eval | rakudo d154eb: OUTPUT«» | ||
jnthn | rakudo: sub foo($) { say $ }; foo(42) | ||
p6eval | rakudo d154eb: OUTPUT«» | ||
jnthn | heh | 19:52 | |
diakopter | rakudo: (sub (*$) { say $.WHAT })(888) | ||
p6eval | rakudo d154eb: OUTPUT«Lexical 'self' not foundin Main (file src/gen_setting.pm, line 324)» | ||
TimToady | temp would still let you temporize anything that wasn't expecting to be temporized, and restore it at the end of scope, provided its name was visible to you | ||
and don't forget the 'let' form | |||
presumably, if we have temp $*x then we also have let $*x | |||
which would copy into its parent $*x when successful | |||
jnthn | Ooh | 19:53 | |
Transaction-y semantics. | |||
TimToady | yes, that's what let is intended for, on some level | 19:54 | |
diakopter | rakudo: (sub (*@_) { say $_.WHAT })(888) | ||
p6eval | rakudo d154eb: OUTPUT«Failure()» | ||
TimToady | though I think of it more as hypotheticality | ||
19:55
tylerni7 left
|
|||
TimToady | but rather than keeping a hidden global stack like p5's local, I think temp probably desugars to saving a temporary in the current pad | 19:55 | |
maybe even with an accessible contextual name | 19:56 | ||
temp $x would mean something like my $*x_SAVE = $x; LEAVE { $x = $*x_SAVE } | 19:57 | ||
though that would be buggy in the face of multiple 'temp $x' in the same scope | 19:58 | ||
and let $x would just use UNDO instead of LEAVE | 19:59 | ||
jnthn | Heh, doing multiple in the same scope actually hadn't occured to me... | ||
20:00
takadonet left,
tylerni7 joined
|
|||
pugs_svn | r28959 | lwall++ | [STD_P5] also needs its own infixstopper | 20:04 | |
TimToady | std: 1 ?? say 1,2,3 !! 'oops' | 20:06 | |
p6eval | std 28958: OUTPUT«===SORRY!===Ternary !! seems to be missing its ?? at /tmp/YpcvJwlYs7 line 1:------> 1 ?? say 1,2,3 ⏏!! 'oops' expecting any of: infix stopper standard stopper terminatorFAILED 00:01 111m» | ||
TimToady | std: '1 | 2' | ||
p6eval | std 28958: OUTPUT«ok 00:01 102m» | ||
TimToady | std: '1 ! 2' | ||
p6eval | std 28958: OUTPUT«ok 00:02 102m» | ||
pmichaud | I haven't figured out how to implement temp, fwiw | 20:07 | |
TimToady | er | ||
std: 1 ! 2 | |||
pmichaud | (in Rakudo/Parrot) | ||
p6eval | std 28958: OUTPUT«===SORRY!===Negation metaoperator not followed by valid infix at /tmp/uRT72ShQYj line 1:------> 1 !⏏ 2 expecting any of: bracketed infix infix stopper standard stopper terminatorFAILED 00:01 107m» | ||
pmichaud | we don't have LEAVE yet | ||
jnthn | pmichaud: 'cus we lack exit handlers? | ||
pmichaud | jnthn: right | 20:08 | |
TimToady | well just watch for the reference counts to go to zero and then...oh wait... | ||
std: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |||
p6eval | std 28958: OUTPUT«===SORRY!===Name component may not be null at /tmp/WgnEnTQoqy line 1:------> ::⏏:::::::::::::::::::::::::::::::::::::::: expecting morenameFAILED 00:01 102m» | ||
pmichaud | I'm hoping I can fake temp somehow until Parrot gives us exit handlers. | ||
I'm really not wanting to trap exceptions in every block. | |||
TimToady | well, P5 doesn't try to | 20:09 | |
it just knows how many things to peel back from the stack when it does catch the exception | 20:10 | ||
for rakudo it could be part of unwinding, which doesn't happen till after the exception is handled anyway | |||
jnthn | pmichaud: Heh, I can think of a way. ;-) | 20:11 | |
pmichaud | except we don't really have an "unwind" in Parrot | ||
TimToady | you will :) | ||
pmichaud | sure | ||
diakopter | rakudo: my $a = 3; say $a.WHAT; $a=[4,5]; say $a[0]; my %a := $a; say %a.WHAT | ||
pmichaud | 20:08 <pmichaud> I'm hoping I can fake temp somehow until Parrot gives us exit handlers. | ||
p6eval | rakudo d154eb: OUTPUT«Int()4Array()» | ||
jnthn | pmichaud: What always gets invoked when we leave a Parrot sub? | ||
pmichaud: So we just subclass RetCont. ;-) | |||
pmichaud | jnthn: except we don't always leave a sub via a RetCont | 20:12 | |
jnthn | .oO( no, I didn't just say that. ) |
||
20:12
ruoso joined
|
|||
jnthn | pmichaud: Ah, exceptions? | 20:12 | |
Meh. | |||
diakopter | (see above): my %a := $a # is that valid? | ||
pmichaud | we might be able to hack something together with pushaction | ||
diakopter: it is if $a does Associative | |||
(in the example above, I would've expected a type error) | 20:13 | ||
Rakudo doesn't really implement type checking on binding yet | |||
jnthn | pmichaud: Perhaps. Or we maybe should figure out what we need from Parrot to do it properly. | ||
pmichaud | jnthn: Perhaps. The discussion always gets bogged down in exceptions and inferior run loops, though, with people thinking that their generalizations somehow "fix" a problem (when in fact the proposed generalization is exactly equivalent to what we have now) | 20:14 | |
20:15
xp_prg joined
|
|||
diakopter | std: ~say ::= 1 | 20:15 | |
p6eval | std 28958: OUTPUT«ok 00:01 107m» | ||
diakopter | rakudo: ~say ::= 1 | 20:16 | |
p6eval | rakudo d154eb: OUTPUT«ResizablePMCArray: Can't pop from an empty array!in Main (file <unknown>, line <unknown>)» | ||
diakopter pretends not to look quizically | 20:17 | ||
jnthn | diakopter: You quite possibly just exploded the parser | ||
pmichaud | we don't have ::= yet, either | ||
jnthn | nqp: ~say ::= 1 | ||
p6eval | nqp: ( no output ) | ||
jnthn | um. | ||
pmichaud | however, := and ::= will be two of the first operators implemented in rakudo-ng | ||
why the ~ ? | 20:18 | ||
diakopter | red herring | ||
jnthn | pmichaud: We're going to do binding properly? | ||
pmichaud | jnthn: sure, why not? | ||
it's easy now | |||
jnthn | pmichaud: OK, cool. :-) | ||
pmichaud | the only reason I haven't done it in Rakudo yet was because it would require lots of icky deep changes | ||
jnthn | No reason why not, if you know how it's going to look. | ||
pmichaud | I do. | 20:19 | |
It ends up looking a lot like a signature bind. :-) | |||
jnthn | OK. :-) | 20:20 | |
Hey, I know a little bit about signature binding. ;-) | |||
diakopter | rakudo: ::= #jnthn: yeah, maybe | ||
p6eval | rakudo d154eb: OUTPUT«ResizablePMCArray: Can't pop from an empty array!in Main (file <unknown>, line <unknown>)» | ||
pmichaud | it doesn't even require special help from the parser/compiler -- it's just &infix:<:=> and &infix:<::=> | 20:21 | |
diakopter | even for chaining? | ||
pmichaud | even for chaining | ||
diakopter | std: 5 := 4 := 3 | 20:22 | |
p6eval | std 28959: OUTPUT«ok 00:01 104m» | ||
diakopter | rakudo: 8=8=8 | 20:23 | |
p6eval | rakudo d154eb: OUTPUT«Unable to set lvalue on PAST::Val nodein Main (file <unknown>, line <unknown>)» | ||
jnthn | If I'm going to hack on a branch in git, should I somehow make it a "local branch" or soemthing too? | 20:25 | |
pmichaud | i'd look at github guides and see what they suggest | 20:26 | |
20:26
mtnviewmark joined
|
|||
jnthn | "GitHub is Temporarily Offline." | 20:27 | |
joy. | |||
pmichaud | time to pick up kid from school | 20:28 | |
pmichaud is Temporarily Offline. | |||
20:28
ruoso left
|
|||
PerlJam | jnthn: hack on a remote branch you mean? | 20:33 | |
jnthn | PerlJam: Yeah, but I figured it. | ||
Apparently git checkout -b origin/ng | 20:34 | ||
Should do it. | |||
20:34
tylerni7 left
|
|||
diakopter | rakudo: .=($_={.()}) | 20:35 | |
p6eval | rakudo d154eb: OUTPUT«Could not find non-existent sub !.=in Main (file src/gen_setting.pm, line 324)» | ||
PerlJam | jnthn: um ... probably not. (unless you're running a newer, smarter version of git) | ||
diakopter | rakudo: ($_={.()})() | ||
p6eval | rakudo d154eb: OUTPUT«maximum recursion depth exceededin Main (file <unknown>, line <unknown>)» | ||
PerlJam | jnthn: what does "git br" say? Do you have a branch called "origin/ng" now? | 20:36 | |
jnthn | In the list is | ||
* origin/ng | |||
PerlJam | jnthn: if so, that branch is the name of your local branch based off of master (or whatever branch you happened to be in when you made it) | ||
jnthn | Oh, before it I'd done git checkout origin/ng | ||
PerlJam | and it has nothing to do with the remote origin/ng branch | ||
oh. | |||
hmm | |||
jnthn | At which point git was all like "oh hai this is remote branch, you may want to do git checkout -b origin/ng" | 20:37 | |
PerlJam | normally I just do "git checkout -t origin/ng" | ||
it'll make a local branch called ng which is setup to track the remote branch | 20:38 | ||
anywho, you're good :) | 20:39 | ||
jnthn | Good to know the -t way, thanks. | ||
PerlJam | jnthn: btw, do you have aliases configured? I find "git co", "git br", "git st", etc. so much more convienent :) | 20:40 | |
jnthn | no, I didn't | ||
configure any. | |||
PerlJam | if you want, "git config --global alias.ci commit" etc. | 20:41 | |
(that'll make an alias for commit called "ci") | |||
20:42
Exodist joined
|
|||
jnthn | wow | 20:43 | |
git config --global alias.up pull | |||
;-) | |||
PerlJam | the push/pull dichotomy is well entrenched in my brain. I'd just confuse myself if I made an up alias :) | 20:44 | |
pmichaud | pmichaud@orange:~/ng$ git checkout -t origin/ng | ||
fatal: git checkout: --track and --no-track require -b | |||
PerlJam | pmichaud: you've got an older git I bet | 20:45 | |
pmichaud | git version 1.6.0.4 | ||
PerlJam | yeah, that one is months old ;) | ||
jnthn | You need to git a newer version. | 20:46 | |
pmichaud: Wow. Rakudo now feels just like it was about 2 years ago when I started hacking on it. ;-) | 20:47 | ||
PerlJam | jnthn: that's some rakudo regression! :) | ||
jnthn | Clearly my first job is to do an epicly mis-guided implementation of Junctions! | ||
20:48
tylerni7 joined
|
|||
PerlJam | as long as rakudo *acts* like it did yesterday, I'm fine if it feels like it did 2 years ago ;) | 20:48 | |
(it's still pretty amazing the progress that's been made in such a relatively short time. I don't care what the perl 6 naysayers say) | 20:49 | ||
jnthn | pmichaud: Anyway, good news is that, uh, it builds. :-) | ||
pmichaud | from github/guides: | ||
Create a local branch that tracks one of the remote branches and then use that local branch: | |||
git checkout --track -b name_of_local_branch origin/name_of_remote_branch | |||
PerlJam | pmichaud: you should still upgrade your git :) | 20:50 | |
jnthn | Heh. How do I know if I ahve something that actually is doing the right thing... :-/ | 20:51 | |
pmichaud | kubuntu 9.10 came out yesterday, I plan to test it out over the weekend | ||
jnthn | C:\Consulting\rakudo>git pull | ||
pmichaud | I suspect it has a newer git | ||
jnthn | You asked me to pull without telling me which branch you | ||
Yes, I did the wrong thing. :-) | |||
jnthn tries pmichaud++'s suggestion | |||
pmichaud | github guides often knows the answers, when it's online :) | 20:52 | |
diakopter | rakudo: my $a = sub ($b) { $a = Block.new($b) }; $a.=$a; $a.=$a # the first $a.=$a doesn't crash parrot | ||
p6eval | rakudo d154eb: OUTPUT«src/call/context.c:653: failed assertion 'Parrot_pcc_get_regs_used(interp, ctx, REGNO_PMC) > idx'Backtrace - Obtained 14 stack frames (max trace depth is 32)./home/p6eval//p1/lib/libparrot.so.1.7.0 [0x2b1709b38873]/home/p6eval//p1/lib/libparrot.so.1.7.0(Parrot_confess+0x87) | ||
..[0x2… | |||
jnthn | oh screw | ||
warning: refname 'origin/ng' is ambiguous. | |||
fatal: Ambiguous object name: 'origin/ng'. | |||
pmichaud | weird. | ||
it worked for me | |||
but I started from a fresh clone | |||
PerlJam | it should work for jnthn too, no matter how new his git is. | ||
pmichaud | if you already have an origin/ng branch lying about somewhere in your repo, it might fail | ||
jnthn | yes, I probably do. :-/ | ||
eww | 20:53 | ||
pmichaud | I tend to do fresh clones frequently, since it only takes a couple of seconds :) | ||
PerlJam | git++ | ||
jnthn | aha | ||
fixed | |||
I think. | |||
pmichaud: OK, so Perl6 directory contains the New Stuff? | 20:54 | ||
And "parser" is not un-used? | |||
(apart from Signature....) | |||
pmichaud | currently only src/Perl6 is used | ||
diakopter | rakudo: my $a = sub ($a) { Sub($a) }; $a.=$a; $a.=$a; say $a.perl | ||
p6eval | rakudo d154eb: OUTPUT«Class P6protoobject already registered!in Main (file <unknown>, line <unknown>)» | ||
jnthn | .oO( must not /kick ... ) |
20:55 | |
pmichaud: OK. | |||
diakopter | :P | ||
jnthn | pmichaud: So...what now? :-) | ||
pmichaud | I'm having to rebuild my ng copy at the moment | 20:56 | |
just a sec | |||
PerlJam | diakopter: ... | 20:57 | |
rakudo: Sub().say | |||
p6eval | rakudo d154eb: OUTPUT«Class P6protoobject already registered!in Main (file <unknown>, line <unknown>)» | ||
diakopter | TimToady: re "yet another nail in the coffin" .... but does the nail have a hammer? ;) | ||
PerlJam: i c | 20:58 | ||
PerlJam | rakudo: Sub(); | ||
p6eval | rakudo d154eb: OUTPUT«Class P6protoobject already registered!in Main (file <unknown>, line <unknown>)» | ||
pmichaud | jnthn: okay, I pushed print/say to ng | ||
now let's see how far we get with things | 20:59 | ||
jnthn | pmichaud: OK, nice. | ||
pmichaud | there's a directory called src/cheats for where we put our cheats | ||
jnthn | pmichaud: OK. How much are we going to cheat, and how much are we doing to try and not do so? | ||
pmichaud | cheat as little as we can, I'd guess | ||
but as long as we keep our cheats inside of src/cheats, we at least know where we're cheating | |||
I used that approach for nqp-rx and it worked really well | |||
jnthn | pmichaud: OK. So does this mean for example that we try and switch to using Perl 6 signatures in this branch early? | 21:00 | |
I ask because Test.pm needs multi-dispatch (at least arity based). | |||
pmichaud | as early as we reasonably can | ||
jnthn | And Perl6MultiSub needs Perl 6 Signatures. | 21:01 | |
pmichaud | we can always fall back to parrot's multi-dispatch for Test.pm | ||
and I don't mind if we have cheats/test.pir either | |||
jnthn | I sorta can't be bothered... :-) | ||
pmichaud | but we really can't even do Test.pm until we have lexicals and assignment | ||
sjohnson | rakudo: my @animals; @animals.push<piggy chicken cow>; say @animals.perl; | ||
p6eval | rakudo d154eb: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Perl6Array'in Main (file src/gen_setting.pm, line 324)» | 21:02 | |
jnthn | I don't see it being excessively crazily hard to put enough in place to have enough of signatures and multi-dispatch to do what test.pm needs | ||
pmichaud | I don't either, necessarily | ||
but I'm still thinking "fix assignment and lexicals" before I begin to think about signatures | |||
if you want to start on signatures, no problem, I'm not saying we shouldn't do them early | 21:03 | ||
jnthn | Is there a way that those two are not parallelizable? | ||
pmichaud | afaict, they're parallelizable | ||
jnthn | That is, you take on assignment and lexicals, and I'll get basic sig stuff and basic multi-dispatch in place? | ||
pmichaud | sure | ||
just keep in mind that I'm likely to redo FETCH and STORE and the like | |||
and that I'm not sure how ObjectRefs will play out | 21:04 | ||
jnthn | That's fine. | ||
pmichaud | if you can get signatures w/o those, go ahead :) | ||
jnthn | Well, enough of them to get us started. | ||
pmichaud | right | ||
also when we pull in the base types I want to fix their names | |||
jnthn | The other thing is, how early do you plan to get us able to parse operator decls? | ||
pmichaud | i.e., no more Perl6Array | ||
parsing operator decls shouldn't be too hard | 21:05 | ||
so, is Object really CORE::Object ? | |||
jnthn | OK. 'cus if we get that in we can write all our ops in CORE. | ||
sjohnson | rakudo: my @animals; @animals.push(<piggy chicken cow>); say @animals.perl; | ||
p6eval | rakudo d154eb: OUTPUT«["piggy", "chicken", "cow"]» | ||
jnthn | pmichaud: And then we import it? | ||
pmichaud | is there _anything_ that doesn't appear in CORE ? | ||
diakopter | kitchen_sink | ||
o wait | |||
pmichaud | iirc, GLOBALS is really CORE::GLOBALS | 21:06 | |
etc. | |||
is CORE just a fancy way of saying "root" ? | |||
21:06
pmurias joined
|
|||
TimToady | no, GLOBALS is UNIT::GLOBALS now | 21:06 | |
pmichaud | is that really CORE::UNIT::GLOBALS ? | ||
TimToady | nothing mutable appears in CORE | ||
pmichaud | (apologies that I haven't brushed up on this yet) | 21:07 | |
okay, so our "top-level" namespaces are CORE, UNIT, and ... ? | |||
jnthn | pmichaud: S02 lists CORE as a pseudo-package. | ||
TimToady | no, CORE, UNIT, SETTING are all top-level pseudo package names | ||
jnthn | UNIT # Symbols in the outermost lexical scope of compilation unit | ||
TimToady | I mean, yes. :) | ||
jnthn | pmichaud: S02 | 21:08 | |
pmichaud | jnthn: yes, I know | ||
so, the builtin types all appear in CORE | 21:09 | ||
and are imported into UNIT ? | |||
no, wait. | |||
TimToady | there is no need to import from an outer lexical scope | 21:10 | |
pmichaud | CORE is the outermost lexical scope... right | ||
GLOBAL is immutable? | |||
TimToady | no | ||
pmichaud | because it's really CORE::GLOBAL | ||
TimToady | GLOBAL now lives in UNIT | 21:11 | |
diakopter | rakudo: delete ::CORE | ||
p6eval | rakudo d154eb: OUTPUT«Null PMC access in does_pmc()in Main (file <unknown>, line <unknown>)» | ||
pmichaud | ah, S02 is fossiled there, then | ||
TimToady | see r28880 | ||
pmichaud | GLOBAL # Interpreter-wide package symbols, really CORE::GLOBAL | ||
so UNIT is lexically nested within CORE | 21:12 | ||
21:12
masq left
|
|||
pmichaud | and we start up in UNIT::GLOBAL | 21:13 | |
pugs_svn | r28960 | lwall++ | [S02] remove fossil found by pmichaud++ | 21:14 | |
TimToady | yes, so our $foo in the main program is really in both UNIT and GLOBAL | ||
21:14
pmurias left
|
|||
TimToady | (unless they switch to a different package) | 21:14 | |
pmichaud | and UNIT/CORE/etc are really pseudo-package names, there aren't really namespace objects with those names (could be different per-implementation) | 21:15 | |
21:15
avar joined
|
|||
pmichaud | anyway, good enough for me | 21:15 | |
TimToady | I just kicked PROCESS to being standalone; we could do that for GLOBAL too, I suppose | ||
pmichaud | jnthn: so, returning to signatures -- keep in mind that I hope to be updating Array/Hash in the process as well | ||
TimToady | it would prevent people from overriding the GLOBAL:: name in an inner lexical scope | ||
jnthn | pmichaud: Updating in what sense? | 21:16 | |
pmichaud: Are we actually going to do "has an RPA" rather than "is an RPA" at last? | |||
pmichaud | fixing some of their methods, and trying to prepare for dealing with flattening/non-flattening behavior | ||
we'll still have "isa RPA", but that'll probably be Array instead of List | |||
jnthn | That will probably have to go away eventually though, I guess? | 21:17 | |
pmichaud | maybe | ||
or perhaps it'll just be the case that RPA pretends it's an Array | |||
jnthn | Array needs to become a (parametric) role really. | ||
pmichaud | perhaps all of our built-in classes need to become roles. | ||
sjohnson | rakudo: my @animals; @animals.push('piggy', 'chicken', 'cow'); say @animals.perl; | ||
p6eval | rakudo d154eb: OUTPUT«["piggy", "chicken", "cow"]» | ||
jnthn | I'm not sure about *all* of them. | ||
pmichaud | well, Int, Str, etc. | ||
jnthn | Yeah | 21:18 | |
Quite possibly. | |||
21:18
__ash__ joined
|
|||
pmichaud | anyway, rather than me worrying about nth-level details, let's just start and I'll carp when I don't like something :) | 21:18 | |
jnthn | OK, catch you after my next commit. ;-) | 21:19 | |
pmichaud | in general I'd like to not do wholesale copying of say, all the builtins or the entire setting in one fell swoop | ||
jnthn | Me either. | ||
Oh hmm. I wonder how many multis we actually have in the perl6 HLL namespace at this point? | 21:20 | ||
21:25
Whiteknight joined
21:29
cognominal joined
21:30
pmurias joined
|
|||
diakopter | std: our &package; package( package package { &package(package::) } ); | 21:30 | |
p6eval | std 28960: OUTPUT«ok 00:02 128m» | ||
pmurias | std:sub sub {} | 21:31 | |
diakopter | std: sub sub {} | ||
p6eval | std 28960: OUTPUT«ok 00:01 102m» | ||
pmurias | p6 has no keywords? | ||
reserved words | 21:32 | ||
pmichaud | jnthn: in answer to your earlier question -- parsing operator decls should be really easy overall. custom operators will require slightly more work (because we have to modify the parser as we go) | 21:33 | |
diakopter | std: class role does role { } | ||
p6eval | std 28960: OUTPUT«ok 00:02 102m» | ||
pmichaud | but for the builtin operators, that should occur very soon. | ||
jnthn | pmichaud: OK. I guess we can just shoot for writing them all in CORE right off then. | 21:34 | |
pmichaud | maybe :-) | ||
but yes, sooner rather than later | |||
jnthn | pmichaud: I'm just studying STD at the moment to get a feel for signature stuff. | ||
diakopter | std: role does does does { } | ||
p6eval | std 28960: OUTPUT«ok 00:01 102m» | ||
pmichaud | good idea :-) | ||
I'm about to get started on 01-literals.t | 21:35 | ||
just added listops | |||
jnthn | pmichaud: Ah, nice. | ||
diakopter | std: role does does does does does does does does does { } | ||
p6eval | std 28960: OUTPUT«ok 00:01 102m» | ||
jnthn | pmichaud: STD talks about a $*CURPAD.<$?SIGNATURE> | 21:38 | |
I'm trying to work out exactly what it's for though. | |||
pmichaud | STD keeps track of lexicals while parsing | ||
diakopter | std: role is is is does is is also is does is also does also { } | ||
p6eval | std 28960: OUTPUT«ok 00:02 102m» | ||
pmichaud | whereas Rakudo would do it in the PAST structure | ||
jnthn | Ah, OK. | ||
So in that aspect, I shouldn't be trying to follow STD too literally if it feels way unnatural? | 21:39 | ||
pmichaud | I wouldn't follow STD too literally yet, no. | ||
jnthn | OK, that's good to know. | ||
pmichaud | in general we probably want to use very similar rules | ||
(i.e., the overall parse structure) | |||
but I'm not worried about having all of the syntactic checks in place yet | 21:40 | ||
jnthn | OK. | ||
pmichaud | also keep in mind that we don't have :temp | ||
jnthn | *nod | ||
pmichaud | we can emulate :temp for contextuals to a good approximation, when we need it | ||
21:41
quietfanatic joined
21:42
__ash__ left
|
|||
pugs_svn | r28961 | pmurias++ | [mildew-js] initial implementation of PrototypeHOW and p6opaque, | 21:42 | |
r28961 | t/knowhow.t passes | |||
21:43
Schwern joined
|
|||
diakopter | rakudo: say ::quietfanatic | 21:43 | |
p6eval | rakudo d154eb: OUTPUT«Null PMC access in type()in Main (file <unknown>, line <unknown>)» | ||
pmurias | moritz_: how often is mildew recompiled? | ||
quietfanatic | I am not a class. | ||
diakopter | we'll see about that | ||
jnthn | pmichaud: Should I expect e.g. ":my $*IN_DECL = 'sig';" to fail? | 21:45 | |
pmichaud | := | 21:46 | |
jnthn | oh | ||
pmichaud | I need to add the "can't use assignment" warning | ||
trivial to add in nqp-rx, if anyone wants to do that :-) | 21:47 | ||
jnthn | :-) | ||
pmichaud | oh, I'll add it now | ||
jnthn | heh, I also just tripped up on <.panic: "Malformed parameter"> :-) | 21:50 | |
<.panic: 'Malformed parameter'> # works fine though :-) | |||
pmichaud | right | ||
I can now fix double quotes to work too | |||
(too many loose ends) | |||
jnthn | Don't worry, it's not a big deal. | ||
Unless you want to do it. | |||
:-) | |||
pmichaud | oh, it needs to be done at some point | 21:51 | |
they're all trivial fixes, just so many of them to do | |||
sjohnson | diakopter->mutateInto('roflcopter'); | ||
pmichaud | pmichaud@orange:~/ng/nqp-rx$ ./nqp | 21:52 | |
> my $a = 4; | |||
Assignment ("=") not supported in NQP, use ":=" instead at line 1, near " 4;\n" | |||
> | |||
lambdabot | not an expression: `' | ||
<no location info>: parse error on input `=' | |||
dalek | p-rx: 8c4c7d0 | pmichaud++ | src/NQP/Grammar.pm: Issue an error if someone attempts to use assignment instead of binding. |
||
21:58
iblechbot left
|
|||
pmurias | mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo; | 21:58 | |
p6eval | mildew-js: OUTPUT«execute(): execute error: ReferenceError: default_method_signature_BIND_mold is not defined at mildew line 344.» | ||
pmurias | diakopter: did you set up a make to be periodicly run in re-mildew? | 21:59 | |
22:01
patspam joined
|
|||
diakopter | pmurias: no | 22:07 | |
does it need its own build separate from mildew's? | 22:08 | ||
22:08
nihiliad left
22:10
pnate2 left
|
|||
pmurias | diakopter: you mean re-mildew? | 22:10 | |
mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo;yo | |||
mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo; | |||
p6eval | mildew-js: OUTPUT«execute(): execute error: ReferenceError: default_method_signature_BIND_mold is not defined at mildew line 344.» | ||
pmurias | diakopter: mildew-js needs a make in re-mildew | ||
pugs_svn | r28962 | pmurias++ | [mildew-js] add passing tests to TESTS-js | 22:11 | |
22:11
Su-Shee left,
nihiliad joined
|
|||
diakopter looks | 22:11 | ||
22:16
rafl_ joined
|
|||
diakopter | mildew-js: knowhow Foo {method foo {say "methods work?"}};Foo.foo; | 22:16 | |
p6eval | mildew-js: OUTPUT«methods work?» | ||
diakopter | pmurias: ok I set it to run at 29 after the hour | 22:17 | |
I think | 22:18 | ||
:) | |||
pmurias | thanks | 22:19 | |
22:20
brunov joined
|
|||
jnthn | mmm...this sig code is shaping up *so* cleaner than what we had before. :-) | 22:23 | |
pmichaud | good | 22:36 | |
it should | |||
for some reason I can't get my .hll attribute on the block :-( | 22:37 | ||
jnthn | Oddness. :-/ | 22:38 | |
pmichaud summons Data::Dumper | |||
doh! | 22:40 | ||
do we really need to test \c inside of 01-literals.t ? | 22:42 | ||
I don't think so. | |||
(begone, foul test!) | |||
jnthn | No, we don't. | 22:43 | |
Unless Test.pm uses it. ;-) | |||
(which would surprise me) | |||
pmichaud | if it does, then Test.pm can be fixed also :) | ||
01-literals.t now passes :) | 22:44 | ||
only 520 more test files to go! | |||
...I suppose dalek only watches the master branch of the rakudo repository... | 22:46 | ||
jnthn | Yes. | 22:48 | |
No karma for us for 2 weeks! :'( | |||
pmichaud | unless someone can reconfigure dalek to watch ng also :) | 22:49 | |
jnthn | pmichaud++ # for 01-literals.t passing ;-) | ||
diakopter | what does ng denote | 22:51 | |
pmichaud | "next generation" | ||
"new grammar" | |||
22:51
nihiliad left
|
|||
pmichaud | afk, dinner | 22:52 | |
jnthn | "nauseatingly gnarley" | 22:53 | |
diakopter | " | 23:00 | |
jnthn | syntax error: closing " not found | 23:01 | |
diakopter | pmichaud: (or anyone else who has edit access) if you add the ng branch to www.parrot.org/languages let me know and I'll SIGHUP to dalekbot and it should grab it ottomajiklee | 23:09 | |
23:09
envi^home joined
23:10
rafl_ is now known as rafl
|
|||
pmichaud | diakopter: ummm, how does one add a branch to that page? | 23:12 | |
diakopter | I think the script is smart enough to get the url correct | 23:13 | |
diakopter checks to be certain | |||
pmichaud | but the url would be essentially the same as the rakudo url | ||
diakopter | github.com/rakudo/rakudo/tree/ng | ||
pmichaud | okay | ||
diakopter checks again | |||
jnthn | pmichaud: Can I add somewhere a cheat to create Object? | 23:14 | |
pmichaud | you can import src/classes/Object.pir if you wish | ||
jnthn | pmichaud: OK, thanks. | ||
pmichaud | s/import/re-enable/ | ||
diakopter | hm, maybe those just get sent to #parrot | ||
jnthn | pmichaud: It's just that the signature binder cries if it doesn't have *some* nominal type for parameters. ;-) | 23:15 | |
pmichaud | right | ||
I expect to have the official versions of Object and Any tonight | |||
jnthn | OK, excellent. | ||
Where should I stick it for now? | |||
Just as an include in compiler.pir? | |||
pmichaud | that's fine | ||
I'll have the gen_* scripts up soon also | |||
jnthn | OK, cool. | 23:16 | |
diakopter | pmichaud: nm; I found the right place to add it.. | ||
pmichaud | diakopter++ # thanks! | ||
23:19
dalek left,
dalek joined
|
|||
diakopter | someone push to ng? | 23:20 | |
jnthn | aww...merge conflicts. | 23:23 | |
pmichaud | jnthn: we're likely to have a few of those as we get the core pieces in place | 23:25 | |
jnthn | diakopter: just about to push, after I make sure I didn't hash up the merge. | ||
pmichaud: yes, I think I've got it resolved now :-) | |||
pmichaud | jnthn: once we're a bit past the core, conflicts should be less frequent | ||
I think I undid one of your changes earlier because I didn't want to fix up the Makefile :0| | |||
jnthn | heh | ||
Please don't undo this latest one. It was a couple of hours of effort. :-P | 23:26 | ||
pmichaud | oh, I won't. | ||
unless it's wrong, of course 1/2 :-) | |||
uh oh, EXPR fail | 23:30 | ||
jnthn | Is that like EPIC fail, but different? | 23:31 | |
pmichaud | yeah | ||
jnthn | lolipushed | 23:32 | |
OK, we're using the Rakudo signature binder now. | |||
pmichaud | scary | 23:33 | |
I think I'm going to need a mental break (not "breakdown"!) soon | |||
jnthn | lol | ||
Yes, it's half past midnight here and I think that push is about the last I'll manage tonight. | |||
pmichaud | well, I'll take a break for an hour or two, then probably get another nearly-full-day's work in overnight | 23:34 | |
jnthn | OK, awesome. | ||
I may just do another Rakudo Day tomorrow. | |||
pmichaud | so hopefully have things stable and far enough along for you to do more hacking over the weekend whenever you want | ||
(I expect to be working on this most of the weekend) | |||
jnthn | We've got some momentum on this now...would be nice to keep it going. :-) | ||
pmichaud | agreed | ||
I'm pleased with how easily things seem to be coming together, overall | 23:35 | ||
jnthn | Yeah. | ||
pmichaud | we'll see if it lasts :) | ||
jnthn | I like the new signature code a lot more than what it replaced. | ||
pmichaud | I'll look at it and let you know if I feel the same :-) | ||
(likely yes) | |||
jnthn | We don't screw around building a bunch of PAST nodes to hold information that we then toss away. | ||
pmichaud | right | ||
we get it right the first time, and have the contextual information we need available | |||
jnthn | I added a compile-time Parameter class, to go with Signature. | ||
It's now nice and clean. | 23:36 | ||
pmichaud | okay, I'll look it over | ||
jnthn | $*PARAMETER.pos_slurpy( $quant eq '*' && $*PARAMETER.sigil eq '@' ); | ||
:-) | |||
And such. | |||
pmichaud | right now there seems to be a bug with prefix ops in the expression parser | ||
jnthn | Ah | ||
Present in NQP too? | 23:37 | ||
pmichaud | don't know yet | ||
jnthn | OK | ||
pmichaud | ah, no, bug in my adding of the new precedence level | 23:38 | |
(whew!) | |||
jnthn | lol...incredibly, we also support a feature that Rakudo master never got around to supporting (because I couldn't face the refactoring it'd take to do it...) | 23:42 | |
pmichaud | we'll have a lot of that soon | 23:45 | |
being able to do lexical initialization correctly will be a huge benefit | 23:46 | ||
jnthn | Yes | ||
pmichaud | as well as having proper rw properties | ||
jnthn | In this case it's just named params of the :foo(:bar(:$baz)) form. | ||
pmichaud | oooh, nice | ||
jnthn | Which the sig binder and even Signature class have supported since I implemented them. | 23:47 | |
But in the old actions file was a bit of a nuisance to do. | |||
(so I was lazy ;-)) | 23:48 | ||
pmichaud | less of a nuisance today :) | ||
jnthn | Yes | ||
named_param's action method is 2 lines long. | |||
pmichaud | there's a fair bit of that. | ||
s1n | anyone know if there are svg's of the "onion" TPF logo available somewhere? | 23:49 | |
jnthn | oh eek, we didn't put Perl6Hash back yet so the signature binder has a huge sad about named params. | 23:51 | |
pmichaud | you can add that one back also if you wish | ||
jnthn | pmichaud: Nah, we need to rename it anyway. | ||
pmichaud: I'll just have the sig binder make a normal Hash for the time being. | |||
pmichaud | better. | ||
jnthn | pmichaud: or I guess we could leave it for now, since Test.pm I think doesn't need named params anyway. | 23:52 | |
pmichaud | that's fine with me also | ||
02-op-math.t passes. | |||
(pushed) | 23:53 | ||
jnthn | meh, I just added a couple of #define's at the top of bind.c and switched it to Hash, but it'll be easy to change back later. | 23:55 | |
diakopter | (pushed) # hrm | 23:56 | |
jnthn | heh win | ||
> sub foo(:z(:y(:$x))) { say($x) } | |||
> foo(:x(1)); foo(:y(2)); foo(:z(3)); | |||
1 | |||
2 | |||
3 | |||
lambdabot | <no location info>: parse error on input `(' | ||
<no location info>: parse error on input `;' | |||
pmichaud | I has a WIN. | 23:57 | |
*haz | |||
LOLFAIL | |||
it's scary how easy it is to add this stuff back in | 23:58 | ||
jnthn | Yes | ||
Though one thing I didn't think of an easy answer for yet... | |||
Lexical multis. | 23:59 | ||
pmichaud | have you looked at how nqp does lexical subs? | ||
jnthn | yeah | ||
Just makes a lexical entry in the lexpad of the thingy holding it | |||
pmichaud | my guess is that we have !add_multi which takes an existing multi, adds other multis to it, and returns the result |