»ö« | 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␤ statement␤Undeclared routine:␤ else used at line 1␤FAILED 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 expected␤current 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␤ terminator␤FAILED 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␤ whitespace␤FAILED 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 temp␤in 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 string␤in 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 found␤in 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␤ terminator␤FAILED 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␤ terminator␤FAILED 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 morename␤FAILED 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()␤4␤Array()␤»
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 node␤in 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 exceeded␤in 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