Parrot 1.2.0 released | parrot.org/ | 306 RTs left | Weekly Priority: Apply Patches, Fix Bugs, Close Tickets
Set by moderator on 20 May 2009.
darbelo Should I open a ticket or is this something I'm doing wrong? 00:02
dalek cnum-dynpmcs: r47 | darbelo++ | trunk/ (4 files):
Replace����/trunk/src/pmc/decnum.pmc

   :45)
   ����Delete����/trunk/src/pmc/decnum2.pmc
   Enough prototyping, global-context is the way of the future.
Ditch the per-PMC prototype. Rename DecNum2 to DecNum. Modify examples accordingly.
00:21
00:29 ruoso joined 00:34 bacek joined
dalek kudo: b516413 | pmichaud++ | src/ops/perl6.ops:
Add root_new dynop.
00:47
kudo: 20ec24c | pmichaud++ | src/builtins/ (11 files):
Convert new of parrot-based things to root_new (src/builtins)
kudo: 6079a97 | pmichaud++ | src/classes/ (20 files):
Convert new of parrot-based things to root_new (src/classes)
kudo: 064be63 | pmichaud++ | src/ (4 files):
More new -> root_new conversions.
kudo: f08f5ad | pmichaud++ | :
Merge branch 'master' of git@github.com:rakudo/rakudo
darbelo Nevermind, I just saw TT#692. 00:53
00:55 ruoso joined 00:57 hiroyuki_y joined
cotto Isn't Parrot fun! You never know if it's insane or if you are. 01:07
01:14 ruoso joined 01:18 Whiteknight joined 01:19 bacek joined
Coke_afk Tene: APL? Danke. 01:27
Tene why?
Coke_afk darbelo: (catching up) - I just opened a ticket about that.
Coke Tene: if you're working on APL on Parrot, because I actually care about that language. 01:28
Tene Out of curiosity, why do you care about APL? Just general interest, or do you have a use for it?
Coke I care about only because Patrick and I worked to implement it. 01:29
Tene ah
Coke why did I do that? Basically, because Chip dared me.
Tene last I looked, i tried to move it to a .HLL, but then it couldn't load dynops oslt. 01:30
I feel more confident that I can get it working properly now.
Coke does it even build at this point?
Tene I've heard a lot about chip, but he left before I arrived, I gather.
Dunno... I'll find out once the girlfriend is done showing me silly videos. ☺ 01:31
cotto ooh. advanced smilies 01:32
dalek rrot: r39001 | whiteknight++ | branches/gc_internals:
Creating a branch to continue cleaning up the internals of the GC
01:37
rrot: r39002 | whiteknight++ | branches/gc_internals/src/gc/alloc_memory.c:
[gc_internals] move memory.c -> alloc_memory.c
01:40
rrot: r39003 | whiteknight++ | branches/gc_internals (1 files):
[gc_internals] move register.c -> alloc_register.c
01:42 ruoso joined
dalek tracwiki: v20 | whiteknight++ | GCTasklist 01:43
tracwiki: trac.parrot.org/parrot/wiki/GCTask...ction=diff
rrot: r39004 | whiteknight++ | branches/gc_internals (1 files):
[gc_internals] move resources.c -> alloc_resources.c
02:01 cotto joined
Coke nick afk_coke 02:06
dalek rrot: r39005 | whiteknight++ | branches/gc_internals/src/gc (3 files):
[gc_internals] start collapsing pools.c (nee smallobject.c) into api.c and system.c as appropriate
02:07 tetragon joined
dalek rrot: r39006 | whiteknight++ | branches/gc_internals (1 files):
[gc_internals] initial move of src/malloc.c and src/malloc-trace.c to src/gc/malloc.c and src/gc/malloc_trace.c. Needs cleaning
02:09
tracwiki: v21 | whiteknight++ | GCTasklist 02:13
tracwiki: trac.parrot.org/parrot/wiki/GCTask...ction=diff
02:27 mikehh_ joined 02:33 particle1 joined 02:41 janus joined 02:42 eternaleye joined 03:20 donaldh joined 03:53 Theory joined
dalek rrot: r39007 | pmichaud++ | trunk (3 files):
[pmc]: Add C<root_new> opcode to allow creating PMCs from foreign HLL classes
04:07
04:11 eternaleye joined 04:33 cotto joined 04:53 Theory joined 05:02 japhb joined 05:37 particle2 joined
dalek rdinal: aecc5ad | tene++ | cardinal.pir:
Also set the namespace to be returned to a calling language.
05:47
rdinal: 144fac4 | duff++ | build/Makefile.in:
Use the parrot build dir for parrot and pbc_to_exe

blithely use the bin_dir from parrot_config which will be a lie if parrot is not actually installed anywhere. Changed the makefile to always use parrot's build dir for the parrot and pbc_to_exe executables
  (emulating rakudo here)
rdinal: 3d6959d | tene++ | :
Merge commit 'perlpilot/master'
mikehh codetest failures (+ TODO pass) - otherwise make -k fulltest PASS 05:51
06:00 cognominal joined 06:15 eternaleye joined
dalek kudo: e6b4630 | pmichaud++ | docs/ROADMAP:
Update ROADMAP.
06:15
Tene Nice... APL can't even generate a makefile... 06:23
:)
Coke: I have a local patch that gets paraplegic to build. Can't run tests, though. 06:37
06:40 iblechbot joined 06:42 bsdz joined 06:50 flh joined
Tene work with rakudo, too, through eval 07:15
pmichaud: utf8 isn't passed through properly with eval... any ideas? 07:18
07:20 donaldh joined
mikehh nopaste? 07:23
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
purl i heard nopaste was at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others)
nopaste "mikehh" at 90.209.117.226 pasted "patch for some codetest failures at r38999" (63 lines) at nopaste.snit.ch/16628 07:27
mikehh this is a patch for some codetest failures at r38999 from make -k fulltest -> nopaste.snit.ch/16628 07:29
dalek rrot: r39008 | cotto++ | trunk (2 files):
[codingstd] a couple of codingstd fixes, patch courtesy of mikehh++
07:55
cotto mikehh, thanks 07:58
dalek rrot: r39009 | cotto++ | trunk/t/codingstd/copyright.t:
[t] untodo the duplicate copyright test, which seems to be passing
07:59
cotto I split it in two, since it was doing two different (if small) things.
cotto mikehh++ for that one too ;)
08:08 donaldh left 08:44 bacek joined 10:33 cognominal joined 10:39 particle1 joined
dalek rrot: r39010 | jkeenan++ | trunk/src/pmc/packfileannotations.pmc:
Eliminate trailing whitespace per mailing list report by Michael Hind.
11:07
rrot: r39011 | jkeenan++ | trunk/docs/pdds/pdd24_events.pod:
Correct error in item numbers per mailing list report by Michael Hind.
11:14
11:20 donaldh joined
dalek a: 37cb45f | fperrad++ | src/ (2 files):
handle $?FILES for traceback
11:26
a: 475bbcc | fperrad++ | src/lib/luaaux.pir:
improve traceback output
11:37 particle joined 11:38 particle1 joined 12:12 flh joined 12:16 Theory joined
dalek rrot: r39012 | jkeenan++ | trunk/t/codingstd/copyright.t:
Revert r39009. Due to differences between the 'prove' associated with Perl 5.8 and that associated with Perl 5.10, we get different results on the duplicate copyright tests.
12:23
12:24 ruoso joined 12:39 Whiteknight joined 12:41 rg1 joined 12:55 PacoLinux joined 12:56 riffraff joined
Coke tene - you have commit bits to APL, knock yourself out. 12:57
msg tene - you have commit bits to APL, knock yourself out. 12:59
purl Message for tene stored.
13:00 NotFound joined 13:22 riffraff joined
Coke msg cotto please stop untodo'ing that test. Please. =-) 13:24
purl Message for cotto stored.
13:27 gryphon joined
dalek a: 61374db | fperrad++ | src/lib/luaaux.pir:
fix previous commit
13:32
a: 0bbfd9e | fperrad++ | src/POSTGrammar.tg:
fix luap.pir
a: 84a6ced | fperrad++ | src/POSTGrammar.tg:
pathname must be be escaped
a: ddd9113 | fperrad++ | t/ (26 files):
fix tests for absolute path on Windows (C:\\somewhere\\...)
13:38 Theory joined
Coke if I have a bunch of perl files that depend on including one of the parrot installed .pm's, I'm guessing I should make a local generated file that updates @INC to the right place, and just have everything refer to the generated file. 13:39
sound reasonable?
Coke wonders what "Object must be created by a class" means. 13:40
13:40 Casan joined
PerlJam Coke: objects can't be created by other objects? 13:41
Coke it's some behavior that changed since last partcl walked the earth. 13:43
so, sure; what does that mean, though? (will track down the actual pir once other thigns are working.)
Whiteknight Coke, is that an error message that you saw? 13:58
Coke Whiteknight: yes, in partcl-latest.
trying to resurrect the test suite as time permits.
Whiteknight i think that error message comes from src/pmc/object.pmc:init 13:59
so somewhere somebody is probably doing a "$P0 = new 'Object'"
dalek rtcl: r350 | coke++ | trunk/ (4 files):
Add Parrot::Installed.pm

