#parrot Parrot 2.2.0 "Like Clockwork" Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Improve Rakudo rx and buildtime performance | Fix HLL bugs (TT #389, #1040) | Prioritize Rakudo Needs and roadmap items
Set by moderator on 30 March 2010.
chromatic I don't believe I've ever met dmr. 00:00
dalek kudo: 03f210f | jonathan++ | src/Perl6/ (2 files):
Fix RT#73886.
00:01
00:01 dngor joined
Whiteknight dmr? 00:05
purl rumour has it dmr is Dennis Ritchie, author of Unix and C; he is our Grey Eminence, and King. or at cm.bell-labs.com/cm/cs/who/dmr/
Whiteknight "look, it's all objects all the way down. Until you reach turtles." 00:06
chromatic Simon Cozens wrote an NFG prototype in Perl 6 a couple of years ago. 00:12
00:15 lucian joined
darbelo Is that the one in the really old strings branch in the repo? 00:16
chromatic I'm not sure where it is.
darbelo There is also a perl snippet in the PDD, I'm guessing it came from the same place. 00:18
It's the bit that suggests the array+hash implementation, and shows some perl to that effect. 00:19
Whiteknight darbelo: yes, the strings branch was it 00:21
00:25 jsut_ joined 00:37 Andy joined 01:07 hercynium joined
dalek kudo: 1068f2e | jonathan++ | t/spectest.data:
Turn on S02-literals/hash-interpolation.t.
01:16
kudo: 1094cf3 | jonathan++ | t/spectest.data:
Turn back on S02-literals/misc-interpolation.t.
01:28
01:55 Psyche^ joined
dalek kudo: 32fda13 | jonathan++ | src/Perl6/Grammar.pm:
A :my declaration in a regex prevents the current protoregex implementation spotting constant prefixes that immediately follow it. By a little re-ordering, we can shave about 5% off the time to compile the setting by allowing those constant prefixes to be spotted and computed, since we don't have to chase down a bunch of false branches.
02:10
02:42 janus joined 03:31 leprevost joined
sorear Why are languages/ separated from libraries/ ? 04:17
Austin Because it seemed like a good idea once upon a time, and now there aren't any failing test cases that suggest the need to unseparate them? 04:18
darbelo Actually, we don't even have languages/ anymore.
Austin We don't? 04:19
darbelo They got kicked out of the repo a long time ago.
Austin I think he means runtime/
darbelo That looks like a leftover to me. 04:20
dalek rrot: r45399 | chromatic++ | trunk/src/pmc/fixedpmcarray.pmc:
[PMC] Removed unnecessary callocs from FixedPMCArray.
rrot: r45400 | chromatic++ | trunk/lib/Parrot/Ops2c/Utils.pm:
[lib] Removed an unnecessary calloc from ops initialization.
Austin Heh
languages/parrot 04:21
darbelo Yep. It only holds that file. The 'parrot' HLL.
I think that's a part of the HLL-interop stuff. 04:22
Or maybe it's from Hll-interop's previous life. 04:23
# $Id: parrot.pir 39532 2009-06-13 06:03:55Z tene $
That's not old enough to be obsolete, but not new enough to be from the latest interop spec. 04:24
Don't worry. It will eventually die. Everything does. 04:25
sorear darbelo: I'm actually speaking of /usr/local/lib/parrot/2.2.0-devel/{languages,library} 04:27
the practical upshot of this is that pir::load_bytecode("nqp.pbc") doesn't work 04:28
if I want to load a language dynamically (for use :from), I need to replicate the path search logic
which seems wrong
darbelo I think it's a matter of 'languages are special' 04:29
sorear Why?
They're just libraries.
libperl.so installs into the same place as libgdbm.so
darbelo We don't give libraries their own executables. 04:30
Languges typically demand them. 04:31
sorear parwish?
p6regex? 04:32
purl p6regex is deprecated anyway, and as per pmichaud's note to p-p yesterday I'm not planning to update it for the new pdd15oo model
darbelo Artifacts of history. Our install tree is a mess of old stuff we don't entirely know hot to straigten out.
sorear I don't actually know the history 04:33
I'm just citing a library that should have an executable
and a language that shouldn't
darbelo I'm not entirely clear on the history myself either. But I know that in the past (as in, over two HLL toolchains back) there were different expectations for what languages an libraries did. 04:36
As far as I can try to justify this: The stuff in library/ was theoretically not bound to any language. 04:37
A related tale to the runtime/parrot/* one in the source tree. 04:38
04:40 jsut joined
darbelo Anyway. I should probably go to sleep now, I have hellspawn^W relatives visiting tomorrow. 04:40
cotto night 04:41
happy relativity
darbelo 'Happy' is a relative term... 04:42
darbelo Zzz
cotto I never said who'd be happy
04:56 theory joined 05:03 Austin joined
sorear pastie.org/902402 <- Can anyone explain what's going on here? 06:00
If I load NQP, then Blizkost - OK
If I load Rakudo, then Blizkost - Error
If I load Rakudo, then NQP, then Blizkost - also Error, so not a missing dependancy 06:01
Austin Rakudo is defining a symbol that PCT wants to be a class, as something not a class. Probably something down in the regex/PGE space. 06:02
Actually, it probably springs from the "perl6;PCT" 06:03
Looks like something isn't handling the transition from hll=parrot to hll=perl6.
Alternatively, maybe it's a cross-language thing, and some class needs to be declared with hll='parrot' or hll='perl6' 06:04
Does it work if you don't load the perl5 bytecode?
sorear My goal is to load perl5 into Rakudo. Not loading perl5 would be automatic failure. 06:06
Austin Jeez
sorear Oh
No, loading NQP alone also gives the error 06:07
Austin So it's nothing to do with your stuff? That's a win - file a bug.
Given that the PCT stuff is being loaded in rakudo, do you even need to load the nqp stuff? 06:09
sorear No, I just did it as a test to root out missing deps 06:10
which was my first theory
this looks probably like a parrot bug so I'll file it there
Parrot has both a RT queue and a Trac instance; which do I file bugs on?
Austin Trac 06:11
RT is dead, has been for years.
sorear hmm, I need to register to add a ticket? 06:12
Austin I think so 06:13
Ahh! Ugly blue woman! 06:15
sorear uhhh 06:21
this is /extra weird/
if I use perl6 --target=pir
then run parrot on the resulting pir
it WORKS
Austin Sure.
Because perl6 isn't in the way.
When you're running perl6 as an interpreter, all the perl6-y goodness is sitting in the VM with you. 06:22
When you run it as a compiler, you get a pir file that doesn't have all the stuff. (You'll need to load it if you want it.) So no problem.
sorear What can loading perl6 do to cause 'perl6;PCT;__onload' to be called? 06:23
that seems like a pretty basic Parrot failure 06:24
and I have no idea how to start debugging this
or even know which tracker to put it on
dalek TT #1542 created by sorear++: HLLs sometimes leak into loaded modules 06:44
TT #1542: trac.parrot.org/parrot/ticket/1542
sorear Do classes ever get garbage collected? 07:26
Austin In theory, sure. In practice, I doubt it. 07:27
The namespaces probably keep them alive forever.
sorear I'm wondering because PMC code refers to them using small integers and never calls any marking thing 07:30
dalek izkost: 4c0982a | sorear++ | src/pmc/p5 (2 files):
Require creation of P5Namespace through proper channels
07:32
sorear 7 files changed, 9 insertions(+), 106 deletions(-) 07:50
with no loss of functionality
Austin Eventually you'll be down to just one: 07:53
dwim();
sorear dwim usually breaks 07:54
dwiw is much better
dalek izkost: 9e586b0 | sorear++ | src/pmc/ (8 files):
Centralize P5/Parrot header cruft in one file
07:56
izkost: e7d4b67 | sorear++ | src/pmc/blizkost.h:
Quiet all redefinition warnings.
08:08
sorear #define char const char 08:10
cranking the warning level up to 11 screws with perl.h 08:34
#define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL /* but we use -Wnested-externs 08:35
dalek izkost: 1f52187 | sorear++ | src/pmc/p5interpreter.pmc:
Fix a bunch of warnings in p5interpreter
08:37
izkost: 365279e | sorear++ | src/pmc/blizkost.h:
Add a Parrot-warnings-clean refinition of dNOOP
08:43
09:10 dalek joined
dalek izkost: cf14185 | sorear++ | src/pmc/ (6 files):
Migrate to auto_attrs
09:11
sorear blizkost is now warning free. 09:12
why doesn't nqp have hash literals? 09:17
purl: msg dukeleto, I just noticed Blizkost doesn't have a license! Is Artistic 2.0 (same as Parrot) acceptable to you? 09:28
purl Sorry, I've never seen dukeleto, before.
sorear purl: msg dukeleto - I just noticed Blizkost doesn't have a license! Is Artistic 2.0 (same as Parrot) acceptable to you?
purl Message for dukeleto stored.
sorear seen fperrad
purl fperrad was last seen on #perlfr 16 hours, 31 minutes and 25 seconds ago, saying: > say("hello");
sorear purl: msg fperrad - I just noticed Blizkost doesn't have a license! Is Artistic 2.0 (same as Parrot) acceptable to you? 09:29
purl Message for fperrad stored.
09:49 snarkyboojum joined 10:16 JimmyZ joined 10:18 fperrad joined
sorear hey fperrad 10:24
10:56 clinton joined 12:40 mib_ltira4 joined 12:41 mib_ltira4 left, mib_ltira4 joined 12:46 sockmister joined 12:47 ferminter joined, mib_hqxu69 joined 12:49 mikehh joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32998), fulltest) at r45400 - Ubuntu 10.04 beta amd64 (g++ with --optimize) 13:02
13:03 hangulee joined
hangulee hello! 13:03
moritz good localtime() 13:18
13:26 khairul joined 13:32 jj joined
dalek kudo: 6fd5479 | (Solomon Foster)++ | src/core/ (4 files):
Define Bridge method for the real types.
13:37
13:38 TiMBuS joined 13:42 dalek joined
mikehh got to reboot - bbiab 13:47
13:49 GodFather joined 13:51 GodFather joined 13:52 GodFather joined
dalek kudo: c570328 | moritz++ | t/spectest.data:
we do not actually pass export.t - no idea why I thought we did :( moritz--
13:59
14:08 mib_jb1mgu joined 14:15 mikehh joined 14:30 lucian joined 14:47 Briankim joined 15:04 kjeldahl joined 15:13 snarkyboojum joined 15:20 theory joined 15:34 gaurav joined 15:47 leprevost joined
dalek kudo: 02cf9c3 | moritz++ | t/spectest.data:
we pass S03-operators/autovivification.t
16:09
16:36 davidfetter joined 16:39 eric_j joined 17:03 knewt joined 17:09 Mokurai1 joined 17:13 payload joined 17:22 tetragon joined 18:47 leprevost joined 19:13 fperrad joined 19:14 tcurtis joined 19:16 GeJ joined
arnsholt How do I compare two PMC for identity (same pointer, essentially)? 19:26
== doesn't seem to be it
sorear issame? 19:31
purl issame is supposed to simply determine if two PMC registers are the same PMC.
arnsholt Sounds like an excellent plan. Thanks! 19:32
sorear fperrad: ping
arnsholt That works. Thanks a bunch! 19:33
The Parrotlog guts now have what seems to be working mark/cut =D 19:34
19:36 fperrad_ joined
darbelo Parrotlog? 19:37
purl Parrotlog is irclog.perlgeek.de/parrot/
tcurtis Are there any more detailed NQP docs than the Grammar Actions chapter of the PCT book? 19:46
darbelo I don't know of any. The latest nqp is self-hosting, if you are willing to accept code for docs. 19:49
nqp-rx?
purl i think nqp-rx is github.com/perl6/nqp-rx
darbelo I think pmichaud was working on some introductory nqp docs before getting sidetracked with rl issues. 19:52
But I don't know if that ever got posted to the internets.
sorear NQP is basically just the largest subset of Perl 6 that can run without library support
with a few annoying omissions 19:53
would anyone object if I added anonymous hash constructors to NQP?
and :flat hash arguments?
darbelo Parrot treats it as an external component. We just pull from pmichaud's repo and ship it. 19:54
Now that I think of it, japhb was campaigning for those some time back. 19:55
I don't recall what kind of answer he got. 19:56
sorear the lack of them just bit me
19:56 joeri joined
tcurtis I'm mainly wondering how close it is to PIR? Would NQP be to PIR as C is to assembly, as Perl is to assembly, or as Perl is to C? Or would none of those analogies be accurate? 19:57
sorear NQP is to PIR as C-- is to assembly 19:59
darbelo Except with a perlier sytax ;)
sorear I'd also like to add tailcalls and Q:PIR interpolations 20:00
arnsholt darbelo: Parrotlog is my (stil nascent) Prolog on Parrot project 20:08
purl: parrotlog is github.com/arnsholt/parrotlog
purl ...but parrotlog is irclog.perlgeek.de/parrot/...
arnsholt parrotlog?
purl parrotlog is irclog.perlgeek.de/parrot/
moritz purl: parrotlog is also prolog on parrot by arnsholt++ 20:10
parrotlog?
purl it has been said that parrotlog is irclog.perlgeek.de/parrot/
moritz argl
arnsholt Indeed 20:14
moritz purl: no, parrotlog is <reply>irclog.perlgeek.de/parrot/ or prolog on parrot by arnsholt++ 20:16
purl, parrotlog?
purl parrotlog is irclog.perlgeek.de/parrot/
moritz gives up
arnsholt purl: help 20:17
purl #perl is not a help channel, and I'm not a help bot. If you want Perl help, try #perl-help or #metallica. or (see the 'help channel' factoid as well) or
arnsholt purl: help purl 20:18
purl arnsholt: excuse me?
arnsholt gives up too
tcurtis Isn't C-- intended for use purely as a compiler target? Wouldn't PIR be the C-- to PASM's assembly? C-- doesn't even have loops, no? 20:22
arnsholt PIR doesn't have loops either 20:23
Only goto
tcurtis But, NQP does, doesn't it? 20:24
darbelo Yes, NQP is a full language.
Except for the no-library thing, that is. 20:25
moritz right; NQP intends to have no runtime 20:26
(or just very, very little)
except what parrot natively provides, of course
arnsholt NQP is a lot more practical to work with 20:27
At least that's my feeling, but I've never really done any assembly programming either, so my opinion might not count that much =) 20:28
tcurtis sorear said that NQP is to PIR as C-- is to assembly. That confused me a bit, given how low-level C-- is.
arnsholt I suppose you could say that NQP is to Perl 6 as C-- is to C 20:31
darbelo I think sorear's point is that NQP isn't meant as a stand-alone language. 20:34
For example it has no runtime library, so it only does what parrot does. 20:35
It's a good language to write compilers in, but it lacks certain general purpose features that you would expect from a 'full' language. 20:36
Kiond of a "Perl 6 dressing up as a DSL" thing. 20:37
s/Kiond/Kind/
No, "A DSL dressing up as Perl 6" is more like it. 20:38
Of course, that hasn't stopped people from using it as a general purpose language at all. 20:39
See kakapo, or even plumage for an example of that.
tcurtis Would it be useful perhaps to have a language with a more general-purpose focus that mapped fairly closely to PIR? 20:45
darbelo If you map close enough to PIR, you end up with NQP in a different syntax. 20:46
How useful that would be I have no clue. I'm more of a vm guy.
NQP has no library, in part, because it maps pretty closely to PIR and parrot features. 20:49
But maybe I'm not really understanding your question. 20:52
dalek kudo: 72fd9a8 | jonathan++ | (12 files):
Run program bodies within the lexical scope of the setting. There's still some things that aren't going to work out just yet, but this is at least the first 80%. :-) Also fix up a $*SCOPE leakage that meant we accidentally the our-scope for many things that should have been has or my scoped. Please re-configure; this may also break some code that wasn't assuming lexical scope by default.
darbelo IMO, NQP hadles it's niche pretty well. That's all I'm trying to say. 20:53
s/hadles/handles/ 20:55
arnsholt Can I make my NQP classes implement PMC vtable methods somehow? 21:05
tcurtis I think I'm just looking for an excuse to design a language and work on a Parrot compiler for it. But I think I'm going to instead look and see if it would be possible to rewrite the things in runtime/parrot/library in NQP without slowing things down. That seems more likely to be useful. 21:06
darbelo tcurtis: Please, don't let me discourage you. We *like* having plenty of languages. 21:07
Take Close for example, it's pretty much 'NQP with C syntax'. 21:09
And that is not a bad thing at all.
dalek kudo: 33b0082 | jonathan++ | src/core/Any-list.pm:
Start to remove some our declarations, now that the setting lexically encloses the program.
21:16
darbelo That reminds me... 21:29
purl: msg Austin Hey, is Close still in development? Looks awfully quiet from over here. 21:30
purl Message for austin stored.
dalek kudo: dc3ff3b | jonathan++ | src/core/Any-num.pm:
More removal of our.
21:38
japhb Someone mentioned me/Plumage in regards to anon hash composers in NQP. 21:39
darbelo Kind of. 21:40
japhb This turned out to be somewhat painful to implement in NQP for deep reasons I don't entirely understand.
So the canonical replacement is putting this function in your program:
sub hash(*%h) { %h }
And then use hash() rather than {} to compose hashes 21:41
darbelo Ah, sorear was asking about them, and I remembered that you had asked pmichaud to add them some time ago.
21:41 chromatic joined
japhb chromatic: Catching up on twitter, I noticed your comment a few days ago about making Rakudo compiles 5x faster. That should be shouted from the rooftops in a lot of venues, if you haven't already (I haven't backlogged b.p.o or u.p.o yet) 21:43
And what was the revision that had the change in it?
darbelo climbs to his rooftop, idly wondering if his neighbour will care... 21:44
chromatic This was after we slowed it down some four times. 21:45
japhb Clearly if they don't, you need better neighbors. ;-)
oh. crap.
sigh
chromatic r45367 was the speedup.
moritz still the memory usage was cut down by a factor of two if you combine those changes
japhb Here I was thinking the easter bunny brought something for dad .... 21:46
chromatic It's definitely faster than it was.
japhb Amazing how much difference the little things make 21:49
21:54 patspam joined
chromatic A little thing done a few million times ceases to be a little thing. 21:55
dalek kudo: c467c5c | jonathan++ | docs/ROADMAP:
Item assignment is done and tested, so move to done section of the ROADMAP.
21:56
22:00 ash_ joined 22:01 cognominal joined
dalek kudo: f5b18c9 | jonathan++ | src/core/A (2 files):
More removal of our; this is probably so far as we can go for now.
22:08
22:13 leprevost joined
arnsholt ARG! Unification completely breaks my brain >.< 22:52
22:54 leprevost joined 23:03 theory joined
dalek kudo: c9db3d6 | jonathan++ | src/Perl6/ (2 files):
Fix use of %_ and @_ when they've been declared in a signature (or auto-included in the case of methods).
23:11
23:44 ash_ joined 23:45 jsut_ joined
dalek izkost: 4437dfe | sorear++ | CREDITS:
Fix a formatting error in CREDITS
23:49
izkost: b2347f6 | sorear++ | TODO:
Bring TODO up to date
dukeleto 'ello 23:58