Parrot 1.1.0 Released | parrot.org/ | 308 RTs left | Weekly Priority: Apply Patches, Fix Bugs, Close Tickets
Set by moderator on 18 May 2009.
00:19 wayland76 joined 00:20 bacek_ joined 00:27 tetragon joined
kid51 Awfully quiet here for a night before monthly release 00:56
00:56 eternaleye joined
Infinoid Things are looking pretty good here on linux/amd64. 01:07
kid51 Did you see the make fulltest results I've been posting on list? 01:08
kid51 agrees with Coke that benchmarks.t takes forevvvvvvver (at least on my old iBook G4). 01:09
Infinoid I just saw a second ome come through
s/ome/one/
kid51 then u've got it
got 'em
dalek rrot: r38918 | Infinoid++ | trunk/PLATFORMS:
[PLATFORMS] More updates from he++.
01:10
rrot: r38919 | Infinoid++ | trunk/DEPRECATED.pod:
[DEPRECATED] Update for TT #665.
Infinoid My only failure with normal test is t/library/pcre.t, and that's because dlopen() fails on my libpcre because it's just a linker script, not an actual binary (there's a TT for that) 01:13
I'll try fulltest now
cotto kid51, maybe that's because we've reached chromatic's goal of having releases be boring. 01:15
(and predictable)
Infinoid Let's hope. 01:16
Whiteknight I'm getting a testf failure on t/compilers/imcc/syn/regressions.t 01:21
is anybody else seeing that?
Infinoid kid51 reported it on linux and darwin 01:22
I'm still waiting for mine to finish
cotto no, but I did see a Perl warning: Use of uninitialized value $ENV{"TEST_PROG_ARGS"} in pattern match (m//) at t/compilers/imcc/syn/regressions.t line 181.
Whiteknight okay. Is there a ticket opened for it?
Infinoid I don't know, I don't think so 01:23
Whiteknight okay, well I'm disappearing soon for the night, so it's failing on Ubuntu 9.04 x86-64
Infinoid I can see it here too on gentoo x86-64
(but I don't know how testf runs parrot, so I need to go through a whole testf to see it) 01:24
Whiteknight yeah
Infinoid ah, perl t/harness -f t/compilers/imcc/syn/regressions.t
Whiteknight what is -f anyway? 01:25
purl somebody said -f was for file, remove it or for parrot fast core or for forking
Whiteknight ah, fast core
cotto with -f it fails for me too (Hardy i386) 01:26
Infinoid # Failed test 'die in immediate, TT \\#629' 01:29
# at t/compilers/imcc/syn/regressions.t line 184.
# 'no
# current instr.: 'foo' pc -1 ((unknown file):-1)
# '
# doesn't match '/no\\ncurrent inst.*:2\\)$/
So it seems fine except for the file/line number. 01:30
I seem to remember something about certain runcores not keeping track of file/lines, which would explain all the failures here... can anyone confirm that? 01:31
dalek rrot: r38920 | Infinoid++ | trunk/t/compilers/imcc/syn/regressions.t:
[t] Not all runcores keep track of filename/line number information. Adjust the test not to depend on this info in the error output.
01:39
kid51 Infinoid: On Linux, r38920 fixes all the failures in t/compilers/imcc/syn/regressions.t *except* -r 01:55
Infinoid wish I knew what -r did 01:57
kid51 -run-pbc 02:00
compile to Parrot bytecode and then run the bytecode 02:01
# normal core, write and run Parrot Byte Code
testr : test_prep
purl test_prep is actually what makes miniperl?
kid51 $(PERL) t/harness $(EXTRA_TEST_ARGS) -r $(RUNCORE_TEST_FILES)
Infinoid ok. "./parrot -r t/compilers/imcc/syn/regressions_14.pir" seems to run fine, I don't know why that test would fail 02:02
kid51 purl, forget test_prep
purl kid51: I forgot test_prep
Infinoid based on the output you posted to the list, I think it might be something wrong with the test itself (or its infrastructure), rather than the code being tested
kid51 purl, test_prep is the 'make' target on which 'make test' immediately depends and is currently equivalent to 'make' 02:03
purl OK, kid51.
kid51 quite possibly
t/benchmark/benchmarks.t has been running for > 90 minutes on my iBook! 02:05
... much more than the rest of 'make fulltest_all' combined
Infinoid wow.
cotto Let's drop it from fulltest and bring it back when it runs in a more reasonable time. 02:09
kid51 I'm looking at it but can't figure out how the number of iterations is controlled. 02:12
If we were to cut iterations by factor of 10, perhaps we'd get something more reasonable.
02:14 particle joined
kid51 Hmm, I wonder if nothing at all is happening there. I notice I'm not even getting output like: ....4/36 02:16
Infinoid kid51: Yeah. I don't see the point of any benchmarks which take more than 5 to 15 seconds on normal hardware, to be honest
kid51 Woah! it just finished!
Infinoid Mine is currently stuck on 28/36
heh
kid51 5816 / 60
purl 96.9333333333333
kid51 97 minutes for one file
Am also timing it on Linux 02:17
cotto I'd prefer to cut them down by 100x, but 10x would be reasonable. 02:21
Infinoid I think examples/benchmarks/primes.pasm is the really big one 02:22
kid51 Of course, didn't Andreas file a ticket about 'recently induced slowness'? 02:23
That was: rt.perl.org/rt3/Public/Bug/Display.html?id=60692 02:26
02:26 dduncan joined 02:27 dduncan left
Infinoid ah, mmd 02:28
kid51 1024 / 60 02:36
purl 17.0666666666667
kid51 17 minutes for benchmark.t on Linux
02:41 janus joined 03:20 donaldh joined 04:01 Andy joined
dalek rrot: r38921 | petdance++ | trunk (2 files):
dropped unused interp and return values
04:07
04:09 Eevee joined
Tene purl: karma tene 04:54
purl tene has karma of 434
dalek rrot: r38922 | petdance++ | trunk (2 files):
consting internal vars
05:29
05:37 flh joined
he Infinioid: another pass: NetBSD/sparc (32-bit) 5.0 with parrot-current 05:40
05:49 cognominal joined
cotto this should make some people happy 06:07
06:07 uniejo joined
dalek rrot: r38923 | cotto++ | trunk (22 files):
[t] adjust numbers in tested benchmarks so they take <=10s and omit the mops tests
06:08
06:15 masak joined 06:22 iblechbot joined 07:05 bsdz joined
he_ Infinoid: another pass: NetBSD/sparc64 (64-bit) 4.0 with parrot-current, tests said "All tests successful (1 subtest UNEXPECTEDLY SUCCEEDED), 16 tests and 630 subtests skipped." 07:12
07:21 donaldh joined
dalek rrot: r38924 | cotto++ | trunk/tools/dev/pbc_to_exe.pir:
[pbc_to_exe] undo accidentally committed change from previous commit
07:26
kudo: d0fbfbe | moritz++ | src/setting/Any-list.pm:
accept more general matchers in grep
07:38
nopaste "he" at 158.38.62.77 pasted "Also look in /usr/pkg/include/GL for opengl headers, for the benefit of pkgsrc-using systems such as NetBSD" (14 lines) at nopaste.snit.ch/16596 07:51
japhb he: That's fine with me, delta fixing the leading tab. 07:52
he_ ah, ok; easy mistake to make. 07:53
nopaste "he" at 158.38.62.77 pasted "Make netbsd join the rest in testing pmc/threads" (12 lines) at nopaste.snit.ch/16597 07:57
he_ Hm, interesting... NetBSD/sparc64 5.0 fails t/pmc/io.t with a bus error 08:24
...aaand... unsurprisingly, perhaps, this is a bus error due to a non-aligned load. 08:29
0x1376ec <Parrot_PCCINVOKE+2444>: ldx [ %g1 + 0x4f8 ], %g1
g1 0xdeadbeef 3735928559
# Failed test 'fdopen - no close' 08:30
cotto ironically, I'm munching on beef jerky 08:31
although not choking on it ;)
moritz ;-)
he_ Innermost frame is 2870 VTABLE_invoke(interp, pccinvoke_meth, NULL); 08:34
Well... it's of course also trying to load via an invalidated pointer. 08:36
hm, pccinvoke_meth->vtable == 0xdeadbeef, pccinvoke_meth->pmc_ext == 0xdeadbeef 08:38
I guess that means "that's not going to work". 08:40
08:45 mikehh_ joined
cotto Yup. That means it's already been GC'd. 08:45
08:50 cognominal joined
dalek kudo: 222993f | moritz++ | docs/ChangeLog:
[docs] update ChangeLog
09:03
mikehh make -k fulltest at r38924 fails t/compilers/imcc/syn/regressions.t (test 14) in testr and t/examples/namespace.t in examples_tests 09:35
TODO passes t/compilers/imcc/syn/regressions.t TODO passed: 14 and t/op/io.t TODO passed: 4 in testf 09:37
Kubuntu Jaunty (9,04) Amd64 09:38
he_ cotto: hm. Makes me wonder why recent tests on NetBSD/sparc64 4.0 succeeded, then. 09:43
Perhaps I updated at an inopportune moment, so have a slightly newer parrot on the 5.0 system?
(how do I find out which revision I'm synced with?)
<-- svn newbie
cotto are you working from an installed parrot?
he_ nope 09:44
cotto svn info
he_ ok, the failing test is with rev. 38923 09:45
the one which succeeded on 4.0 is rev. 38917 09:46
I'm doing "svn update -r38917" on the 5.0 system, and will rebuild and re-test. 09:47
mikehh any idea what's happening with smolder? it been down for a week 10:15
plus lots of downtime before that
10:16 bacek joined
cotto it was up earlier today 10:18
10:39 bacek joined
mikehh cotto: I have not been able to submit through make smoke for quite a while - it times out on me 10:43
and I can't connect to the site either
nopaste "bacek" at 114.73.146.105 pasted "We have to fix mmd..." (7 lines) at nopaste.snit.ch/16601 10:52
bacek This is after few twiks in Integer.pmc to not use MMD... 10:53
he_ hm, rev 38917 is failing as well on the 5.0 system. 11:15
11:16 burmas joined 11:20 kid51 joined 11:21 donaldh joined, wayland76 joined
bacek when The Release? 11:26
And what current policy for non-critical commits?
moritz it's often after #ps 11:28
and small things (like doc fixes) usually can go in until shortly before
bacek I've got couple of commits related to TT#452 11:30
moritz I can't comment on that 11:34
Infinoid good morning 11:42
purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
11:43 pancake joined
pancake does parrot has a uninstall make target? 11:43
moritz no
pancake it is planned? like the manpage? 11:44
moritz I don't see much merit in it 11:45
if you develop with parrot, you don't install it
if you use parrot, you'll use a package from your vendor
and the package management system can handle uninstalling 11:46
pancake i always find uninstall pretty useful 11:47
f.e, you test parrot svn and install it in /usr/local, and then install it in /usr
for work, and you want to remove the one in /usr/local
i can write a stupid perl script that makes the list of installed files and then removes them 11:48
but it will be better if this is in the default parrot
moritz well, you can always try to submit it as a patch
pancake is the build system of parrot documented?
moritz I don't know 11:49
maybe there's something in docs/
pancake looks like everything is magically generated with Parrot modules
nopaste "he" at 158.38.152.207 pasted "gdb of the core dump from t/pmc/io.t on NetBSD/sparc64 5.0" (92 lines) at nopaste.snit.ch/16603 11:51
pancake btw, what about cpu_ret() opcode? is really necessary? 11:55
src/ops/core.ops:109
Infinoid I would assume it's only there as a JIT template 12:03
pancake but only for x86? looks weird 12:04
Infinoid You could always delete it and see what breaks. :) 12:05
pancake notes in todo ;) 12:06
dalek rrot: r38925 | coke++ | trunk/t/compilers/imcc/syn/regressions.t:
[t] this test fails most cores in 'fulltest'
12:11
Infinoid erm... I thought I already fixed that test 12:17
bacek Double fix in action!
Infinoid msg Coke r38925 TODOes a test which I thought I had fixed in r38920... did it re-break itself somehow? 12:20
purl Message for coke stored.
dalek rrot: r38926 | coke++ | trunk/t/compilers/imcc/syn/regressions.t:
[t] revert r38925.
12:21
Infinoid msg Coke Nevermind. :) 12:22
purl Message for coke stored.
bacek Cheap karma :) 12:23
Infinoid karma coke
purl coke has karma of 2812
12:24 bkuhn joined 12:25 ruoso joined 12:26 Andy joined 12:33 iblechbot joined 12:40 Whiteknight joined, rg1 joined
nopaste "he" at 158.38.152.74 pasted "Updates to various NetBSD platforms in the PLATFORMS file" (26 lines) at nopaste.snit.ch/16605 12:47
12:50 wayland76 joined
dalek rrot: r38927 | Infinoid++ | trunk/PLATFORMS:
[PLATFORMS] More updates from pkgsrc maintainer, he++.
13:00
13:05 mikehh joined 13:14 mikehh joined 13:16 bacek joined 13:17 gryphon joined 13:33 shadowspar left 13:37 hiroyuk__ joined, whoppix joined 13:43 rakudohudson joined
nopaste "bacek" at 114.73.49.67 pasted "Two benchmarks..." (14 lines) at nopaste.snit.ch/16606 13:47
bacek 407/66 13:49
purl 6.16666666666667
bacek 6 times faster. 13:50
bacek going to commit all changes in branch
dalek rrot: r38928 | bacek++ | branches/tt452_reduce_mmd:
Branch for reducing MMD usage as described in TT#452
13:53
Infinoid wow, nice timings! 13:54
masak bacek++ 13:55
bacek I broke couple of tests BTW 13:57
*incoming*
ouch... I did something wrong with git-svn 13:59
dalek rrot: r38929 | bacek++ | branches/tt452_reduce_mmd/src/pmc (3 files):
Merge branch 'tt452_mutlis_local' into t452_reduce_mmd_local
14:00
bacek Ah. git svn squashed all my commits in one... 14:01
rg that's what svn does for a merge 14:02
bacek I didn't expect it. It was 5 or 6 commits in my local branch... 14:03
Is t/src/extent.t failing only on my box? 14:05
t/src/extend.t
rg trunk or branch? 14:06
14:08 Theory joined
rg *sigh* smolder seems to be more down than up lately 14:08
14:09 bacek_ joined
bacek_ rg: trunk and branch. 14:11
But probably I have to make realclean to test
Infinoid t/src/extend.t .. ok
rg fine on trunk@r38925 14:12
Infinoid passes here on trunk@r38927
14:14 jsut joined
nopaste "bacek" at 114.73.50.241 pasted "t/src/extend.t failure" (6 lines) at nopaste.snit.ch/16607 14:14
bacek_ It's... weird...
bacek Let's try with clean checkout 14:17
Infinoid What platform is that? Could it be confused by an installed libparrot? 14:18
Those were macros until very recently, r38654 introduced them as exported symbols 14:19
bacek Debian Lenny/i386
I removed installed libparrot, rm -rf *; git checkout .; perl Configure.pl; make
Just waiting to build... 14:20
Infinoid oki
bacek passed 14:21
Infinoid Ok, so it prefers installed libparrot over locally built libparrot
bacek Looks like something was broken. Either installed parrot or local checkout 14:22
Infinoid it would be the installed parrot
Up until 10 days ago, those missing symbols were really macros, so your installed libparrot must have been older than that
bacek It was about couple of months old :) 14:23
Infinoid Hmm. I'm still not happy with the current state of TT #665 14:24
Relying on this behavior is crackbaby. If I can't introduce a die() without a deprecation cycle, maybe I can just introduce a warn() for now
bacek Why you can't do it? 14:25
Infinoid Because it's possible (though insane) that some HLL is relying on the old behavior 14:26
NotFound warn++
bacek Some of them relied on exported VTABLE's functions.
NotFound Big ugly warn 14:27
bacek Big ugly warn adn die horribly
NotFound bacek: but we already said long time ago that direct usage of vtable functions wasn't supported, I think. 14:28
bacek Misused capitalise in pmc's name and filename never works either. 14:29
NotFound I'm thinking that may be a good idea to add an option --deprecate-now and conditionally comment out deprecated things depending on it. As a way to check that deprecated features are really unused. 14:30
bacek And darbelo++ was first who hit this problem. So, let's nail it down now.
14:31 mikehh_ joined
bacek NotFound: good idea. At least we can add some DEPRECATED macro for C code. 14:32
Infinoid for PIR, we have a "warningson .PARROT_WARNINGS_DEPRECATED_FLAG if you .include warnings.pasm
uh, insert another '"' in there somewhere
bacek Something like '#defined DEPRECATED #warning "This is deprecated"'
nopaste "infinoid" at 75.28.74.203 pasted "[PATCH] (TT #665) All right. Everyone happy with this?" (45 lines) at nopaste.snit.ch/16608 14:33
NotFound We can start using a macro with an #ifndef, even without implementing the option, it works as a big visual cue.
bacek Infinoid: +1 14:34
purl 1
NotFound Infinoid: but that is only for deprecated opcodes, isn't it?
Infinoid For now. It seems like a good point for extending that
bacek NotFound: it's for deprecated "feature"
14:35 Whiteknight_ joined
NotFound Then a C function that emit a message or not depending on the value of that flag may be a simple solution. 14:36
he_ Infinoid, I guess you didn't see my nopaste.snit.ch/16597 :)
Infinoid he_: You're right. Thanks, I'll apply that 14:37
he_ Thanks!
Whiteknight_ Who's release manager today? 14:38
Infinoid tewk
dalek rrot: r38930 | bacek++ | branches/tt452_reduce_mmd:
Remove branch due big wrong commit
14:40
rrot: r38931 | bacek++ | branches/tt452_reduce_mmd:
Branch for reducing MMD usage as described in TT#452
NotFound We have Parrot_warn, but is too boring to have to write: Parrot_warn(interp, PARROT_WARNINGS_DEPRECATED_FLAG, "some message");
Infinoid What would you prefer? A wprintf() wrapper macro? :) 14:41
NotFound A function Parrot_wan_deprecated
Parrot_warn_deprecated
Whiteknight Parrot_ur_doin_it_wrong()
Infinoid #define DEPRECATED(a...) Parrot_warn(interp, PARROT_WARNINGS_DEPRECATED_FLAG, a) /* sadly that only works on gcc */
14:41 riffraff joined
Infinoid Actually, a portable version without the varargs would be just as useful 14:42
NotFound No need to ... If someone wants a long complicated message, let write it himself.
Whiteknight Parrot_im_in_ur_core_deprecatin_ur_features()
bacek #define DEPRECATED Parrot_warn(interp, PARROT_WARNING, "Function %s deprecated", __PRETTY_FUNCTION__) 14:43
dalek rrot: r38932 | Infinoid++ | trunk (2 files):
[pmc2c] If your filename doesn't match your pmclass name, pmc2c should emit a big nasty warning.
Infinoid bacek: Something like that would work too. +1
rrot: r38933 | Infinoid++ | trunk/t/pmc/threads.t:
[t] Threads should work on NetBSD, so enable the test. he++
rrot: r38934 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
[pmc] Don't use MMD in Integer.modulus
rrot: r38935 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
[pmc] Don't use MMD in Integer.cmp
rrot: r38936 | bacek++ | branches/tt452_reduce_mmd/src/pmc/scalar.pmc:
[pmc] Optimize scalar.concatenate to reduce GC pressure
rrot: r38937 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
[pmc] Don't use MMD dispatch in Integer.is_equal
rrot: r38938 | bacek++ | branches/tt452_reduce_mmd/src/pmc/bigint.pmc:
[pmc] Use less MULTIs in BigInt.pmc
bacek hides
Infinoid poor bot
bacek which one?
Infinoid We work dalek++ pretty hard.
bacek karma dalek 14:45
purl dalek has karma of 7
bacek hard karma :)
dalek++ # good bot :)
purl thanks bacek :)
Infinoid karma purl
purl purl has karma of 8570
Infinoid Cheater.
bacek Not you, stupid girl!
<< purl-- >> 14:46
karma purl
purl purl has karma of 8569
NotFound Forgot to say: my amd64 machines at dayjob pass packfile test after last fixes :)
bacek Get it!
NotFound: That's good :)
Infinoid NotFound: Great, thanks for verifying
seems like we were seeing the same issue after all
GC bugs are fun.
bacek bad fun... 14:47
Infinoid GC++ # Far better than having no GC... 14:48
Whiteknight purl purl?
purl My mother's name is Eliza or some horror port of perl 4 to perl 5 or part of a bot net or hated
bacek CAN I HAZ CONSERVATIVE GC?
Infinoid I don't think there's any such thing. 14:49
Whiteknight bacek: Working on it!
Infinoid Now we just need GCable contexts and PackFile structs and jit pools
Whiteknight Infinoid: Sure there is, Boehm is a good example
Infinoid Seems like GCs work better when they can track *everything*
ok, I'm not familiar with boehm
jonathan votes for liberal GC 14:50
Infinoid votes for libertarian GC
Whiteknight Infinoid: We're working on that too, the more it can track the less often we have to call malloc
and less malloc == more good
bacek Whiteknight: no-no-no! Generation-based first!
Whiteknight bacek: generational GCs typically are conservative
bacek Whiteknight: they are typically "collective" 14:51
Infinoid Whiteknight: Is it something I can help with?
NotFound There are no liberal GC?
Whiteknight NotFound: They're typically broken down into "Conservative" and "Precise" 14:52
Infinoid NotFound: We were joking about politics :)
Whiteknight where "Precise" collectors take more time but guarantee to sweep all garbage, while conservative takes less time but misses some things
NotFound Infinoid: ah, yes, I failed to read some lines 14:53
Infinoid Revolutionary GC: free() first, ask questions later
bacek Extemistic GC: free() first. And second too!
Whiteknight anarchist GC: We don't need your memory, we will make our own!!! 14:54
NotFound That sounds like the infinite memory model.
bacek zen GC: garbage? What garbage?
NotFound In Soviet Russia garbage collects you 14:55
Infinoid Jedi GC: You don't need to call VTABLE_type(), these are not the objects you're looking for.
bacek Alien GC: all your memory are belong to us 14:56
Looks like Whiteknite was collected... Prematurely... 14:57
Infinoid In Nihilistic GC, the mark() function is O(1), and always returns false
14:57 Whiteknight joined
bacek Ressurecting GC: You can always have Whiteknight back :) 14:58
Whiteknight who can have me back?
Infinoid [07:57] < bacek> Looks like Whiteknite was collected... Prematurely...
Infinoid marks Whiteknight
Whiteknight yeah, I crashed firefox 14:59
NotFound Monte Carlo GC: random choose some object to destroy
That may be useful to find GC errors
bacek GC of mass destruction: "Don't ask" 15:00
Whiteknight no, that would be useful to create GC errors
bacek It's easy to find something that you just created :)
NotFound Yes, that way is a lot easy to find one
Infinoid Shotgun GC frees the PMC and 1d10 nearby PMCs at random 15:01
bacek Bed GC: sometimes you turn to garbage to be collected by bed 15:02
Sleep time. See you tomorrow
Whiteknight goodnight
bacek goodnight
Infinoid goodnight bacek 15:03
bacek If someone will have time to jump on tt452_reduce_mmd branch and fix failure in t/op/bitwise.t I'll be very glad.
I can't fix it... :/ 15:04
bacek must sleep
purl $bacek->sleep(8 * 3600);
Infinoid urk. warn() doesn't work after all, because Pmc2cMain.pm contains this line: 15:11
$SIG{'__WARN__'} = sub { use Carp; warn $_[0]; Carp::confess; };
Whiteknight lousy 15:16
dalek rrot: r38939 | coke++ | trunk/t/compilers/imcc/syn/regressions.t:
[t] recent fixes to the test let this pass under CGP, but it still fails with --run-pbc
Infinoid It does look useful for debugging, but I'm going to comment it out for now
15:21 donaldh joined
dalek rrot: r38940 | Infinoid++ | trunk/lib/Parrot/Pmc2c/Pmc2cMain.pm:
[pmc2c] There's a signal handler in pmc2c which upgrades warnings to errors (with a Carp backtrace).