the installed lib dir to our path; figure out the path at config time
14:00
14:03 Theory joined 14:22 Andy joined 14:33 whoppix joined
dalek kudo: d163016 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 392 files, 11342 passing, 0 failing
14:34
14:35 dalek joined
Infinoid Coke: Ok, we should now have notifications for trac.parrot.org/parrot/timeline?ticket=on 14:36
dalek rtcl: r351 | coke++ | trunk/t/cmd_ (50 files):
Tests only need to run from top level build dir.

Fix a few perl-based scripts that need the Installed parrot config.
14:45
14:47 Plisk joined
Coke here's what's generating the failure: 14:59
25792 new P0, "Undef" P0=PMCNULL
25795 assign P0, P1 P0=Undef=PMC(0x82acde8) P1=Object(TclArray)=PMC(0x82addc0)
Whiteknight ah, that's quite interesting 15:00
I wonder if that sequence was always causing a failure, or whether that's new
15:01 dalek joined
Whiteknight Can you do me a favor, create a ticket for that and assign it to me? 15:01
Coke it worked at some point.
Sure.
Whiteknight I think I know how to fix it quick, but I can't till I get home tonight
Coke Whiteknight: ugh. I'll have to wait for 1.3, won't I. :| 15:07
dalek TT #696 created by coke++: Can't assign an object to Undef.
Whiteknight I don't think so, no
is partcl targetting Parrot HEAD? 15:08
Coke Whiteknight: no.
it's targetting "installed parrot" which basically means "releases".
Whiteknight urg
you could probably do a pure PIR workaround if you need to work around it now 15:09
Coke esp. if the current behavior of that snippet is intentional. 15:10
dalek rtcl: r352 | coke++ | wiki/ParrotIssues.wiki:
added another parrot bug.
Whiteknight no, I don't think it's intentional
Infinoid cool. dalek's trac ticket notifications are faster than my email client 15:12
Coke Infinoid: does it track every ticket status?
Infinoid It tracks the major state changes only. See trac.parrot.org/parrot/timeline?ticket=on
so it should emit messages for created, closed and reopened 15:13
Coke Infinoid++
Infinoid and it shouldn't annoy us every time someone adds themselves to cc: or adds a milestone/keyword or trivial things like that 15:14
15:20 donaldh joined
Coke ah. "anyone test "language_output_is" in an installed parrot?" he asked, expecting the answer no. =-) 15:23
Infinoid *crickets chirping* 15:24
Coke all my perl based tests are failing.
Infinoid lemme guess, path issues? 15:25
Whiteknight maybe Perl is the problem?
Whiteknight is only joking! Perl is good 15:26
Coke # '/usr/local/lib/parrot/1.2.0/tools/parrot ........../tcl.pbc t/cmd_cd_1.tcl' failed with exit code -1 15:27
that command line seems wrong.
(path to parrot is wrong, the ..... is wrong...) 15:28
15:29 Plisk joined
dalek kudo: 7c5be8b | pmichaud++ | docs/ROADMAP:
Minor ROADMAP improvement.
15:29
kudo: 97c7cec | pmichaud++ | docs/ChangeLog:
ChangeLog updates for release
kudo: dafdc06 | pmichaud++ | docs/announce/2009-05:
Final 2009-05 announcement updates.
15:30 Theory joined
NotFound Someone has some objection of reusing the file_size attribute of the filehandle pmc to store the pid of the child process? 15:34
When the handle is a pipe, that is.
dalek kudo: c4fa3ba | pmichaud++ | docs/release_guide.pod:
Update docs/release_guide.pod .
15:35
Infinoid NotFound: Not per se. But I'd prefer to extract the necessary bits of Filehandle into a more generic base class, to make sockets and pipes saner
(that's one one of the things on my "when I get around to it" list) 15:36
Whiteknight Infinoid: I agree with that 100%
NotFound Infinoid: me also, but some people are demanding to have working pipes NOW
Whiteknight Have a "Stream" base class, and derive from that Socket, FileHandle, and Pipe types
Infinoid I was thinking of calling it Handle, but that works too 15:37
Whiteknight NotFound: We're all volunteers, things get implemented when we ger around to it
Infinoid perl 5's IO:: class heirarchy is fairly sane, I wouldn't have a problem with following that model
Whiteknight NotFound, best idea is still to create a Pipe PMC type, and then we can start abstracting and refactoring things later
probably anyway, I don't know if people would perfer FileHandle to do piping too 15:38
Infinoid +1 Pipe PMC
NotFound Whiteknight: that will need a lot of changes
Infinoid it's a branch-worthy task
Whiteknight NotFound: you think so? I don't think it would require too much
the only changes would be at PIR-level, doing 15:39
"new 'Pipe'" instead of "new 'FileHandle'"
NotFound Whiteknight: the current way is: first create a Filehandle, then open.
Whiteknight: you forget the open opcode
Whiteknight $P0 = new 'Pipe' \\n open $P0 15:40
the open opcode calls the "open" method, which the Pipe PMC will provide
doesn't require any changes internally
Infinoid $P1 = $P0.'reader'()
$P2 = $P0.'writer'()
NotFound open 'fileaname_or_command', 'mode'
Whiteknight NotFound: Okay, I forgot about the two-operand version. Add a "p" to the mode that uses a Pipe instead of a FileHandle 15:41
I think that's in the PDDs anyway
Infinoid Do you intend to follow perl5-like "| command" semantics for open()'s filename parameter?
oh, ok 15:42
Tene Coke: what email address did you grant privileges for? i can't seem to authenticate...
NotFound Whiteknight: that way is done now, but the way it works is by creating a filehandle and then calling the open function
Whiteknight yeah, PDD22 says to use the p mode for Pipes
NotFound: Well it's a small change to use a Pipe type instead
NotFound And I didn't write that, it was already present, I just fixed it.
Infinoid when we have a Pipe PMC, the FileHandle can pmc_morph to it 15:43
Whiteknight maybe a Pipe type doesn't make sense. I'm no architect
Coke tene: for APL 15:44
?
NotFound I'm not opposing to the creation of the pipe pmc, I'm just asking about a simple solution for the current failures.
Tene Coke: yes
Coke code.google.com/u/@WRRfRF1YARJBXQd6/ 15:45
Infinoid the Pipe PMC doesn't necessarily have to be a direct part of the "get output from shell commands" feature, anyway
The one I was thinking about writing is more low level than that... it's just something that knows how to call pipe() on the C level and implement 'reader' and 'writer' methods which return separate handles for each
Tene huh
Coke tene: did you check it out from http: ? 15:46
or https ?
purl hmmm... https is almost same or web.. or blocked
Whiteknight Infinoid: So you would have a Pipe type, a PipeReader, and a PipeWriter?
Coke you might have to svn reloc.
Infinoid or a Pipe type which returns generic Handle objects, doesn't matter much
Tene ah, googlecode password != google account password
Infinoid Basically the same as perl5's IO::Pipe
NotFound Did we have a generic handle object? Filehandle doesn't inherit from anything 15:47
Infinoid Not yet, I want to write one.
Since we don't have one yet, Socket is a bit ... weird at the moment 15:48
NotFound Well, I'm going to commit my workaround. The open_p_s_s opcode can be modified later to create and return some other type. 15:49
When we have it.
Infinoid NotFound: using FileHandle is fine for now, I was just talking about what I wanted to do in the future :)
NotFound Yeah, but I'm attending the demands from pmichaud of having some working pipe mechanism as soon as possible. 15:50
Infinoid No, absolutely. working trumps perfect, every time
NotFound I agree that is an important featute for any realistic usage
Infinoid (having some working pipe mechanism)++
Tene Coke: committed. 15:53
dalek TT #697 created by coke++: Parrot::Test "language_output_is" fails in installed parrot. 15:54
rtcl: r353 | coke++ | wiki/ParrotIssues.wiki:
another parrot bug.
Coke GAH. I should not have to keep approving posts from googlecode to googlegroups. :| 15:55
pima.
15:55 jan joined
Tene ouch 15:56
dalek raplegic: r5 | t...@allalone.org++ | trunk/ (3 files):
(from /trunk/config/makefiles/root.in

   ����Delete����/trunk/config/makefiles/root.in
   Steal a Configure.pl from Rakudo... possible to build now.
Tests still won't run...
15:58
raplegic: r6 | t...@allalone.org++ | trunk/ (2 files):
(from /trunk/APL.pir

   ����Modify����/trunk/build/Makefile.in
   Move from APL to apl to work with other languages.
Infinoid uck, I need to fix that parser. 15:59
16:00 flh joined
dalek rrot: r39014 | NotFound++ | trunk/src (2 files):
[core] fix unix pipe handling, now write pipes must works reliably
16:03
Tene pmichaud: what needs to be done to support utf8 in a PCT repl? 16:04
APL is kinda crippled without it...
pmichaud add 'encoding'=>'utf8' to the call to 'command_line' 16:05
NotFound Someone can unskip the 4 test and give a try in t/op/io.t ?
Tene pmichaud: it's there already 16:06
pmichaud okay, then set the encoding on stdin prior to calling 'command_line'
(yes, we can fix this in pct as well -- these are quick fixes that get us through the issue for now)
Tene what kind of object does getstdin return? io.pod claims parrotio, but there's no parrotio.pmc. 16:07
NotFound Tene: a filehandle
purl it has been said that a filehandle is the structure for manipulating files. It's the FILE in open FILE, "/tmp/bobo" or die $!.
pmichaud it's a filehandle
Tene ah 16:08
pmichaud just do $P0 = getstdin, then $P0.'set_encoding'('utf8')
(I might be misremembering the method name)
Tene it's 'encoding'
hmm... doesn't work... 16:13
purl Look buddy, doesn't work is a strong statement. Does it sit on the couch all day? Is it making faces at you? Does it want more money? Is it sleeping with your girlfriend? Please be specific!
Tene PGE can't parse it. 16:14
but works fine when it's in a file.
nopaste "tene" at 166.70.38.237 pasted "encoding fail in apl... :(" (10 lines) at nopaste.snit.ch/16631 16:15
16:16 dalek joined, iblechbot joined 16:17 bacek joined
Tene late to work... later. 16:19
pmichaud it may be an issue with reading utf8 from terminal/stdin
we have had similar issues with rakudo
Infinoid "t...@allalone.org" is Tene, right? 16:21
Tene Yes.
Infinoid will add a karma alias 16:22
16:24 ilia_ joined
dalek rrot: r39015 | Infinoid++ | trunk/CREDITS:
Add a karma alias for tene's googlecode account.
16:26
Infinoid NotFound: test passes here on linux/amd64 (and no leftover processes) 16:31
16:35 Themeruta joined
NotFound Infinoid: good. I'm going to unskip the test, then. 16:38
Infinoid ok 16:41
NotFound++
16:43 particle joined
dalek rrot: r39016 | NotFound++ | trunk/t/op/io.t:
[test] unskip pipe write test, TT #661
16:46
16:54 Theory joined
dalek kudo: 79d0b9a | pmichaud++ | docs/release_guide.pod:
Fix "git push --tags" in docs/release_guide.pod .
16:56
allison Whiteknight: what's broken now about pipes is the low-level C code, it doesn't much matter if a Pipe is a separate PMC 16:57
NotFound allison: the C code isn't broken now, at least in the unix incarnation. 17:04
The win32 one is not broken, it just does not exist X-) 17:06
allison NotFound: I saw the commit message, just looking over the change log, well done!
NotFound Thanks
allison NotFound: you can go ahead an add a second ATTR to FileHandle, rather than reusing file_size. The old ParrotIO had two "process" attributes (what's now called 'os_handle'), for pipes. 17:09
NotFound allison: did we plan to allow bidirectional pipes? 17:10
allison NotFound: win32 pipes have never worked, so no loss. It would be nice to get them to work someday
NotFound: you mean read and write? if possible, yes
NotFound That will need to add another atribute for a second os handler. 17:11
cotto Coke, sorry
allison NotFound: okay, then add two new ATTRs, one for the second OS handler, and one for the pid 17:12
NotFound Ok 17:14
Coke allison: partcl's 'make test' now actually passes some tests. 17:16
allison Coke: how many for you?
(I'm trying to figure out what's different in my checkout) 17:17
Coke at a guess, you had your build directory lying about. =-)
17:17 contingencyplan joined
allison hmmmm I thought so too, but I ran Configure.pl with no arguments, so it used the parrot_config in my path 17:18
that's the installed one, and I deleted the build directory for that one 17:19
Coke: btw, the tests I modified were just removing some hard-coded 'languages/tcl/runtime' paths from load_bytecode 17:20
Coke k.
I haven't dug through all remaining failing tests, as the two sources I found are causing a LOT of them.
(tickets opened for both of them.) 17:21
allison Coke: I also have an include/ directory at the top-level
Coke Files=74, Tests=1255, 179 wallclock secs ( 0.38 usr 0.20 sys + 159.07 cusr 5.54 csys = 165.19 CPU)
... that doesn't help. moment. 17:22
allison (it's an include directory containing macros.pir, mathops.pir, and returncodes.pasm 17:23
Coke I do not see a test summary.
379 failures. 17:24
allison: just relocated from src ?
allison okay, that's about twice as many as I see
Coke which version of parrot are you running against?
(1.2.0 here)
allison Coke: aye, relocated, because Parrot will pick them up in include/ at the top level, with no path 17:25
I'm running against my installed 1.0
Coke: (re: relocated) so, they can be included as .include 'macros.pir', which will also work after they're installed, instead of .include 'src/macros.pir', which won't work installed 17:27
Coke: I get a lot of these kinds of failures, where it tries to run: /usr/lib/parrot/1.0.0/tools/parrot ......../tcl.pbc t/cmd_source_2.tcl 17:28
Coke allison: that's TT # 697
I'm seeing TT #696, you're probably not. 17:29
17:29 Theory joined
allison Coke: yup, it's 697 17:31
Coke: and you're right, I'm not seeing 696, I'm assuming that's new with 1.2?
or 1.1?
purl well, 1.1 is best :)
allison oh, 696 looks like a morph bug 17:32
Coke (also have you updated? had several commits today.) 17:39
allison Coke: nope, updating now 17:42
I had 198 test failures before, will see after
Coke feel free to commit the move of the include files. 17:43
allison okay 17:44
17:46 bacek joined
Coke 'make spectest' now is able to trip over TT#696. 17:46
(before it wouldn't run.)
allison progress :) 17:47
updating to the latest, I'm still at only 198 failures in my working copy 17:48
Coke I am now hopeful that at least for linux, 'make test' will work on parrot 1.3
allison trying a fresh checkout to see the difference
Coke (osx is still fubar.)
dalek rtcl: r354 | coke++ | trunk/tools/tcl_test.pl:
We don't live in the parrot repository any more.
nopaste "coke" at 193.200.132.135 pasted "make test from partcl, parrot 1.2, linux" (1893 lines) at nopaste.snit.ch/16632 17:50
Coke I might have mis-added, also. 17:51
Looks like it's not just language_output_is that's borked. 17:55
parrot_output_is doesn't fare much better.
er, s/parrot/pir/ 17:56
dalek rtcl: r355 | coke++ | trunk/t/internals/ (3 files):
not in the parrot repository anymore.
17:58
18:08 davidfetter joined
Whiteknight do we have anybody around who is working on the Win32 pipes? 18:10
I could break out my copy of Petzold and tackle them soon if they're in demand
allison Coke: the fresh checkout is also 198 test failures
purl okay, allison.
allison purl: forget the fresh checkout
purl allison: I forgot fresh checkout
NotFound Whiteknight: Infinoid said yesterday that will take a look this week 18:12
Coke allison: again, parrot 1.2?
Infinoid Whiteknight: Yeah, I'll take a look this weekend if noone beats me to it
Whiteknight Okay, if you're looking at it I won't spend time on it 18:13
I
've got plenty of other thigns to keep me busy
allison Coke: nope, still 1.0. I'm just narrowing down the possible cause of failures. (and making sure my changes in my working copy aren't relevant) 18:14
Coke ok.
allison Coke: any objections to a simple test framework lib local to Partcl instead of Parrot::Test?
Coke: it may ultimately end up as the replacement for Parrot::Test, but in the mean time frees us up to work on it quickly 18:15
Coke no. but if we're going to do that, I recommend not installing the testing infrastructure in teh first place.
no objection, that is.
allison Coke: not installing Parrot::Test? yes, if we can't fix it up to work installed, we'll just stop installing it 18:16
dalek rrot: r39017 | NotFound++ | trunk/src (2 files):
[pio] new attribute process_id in filehandle pmc
allison (or install the Tcl version, if it works)
18:27 bacek joined 18:37 particle joined, flh joined
dalek rrot: r39018 | pmichaud++ | trunk/compilers/pge/PGE/Exp.pir:
[pge]: Switch PGE's code generation to use root_new instead of new.
19:10
19:20 donaldh joined
dalek rrot: r39019 | pmichaud++ | trunk/runtime/parrot/library/PGE/Perl6Grammar.pir:
[pge]: Switch Perl6Grammar to use root_new instead of new in codegen.
19:24
NotFound Soemone said that rakudo was not ready to be built with an installed parrot? 19:26
pmichaud that's my current understanding, yes. 19:27
although I would phrase it as "an installed parrot is not sufficient for building/testing rakudo" 19:28
NotFound My last test shows that is semi-true. It builds... as long as the devel tree is still in place X-)
pmichaud yes, rakudo always builds against the build tree, not the installed version. 19:29
NotFound Maybe is just a thing of choosing the appropiate keys from the config
pmichaud No, the problem is getting an installed parrot to recognize dynops/dynpmcs 19:30
purl okay, pmichaud.
Coke tcl is getting really close to building against only an installed parrot.
(and we have dynpmcs and dynops). But only on linux, as far as I know.
NotFound The first problem it barfs on is to locate PGE/Perl6Grammar.pbc
pmichaud well, "installed parrot" might mean "install-dev" 19:31
Coke yes.
pmichaud iiuc, "make install" (isntead of "make install-dev") is certainly not sufficient for building Rakudo in any case.
Coke sorry, figured that was obvious.
pmichaud I don't know if "make install" also installs PGE/Perl6Grammar.pbc 19:32
NotFound pmichaud: no, the error message contains the full path on the build tree
And before that it says that the Makefile is out of date 19:33
pmichaud oh, you probably need to re-run Configure.pl then
NotFound pmichaud: it keeps saying it again and again
cotto NotFound, I've been building Rakudo with an installed Parrot for a while, but it requires frequent Parrot updates.
(and install-dev) 19:34
NotFound cotto: without the build tree in place?
mv parrot noparrot
cotto The build tree is still there. I hadn't thought to see if it'd work without that.
pmichaud cotto: it probably won't.
cotto let's find out
Coke until rakudo stops relying on particular svn releases, there's not much point in building against an installed parrot, is there? 19:35
(I mean, it'll easy the transition later, but it's not practical for anyone who isn't hardcore.)
pmichaud Coke: one could always choose to install a svn release that isn't an official Parrot release
NotFound Coke: being able to do it may help to clarify dependencies 19:36
pmichaud also, one could choose to install a released version of Rakudo, which does only build against released parrots
but no, someone who is following Rakudo development closely generally can't rely on the latest Parrot release
purl okay, pmichaud.
NotFound BTW, the fakecutable compiling is much faster now. What has changed? 19:37
pmichaud I don't know. I don't think I changed anything.
cotto Util++ did some work on pbc_to_exe 19:38
Coke (install a svn release that isn't a releas) yes, but that's not normal behavior. =-)
NotFound Last time I tried it froze my laptop. Now has do it in a few minutes.
pmichaud I didn't see if pbc_to_exe changes made it into trunk -- I'll have to look.
cotto istr that he added the fast code for gcc, but kept the old (slow) code for msvc 19:39
NotFound In fact less than a minute, I think
pmichaud My pbc_to_exe is still generating the old-style code
not the fact gcc version 19:40
cotto pmichaud, you're right. it won't work without the build dir in place
NotFound I don't see the conversion to string literal that was talked about, certainly.
pmichaud (and yes, I'm running gcc)
s/fact/fast/
cotto is 0 for 2 so far. It's not looking good. 19:43
at least my Progress Quest guy is leveling up
19:44 donaldh joined
cotto pbc_to_exe does seem faster now, though not as fast as util's original patch made it 19:45
NotFound cotto: for me is a big difference, now I can build and test rakudo 19:51
Coke msg allison I have a POC for tcl_output_is, will convert over the test suite as time permits.
purl Message for allison stored.
Whiteknight I think Util mentioned using an attached binary resource on msvc to speed it up on that platform too
NotFound I was unable to do that on my home machines since some weeks ago 19:52
Whiteknight a PGE optimizer is becoming a necessity, I think
NotFound I'm using gcc on linux
Coke can someone on windows give the latest version of partcl a shot and see how far you et?
pmichaud Whiteknight: we really need a profiler more than an optimizer at this point
although PGE optimizations will be coming reasonably soon 19:53
Coke (requires installed parrot; 1.0 or higher)
Whiteknight pmichaud: at the risk of making people repeat themselves, what would be needed in a PIR optimizer?
er, PIR profiler?
pmichaud something that tells us how much time is being spent in each sub would be a start
Whiteknight okay, so you're more interested in a Sub-level profiler then in a opcode-levle profiler? 19:54
cotto There definitely haven't been any substantial changes to pbc_to_exe recently (except an accidental one my me that I undid).
Coke Whiteknight: there's a ticket regarding the generation of callgrind output, which would be peachy.
Whiteknight: chromatic suggested a new callgrind runcore.
19:55 Austin_Hastings joined
cotto trac.parrot.org/parrot/log/trunk/t...to_exe.pir 19:55
pmichaud Whiteknight: for me at this point a sub-level profiler is far more useful. I don't think opcode-based profiling would tell me a lot, unless we happen to be calling a few very expensive opcodes and I'm unaware of it.
Whiteknight I'm hesitant to do anything PCC-related while allison is working on her branch. I could take a look at the callgrind thingy
Austin_Hastings Hey, can I ask a not-1.2-related question? 19:56
Whiteknight I don't know much about callgrind or it's output format though
Austin_Hastings: yes
Coke Whiteknight: we already HAVE an opcode level profiler.
"parrot -p"
Whiteknight Coke: Do we? I was unaware that we had one that worked
Whiteknight needs to do more experimenting with that kind of stuff
Coke It's from Dan-time.
Austin_Hastings What's the situation in pir with respect to $P-registers after a sub or method call? Are they all gone and need a reload, or do they hold their value?
Whiteknight Austin_Hastings: when a sub returns, it's dynamic context (registers, etc) are destroyed and garbage-collected 19:57
Austin_Hastings (I ask because I notice that PCT is generating VAR:scope('parameter') as a lex, rather than register, variable.
@WhiteKnight: I'm not asking about the sub called, but the caller's $P-registers. 19:58
Whiteknight PCT generates them as lexicals so they are visible to internal scopes, such as nested blocks
Oh, the caller will maintain pointers to those registers after the called sub returns
Austin_Hastings Aha! It's for dynamic scoping rather than lexical, eh?
Whiteknight yes, dynamic scoping
purl well, dynamic scoping is perfectly acceptable when used for something it's suitable for
Whiteknight purl forget dynamic scoping 19:59
purl Whiteknight: I forgot dynamic scoping
Austin_Hastings Okay, cool. Thanks.
@purl - I forgot it, too. Funny how that works. :)
pmichaud PCT thinks that most languages will want to have parameters available a lexically-scoped variables. 20:00
20:00 Theory joined
pmichaud So it implements them that way. 20:00
*available as
Whiteknight and on that note, I am leaving. Later 20:01
pmichaud it might not be implemented yet, but I'm planning that non-lexical parameters might be possible by not providing a :name
i.e., a parameter without a :name() attribute would provide a register but not a lexical alias.
Austin_Hastings I saw where the params are named anonymously, then loaded into .lex vars. So it seems like you're halfway there.
But frankly, I want my (register) params to have a name. 20:02
I think this is where you start pushing things into the pirflags() attribute.
pmichaud and you don't plan to access them from nested lexical blocks?
Austin_Hastings I think that depends on what you mean by "nested lexical block" - and I'm not parrot-dev --savvy enough to be able to answer you. 20:04
pmichaud okay, how about a Perl 6 example...?
sub foo($x) { if rand { say $x } }
Austin_Hastings How about a C example?
pmichaud okay, a C example
Austin_Hastings Because that's the model.
Declare a param in a sub, it's visible in all the curly-blocks within that sub, but not to any call-ees. 20:05
pmichaud int foo(int x) { if (rand() < 0.5) { int myvar; printf("%d\\n", x); } }
Austin_Hastings As I understand it, based on the information I just got, putting it in a $P-register would do the trick, no need for a .lex entry.
Right.
x is visible to all of the stuff you just wrote, but not visible inside rand() or printf(). 20:06
pmichaud in the C code I just gave, the then portion of the 'if' statement is a nested lexical block
Austin_Hastings Okay.
pmichaud in Parrot, that ends up being a separate Parrot sub
NotFound Austin_Hastings: curly blocks are usually translated to separate pir subs, that's the reason to use lexicals
Austin_Hastings But in PAST it's a Stmts, not a Block, right?
pmichaud the problem is handling that "int myvar;" line
"myvar" should only be visible within the if block
Austin_Hastings ... 20:08
The trick I've been using is the locally-maintained stack of Blocks for scoping
pmichaud right. Each Block corresponds to a separate Parrot sub
Austin_Hastings So I'm not passing the blocks out as part of the final PAST, just replacing them with Stmts if I can get away with it. 20:09
pmichaud okay, here's a somewhat trickier example, then
20:10 eiro__ joined
nopaste "pmichaud" at 72.181.176.220 pasted "C code with nested lexical blocks" (10 lines) at nopaste.snit.ch/16635 20:10
eiro__ hello
20:11 allison joined
Austin_Hastings Got it. 20:11
pmichaud Note that the 'i' that is in the true part of the if statement is not the same as the 'i' that the else sees
Austin_Hastings Yep.
Is there enough internal linkage with the "hidden Block" approach for that to fall out right? 20:12
I haven't got that far yet.
pmichaud you'll have to manage your own register mappings to make it work.
Austin_Hastings Eek.
pmichaud i.e., if you're wanting to avoid PCT's PAST::Block structure 20:13
Austin_Hastings Or make the true block a Block.
pmichaud right. PAST::Block is intended to handle lexical scoping.
But it does mean that things are stored as Parrot lexicals.
Eventually I want PCT to be smart enough to avoid creating a separate lexical sub when one isn't needed (as would be the case for the 'else' block in the nopaste) 20:14
Austin_Hastings But not right now, eh?
pmichaud it's non-trivial.
NotFound my @parrot_config_exe = qw( parrot/parrot_config ../../parrot_config parrot_config );
That s the order in they are checked?
pmichaud yes.
Austin_Hastings So the "right" thing to do is to adopt an "old C" style model, with all the lexicals at the top... 20:15
pmichaud Austin_Hastings: and even if PCT can optimize the 'else' block, it would have to do something to handle the 'if' block.
NotFound Maybe just puttinng plain parrot_config in the first place will solve some problems.
pmichaud NotFound: I want Configure.pl to prefer a locally generated parrot_config to any other.
NotFound: changing the order doesn't improve at all the "build Rakudo against installed Parrot" situation. 20:16
NotFound Yes, I was thinking about the wrong problem
Austin_Hastings Hey, here's a couple of other questions. 20:17
Is there any way to suppress the .return() at the end of a generated sub?
and (2) What's the right way to code PAST for returning a list of values? 20:18
a la (x, y, z) = foo()
pmichaud We don't have a solution yet for #2.
(haven't needed it yet)
Austin_Hastings Okay.
What's parrot doing internally when that happens?
pmichaud I'm not sure about suppressing the .return() at the end of a generated sub -- I'd have to think about it a bit.
Austin_Hastings Don't waste any time thinking about the .return thing - I'm generating my own, so it's just a bit of extra code. If there's not already a "don't issue a return()" flag, then stop. 20:19
pmichaud stops :-)
Austin_Hastings :)
But the return-a-list thing - parrot is doing this CPS thing, right, so they are like args in the mirror? 20:20
pmichaud yes.
Austin_Hastings But I don't really know how args get handled.
pmichaud .return (1,2,3) returns three values
Austin_Hastings Do they go into registers, or what? 20:21
pmichaud and ($I0, $I1, $I2) = foo() would place the first returned value into $I0, the second into $I1, the third into $I2
Austin_Hastings Right. I've seen that in some PIR.
So I wondered how to code PAST for it.
pmichaud there's not a PAST coding for it yet.
again, we haven't needed it yet.
PAST isn't intended to represent every possible PIR construct -- just the things common to dynamic languages (more) 20:22
Austin_Hastings You see there? You get rid of the whole "list context" thing, and everybody stops thinking about returning multiple values...
pmichaud yes, list assignment is common to dynamic languages, but thus far it hasn't been expressing itself at the PAST level 20:23
Austin_Hastings Ahh. Are the rakudo folks doing an Array then?
pmichaud Also, Parrot and PIR are about to undergo substantial changes to the calling conventions, so there's not a lot of point in putting effort here until we get to that point 20:24
i.e., until those are in place.
Austin_Hastings Oh frabjous day.
Coke if I want to have a #! parrot shebang, must I specify the full path for it to really work?
pmichaud right now rakudo isn't supporting multi-argument returns. 20:25
Austin_Hastings Slackers.
purl slackers is a film which features the female drummer from the Butthole Surfers discussing Madonna's pubic hair
pmichaud because what really needs to happen is that the multi-arguments get placed into a Capture object, and that Capture object is what gets returned to the caller
Austin_Hastings Maybe in P6.
pmichaud but note that in that case, PAST really only needs to support returning a single (Capture) object
Austin_Hastings brb 20:26
pmichaud and that object then contains the return values that are to be bound in the caller
PerlJam Coke: you mean as opposed to a relative path or what?
Coke: you should be able to use #!./parrot or #!../../parrot/parrot or what not. You can even use #!/usr/bin/env parrot if you've got things setup right 20:27
Coke PerlJam: as opposed to no path.
literally, I want "#! parrot" to work. 20:28
PerlJam oh
pmichaud afk # tree planting
PerlJam that only works if parrot is in the same dir I think. 20:29
Coke PerlJam: that only works if . is in your PATH, I think. =-)
PerlJam er, yes.
Coke bah. ``.include "test_more.pir" '' dies on parrot 1.2 installed.
allison aw... sweet! I'm down to 8 test failures in Partcl (on 1.0)
Coke allison: uhoh. 20:30
Austin_Hastings Okay. New category: namespaces.
PerlJam so, just make sure you've got your environment setup correctly and parrot in the right place and "#! parrot" will work :)
Coke you didn't roll your own tcl_output_is, did you?
PerlJam: ah. my failure is probably related to ".include test_more.pir" dying.
Austin_Hastings Is it the case that the "true" namespace for something is $HLL/$NAMESPACE/name?
allison Coke: no, I just changed how Parrot::Test::Tcl was calculating the path to parrot and tcl
NotFound PerlJam: then you try in a diffrerent unix incarnation, and it stops working X-)
Coke allison; ok. I re-rolled both tcl and pir _output_is. 20:31
PerlJam NotFound: hey, AFAIK, he was only talking about *for him* :)
allison Coke: do you want me to send you mine as a patch?
NotFound PerlJam: then subst "you" X-)
Austin_Hastings That is, according to PDD whatever-it-was, that a Perl6 object Foo::Bar::dog winds up as ::perl6::Foo::Bar::dog? 20:32
(modulo smileys on your end)
PerlJam Austin_Hastings: what are all of those :: about? Parrot doesn't grok those :) 20:33
Austin_Hastings Maybe not, but I'm faster at :: than I am at ';' 20:34
Coke allison: I'd rather not rely on Parrot::Test at all.
at least for now.
allison Coke: agreed
NotFound PerlJam: tell the same to allison and Coke ;-)
Coke I'll get that pushed later.
(er, later tonight) 20:35
Austin_Hastings But if you prefer, is the "one true namespace" of perl6's Foo::Bar::dog going to be [ 'perl6' ; 'Foo' ; 'Bar' ] with 'dog' as a local symbol?
allison Coke: how are you getting the path to the parrot executable in your changes? Mine pulls them from the Perl Parrot::Config, but would be better to pull them from parrot_config
Coke I'm assuming it's in my path. =-) 20:36
I can fix that.
Austin_Hastings @NotFound - that was the first thing I changed. :)
allison Coke: I'm just using 'bindir'
NotFound Coke: I think that if parrot_config is in the path there are lots of chances that parrot is also 20:37
allison Coke: aye, pulling parrot from the path will work if it's installed in standard location, but it is handy to be able to test it on various temporary install directories 20:38
NotFound: except, you may want a different parrot_config than the one in the path, and then you want to test against the different parrot too
Austin_Hastings @pmichaud - while I'm thinking about it, I added a little bit to PAST. I've created a 'goto' and a PAST::Label with the obvious connection. (And no knowledge whatsoever about the higher level requirements vis-a-vis control contexts, exception handling, etc.)
@allison - Java has a trick for this 20:39
allison NotFound: I've currently got 3 parrot installs, and I test against all three
Austin_Hastings The whole "select alternative" thing
Coke allison: done, gets it from wherever you config'd partcl wth
allison Coke: you rock! 20:40
purl Dis is the drum
Coke are you able to run t/internals/select*.t ?
allison Coke: nope, those completely fail for me 20:41
Coke TT #692 is killing those for me.
it finds the .include, which tries to load a .pbc, which doesn't exist, and the fallback goes boom.
allison Coke: okay, let me do a local 1.2 install
NotFound Austin_Hastings: yeah, and maybe that is the main reason that forces to use a different classpath for each application in too much cases
Coke allison: we can avoid that issue by just inlining the code from test_more.pir that we want.
NotFound Coke: An include that loads a pbc? Why? 20:42
20:42 donaldh joined
allison Coke: a reasonable stop-gap. I'd rather keep test_more in one place if we can, but if we can't, we can't 20:42
Coke NotFound: look at parrot's test_more.pir
It's just to avoid having the same boilerplate everywhere. 20:43
allison Austin_Hastings: parrot has a way to do it too, just pull the path to the parrot executable from parrot_config. Everything else happens automatically.
Coke in fact, I probably will just inline that in partcl also; parrot may use that dozens of times, but I only use it 2x. 20:44
Austin_Hastings Well, as long as that problem's solved... :;-)
allison Coke: oh, you just mean the little test_more.pir include, not the whole PIR Test;More library? yeah, I'd totally go for inlining that
NotFound Coke: what I read in that file is: "Feel free to use Test::More directly" ;)
Coke NotFound: yah. do a blame on that line. :P 20:45
doesn't change the fact that TT #692 is broken. =-)
allison: ah, can't inline it. 20:46
because test/more.pir tries to load_bytecode a .pbc , BOOM.
so we're scr0d.
allison Coke: same error as TT #692? 20:47
Coke Yes.
Test::More tries to load Test::Builder... boom
20:47 Tene joined
allison okay, will take a look. It's an odd error. 20:47
clearly Tcl code is able to load some libraries 20:48
Coke allison: load_bytecode "foo.pir" works.
allison but not foo.pbc?
Coke allison: load_bytecode "foo.pbc" barfs, if only foo.pir exists.
if foo.pbc exists, it's fine.
SFAIK.
allison ah, okay, I understand
yes, that should be fixable
NotFound I think that this may be due by imcc setting flags to tell himself what is doing 20:50
20:54 Austin_Hastings left
allison Coke: yes, it is using the "extension as passed in" instead of the "extension as found" to determine how to load the file 20:55
Coke ah, so that doesn't even work in build dir? 20:58
NotFound The problem is that those pbc are not in the installed runtime, and they must 20:59
Well, one of the problems
purl one of the problems is probably that most of the people who work at the World Wide Web Consortium are not practical people. This reminded me of a post made by Russell Beattie, PHP Web Projects Continue to Impress Me, where he states in the end:
Coke no, one of the problems is <reply>
purl okay, Coke.
allison Coke: yup, it's not an install problem, just a general problem 21:01
Coke: testing a fix now
NotFound Is also a install problem, IMO
afk_Coke NotFound: how? 21:02
NotFound The pbc must be here
Coke that's a separate issue.
allison NotFound: as long as the .pbcs are in a path that parrot searches, we're fine
Coke if the fallback is working, we don't NEED the .pbc
NotFound allison: but they aren't
Coke right. we're only installing the PIR, not the PBCs.
but if the fallback is working, the install will still work.
allison NotFound: yes, what coke's saying 21:03
NotFound Yeah, but we must not forget the other problem
Coke what's the /other/ problem?
NotFound Thos pbc not being installed, if they must
21:03 Whiteknight joined
NotFound And I think they must, because others are 21:03
allison NotFound: it's okay not to install the .pbcs, the problem is just that right now when it falls back to the .pir files, it's still trying to load them as if they were PBC 21:05
Coke we should either intsall all off them or none of them.
allison is this still Tcl/Glob?
Coke no.
NotFound Coke: That's my idea, yes
Coke it's anything in runtime/library
NotFound: yay, concensus. 21:06
and now, ->
allison huh, and it's only installing .pir versions, not .pbc versions?
that's strange
so, yes, we should install .pbc
it won't break anything not to, but loading pbc is faster 21:07
NotFound I'd like to have an installer that copy the .pir files, and then compile them to pbc using the parrot being installed 21:08
I think the issue is just that the .pbc must be in MANIFEST.generated but they aren't 21:11
21:11 bsdz joined
allison NotFound: pbc doesn't hardcode paths, so it's fine to compile them to .pbc using the build dir parrot 21:12
NotFound: yes, they won't be installed if they're not in MANIFEST.generated 21:13
NotFound Fixing and testing...
Yes, that is. Checking for more files with the same problem... 21:16
Commited a bunch that I'm more or less sure that must be installed 21:30
dalek rrot: r39020 | NotFound++ | trunk/MANIFEST.generated:
[cage] add several missing .pbc files to MANIFEST.generated
21:31
21:40 particle joined
dalek kudo: 5ed6dac | pmichaud++ | (2 files):
Use root_new opcode from parrot trunk. Bumps PARROT_REVISION.
21:47
rrot: r39021 | whiteknight++ | branches/gc_internals (9 files):
[gc_internals] PWNd the branch with mighty HEADERIXXORmake. It builts now.
21:55
21:58 Whiteknight joined
dalek rrot: r39022 | whiteknight++ | branches/gc_internals (4 files):
[gc_internals] gut pools.c (nee smallobject.c) and move most of the remainders into mark_sweep.c
22:05
rrot: r39023 | whiteknight++ | branches/gc_internals/src/gc/pools.c:
[gc_internals] delete pools.c
cotto looks at commit message for r39021 22:07
It seems that all that GC work is taking its toll.
NotFound Maybe he commited by SMS 22:08
Infinoid wishes he had l33t mighty HEADERIXXORmake sK1lLz too
NotFound Don't know what, but something has changed. Now I can build rakudo on the laptop and on the desk, with C and with C++, even with --optimize 22:10
Whiteknight NotFound: you couldn't before?
NotFound Whiteknight: it eated all the memory when building the fakecutable 22:11
Whiteknight oh, that issue is being resolved by Util
he's fixed it on linux, I think, and is working to fix it on Win32
NotFound But he hasn't commited yet
Whiteknight oh? I thought he had
NotFound The .c generated looks like some days ago 22:12
dalek rrot: r39024 | whiteknight++ | branches/gc_internals/src/gc/mark_sweep.c:
[gc_internals] rename some functions. Functions internal to the gc do not need to be prefixed with Parrot_gc_*
tracwiki: v22 | whiteknight++ | GCTasklist 22:13
tracwiki: trac.parrot.org/parrot/wiki/GCTask...ction=diff
22:16 Ademan joined
dalek cnum-dynpmcs: r48 | darbelo++ | trunk/ (5 files):
Welcome decNumber and goodbye decQuad, go in peace knowing you served your

