#parrot Parrot 0.5.2 Released | parrotcode.org/ | see www.parrotcode.org/misc/parrotsketch-logs/ for logs
Set by moderator on 6 February 2008.
cognominal_ yea # jonathan++ anyway 00:00
jonathan Maybe Coke can make that happen. 00:01
jonathan updates his forthcoming talks section on his site.
Coke jonathan: I can make that happen. plz. send me a reminder email. 00:02
jonathan You can haz reminder email. 00:03
cognominal_ I am reading jquery in action and see how much javascript is a rough semantical subset iof Perl6
except the jquery implementers do the multi dispatch manually 00:04
00:21 DarkWolf84 joined
Coke guesses the reminder email was silly, since he just did it. 00:30
ok. jonathan's new feed is now in planet parrot; no clue how long it will take to refresh and show his entries.
jonathan w00t 00:31
Coke++
Tene Coke++ 00:32
00:35 Andy joined
jonathan sleep & 00:36
00:42 slightlyoff_ joined
svnbotlt r25591 | chromatic++ | trunk: 00:43
: [pmc2c] Prettify generated PMCs slightly. Debugging these guys is less than
: fun.
diff: perlsix.org/svn/parrot/revision/?rev=25591
Andy evening 00:52
00:52 Ademan joined 01:14 AndyA joined 01:21 chromatic joined
svnbotlt r25592 | chromatic++ | trunk: 01:21
: [src] Fixed a minor typo.
diff: perlsix.org/svn/parrot/revision/?rev=25592
chromatic Is anyone having trouble building NQP?
particle tries 01:22
like, gc trouble?
chromatic No.
My fault.
For fun, ask yourself "Self, why are there three different versions of registering a type in three different places?"
Andy hey, c, anything we can pair on tonite? 01:26
particle take schwern's 2038 code to parrot. 01:27
chromatic Want to know some really grotty code that is a speed hit?
sets.c in compilers/imcc/ is a huge timesink for Perl 6 and PGE. 01:28
I'm not sure that's entirely the problem (but it's not great code).
I think the real problem is that compute_dominators() is lousy.
Cleaning that up (even making it so that it's remotely readable) would be an improvement. 01:29
An easier task (if Amy makes you watch the O! channel tonight) is slapping Parrot_oo_ on all non-static functions in src/oo.c.
A supposedly fun thing that I'll never do again (thank you, David Foster Wallace) is to figure out what's barfy about t/library/pg.t (probably our PostgreSQL NCI bindings are out of date) and make it not barfy. 01:31
Finally, someone needs to poke Coke and ask him if the Tcl patch I sent him a few days ago helps. 01:32
Andy Who holds on to the commit bits? Could ajr get one, rather than feeding thru me? 01:33
chromatic: Actually, Amy is at school show, being a Teacher Presecnce or something.
chromatic woohoo, it's the Hallmark channel for you tonight then! 01:34
Andy Right now watching Dirty Jobs w/Quinn
later, I'll watch some Modern Marvels as background
chromatic That Dirty Jobs show is a horrible invention.
01:35 Ademan joined
Andy Why do you say? 01:36
chromatic Regarding ajr, the committers just have to look over the number and quality of patches he's submitted, then hold him down, make him sign the contributor agreement, put a sack over his head, and re-enact The Crossing of the Desert and The Unblinking Eye and he's in.
wknight8111 compilers/imcc/sets.c doesnt look too messy to me, and I don't see the function "compute_dominators()" in there
chromatic I went out to dinner with a very lovely young lady a while back, and she mentioned the show, and then we had a long discussion of animal husbandry. 01:37
Andy Quinn & I discuss much science watching it.
chromatic it's in reg_alloc.c, wknight8111.
wknight8111 okay, thanks
Andy It's in compilers/imcc/cfg.c
chromatic Er, yes. Sorry.
svnbotlt r25593 | petdance++ | trunk: 01:38
: ajr documentation, plus some consting
r25594 | chromatic++ | trunk:
: [oo] We can get by with only one version of this function (though its cousin in
: src/pmc.c looks awfully familiar). register_type() is now
chromatic What bothers me about sets.c is that a struct is unnecessary (it's just a bitmap), and that working eight bits at a time seems a little silly to me. If we can rely on a 32-bit type, for example (and we can know this at compile time), we can chunk along four times faster.
Andy I don't even know what it's doing,
but that doesn't stop me from refactoring. 01:39
chromatic Which, sets or dominators?
Andy Yup.
chromatic This is where I pull out my computer science education and tell you that Mozart was in his early 30s when he died without completing his Requiem, Handel was the red-haired priest, and Wagner hated Mendelssohn. 01:40
particle .\\src\\pmc\\task.pmc(163) : warning C4133: '=' : incompatible types - from 'PMC *' to 'Parrot_Interp' 01:41
eew!
chromatic Heh. That's MY warning.
One spot in Parrot where we actually need a void *. 01:42
particle it's YOUR code, too.
chromatic In my defense, Haydn wrote 110 symphonies. 01:43
particle i've heard more than one of them. it's better than this.
TimToady chromatic's music is better than it sounds 01:44
particle a conversion macro would be nice. but, whatever. one warning of many.
chromatic That warning's going to be tough to get rid of. 01:45
particle double cast?
Andy chromatic: Are you a vimmer?
Like God intended you?
chromatic Mostly the problem is that there's no good way to pass a raw pointer to a vtable entry. 01:46
Yep Yep
particle hrmm.
we need a VOID macro :) 01:47
chromatic VOIDIMEANITNOKIDDING
Andy chromatic: Do you have the Align package?
wknight8111 where is __attribute__nonnull__ defined? 01:48
particle in config/ somewhere?
chromatic I haven't installed it yet. It's tempting.
Andy wknight8111: Do this: "make tags" and then "vim -t __attribute__nonnull__"
chromatic config.h, I think.
Andy chromatic: It's butt simple, and it makes it super simple to line up blocks 01:49
:Align * =
lines up your *s and =s vavoom just like that.
It's life-changing
wknight8111 no vim. I'm just trying to get my bearings here. This is a big code base to just jump into
particle include/parrot/compiler.h
Andy wknight8111: do you have ack?
You have to use ack to work on Parrot. It's a law.
wknight8111 i don't have crap, i'm on windows
Andy ack runs on windows. 01:50
petdance.com/ack/
particle get ack, but force install
Andy or just pull down the standalone version
I would have better Win32 support if my win32 guy wasn't such a slacker.
particle whatever.
Andy Oh, sorry, did I say? 01:51
chromatic You said the loud part quiet and the quiet part loud.
Andy COME LET'S WRESTLE
chromatic Good news; RT #50554 isn't a Rakudo problem or a GC problem.
Andy actually, particle, if you'll be around in a bit I wanna do the new IPC::OPen3 stuff if you'll try it out please.
particle i may be around, or i may be playing soccer 01:52
Andy brb 01:53
01:56 Ademan joined
svnbotlt r25595 | chromatic++ | trunk: 02:03
: [PMC] No need to store a new element in a ResizablePMCArray by index when you
: can just push it on.
diff: perlsix.org/svn/parrot/revision/?rev=25595
Andy ack really needs a way to exclude files 02:07
so I can do
ack -w malloc src/ --except=malloc.c
svnbotlt r25596 | petdance++ | trunk: 02:08
: use some malloc macros
diff: perlsix.org/svn/parrot/revision/?rev=25596
wknight8111 this compute_dominators really is a mess 02:12
svnbotlt r25597 | petdance++ | trunk: 02:14
: use mem_sys_buffer
diff: perlsix.org/svn/parrot/revision/?rev=25597
chromatic mmm butter
02:14 dalek joined
svnbotlt r25598 | chromatic++ | trunk: 02:33
: [PMC] Clone Class's ro_variant_vtable when creating a new class from PIR.
: Sharing pointers is good, until you double free them during global destruction
: of vtables.
: Fixes RT #50554, reported by Zev Benjamin.
diff: perlsix.org/svn/parrot/revision/?rev=25598
chromatic Told you it wasn't GC.
Wow, we had 999 commits last month. 02:35
02:40 Partizx joined
Coke chromatic: (tcl patch)... I thought I commented on that. 02:41
chromatic I don't remember.
It only did some renames on PMC declarations.
Oh, and if you want bugs to close, 50554. 02:42
Coke chromatic_NOT_HERE: y... nevermind, then. 02:56
Coke wonders why c can't close tickets, or if he just doesn't like to. 02:59
particle the latter.
Coke as long as he gives me a list. PITA to find them still open weeks later. 03:01
closed that one, opened a new one with his final comment. 03:02
-> 03:03
04:12 rdice joined
peepsalot what's GC ? 05:13
purl somebody said GC was the boehm conservative garbage collector at reality.sgi.com/boehm/cg.html or a really really bad perl "programmer" or GrandCentral.com
Tene Garbace Collection 05:14
peepsalot ok
Tene purl: dance for me
purl Tene: huh?
peepsalot is it possible to compile pbc into a native executable? 05:27
05:35 Ademan joined 05:39 slightlyoff joined
svnbotlt r25599 | petdance++ | trunk: 05:55
: reheaderized
diff: perlsix.org/svn/parrot/revision/?rev=25599
r25600 | petdance++ | trunk: 05:59
: realloc() is a handy tool. We have many places where we check for
: NULLness of a pointer to see if we should realloc() or malloc() it.
: Lots of cut & paste, lots of chances for cut & paste errors. Now,
: mem_sys_realloc(p,n) can handle p of NULL or not.
: I've started overhauling the places we have to decide whether to malloc
: or realloc, and this is the first of that.
diff: perlsix.org/svn/parrot/revision/?rev=25600
Andy The longest commit message I've written yet. 06:00
06:05 amoore joined 06:10 peeps[work] joined 06:13 IllvilJa joined
spinclad Unblinking Eye -- that's what they did to Mr Clockwork Oranger, no? 06:19
06:26 Theory joined
svnbotlt r25601 | petdance++ | trunk: 06:32
: retrofitting to use mem_realloc_n_typed for safety
diff: perlsix.org/svn/parrot/revision/?rev=25601
06:47 iblechbot joined 07:11 uniejo joined
chromatic peepsalot, it's not easy to compile PBC into a native executable. 07:13
For a true native executable, you have to be able to JIT all of the ops you use and can't do anything too dynamic from within Parrot, unless you link against libparrot too.
07:22 paq joined
Tene peepsalot: yes. look at pbc_to_c, iirc 07:30
chromatic pbc_to_exe is a hack that encodes a PBC in the constant segment of an executable which links against libparrot. 07:39
It's basically src/main.c without argv handling. 07:40
08:10 Partizx_ joined 08:11 cosimo joined 09:32 Partizx joined 09:49 iblechbot joined 09:51 alvar joined 09:55 IllvilJa left
svnbotlt r25602 | kjs++ | trunk: 09:59
: [src]
: + fix layout in 1 spot by removing a space
: + add rt ticket no's for todos
diff: perlsix.org/svn/parrot/revision/?rev=25602
10:11 kj joined
svnbotlt r25603 | kjs++ | trunk: 10:12
: [src] beautify layout by aligning "=" characters.
diff: perlsix.org/svn/parrot/revision/?rev=25603
10:30 HG` joined
svnbotlt r25604 | kjs++ | trunk: 10:49
: [punie]
: + standardize on file names:
: - rename punie.pg to grammar.pg
: - rename punie-actions.pm to actions.pm
: + update root.in accordingly
: + update MANIFEST
diff: perlsix.org/svn/parrot/revision/?rev=25604
r25605 | kjs++ | trunk: 10:57
: [punie]
: + standardize on language directory organization
: - add parser and builtins directory
: - update root.in accordingly
: - update punie.pir to adjust path to builtins
: - update MANIFEST
diff: perlsix.org/svn/parrot/revision/?rev=25605
11:45 rdice joined
svnbotlt r25606 | kjs++ | trunk: 11:46
: [PIR] clean up grammar.
diff: perlsix.org/svn/parrot/revision/?rev=25606
r25607 | kjs++ | trunk: 11:54
: [pir] fix copyright notice in file headers.
diff: perlsix.org/svn/parrot/revision/?rev=25607
12:37 rdice joined 12:38 rdice joined 13:02 ian joined 13:03 man_in_shack joined 14:04 Limbic_Region joined 14:08 wknight8111 joined 14:12 rdice joined 14:28 marmic joined
moritz what's the plan for HLLs that can't be transformed to existing PAST nodes while parsing? 14:50
build an intermediate tree?
or write more PAST nodes?
or both?
purl both is Country *and* Western or Shipping *and* receiving or trolls *and* crap floods
pmichaud moritz: PAST is extensible -- a HLL can create additional PAST nodes 14:58
15:01 Andy joined 15:23 contingencyplan joined 15:39 gryphon joined 15:43 contingencyplan joined 15:53 turrepurre joined 16:11 turrepurre joined 16:22 amoore joined 16:51 peeps[work] joined 16:53 Theory joined
particle i think andy broke my parrot :( 17:12
realcleaning....
Andy Oh, come on, how could that happen?
particle backend.obj : error LNK2019: unresolved external symbol _mem__sys_realloc referenced in function _alloc_read
waitlist.obj : error LNK2019: unresolved external symbol _mem__sys_realloc_zeroed referenced in function _alloc_entry
Andy did I miss some? HUh
moritz I'M IN UR PARROT EATING UR X-TERNAL SYMBOLS 17:13
particle damn kittens!
realclean fixed. 17:20
andy++
Andy oh, ok, so it IS ok 17:21
Don't scare me.
I'm very fragile.
particle yep, just needed to realclean. who knew?
Andy I think the realloc stuff wil lsimplfiy a lot of code 17:43
That you had to do a realclena means we have a dependecyt missing. 17:46
that backend and waitlist do not properly depend on memory.h
the change in memory.h shouldhave Just Worked via make
particle could be, rabbit. could be. 17:47
18:11 Theory joined 18:21 Theory_ joined 18:25 alvar joined 18:33 Theory joined 18:47 Theory joined 19:19 slightlyoff joined 19:39 funktio joined 19:46 davidfetter joined 20:10 ruoso joined 20:11 dngor joined 20:13 sjansen joined 20:24 DarkWolf84 joined
peeps[work] which doc would best explain how the languages grammar.pg grammar-actions.pl, and builtins.pir work together? 21:09
Tene Well,the *best* doc is reading grammar.pb, grammar-actions.pl and builtins.pir ;) 21:10
peeps[work] yeah but i don't completely understand the syntax and how they are used together to make complete compiler 21:11
particle they syntax of the .pg files is described in perl 6's S05 21:12
s05?
purl see dev.perl.org/perl6/doc/design/syn/S05.html or dev.perl.org/perl6/doc/design/syn/S05.html
peeps[work] ok
particle however, some of that spec is unimplemented in parrot
Tene peeps[work]: Where was your first inclination to look for that documentation? 21:13
particle languages/abc/ is well documented 21:14
src/grammar.pg and src/grammar-actions.pl
peeps[work] Tene, on the parrotcode.org website, or /docs/compiler_faq.pod ? 21:15
or one of the other dozens of pods in /doc it's easy to get lost in there for a newbie 21:16
particle peeps[work]: if you could write up a list of questions, it would be helpful for our doc re-engineering effort 21:17
it's good to have a newbie's perspective for that task
peeps[work] ok, i might try that some time this weekend 21:19
particle thanks!
Tene peeps[work]: i was more wondering where you looked so I would know where to put it if I wrote such a doc, so it would be easy to find. 21:20
particle we need a table of contents 21:23
peeps[work] Tene, i prefer reading the docs on the website when they are available, easier on my eyes than perldoc in a terminal. but I think the website docs do not include everything in /docs
particle we need to get combust installed in a non-prod environment so we can muck with it to autogen the docs on the website
peeps[work] particle, yes, i was just about to say that. this is like a TOC www.parrotcode.org/docs/ but I think it could use some work 21:24
21:24 Ron joined
particle agreed. 21:24
peeps[work] not sure if it already exists, but a doc that just gives an overview of the dir structure of the project might be nice, explaining the purpose of the main dirs 21:25
particle we have that for t/
i'm not sure about the rest of the repo 21:26
Tene There was the pct doc someone was working on...
particle yes, there are docs under docs/pct/
i don' think they're on the website yet 21:27
Tene Hmm, looks like PGE doesn't deal well with utf-8.
peeps[work] i think my main issue with the documentation from a complete newbie perspective is that it is not linear. there is no easily apparent order to read things so that you have all the prerequisites to understand the next doc.
particle peeps[work]: you can run 'make html' to generate html from all the parrot docs in your local repo
peeps[work] particle, thanks, i'll try that 21:28
particle and if that make target is screwy... patches welcome (likely to config/gen/makefiles/...)
Tene tried passing to rakudo: sub Ć“ { say "Ć“" }
particle tene: do you have icu configured? 21:29
i think if you config parrot with icu, it'll work fine. 21:30
Tene particle: No clue. I'll look into that. Thanks.
particle also see languages/APL/
Tene Determining whether ICU is installed...................................yes. 21:31
particle hrmm 21:32
peeps[work] in languages/abc/abc.pir there are these lines: .include 'src/gen_grammar.pir' and .include 'src/gen_grammar-actions.pir' i guess these are automatically generated? when and how? 21:36
Tene Those lines aren't autogenerated. 21:37
those two included files are, though.
peeps[work] right
cause I noticed the files don't exist in my dir
Tene but they will after you run make. 21:38
particle: did a full rebuild, Makefile.PL claims I have ICU support, is there a way I could check to confirm that icu was used? 21:39
Hmm. languages/APL works fine 21:40
peeps[work] the regular smoke tests do not test the individual languages? 21:41
moritz no, you need 'make languages-smoke' for that 21:42
peeps[work] ok 21:43
particle peeps[work]: look in the makefile in languages/abc 21:51
weekend & 21:55
22:10 IllvilJa joined 22:15 x3m joined 22:16 x3m left 22:23 Theory joined
Tene What's appropriate PAST for a null value? 22:33
jonathan Tene: An actual Null? 22:38
Use PAST::Value but with :returns('Null') 22:39
22:39 purl joined
jonathan Maybe. ;-) 22:39
Tene jonathan: I need something that will be recognized as an end-of-statement marker.
jonathan Tene: <confused look> Isn't that a parsing issue? 22:40
Tene lolcode has to handle parsing at runtime.
jonathan Can you give me an example of what you're after?
Tene it needs an end-of-statement marker for variable-arity ops.
the expression parsing routine is called with a flat list of tokens. 22:41
It can't be a normal value, because that would mean that that value couldn't be used, so it needs to be something unusual. Null is pretty traditional for that. 22:42
jonathan Why can't you do elems = elements the_list, so as to know how many elements the list has?
Or may it contain many statements?
Tene it may contain many statements.
foo bar "baz" "bleh" "frob" 22:43
is that foo( bar( "baz, "bleh"), "frob"), or foo(bar('baz'), 'bleh', 'frob'), etc.
lolcode has no grouping punctuation, and relies on the arity of the functions to dispatch properly. 22:44
for varargs functions, you terminate with MKAY
jonathan If you're passing tokens, then are you doing this in the parser?
Tene The parses generates a call to expr_parse, with every token in the expression as an argument. 22:45
Because you don't know the arity of functions, especially user-defined functions, until runtime.
22:46 TonyC joined
Tene So I need my parser to translate MKAY as an unusual value. 22:48
jonathan What do you actually pass expr_parse? Is this list of tokens a list of match objects?
Tene PAST::Val and PAST::Var, essentially. 22:49
jonathan Ah, so you're calling it from the action, and passing it a list of PAST nodes? 22:50
22:50 Pabellon joined
jonathan I guess there's always an empty PAST::Stmnts 22:51
Tene method expression in actions.pm emits a PAST::Op.new( :name('expr_parse'), :pasttype('call'))
jonathan Stms, I mean.
Ah, OK.
jonathan is starting to understand
Tene After a for $<tokens> { $past.push( $( $_ ) ); } # simplification
jonathan Right. 22:52
*maybe* a PAST::Val with a return type of null and no :value will work.
Tene (does $($_) for values, I have to push on PAST::Op.new( :inline('%r = find_name "$_"') ) for variables and functions, because you can't tell which is which at compile time. 22:53
I'll try it at the airport.
Tene about to leave.
jonathan Alternatively, make MKAY be a :inline('%r = null')
Tene Ahh.
jonathan Then you've got something you can test with ifnull
As a PAST::Op 22:54
Tene If there's nothing clearly better semantically, "easy to test in pir" is good.
jonathan ;-) 22:55
It's maybe a solution. I make no promises about it being the test one. :-) 22:56
*best 22:57
Tene airports.
purl airports is the most likely method.
Andy Y'know, I'm far more worried about the uninitialized memory we use than the memory leaks, chromatic. 23:14
(if he's monitoring this0
jonathan Andy: Are you the rakudo.org ugy? 23:23
*guy
Andy I am.
Need an account to post there? So you can post your comments & notes there? 23:24
jonathan I wrote up my latest hacking...
use.perl.org/~JonathanWorthington/journal/35610
Yeah, that's what I was going to ask. I could bug you to post stuff.
Andy yeah I saw
Or I could make you an account.
Not right this second, I'm on my way out.
jonathan Sure. 23:25
No hurry. Just figure it's more scalable if you give people who're scribbling stuff accounts. :-)
Andy but yes, I would love it if you would do stuff there.
jonathan OK. Make me an account and I shall post. 23:26
Andy Thanks. I love seeing the stuff you're putting together. 23:28
It looks like real code.
I don't know why objects & methods look more real than everything else, but I do. :-)
jonathan Glad you like it. :-) 23:29
I've got quite a lot of Rakudo time this month. 23:30
Andy ok, off I go
bug me later
jonathan Have fun. :-)
23:41 Limbic_Region joined 23:54 mire joined