in r38932, it causes test failures. Add a comment and disable it for now.
15:23
Infinoid is looking at bacek's bitwise.t issue 15:28
Looks like bigints are failing to be big. 15:29
dalek rrot: r38941 | coke++ | trunk/DEPRECATED.pod:
[docs] This is /already/ deprecated.
16:02 fperrad joined 16:11 moritz joined 16:16 iblechbot joined 16:21 flh joined 16:25 donaldh left 16:35 HG` joined 16:37 cotto joined
Whiteknight is there a list somewhere for who is going to be release manager each month? 16:38
I know that I have a month coming up, but I don't know which one 16:39
cotto docs/project/release_manager_guide.pod, at the end
Whiteknight ah, there it is. Thanks cotto++ 16:40
16:40 riffraff joined
Tene purl: parrotsketch? 16:41
purl it has been said that parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
pmichaud parrotsketch in 110
Tene Tue May 19 16:41:38 UTC 2009
Whiteknight purl needs to be able to give us a countdown
purl Whiteknight: sorry...
Whiteknight it's okay purl, it's not your fault
Tene purl: countdown?
purl rumour has it countdown is at 4:45
Whiteknight ..and not quite 16:42
dalek tracwiki: v19 | whiteknight++ | GCTasklist 16:56
tracwiki: trac.parrot.org/parrot/wiki/GCTask...ction=diff
moritz ps? 16:58
purl ps is postscript or process status or see "parrotsketch" or non-vector?! or annoying.
moritz parrotsketch?
purl i think parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
Whiteknight time?
purl time is 16:55:37 2009 and (did you mean "clock"?) or flowing like a river
dalek kudo: ac60b66 | pmichaud++ | docs/spectest-progress.csv:
"2009-05-19 00:00",9d2934e,11297,0,389,2199,13885,16603,391
17:00
Tene I'm starting to feel like it's time for me to back off on the HLL stuff and work on Parrot and languages more. 17:02
HLL Stuff isn't quite there yet, though.
pmichaud We often have to progress on several fronts simultaneously. 17:03
Tene Yeah.
pmichaud Right now I'm doing a benchmark of Rakudo's HLL vs. non-HLL performance.
to try to quantify it a bit better. 17:04
Tene Kinda creepy, isn't it?
:)
I think my next target will be getting my scheme impl. up to speed 17:05
r6RS and all that
A few people asked to see HLL interop between languaes less similar than ruby and perl
pmichaud that would be good. 17:06
Tene I need to hit pynie sometime soon too.
Whiteknight HAH! I just found the ParrotQuotes page on the wiki
pmichaud I wonder if I could get APL into a package-able state.
Whiteknight is going to waste his whole afternoon now 17:07
Tene That's a great idea.
NotFound Tene: if people want a language a lot less similar that those, tell them to try pirric X-)
moritz Whiteknight: it doesn't have enough entries to waste an entire afternoon ;-)
Whiteknight: bug enough to keep laughing for a few minutes
17:07 tulcod joined
pmichaud moritz: unless by "wasting the afternoon" Whiteknight is going to comb the #parrot logs looking for other things to be added :-) 17:07
Tene great plan
Whiteknight yeah, but it's going to completely kill my train of thought
tulcod how do i get parrot to compile and install nqp?
Infinoid Whiteknight++ # finding the quotes 17:08
NotFound Wow, the negative NaN affair is in ParrotQuotes
moritz tulcod: a simple 'make' will at least compile it
tulcod moritz: where should it land up?
moritz tulcod: compilers/nqp/ probably 17:09
Tene tulcod: in your install prefix, lib/1.1.0-devel/languages/nqp/nqp.pbc
tulcod hm, and it should just be named nqp?
oh, nqp.pbc
Tene after an install
in the build tree, compilers/nqp/nqp.pbc
tulcod it's there
not executable
but it's there
NotFound There is no target to build a nqp fakecutable? 17:10
pmichaud there isn't an nqp "executable"
tulcod oh
the parrot manual suggests otherwise
pmichaud nqp tends to always be run from a parrot command line
tulcod docs.parrot.org/parrot/latest/html/....pod.html, "Running a Language on Parrot"
Tene tulcod: where does the manual suggest that? that's a documentation bug.
huh 17:11
you're right.
That's a lie in our docs. :)
try:
Whiteknight the docs don't lie!
Tene ./parrot compilers/nqp/nqp.pbc
tulcod Tene: yeah, i just did that
Whiteknight They just describe a different reality from where we are
pmichaud I wouldn't have an issue with making an nqp executable, however.
tulcod still doesn't work
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!
Whiteknight (nqp executable)++
tulcod > say "hi" 17:12
Statement not terminated properly at line 1, near "\\"hi\\"\\n"
moritz I see no point in it
tulcod: try say("hi");
tulcod works
moritz tulcod: it's a *very* limited subset of Perl 6, including parsing
Tene More lies!
NotFound tulcod: nqp is not as tolerant with syntax as perl.
tulcod purl: and you be quiet, mister, i was about to expand on that
purl tulcod: excuse me?
tulcod NotFound: yeah, i guess that's the case :P 17:13
purl: you wanna fight about it? you dare and come outside, i'll pucnh you in the face
purl tulcod: huh?
NotFound You can't omit the () on function calls.
tulcod hm
sounds like that should be in the manual :P
moritz patches welcome.
purl i think patches welcome is ponies welcome or Set Objectives, Achieve Results! or swahili for "Put up or shut up."
NotFound I guess the completeness of the manual is one of the nqp limitations X-) 17:14
Whiteknight I feel like purl has been getting steadily more rude in his responses
tulcod are his responses automated as well?
Whiteknight yeah, he's a bot
tulcod yeah, i got that
NotFound purl: good bot 17:15
purl thanks NotFound :)
Whiteknight yeah, he responds based on input patterns
tulcod but i mean, does he collect the reactions on his own?
Tene purl: dance!
purl No, you dance, Tene. *ka-clik*
tulcod okay :)
Whiteknight tulcod: sortof
Tene tulcod: yes.
tulcod markov chains?
purl coral's taken the crack again
Whiteknight tulcod is asking questions
tulcod?
purl tulcod is asking questions
NotFound purl: take a cake
purl NotFound: sorry...
pmichaud purl: status?
purl Since Sat May 9 07:45:02 2009, there have been 2245 modifications and 1199 questions. I have been awake for 10 days, 9 hours, 27 minutes, 47 seconds this session, and currently reference 772701 factoids. Addressing is in optional mode.
moritz what's the reason for avoiding a runtime for NQP? 17:16
Whiteknight (I would hate to see that list of 772701 "factoids" purl thinks it has)
NotFound He can't sing 'Daisy, Daisy' ?
17:16 Theory joined
moritz making it lean? 17:16
or fear of name colissions?
pmichaud moritz: nqp's primary purpose is to make it easy to write parrot subs
those subs tend to run in languages _other_ than nqp 17:17
so it's good if nqp's runtime doesn't tend to interfere with that hll's. 17:18
or, put another way, nqp wants *all* of its runtime to be dynamic :-)
moritz i know
pmichaud nqp is like a Perl 6 where all builtins have to be dynamically loaded.
tulcod hm
nqp.pbc doesn't get installed
i mean, by the gentoo ebuild i stole from the gentoo bugtracker 17:19
pmichaud tulcod: I think nqp is only installed with "install-dev"
tulcod aha :) 17:20
i think that should be default, then
pmichaud moritz: I would not be at all opposed to having people create runtime libraries for NQP that could be easily loaded, though.
use NQP::Core;
moritz pmichaud: ok, good to know. 17:21
(Though I don't plan any NQP hacking)
tulcod arrg
nqp.pbc isn't in like, the search path
Tene tulcod: eh?
Which search path?
tulcod yeah, i expected that :P
Whiteknight I'm looking forward to doing all my compiler writing in IQP (is quite perl) 17:22
moritz wonders if you can still create PAST nodes in .HLL-enabled Rakudo
pmichaud moritz: yes -- actions.pm does it. 17:23
17:23 szabgab joined
moritz pmichaud: i mean, from within normal Perl 6 code 17:23
pmichaud moritz: yes, from there too.
since actions.pm is running from the .HLL-enabled Rakudo
Tene see #perl6 for example
tulcod lol @ nqp's coding style implications: say("hi"); works, but say ("hi"); does not :P
moritz ok
tulcod: that's Perl 6.
Tene tulcod: A space between the function name and its ()s is not allowed in Perl 6. 17:24
tulcod are you seirous?!
Tene Yes.
tulcod wow... perl 6 *must* be the *greatest* lanugage ever!
pmichaud more precisely, the space turns the 'say' into a listop.
it's not that spaces aren't allowed, it's that the parens are no longer function-call parens.
say(1,2) # two argument say
say (1,2) # one argument say
tulcod finally no more god**** discussions about whether you should or should not put a space in between 17:25
why haven't i started using perl earlier?
Tene And NQP doesn't support function calls without ()s.
pmichaud I'm thinking of adding listop form to NQP, though.
We already allow paren-less method calls now (although I think only for the 0-argument case)
Tene pmichaud: if you're extending NQP, my first request would be allowing <>-quoted form on colonpairs.
PAST::Op.new(:name<foo>) 17:26
pmichaud as long as you're okay with :name<foo bar> being the same as :name('foo bar')
Tene I am!
It's hardly a priority, though.
pmichaud well, the primary reason for supporting listops would be to avoid the stream-of-questions that we've just seen :-) 17:28
(which happen quite frequently)
Tene Heh.
moritz maybe a good mention of them in README could also reduce them ;-)
pmichaud My experience is that things in README never are. 17:29
afk, lunch 17:30
17:42 HG` joined 17:44 Theory joined
Whiteknight darbelo: ping 18:00
18:05 davidfetter joined 18:13 Andy joined 18:16 allison joined
davidfetter HAI 18:19
anybody going to malaysia osconf?
18:19 darbelo joined
Util With Parrot r38941, on darwin, plus one patch that does not affect config, running `./parrot parrot_config.pbc --dump` prints the first 12 lines, then "Bus error". 18:25
Disabling GC allows all lines to print. `./parrot -G parrot_config.pbc --dump`.
My build passes all tests in `make test`.
BTW, I do not see anywhere that we exercise parrot_config in t/*.
Can anyone duplicate the issue?
Whiteknight davidfetter: Nobody that I know of 18:26
jonathan Util: Any chance of a backtrace? 18:27
18:27 iblechbot joined
Whiteknight Util: and what's the patch? 18:28
purl We don't need no stinking patch!
Util jonathan: sure! 50 lines - do you just need part of it, or should I nopaste it all?
Whiteknight nopaste it all
NotFound nopaste lines are cheap 18:29
jonathan Util: the lot
50 lines is fine. :-)
It's when people have 50,000 that I worry more. ;-)
moritz it's nearly #ps-time
Util Whiteknight: patch is the latest in my uncommitted pbc_to_exe efforts. That is why I am invoking with the parrot+.pbc call, instead of `./parrot_config`
Whiteknight it's peanut butter #ps time
I see, young grasshopper 18:30
nopaste "Util" at 68.191.99.24 pasted "parrot_config.pbc backtrace" (94 lines) at nopaste.snit.ch/16609 18:34
18:35 chromatic joined
Whiteknight fperrad: you got parrot to build with llvm-gcc? 18:36
moritz actually that worked for me some time prior to 1.0, and then stopped 18:37
but I never had the energy to track it down
jonathan Util: Oh gee, it's actually segfaulting *inside* the GC... 18:38
holy s**t...doing a write goes through 3 layers of PCCINVOKES?! 18:39
Whiteknight somewhere it looks like a Context is holding a bogus pointer, Unused pointers should be NULL'd in Contexts
jonathan Whiteknight: Yeah. 18:40
Whiteknight yeah, the IO system really utilizes it's PMCs
All the more reason to (1) get PCC optimized and (2) to get asynchronous IO working
jonathan Whiteknight: I'm wondering if the something inside PCCINVOKE maybe doesn't init the outer pointer or something...
chromatic That could be a context change I committed the other day to avoid calloc. 18:41
Whiteknight weird that it would only show up in such a particular stack trace
jonathan Whiteknight: We probably often don't call 3 levels of PCCINVOKES...
chromatic It makes sense to me. If there's an uninitialized struct member.... 18:42
Whiteknight 0xbffff570, is that a protected address on darwin?
jonathan chromatic: I can only guess it normally gets initialized when doing stuff in PIR and the PCCINVOKE path leaves a junk value.
chromatic That could be.
Whiteknight or is does that PMC itself contain the bad pointer?
tulcod "UTF-8 will upgrade to UTF-16" 18:44
Whiteknight no, I take that back, 0xbffff570 is the bad address
tulcod isn't UTF-16 simply a different notation for UTF-8?
(or the other way around)
NotFound tulcod: are different encodings 18:45
tulcod yeah, but they can do the same thing, right?
jonathan oh ouch
tulcod a character in UTF-8 can be encoded in UTF-16, and vice versa
jonathan for (i = 0; i < ctx->n_regs_used[REGNO_STR]; ++i) {
obj = (PObj *)CTX_REG_STR(ctx, i);
if (obj)
Parrot_gc_mark_PObj_alive(interp, obj);
NotFound tulcod: for some values of "same thing"
jonathan It's that which is passing the bad pointer, it seems.
(Line 124 is that last one)
NotFound They encode
moritz tulcod: yes. Both can encode the whole Unicode repertoire
tulcod moritz: so how is it an "upgrade"? 18:46
i mean, they are just different encodings...
moritz tulcod: I don't understand that phrase either
tulcod it's from the manual
docs.parrot.org/parrot/latest/html/...r.pod.html under "Strings: Encodings and Charsets"
NotFound I think it means that the 8 is converted to 16 if the other operand is 16 18:47
tulcod hm, that could be
it doesn't make sense, though
i mean, there's no objective reason to prefer -16 over -8 18:48
moritz and there isn't one to do it the other way round
davidfetter Whiteknight, d'oh. well, i'm going :)
moritz so it's an arbitrary choice
Whiteknight we just need them to be the same so we can combine them
tulcod hm 18:49
NotFound I'd like better utf32, but lots of people don't want the memory consumption
tulcod i thought perl would be a language based primarily logic
but it seems that's not the case
(yes, that's a joke)
moritz tulcod: perl != parrot
tulcod ah
sorry
s/perl/parrot/ :P
scrolling scrolling scrolling
Whiteknight pmichaud++ 19:02
Util parrot_config issue update - I tried a fresh checkout, with no patches. It has the exact same problem. 19:10
19:12 bsdz joined 19:20 donaldh joined 19:23 ruoso joined
Whiteknight tewk: ping 19:55
cotto seen tewk 19:56
purl tewk was last seen on #parrot 8 days, 5 hours, 18 minutes and 14 seconds ago, saying: nevermind, I'm alreaddy using 8888 [May 11 14:35:31 2009]
chromatic pmichaud, jonathan, do you have a nice representative bit of PIR code we can use to profile Rakudo HLL? 19:57
pmichaud ...PIR code?
I might be able to create something with --target=PIR
chromatic That's easiest. 19:59
dalek kudo: 595d364 | pmichaud++ | src/parser/grammar.pg:
Update =begin/=end handling slightly (RT #65782).
chromatic It's doable with p6 code too, but it may be easier to profile with and without HLL from PIR. 20:00
pmichaud well, if we do --target=pir it would still depend on the perl6 runtime.
I'm not sure if straight PIR code would be sufficient to expose the problem. But I'll try a couple of things and see what I get.
chromatic Oh, I see. Yeah. 20:02
pmichaud I'll try a few small benchmarks and see what I come up with.
for those who want to try it at home, the switch is simply to change perl6.pir:13 from 20:03
.macro_const RAKUDO_HLL 'perl6'
to
.macro_const RAKUDO_HLL 'parrot'
that switches the compiler from running in the 'perl6' HLL to the 'parrot' HLL.
allison message fperrad I added lua to the language selection in Trac tickets 20:04
purl Message for fperrad stored.
pmichaud prepare for massive "omgwtf"... (see nopaste) 20:13
nopaste "pmichaud" at 72.181.176.220 pasted "Rakudo hll 'perl6' versus 'parrot' simple benchmark, #1" (15 lines) at nopaste.snit.ch/16611
jonathan omgwtf 20:15
20:16 cotto joined
PerlJam It's a good think rakudo is so slow that this phenomenon is blatant ;) 20:16
s/think/thing/
pmichaud it appears to be the range-to-list that causes a lot of the slowdown. 20:18
$ cat z 20:19
(1..5000).list;
$ time ./perl6-parrot z
real\t0m4.344s
$ time ./perl6-hll z
real\t0m10.692s
PerlJam er ... wow.
pmichaud but not all of it. 20:20
purl i guess not all of it is read-only, right?
jonathan pmichaud: Did you try running the benchmark script I checked in on the two?
pmichaud jonathan: the benchmark script isn't running on my machine -- but I started with the benchmark just to see what happens 20:21
(i.e., stole an example from there to begin with)
jonathan ah, ok
Isn't running? :-S
pmichaud it assumes the current directory is in my PATH, which it isn't.
jonathan wonders what he could possibly have done wrong with it...
Oh
OK, some platforms are just odd.
pmichaud I'm guessing "perl6 ..." needs to be something like "./perl6 ..." 20:22
jonathan ;-)
nopaste "pmichaud" at 72.181.176.220 pasted "Rakudo hll 'perl6' versus 'parrot' simple benchmark, #2" (15 lines) at nopaste.snit.ch/16612 20:24
pmichaud that should be good/simple enough. 20:25
I'll post to parrot-dev
jonathan srslywtf 20:26
pmichaud yeah, not a lot there to indicate a slowdown. 20:27
Some calls to a local sub and postfix:<++> 20:28
20:30 maximilian joined
maximilian does anybody here hack the grammer.pg and actions.pm files in emacs? 20:32
i'm working through the tutorial and the lack of proper indenting and highlighting is drving me a little crazy.
Tene pmichaud: you can see the difference in speed even with just "perl6 -e 1" 20:33
which is a *bit* smaller than the spectests.
pmichaud Tene: sure, but most of that could be attributed to startup time.
moritz maximilian: in the pugs repo there is an (old) perl 6 syntax hilighter
Tene ah, you've been talking about it. 20:34
I'm still catching up a bit. :)
maximilian moritz: does the older one work better?
pmichaud I'm more interested in something that demonstrates real runtime speed difference -- i.e., more than just startup cost.
moritz maximilian: dunno, I'm a vim user ;-)
pmichaud my latest nopaste is the one I'm going with.
moritz maximilian: svn.pugscode.org/pugs/util/cperl-mode.el if you want to try it
maximilian moritz: cool thanks. i'll see if it works better. I might try coding this stuff in vim if I can't get emacs working better 20:35
pmichaud message sent to parrot-dev
purl Message for sent stored.
pmichaud afk for a while
moritz maximilian: for vim there's github.com/hinrik/vim-perl which has quite good suport for both grammars and normal code 20:36
Infinoid Ok, I'm back. How are we looking for the release? 20:37
maximilian moritz: appreciate it, thanks.
Infinoid reads parrotsketch logs
chromatic Hm, lots more NameSpace marking in the HLL version. 20:40
60% fewer PMCs created in the non-HLL version. 20:41
PMCProxy? 20:42
purl PMCProxy is probably basically Class for PMCs.
chromatic 87 PMCProxy PMCs created in non-HLL version, 14637 created in the HLL version. 20:44
allison tewk says he's busy with a paper submission, but will do the release tonight if no one else picks it up 20:46
chromatic: so, PMCProxys check to see if a proxy already exists before creating a new one
Infinoid I can try to knock up some release notes, if it helps. 20:47
chromatic These PMCProxy PMCs get created in two places: Parrot_oo_get_class_str() and Parrot_oo_get_class().
allison chromatic: I'm guessing the check for existence checks the current hll, but stores the new proxy in the parrot HLL
Infinoid The changes summary tends to be fairly big with our release announcements
allison Infinoid: thanks
yes, anything people can do to help get the release ready is helpful 20:48
chromatic I don't see anything about a proxy cache.
jonathan allison: Hmm, but all PMCs live in the Parrot namespace... 20:49
But yes, sounds like it's re-creating them every time or somehting.
dalek rcupinepascal: r71 | robin.ge++ | branches/oo-branch/ (9 files):
* added split builtin

  * tweaked logger to open on close on each write
  * added httpd example
chromatic Parrot_oo_get_class_str() does create a new PMCProxy every time.
Infinoid Ok, I'll finish debugging a bigint failure in bacek's MMD branch and then sort out a list of changes 20:50
allison chromatic: PMCProxy should be storing itself as a class in the namespace
if you check, I'd bet 87 is the number of C PMCs in the system
chromatic I'm sure 87 is.
Tene there are 79 in src/pmc/*.pmc 20:52
files, that is. 89 mentions of "pmclass"
So, around there.
allison chromatic: line 157 of src/pmc/pmcproxy.pmc 20:53
20:54 riffraff joined
allison Tene: it would include the Rakudo dynpmcs 20:55
Tene: (if they're loaded)
chromatic Okay, but I'm looking at the trace now. Parrot_oo_get_class_str() calls pmc_new_init() for PMCProxy 8,340 times.
Tene nods.
allison so, it's not correctly finding the PMCProxys already created
either because it's looking in the 'parrot' HLL and they're in the 'perl6' HLL, or because it's looking in the 'perl6' HLL when they're in the 'parrot' HLL 20:56
chromatic Looks like it. 20:57
I made Parrot_oo_get_class_str() call set_class on the NS when it creates a proxy, and Rakudo throws "can't find method" errors.
allison okay, it looks up the PMCProxy's relative to "current HLL" 20:58
PerlJam given a .pbc file, how does one tell what bytecode version it uses?
allison chromatic: must not be a namespace, then
but, init already calls set_class 20:59
that is, PMCProxy's init does
PerlJam never mind ... I'm somehow using the wrong parrot 21:00
nopaste "chromatic" at 72.90.115.31 pasted "PMCProxy PMCs created" (8400 lines) at nopaste.snit.ch/16614 21:04
21:06 cognominal joined
nopaste "chromatic" at 72.90.115.31 pasted "PMCProxy PMCs created, non-HLL" (72 lines) at nopaste.snit.ch/16615 21:07
chromatic It looks like the caching isn't working correctly.
dalek rcupinepascal: r72 | robin.ge++ | branches/oo-branch/ (3 files):
* added request handler
21:13
Infinoid is having trouble deciding which commits are relevant enough to put in NEWS 21:21
allison Infinoid: generally larger feature additions go in, bug fixes or small changes don't 21:26
Infinoid Yeah, it's the middle-sized ones that I tend not to be sure about 21:27
I'm going through the trac trunk revision log, so far I'm mostly paying attention to branch merges and huge diffs 21:28
allison Infinoid: if the medium-sized ones are a short list, go ahead and put them in
if they're a long list, then just take the largest 5-6 of them
Infinoid cool, thanks. 21:29
around 400 commits in total
allison the final news entry shouldn't have more than 20 or so items on it
some commits may be grouped together under one entry 21:30
21:31 Whiteknight joined
darbelo Whiteknight: pong 21:38
pmichaud fwiw, I continue to stand by my assertion that our heavy use of Parrot_oo_get_class_str() is evil. 1/2 :-) 21:39
we should identify classes by something other than strings.
Whiteknight oh hi darbelo
pmichaud afk (shuttling daughter to fencing lesson) 21:40
Whiteknight I was mostly looking to see if (1) you would be at #ps, and (2) if you've been blogging about your progress
darbelo Crap. I forgot to blog. 21:41
21:41 kid51 joined
Whiteknight it sounded like you had some interesting lessons you've been learning about Parrot, and those are always helpful to share 21:41
haha, it's okay. I forget all the time too
Have we heard anything from tewk yet? 21:42
chromatic Identifying classes by STRINGs is definitely too expensive.
Whiteknight chromatic: is that one of the big slowdowns with Rakudo now? 21:43
Infinoid Whiteknight: [13:46] <@allison> tewk says he's busy with a paper submission, but will do the release tonight if no one else picks it up
I'm working on the NEWS entry right now (400 commits, such fun)
Whiteknight Infinoid: Thanks 21:44
21:44 bacek joined
Infinoid bacek: ping 21:45
jonathan chromatic: The Class PMC for a particular class is meant to be unique, so in theory it should just be possible through pointer comp.
erm, not just unique
but canonical 21:46
purl rumour has it canonical is a company that eats babies
chromatic You have to get the Class PMC somehow.
jonathan tasty.
Infinoid bacek: Actually, unping. Looks like your bigints are failing to be big. It's pretty trivial to reproduce, but I wasn't able to debug it much further than that. (I'll work on it later tonight if I have time)
allison purl: forget canonical 21:48
purl allison: I forgot canonical
chromatic I don't have time to dig into this any more, but the responsibility for this PMCProxy cache is in a lot of places.
Whiteknight purl: our little PR nightmare
purl Whiteknight: huh?
Infinoid babies, huh? I prefer kittens 21:49
allison chromatic: did you uncover any more details as you were digging? 21:50
chromatic: (as in, anything to hand off?)
Whiteknight needs to get chromatics valgrind and kcachegrind crash courses 21:51
Infinoid That should be a wiki page, if it isn't already 21:52
chromatic Just those two log files I nopasted.
Infinoid Or a blog post or something
allison okay, I'll dig a little too
pmichaud: in this case, Parrot_oo_get_class_str and Parrot_oo_get_class are identical, creating a PMCProxy if they can't find the class object 21:56
dalek rrot: r38942 | whiteknight++ | trunk/NEWS:
[NEWS] add GC-related news update
21:58
bacek good morning
purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
Whiteknight good morning bacek 21:59
bacek Whiteknight:
Whiteknight bacek:
bacek need coffee...
purl clowns'll eat me
Infinoid Oh, wow. 22:01
allison I'm going to start committing the various book-keeping changes need for the release 22:02
Infinoid nm libparrot.so.1.0.0 | grep ' T ' | wc -l
13633
nm libparrot.so.1.2.0 | grep ' T ' | wc -l
1186
22:04 contingencyplan joined
dalek rrot: r38943 | allison++ | trunk/docs/project/ubuntu_packaging_guide.pod:
[ubuntu] Some updates to the packaging guide from the most recent
22:05
purl packaging is, like, important, consider how you'll do this carefully before you do anything.. or very cool
rrot: r38944 | allison++ | trunk/ports/ubuntu/changelog:
[ubuntu] Updating the date and PPA number from the most recent packaging.
Whiteknight the testf failures that I was seeing yesterday are disappeared 22:06
Infinoid allison: I've been following the release_manager_guide.pod instructions, but NEWS is probably only halfway done. Want my diff?
Whiteknight fulltesting now, but I expect it to pass now
Infinoid I've got a separate diff to update the guide; parrot.spec no longer seems to exist
allison Infinoid: no need for the diff, just go ahead and commit when you're through 22:07
I'll look at PMCProxy instead 22:08
dalek rrot: r38945 | allison++ | trunk/docs/book/ch03_pir.pod:
[book] Part way through the aggregate section edits on the PIR chapter.
Whiteknight allison++ # great work on the book 22:09
I'm trying not to get in the way of your work 22:10
allison Whiteknight: thanks for the compliment, and for all the great work you did too
I'm only working on the PIR chapter at the moment, so all other chapters are fair game
Whiteknight well you've already been through chapters 1 and 2 right 22:11
?
allison and, I try to commit regularly, to make it easier to coordinate
yes, chromatic and I have both been through 1 and 2
later chapters need more attention
Whiteknight okay, then I'll treat those two as sacrosanct for now
and I'm not doing any book work for a while, until my fulltest completes 22:12
allison more like "good enough"
chromatic There may be some =for author notes in chapters 1-3.
allison chapter 1 has none, and the two in chapter 2 are on my work 22:13
(the question of whether the later chapters should be dynpmcs and dynops, or just PMCs and ops) 22:14
(those two chapters are pretty thin, and may not make it into this edition of the book)
Whiteknight yeah, I was having a big problem fleshing them out 22:15
allison there's plenty to write about, but it may take longer than I have now
Whiteknight maybe I'm artificially limiting it, I probably have too narrow a view of the target audience 22:16
allison what we need is an instruction manual for writing your own PMCs and ops
Whiteknight in the book?
allison aye 22:17
but, not this edition
(it's a developer guide)
Whiteknight okay, that's something to put in the todo list then
(as if I need another thing in my list)
allison well, it doesn't have to be your list, could be anyone 22:19
chromatic I'd trade almost anyone task lists, but no one wants mine: set up health insurance, edit novel, write new novel, write profiling instructions, create nanoparrot ops, put previous novel on Scribd.... 22:20
Whiteknight my "list" is things that I want done and will do if nobody beats me to it 22:22
Infinoid Nanoparrot sounds like fun.
Whiteknight not staking a claim, just expressing interest
kid51 must call perlsemny meeting to order
Whiteknight chromatic: I'll write your novel. I don't offer warranties on my fiction work, however
and if you profile for a man, he will have a faster program once. If you teach a man to profile his programs will get iteratively faster 22:23
chromatic Sure, but teaching other people how to profile isn't paying work, which is what I most need right now. 22:24
Infinoid "Create nanoparrot ops" is the (maybe risc-inspired) reduced list of ops I've heard mutterings of in the past, right? 22:25
Whiteknight do you accept karma?
Util allison and pmichaud: the Trac ticket report you discussed on #ps is ready. Is it what you need? trac.parrot.org/parrot/report/16
allison Util: looks good 22:28
purl O_O
allison Util: you can skip the "force perl 6 to sort first" part 22:30
Util: ultimately more confusing than keeping it alphabetical
Util Will do
chromatic Infinoid, that's right. 22:33
22:34 eiro___ joined
dalek rrot: r38946 | allison++ | trunk/docs/book/ch02_getting_started.pod:
[book] Delete the removed PASM chapter from the description.
22:35
Infinoid chromatic: Awesome. I want to help.
Whiteknight Infinoid: Where are you reading about htis?
allison what's all that strange output near the end of 'make test': PMC filename pmc2c.t_2.pmc does not match pmclass name a! 22:36
Util allison: done, and improved the description. Perl6 is still happens to be ascii-first in the languages we have open tickets for.
Infinoid Whiteknight: I've heard a few mentions of the idea on IRC, I don't have anything I can point you to 22:37
allison Util: excellent, many thanks!
Infinoid Whiteknight: It's usually mentioned whenever someone asks how to make JIT not suck.
Whiteknight okay, I was just wondering if there was a ticket
Util glad to help
chromatic Step one is the PMC PCT branch.
allison Whiteknight: it's purely experimental at the moment
Whiteknight yes, that branch is key
dalek rcupinepascal: r73 | robin.ge++ | branches/oo-branch/ (5 files):
* added builtin to return a newline for sheer lazyness

  * checked for '()' following exit statement in grammar
darbelo allison: the strange output is from trac.parrot.org/parrot/ticket/665
chromatic Once we can create the C files from .pmc files, we can enhance that code generator so that we can write our PMCs in a little language that isn't mostly C. 22:38
Whiteknight yes, I'm pumped about that idea
chromatic Then we can add nanoparrot.ops as a dynops file -- just as an experiment, at first -- and write PIR code to those ops instead of C code.
Whiteknight might be worth trying to draft up a PDD about this language first, before we start breaking code ground on it
chromatic Once we can make all of our PMCs work through nanoparrot ops, we can do something similar for the other ops files. 22:39
allison darbelo: thanks 22:40
darbelo: the tests need to be updated too, added a quick note to the ticket 22:42
Whiteknight: it may not even be possible, so the path is prototype, review, spec, implement 22:46
dalek rcupinepascal: r74 | robin.ge++ | branches/oo-branch/ (3 files):
* added exists builtin
22:47
rrot: r38947 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
[pmc] Fix Integer.modulus for BigInt argument
22:52
bacek chromatic: I've got good name for "nano-ops" - Level One Language
or just "LOL" :)
Infinoid lolasm
bacek Infinoid: I fixed invocation of Integer.modulus. It failing in different way now... 22:53
Infinoid Cool. I will have some time to help debug it, once I'm done with this release stuff 22:54
bacek When "The Release"?
Infinoid I just love how Changelog, docs/project/release_manager_guide.pod and tools/util/release.json all use different date formats. ("2009.05.19", "May 19, 2009" and "19 May 2009", respectively.) ISO8601, anyone?
bacek Unix timestams!
Infinoid The release will happen when tewk, myself, or someone else gets around to it. I'm working up the NEWS stuff right now for whoever ends up doing it 22:55
dalek rrot: r38948 | bacek++ | branches/tt452_reduce_mmd/src/pmc/bigint.pmc:
[pmc] Don't use multi for BigInt.bitwise_shl
bacek ah, ok 22:56
seen tewk
purl tewk was last seen on #parrot 8 days, 8 hours, 17 minutes and 26 seconds ago, saying: nevermind, I'm alreaddy using 8888 [May 11 14:35:31 2009]
chromatic lol.ops... I dunno. 22:59
I like nanoparrot.ops because that's the minimal amount of Parrot that nanoparrot needs, especially when running embedded. 23:00
LOL is a much better acronym though.
Whiteknight okay, I'm getting a lot of test failures in t/examples/* 23:02
Infinoid msg Andy (re: r38751) The whole idea behind ASSERT_ARGS is to check this stuff at runtime, because gcc isn't capable of doing a very good job of it at compile-time. Is there something else we can (or need to) do to help splint?
purl Message for andy stored.
Whiteknight I seem to remember that's expected
bacek Whiteknight: You put "Refactor GC API" into wrong news... 23:04
Infinoid Don't worry, I've got " + Clean up the GC API." in the right NEWS
bacek :)
chromatic Where's STARTS THREE TIMES FASTER YOU UNGRATEFUL IMBECILES? That's a nice speedup. 23:05
Whiteknight chromatic++
he Hm, anyone up for helping me debug a 0xdeadbeef de-reference while doing t/pmc/io.t? 23:06
(on NetBSD/sparc64 5.0)
bacek chromatic++ # I'M GRATEFUL IMBECILE
chromatic Anyone who's grateful isn't an imbecile. 23:07
Infinoid too; chromatic++ checked in a surprising number of performance improvements this month
(even though I had to revert one... sorry)
chromatic he, there's a page on the wiki about debugging GC problems. I can't find the link now.
Infinoid he: Got a backtrace? 23:08
chromatic Backtraces don't help as much as figuring out the point of that PMC allocation and why it's unanchored. 23:09
Infinoid oh, he already posted one. nopaste.snit.ch/16603
he yep, that's the one. 23:10
vtable = 0xdeadbeef
or, rather, pccinvoke_meth->vtable.
Infinoid Is it really safe to call Parrot_PCCINVOKE from within a destroy method? 23:11
chromatic Hm, that was a googlewhack.
It's safe, except that ... hey, look! An order of destruction problem!
Infinoid I was afraid of that. 23:12
he Haven't seen this problem in my other testing, though, which I find strange. I've rebuilt and re-tested over the last 2-3 days. 23:14
allison ah, I see what's going on 23:15
Infinoid Have you been doing "svn update" between those? It might mean it's a recent change
chromatic Anything that changes the order of PMCs in the pools will trigger it.
he Yep, I have, but I went back to a revision which succeeded on NetBSD/sparc64 4.0, and still got the problem on my 5.0 system.
Re-testing now with an updated copy on 4.0. 23:16
allison when get_class does the look up, it's by name from the current HLL, but inside PMCProxy, it decides whether to cache it based on a lookup by integer type 23:18
Infinoid chromatic: Can we (ab)use the mark() functions to detect destruction ordering issues?
23:18 tetragon joined
allison so, it needs to do the lookup by integer type too before creating a PMC proxy 23:19
chromatic How would we detect that?
We walk through the pools backwards first. 23:20
That's after a final GC run.
Infinoid Well, for the sake of argument... say you have a bit in pobj.flags which says "I'm going to destroy this". You make up a linked list (or whatever) of all the objects you intend to destroy.
23:20 donaldh joined
Infinoid Then you go through and call all of their mark() functions, which call back into the GC. When that function encounters an object with the "I'm going to destroy this" bit set, that object gets moved to the front of the list 23:21
Or something. Is it possible to make that fast/practical?
I mean, the mark() function is the only (and right) way to determine inter-object dependencies. It would be nice if we could use them for this. 23:22
chromatic mark() would be better as a parameterizable visit() in that case.
Infinoid true.
chromatic Which isn't a bad thing either. 23:23
But it won't be quick or easy to implement.
bacek and cotto notwithstanding.
bacek what?
Infinoid Yeah, it's a lot of changed code
bacek++: You are awesome.
bacek :) 23:24
Infinoid Or maybe you just call the mark() function, let that recurse to the bottom level dependencies, and then start freeing them up as you go back up the stack 23:25
chromatic We *could* change the VTABLE_destroy() macro to do nothing if PMC->vtable is 0xdeadbeef.
Infinoid Which would be a lot easier than the nasty linked list idea.
chromatic There's no stack though, unless you're talking about inspecting the C stack to traverse that graph leaves first. 23:26
It's those kinds of sentences that make non-programmers in my life claim I don't speak English.
Infinoid hah
I was actually talking about freeing it up at the end of the Parrot_gc_mark_PObj_alive() function, which is a horrible nasty hack. 23:27
And it wouldn't work anyway, because there may still be some other object somewhere else which still depends on it, so nevermind.
chromatic Right. It's a graph. 23:28
Possibly -- and often -- cyclic.
Infinoid You can spend a flag bit to skip the duplicates
Though I don't know if you can break all of the cycles afterwards 23:29
23:29 tetragon_ joined
bacek heard hummers are good at breaking stuff 23:29
chromatic Most of the PMCs aren't in these weird cycles. 23:30
Infinoid Cycles notwithstanding, I think we can be *very* smart about ordered destruction, I'm just not sure how that would perform
chromatic Mostly it's not a problem.
We know that we have to destroy certain types of PMCs before other types of PMCs. 23:31
Maybe we need an "Ordered destruction" flag.
During the final pool sweeping, destroy everything without that set.
Then... magic happens... dunno.
Infinoid Would that be per-object or per-class? 23:32
bacek What if two PMCs have pointer to each other in ATTRs?
Infinoid A general way to say "destroy subs before namespaces" might be enough
nopaste "allison" at 76.191.198.74 pasted "patch to avoid duplicate proxy creation" (26 lines) at nopaste.snit.ch/16616
chromatic Destruction ordering is per-class, I think. 23:33
allison Could someone Rakudo-ish please test that?
chromatic I can test that.
Or I can punch up my dialogue in chapter 5. Grr. 23:34
allison the test should be fast
chromatic ResizableStringArray: Can't shift from an empty array! 23:36
allison chromatic: what's that from? 23:37
chromatic ResizableStringArray: Can't shift from an empty array!
current instr.: 'parrot;ResizablePMCArray;list' pc 257113 (src/gen_metaop.pir:99) (src/gen_setting.pm:3122)
called from Sub 'perl6;List;!flatten' pc 6578 (src/classes/List.pir:237)
called from Sub 'onload' pc 11624 (src/builtins/globals.pir:31)
called from Sub '_block151' pc -1 ((unknown file):-1) (src/gen_setting.pm:3122)
That's from Rakudo-in-HLL with that patch applied.
allison I have no clue where that might be coming from 23:38
how about Rakudo out of HLL with the patch applied?
chromatic Works fine. 23:40
jonathan chromatic: You get that during the build? 23:41
Or when running the perl6 produced by the build?
allison why is ResizablePMCArray reporting an error from ResizableStringArray?
chromatic The latter.
Infinoid about 400 commits went into this release... 100 of those are within the last 4 days. Is that normal? 23:42
jonathan chromatic: Especially odd, since that bit of code is in the PIR and would be run by the stage 1 compiler too. :-|
Infinoid (And does that seem insane to anyone else?) 23:43
allison Infinoid: seems pretty typical
good velocity
Infinoid Yeah, the peak just before the commit seems crazy from a stability perspective tho
allison and, the last 4 days is nearly a week, so about a quarter of the commits in a quarter of the month
jonathan
.oO( would more releases increate our average commit rate? )
Infinoid s/commit/release/
allison Infinoid: they're largely bug fixes, not feature additions 23:44
Infinoid I'm not complaining in any case, was just curious :)
jonathan allison: I can only ponder the the list method is declared on RPA and copied into RSA somehow...
allison: Or invoked on it.
That or the report is bogus. 23:45
Whiteknight I wonder if we should merge the PGE and NQP chapters into the PCT one
chromatic PGE no. NQP probably.
jonathan chromatic: Out of curiosity, does running perl6.pir and/or perl6.pbc make a difference? 23:46
I'm expecting not...
allison Whiteknight: I split them out because they were too long
Whiteknight: they have plenty of content and importance to stand as chapters 23:47
Whiteknight okay, just double-checking 23:48
chromatic I haven't tried... seriously cramped for time at the moment.
jonathan chromatic: OK, no worries.
chromatic I probably won't get back to this until tomorrow morning. 23:49
allison I get some test failures anyway: set_number_native() not implemented in class 'Class'
chromatic Yeah, looks like it's not creating enough PMCProxy PMCs.
jonathan Ah, OK.
23:50 whoppix joined
jonathan I was going to apply it myself if it passed al Parrot tests, but if it's missing some of those, they'll be far easier to debug from than Rakudo. 23:50
It's failing *very* early, fwiw.
he hm, still succeeds in NetBSD/sparc64 4.0
allison jonathan: in Rakudo? 23:52
jonathan allison: Yeah 23:55
Seems so.
It's in the :load :init blocks so far as I can tell.
allison: If you have Parrot test fails too though, they're probably a better point to hunt the issue down.