Parrot 2.3.0 Released | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: apply deprecations, merge branches | Review and vote GSoC applications
Set by moderator on 20 April 2010.
00:06 dalek left, dalek joined
particle is working on a PaFo GSoC press release 00:07
darbelo particle++ 00:09
We need more press.
dalek kudo: a27dfef | jonathan++ | src/cheats/eval.pm:
Re-enable :lang attribute for eval. Now we can eval Perl 5 code using Blizkost.
00:28
00:29 dalek left, dalek joined
tcurtis particle: if you're curious as to how the GSOC students reacted to learning that their proposal had been accepted, my reaction involved a lot of dancing around and jumping up and down. 00:35
cotto_work vids or it didn't happen 00:36
;)
japhb cotto_work, these days: "vids and it didn't happen"
darbelo lacks a camera.
japhb darbelo, not even on your cell phone? 00:37
darbelo doesn't exist.
00:37 preflex joined
darbelo lacks a functional camera. 00:37
The one on the cellphone is, indeed, still there. 00:38
japhb wonders whether you can even buy a new cellphone without one .... 00:39
tcurtis has an iPhone, leaving him without a video camera. Or many other things that would one expect to be basic features of modern phones, especially smartphones. 00:40
darbelo only expects mobile phones to work the same as regular phones, but mobile. 00:41
japhb I'm with you, darbelo. Well, actually, come to think of it, I *was*. Now I think my next phone will need to be able to ssh. 00:42
tcurtis wants his mobile phone to work the same as his laptop, but a phone, and of pocketable size.
00:48 dalek left, dalek joined 00:51 dalek left, dalek joined 01:12 ash_ joined
dalek rrot: r46047 | chromatic++ | branches/compact_pool_revamp/src (3 files):
[GC] Removed a memset() when returning a fresh header, as PMCs will overwrite

can figure out how to remove it. This improves the stress_strings benchmark by 1.315% and oofib by 1.778%. Allocating PMCs is now faster.
01:34
01:58 Psyche^ joined 02:15 JimmyZ joined 02:45 patspam joined 03:00 janus joined 03:15 ash_ joined
sorear Agh. More shadowing horrors. 03:23
Do not name a PMC attribute 'value'.
03:25 tetragon joined
bacek_at_work sorear, I removed -Wno-shadow already. 03:28
at r46018 03:29
dalek izkost: 801e519 | sorear++ | (5 files):
Hash iteration should return pairs

about this for a while.
sorear bacek_at_work: I'm on 2.3.0 :( 03:30
bacek_at_work sorear, bad luck...
2.3.0 is way too old. It was around for AGES.
I mean more than one week already :)
cotto Seriously. That's old and busted. 03:33
You should be using 2.4.0. 03:34
sorear cotto: I have to interoperate with 2.3.0-specific legacy code
cotto oic
sorear specifically, Rakudo
cotto Heh. Legacy code.
bacek_at_work seen rurban 03:57
purl rurban was last seen on #p5p 6 hours, 34 minutes and 37 seconds ago, saying: All the p5 gsoc projects in the last years are not really technical. parrot the opposite. They would really need more housekeeping and less technical invention.
04:24 arnsholt_ joined
dalek izkost: bddf41a | sorear++ | Configure.pl:
Try to warn earlier when problematic configuration is detected
04:30
04:54 khairul joined
khairul cotto: Hi cotto, thanks for being my mentor. I'm in the midst of exams now, so won't be free much till 5th may. 04:55
05:01 rurban_ joined
cotto ok 05:02
Don't let gsoc distract you.
It's ok to get started during the bonding period but not at all required.
If you haven't sent in a CLA, now would be a good time. 05:07
what os is mikehh running? 05:08
JimmyZ ubuntu 10.04 RC
cotto Odd that he'd see the io.t failures. The test is quite happy for me. 05:09
khairul thanks alot. i'll submit the cla later. have to read it first.
JimmyZ parrot never builds with me. 05:10
sigh
cotto orly? What happens? What OS are you on? 05:11
JimmyZ TT #888
win32
cotto not just any windows, but Chinese windows 05:12
JimmyZ Nope, config_lib.pir can't have chinese words 05:13
cotto Is there an easy way to repro for us decadent westerners? 05:14
or at least us ethnocentric westerners 05:15
;)
What does "ę•£čŠ±ē‰§äŗŗ" mean? 05:17
JimmyZ a user name 05:18
purl a user name is the identity
JimmyZ an
cotto I have Parrot configured with /tmp/ę•£čŠ±ē‰§äŗŗ as temp dir. Let's see what happens.
JimmyZ purl: an user name?
purl an user name is the identity
JimmyZ purl: user name? 05:19
purl it has been said that user name is the identity
cotto In American English you'd use "a".
JimmyZ Yeah.
cotto My build is sad.
JimmyZ that is parrot only supprot ascii config file? 05:20
err supports
cotto Urgh. I hope not.
I know you can safely use some non-ascii characters.
JimmyZ another ticket is trac.parrot.org/parrot/ticket/326, it built before. 05:21
I removed line 2839, 2840, 2841 in api.c with r40203, and then it pass all. 05:23
nopaste "cotto" at 192.168.1.3 pasted "quick for JimmyZ++" (13 lines) at nopaste.snit.ch/20379 05:37
cotto there you go
I'm not sure if it's correct but it'll let you build again.
Thanks for complaining.
In fact, I'm pretty sure it's wrong. 05:38
JimmyZ Thanks.
once again, could I request a commit bit act as cage cleaner? 05:39
cotto Have you requested one in the past? 05:41
(that won't disqualify you. I'm just curious.)
JimmyZ in the past you and coke mentioned it and mikehh 05:44
coincidence, there almost no one on #ps
cotto No. People only show up there for the Tuesday meeting. That's when commit bits need to be requested. 05:45
JimmyZ yes
cotto Right. I remember that. I'll bring it up tomorrow.
Can you build Parrot ok now? 05:46
JimmyZ I will try it tonight.
Any way, thank 05:47
cotto sure 05:49
06:06 uniejo joined
cotto When you have a chance to build, please post whether that patch allows you to build again. 06:08
JimmyZ No problem ;) 06:09
cotto Also, feel free to bump the importance of any bugs that break the build for you. Having failing tests is bad, but you can't do much of anything if you can't build. 06:10
dalek rrot: r46048 | petdance++ | trunk (6 files):
starting to convert the virtual functions to const STRING *
06:12
06:15 fperrad joined 06:16 fperrad_ joined
JimmyZ nopaste 06:17
nopaste?
purl nopaste is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or paste.scsys.co.uk or www.extpaste.com or gist.github.com
nopaste "JimmyZ" at 192.168.1.3 pasted "make smoke failed for cotto(It's not use chinese username.)" (12 lines) at nopaste.snit.ch/20380 06:18
JimmyZ aslo see smolder.plusthree.com/app/projects/...ails/33485 06:19
err It doesn't use chinese username.
06:22 riffraff joined 06:23 alexn_org joined 06:28 viklund joined 06:45 fperrad_ joined 06:56 aukjan joined 07:14 iblechbot joined
dalek rrot: r46049 | chromatic++ | branches/compact_pool_revamp/src/gc (4 files):
[GC] Moved PMC attribute allocation functions to a different file, where a good