are no more.
22:21
darbelo "$P0 = loadlib 'whatever'" fails silently for me if whatever isn't found. Is that intended? 22:28
NotFound darbelo: I think is, but I don't think is clearly documented 22:35
dalek rrot: r39025 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
[pct]: Give a more useful diagnostic for variables not in scope.
darbelo It seems an odd failure mode to me, figured I'd check if it was intended. 22:38
allison darbelo: not really the desired behavior, no
darbelo: I think there's a ticket for it already
NotFound allison: then what to do when the intention is to try several variants? Catch the excpetions? 22:39
dalek rrot: r39026 | allison++ | trunk/src/packfile.c:
[cage] Update library loading so it loads the file as bytecode or source

the requested extension, so defaulting to .pir from .pbc will work.
darbelo Found it. TT #437. 22:40
allison NotFound: when loading PIR/PBC files it goes ahead and tries all the variants, and only throws an exception if the file can't be found at all 22:41
NotFound: should do the same for dynexts
NotFound allison: we have some control over the pir/pbc/watever, we don't control external libraries 22:43
22:44 bacek joined
allison NotFound: we search for them along several paths, just like PIR/PBC, so we have some control 22:45
NotFound Look for example SDL.pir, it tries a lot of variants
allison NotFound: in src/dynext.c we return Undef from Parrot_load_lib when no library can be loaded 22:48
NotFound: oh, you mean trying lots of variants from PIR, not at the C level?
NotFound: then, yes, it should catch an exception 22:49
NotFound: and really, SDL is probably doing something wrong if it has to try a bunch of variants from PIR
pmichaud I think that SDL tries the variants because libsdl is installed differently on various platforms. 22:50
allison NotFound: or, just still targeting legacy code
pmichaud i.e., many platforms don't provide the libsdl.so symlink
NotFound pmichaud: I think that if someone needs to try a .so.0 his system has a problem 22:51
pmichaud NotFound: agreed, but I know that various linux distros have this problem.
allison grep doesn't find a loadlib in runtime/parrot/library/SDL 22:52
NotFound allison: ack does
pmichaud allison: it's in runtime/parrot/library/SDL.pir
(not in SDL/ subdir)
NotFound Ah, yes, sorry
allison NotFound: yeah, just found it moving the grep up a directory 22:53
NotFound: SDL does correctly check for an Undef return value from loadlib 22:54
darbelo: you can just check the return value to see if it's "true"
darbelo: so, it's not entirely silent. But I do also prefer throwing an exception. (There's even a comment in the code where it would be logical to throw an exception, asking if it should throw an exception instead of returning Undef) 22:55
darbelo allison: I'm from the 'Burst into flame' school of error reporting. It seems odd to me to just 'not fail' on failure :) 22:56
22:56 tetragon joined
darbelo I'm looking at the code now too. 22:57
NotFound allison: there is a related problem: some libraries are linked to libparrot, the failure of loadlib is ignored, and dlfunc gets the symbol from the current process image.
So if you throw an exception, you'll get a lot of bug reports 22:58
22:59 wayland76 joined 23:00 bacek_ joined
bacek_ good morninh 23:02
morning
afk_Coke allison: another partcl commit.
Infinoid morning bacek_ 23:04
bacek Infinoid: thanks for comment in TT#452
dalek rtcl: r356 | coke++ | trunk/ (15 files):
Roll out own _output_is test functions, so we don't have to rely on parrot.
23:05
Infinoid I hope I summed up the problem well
bacek From my point of view problem is "using mmd for vtable is harmful and slow"... 23:06
Infinoid yeah. Another point of view is "all these things should be overridable by pir at runtime", and I'm not sure how those two views interact 23:07
Coke I am dismayed that we already had it not using vtables, then we went through and added it all in, now we're going through and ripping it all out.
Infinoid For instance, I would be perfectly happy with a lean & fast Integer class... which morphs into an IntegerSubclassable class when you try to extend it
bacek .sub 'infix:+'(_,_) ... .sub 'infix:+'(_,'Foo') 23:08
This is rakudo way.
Infinoid Especially if we can somehow convince pmc2c to generate IntegerSubclassable automatically.
Coke + neq "vtable add"
allison Coke: well, what it was using before was another completely different dispatch system
wayland76 Quick question; does anyone know the policy of which files go where inside the "tools" directory? (for more details, see trac.parrot.org/parrot/ticket/677 ) 23:09
Coke allison: ah, so we're not going in loops, just wandering about. That's slightly better, actually. =-)
allison Coke: not vtables or multiple dispatch
Coke wayland76: there is no policy.
stuff just got plopped in various locations.
wayland76 Coke: Ok, do we want a policy?
Or at least a guideline or something?
darbelo cotto: ping
Coke guideline good. 23:10
Infinoid anyway, would be great to get some parrot designer input on TT#452
allison Coke: aye. the old system called itself "multiple dispatch", but it was really more like simple vtables. I should have just converted it straight to vtables the first time.
bacek allison: can we declare that "mmd should'n be used for vtable calls"?
allison bacek: no, mmd should be used when mmd is needed
Coke does it make sense to have MMD for /vtables/ though?
allison bacek: but mmd shouldn't be used when all you want is simple inheritance 23:11
Coke methods, sure.
bacek then we have to convert all vtable methods to just methods
Infinoid I'd like a clear way to determine when mmd is needed. In the case bacek ran into, the PMC functions fine without MMD but some of the stuff *using* it wanted to override things through MMD
allison Coke: ah, see my conversion made it so each PMC only gets MMD dispatch when it specifically wants MMD dispatch
Coke bacek: 'vtable method' isn't a thing, apparently.
cotto darbelo, pong
NotFound allison: note that example in TT #692 was dependant on not having some .pbc installed, and now they are 23:12
allison Coke: that is, a vtable call always calls a vtable function
bacek first test in t/pmc/multidispatch.t
dalek rrot: r39027 | chromatic++ | trunk/docs/book/ch04_compiler_tools.pod:
[book] Revised PCT chapter for readability and flow.
allison NotFound: it was still a bug,
Coke NotFound: you can easily duplicate the error with no installation.
bacek It want to override VTABLE_add
dalek rrot: r39028 | whiteknight++ | trunk (62 files):
[gc_internals] merge the gc_internals branch into trunk. Monkeyed with the makefile and manifest, so you're probably going to need to make realclean && perl Configure.pl after updating
NotFound allison: yeah, but the example is no longer a test
allison NotFound: you can do a manual test 23:13
all it needs is a simple .pir file, and try to load it as .pbc 23:14
darbelo cotto: I converted DecNum from decQuad to decNumber but I ran into a snag: Just how big does a big number have to be?
allison NotFound: my test was a file x.pir in the same directory as the test script 23:15
bacek allison: is first test in t/pmc/multidispatch.t correct?
dalek rrot: r39029 | whiteknight++ | branches/gc_internals:
Removing gc_internals branch because I'm done with it
23:16
cotto darbelo, what do you mean?
allison bacek: I'll take a look
Whiteknight darbelo: Do you have a limitation?
cotto It's kinda the point of the library that we can have arbitrarily large numbers.
dalek tracwiki: v23 | whiteknight++ | GCTasklist 23:17
tracwiki: trac.parrot.org/parrot/wiki/GCTask...ction=diff
allison bacek: it's only correct if Integer is doing multiple dispatch
darbelo decNumber isn't really "arbitrary presicion", it has a big array of digits at the end of the structure. The length is #define-able, but fixed. 23:18
bacek so my question: should we use mmd for vtable?
allison bacek: since we're changing Integer *not* to do multiple dispatch, then the test will need to change
bacek: not sure what you're asking?
Infinoid the test implies the possibility of subclasses or other code wanting to override vtables at runtime 23:19
allison bacek: the point of the test isn't to make sure Integer is doing multiple dispatch, the point is to test multiple dispatch, and Integer happened to be a handy candidate to test it
Infinoid so these changes disallow that, and if anyone relies on it, it also implies a deprecation cycle 23:20
darbelo True arbitrary precision would need a linked list of 'buckets', decNumber assumes contiguous storage for all of it digits.
bacek allison: what the difference between VTABLEs Integer.add and Foo.splice?
cotto looks at documentation
23:20 donaldh joined
Infinoid if it just used Integer because Integer was handy, then that's fine 23:21
we just weren't sure
allison Infinoid: the subclassing case is fine, since anyone who wants their subclass to do MMD can make their subclass do MMD
Infinoid ok, cool
darbelo cotto: speleotrove.com/decimal/dnnumb.html#decnumlsu
allison Infinoid: what we're disabling is the ability to add arbitrary alternates to the dispatch table
bacek allison: so we need deprecation cycle. 23:22
Infinoid EBADTESTS was the answer I was hoping for :)
allison bacek: try a little more detail to the question? They're different classes and different methods.
bacek: we've already had a deprecation cycle, they were included in DEPRECATED.pod in 1.0 23:23
bacek allison: checking deprecated.pod
cotto It's nice how they give it an obvious name like "lsu" so you know exactly what it does.
allison bacek: you'll find it as trac.parrot.org/parrot/ticket/452 in DEPRECATED.pod 23:24
darbelo It's the "least significant unit", which makes you wonder: "where are the other units, then?" 23:25
Infinoid awesome. so we can just fix up the tests and life is good
darbelo: purl ate them
bacek allison: ok. so I'll go ahead and replace all MUTLI's into VTABLE's
allison Infinoid: aye
cotto nom
darbelo Infinoid: That's what the documentations says too. 23:26
cotto darbelo, I'd say give it a reasonable default (512 digits?) and make it easy to change.
allison bacek: aye, that's good. a simple if/else construct can handle the variants between types
bacek allison: it can. If not I can just fall back to MMD. 23:27
allison bacek: exactly (what I was just typing)
bacek: the final "else" can just make the mmd call
darbelo "Easy to change" == "Pain in the ass" + "memory allocation trickery"
bacek allison: we always have foo(DEFAULT) in current PMCs. 23:28
cotto bacek++ #this issue is the reason I didn't get very far in converting MULTIs to VTABLEs.
23:28 rakudohudson joined
darbelo It's a compile-time constant. The only way to 'enlarge it' is to over allocate and overrun the array. 23:29
allison bacek: many of them do, yes
cotto darbelo, can't you just make sure DECNUMDIGITS is #defined to something appropriate?
bacek cotto++ # If I'll remove all MUTLI's from PMC's it will simplify life in pmc_pct branch :)
cotto darbelo, I was thinking that if someone needed to change it, they'd have to recompile anyway.
allison bacek: some of them, especially numeric PMCs, just extract a value from the second PMC, as the default 23:30
cotto bacek, there seem to be many such tasks
s/ anyway././
darbelo Oh, that *is* easy to change: just adjust the "-DDECNUMDIGITS=xxx" line in the makefile. 23:31
bacek allison: yes. Is it a problem?
cotto anything else has potential for significant ugliness
allison bacek: is what a problem?
cotto (although I though that decNumber did some dynamic stuff once a number got past a certain point)
allison bacek: extracting the numeric value instead of MMD dispatch?
bacek allison: yes 23:32
allison bacek: nope, it's a good default strategy
bacek allison: ok.
afk # time for $dayjob 23:33
allison bacek: I mentioned it just because in some cases you'll be translating the final else to MMD dispatch, and in some cases just to some simple operation
darbelo cotto: That's only for the internal buffers of the built-in functions.
cotto ok 23:34
darbelo You can create numbers as large as malloc let's you and the library will handle them. But resizable storage would be a pain in the ass to do here. 23:36
cotto in that case, just pick a fixed value and fail gracefully 23:41
ideally only when a failure is appropriate, but that's your decision ;)
darbelo All conversion routines will round at the number of digits specified in the context. And I capped that value at DDECNUMDIGITS. So we don't fail, we just round it to fit. 23:43
Andy Quiz!
What is eating all my cycles on my Mac?!?!? 23:44
darbelo A gremlin!
cotto a forkbomb?
purl i guess a forkbomb is :(){ ::& };:
jonathan purl is sometimes helpful. :-) 23:45
cotto Hmmm. I wonder what that does. ;)
Andy ping infinoid
purl I can't find infinoid in the DNS.
dalek cnum-dynpmcs: r49 | darbelo++ | trunk/build/src/ (2 files):
Make room for up to 512 digits in a DecNum.
Andy purl, infinoid? 23:46
purl infinoid is Mark Glines <mailto:mark@glines.org> or likes shiny things
Andy Oh! Hah! It's my md5 brute force computator! 23:48
Infinoid who, me? 23:51
Andy Yeah, you.
Infinoid o hai
Andy let's talk splint and asserts and stuff
cotto It's odd how nobody makes a decent md5 decompressor, especially since the compression ratio is so high.
Infinoid cotto: I'd pay $50 for one of those
Andy elliottkember.com/kember_identity.html
is what I'm working on.
Infinoid cool 23:52
So, I think we talked briefly about ASSERT_ARGS not playing nicely (enough) with splint 23:53
Andy ok 23:54
do go on.
I'm working on $WORK, but listening.
Infinoid I'm trying to find the discussion... it was something of a flyby comment at the time
Andy yes, there are things you can add to splint 23:55
to the code to make splint happy
doyou have an example of a function that we can look at?
Infinoid pmc_new(PARROT_INTERP, INTVAL base_type)
ASSERT_ARGS(pmc_new) will break at runtime if interp is NULL 23:56
Andy break? or fail.
Infinoid break. SIGABRT
with an assertion failure message
Andy well, but that's what we want. So it's not broken. :-)
that was my confusion. 23:57
ok
If you have code like pmc_new( NULL ), splint should catch that.
Infinoid sure, I just saw r38751 and wasn't sure whether it plays nicely with splint
yes
Andy Does it?
That might be a good test. :-) 23:58
Infinoid I have no idea. I haven't run splint in some time
Andy :q
Infinoid So what was the intention behind trac.parrot.org/parrot/changeset/38751 ?
Andy Oh, I was having problems with splint macros. I added those, and then later that niht had to back 'em out. 23:59