Parrot 1.2.0 released | parrot.org/ | 303 RTs left | Weekly Priority: Profiling
Set by moderator on 28 May 2009.
cotto and bacek too, apparently 00:00
Austin_Hastings Next time, pucker up. 00:01
Anyone know what the set_*_namespace opcodes do? 00:12
mugwump aren't those like writing 'package Foo;' in Perl ? 00:14
Austin_Hastings Nerp. 00:15
In pir, that would be .namespace ['Foo']
mugwump that's not an opcode
Austin_Hastings As far as I can tell, set_*_namespace edits the namespace tree and inserts a namespace PMC into some named place.
So I could say $P0 = get_root_namespace [ 'parrot' ; 'Foo' ; 'Bar' ] 00:16
and then say set_root_namespace [ 'parrot' ; 'Blorf' ], $P0
And now the Blorf namespace "is", or "is a copy of", the Foo::Bar namespace.
cotto Austin_Hastings, those don't appear to be actual opcodes.
The only reference I can find is in the docs. 00:17
Austin_Hastings Yeah, that's what I was reading when I asked the question.
Building my little parrot glossary.
cotto so it looks like your answer is "syntax error" ;) 00:19
Austin_Hastings What a pity. It looked like something really fun. 00:20
cotto wonders why it's nyi and if the references should be removed 00:22
Austin_Hastings The namespace.pmc has a set_keyed method that appears to do the same thing from the "informal" interface side. 00:23
Based on a cursory read, it should probably be queued for implementation.
But I'd dearly like to know what is supposed to be implemented with that opcode. Is that the "cheat" for use Foo; ? 00:25
00:26 bacek_ joined
Austin_Hastings rehai, bacek 00:27
bacek_ rehai Austin_Hastings 00:28
cotto bacek_, I've gotten myself (temporarily?) unstuck wrt the vtdumper. I'll let you know if I get jammed again. 00:33
bacek_ cotto: ok. I almost resurrected compilers/PIR. It will be useful for L1 00:36
cotto: I'm going to implement proper handling of MULTIs in next few days, btw. 00:37
cotto in pmcc or pmc2c?
00:39 Whiteknight joined
cotto I guess pmcc. 00:44
meaning that it'll require some rewriting once pcc_rewiring lands 00:45
Whiteknight++ #blogging in general
Whiteknight thanks! 00:46
cotto It's interesting to know what you're up to. 00:48
bacek_ cotto: pmcc 00:49
cotto I guess it'll be good to get that code working, even if it'll need rewriting later. 00:50
bacek_ METHODs are slightly more complex beast... 00:53
So, until after pcc_rewiring merge it's waste of time to implement them in pmcc. (IMHO)
cotto Got it. I confused METHODs and MULTIs. 00:55
Tene pmichaud: I got it working... I now can now subclass ruby classes from Perl 6 01:01
cotto Tene is a madman 01:02
Tene?
purl i guess Tene is Stephen Weeks
cotto Tene is also a madman
purl okay, cotto.
cotto Tene++ #we like madness
and Madness
cotto starts sing Our House 01:03
01:05 kid51 joined
dalek TT #515 closed by jkeenan++: Remove old parrot versions from CPAN 01:09
01:25 dduncan joined 01:32 dduncan left
dalek rrot: r39373 | jkeenan++ | branches/pdd30install_stage4:
Removing branch from HEAD per discussion in
01:46
rrot: r39374 | jkeenan++ | trunk/config/init/defaults.pm:
Delete assignment of empty string to 'cygchkdll' per discussion in trac.parrot.org/parrot/ticket/733.
01:49
02:00 silug joined
Tene ... Oh, pynie's clss handling is pretty primitive. 02:04
I should fix it. 02:05
dalek rrot: r39375 | cotto++ | branches/pmc_pct (5 files):
[vtdumper] implement actions.pm for the vtable.tbl compiler
02:06
rrot: r39376 | cotto++ | branches/pmc_pct/compilers/pmcc/src/nodes.pir:
[pmcc] minor wording fix (VTABLE method -> VTABLE function)
02:09
02:10 Coke joined
Coke bacek_: ping 02:14
02:14 particle1 joined
bacek_ Coke: short pong. 02:15
Coke partcl only builds against an installed parrot.
(I have a script setup to clean, up, configure, build, and install into my homedir, so I can "quickly" test changes to parrot.
bacek_: did you see my comment that your branch breaks tcl? 02:16
bacek_ Coke: erm. "nan"?
Coke I fixed the nan issue. and then you fixed it.
but t/tcl_misc.t was still failing.
It was the same failure we had in trunk for a while. you need a merge, perhaps?
bacek_ I've got only one failure (and in trunk too). But can't remember what is was. 02:17
ok, I'll merge trunk first and retest partcl.
Coke trunk to branch?
there should be no partcl failures in trunk; one that looks bad, but all tests pass. 02:18
(that's [lsort])
bacek_ Ah!. lsort. "All 22 tests passed"
This is only one failure that I had in branch and trunk 02:19
Anyway, I'll run rakudo's spectest and partcl test affter merge-before-commit to be sure. 02:20
cotto bacek_, I'm syncing pmc_pct with trunk. It should be done in a few minutes. 02:22
Coke bacek++ 02:23
bacek_ cotto: ok. I'll jump on this train tonight. 02:25
cotto bacek_, did you make any changes to compilers/nqp/src/Grammar/Actions.pm?
bacek_ Coke: too early ;)
cotto it's showing some conflicts
Coke bacek_: I'm just glad you're able to run partcl's test suite.
bacek_ cotto: many false attempts to speed-up parsing.
Coke thank you for taking the time to do that, I /really/ appreciate it.
In return, I'm trying to speed it up. =-)
cotto so they're safe to clobber?
bacek_ cotto: go ahead. 02:28
cotto thanks
bacek_ Coke: I'll try too speed-it up too :) 02:29
cotto here we go 02:30
02:35 janus joined
dalek rrot: r39377 | cotto++ | branches/pmc_pct (356 files):
[pmcc] bring branch up-to-date with trunk
02:35
rrot: r39378 | cotto++ | branches/pmc_pct/MANIFEST:
[manifest] update the MANIFEST, just in case someone feels like trying to build from this branch
02:39
cotto I know it's unlikely, but it's good to be be prepared. 02:40
shopping time! 02:44
03:12 darbelo joined
dalek rtcl: r426 | coke++ | trunk/ (3 files):
Replace history stub with stdlib variant.
03:29
rtcl: r427 | coke++ | wiki/SpecTest (2 files):
library/history.tcl changes this from a failure to a full skip
rtcl: r428 | coke++ | trunk/library/auto.tcl:
pass some of autoMkindex.test
03:39
rtcl: r429 | coke++ | trunk/library/README:
docs - improve
03:40 ruoso joined 04:00 Austin_Hastings left 04:08 petdance joined 04:14 japhb joined 04:29 tetragon joined 04:39 szabgab joined 05:10 cotto joined 05:30 tetragon joined 06:08 burmas joined 06:11 tetragon joined 06:22 iblechbot joined 06:41 tetragon joined, snarkyboojum joined 06:58 GeJ joined 07:45 muixirt joined 08:08 HG` joined
cotto Does freeze/thaw on a past dtrt? 08:11
08:13 iblechbot joined
bacek_ cotto: 50/50 08:18
purl 1
cotto purl is optimistic 08:20
What would be more certain? yaml and json don'd seem to dtrt at all 08:21
08:21 burmas left
cotto From looking at the dump with a hexeditor, it looks like much of the data are there, but it's also only 9.3KB. 08:22
bacek_ cotto: for which pmc? 08:32
cotto for the vtable dumper 08:33
bacek_ bacek@illusion:~/src/parrot/src$ ls -la vtable.tbl
-rw-r--r-- 1 bacek bacek 9288 2009-03-03 11:01 vtable.tbl
looks about same :)
cotto I guess we'll see if everything's there once that dump gets some exercise 08:34
bacek_ indeed.
time to go home.
see you soon
cotto bye for now
08:43 tetragon joined
dalek rrot: r39379 | fperrad++ | trunk/src/pmc/sub.pmc:
[codingstd] remove hard tabs
08:43
rrot: r39380 | tene++ | trunk/runtime/parrot/languages/parrot/parrot.pir:
Fix an issue with PIR library exporting
08:53
cotto perhaps the fact that I've been staring at my computer for the last several minutes indicates that I should go to sleep. 09:14
cotto sleeps
09:33 bacek joined 09:52 masak joined, AndyA joined 09:55 kj joined 10:06 skids joined 10:18 kj left 10:56 tetragon joined 11:57 zz_coke joined 12:04 zz_coke joined 12:07 bkuhn joined 12:11 zz_coke joined 12:14 ruoso joined
bacek cotto? 12:50
purl cotto is probably Christoph Otto <mailto:christoph@mksig.org>
bacek *incoming* 12:56
dalek rrot: r39381 | bacek++ | branches/pmc_pct/compilers/pmcc (4 files):
[pmcc] Disallow nameless function arguments
rrot: r39382 | bacek++ | branches/pmc_pct/compilers/pmcc/src/parser (2 files):
Simplify c_type parsing to be just list of identifiers
13:00
rrot: r39383 | bacek++ | branches/pmc_pct/compilers/pmcc/t (2 files):
[pmcc] Add test for MULTIs
rrot: r39384 | bacek++ | branches/pmc_pct/compilers/pmcc/t/08-multi.t:
[t] Add first real test.
rrot: r39385 | bacek++ | branches/pmc_pct/compilers/pmcc/src/nodes.pir:
Implement add_multi in PMC.
rrot: r39386 | bacek++ | branches/pmc_pct/compilers/pmcc/TODO.pod:
Rename TODO to TODO.pod
rrot: r39387 | bacek++ | branches/pmc_pct/compilers/pmcc/TODO.pod:
Podify TODO.pod
rrot: r39388 | bacek++ | branches/pmc_pct/compilers/pmcc/TODO.pod:
Create some real TODO.
13:04 pdcawley joined 13:05 Whiteknight joined
dalek rrot: r39389 | bacek++ | branches/pmc_pct/compilers/pmcc/README.pod:
Update AUTHORs section in README.
13:06
rrot: r39390 | bacek++ | branches/pmc_pct/compilers/pmcc (2 files):
Implement MULTIs PASTing
bacek msg Infinoid I've got crazy idea for dalek - use nopaste for automatic handling of git svn dcommits... 13:08
purl Message for infinoid stored.
pmichaud is there a way in a PIR sub to determine the number of return values requested by the caller?
actually, just knowing if any return values have been requested would be sufficient for my purposes (i.e., detecting void context) 13:09
13:10 gryphon joined 13:12 sjn joined
Whiteknight pmichaud: Not that I'm currently aware o 13:13
of
the changes Allison are working on now should enable it though 13:14
pmichaud hmmm. 13:17
seems like it ought to be visible somehow. 13:18
bacek pmichaud: results_signature isn't exposed in ParrotInterp. But it can be added easily 13:25
pmichaud it's not critical -- would just give me a useful optimization for postfix:<++> 13:26
bacek In C++ Russia no-one use postfix++ :) Because of performance issues. 13:29
nopaste "bacek" at 114.73.27.220 pasted "results_signature exposure from ParrotInterp" (16 lines) at nopaste.snit.ch/16785 13:31
bacek pmichaud: code from nopaste should work. But it will give performance hit, because you'll have to create new pmc for ParrotInterp... 13:32
pmichaud why create new PMC? Why not just use getinterp ? 13:33
bacek Ah. getinterp doesn't create new PMC? 13:34
pmichaud it returns the current interpreter, I think.
bacek $1 = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
IGLOBALS_INTERPRETER);
I never look at this part of Parrot... 13:35
pmichaud it does clone the results signature, though, which is ugly.
If checking the calling status requires making a clone, that invalidates the optimization I was hoping to make in the first place. 13:36
bacek Returning bare signature is little bit dangerous. 13:37
pmichaud yes, allison++ and I have had this discussion.
introspection needs to be inexpensive, though.
bacek But if we can make it read-only, than we can return it
(checked code) Looks like it's possible to make CallSignature read-only after build and return bare pointer to it. 13:41
Ok, It's not... 13:46
pmichaud It's not that important. We'll live with what we have now, and I'll put it as a todo for allison to consider as part of the calling conventions refactor.
14:02 dukeleto joined 14:05 Steve_H joined
NotFound If we have inf and infinity, why we don't have nanity togheter with nan? 14:11
szbalint I'm sure there are inf reasons but nan occurs to me atm 14:12
I jest, I jest
NotFound :D
pmichaud I think it would be naninity, wouldn't it? 14:17
bacek vote for "not-a-number-at-all" 14:18
14:19 hudnix joined
NotFound maybe-a-number%(some percent) 14:20
Togheter with a new pmc: FuzzyFloat 14:22
bacek Don't forget "just my 2Ā¢" :)
NotFound € Ā¢ or $ Ā¢ ? 14:23
bacek de ja vu.
It's not a number anyway.
NotFound maybe
bacek Oh! "*" should produce NaN too.
no, it can be number... 14:24
Ah! "*" will give you some random float!
NotFound Then '/' must give you the winner. 14:25
bacek Problem is that "$N0 = *; $N0 == ORLY" should produce string "YRLY!" 14:27
And no one understand IMCC guts to implement it
particle this isn't LOLPIR
particle likes IaNaN 14:28
"i am not a number"
bacek singing IaNaNaNaN
NotFound She's got the look!
bacek ..with gipsy tune
14:31 Steve_H joined
bacek Anyway, it's tomorrow there already. Bed time. 14:32
.zzZZZ( $bacek.ooO( .zzz ) )
mugwump oh, the inanity 14:40
NotFound Did we have some version of parrot logo in some vector format? 14:45
particle hey mugwump! 14:47
purl i guess mugwump is in a fantasy world of delusions and poor punctuation. or a purl hacker or mr. 20/20 hindsight or hungry
Tene Whiteknight: ping 14:52
pmichaud oh how cool: www.snopes.com/photos/natural/parrotflower.asp
dalek rdinal: 533154c | tene++ | src/builtins/eval.pir:
Fix encoding issues
14:59
kudo: b88c33d | tene++ | src/parser/actions.pm:
Register foreign types at compile time.
kudo: 2653235 | tene++ | perl6.pir:
Fix an issue with foreign languages loading Perl6 libraries without exported symbols... probably the wrong fix
mugwump hello particle ... how's the mini running? :) 15:01
particle lovely, thanks. needs a wash, though :)
Tene I got my steme compiler loading foreign libraries too... but it segfaults in the GC. 15:02
particle you hot-tubbing your way across the usa this year?
Tene When I run it with -G it runs fine.
mugwump heh, nothing planned yet
particle tene: gcdebug runcore is your slow, but helpful friend
Tene particle: yes, crashes under gcdebug too, and always in the same place 15:03
when trying to mark a continuation.
poking around with gdb, it looks like it has some nonsense values
particle does parrot default to optimized build yet?
Tene No. 15:04
mugwump particle: but the 2010 linux.conf.au is in my home town :D
particle didn't think so
mugwump: i'm tossing around the idea of osdc this year
Tene I had to rebuild without --optimize to get a reasonable bt
mugwump ah, 3am... 15:06
15:06 viklund joined
mugwump zonks 15:06
15:06 HG` joined 15:14 whoppix joined 15:21 rdice joined
Whiteknight Tene: pong 15:22
15:24 dalek joined 15:25 pmichaud_ joined
pmichaud_ ping feather.perl6.nl 15:25
purl 10 packets transmitted, 10 received, 0% packet loss, time 9013ms, rtt min/avg/max/mdev = 120.713/121.442/122.195/0.521 ms
dalek kudo: 5745c6b | pmichaud++ | src/ (7 files):
Convert 'deref_objectref' dynop to 'deobjectref' and 'descalarref'.
15:29
kudo: 9e2b9ad | pmichaud++ | src/builtins/assign.pir:
Better handling of assignment of ObjectRef values. Fixes RT #66280.
kudo: 10a9b23 | pmichaud++ | :
Merge branch 'master' of git@github.com:rakudo/rakudo
Tene Whiteknight: I've got a GC segfault... interested? 15:30
NotFound CAN I HAZ SEZFAULT?
Tene U WANTZ? 15:31
15:31 Theory joined
NotFound Gimme two 15:31
Tene NotFound: go download and build steme: github.com/tene/steme/
15:31 sekimura joined
NotFound Tene: done 15:33
make test pass
Tene NotFound: do you have Parrot installed somewhere, or only dev uninstalled copy?
NotFound Installed
purl Installed is easy as well.
NotFound Eh, no, I was using the build tree only 15:34
Tene I'm trying to remember how to set up symlinks to get languages to work with load_language from a non-installed copy of Parrot 15:35
Ah.
cd .../parrot/runtime/parrot/languages ; ln -s ~/src/rakudo perl6 15:36
or, I guess, just cd ~/src/steme ; ln -s ~/src/rakudo perl6
will work too
NotFound Done again using the installed one. Do you want I test again with the parrot build tree renamed?
Tene gist.github.com/123673 -- running nap.scm fails with a segfault
I haven't put it in the test suite yet, as I haven't set up different test targets, and I don't want to require properly-configured rakudo just to run the tests. 15:37
Whiteknight Tene: Sure
Tene Whiteknight: gist.github.com/123673 15:38
pmichaud lunchtime -- bbl 15:39
Tene Whiteknight: it requires building steme and setting up symlinks so Parrot can find rakudo by name
15:40 rdice joined
Whiteknight don't have a smaller test case? 15:40
Tene No, I don't. 15:41
NotFound Did we have some guide on how to install languages?
Tene NotFound: put a symlink named 'perl6' that points to the rakudo dir in either the current directory or in ~/src/parrot/runtime/parrot/languages/ 15:42
or, if you have an installed parrot, /.../parrot/lib/1.2.0-devel/languages/
dalek rtcl: r430 | coke++ | trunk/ (2 files):
Remove some crufty reloads of the .pbc file which are no longer needed.
15:44
NotFound Tene: segfaults even without the Naptime.pm file
Tene Yes, it segfaults when load_bytecode-ing perl6.pbc
(or cardinal.pbc)
(Well, load_language-ing, but effectively the same) 15:45
NotFound backtrace shows that is instantiating something while doing sub pragmas, I suppose that is some :load sub. 15:47
$ parrot steme.pbc nap.scm 15:50
Null PMC access in get_string()
Tene That's not what I get at all.
NotFound Segfaults only using the fakecutable
Tene NotFound: did you run with --gc-debug?
NotFound No 15:51
Tene For me, it segfaults however I try to run it. fake, installed, or dev parrot
NotFound current instr.: 'parrot;P6metaclass;register' pc 654 (runtime/parrot/library/P6object.pir:434)
called from Sub 'perl6;Perl6Role;onload' pc 3721 ((unknown file):-1)
called from Sub 'load_language' pc 20189 (src/gen_actions.pir:2032)
15:53 iblechbot joined
NotFound There is no load_language around src/gen_actions.pir:2032 16:03
Tene no, the PIR reporting lies. 16:04
cotto imcc-- #I was running into that too
NotFound Isn't even in that file
load_language is called from a sub that is under .HLL 'parrot'. P6object guess the HLL namespace from the caller. Np wonder it fails. 16:07
Tene ...
um, no, not quite.
p6object is being called from perl6.pir
which is .HLL 'perl6'
You need to put the load_language call in .HLL parrot right now to deal with a Parrot bug with loadlib and PMCs. 16:08
so that the .loadlib 'perl6_group' happens in .HLL 'parrot'
otherwise you end up with Perl6MultiSub being created in .HLL 'steme' 16:09
instead of 'parrot'
NotFound Tene: yes, but I'm not sure if putting the .HLL 'parrot' after the lang HLL is a tested way. All test I've do doed it before the .HLL 'lang'
Tene but rakudo definitely works just fine when loaded like that. I can load and use rakudo from cardinal exactly the same way.
NotFound: rakudo currently relies on that behavior working. it uses .HLL 'parrot' in just a few files to add things to core parrot classes. 16:10
NotFound Tene: yes, but that bunch of hacks and workarounds does not help to debug the problems.
Tene What hacks and workarounds? 16:11
The only workaround is putting the load_bytecode call in .HLL 'parrot', which I'm quite confident wouldn't cause problems here.
And works fine in several other contexts. 16:12
NotFound Mixing HLLs in one file, guessing HLLs, using include instead of loading...
Tene What is being guessed? 16:13
NotFound The HLL in the 'register' method
Tene It doesn't guess the HLL, it fetches it. It's not wrong there. Add a 'say' after it's fetched to confirm. That part of P6object has worked properly for a very long time. 16:15
particle mixing hll in one file is not a hack, it's a supported feature. 16:16
NotFound particle: I remember have seen a question about that in the mailing list without a clear answer. 16:17
nopaste "tene" at 166.70.38.237 pasted "confirming the HLL in P6object" (73 lines) at nopaste.snit.ch/16786
particle ok, well for a long time it's been a supported feature, but maybe there are more recent questions i don't know about it.
s/it/.$/./ 16:18
Tene I don't remember seeing that question. I must have missed it. 16:19
NotFound Maybe I'm wrong, I'll try to find it later.
nopaste "NotFound" at 213.96.228.50 pasted "Another test..." (25 lines) at nopaste.snit.ch/16787 16:23
NotFound Is something wrong in this test?
Tene did you trim 'parrot' lines from the output? 16:24
NotFound No, is all the output except last lines of backtrace 16:25
16:26 AndyA joined
NotFound $ ./steme nap.scm 16:27
parrot
perl6(13 times)
Segmentation fault
purl (Core dumped)
Tene look at my paste for the same thing
... oh, I know what it is.
I think
NotFound Strange that difference between the pbc and the fakecutable
nopaste "tene" at 166.70.38.237 pasted "Oops, forgot that step" (5 lines) at nopaste.snit.ch/16788 16:28
Tene Parrot doesn't complain when it's unable to find things that are loadlib'd, it just doesn't load them, and then later Rakudo references classes from custom PMCs that aren't loaded. 16:29
try that.
check with strace to confirm that they get found 16:30
16:30 Austin_Hastings joined
Tene strace -estat is what you want. 16:30
NotFound The difference between the fakecutable and the pmc, then, smells like they are using different configs 16:31
Tene That sounds possible. They work identically for me.
So, I'm no help here. 16:32
NotFound Yes, with that links the pbc fails the same way as the fakecutable 16:33
Tene OK, good
16:34 Psyche^ joined
NotFound But with just one perl6 in the output in both now.... uh... let me build steme again 16:34
No, the pbc now crash with just 2 parrot and 1 perl6, and without the die message 16:36
The segfault is inside a deep stack of mark calls, triggered by some object instantiation. 16:40
Tene Yes, that's what I see too. I posted my bt on gist.
does yours look the same?
cotto seen allison 16:41
purl allison was last seen on #parrot 1 days, 15 hours, 3 minutes and 36 seconds ago, saying: and, yes, base_type comparisons will work fine for this (and be very fast) [Jun 3 01:33:45 2009]
NotFound Tene: no, there is a PMCProxy in mine 16:42
Tene NotFound: you run under gc-debug? 16:43
NotFound Tene: no, default options for all
In both cases the marks are triggered by get_new_pmc_header. Looks like a gc related problem somewhere before. 16:45
16:49 darbelo joined
cotto Hi darbelo. How goes the test writing? 16:50
NotFound Regarding the loadlib failing silently, I think a dlfunc_nonull, or alternatively a dlfunc_maybenull, will be helpful. 16:51
Triggering an excpetion if you absolutely need that func.
Someone objects adding dlfunc_nonnull to experimental.ops? 16:54
darbelo NotFound: ISTR that, in PIR, if you do $Pn = loadlib 'foo', the truth value of $Pn tells you if the loadlib failed.
NotFound darbelo: yes, but lots of code doeesn't check at all
Mmmm... I can try a simpler approach: check the result in the debugger runloop 16:56
Or maybe a more generic solution may be to have a NCI PMC that evaluates to false and dies if invoked. 16:58
Looks like the NCI PMC need no changes to do that. 17:01
darbelo cotto: slow, lots of interrruptions lately as I'm planning my birthday party. 17:02
cotto Well, happy birthday then!
NotFound excepcion = new 'Birthday' 17:04
darbelo Thanks, I'll be mostly useless today, but should be back on track by tomorrow.
NotFound: you didn't check if the loadlib failed :) 17:05
NotFound darbelo: I also didn't check my ortography 17:06
darbelo Don't worry, I don't expect people to use accented letters on IRC ;) 17:07
pmichaud (loadlib) does it help at all if perl6.pir does the .loadlib directives _before_ the .HLL ?
(since it doesn't really matter to the loadlib itself)
NotFound darbelo: english ortography, not spanish :D
cotto party = new ['Happy';'Birthday'] 17:09
throw party
NotFound I'm testing now returning an unitialized NCI instead of Undef in dlfunc, nothing changes in the steme problem.
Forget what I said before, the difference between the pbc and the fakecutable was because a wrong symlink. I still don't understand why the symlink absence does not affect both. 17:16
purl NotFound, I didn't have anything matching what i said before, the difference between the pbc and the fakecutable was because a wrong symlink. i still don't understand why the symlink absence does not affect both
NotFound purl: no wonder
purl NotFound: huh?
particle hee
NotFound AFK for a while 17:22
dalek rtcl: r431 | coke++ | trunk/runtime/builtin/ (50 files):
Add a tcl-only faux-profiler so we can at least figure out which functions
17:36
cotto When calling subs in pir, is 'foo'() or foo() the preferred form? 17:43
for a sub named foo
jonathan cotto: I tend to use foo if it's all \\w+ chars. 17:53
cotto: But the method form that let you write $P0.bar went away, so maybe the unquoted version of the sub one may too...though I haven't heard any plans for that.
particle i prefer quotes 17:55
cotto ok. For some reason I though the unquoted version was going away, but I don't like all the extra quotes.
dalek rtcl: r432 | coke++ | trunk/runtime/ (3 files):
- collapse several pir.'emit'() calls into a single call.
particle i don't like the quotes, but i use them defensively 17:56
pmichaud I haven't heard anything definitively about sub quotes and names. I tend to always use them to avoid the possibility of conflicting with a symbol name (which does occur). 17:58
dalek rrot: r39391 | cotto++ | branches/pmc_pct/compilers/vtdumper/vtdumper.pir:
[vtdumper] add code to freeze the past to a file
17:59
cotto speedy
dalek rtcl: r433 | coke++ | trunk/tools/profiler.pl:
Add script to dump to summarize the .prof output
18:01
rrot: r39392 | cotto++ | branches/pmc_pct/compilers/vtdumper/t (3 files):
[vtdumper] start writing some tests
18:03
Infinoid particle: ping 18:13
particle Infinoid: pong
Tene pmichaud: no, that doesn't help with loadlib. 18:19
pmichaud Tene: so, it has to do with the load_bytecode/load_library being called from a HLL? 18:21
dalek rtcl: r434 | coke++ | trunk/runtime/variables.pir:
use more .tailcall
18:30
rtcl: r435 | coke++ | trunk/runtime/variables.pir:
remove unneeded clones, use .tailcall
18:35
Tene pmichaud: yes, exactly 18:39
dalek rtcl: r436 | coke++ | trunk/runtime/builtin/ (2 files):
code cleanup, remove unused vars
pmichaud I would not be at all opposed to having HLLCompiler provide a 'load_bytecode' method that does the load_bytecode from the Parrot HLL :-) 18:44
so that instead of
load_bytecode file
one does
compiler.'load_bytecode'(file)
(which would then occur from the 'parrot' HLL :-) 18:45
or something equally silly like that.
maybe even
compiler.'parrot_load_bytecode'
or even still 18:46
$P0 = get_root_symbol ['parrot';'PCT';'HLLCompiler'], 'load_bytecode'
$P0(file)
those might be reasonable (as in "workable") workarounds.
particle .'load_root_bytecode'() 18:47
pmichaud it's not really loaded at root, so no.
particle oops, sorry, think-o 18:48
i meant 'load_parrot_bytecode', following 'get_root_namespace' etc
however that sorta implies load_hll_bytecode and load_current_bytecode, and that last one is confusingly named 18:49
Whiteknight Tene++ # finding me a helper 18:50
pmichaud except there's no concept in parrot of 'load_hll_bytecode' or 'load_current_bytecode. 18:51
18:51 gryphon joined
pmichaud bytecode is loaded into the namespace given by information in the bytecode itself, not in the caller. 18:51
really the code is just
.namespace ['PCT';'HLLCompiler'] 18:52
.sub 'load_bytecode'
.param string filename
load_bytecode filename
.end
actually, come to think of it, I suspect I can solve it in rakudo's actions.pm. 18:53
and not need the extra stuff.
18:54 ruoso joined
Tene Whiteknight: looks like he's going to work out? 19:17
Whiteknight yeah, hes on the team 19:19
cotto "he"? 19:23
purl "he" is, like, a typo for "she"
19:24 autark joined
Whiteknight cotto: Tene helped me find a developer for a contract I'm working on 19:28
cotto This is nice. I seem to have found a 1-line imcc segfault. 19:30
Whiteknight really? Do tell
nopaste "cotto" at 96.26.202.243 pasted "one-line imcc segfault" (3 lines) at nopaste.snit.ch/16789
cotto tecnhically 3 lines, but 2 aren't interesting 19:31
it'll probably be an easy fix 19:32
Whiteknight wow, that one function call causes a segfault? 19:35
cotto Anyone here care to fix it? If not I'll just file a quick tt.
Whiteknight that's rediculous
yeah, do the TT
19:42 burmas joined 19:44 darbelo joined
dalek TT #737 created by cotto++: imcc segfault when assigning to undefined retval 19:45
cotto iwbn if the tickets from trac had something less redundant than '[parrot-tickets] [Parrot]' as a prefix 19:52
19:52 burmas left 20:04 Steve_H left
dalek rrot: r39393 | cotto++ | branches/pmc_pct/compilers/vtdumper/t (2 files):
[vtdumper] add some more tests for function parsing
20:23
cotto It's surprisingly painless to manipulate a past in pir. 20:59
dalek rrot: r39394 | cotto++ | branches/pmc_pct/compilers/vtdumper/t (3 files):
[vtdumper] add tests for sections, factor out some repeated code
21:00
21:03 Austin_Hastings joined
Tene I should post that segfault to the list... 21:13
cotto Mine or another? 21:23
Tene Mine. 21:25
particle what's with all the segfaults recently? did chromatic go on a bender and put easter eggs in the gc? 21:34
Tene this is the first one I've seen in a while.
jonathan I'm generally managing to make Parrot segfault less these days that I used to. 21:36
I did find one the other day, but it was the first segfault that wasn't self-induced I'd had for a while. 21:37
21:37 Whiteknight joined
Tene That GC segfault with steme and other langauges is frustrating, though 21:37
jonathan Rakudo is in a bizzare situation where we can't run it under -G (at least, last I checked) because it explodes. 21:38
particle 'tis bizarre, indeed
jonathan On Win32 anyway.
Tene Ah.
jonathan I didn't manage to make much headway into why. 21:39
Tene I was gonna say... works fine for me.
jonathan Well, I didn't try for a few days at least, maybe over a week.
Tene purl: msg masak Had something to talk to you about... maybe I'll have remembered by the time you get this 21:41
purl Message for masak stored.
21:54 eternaleye joined
cotto has had enough of tests for the day 21:56
dalek rrot: r39395 | cotto++ | branches/pmc_pct/compilers/vtdumper/t (5 files):
[vtdumper] add the last set of tests, plus some code simplification
21:57
21:58 Limbic_Region joined 22:03 eternaleye_ joined
dalek rrot: r39396 | cotto++ | branches/pmc_pct/compilers/vtdumper (2 files):
[vtdumper] fix whitespace and remove an unneeded file
22:07
22:09 mj41 joined 22:32 rg joined 22:33 kid51 joined 22:34 bacek joined 22:48 dan joined
bacek Good morning 22:50
purl And good moroning to you, bacek.
dan Is there functional data structures PMCs planned?
bacek Infinoid: (dalek) Yes. At least for branches. 22:51
dan: for example?
dan For instance a list where I can add an item and get a new list back that include the new element leaving the old list intact but that shares much of the old list so it incurs minimal overhead. 22:53
Data structures that are the bread and butter of functional languages.
dalek rrot: r39397 | jkeenan++ | trunk/MANIFEST:
Add some files that came in with recent merges.
22:54
Austin_Hastings Ah, the infamous LinkedList PMC.
dan The point of functional data structures is to be immutable. Every "modification" only yield a new structure. Linked List are not immutable. 22:55
Austin_Hastings I stand corrected. 22:57
In that case, probably not.
bacek dan: I don't that anyone going to implement them in parrot. But you can implement them as DynPMC in your HLL
dan What are DynPMCs? 22:58
purl DynPMCs are treated the same way as pmcs, as far as dumps go
Whiteknight dan: dynpmcs are PMC types, written in C, that get dynamically loaded into Parrot at runtime 22:59
dan So they are exactly like PMCs but user-written and loaded at runtime?
Austin_Hastings They're better than regular PMC's, because when your DynPMC causes the tcl regression tests to fail, Coke's head will explode. 23:01
:)
darbelo Actually, that would only happen if Coke incorporated those DynPMCs into partcl. 23:02
bacek dan: yes, they are regular PMCs.
Austin_Hastings Of course, you have to load them. So they can't be primitive types without going through the load-and-install process first. But after that, you're okay.
darbelo: Are you sure? 23:03
purl You still have ALL THREE lifelines left!
darbelo I've broken the decnum-dynpmcs a few times and nobody noticed. 23:04
Austin_Hastings I was under the impression that Bacek had committed pod update changes to a separate branch and *still* caused partcl to regress. 23:05
darbelo a dynpmc that you haven't loadlib-ed can't harm you. So to speak.
bacek Austin_Hastings: I didn't touch pods!
Austin_Hastings laugh
darbelo dan: Undocumented as it is the decnum-dynpmcs project might be of interest to you. 23:06
dan What is it?
purl it's it!
darbelo decnum-dynpmcs is code.google.com/p/decnum-dynpmcs/ 23:07
dalek TT #266 reopened by jkeenan++: Packfile API cleanup: rename Parrot_readbc to Parrot_pbc_read, _loadbc => ...
darbelo decnum-dynpmcs is also a 2009 GSoC porject 23:08
purl okay, darbelo.
darbelo decnum-dynpmcs is also a set of 'big' decimal arithmetic types for parrot. 23:09
purl okay, darbelo.
darbelo dan: sorry, just trainig the bot a bit.
purl: decnum-dynpmcs?
purl it has been said that decnum-dynpmcs is code.google.com/p/decnum-dynpmcs/ or a 2009 GSoC porject or a set of 'big' decimal arithmetic types for parrot.
darbelo It is an example of how to build dynpmcs that live outside the parrot core and the scope of a particular language. 23:11
dan How hard would it be to share structural data between PMCs? 23:12
Austin_Hastings dan: You mean between separate instances of the same PMC (class) ? 23:13
dan Yes
Austin_Hastings It's fairly easy. (Maybe too easy.) 23:14
Think of them as C++ classes.
You've got some "initial" data item. 23:15
You create a new PMC, based on the "initial" pmc, which "edits" the initial value somehow.
dan Lots of functional data structures are trees. I can get a tree to give me another tree that points at most of his own leafs plus some new ones execpt some old ones. I want the leafs that no tree is looking at anymore (because it has been garbage collected) to be garbage collected to.
Austin_Hastings I was just going to say that you have to maintain your references correctly, for GC purposes. 23:16
If you have a look at the "Namespace" pmc, you'll see an example of this. Each namespace has a link to its parent. (Namespaces are a tree. Surprise.) 23:17
darbelo dan: What you probably want is for the leaves to be PMC's themselves, and make the 'tree' PMC a collection of pointers.
Austin_Hastings Yeah. 23:18
darbelo++
Maybe a resizable array of node indices, with the ancestor as backing store.
bacek Actually you don't even need new PMC. Hash behave exactly in this way iirc 23:19
Hash.clone makes shallow copy leaving values untouched
darbelo bacek: Yes but the interface for a lispy-list is quite different from a hash. 23:20
23:20 tetragon joined
darbelo It might work as a subclass, tho. 23:20
bacek darbelo: you can implement your class in PIR on top of Hash 23:21
dan Yes, it makes a lot of sense to do that.
Austin_Hastings dan: What behavior are you looking for?
23:23 snarkyboojum joined
dan What behaviour am I looking for in what? 23:23
Austin_Hastings In your data structures.
dan Immutability and cheap creation of new structures.
Austin_Hastings For instance, parrot arrays tend to be lists, more than arrays. This wouldn't be a great thing if you wanted indexes to be one of your inherited traits. 23:24
dan There's a functional structure called a finger tree that lets you make a list out of a tree so you don't have to reindex everything all the time you create a new list but I haven't completely grokked it yet. 23:25
It's based around having nodes know how many leaves are under them so you can compute the index quickly.
Austin_Hastings Sure. Similar to nested sets. 23:26
But if I have a list, like @a = (1, 2, 3), and I say @b := @a, that's a cheap copy. (Both ref the same data)
Now when I say @b.unshift(0), presumably you want to fork @a and @b, so that @a = (1, 2, 3), while @b = (0, 1, 2, 3), right? 23:27
dan yes
Austin_Hastings So one way to do that would be to treat the two "arrays" as "lists." In that case, you could still be storage-efficient, because you could make @a be a sub-list or sub-tree of @b, right? 23:28
dan Probably.
purl Really? Probably? Are you Certain it's not certain? Are you sure it's unsure? I think you need to look Because \\ an asshole.
Austin_Hastings But if you wanted them to be "arrays" and not "lists" it wouldn't work so well, because you would want a[2] to return 3, and b[2] to return 2, etc. 23:29
Someone has been teaching the robot bad things.
dan Conceptually, they are frozen arrays because they are immutable but in practice, they don't have to be. 23:30
Austin_Hastings If you store them as trees, or lists, then your index operation is expensive.
If you store them as arrays, some other stuff gets expensive.
(Insert, delete, you know the drill.)
So you should probably develop a priority list of operations. 23:31
dan There are clever algorithms to work around that but I'm just starting to get into them.
Austin_Hastings Right.
It's a question of priorities.
Some things you will get "for free" based on implementation. Other things you have to work at. 23:32
23:32 patspam joined
darbelo Austin_Hastings: the finger-trees dan mentioned are a way to make "lists" have O(1) indexing. 23:33
They are trees where all the leaves are at the same (bottom-most) level 23:34
dan I heard about a vlist that would do the same job, provided you only append at the end. Clojure uses them. 23:35
darbelo A "list you only append at the end" sounds like an array to me. 23:36
Austin_Hastings Okay, sounds like dan will be working on a set of Tree PMCs.
:)
dan Yes, sounds like it :)
Lots of functional structures are built around laziness, is easy it to do in parrot? 23:38
darbelo It depends on how lazy you want to be :)
Laziness would probably require a lot of work ;)
dan Isn't Larry Wall touting the benefits of laziness since years? :-P 23:39
darbelo That's becouse he already did the hard work. Now he just reaps the beneffits. 23:40
dan By laziness I mean lazy evaluation. 23:41
darbelo And now that you mention it: rakudo is supposed to have some lazy stuff in it. So lazy behaviour must be possible on parrot.
I don't know how easy it is to do. 23:42
Austin_Hastings Well, closures + continuations + coroutines = defer as much as ever you can. 23:43
dan Is there an O'Reilly book planned to come out when Parrot 2.0 is released? 23:44
Austin_Hastings dan: Don't know. 23:47
dan Gotta go. Thanks for the help 23:50
Austin_Hastings sure. adios