improves oofib.pir by 2.109% by making PMC allocation faster.
07:18
rrot: r46050 | chromatic++ | branches/compact_pool_revamp/src/pmc/callcontext.pmc:
[PMC] Made CallContext PMC avoid unnecessary calls to static

performance by 1.539% and speeds up PCC in general. Rethinking the static function might be useful.
07:51
rrot: r46051 | fperrad++ | trunk/t/op/annotate-old.t:
fix warning : Use of uninitialized value $ENV{"TEST_PROG_ARGS"} in pattern match (m//)
08:07
izkost: 352d8b6 | sorear++ | perl5.pir:
Add a forgotten newclosure
08:21
sorear What's the PIR syntax for "branch if strings equal"? 08:25
moritz $I0 = iseq $S0, $S1 \\n if $I0 goto foo 08:29
or something like that
JimmyZ if $S0 == 'GET' goto serve_get ? 08:30
moritz I think you have to do it in two statements
JimmyZ if $S0 == 'GET' goto serve_get # from runtime\\parrot\\library\\HTTP\\Daemon.pir
moritz but my PIR fu is rather week
nopaste "Austin" at 192.168.1.3 pasted "== 'foo' works" (10 lines) at nopaste.snit.ch/20381 08:31
dalek rrot: r46052 | chromatic++ | branches/compact_pool_revamp/src/call/context.c:
[PCC] Added a very minor optimization and consted Parrot_pcc_free_registers().
08:40
rrot: r46053 | chromatic++ | branches/compact_pool_revamp/compilers/imcc/parser_util.c:
[IMCC] Refactored IMCC's INS() instruction creation function slightly to be
sorear How do I delegate to the inherited version of a vtable in a PIR override? 08:47
or, hmm, I could just actually inherit 08:49
Is it possible to implement namespaces in PIR? 08:58
JimmyZ PIR supports namespaces 09:00
Isn't it?
sorear I mean, implementing a NameSpace PMC subclass 09:02
bacek ~~
sorear the Parrot core seems very insistant on ignoring my homemade namespace 09:03
sorear is now stepping in gdb
ooh 09:11
get_class <pmc> does not return a canonical PMCProxy
which makes it effectively useless
I can't use it for inheriting because it doesn't compare same to the results of Parrot_oo_get_class
Austin You might mean "class <pmc>" 09:12
sorear so it doesn't make VTABLE_isa work
bacek We do need "a champion" to clean up all this PMCProxy/Class/Object mess...
dalek rrot: r46054 | fperrad++ | trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp:
[prof] fix on Windows ( newline \\r\\n )
Austin Also, IIRC, there's a problem with overriding some of the get_xxx_keyed vtables, so I don't think you can code a full-on namespace in pir alone. 09:13
Sorry.
sorear It doesn't matter, because I can't even convince Parrot to *accept* my namespace 09:14
inheriting from class 'NameSpace', isa NameSpace is still false
so Parrot happily decides it's a variable and not a valid namespace 09:15
(isinstanceof considered harmful)
Austin nopaste? 09:18
purl nopaste is probably nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or paste.scsys.co.uk or www.extpaste.com or gist.github.com
09:22 snarkyboojum joined 09:29 gaz joined 09:33 clinton joined
dalek kudo: 0a04ef3 | (Solomon Foster)++ | src/ (4 files):
Rename Range.minmax to Range.bounds. Change Any.minmax to return a Range, and take Ranges as arguments, too. (Though note that in many conditions the Range is expanded to a list going in, which muddles things.) Add minmax operator which uses Any.minmax internally.
10:03
10:08 bakkdoor joined
bacek ( 16256732900 - 15006995754) / 16256732900 * 100 10:17
purl 7.68750494756545
bacek msg chromatic Branch is 7.68% faster then trunk. I'm going to merge it tomorrow morning at about 8AM SYD. 10:19
purl Message for chromatic stored.
dalek TT #1577 closed by bacek++: gitignore files 10:37
TT #1577: trac.parrot.org/parrot/ticket/1577
10:47 jsut_ joined
bakkdoor is there a complete overview of all built-in past nodes? 10:57
bacek bakkdoor, I don't think so... 10:58
bakkdoor oh :/ 10:59
Austin bakkdoor: perldoc in the pct/src/PAST/Node.pir file 11:00
bacek Austin++ 11:01
bakkdoor Austin: ah ok thanks
bacek Niiice... Why TGE isn't deprecated??? 11:34
dalek rrot: r46055 | bacek++ | trunk (24 files):
Replace deprecated in-place substr ops
11:39
11:59 bluescreen joined 12:09 whiteknight joined
mikehh get 2 failures in make test - t/compilers/pge/p5regex/p5rx.t and t/compilers/pge/perl6regex/01-regex.t - error:imcc:The opcode 'substr_s_i_ic_sc' (substr<4>) was not found. 12:11
bacek: so what do you use instead of inplace susstr 12:18
substr 12:19
bacek mikehh, non-in-place substr or replace 12:21
12:32 ash_ joined 12:40 ruoso joined 12:41 tetragon joined 12:43 bluescreen joined
Coke (TGE) ISTR allison wanted to keep it. 12:43
there's plenty of other stuff to rip out. go get 'sizeof' 12:44
mikehh bacek: compact_pool_revamp branck All tests PASS up to fulltest at r46055 - Ubuntu 9.10 amd64 RC (g++) 12:46
bacek mikehh, thanks 12:47
Coke, I'll finish strings first! 12:51
Coke bacek: you and your crazy "logical order". 12:52
12:52 iblechbot joined
bacek It's very new order for parrot! 12:52
12:56 uniejo joined 13:01 rurban_ joined 13:07 cosimo joined 13:09 cosimo joined
dalek rrot: r46056 | mikehh++ | trunk/t/compilers/pge/p5regex/p5rx.t:
change in-place substr to replace
13:17
purl dalek: that doesn't look right
rrot: r46057 | mikehh++ | trunk/t/compilers/pge/perl6regex/01-regex.t:
change in-place substr to replace
purl dalek: that doesn't look right
rrot: r46058 | fperrad++ | trunk/src/embed.c:
fix segmentation fault of pbc_disassemble.exe on mingw

  #0 0x686d491d in PDB_free_file (interp=0x3f4050, file=0xbaadf00d)
   at src/debug.c:2745
  #1 0x686d4a75 in PDB_disassemble (interp=0x3f4050, command_unused=0x0)
   at src/debug.c:2612
  #2 0x686d87a2 in Parrot_disassemble (interp=0x3f4050, outfile=0x0, options=0)
   at src/embed.c:969
  #3 0x00401385 in do_dis (interp=0x3f4050, outfile=0x0, options=0)
   at src/pbc_disassemble.c:161
  #4 0x00401527 in main (argc=1, argv=0x3f402c) at src/pbc_disassemble.c:141
rrot: r46059 | mikehh++ | trunk/t/compilers/pge (2 files):
forgot to change the Copyright
13:23 atrodo joined
dalek rrot: r46060 | bacek++ | trunk (26 files):
Remove more deprecated string ops: bitwise, chomp, case and encoding
13:50
rrot: r46061 | bacek++ | trunk/src/ops (2 files):
Resurrect inplace downcase. I can't figure out how PGE emits it for
13:53 plobsing joined 13:56 JimmyZ joined
JimmyZ msg cotto the patch doesn't work for me. 13:57
purl Message for cotto stored.
dalek a: c84044b | fperrad++ | lua/lua51.pir:
Replace deprecated in-place substr ops
rrot: r46062 | bacek++ | trunk (3 files):
Revert "Resurrect inplace downcase" and fix PGE to not emit it.
14:07
14:10 Essobi joined 14:15 davidfetter joined
Coke removed bascorp's spam/account. 14:18
dalek rrot: r46063 | mikehh++ | trunk/t/pmc/namespace.t:
remove diag that clutters test output with comment
14:23
14:24 Andy joined, bubaflub joined
JimmyZ hello bacek 14:28
dalek a: 1a3df97 | fperrad++ | lua/lib/luastring.pir:
update downcase & upcase uses
14:30
tracwiki: v11 | coke++ | TracSpammers 14:32
tracwiki: trac.parrot.org/parrot/wiki/TracSpa...ction=diff
14:32 lucian joined 14:40 lucian joined
dalek TT #1595 created by jimmy++: [PATCH][PCT]removed deprecated in-place ops 14:44
TT #1595: trac.parrot.org/parrot/ticket/1595
14:44 fperrad joined 14:45 khairul joined
mikehh bacek: bunch of examples_tests fail in trunk 14:51
dalek kudo: f8987e4 | (Solomon Foster)++ | src/Perl6/Grammar.pm:
Make minmax have list_infix precedence.
kudo: cb8446c | (Solomon Foster)++ | src/core/Cool-str.pm:
Add special cases to infix:<cmp> involving +Inf and -Inf (so they can be compared against any type).
kudo: 083e3ea | (Solomon Foster)++ | t/spectest.data:
Turn on S03-operators/minmax.t.
kudo: 1cdbc19 | (Solomon Foster)++ | src/core/Cool-str.pm:
Revert "Add special cases to infix:<cmp> involving +Inf and -Inf (so they can be compared against any type)."

Revert patch because it broke infix:<cmp> pretty badly.
rrot: r46064 | petdance++ | trunk (7 files):
all charset virt funcs now take const STRING *
14:56
14:57 ruoso joined 14:58 GodFather joined
particle purl: be mjd 15:01
purl I, DOMINVS
mikehh AFAICS all the examples_test failures are missing opcodes (recently removed) 15:15
15:20 iblechbot joined
dalek kudo: 8d99ca2 | moritz++ | CREDITS:
update my CREDITS entry
15:32
kudo: c868fc1 | moritz++ | tools/contributors.pl:
[tools] new script contributors.pl

announcements
purl i guess announcements is a table and who is the column?
kudo: 082caee | moritz++ | docs/release_guide.pod:
[docs] instruct release manager to include a list of contributors in the announcement
nxed: r452 | julian.notfound++ | trunk/winxedst1.winxed:
use s_s_i form of trans_encoding, s_i form is gone
15:35
cotto JimmyZ, it'd be very helpful if you could bisect TT #888 to find out which revision broke the build for you. 15:37
NotFound cotto: I think it was the change to assume command line parameters are utf8 15:38
JimmyZ cotto: It's failed about 66 test, though it builds for me. 15:39
cotto ok. I don't see any test failures, so they may be unrelated to the patch. 15:40
JimmyZ err, built
cotto win32 doesn't get enough love
JimmyZ so biescting is unuseful 15:41
NotFound cotto: no strange, given that most of us don't use it.
cotto ok. It'd be good to get those other test failures fixed (and verify that my patch is sane) before committing it.
cotto heads to work 15:42
nopaste "JimmyZ" at 192.168.1.3 pasted "quick patch for myself, it passed all tests. but I don't it's the right patch FOR cotto" (17 lines) at nopaste.snit.ch/20383
mikehh JimmyZ: codetest will reject the patch - c++ comments not allowed 15:48
JimmyZ mikehh: Yeah, It shouldn't be committed 15:49
Coke mikehh: it's just a POC.
mikehh or at least object to it
Coke if it were real, we'd just delete those lines anyway. 15:50
JimmyZ mikehh: Itself was wrong patch
sigh, poor english again. 15:51
mikehh hey English is my first (and only really) language and I still screw up
that is of course spoken as opposed to so-called computer languages - not that I don't screw up there 15:53
darbelo knows people who have FORTRAN as their first language. 15:59
mikehh it was mine 16:00
darbelo mikehh: I thought you spoke english ;)
mikehh hah - was we talkin' or codin' 16:01
Andy ANDY ON CONSTRING FRENXY
ANDY CONST EVERYTHING
darbelo "Punched first card at the age of fieve" 16:02
Andy ANDY NOT ABLE TYPE ANDY SO EXCITED
darbelo Andy: Hulk CONST!!
Andy darbelo: Probably for me it was about age 4 I think.
darbelo Andy: In FORTRAN you can make both be the same ;)
mikehh the first computer I used had paper tape - an IBM 1620
Andy where's the web page that shows the smoke results? 16:03
16:03 theory joined
Andy oh found it 16:03
mikehh smolder.plusthree.com/app/projects/..._reports/8 16:04
Andy tt.taptinder.org/buildstatus/pr-Parrot/rp-trunk iks what I was lookin' for 16:05
thanks.
cotto_work JimmyZ: that was the first thing I tried. It works but it's definitely not the right fix. 16:06
NotFound In Russian Fortran formula translates you.
mikehh in pir I changed substr target, $I0, 2, "\\n" to target = replace target, $I0, 2, "\\n" how do I change substr S3, 5, 1, S2 in pasm 16:21
darbelo target = replace target, $I0, 2, "\\n" is sugar for PASM replace target, target, $I0, 2, "\\n" 16:22
mikehh 'k 16:23
darbelo Any time you see arg0 = op arg1, arg2 it's the same as op arg0, arg1, arg2 16:26
japhb seen allison 16:28
purl allison was last seen on #parrot 5 days, 20 hours, 23 minutes and 48 seconds ago, saying: is anyone else having trouble getting in to the conf call? [Apr 21 20:04:32 2010]
darbelo japhb: She'll most likely be here by the parrotsketch time. 16:30
japhb nod 16:32
darbelo Based, of course, on the answers my magic 8-ball gave after shaking it. 16:33
japhb ah
darbelo I'm mostly guessing based on past experience. She usssually logs into IRC a few minutes before #ps 16:34
dalek rrot: r46065 | mikehh++ | trunk/examples/japh/japh3.pasm:
change in-place substr to replace
purl dalek: that doesn't look right
darbelo Except when she doesn't.
The magic 8-ball says "This time for sure" however. 16:35
Which I find highly encouraging.
16:36 bakkdoor joined
darbelo bacek: ping 16:52
whiteknight seen Chandon 16:56
purl Chandon was last seen on #parrot 24 days, 20 hours, 52 minutes and 53 seconds ago, saying: It really depends on the application and the algorithm. For some things, nothing, for others, everything. [Apr 2 20:03:14 2010]
16:59 riffraff joined
particle that's some algorythm 16:59
y/y/i/
16:59 chromatic joined
darbelo particle: It can be incaurate, but it's for sure fast ;) 16:59
17:07 allison joined
cotto_work Is this patch a good idea: trac.parrot.org/parrot/attachment/t...path.patch 17:10
chromatic I'd rather do it only if the string contains characters outside of Latin-1.
cotto_work What's the best way to do that? 17:11
purl i guess the best way to do that is not always by telling you what you think you want to know.
cotto_work forget the best way to do that
purl cotto_work: I forgot best way to do that
chromatic something like grep { $_ > 127 } unpack( "W*", $maybe_has_utf8_chars ); 17:16
dalek nxed: r453 | julian.notfound++ | trunk/examples/Xlib.winxed:
update hardcoded value in example Xlib
17:21
rrot: r46066 | mikehh++ | trunk/src/string/charset/ascii.c:
fix codetest failure - line length
17:23
rrot: r46067 | NotFound++ | trunk/examples/nci/Xlib.pir:
fix Xlib search in example Xlib module
rrot: r46068 | mikehh++ | trunk/examples/json/postalcodes.pir:
change in-place string ops
17:39
purl dalek: that doesn't look right
mikehh maybe it realy should be replace 17:40
purl botsnacki 17:41
purl thanks mikehh :)
17:55 joeri joined 18:10 lucian_ joined 18:11 kjeldahl_ joined
dalek rrot: r46069 | mikehh++ | trunk/examples/library/ncurses_life.pir:
replace in-place string ops - I think this example is TODOed but at least it now compiles
18:12
tracwiki: v27 | allison++ | GCTasklist 18:24
tracwiki: trac.parrot.org/parrot/wiki/GCTaskl...ction=diff
chromatic compact_pool_revamp is ~7% faster than trunk now. 18:25
dalek rrot: r46070 | mikehh++ | trunk/examples/pge/demo.pir:
replace in-place string op
18:29
whiteknight 7%? 18:37
purl 7% is potentially 100%.
whiteknight purl, that's the worst math I ever heard
purl whiteknight: i'm not following you...
whiteknight of course you're not
chromatic: what does that branch do? 18:38
darbelo It revamps compact_pool() 18:42
18:42 tewk joined
darbelo It manages string storage in a smarter (and fater) way. 18:42
s/fater/faster/ 18:43
chromatic It removes some stupidity from the GC.
darbelo That's another way to put it.
mikehh ok my attempts at replacing upcase and downcase did not work 18:45
dalek rrot: r46071 | mikehh++ | trunk/examples/shootout/revcomp.pir:
replace in-place string op
rrot: r46072 | mikehh++ | trunk/examples/pir/substr.pir:
replace in-place string op
chromatic It also has some optimizations that immutable strings made possible. 18:46
darbelo mikehh: bacek fixed some stuff with downcase in TGE, have you seen it? 18:47
chromatic Informed guess: trunk is 10-11% faster than 2.3.0.
darbelo mikehh: r46062, I think 18:48
Coke chromatic: not bad for a week's work.
(i know, I know, a week's commits on trunk != a week's work.)
mikehh darbelo: I looked, but imcc reports errors and when I try to change it still get an error 18:49
chromatic If we can turn more STRINGs into PBC constants, we might see even more benefit in Rakudo.
darbelo mikehh: Can you nopaste the errors?
mikehh need to take a bit of a break before I do something really stoopid
t/examples/catchall.t .. 51/149 error:imcc:The opcode 'upcase_s' (upcase<1>) was not found. Check the type and number of the arguments 18:50
in file 'examples/pir/pirric.pir' line 419
I tried changing the got: 18:51
t/examples/catchall.t .. 40/149 error:imcc:The opcode 'upcase_s_p' (upcase<2>) was not found. Check the type and number of the arguments
in file 'examples/pir/pirric.pir' line 1799
there are a bunch in the file 18:52
18:52 avar joined
NotFound mikehh: I'll take care, pirric is my toy. 18:52
Coke stares at www.cpan.org/src/parrot.txt 18:53
mikehh NotFound: 'k - I'll look when you have done it :-}
darbelo ls
mikehh anyway I think I am going squint - I can't see the screen anymore - bbl - in time for #ps I hope 18:55
NotFound What's the modifier to put a method in the namespace? 19:00
cotto_work :nsentry
purl i heard :nsentry was a new feature, no deprecation involved
19:07 avar left
particle purl, no, :nsentry is the pir modifier to put a method in the namespace 19:08
purl okay, particle.
19:17 smash joined
smash hello everyone 19:17
Coke smashing! 19:20
19:31 Andy joined
dalek rrot: r46073 | NotFound++ | trunk/examples/pir/pirric.pir:
stop using deprecated and gone features in example pirric
19:34
rrot: r46074 | mikehh++ | trunk/examples/shootout/knucleotide.pir:
replace in-place string ops
mikehh cotto_work: the test y/op/io.t was failing another ASSERT which dukeleto++ fixed - so it passes for me now 19:41
s/y/t/
cotto_work OK. Can you close the bug? 19:42
mikehh NotFound: do you still have problems related to TT #1592, or can we close it now? 19:46
NotFound mikehh: My problem is that I don't know what that test is testing 19:47
dalek a: f2bd831 | fperrad++ | dynext/pmc/lua (2 files):
now Parrot strings are immutable
19:48
NotFound mikehh: the example i put in the ticket still segfaults.
cotto_work I suspect that it falls under the "don't do that" category. 19:49
NotFound cotto_work: Don't HLL map a PBC? =:O
PMC 19:50
cotto_work No. Don't hll map RPA to FileHandle.
mikehh NotFound: have to ask dukeleto about that, but is the test still failing for you? Maybe we should open a new ticket.
cotto_work (but handling the case wouldn't be a bad idea)
NotFound cotto_work: RPA is used for brevity. I'm not going to write a language with a dynamic PMC fof FileHandle just to test that. 19:51
rurban chromatic: already timed immutable strings? 19:52
cotto_work #ps in 38 19:53
NotFound The problem is not the example, is the lack of logic in the procedure. 19:54
mikehh NotFound: BTW re pirric - I thought I did all that - well maybe not the :nserntry bits, must have messed up somewhere (didn't commit it anyway) 19:56
NotFound mikehh: I don't care if the test pass, because I don't know what is testing for. You can do some nasting things and still write some code that pass? Sure, I don't need a test to verify that X-)
mikehh NotFound: yeah - there are some tests I am very dubious about 19:57
NotFound mikehh: I've already commited the fix.
mikehh NotFound - that's what I was looking at - can't see what I did wrong when I tested it - never mind, lot's more to do :-} 19:58
NotFound I don't like the :nsentry but is the quickest fix I've found. 20:00
20:03 eternaleye joined 20:08 Austin_Hastings joined
Util PDD19 and book draft ch11 both mention a 2-arg form of the .meth_call directive, where the second arg is RETCONT. 20:09
1) Is the 2-arg form actually supported?
2) Are there any examples of the 2-arg .meth_call in anyone's working code?
3) Is there an equivalent non-directive form with RETCONT, (like ` r = obj."method"(x, y, z) ` is a alternate way to write a non-RETCONT method call)?
nopaste "darbelo" at 192.168.1.3 pasted "Sample file-based config for RTEMS cross-compiles, still has some way to go." (80 lines) at nopaste.snit.ch/20385 20:13
darbelo bubaflub: See nopaste.snit.ch/20385, it was half-working for me on a fedora box when I left it. 20:14
bubaflub darbelo++
i'm glad we both got to rock the GSoC this year
darbelo Yeah, me too. 20:15
NotFound Util: I don't see that in pdd19 20:16
ttbot Parrot trunk/ r46075 MSWin32-x86-multi-thread make error tt.taptinder.org/file/cmdout/284591.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) 20:18
Coke that actually doesn't look like a bug in the build. 20:19
darbelo Coke: Is there a way to tell checkdepend.pl that I only care about a specific subset of the failures? 20:20
Util NotFound: In the example code on line 1391 of pdd19:
.meth_call "method" [, $P1 ] # r = obj."method"(x, y, z) 20:21
japhb I saw in passing earlier someone had talked about a press release for our GSoCs ... is that live somewhere?
Util the bracketed $P1 is the optional second argument
NotFound I wonder what tha example exemplifies. What's supposed to be on $P1? 20:22
20:23 dmagnus joined
nopaste "darbelo" at 192.168.1.3 pasted "Cobled together rtems hints file to go with the config file. It's not completely coprrect, since I made some changet that I0ve since lost." (64 lines) at nopaste.snit.ch/20386 20:23
dalek rrot: r46075 | mikehh++ | trunk/examples/shootout/regexdna.pir:
replace in-place string ops
darbelo bubaflub: Also see nopaste.snit.ch/20386
Coke darbelo: you seem to be able to pass in file names...
NotFound <allison> - Experimented with HLLs that compile to pure assembly (no runtime) and bypassing NQP, for a lightweight language. --> Are you trying to beat Winxed? ;) 20:24
allison NotFound: nah, just experimenting 20:25
darbelo Coke: Oh, hadn't seen that. I'll play with that later in the week.
allison NotFound: mostly a course assignment
NotFound allison: Feel free to borrow from Winxed if you want. 20:26
allison Coke: re #389 and rakudo, yes it probably is p6object, I had to tag a few of those methods with :nsentry 20:27
NotFound How can I look for a method given a class object? inspec_str('methods')['methodname'] ? 20:29
Coke allison: I have to leave halfway through the new meeting time. 20:30
allison Coke: makes sense
Coke allison: I think jnthn is looking at that tonight. 20:31
20:35 bluescreen joined
moderator Parrot 2.3.0 Released | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: apply deprecations, merge branches, test compact_pool_revamp and exceptions_refactor branches | Review and vote GSoC applications 20:36
particle aye, i spoke to jnthn, he's hoping to update rakudo tonight 20:41
moderator Parrot 2.3.0 Released | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: apply deprecations, merge branches, test compact_pool_revamp and exceptions_refactor branches | welcome our GSoC students 20:42
cotto_work Coke: lkm when jimmyz's commit bit is flipped. 20:53
Coke I'll even lyk.
cotto_work yeah. that. 20:54
purl hmmm... yeah. that is an impediment.
dalek rrot: r46076 | NotFound++ | trunk/examples/pir/pirric.pir:
stop using get_global to check methods and drop the no longer needed :nsentry modifers in example pirric
20:56
21:01 rurban_ joined 21:02 eternaleye joined 21:13 Whiteknight joined 21:16 lucian joined 21:17 TiMBuS joined 21:19 plobsing joined
darbelo smash: I've done some small work in corss-compilation, I've already sent some of my results to bubaflub. The most important features on that front are file-based configuration and out-of-tree building. 21:21
file-based config works, building out-of-tree doesn't. 21:22
smash darbelo: *nods*
darbelo Making parrot's src tree look like the installed tree will probably help a lot in that regard. 21:23
21:23 particle joined
allison darbelo: do we want that, or do we want to build into a separate tree? 21:23
darbelo: like, a build/ directory at the top level?
smash even the configuration process isn't cross-compilation friendly 21:24
particle sigh
NotFound darbelo: Is possible to dump Configure result to a file and use it in another platform?
darbelo NotFound: Not really, nopaste.snit.ch/20385 is as close as you can get to that.
21:25 chromatic joined
NotFound It will be halpful for example to run Configure in mingw under windows and use it in a linux mingw package. 21:25
darbelo If you know what the Configure probes would find, you can put that in a file like the one I nopasted and have th ebuild mostly work. 21:26
bacek Good morning, humans.
darbelo smash: It involves a little more work than a native build, but file-based-configuration should be powerful enough to support cross compilation. 21:28
smash: The real problem is in the makefiles.
bacek chromatic, ping
chromatic pong
bacek Any objections on merging now?
smash darbelo: file-based-configuration would be a good step yes
chromatic Merge away! 21:29
darbelo smash: We have, even if we do not advertise, file-based-configuration.
perldoc Configure.pl for more info. 21:30
What you want is under the "CONFIGURATION-FILE INTERFACE" heading.
smash great, will dig into it.. thks 21:31
bacek Done. r46077
chromatic Bang! Kapow!
bacek Cheap karma to someone with svn checkout. Few branches can be removed now. 21:32
darbelo smash: The examples are outdated and reference steps that have been removed, so watch out.
bacek: which branches?
bacek compact_pool_revamp, immutable_strings_part2, strings_consting
21:33 tcurtis joined
smash darbelo: ok, thks 21:33
bacek Whiteknight, ping. Do you still need compact_strings branch?
bakkdoor i have a problem with my action for integer literals. it tells me: "Method 'item' not found for invocant of class 'Regex;Match'" any ideas? 21:34
bacek And looks like tt389_fix isn't useful anymore.
bakkdoor, you probably want to call .ast first
bakkdoor, or just stringify it via ~
dalek TT #1272 closed by mikehh++: Problems with codetest on files in ext/ directory (should ext/ be included ... 21:35
TT #1272: trac.parrot.org/parrot/ticket/1272
allison bacek: yes, tt389_fix can be removed
moderator Parrot 2.3.0 Released | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: apply deprecations, merge branches, test exceptions_refactor branch | welcome our GSoC students 21:35
particle no codetests on ext/ please! 21:36
bakkdoor bacek: within the action for integer literals? i basically have the same code as for example in the squaak example language..
chromatic Please hold off on removing tt389_fix, if that's the one I think it is. 21:37
bakkdoor bacek: and there's no call to .ast as well
bacek chromatic, I'm going to create StringBuilder PMC soon. Just to offer "canonical" way of creating strings in immutable world.
particle will the recent branch merges make it harder for rakudo devs to get compiling on parrot's head of trunk? 21:38
chromatic Let's try it as a dynpmc first.
bacek bakkdoor, squaak is slightly outdfated. .ast used to be $()
chromatic particle, they should have no effect.
particle excellent.
jnthn++ said he'd try to get rakudo working tonight or tomorrow
bakkdoor bacek: so, I should use .ast where I'm currently using $( .. ) instead?
bacek bakkdoor, yes.
chromatic I'd like to see Rakudo using trunk again. I want to profile it.
particle $(...) has been deprecated 21:39
bakkdoor bacek: alright. i'll try that
particle yeah, and rakudo is looking forward to the speedups
bacek bakkdoor, check r45980. I updated squaak to "modern parrot" recently. 21:40
bakkdoor bacek: now i'm getting this: "too few positional arguments: 2 passed, 3 (or more) expected"
bacek: alright, i'll look at it
plobsing chromatic: I'm looking at implementing that frozen string as PBC const optimization
bacek bakkdoor, can you nopaste you code?
plobsing We currently traverse the PMC constant object graphs too late because imcc has already allocated the space for the constants 21:41
GeJ `gmake test` PASS on FreeBSD/amd64 with trunk @r46079 21:42
NotFound BTW, we need a packfiledebug.pmc
plobsing I see 3 options: 1.) traverse the objects again at an earlier time
2.) rearrange IMCC so it makes use of smaller sections which it only concatenates at the end 21:43
3.) use this as an opportunity to use the PackFile PMCs in stead of the structs
chromatic What's your preference? I know mine.
NotFound Mine is 3) 21:44
plobsing 1.) Is probably easier, 3.) is probably cleaner
chromatic How much easier is "easier"?
bacek vote for "3" 21:45
dalek rrot: r46077 | bacek++ | trunk (14 files):
Merge branch 'compact_pool_revamp'
rrot: r46078 | darbelo++ | branches/compact_pool_revamp:
Branch has merged to trunk as is no longer needed.
rrot: r46079 | darbelo++ | branches/immutable_strings_part2:
Branch has merged to trunk as is no longer needed.
purl i already had it that way, dalek.
rrot: r46080 | darbelo++ | branches/string_consting:
Branch has merged to trunk as is no longer needed.
purl i already had it that way, dalek.
NotFound plobsing: my experiments with pirado show that using the packfile pmc is not hard.
plobsing Its not using the packfile PMC, its that the structs (and their use) is woven into imcc (which I try to avoid touching) 21:46
chromatic Removing code from IMCC can only help.
plobsing fair enough. 3.) it is.
chromatic From a scheduling point of view, how much work is it to do #1 instead of #3?
NotFound But as I said, we still need a packfile for the pir debug segment. 21:47
chromatic Rough estimates are fair.
NotFound Er, a pbc
plobsing chromatic: #1 I can do on my own in >1 week.
(probably)
NotFound Ugh, a PMC
Mst sleep
plobsing with #3, that seems like an unlikely timeline 21:48
s/>/</
chromatic Does #1 preclude, help, or hinder #3?
plobsing It does nothing to help or hinder. It's my way of avoiding IMCC. 21:49
bacek OTOH, we can just use consttable from pf during freezeing/thawing Subs.
plobsing (which is what would be changing for #3)
chromatic Okay. We could get at least some of the benefit of this optimization sooner if we do #1, and it doesn't hurt our chances of doing #3 as well. 21:50
particle what will a second traversal to for freeze timings?
plobsing most of these objects are shallow 21:51
particle that's promising
chromatic Also freezing less data means going faster.
I can imagine PBCs getting 20% smaller. 21:52
At least, NQP-generated code.
bacek msg jimmyz Your commit bit approved. I'll leave TT#1595 for you :)
purl Message for jimmyz stored.
chromatic How about this? 21:53
purl this is rithgt
chromatic plobsing works on #1 in the next week, and makes a wiki page with notes on doing #3.
NotFound creates the missing PMC.
We try to merge #1 as soon as possible, then make a plan to make #3 feasible.
NotFound chromatic: that's already my intention.
chromatic This gives us concrete information on how much of a benefit we get from #1 without requiring a huge investment in IMCC.
NotFound Thres is some doc about the steps for adding a new core PMC? 21:55
bakkdoor bacek: sorry, for the delay. had to answer a phone call. heres my code (extract): nopaste.info/8ee85a633b.html 21:56
bacek NotFound, just dump .pmc file into src/pmc/
plobsing you'll have to bump pbc compat and remake the native pbcs as well (PMC numbering is part of PBC)
bacek bakkdoor, try "method literal_value($/, $key?)" 21:57
NotFound We are in 6.9... Are two digits supported?
bacek NotFound, should be. 21:58
darbelo Shouldn't there have been a major bump for the release?
bakkdoor bacek: that gives me: "Method 'ast' not found for invocant of class 'Undef'" 21:59
dalek tracwiki: v28 | bacek++ | GCTasklist
tracwiki: compact_pool is revamped now
tracwiki: trac.parrot.org/parrot/wiki/GCTaskl...ction=diff
bacek darbelo, gerd missed it...
bakkdoor bacek: and whats the question mark in $key? for ?
bacek bakkdoor, "optional"
bakkdoor bacek: ah ok.
bacek bakkdoor, you have to check manually if it's passed. In nqp-rx '{*}' is optional as well an invoked implicitly at the end of rule 22:00
s/an/and/ 22:01
dalek rrot: r46081 | plobsing++ | branches/pbc_frozen_strings1:
create branch to try low-cost, unclean implementation of PBC constant strings optimization
bakkdoor bacek: but where's the Undef coming from? i only have integer literals currently in literal_value (as shown in my code) 22:02
bacek bakkdoor, on second call to "literal_value"
bakkdoor, without $key passed 22:03
afk #morning duties, $dayjob
bakkdoor bacek: but why is it called twice? my parsetree only has one literal value node 22:04
bacek "In nqp-rx '{*}' is optional as well and invoked implicitly at the end of rule" :)
Check nqp-rx sources for more inspirations :) 22:05
bakkdoor bacek: ah I see. alright thanks 22:07
Austin bakkdoor: nopaste.info/e785a9d4b4.html 22:25
Coke finds a CLA from jimmy in a dusty old corner of gmail.
Austin whoops
${key} = {$key}
bakkdoor Austin: yeah, i did it like that. now it's kinda working. :) well all i have for now are assignments. but more will come ;) 22:26
Austin woot
bakkdoor :) 22:27
Austin Keep in mind the squaak stuff is dated by now - pmichaud++ has done a bunch of work on nqp(-rx), and so there are some differences between the tutorials and the current state of the system
bakkdoor i still have to get used to the grammar & action stuff. i'm used to bison&flex. they're quite a bit different
Austin: yeah, i realized that ^^
Coke msg jimmyz I just need to confirm your trac.parrot.org ID before I can flip the commit bit. 22:28
purl Message for jimmyz stored.
Coke has a guess, but wishes it confirmed.
bakkdoor Austin: where can i find the latest squaak version? its not here: svn.parrot.org/languages/ . in the git repo (master branch)? 22:29
Util NotFound: re: how to check a method - gist.github.com/381431 has my code example. Short answer: use `can` on an object, or `inspect class, 'methods'` on a class.
Austin I dunno, bakkdoor. 22:30
cotto_work Coke: his trac id is jimmy 22:31
trac.parrot.org/parrot/ticket/888 is one of his bugs
Austin Util: Not for nothing, but classes have a .find_method($name) method, too. 22:32
Util Austin: Thanks!
Austin It searches the mro, so it will get parentclass methods if available (by default).
22:33 jnthn joined
jnthn Hi 22:34
purl niihau, jnthn.
jnthn purl: I don't miss you at all.
purl jnthn: i'm not following you...
jnthn Good.
gist.github.com/381436
darbelo bakkdoor: examples/languages/squaak/ in a parrot checkout.
jnthn This is a pure PIR, no Perl 6 required at all, very short example of why Rakudo doesn't work on current Parrot 22:35
In a nutshell, it seems that adding a method to a PMC doesn't work if it's only marked :method
Austin Yeah.
That's a "feature."
jnthn It's wrong.
jnthn files ticket.
chromatic That's why I asked not to delete the tt389_fix branch.
jnthn Huh? 22:36
Util bakkdoor: several parts of en.wikibooks.org/wiki/Parrot_Virtua...k_Tutorial were updated this month to work with the current Parrot
jnthn branch in...Rakudo?
chromatic In Parrot.
jnthn Ah.
:-/
bakkdoor darbelo, Util: thanks!
chromatic I agree. It's wrong.
jnthn So is there already a ticket with this example?
If so, should I add to it?
chromatic I'm not aware of one. If there is, we can merge the dups. 22:37
jnthn I've golfed my way from the Rakudo build fail down to the gist I pasted, anyway.
OK, will file.
chromatic I had a feeling we'd find something like that. Thanks for confirming.
Coke I'd add it to tt #389.
(instead of opening a new ticket.)
bakkdoor btw, who is making the debian/ubuntu packages for parrot? 22:38
darbelo allison, IRC
Eh, IIRC.
Coke one wonders why declaring a :method in a namespace means "add a method" not "put this sub in this namespace.".
(the syntax on that is LTA)
bakkdoor ah ok. because the latest version is still 2.0 ;)
jnthn Coke: How do you declare a method that's not in a namespace? :) 22:39
Austin Actually, Coke, I thought that saying ".sub" meant "put this sub in the namespace," and that adding ":method" on top of it meant "and it's a method."
chromatic TT #389 says don't put methods in the namespace.
Except that you have to put methods in the namespace if the namespace represents a PMC. 22:40
Unless that PMC has a class associated with it, like if it's subclassed from PIR.
darbelo How cute. 22:41
Austin Well, when you put it that way it makes total sense...
chromatic For my next trick, let me tell you how method dispatch works.
There are two method dispatchers.
There are two method caches.
One method dispatcher doesn't look in the namespace for methods, because methods don't go in namespaces.
The other method dispatcher looks in the namespace for methods, because built-in PMCs don't have classes.
Usually.
purl usually is the key word
Coke jnthn: "add_method" ? 22:42
Austin jnthn: $namespace.get_class.add_method($name, &sub)
chromatic add_method is a bad fix, because we already have a perfectly valid way of marking something as a method.
It's :method
jnthn TT#1596 - feel free to merge it as you see fit though. 22:43
allison chromatic: what #389 says is that methods don't get stored in the part of the namespace accessible for sub lookups
chromatic Sure, but I don't want to type all of that by way of explanation.
allison chromatic: it's fine to cache them in a separate table in the namespace object waiting for the class to be created
jnthn Coke: I'm sure I *could* find workarounds, but I'd rather the bug was fixed. 22:44
allison once the class is created, the cache disappears
chromatic Except that that strategy didn't work, which is why the branch stalled.
jnthn allison: I thought we once had something like that, fwiw.
jnthn hasn't looked at that area of the code in a long, long time though. 22:45
allison there are a few places in p6object that depend on being able to look up certain methods as sub
but, it's a simple fix, just add :nsentry to those specific methods
jnthn allison: I've got some (local) patches to p6object too.
allison: If you're looking at add_parent anyway.
Though it turns out we're not running into anything in p6object. 22:46
At least, not *yet*.
The current build fail is purely the :method-doesn't-add-method-to-PMC issue.
allison jnthn: do you have more details on what the Rakudo failure was after tt389?
Coke Might be important to note that you don't need an overridden core pmc for that to fail. snippet also fails on a new class.
allison jnthn: doesn't add it to a C-level PMC? 22:47
jnthn allison: In the case I've run into, yes.
allison jnthn: did that ever work?
jnthn allison: I'm pretty sure it *is* the same issue.
Erm, as in, is the same issue that we ran into directly after tt389.
Coke (did that ever work) yes. 22:48
jnthn I get the same backtrace now as I saw reported when people first tried it.
chromatic It worked because methods were stored *both* in the namespace as subs and in the method hash of classes.
allison it must be adding the methods to the proxy object
jnthn allison: Yes, it did - evidenced by the fact that Rakudo is now broken. :-)
allison since it can't store them on the actual PMC
(there's no way to dynamically add methods to a static C PMC)
jnthn Oh? Ouch. 22:49
allison jnthn: can you produce a PIR test of the behavior?
jnthn kinda expected those would end up getting looked up through PMCProxy.
Coke whoops. I lied. it does work when done on a new class, with or without :nsentry.
jnthn allison: I just filed at ticket with one - trac.parrot.org/parrot/ticket/1596
allison jnthn: (it's clearly not tested now, or would have been caught already)
chromatic But it *was* tested. 22:50
jnthn allison: What's in the ticket doesn't depend on anything Rakudo related at all (golfed it down from the original issue - we actually have a dynpmc, but I don't believe that plays into it, since it fails the same way with a Parrot built-in PMC too.)
chromatic This was the failure on the P6Object test I had on tt389_fix.
allison jnthn: is it only HOW and siblings?
jnthn: because I ran into that during the merge 22:51
jnthn: and the problem was in p6object looking up methods in the namespace
chromatic PMCProxy also has nothing to do with this.
dalek rrot: r46082 | plobsing++ | branches/pbc_frozen_strings1 (2 files):
add ImageIOStrings pmc to traverse objects and get their strings
jnthn allison: The fact that the method is called HOW is unimportant to the bug report, if that's what you mean.
allison jnthn: I'll dig up the lines of code
jnthn: not how it's called, how it's created
chromatic Methods on built-in PMCs get stored in pmc->vtable->_namespace
Coke allison: did you look at his code?
jnthn allison: The method isn't "created".
It's just a PIR method marked :method 22:52
allison: The issue is also seperate from any P6object bug.
purl okay, jnthn.
jnthn purl: I still hate you and am overjoyed we don't have you on #perl6.
purl jnthn: i'm not following you...
allison yah, but proto was doing some fancy business of looking up methods in the namespace
Coke let's ignore P6O for a minute. 22:53
jnthn allison: My current blocker isn't a P6object issue though.
cotto_work plobsing: imageiostrings.pmc has some leftovers from imageiosize.pmc 22:54
allison Coke/jnthn: the similarity may be a red herring
jnthn allison: I agree there may be issues there.
allison: But until the current issue I hit that's independent of it is resolved, I can't actually get far enough into the Rakudo build to know.
Coke allison: the bug is in /pure pir/
purl Hmm. No matches for that, Coke.
jnthn Coke: Right. I thought that if I took the time to get down from the whole Rakudo to a 12 line PIR program, it would make things easier. :-) 22:55
Coke Me too. 22:56
chromatic It's definitely easier. I know what the bug is and why. Someone please listen to me.
allison chromatic: I'm listening, but I'm not sure you're right 22:57
chromatic I know I am.
I debugged this months ago.
I'm looking at the culprit code right now.
I spent a week tracing it down.
I predicted your version of the TT #389 fix wouldn't work.
jnthn allison: Unless Parrot has epicly changed in this area since I used to hack on Parrot, chromatic is almost certainly correct.
allison chromatic: the thing is, built-in PMCs don't store methods in the namespace either 22:58
plobsing cotto_work: where?
chromatic Please see src/pmc/default.pmc lines 557 through 560.
dalek TT #1596 created by jonathan++: PIR methods fail to be added to PMCs unless marked :nsentry
TT #1596: trac.parrot.org/parrot/ticket/1596
allison chromatic: and, even if you are right about the cause, the fix is to change it so that no method dispatcher looks in the namespace 22:59
chromatic I agree.
That was damn hard.
That's why the branch stalled.
Whiteknight and I couldn't figure out the right way to do it.
cotto_work plobsing: right at the top. Just look for 'imageiosize'.
jnthn 's hope of a quick resolution starts to ebb away 23:00
allison jnthn: it's not *that* difficult
chromatic Did you try?
allison chromatic: the code in default PMC is fine 23:01
chromatic Did you debug this?
allison chromatic: NameSpace's "set_pmc_keyed" does correctly divert methods to the separate cache instead of putting them in the main namespace storage 23:02
chromatic No, it doesn't. 23:04
jnthn allison: But unless get_pmc_keyed also goes looking there, line 1050 in oo.c isn't going to end up looking in said seperate cache. 23:05
And if it does it's a horrible entanglement of hate.
chromatic It's indeed a horrid entanglement of hate, and it doesn't work the way anyone thinks it should.
I know it works the way I described it, because I traced my way through the whole hateful thing to figure out what was happening. 23:06
23:06 tetragon joined
Whiteknight apparently has a lot of backlogging to do 23:06
Coke I'm adding jnthn's test.
allison looks like the problem is in src/oo.c, the static function find_method_direct_1 23:07
Whiteknight find_method_direct_1 is horribly broken, as I understand it
but I wasn't able to figure out why it appears to "work" mostly, or how to fix it so it doesn't stop working
allison yes, it's doing a VTABLE_get_pmc_keyed_str directly on the namespace
which won't work 23:08
Coke ponders how to fail() a test in parrot.
Whiteknight it appears also to be recursing on a different PMC type
allison besides which, we have a find_method interface for a reason 23:09
chromatic Here is where the "easy" fix gets fun. There are order of initialization concerns.
allison well, it's a static function, and only called in one place
chromatic Yes, from default's find_method VTABLE.
jnthn allison: We reach this function after going through find_method.
allison chromatic: but, it's calling VTABLE_get_namespace on the class object, so the class object must already exist by the time it's called 23:11
chromatic _class there means PMC
Don't mistake it for an instance of Class
Whiteknight yes, the names are all wrong
_class is the instance, not the metaclass
although when it recurses, _class does become the metaobject
allison if not, we can alter it to look in the cache in the namespace if the class object doesn't exist yet
and do a real lookup if the class object does exist 23:12
Coke test added.
chromatic Good luck. I tried something like that. It's not as easy as it looks. 23:13
Whiteknight the problem is order-of-initialization at Parrot startup 23:14
that's a tangled web where many things are interdependent
chromatic Though if you decide the code can be ugly and you don't have to create a PMCProxy for every PMC at startup, maybe you can avoid that mess. 23:15
Whiteknight at steady-state, the solution is easy. It's startup where the problems and special cases happen
chromatic Maybe you only create a PMCProxy when something tries to invoke a method on a builtin.
Oh right, that mess with vtable->pmc_class. 23:16
allison Whiteknight: we already know it has a namespace object there, since the current code is using it 23:17
Whiteknight: we don't know if the namespace object has a class, but that can be worked around 23:18
Whiteknight allison: but methods on built-in types aren't stored in the namespace at that point
allison no, they're stored in a cached in the namespace 23:19
and the cache is later sucked into the class
anyway, working on a fix, will try it
it will likely involve adding 'inspect' to NameSpace, any objections? 23:20
(it really should have it anyway)
Whiteknight no objections from me 23:24
what if we had a MethodCache PMC type?
jnthn wears a slightly puzzled look 23:25
dalek rrot: r46083 | coke++ | trunk/t/oo/methods.t:
Add a test for TT #1596
darbelo Whiteknight: How would that help here?
Whiteknight we could have a pointer to the MethodCache wherever it lives: in the namespace originally, then in the PMCProxy later
chromatic You're forgetting something. 23:26
darbelo Whiteknight: What if I add a method to the MethodCache?
s/the// 23:27
Austin Isn't a MethodCache the same as a NameSpace? A container that maps strings to subs?
darbelo Austin: Yes, but more bootstrappy. And not all methods live on the NameSpace, that's what the TT is about. 23:29
Austin To the extent that they live anywhere, they live in the namespace before the class gets created, right? So you clone the hash, filter out the non-methods, and you've got your class' "cache." Then what other use for a MethodCache is there? 23:31
darbelo allison: ping. 23:34
23:40 ruoso joined
allison darbelo: pong 23:41
dalek rrot: r46084 | plobsing++ | trunk (2 files):
correct some misuses of PARROT_CAN_RETURN_NULL which were applied blindly
23:42
allison Whiteknight: the method cache is just a hash in the namespace
darbelo Melange claims you'll be mentoring me on the NFG GSoC proposal, I'll be setting up a blog (for status reports) and a branch fro experimentation on the next week. Can you think of anything else I should do to get started. 23:44
allison Austin: there are no non-methods stored in it
Austin: it's not the main namespace storage, it's a separate bucket
darbelo Also, I'm not sure what's your timezone, but I don't see you much on IRC, what's your preferred way of communication for this? 23:45
Oh, also, do we have backup mentors this year? 23:46
allison darbelo: I'm on IRC when I'm in one place, but not when I'm traveling (which has been a good bit the past few months, but will be less over the summer) 23:48
darbelo: email works too, and I'll give you a number for SMS (I can even call you over skype if it's useful) 23:50
darbelo: I suspect it may make sense for us to check in during or after parrotsketch every week 23:51
23:52 Austin_Hastings joined
allison darbelo: it would make sense to spend some time talking through the architecture before you dive in 23:52
darbelo allison: Excellent. Works for me. I'll set things up and get experimenting. 23:54
plobsing how do I get distutils to build a general parrot dynext (not dynops or dynpmcs) 23:55
?
jnthn -> sleep o/
23:55 jnthn left
darbelo allison: I'll start with some expanatory blog posts, I tried that last year and it seemed to work. 23:56
Coke (backup mentors) we have several mentors "on deck". I'm happy to be put down as a backup.
allison darbelo: yup, those were great 23:57
darbelo Once I have what I think I know on paper we can start going over how wrong everything I know is ;)