Camelia, the Perl 6 bug

IRC log for #parrot, 2009-05-19

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:19 wayland76 joined #parrot
00:20 bacek_ joined #parrot
00:27 tetragon joined #parrot
00:56 kid51 Awfully quiet here for a night before monthly release
00:56 eternaleye joined #parrot
01:07 Infinoid Things are looking pretty good here on linux/amd64.
01:08 kid51 Did you see the make fulltest results I've been posting on list?
01:09 * 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
01:09 Infinoid s/ome/one/
01:09 kid51 then u've got it
01:09 kid51 got 'em
01:10 dalek parrot: r38918 | Infinoid++ | trunk/PLATFORMS:
01:10 dalek parrot: [PLATFORMS] More updates from he++.
01:10 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38918/
01:10 dalek parrot: r38919 | Infinoid++ | trunk/DEPRECATED.pod:
01:10 dalek parrot: [DEPRECATED] Update for TT #665.
01:10 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38919/
01:13 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 Infinoid I'll try fulltest now
01:15 cotto kid51, maybe that's because we've reached chromatic's goal of having releases be boring.
01:15 cotto (and predictable)
01:16 Infinoid Let's hope.
01:21 Whiteknight I'm getting a testf failure on t/compilers/imcc/syn/regressions.t
01:21 Whiteknight is anybody else seeing that?
01:22 Infinoid kid51 reported it on linux and darwin
01:22 Infinoid I'm still waiting for mine to finish
01:22 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.
01:22 Whiteknight okay. Is there a ticket opened for it?
01:23 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
01:23 Infinoid I can see it here too on gentoo x86-64
01:24 Infinoid (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
01:24 Infinoid ah, perl t/harness -f t/compilers/imcc/syn/regressions.t
01:25 Whiteknight what is -f anyway?
01:25 purl somebody said -f was for file, remove it or for parrot fast core or for forking
01:25 Whiteknight ah, fast core
01:26 cotto with -f it fails for me too (Hardy i386)
01:29 Infinoid #   Failed test 'die in immediate, TT \#629'
01:29 Infinoid #   at t/compilers/imcc/syn/regressions.t line 184.
01:29 Infinoid #                   'no
01:29 Infinoid # current instr.: 'foo' pc -1 ((unknown file):-1)
01:29 Infinoid # '
01:29 Infinoid #     doesn't match '/no\ncurrent inst.*:2\)$/
01:30 Infinoid So it seems fine except for the file/line number.
01:31 Infinoid 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:39 dalek parrot: r38920 | Infinoid++ | trunk/t/compilers/imcc/syn/regressions.t:
01:39 dalek parrot: [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 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38920/
01:55 kid51 Infinoid:  On Linux, r38920 fixes all the failures in  t/compilers/imcc/syn/regressions.t *except* -r
01:57 Infinoid wish I knew what -r did
02:00 kid51 -run-pbc
02:01 kid51 compile to Parrot bytecode and then run the bytecode
02:01 kid51 # normal core, write and run Parrot Byte Code
02:01 kid51 testr : test_prep
02:01 purl test_prep is actually what makes miniperl?
02:01 kid51 $(PERL) t/harness $(EXTRA_TEST_ARGS) -r $(RUNCORE_TEST_FILES)
02:02 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
02:02 purl kid51: I forgot test_prep
02:02 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
02:03 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.
02:03 kid51 quite possibly
02:05 kid51 t/benchmark/benchmarks.t has been running for > 90 minutes on my iBook!
02:05 kid51 ... much more than the rest of 'make fulltest_all' combined
02:05 Infinoid wow.
02:09 cotto Let's drop it from fulltest and bring it back when it runs in a more reasonable time.
02:12 kid51 I'm looking at it but can't figure out how the number of iterations is controlled.
02:12 kid51 If we were to cut iterations by factor of 10, perhaps we'd get something more reasonable.
02:14 particle joined #parrot
02:16 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
02:16 kid51 Woah!  it just finished!
02:16 Infinoid Mine is currently stuck on 28/36
02:16 Infinoid heh
02:16 kid51 5816 / 60
02:16 purl 96.9333333333333
02:16 kid51 97 minutes for one file
02:17 kid51 Am also timing it on Linux
02:21 cotto I'd prefer to cut them down by 100x, but 10x would be reasonable.
02:22 Infinoid I think examples/benchmarks/primes.pasm is the really big one
02:23 kid51 Of course, didn't Andreas file a ticket about 'recently induced slowness'?
02:26 kid51 That was:  http://rt.perl.org/rt3/Publi​c/Bug/Display.html?id=60692
02:26 dduncan joined #parrot
02:27 dduncan left #parrot
02:28 Infinoid ah, mmd
02:36 kid51 1024 / 60
02:36 purl 17.0666666666667
02:36 kid51 17 minutes for benchmark.t on Linux
02:41 janus joined #parrot
03:20 donaldh joined #parrot
04:01 Andy joined #parrot
04:07 dalek parrot: r38921 | petdance++ | trunk (2 files):
04:07 dalek parrot: dropped unused interp and return values
04:07 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38921/
04:09 Eevee joined #parrot
04:54 Tene purl: karma tene
04:54 purl tene has karma of 434
05:29 dalek parrot: r38922 | petdance++ | trunk (2 files):
05:29 dalek parrot: consting internal vars
05:29 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38922/
05:37 flh joined #parrot
05:40 he Infinioid: another pass: NetBSD/sparc (32-bit) 5.0 with parrot-current
05:49 cognominal joined #parrot
06:07 cotto this should make some people happy
06:07 uniejo joined #parrot
06:08 dalek parrot: r38923 | cotto++ | trunk (22 files):
06:08 dalek parrot: [t] adjust numbers in tested benchmarks so they take <=10s and omit the mops tests
06:08 dalek parrot: This reduces the time for benchmark.t from about 20m to 2m on my machine.
06:08 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38923/
06:15 masak joined #parrot
06:22 iblechbot joined #parrot
07:05 bsdz joined #parrot
07:12 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:21 donaldh joined #parrot
07:26 dalek parrot: r38924 | cotto++ | trunk/tools/dev/pbc_to_exe.pir:
07:26 dalek parrot: [pbc_to_exe] undo accidentally committed change from previous commit
07:26 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38924/
07:38 dalek rakudo: d0fbfbe | moritz++ | src/setting/Any-list.pm:
07:38 dalek rakudo: accept more general matchers in grep
07:38 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​0fbfbe3bcb97074b44e3df81fad5492b7dd3b53
07:51 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 http://nopaste.snit.ch/16596
07:52 japhb he: That's fine with me, delta fixing the leading tab.
07:53 he_ ah, ok; easy mistake to make.
07:57 nopaste "he" at 158.38.62.77 pasted "Make netbsd join the rest in testing pmc/threads" (12 lines) at http://nopaste.snit.ch/16597
08:24 he_ Hm, interesting...  NetBSD/sparc64 5.0 fails t/pmc/io.t with a bus error
08:29 he_ ...aaand...  unsurprisingly, perhaps, this is a bus error due to a non-aligned load.
08:29 he_ 0x1376ec <Parrot_PCCINVOKE+2444>:       ldx  [ %g1 + 0x4f8 ], %g1
08:29 he_ g1             0xdeadbeef       3735928559
08:30 he_ #   Failed test 'fdopen - no close'
08:31 cotto ironically, I'm munching on beef jerky
08:31 cotto although not choking on it ;)
08:31 moritz ;-)
08:34 he_ Innermost frame is 2870            VTABLE_invoke(interp, pccinvoke_meth, NULL);
08:36 he_ Well... it's of course also trying to load via an invalidated pointer.
08:38 he_ hm, pccinvoke_meth->vtable == 0xdeadbeef, pccinvoke_meth->pmc_ext == 0xdeadbeef
08:40 he_ I guess that means "that's not going to work".
08:45 mikehh_ joined #parrot
08:45 cotto Yup.  That means it's already been GC'd.
08:50 cognominal joined #parrot
09:03 dalek rakudo: 222993f | moritz++ | docs/ChangeLog:
09:03 dalek rakudo: [docs] update ChangeLog
09:03 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​22993f147087b8d28f24f3915a30a9f8568c28e
09:35 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:37 mikehh TODO passes t/compilers/imcc/syn/regressions.t TODO passed:   14 and t/op/io.t TODO passed:   4 in testf
09:38 mikehh Kubuntu Jaunty (9,04) Amd64
09:43 he_ cotto: hm. Makes me wonder why recent tests on NetBSD/sparc64 4.0 succeeded, then.
09:43 he_ Perhaps I updated at an inopportune moment, so have a slightly newer parrot on the 5.0 system?
09:43 he_ (how do I find out which revision I'm synced with?)
09:43 he_ <-- svn newbie
09:43 cotto are you working from an installed parrot?
09:44 he_ nope
09:44 cotto svn info
09:45 he_ ok, the failing test is with rev. 38923
09:46 he_ the one which succeeded on 4.0 is rev. 38917
09:47 he_ I'm doing "svn update -r38917" on the 5.0 system, and will rebuild and re-test.
10:15 mikehh any idea what's happening with smolder? it been down for a week
10:15 mikehh plus lots of downtime before that
10:16 bacek joined #parrot
10:18 cotto it was up earlier today
10:39 bacek joined #parrot
10:43 mikehh cotto: I have not been able to submit through make smoke for quite a while - it times out on me
10:43 mikehh and I can't connect to the site either
10:52 nopaste "bacek" at 114.73.146.105 pasted "We have to fix mmd..." (7 lines) at http://nopaste.snit.ch/16601
10:53 bacek This is after few twiks in Integer.pmc to not use MMD...
11:15 he_ hm, rev 38917 is failing as well on the 5.0 system.
11:16 burmas joined #parrot
11:20 kid51 joined #parrot
11:21 donaldh joined #parrot
11:21 wayland76 joined #parrot
11:26 bacek when The Release?
11:26 bacek And what current policy for non-critical commits?
11:28 moritz it's often after #ps
11:28 moritz and small things (like doc fixes) usually can go in until shortly before
11:30 bacek I've got couple of commits related to TT#452
11:34 moritz I can't comment on that
11:42 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 #parrot
11:43 pancake does parrot has a uninstall make target?
11:43 moritz no
11:44 pancake it is planned? like the manpage?
11:45 moritz I don't see much merit in it
11:45 moritz if you develop with parrot, you don't install it
11:45 moritz if you use parrot, you'll use a package from your vendor
11:46 moritz and the package management system can handle uninstalling
11:47 pancake i always find uninstall pretty useful
11:47 pancake f.e, you test parrot svn and install it in /usr/local, and then install it in /usr
11:47 pancake for work, and you want to remove the one in /usr/local
11:48 pancake i can write a stupid perl script that makes the list of installed files and then removes them
11:48 pancake but it will be better if this is in the default parrot
11:48 moritz well, you can always try to submit it as a patch
11:48 pancake is the build system of parrot documented?
11:49 moritz I don't know
11:49 moritz maybe there's something in docs/
11:49 pancake looks like everything is magically generated with Parrot modules
11:51 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 http://nopaste.snit.ch/16603
11:55 pancake btw, what about cpu_ret() opcode? is really necessary?
11:55 pancake src/ops/core.ops:109
12:03 Infinoid I would assume it's only there as a JIT template
12:04 pancake but only for x86? looks weird
12:05 Infinoid You could always delete it and see what breaks. :)
12:06 * pancake notes in todo ;)
12:11 dalek parrot: r38925 | coke++ | trunk/t/compilers/imcc/syn/regressions.t:
12:11 dalek parrot: [t] this test fails most cores in 'fulltest'
12:11 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38925/
12:17 Infinoid erm... I thought I already fixed that test
12:17 bacek Double fix in action!
12:20 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.
12:21 dalek parrot: r38926 | coke++ | trunk/t/compilers/imcc/syn/regressions.t:
12:21 dalek parrot: [t] revert r38925.
12:21 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38926/
12:22 Infinoid msg Coke Nevermind. :)
12:22 purl Message for coke stored.
12:23 bacek Cheap karma :)
12:23 Infinoid karma coke
12:23 purl coke has karma of 2812
12:24 bkuhn joined #parrot
12:25 ruoso joined #parrot
12:26 Andy joined #parrot
12:33 iblechbot joined #parrot
12:40 Whiteknight joined #parrot
12:40 rg1 joined #parrot
12:47 nopaste "he" at 158.38.152.74 pasted "Updates to various NetBSD platforms in the PLATFORMS file" (26 lines) at http://nopaste.snit.ch/16605
12:50 wayland76 joined #parrot
13:00 dalek parrot: r38927 | Infinoid++ | trunk/PLATFORMS:
13:00 dalek parrot: [PLATFORMS] More updates from pkgsrc maintainer, he++.
13:00 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38927/
13:05 mikehh joined #parrot
13:14 mikehh joined #parrot
13:16 bacek joined #parrot
13:17 gryphon joined #parrot
13:33 shadowspar left #parrot
13:37 hiroyuk__ joined #parrot
13:37 whoppix joined #parrot
13:43 rakudohudson joined #parrot
13:47 nopaste "bacek" at 114.73.49.67 pasted "Two benchmarks..." (14 lines) at http://nopaste.snit.ch/16606
13:49 bacek 407/66
13:49 purl 6.16666666666667
13:50 bacek 6 times faster.
13:50 * bacek going to commit all changes in branch
13:53 dalek parrot: r38928 | bacek++ | branches/tt452_reduce_mmd:
13:53 dalek parrot: Branch for reducing MMD usage as described in TT#452
13:53 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38928/
13:54 Infinoid wow, nice timings!
13:55 masak bacek++
13:57 bacek I broke couple of tests BTW
13:57 bacek *incoming*
13:59 bacek ouch... I did something wrong with git-svn
14:00 dalek parrot: r38929 | bacek++ | branches/tt452_reduce_mmd/src/pmc (3 files):
14:00 dalek parrot: Merge branch 'tt452_mutlis_local' into t452_reduce_mmd_local
14:00 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38929/
14:01 bacek Ah. git svn squashed all my commits in one...
14:02 rg that's what svn does for a merge
14:03 bacek I didn't expect it. It was 5 or 6 commits in my local branch...
14:05 bacek Is t/src/extent.t failing only on my box?
14:05 bacek t/src/extend.t
14:06 rg trunk or branch?
14:08 Theory joined #parrot
14:08 rg *sigh* smolder seems to be more down than up lately
14:09 bacek_ joined #parrot
14:11 bacek_ rg: trunk and branch.
14:11 bacek_ But probably I have to make realclean to test
14:11 Infinoid t/src/extend.t .. ok
14:12 rg fine on trunk@r38925
14:12 Infinoid passes here on trunk@r38927
14:14 jsut joined #parrot
14:14 nopaste "bacek" at 114.73.50.241 pasted "t/src/extend.t failure" (6 lines) at http://nopaste.snit.ch/16607
14:14 bacek_ It's... weird...
14:17 bacek Let's try with clean checkout
14:18 Infinoid What platform is that?  Could it be confused by an installed libparrot?
14:19 Infinoid Those were macros until very recently, r38654 introduced them as exported symbols
14:19 bacek Debian Lenny/i386
14:19 bacek I removed installed libparrot, rm -rf *; git checkout .; perl Configure.pl; make
14:20 bacek Just waiting to build...
14:20 Infinoid oki
14:21 bacek passed
14:21 Infinoid Ok, so it prefers installed libparrot over locally built libparrot
14:22 bacek Looks like something was broken. Either installed parrot or local checkout
14:22 Infinoid it would be the installed parrot
14:22 Infinoid Up until 10 days ago, those missing symbols were really macros, so your installed libparrot must have been older than that
14:23 bacek It was about couple of months old :)
14:24 Infinoid Hmm.  I'm still not happy with the current state of TT #665
14:24 Infinoid 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
14:25 bacek Why you can't do it?
14:26 Infinoid Because it's possible (though insane) that some HLL is relying on the old behavior
14:26 NotFound warn++
14:26 bacek Some of them relied on exported VTABLE's functions.
14:27 NotFound Big ugly warn
14:27 bacek Big ugly warn adn die horribly
14:28 NotFound bacek: but we already said long time ago that direct usage of vtable functions wasn't supported, I think.
14:29 bacek Misused capitalise in pmc's name and filename never works either.
14:30 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 #parrot
14:32 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
14:32 Infinoid uh, insert another '"' in there somewhere
14:32 bacek Something like '#defined DEPRECATED #warning "This is deprecated"'
14:33 nopaste "infinoid" at 75.28.74.203 pasted "[PATCH] (TT #665) All right. Everyone happy with this?" (45 lines) at http://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.
14:34 bacek Infinoid: +1
14:34 purl 1
14:34 NotFound Infinoid: but that is only for deprecated opcodes, isn't it?
14:34 Infinoid For now.  It seems like a good point for extending that
14:34 bacek NotFound: it's for deprecated "feature"
14:35 Whiteknight_ joined #parrot
14:36 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 http://nopaste.snit.ch/16597 :)
14:37 Infinoid he_: You're right.  Thanks, I'll apply that
14:37 he_ Thanks!
14:38 Whiteknight_ Who's release manager today?
14:38 Infinoid tewk
14:40 dalek parrot: r38930 | bacek++ | branches/tt452_reduce_mmd:
14:40 dalek parrot: Remove branch due big wrong commit
14:40 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38930/
14:40 dalek parrot: r38931 | bacek++ | branches/tt452_reduce_mmd:
14:40 dalek parrot: Branch for reducing MMD usage as described in TT#452
14:40 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38931/
14:40 NotFound We have Parrot_warn, but is too boring to have to write: Parrot_warn(interp, PARROT_WARNINGS_DEPRECATED_FLAG, "some message");
14:41 Infinoid What would you prefer?  A wprintf() wrapper macro? :)
14:41 NotFound A function Parrot_wan_deprecated
14:41 NotFound Parrot_warn_deprecated
14:41 Whiteknight Parrot_ur_doin_it_wrong()
14:41 Infinoid #define DEPRECATED(a...) Parrot_warn(interp, PARROT_WARNINGS_DEPRECATED_FLAG, a)  /* sadly that only works on gcc */
14:41 riffraff joined #parrot
14:42 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.
14:42 Whiteknight Parrot_im_in_ur_core_deprecatin_ur_features()
14:43 bacek #define DEPRECATED Parrot_warn(interp, PARROT_WARNING, "Function %s deprecated", __PRETTY_FUNCTION__)
14:43 dalek parrot: r38932 | Infinoid++ | trunk (2 files):
14:43 Infinoid bacek: Something like that would work too.  +1
14:43 dalek parrot: [pmc2c] If your filename doesn't match your pmclass name, pmc2c should emit a big nasty warning.
14:43 dalek parrot: (It can't die() without a deprecation cycle, so this is the first step of fixing TT #665.)
14:43 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38932/
14:43 dalek parrot: r38933 | Infinoid++ | trunk/t/pmc/threads.t:
14:43 dalek parrot: [t] Threads should work on NetBSD, so enable the test.  he++
14:43 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38933/
14:43 dalek parrot: r38934 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
14:43 dalek parrot: [pmc] Don't use MMD in Integer.modulus
14:43 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38934/
14:43 dalek parrot: r38935 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
14:43 dalek parrot: [pmc] Don't use MMD in Integer.cmp
14:43 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38935/
14:43 dalek parrot: r38936 | bacek++ | branches/tt452_reduce_mmd/src/pmc/scalar.pmc:
14:43 dalek parrot: [pmc] Optimize scalar.concatenate to reduce GC pressure
14:44 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38936/
14:44 dalek parrot: r38937 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
14:44 dalek parrot: [pmc] Don't use MMD dispatch in Integer.is_equal
14:44 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38937/
14:44 dalek parrot: r38938 | bacek++ | branches/tt452_reduce_mmd/src/pmc/bigint.pmc:
14:44 * bacek hides
14:44 dalek parrot: [pmc] Use less MULTIs in BigInt.pmc
14:44 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38938/
14:44 Infinoid poor bot
14:44 bacek which one?
14:44 Infinoid We work dalek++ pretty hard.
14:45 bacek karma dalek
14:45 purl dalek has karma of 7
14:45 bacek hard karma :)
14:45 bacek dalek++ # good bot :)
14:45 purl thanks bacek :)
14:45 Infinoid karma purl
14:45 purl purl has karma of 8570
14:45 Infinoid Cheater.
14:45 bacek Not you, stupid girl!
14:46 bacek << purl-- >>
14:46 bacek karma purl
14:46 purl purl has karma of 8569
14:46 NotFound Forgot to say: my amd64 machines at dayjob pass packfile test after last fixes :)
14:46 bacek Get it!
14:46 bacek NotFound: That's good :)
14:46 Infinoid NotFound: Great, thanks for verifying
14:46 Infinoid seems like we were seeing the same issue after all
14:46 Infinoid GC bugs are fun.
14:47 bacek bad fun...
14:48 Infinoid GC++ # Far better than having no GC...
14:48 Whiteknight purl purl?
14:48 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
14:48 bacek CAN I HAZ CONSERVATIVE GC?
14:49 Infinoid I don't think there's any such thing.
14:49 Whiteknight bacek: Working on it!
14:49 Infinoid Now we just need GCable contexts and PackFile structs and jit pools
14:49 Whiteknight Infinoid: Sure there is, Boehm is a good example
14:49 Infinoid Seems like GCs work better when they can track *everything*
14:49 Infinoid ok, I'm not familiar with boehm
14:50 * jonathan votes for liberal GC
14:50 * Infinoid votes for libertarian GC
14:50 Whiteknight Infinoid: We're working on that too, the more it can track the less often we have to call malloc
14:50 Whiteknight and less malloc == more good
14:50 bacek Whiteknight: no-no-no! Generation-based first!
14:50 Whiteknight bacek: generational GCs typically are conservative
14:51 bacek Whiteknight: they are typically "collective"
14:51 Infinoid Whiteknight: Is it something I can help with?
14:51 NotFound There are no liberal GC?
14:52 Whiteknight NotFound: They're typically broken down into "Conservative" and "Precise"
14:52 Infinoid NotFound: We were joking about politics :)
14:52 Whiteknight where "Precise" collectors take more time but guarantee to sweep all garbage, while conservative takes less time but misses some things
14:53 NotFound Infinoid: ah, yes, I failed to read some lines
14:53 Infinoid Revolutionary GC: free() first, ask questions later
14:53 bacek Extemistic GC: free() first. And second too!
14:54 Whiteknight anarchist GC: We don't need your memory, we will make our own!!!
14:54 NotFound That sounds like the infinite memory model.
14:54 bacek zen GC: garbage? What garbage?
14:55 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.
14:56 bacek Alien GC: all your memory are belong to us
14:57 bacek 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 #parrot
14:58 bacek Ressurecting GC: You can always have Whiteknight back :)
14:58 Whiteknight who can have me back?
14:58 Infinoid [07:57] < bacek> Looks like Whiteknite was collected... Prematurely...
14:58 * Infinoid marks Whiteknight
14:59 Whiteknight yeah, I crashed firefox
14:59 NotFound Monte Carlo GC: random choose some object to destroy
14:59 NotFound That may be useful to find GC errors
15:00 bacek GC of mass destruction: "Don't ask"
15:00 Whiteknight no, that would be useful to create GC errors
15:00 bacek It's easy to find something that you just created :)
15:00 NotFound Yes, that way is a lot easy to find one
15:01 Infinoid Shotgun GC frees the PMC and 1d10 nearby PMCs at random
15:02 bacek Bed GC: sometimes you turn to garbage to be collected by bed
15:02 bacek Sleep time. See you tomorrow
15:02 Whiteknight goodnight
15:02 bacek goodnight
15:03 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.
15:04 bacek I can't fix it... :/
15:04 * bacek must sleep
15:04 purl $bacek->sleep(8 * 3600);
15:11 Infinoid urk.  warn() doesn't work after all, because Pmc2cMain.pm contains this line:
15:11 Infinoid $SIG{'__WARN__'} = sub { use Carp; warn $_[0]; Carp::confess; };
15:16 Whiteknight lousy
15:16 dalek parrot: r38939 | coke++ | trunk/t/compilers/imcc/syn/regressions.t:
15:16 dalek parrot: [t] recent fixes to the test let this pass under CGP, but it still fails with --run-pbc
15:16 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38939/
15:16 Infinoid It does look useful for debugging, but I'm going to comment it out for now
15:21 donaldh joined #parrot
15:23 dalek parrot: r38940 | Infinoid++ | trunk/lib/Parrot/Pmc2c/Pmc2cMain.pm:
15:23 dalek parrot: [pmc2c] There's a signal handler in pmc2c which upgrades warnings to errors (with a Carp backtrace).
15:23 dalek parrot: This looks like a useful debugging tool, but when combined with the deprecation warning I introduced
15:23 dalek parrot: in r38932, it causes test failures.  Add a comment and disable it for now.
15:23 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38940/
15:28 * Infinoid is looking at bacek's bitwise.t issue
15:29 Infinoid Looks like bigints are failing to be big.
15:29 dalek parrot: r38941 | coke++ | trunk/DEPRECATED.pod:
15:29 dalek parrot: [docs] This is /already/ deprecated.
15:29 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38941/
16:02 fperrad joined #parrot
16:11 moritz joined #parrot
16:16 iblechbot joined #parrot
16:21 flh joined #parrot
16:25 donaldh left #parrot
16:35 HG` joined #parrot
16:37 cotto joined #parrot
16:38 Whiteknight is there a list somewhere for who is going to be release manager each month?
16:39 Whiteknight 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
16:40 Whiteknight ah, there it is. Thanks cotto++
16:40 riffraff joined #parrot
16:41 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
16:41 pmichaud parrotsketch in 110
16:41 Tene Tue May 19 16:41:38 UTC 2009
16:41 Whiteknight purl needs to be able to give us a countdown
16:41 purl Whiteknight: sorry...
16:41 Whiteknight it's okay purl, it's not your fault
16:41 Tene purl: countdown?
16:41 purl rumour has it countdown is at 4:45
16:42 Whiteknight ..and not quite
16:56 dalek tracwiki: v19 | whiteknight++ | GCTasklist
16:56 dalek tracwiki: https://trac.parrot.org/parrot/wiki/G​CTasklist?version=19&amp;action=diff
16:58 moritz ps?
16:58 purl ps is postscript or process status or see "parrotsketch" or non-vector?! or annoying.
16:58 moritz parrotsketch?
16:58 purl i think parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
16:58 Whiteknight time?
16:58 purl time is 16:55:37 2009 and (did you mean "clock"?) or flowing like a river
17:00 dalek rakudo: ac60b66 | pmichaud++ | docs/spectest-progress.csv:
17:00 dalek rakudo: "2009-05-19 00:00",9d2934e,11297,0,389,2199,13885,16603,391
17:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​c60b66366cc02e7ff1fe45d49e6ed231b6d009c
17:02 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 Tene HLL Stuff isn't quite there yet, though.
17:03 pmichaud We often have to progress on several fronts simultaneously.
17:03 Tene Yeah.
17:03 pmichaud Right now I'm doing a benchmark of Rakudo's HLL vs. non-HLL performance.
17:04 pmichaud to try to quantify it a bit better.
17:04 Tene Kinda creepy, isn't it?
17:04 Tene :)
17:05 Tene I think my next target will be getting my scheme impl. up to speed
17:05 Tene r6RS and all that
17:05 Tene A few people asked to see HLL interop between languaes less similar than ruby and perl
17:06 pmichaud that would be good.
17:06 Tene I need to hit pynie sometime soon too.
17:06 Whiteknight HAH! I just found the ParrotQuotes page on the wiki
17:06 pmichaud I wonder if I could get APL into a package-able state.
17:07 * Whiteknight is going to waste his whole afternoon now
17:07 Tene That's a great idea.
17:07 NotFound Tene: if people want a language a lot less similar that those, tell them to try pirric X-)
17:07 moritz Whiteknight: it doesn't have enough entries to waste an entire afternoon ;-)
17:07 moritz Whiteknight: bug enough to keep laughing for a few minutes
17:07 tulcod joined #parrot
17:07 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
17:07 Whiteknight yeah, but it's going to completely kill my train of thought
17:07 tulcod how do i get parrot to compile and install nqp?
17:08 Infinoid Whiteknight++ # finding the quotes
17:08 NotFound Wow, the negative NaN affair is in ParrotQuotes
17:08 moritz tulcod: a simple 'make' will at least compile it
17:08 tulcod moritz: where should it land up?
17:09 moritz tulcod: compilers/nqp/ probably
17:09 Tene tulcod: in your install prefix, lib/1.1.0-devel/languages/nqp/nqp.pbc
17:09 tulcod hm, and it should just be named nqp?
17:09 tulcod oh, nqp.pbc
17:09 Tene after an install
17:09 Tene in the build tree, compilers/nqp/nqp.pbc
17:09 tulcod it's there
17:09 tulcod not executable
17:09 tulcod but it's there
17:10 NotFound There is no target to build a nqp fakecutable?
17:10 pmichaud there isn't an nqp "executable"
17:10 tulcod oh
17:10 tulcod the parrot manual suggests otherwise
17:10 pmichaud nqp tends to always be run from a parrot command line
17:10 tulcod http://docs.parrot.org/parrot/latest/html​/docs/book/ch02_getting_started.pod.html, "Running a Language on Parrot"
17:10 Tene tulcod: where does the manual suggest that?  that's a documentation bug.
17:11 Tene huh
17:11 Tene you're right.
17:11 Tene That's a lie in our docs. :)
17:11 Tene try:
17:11 Whiteknight the docs don't lie!
17:11 Tene ./parrot compilers/nqp/nqp.pbc
17:11 tulcod Tene: yeah, i just did that
17:11 Whiteknight They just describe a different reality from where we are
17:11 pmichaud I wouldn't have an issue with making an nqp executable, however.
17:11 tulcod still doesn't work
17:11 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!
17:11 Whiteknight (nqp executable)++
17:12 tulcod > say "hi"
17:12 tulcod Statement not terminated properly at line 1, near "\"hi\"\n"
17:12 moritz I see no point in it
17:12 moritz tulcod: try say("hi");
17:12 tulcod works
17:12 moritz tulcod: it's a *very* limited subset of Perl 6, including parsing
17:12 Tene More lies!
17:12 NotFound tulcod: nqp is not as tolerant with syntax as perl.
17:12 tulcod purl: and you be quiet, mister, i was about to expand on that
17:12 purl tulcod: excuse me?
17:13 tulcod NotFound: yeah, i guess that's the case :P
17:13 tulcod purl: you wanna fight about it? you dare and come outside, i'll pucnh you in the face
17:13 purl tulcod: huh?
17:13 NotFound You can't omit the () on function calls.
17:13 tulcod hm
17:13 tulcod sounds like that should be in the manual :P
17:13 moritz patches welcome.
17:13 purl i think patches welcome is ponies welcome or Set Objectives, Achieve Results! or swahili for "Put up or shut up."
17:14 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
17:14 tulcod are his responses automated as well?
17:14 Whiteknight yeah, he's a bot
17:14 tulcod yeah, i got that
17:15 NotFound purl: good bot
17:15 purl thanks NotFound :)
17:15 Whiteknight yeah, he responds based on input patterns
17:15 tulcod but i mean, does he collect the reactions on his own?
17:15 Tene purl: dance!
17:15 purl No, you dance, Tene. *ka-clik*
17:15 tulcod okay :)
17:15 Whiteknight tulcod: sortof
17:15 Tene tulcod: yes.
17:15 tulcod markov chains?
17:15 purl coral's taken the crack again
17:15 Whiteknight tulcod is asking questions
17:15 Whiteknight tulcod?
17:15 purl tulcod is asking questions
17:15 NotFound purl: take a cake
17:15 purl NotFound: sorry...
17:15 pmichaud purl: status?
17:15 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.
17:16 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)
17:16 NotFound He can't sing 'Daisy, Daisy' ?
17:16 Theory joined #parrot
17:16 moritz making it lean?
17:16 moritz or fear of name colissions?
17:16 pmichaud moritz: nqp's primary purpose is to make it easy to write parrot subs
17:17 pmichaud those subs tend to run in languages _other_ than nqp
17:18 pmichaud so it's good if nqp's runtime doesn't tend to interfere with that hll's.
17:18 pmichaud or, put another way, nqp wants *all* of its runtime to be dynamic :-)
17:18 moritz i know
17:18 pmichaud nqp is like a Perl 6 where all builtins have to be dynamically loaded.
17:18 tulcod hm
17:18 tulcod nqp.pbc doesn't get installed
17:19 tulcod 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"
17:20 tulcod aha :)
17:20 tulcod i think that should be default, then
17:20 pmichaud moritz: I would not be at all opposed to having people create runtime libraries for NQP that could be easily loaded, though.
17:20 pmichaud use NQP::Core;
17:21 moritz pmichaud: ok, good to know.
17:21 moritz (Though I don't plan any NQP hacking)
17:21 tulcod arrg
17:21 tulcod nqp.pbc isn't in like, the search path
17:21 Tene tulcod: eh?
17:21 Tene Which search path?
17:21 tulcod yeah, i expected that :P
17:22 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
17:23 pmichaud moritz: yes -- actions.pm does it.
17:23 szabgab joined #parrot
17:23 moritz pmichaud: i mean, from within normal Perl 6 code
17:23 pmichaud moritz: yes, from there too.
17:23 pmichaud since actions.pm is running from the .HLL-enabled Rakudo
17:23 Tene see #perl6 for example
17:23 tulcod lol @ nqp's coding style implications: say("hi"); works, but say ("hi"); does not :P
17:23 moritz ok
17:23 moritz tulcod: that's Perl 6.
17:24 Tene tulcod: A space between the function name and its ()s is not allowed in Perl 6.
17:24 tulcod are you seirous?!
17:24 Tene Yes.
17:24 tulcod wow... perl 6 *must* be the *greatest* lanugage ever!
17:24 pmichaud more precisely, the space turns the 'say' into a listop.
17:24 pmichaud it's not that spaces aren't allowed, it's that the parens are no longer function-call parens.
17:24 pmichaud say(1,2)   # two argument say
17:24 pmichaud say (1,2)   # one argument say
17:25 tulcod finally no more god**** discussions about whether you should or should not put a space in between
17:25 tulcod why haven't i started using perl earlier?
17:25 Tene And NQP doesn't support function calls without ()s.
17:25 pmichaud I'm thinking of adding listop form to NQP, though.
17:25 pmichaud We already allow paren-less method calls now (although I think only for the 0-argument case)
17:25 Tene pmichaud: if you're extending NQP, my first request would be allowing <>-quoted form on colonpairs.
17:26 Tene 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')
17:26 Tene I am!
17:26 Tene It's hardly a priority, though.
17:28 pmichaud well, the primary reason for supporting listops would be to avoid the stream-of-questions that we've just seen :-)
17:28 pmichaud (which happen quite frequently)
17:28 Tene Heh.
17:28 moritz maybe a good mention of them in README could also reduce them ;-)
17:29 pmichaud My experience is that things in README never are.
17:30 pmichaud afk, lunch
17:42 HG` joined #parrot
17:44 Theory joined #parrot
18:00 Whiteknight darbelo: ping
18:05 davidfetter joined #parrot
18:13 Andy joined #parrot
18:16 allison joined #parrot
18:19 davidfetter HAI
18:19 davidfetter anybody going to malaysia osconf?
18:19 darbelo joined #parrot
18:25 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 Util Disabling GC allows all lines to print. `./parrot -G parrot_config.pbc --dump`.
18:25 Util My build passes all tests in `make test`.
18:25 Util BTW, I do not see anywhere that we exercise parrot_config in t/*.
18:25 Util Can anyone duplicate the issue?
18:26 Whiteknight davidfetter: Nobody that I know of
18:27 jonathan Util: Any chance of a backtrace?
18:27 iblechbot joined #parrot
18:28 Whiteknight Util: and what's the patch?
18:28 purl We don't need no stinking patch!
18:28 Util jonathan: sure! 50 lines - do you just need part of it, or should I nopaste it all?
18:28 Whiteknight nopaste it all
18:29 NotFound nopaste lines are cheap
18:29 jonathan Util: the lot
18:29 jonathan 50 lines is fine. :-)
18:29 jonathan It's when people have 50,000 that I worry more. ;-)
18:29 moritz it's nearly #ps-time
18:29 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`
18:29 Whiteknight it's peanut butter #ps time
18:30 Whiteknight I see, young grasshopper
18:34 nopaste "Util" at 68.191.99.24 pasted "parrot_config.pbc backtrace" (94 lines) at http://nopaste.snit.ch/16609
18:35 chromatic joined #parrot
18:36 Whiteknight fperrad: you got parrot to build with llvm-gcc?
18:37 moritz actually that worked for me some time prior to 1.0, and then stopped
18:37 moritz but I never had the energy to track it down
18:38 jonathan Util: Oh gee, it's actually segfaulting *inside* the GC...
18:39 jonathan 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
18:40 jonathan Whiteknight: Yeah.
18:40 Whiteknight yeah, the IO system really utilizes it's PMCs
18:40 Whiteknight All the more reason to (1) get PCC optimized and (2) to get asynchronous IO working
18:40 jonathan Whiteknight: I'm wondering if the something inside PCCINVOKE maybe doesn't init the outer pointer or something...
18:41 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
18:41 jonathan Whiteknight: We probably often don't call 3 levels of PCCINVOKES...
18:42 chromatic It makes sense to me.  If there's an uninitialized struct member....
18:42 Whiteknight 0xbffff570, is that a protected address on darwin?
18:42 jonathan chromatic: I can only guess it normally gets initialized when doing stuff in PIR and the PCCINVOKE path leaves a junk value.
18:42 chromatic That could be.
18:42 Whiteknight or is does that PMC itself contain the bad pointer?
18:44 tulcod "UTF-8 will upgrade to UTF-16"
18:44 Whiteknight no, I take that back, 0xbffff570 is the bad address
18:44 tulcod isn't UTF-16 simply a different notation for UTF-8?
18:44 tulcod (or the other way around)
18:45 NotFound tulcod: are different encodings
18:45 tulcod yeah, but they can do the same thing, right?
18:45 jonathan oh ouch
18:45 tulcod a character in UTF-8 can be encoded in UTF-16, and vice versa
18:45 jonathan for (i = 0; i < ctx->n_regs_used[REGNO_STR]; ++i) {
18:45 jonathan obj = (PObj *)CTX_REG_STR(ctx, i);
18:45 jonathan if (obj)
18:45 jonathan Parrot_gc_mark_PObj_alive(interp, obj);
18:45 NotFound tulcod: for some values of "same thing"
18:45 jonathan It's that which is passing the bad pointer, it seems.
18:45 jonathan (Line 124 is that last one)
18:45 NotFound They encode
18:45 moritz tulcod: yes. Both can encode the whole Unicode repertoire
18:46 tulcod moritz: so how is it an "upgrade"?
18:46 tulcod i mean, they are just different encodings...
18:46 moritz tulcod: I don't understand that phrase either
18:46 tulcod it's from the manual
18:46 tulcod http://docs.parrot.org/parrot/lates​t/html/docs/book/ch03_pir.pod.html under "Strings: Encodings and Charsets"
18:47 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
18:47 tulcod it doesn't make sense, though
18:48 tulcod 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
18:48 davidfetter Whiteknight, d'oh. well, i'm going :)
18:48 moritz so it's an arbitrary choice
18:48 Whiteknight we just need them to be the same so we can combine them
18:49 tulcod hm
18:49 NotFound I'd like better utf32, but lots of people don't want the memory consumption
18:49 tulcod i thought perl would be a language based primarily logic
18:49 tulcod but it seems that's not the case
18:49 tulcod (yes, that's a joke)
18:49 moritz tulcod: perl != parrot
18:49 tulcod ah
18:49 tulcod sorry
18:49 tulcod s/perl/parrot/ :P
18:49 tulcod scrolling scrolling scrolling
19:02 Whiteknight pmichaud++
19:10 Util parrot_config issue update - I tried a fresh checkout, with no patches. It has the exact same problem.
19:12 bsdz joined #parrot
19:20 donaldh joined #parrot
19:23 ruoso joined #parrot
19:55 Whiteknight tewk: ping
19:56 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]
19:57 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?
19:57 pmichaud I might be able to create something with --target=PIR
19:59 chromatic That's easiest.
19:59 dalek rakudo: 595d364 | pmichaud++ | src/parser/grammar.pg:
19:59 dalek rakudo: Update =begin/=end handling slightly (RT #65782).
19:59 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​95d36425ae7787d4fb7b99708b8df20bdf51df5
20:00 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.
20:00 pmichaud 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.
20:02 chromatic Oh, I see.  Yeah.
20:02 pmichaud I'll try a few small benchmarks and see what I come up with.
20:03 pmichaud for those who want to try it at home, the switch is simply to change perl6.pir:13 from
20:03 pmichaud .macro_const RAKUDO_HLL 'perl6'
20:03 pmichaud to
20:03 pmichaud .macro_const RAKUDO_HLL 'parrot'
20:03 pmichaud that switches the compiler from running in the 'perl6' HLL to the 'parrot' HLL.
20:04 allison message fperrad I added lua to the language selection in Trac tickets
20:04 purl Message for fperrad stored.
20:13 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 http://nopaste.snit.ch/16611
20:15 jonathan omgwtf
20:16 cotto joined #parrot
20:16 PerlJam It's a good think rakudo is so slow that this phenomenon is blatant ;)
20:16 PerlJam s/think/thing/
20:18 pmichaud it appears to be the range-to-list that causes a lot of the slowdown.
20:19 pmichaud $ cat z
20:19 pmichaud (1..5000).list;
20:19 pmichaud $ time ./perl6-parrot z
20:19 pmichaud real0m4.344s
20:19 pmichaud $ time ./perl6-hll z
20:19 pmichaud real0m10.692s
20:19 PerlJam er ... wow.
20:20 pmichaud but not all of it.
20:20 purl i guess not all of it is read-only, right?
20:20 jonathan pmichaud: Did you try running the benchmark script I checked in on the two?
20:21 pmichaud jonathan: the benchmark script isn't running on my machine -- but I started with the benchmark just to see what happens
20:21 pmichaud (i.e., stole an example from there to begin with)
20:21 jonathan ah, ok
20:21 jonathan Isn't running? :-S
20:21 pmichaud it assumes the current directory is in my PATH, which it isn't.
20:21 * jonathan wonders what he could possibly have done wrong with it...
20:21 jonathan Oh
20:21 jonathan OK, some platforms are just odd.
20:22 pmichaud I'm guessing "perl6 ..." needs to be something like  "./perl6 ..."
20:22 jonathan ;-)
20:24 nopaste "pmichaud" at 72.181.176.220 pasted "Rakudo hll 'perl6' versus 'parrot' simple benchmark, #2" (15 lines) at http://nopaste.snit.ch/16612
20:25 pmichaud that should be good/simple enough.
20:25 pmichaud I'll post to parrot-dev
20:26 jonathan srslywtf
20:27 pmichaud yeah, not a lot there to indicate a slowdown.
20:28 pmichaud Some calls to a local sub and postfix:<++>
20:30 maximilian joined #parrot
20:32 maximilian does anybody here hack the grammer.pg and actions.pm files in emacs?
20:32 maximilian i'm working through the tutorial and the lack of proper indenting and highlighting is drving me a little crazy.
20:33 Tene pmichaud: you can see the difference in speed even with just "perl6 -e 1"
20:33 Tene which is a *bit* smaller than the spectests.
20:33 pmichaud Tene: sure, but most of that could be attributed to startup time.
20:33 moritz maximilian: in the pugs repo there is an (old) perl 6 syntax hilighter
20:34 Tene ah, you've been talking about it.
20:34 Tene I'm still catching up a bit. :)
20:34 maximilian moritz: does the older one work better?
20:34 pmichaud I'm more interested in something that demonstrates real runtime speed difference -- i.e., more than just startup cost.
20:34 moritz maximilian: dunno, I'm a vim user ;-)
20:34 pmichaud my latest nopaste is the one I'm going with.
20:34 moritz maximilian: http://svn.pugscode.org/pugs/util/cperl-mode.el if you want to try it
20:35 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
20:35 purl Message for sent stored.
20:35 pmichaud afk for a while
20:36 moritz maximilian: for vim there's http://github.com/hinrik/vim-perl which has quite good suport for both grammars and normal code
20:37 Infinoid Ok, I'm back.  How are we looking for the release?
20:37 maximilian moritz: appreciate it, thanks.
20:37 * Infinoid reads parrotsketch logs
20:40 chromatic Hm, lots more NameSpace marking in the HLL version.
20:41 chromatic 60% fewer PMCs created in the non-HLL version.
20:42 chromatic PMCProxy?
20:42 purl PMCProxy is probably basically Class for PMCs.
20:44 chromatic 87 PMCProxy PMCs created in non-HLL version, 14637 created in the HLL version.
20:46 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 allison chromatic: so, PMCProxys check to see if a proxy already exists before creating a new one
20:47 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().
20:47 allison chromatic: I'm guessing the check for existence checks the current hll, but stores the new proxy in the parrot HLL
20:47 Infinoid The changes summary tends to be fairly big with our release announcements
20:47 allison Infinoid: thanks
20:48 allison 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.
20:49 jonathan allison: Hmm, but all PMCs live in the Parrot namespace...
20:49 jonathan But yes, sounds like it's re-creating them every time or somehting.
20:49 dalek porcupinepascal: r71 | robin.ge++ | branches/oo-branch/ (9 files):
20:49 dalek porcupinepascal: * added split builtin
20:49 dalek porcupinepascal: * added dumper builtin
20:49 dalek porcupinepascal: * tweaked logger to open on close on each write
20:49 dalek porcupinepascal: * added httpd example
20:49 dalek porcupinepascal: review: http://code.google.com/p/porcu​pinepascal/source/detail?r=71
20:49 chromatic Parrot_oo_get_class_str() does create a new PMCProxy every time.
20:50 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
20:50 allison if you check, I'd bet 87 is the number of C PMCs in the system
20:50 chromatic I'm sure 87 is.
20:52 Tene there are 79 in src/pmc/*.pmc
20:52 Tene files, that is.  89 mentions of "pmclass"
20:52 Tene So, around there.
20:53 allison chromatic: line 157 of src/pmc/pmcproxy.pmc
20:54 riffraff joined #parrot
20:55 allison Tene: it would include the Rakudo dynpmcs
20:55 allison Tene: (if they're loaded)
20:55 chromatic Okay, but I'm looking at the trace now.  Parrot_oo_get_class_str() calls pmc_new_init() for PMCProxy 8,340 times.
20:55 * Tene nods.
20:55 allison so, it's not correctly finding the PMCProxys already created
20:56 allison 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:57 chromatic Looks like it.
20:57 chromatic 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.
20:58 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?
20:58 allison chromatic: must not be a namespace, then
20:59 allison but, init already calls set_class
20:59 allison that is, PMCProxy's init does
21:00 PerlJam never mind ... I'm somehow using the wrong parrot
21:04 nopaste "chromatic" at 72.90.115.31 pasted "PMCProxy PMCs created" (8400 lines) at http://nopaste.snit.ch/16614
21:06 cognominal joined #parrot
21:07 nopaste "chromatic" at 72.90.115.31 pasted "PMCProxy PMCs created, non-HLL" (72 lines) at http://nopaste.snit.ch/16615
21:07 chromatic It looks like the caching isn't working correctly.
21:13 dalek porcupinepascal: r72 | robin.ge++ | branches/oo-branch/ (3 files):
21:13 dalek porcupinepascal: * added request handler
21:13 dalek porcupinepascal: * improved detection of attribute variables
21:13 dalek porcupinepascal: review: http://code.google.com/p/porcu​pinepascal/source/detail?r=72
21:21 * Infinoid is having trouble deciding which commits are relevant enough to put in NEWS
21:26 allison Infinoid: generally larger feature additions go in, bug fixes or small changes don't
21:27 Infinoid Yeah, it's the middle-sized ones that I tend not to be sure about
21:28 Infinoid 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
21:28 allison if they're a long list, then just take the largest 5-6 of them
21:29 Infinoid cool, thanks.
21:29 Infinoid around 400 commits in total
21:29 allison the final news entry shouldn't have more than 20 or so items on it
21:30 allison some commits may be grouped together under one entry
21:31 Whiteknight joined #parrot
21:38 darbelo Whiteknight: pong
21:39 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 pmichaud we should identify classes by something other than strings.
21:39 Whiteknight oh hi darbelo
21:40 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
21:41 darbelo Crap. I forgot to blog.
21:41 kid51 joined #parrot
21:41 Whiteknight it sounded like you had some interesting lessons you've been learning about Parrot, and those are always helpful to share
21:41 Whiteknight haha, it's okay. I forget all the time too
21:42 Whiteknight Have we heard anything from tewk yet?
21:42 chromatic Identifying classes by STRINGs is definitely too expensive.
21:43 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
21:43 Infinoid I'm working on the NEWS entry right now (400 commits, such fun)
21:44 Whiteknight Infinoid: Thanks
21:44 bacek joined #parrot
21:45 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.
21:45 jonathan erm, not just unique
21:46 jonathan but canonical
21:46 purl rumour has it canonical is a company that eats babies
21:46 chromatic You have to get the Class PMC somehow.
21:46 jonathan tasty.
21:46 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)
21:48 allison purl: forget canonical
21:48 purl allison: I forgot canonical
21:48 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.
21:48 Whiteknight purl: our little PR nightmare
21:48 purl Whiteknight: huh?
21:49 Infinoid babies, huh?  I prefer kittens
21:50 allison chromatic: did you uncover any more details as you were digging?
21:50 allison chromatic: (as in, anything to hand off?)
21:51 * Whiteknight needs to get chromatics valgrind and kcachegrind crash courses
21:52 Infinoid That should be a wiki page, if it isn't already
21:52 chromatic Just those two log files I nopasted.
21:52 Infinoid Or a blog post or something
21:52 allison okay, I'll dig a little too
21:56 allison 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:58 dalek parrot: r38942 | whiteknight++ | trunk/NEWS:
21:58 dalek parrot: [NEWS] add GC-related news update
21:58 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38942/
21:58 bacek good morning
21:58 purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
21:59 Whiteknight good morning bacek
21:59 bacek Whiteknight:
21:59 Whiteknight bacek:
21:59 * bacek need coffee...
21:59 purl clowns'll eat me
22:01 Infinoid Oh, wow.
22:02 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
22:02 Infinoid 13633
22:02 Infinoid nm libparrot.so.1.2.0 | grep ' T ' | wc -l
22:02 Infinoid 1186
22:04 contingencyplan joined #parrot
22:05 dalek parrot: r38943 | allison++ | trunk/docs/project/ubuntu_packaging_guide.pod:
22:05 dalek parrot: [ubuntu] Some updates to the packaging guide from the most recent
22:05 dalek parrot: packaging.
22:05 purl packaging is, like, important, consider how you'll do this carefully before you do anything.. or very cool
22:05 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38943/
22:05 dalek parrot: r38944 | allison++ | trunk/ports/ubuntu/changelog:
22:05 dalek parrot: [ubuntu] Updating the date and PPA number from the most recent packaging.
22:05 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38944/
22:06 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?
22:06 Whiteknight fulltesting now, but I expect it to pass now
22:06 Infinoid I've got a separate diff to update the guide; parrot.spec no longer seems to exist
22:07 allison Infinoid: no need for the diff, just go ahead and commit when you're through
22:08 allison I'll look at PMCProxy instead
22:08 dalek parrot: r38945 | allison++ | trunk/docs/book/ch03_pir.pod:
22:08 dalek parrot: [book] Part way through the aggregate section edits on the PIR chapter.
22:08 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38945/
22:09 Whiteknight allison++ # great work on the book
22:10 Whiteknight 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
22:10 allison I'm only working on the PIR chapter at the moment, so all other chapters are fair game
22:11 Whiteknight well you've already been through chapters 1 and 2 right
22:11 Whiteknight ?
22:11 allison and, I try to commit regularly, to make it easier to coordinate
22:11 allison yes, chromatic and I have both been through 1 and 2
22:11 allison later chapters need more attention
22:11 Whiteknight okay, then I'll treat those two as sacrosanct for now
22:12 Whiteknight and I'm not doing any book work for a while, until my fulltest completes
22:12 allison more like "good enough"
22:12 chromatic There may be some =for author notes in chapters 1-3.
22:13 allison chapter 1 has none, and the two in chapter 2 are on my work
22:14 allison (the question of whether the later chapters should be dynpmcs and dynops, or just PMCs and ops)
22:14 allison (those two chapters are pretty thin, and may not make it into this edition of the book)
22:15 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
22:16 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
22:16 Whiteknight in the book?
22:17 allison aye
22:17 allison but, not this edition
22:17 allison (it's a developer guide)
22:17 Whiteknight okay, that's something to put in the todo list then
22:17 Whiteknight (as if I need another thing in my list)
22:19 allison well, it doesn't have to be your list, could be anyone
22:20 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:22 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.
22:22 Whiteknight not staking a claim, just expressing interest
22:22 * kid51 must call perlsemny meeting to order
22:22 Whiteknight chromatic: I'll write your novel. I don't offer warranties on my fiction work, however
22:23 Whiteknight 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:24 chromatic Sure, but teaching other people how to profile isn't paying work, which is what I most need right now.
22:25 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?
22:25 Util allison and pmichaud: the Trac ticket report you discussed on #ps is ready. Is it what you need? https://trac.parrot.org/parrot/report/16
22:28 allison Util: looks good
22:28 purl O_O
22:30 allison Util: you can skip the "force perl 6 to sort first" part
22:30 allison Util: ultimately more confusing than keeping it alphabetical
22:30 Util Will do
22:33 chromatic Infinoid, that's right.
22:34 eiro___ joined #parrot
22:35 dalek parrot: r38946 | allison++ | trunk/docs/book/ch02_getting_started.pod:
22:35 dalek parrot: [book] Delete the removed PASM chapter from the description.
22:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38946/
22:35 Infinoid chromatic: Awesome.  I want to help.
22:35 Whiteknight Infinoid: Where are you reading about htis?
22:36 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.
22:37 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!
22:37 Infinoid Whiteknight: It's usually mentioned whenever someone asks how to make JIT not suck.
22:37 Whiteknight okay, I was just wondering if there was a ticket
22:37 Util glad to help
22:37 chromatic Step one is the PMC PCT branch.
22:37 allison Whiteknight: it's purely experimental at the moment
22:37 Whiteknight yes, that branch is key
22:37 dalek porcupinepascal: r73 | robin.ge++ | branches/oo-branch/ (5 files):
22:37 dalek porcupinepascal: * added builtin to return a newline for sheer lazyness
22:37 dalek porcupinepascal: * added some headers to RequestHandler
22:37 dalek porcupinepascal: * checked for '()' following exit statement in grammar
22:37 dalek porcupinepascal: review: http://code.google.com/p/porcu​pinepascal/source/detail?r=73
22:37 darbelo allison: the strange output is from https://trac.parrot.org/parrot/ticket/665
22:38 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
22:38 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.
22:38 Whiteknight might be worth trying to draft up a PDD about this language first, before we start breaking code ground on it
22:39 chromatic Once we can make all of our PMCs work through nanoparrot ops, we can do something similar for the other ops files.
22:40 allison darbelo: thanks
22:42 allison darbelo: the tests need to be updated too, added a quick note to the ticket
22:46 allison Whiteknight: it may not even be possible, so the path is prototype, review, spec, implement
22:47 dalek porcupinepascal: r74 | robin.ge++ | branches/oo-branch/ (3 files):
22:47 dalek porcupinepascal: * added exists builtin
22:47 dalek porcupinepascal: * removed newline from readln
22:47 dalek porcupinepascal: review: http://code.google.com/p/porcu​pinepascal/source/detail?r=74
22:52 dalek parrot: r38947 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
22:52 dalek parrot: [pmc] Fix Integer.modulus for BigInt argument
22:52 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38947/
22:52 bacek chromatic: I've got good name for "nano-ops" - Level One Language
22:52 bacek or just "LOL" :)
22:52 Infinoid lolasm
22:53 bacek Infinoid: I fixed invocation of Integer.modulus. It failing in different way now...
22:54 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"?
22:54 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?
22:54 bacek Unix timestams!
22:55 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 parrot: r38948 | bacek++ | branches/tt452_reduce_mmd/src/pmc/bigint.pmc:
22:55 dalek parrot: [pmc] Don't use multi for BigInt.bitwise_shl
22:55 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38948/
22:56 bacek ah, ok
22:56 bacek seen tewk
22:56 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]
22:59 chromatic lol.ops... I dunno.
23:00 chromatic I like nanoparrot.ops because that's the minimal amount of Parrot that nanoparrot needs, especially when running embedded.
23:00 chromatic LOL is a much better acronym though.
23:02 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?
23:02 purl Message for andy stored.
23:02 Whiteknight I seem to remember that's expected
23:04 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
23:04 bacek :)
23:05 chromatic Where's STARTS THREE TIMES FASTER YOU UNGRATEFUL IMBECILES?  That's a nice speedup.
23:05 Whiteknight chromatic++
23:06 he Hm, anyone up for helping me debug a 0xdeadbeef de-reference while doing t/pmc/io.t?
23:06 he (on NetBSD/sparc64 5.0)
23:06 bacek chromatic++ # I'M GRATEFUL IMBECILE
23:07 chromatic Anyone who's grateful isn't an imbecile.
23:07 * Infinoid too; chromatic++ checked in a surprising number of performance improvements this month
23:07 Infinoid (even though I had to revert one... sorry)
23:07 chromatic he, there's a page on the wiki about debugging GC problems.  I can't find the link now.
23:08 Infinoid he: Got a backtrace?
23:09 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.  http://nopaste.snit.ch/16603
23:10 he yep, that's the one.
23:10 he vtable = 0xdeadbeef
23:10 he or, rather, pccinvoke_meth->vtable.
23:11 Infinoid Is it really safe to call Parrot_PCCINVOKE from within a destroy method?
23:11 chromatic Hm, that was a googlewhack.
23:11 chromatic It's safe, except that ... hey, look!  An order of destruction problem!
23:12 Infinoid I was afraid of that.
23:14 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:15 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
23:15 chromatic Anything that changes the order of PMCs in the pools will trigger it.
23:15 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.
23:16 he Re-testing now with an updated copy on 4.0.
23:18 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 #parrot
23:19 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?
23:20 chromatic We walk through the pools backwards first.
23:20 chromatic That's after a final GC run.
23:20 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 #parrot
23:21 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 Infinoid Or something.  Is it possible to make that fast/practical?
23:22 Infinoid 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.
23:22 Infinoid true.
23:23 chromatic Which isn't a bad thing either.
23:23 chromatic But it won't be quick or easy to implement.
23:23 chromatic bacek and cotto notwithstanding.
23:23 bacek what?
23:23 Infinoid Yeah, it's a lot of changed code
23:23 Infinoid bacek++: You are awesome.
23:24 bacek :)
23:25 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.
23:25 Infinoid Which would be a lot easier than the nasty linked list idea.
23:26 chromatic There's no stack though, unless you're talking about inspecting the C stack to traverse that graph leaves first.
23:26 chromatic It's those kinds of sentences that make non-programmers in my life claim I don't speak English.
23:26 Infinoid hah
23:27 Infinoid 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 Infinoid And it wouldn't work anyway, because there may still be some other object somewhere else which still depends on it, so nevermind.
23:28 chromatic Right.  It's a graph.
23:28 chromatic Possibly -- and often -- cyclic.
23:28 Infinoid You can spend a flag bit to skip the duplicates
23:29 Infinoid Though I don't know if you can break all of the cycles afterwards
23:29 tetragon_ joined #parrot
23:29 * bacek heard hummers are good at breaking stuff
23:30 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
23:30 chromatic Mostly it's not a problem.
23:31 chromatic We know that we have to destroy certain types of PMCs before other types of PMCs.
23:31 chromatic Maybe we need an "Ordered destruction" flag.
23:31 chromatic During the final pool sweeping, destroy everything without that set.
23:31 chromatic Then... magic happens... dunno.
23:32 Infinoid Would that be per-object or per-class?
23:32 bacek What if two PMCs have pointer to each other in ATTRs?
23:32 Infinoid A general way to say "destroy subs before namespaces" might be enough
23:32 nopaste "allison" at 76.191.198.74 pasted "patch to avoid duplicate proxy creation" (26 lines) at http://nopaste.snit.ch/16616
23:33 chromatic Destruction ordering is per-class, I think.
23:33 allison Could someone Rakudo-ish please test that?
23:33 chromatic I can test that.
23:34 chromatic Or I can punch up my dialogue in chapter 5.  Grr.
23:34 allison the test should be fast
23:36 chromatic ResizableStringArray: Can't shift from an empty array!
23:37 allison chromatic: what's that from?
23:37 chromatic ResizableStringArray: Can't shift from an empty array!
23:37 chromatic current instr.: 'parrot;ResizablePMCArray;list' pc 257113 (src/gen_metaop.pir:99) (src/gen_setting.pm:3122)
23:37 chromatic called from Sub 'perl6;List;!flatten' pc 6578 (src/classes/List.pir:237)
23:37 chromatic called from Sub 'onload' pc 11624 (src/builtins/globals.pir:31)
23:37 chromatic called from Sub '_block151' pc -1 ((unknown file):-1) (src/gen_setting.pm:3122)
23:37 chromatic That's from Rakudo-in-HLL with that patch applied.
23:38 allison I have no clue where that might be coming from
23:38 allison how about Rakudo out of HLL with the patch applied?
23:40 chromatic Works fine.
23:41 jonathan chromatic: You get that during the build?
23:41 jonathan Or when running the perl6 produced by the build?
23:41 allison why is ResizablePMCArray reporting an error from ResizableStringArray?
23:41 chromatic The latter.
23:42 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. :-|
23:43 Infinoid (And does that seem insane to anyone else?)
23:43 allison Infinoid: seems pretty typical
23:43 allison good velocity
23:43 Infinoid Yeah, the peak just before the commit seems crazy from a stability perspective tho
23:43 allison and, the last 4 days is nearly a week, so about a quarter of the commits in a quarter of the month
23:43 jonathan .oO( would more releases increate our average commit rate? )
23:43 Infinoid s/commit/release/
23:44 allison Infinoid: they're largely bug fixes, not feature additions
23:44 Infinoid I'm not complaining in any case, was just curious :)
23:44 jonathan allison: I can only ponder the the list method is declared on RPA and copied into RSA somehow...
23:44 jonathan allison: Or invoked on it.
23:45 jonathan That or the report is bogus.
23:45 Whiteknight I wonder if we should merge the PGE and NQP chapters into the PCT one
23:45 chromatic PGE no.  NQP probably.
23:46 jonathan chromatic: Out of curiosity, does running perl6.pir and/or perl6.pbc make a difference?
23:46 jonathan I'm expecting not...
23:46 allison Whiteknight: I split them out because they were too long
23:47 allison Whiteknight: they have plenty of content and importance to stand as chapters
23:48 Whiteknight okay, just double-checking
23:48 chromatic I haven't tried... seriously cramped for time at the moment.
23:48 jonathan chromatic: OK, no worries.
23:49 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'
23:49 chromatic Yeah, looks like it's not creating enough PMCProxy PMCs.
23:49 jonathan Ah, OK.
23:50 whoppix joined #parrot
23:50 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 jonathan It's failing *very* early, fwiw.
23:50 he hm, still succeeds in NetBSD/sparc64 4.0
23:52 allison jonathan: in Rakudo?
23:55 jonathan allison: Yeah
23:55 jonathan Seems so.
23:55 jonathan It's in the :load :init blocks so far as I can tell.
23:55 jonathan allison: If you have Parrot test fails too though, they're probably a better point to hunt the issue down.

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced