Camelia, the Perl 6 bug

IRC log for #parrot, 2010-05-29

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:00 chromatic Anything allocated anew after GC starts has to start on @live_objects then, right?
00:01 bacek grey_objects
00:01 bacek we have to remark them
00:01 bacek my $a; (start_gc); my @b = ($a);
00:02 chromatic I see.
00:02 bacek Or may be I'm too pessimistic and $a will be marked anyway.
00:02 bacek but for my @a; (start_gc); @a.push(PMC.new); we have to remark @a
00:03 chromatic If $a is reachable from a register, it will be.  If it's reachable from C, then tracing system areas should.
00:03 bacek especially is @a.push() executed in C
00:03 bacek s/is/if/
00:05 chromatic I'm curious to see this 1.01 byte O(log n) insertion skiplist.
00:06 bacek Me too.
00:07 bacek But it's kids day today.
00:07 chromatic That explains all of the meowing over here.
00:07 bacek I'll (hopefully) start hacking tomorrow.
00:07 bacek :)
00:07 bacek See you!
00:08 chromatic Let me know what you want me to work on.
00:08 bacek There is still "grey" area in my design about strings.
00:09 bacek May be we should split string allocator into separate class.
00:09 chromatic Do we need buffer compacting anymore?
00:09 bacek Yes.
00:10 * bacek definitely have to go
00:18 tetragon joined #parrot
00:19 shockwave joined #parrot
00:19 shockwave Howdy.
00:19 shockwave What's the process to convert a string to lower/upper case?
00:25 whiteknight is there a tolower/toupper opcode?
00:26 Tene you might check rakudo's Str.uc method
00:27 dalek rakudo: d42fd31 | jonathan++ | src/Perl6/Actions.pm:
00:27 dalek rakudo: The whatever currying was a little too liberal; after some labour I came up with
00:27 dalek rakudo: this patch to make it a tad more conservative.
00:27 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​42fd31473bc24a5989fb26717d1031a5d18537a
00:27 shockwave whiteknight: Thanks for the hint. I kept looking here:
00:27 shockwave http://docs.parrot.org/parrot/latest/htm​l/docs/book/pir/ch04_variables.pod.html
00:27 shockwave But forgot to look at the opcodes.
00:27 shockwave There is one.
00:28 shockwave whiteknight: Thanks
00:28 whiteknight nice
00:30 bubaflub_ joined #parrot
00:36 whiteknight bacek++
00:37 whiteknight purl msg bacek those code outlines for GC are extremely helpful. I should hae done that kind of layot a long time ago
00:37 purl Message for bacek stored.
00:38 whiteknight chromatic++ # links to llvm videos
00:39 ian_ joined #parrot
00:40 plobsing joined #parrot
01:07 plobsing ping cotto_work
01:17 jsut_ joined #parrot
01:22 dalek rakudo: a4dc280 | jonathan++ | src/Perl6/Grammar.pm:
01:22 dalek rakudo: Get our comment parsing more STD-ish by introducing the comment protoregex, and
01:22 dalek rakudo: add support for #`(...) to fix a regression from alpha.
01:22 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​4dc28061d1f0e13e914b849283776a84bafa911
01:33 kid51 joined #parrot
01:36 dalek nqp-rx: 3c60bf4 | jonathan++ | src/Regex/P6Regex/Actions.pm:
01:36 dalek nqp-rx: Fix a panic call, so we actually panic with the useful error message.
01:36 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/3​c60bf42e1bcb7375ad78348f4beefe13b476dd5
01:36 whiteknight panic? EVERYBODY PANIC?
01:37 plobsing everybody panic?
01:37 purl i heard everybody panic was http://web.archive.org/web/20070216080911/​http://www.autofrog.com/~chrisp/panic.gif
01:37 whiteknight jonathan's commit message was all about fixing panics
01:38 plobsing does distutils have a good way of compiling non-dynpmc, non-dynop parrot extensions?
01:39 whiteknight plobsing: what kinds of extensions are those/
01:39 whiteknight ?
01:39 plobsing C
01:40 whiteknight no, I mean what kinds of stuff does the extension do?
01:40 plobsing break parrot encapsulation so I can avoid writting a dynpmc
01:41 whiteknight where is the extension going to hook in?
01:41 plobsing I'm going to load the functions via NCI
01:41 whiteknight or are you just writing the functions and going to call in with NCI?
01:41 whiteknight okay
01:41 whiteknight I don't know if distutils supports that
01:42 plobsing I suppose I could convert them to ops, but it really doesn't seem worth it.
01:42 whiteknight meh, I'm sure distutils either does support it or can be made to do so easily
01:42 plobsing example: pmc_get_meta(PARROT_INTERP, PMC *obj) { return PMC_metadata(obj) }
01:42 whiteknight once you have the routines to invoke the compiler with the correct flags, thats 90% of the work
01:45 whiteknight the damn smolder server timeouts are shittacular
01:46 plobsing I don't see any pre-built functionality. I guess I'll have to roll my own out of the very nifty building blocks distutils provides
01:46 plobsing who do I talk to about adding stuff to distutils? yes, I have a commit bit, but I'm hopping someone out there has a coherent vision for this thing
01:47 sorear fperrad, I presume
01:47 whiteknight fperrad
01:47 gbacon joined #parrot
01:47 plobsing seen fperrad
01:47 purl fperrad was last seen on purl 4 days, 18 hours, 17 minutes and 44 seconds ago, saying: <private message>  [May 24 07:29:27 2010]
01:48 whiteknight what would even be the difference between a dynpmc and any other .so?
01:48 whiteknight let me look at the code and see what my stupid fingers and fuck up
01:49 plobsing none really. but it looks as though distutils hasn't consolidated compiling the C files from dynops and dynpmcs
01:52 whiteknight no, I guess not. but I can copy+paste as well as the next guy
01:52 plobsing IIRC, I rolled my own C extension building for one of the early iterations of libjit_fb.
01:52 plobsing I'll try and steal that.
01:53 plobsing and then point at it for a feature request
01:54 whiteknight parrot_config cc_flags should give you everything you need
01:55 whiteknight parrot_config ccflags
01:55 whiteknight gcc $(parrot_config ccflags) -o myfile.o myfile.c
01:58 whiteknight gcc $(parrot_config ccflags) $(parrot_config ccwarn) -o myfile.o myfile.c if you want all the warnings
01:58 eternaleye joined #parrot
01:58 kid51 make test, make buildtools_tests, make codetest PASS sat 47097
01:58 plobsing ccflags are relatively easy. I've found the linker to be my main opponent lately (witness how many times I've accidentally broken the windows build)
01:59 whiteknight ah, my old nemesis: the linker
02:00 whiteknight I've got a finger for whoever designed the interface to that piece
02:01 bubaflub a big thumbs up, whiteknight?
02:01 whiteknight I just try to blindly copy whatever commandline the makefile uses
02:01 whiteknight bubaflub: no, different finger.
02:01 whiteknight not nearly so positive
02:01 bubaflub hahahah
02:01 bubaflub i know, just goading you
02:01 whiteknight :)
02:01 plobsing afk # need potatoes
02:01 whiteknight PO-TA-TOES
02:02 bubaflub you know, boil em, mash em
02:02 whiteknight haha
02:06 whiteknight plobsing: parrot_config libparrot_soname, inst_libparrot_linkflags, and maybe link_dynamic
02:22 jimk joined #parrot
02:26 ian_ left #parrot
02:36 janus joined #parrot
02:41 shockwave joined #parrot
02:41 shockwave Howdy.
02:41 shockwave I'm looking at: http://docs.parrot.org/parrot/lat​est/html/src/ops/string.ops.html
02:41 shockwave But it doesn't jump out at me...
02:41 shockwave How can I convert an int to a string?
02:44 shockwave Wow, can it really be this easy: $I0 = 5; $S0 = $I0;
02:44 shockwave That's cool!
02:45 shockwave ok, thanks.
02:45 shockwave left #parrot
04:03 dalek parrot: r47099 | tcurtis++ | branches/gsoc_past_optimization/t/​library/pasttransformerdynamic.t:
04:03 dalek parrot: Add test for changing node types with PAST::Transformer::Dynamic.
04:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47099/
04:24 mikehh joined #parrot
04:31 dukeleto 'ello
04:36 plobsing hiya duke!
04:49 TiMBuS joined #parrot
04:58 * davidfetter wonders how much spice is going for per key these days
04:58 davidfetter dukeleto, any insights?
04:59 sorear per key?
04:59 davidfetter kilogram
04:59 purl kilogram is more than a pound, right? And 161 kph = 100 mph, right?
04:59 sorear oh
04:59 * sorear thought SPICE = an open source circuit simulator and key = license key, was confused
05:00 davidfetter heh
05:00 plobsing dukeleto: regarding your PL/Parrot errors, your code sample lacks '.loadlib "io_ops"'
05:00 plobsing so I'm somewhat surprised it compiled at all.
05:01 davidfetter plobsing++ for helping track this down :)
05:01 plobsing I did lead the push that caused it in the first place. I feel at least somewhat responsible.
05:03 davidfetter heh
05:08 plobsing of course ops_massacre is probably desirable to PL/Parrot. open opcode is now much harder to get at, easier to deny access to.
05:22 davidfetter :)
05:34 mikehh make corevm/make coretest FAILs - see: http://nopaste.snit.ch/20672 (same failures)
05:34 mikehh all other tests PASS (pre/post-config, smoke (#34116), fulltest) at r47099 - Ubuntu 10.04 i386 (g++)
05:34 mikehh t/op/exit.t - TODO passed:   6 in testf
05:38 plobsing mikehh: what exactly is failing there? is it the "./parrot pbc_to_exe.pbc pbc_to_exe.pbc"?
05:41 nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] mikehh, maybe this will resolve the issue" (20 lines) at http://nopaste.snit.ch/20704
05:42 mikehh plobsing: seems to be imcc syntax errors
05:43 mikehh eg first error - error:imcc:syntax error, unexpected PREG, expecting '(' ('$P2') in file 't/op/arithmetics_pmc.t' line 352
05:44 plobsing that is not what the nopaste you just pasted shows
05:46 mikehh the nopaste was the summary results
05:47 plobsing from what I see in the nopaste (triple checked), it doesn't even begin testing. it is a build failure ("make: *** [pbc_to_exe] Error 1")
05:47 mikehh bear in mind that the tests fail make corevm/make coretest as soon as I run make and then make test the tests pass
05:48 plobsing sounds like more .loadlib silent failure induced bugs
05:48 plobsing whu? I ran clean => corevm => coretest and everything worked
05:49 mikehh let me redo that and I will nmopaste some of failing tests
05:51 plobsing likely one of the dynops libs isn't being cleaned on make clean, lulling me into a false sense of security
05:52 mikehh did you run before or after your patch?
05:53 mikehh I usually run make realclean
05:53 plobsing after, but patch shouldn't fix things if they are as you described
05:53 plobsing corevm/coretest passed for me after svnclobber.
05:54 cotto plobsing, pong
05:55 plobsing I was wondering if those failures you were having persisted. It appears they do.
05:55 plobsing found my problem: installed parrot
05:56 cotto you mean the parallel build failures?
05:56 plobsing yes
05:56 cotto I'm still seeing those occasionally.
05:57 cotto The best way to test for them is just to run mj reconfig && mj && ... a bunch, so I don't do it too often.
05:57 cotto If you think you have a fix, I'll be glad to verify.
05:58 plobsing cotto: nope, no idea. your nopaste indicates a failure in pbc_to_exe compilation, which doesn't depend on any ops, so I'm not sure what's going on.
05:58 plobsing in fact, pbc_to_exe has very few deps
05:58 cotto Yeah.  that's why I nopasted instead of trying to fix it myself.
06:08 nopaste "mikehh" at 192.168.1.3 pasted "prove of first test failure - make corevm/make coretest" (15 lines) at http://nopaste.snit.ch/20705
06:12 nopaste "mikehh" at 192.168.1.3 pasted "prove of second test failure in make corevm/make coretest" (16 lines) at http://nopaste.snit.ch/20706
06:15 dalek parrot: r47100 | plobsing++ | trunk (2 files):
06:15 dalek parrot: fix t/op/arithmetics_pmc.t after ops_massacre
06:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47100/
06:15 dalek parrot: r47101 | plobsing++ | trunk (2 files):
06:15 dalek parrot: add tests removed in r47100 to dynops testing
06:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47101/
06:28 nopaste "mikehh" at 192.168.1.3 pasted "prove of next two failures in make corevm/make coretest" (46 lines) at http://nopaste.snit.ch/20707
06:31 eternaleye joined #parrot
06:31 mikehh plobsing: there are two more, slightly longer, do you want them
06:32 plobsing mikehh: no thanks. I can now reproduce the problem. Thank you for your assistance.
06:33 mikehh nearly commited your patch, let me clean up
06:34 plobsing not worthwhile
06:34 plobsing didn't address the right thing because I was confused as to the problem at the time
06:50 mikehh joined #parrot
07:05 dalek parrot: r47102 | plobsing++ | trunk (3 files):
07:05 dalek parrot: move bitwise String PMC tests over to dynops testing (outside of coretest)
07:05 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47102/
07:05 dalek parrot: r47103 | plobsing++ | trunk/t (2 files):
07:05 dalek parrot: move transcendental testing on Complex PMC to dynops testing
07:05 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47103/
07:09 chromatic http://blog.mozilla.com/tglek/2010/04/07/icegri​nd-valgrind-plugin-for-optimizing-cold-startup/
07:12 plobsing chromatic: are you posting that as relevant for Parrot's internal layout or PBC layout?
07:12 fperrad joined #parrot
07:13 bacek joined #parrot
07:15 dolmen joined #parrot
07:17 preflex joined #parrot
07:21 dalek parrot: r47104 | fperrad++ | trunk (2 files):
07:21 dalek parrot: [distutils] fix end of setup()
07:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47104/
07:21 dalek parrot: r47105 | plobsing++ | trunk (3 files):
07:21 dalek parrot: move dynops dependant test out of coretest
07:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47105/
07:21 dalek parrot: r47106 | fperrad++ | trunk/runtime/parrot/library (2 files):
07:21 dalek parrot: [distutils] workaround TT #1663
07:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47106/
07:22 cotto Some of those Mozilla hackers are pretty insane about finding performance improvements.
07:23 chromatic Internal layout.  I wonder if we can improve startup time with something like that.
07:28 dalek rakudo: 5940b25 | moritz++ | docs/ChangeLog:
07:28 dalek rakudo: [docs] update ChangeLog
07:28 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​940b2588a786e0c36324aa4d59e35968d7fcb05
07:54 fperrad_ joined #parrot
08:03 dalek nqp-rx: 3ce1fa3 | moritz++ | src/stage0/ (3 files):
08:03 dalek nqp-rx: update stage0 files
08:03 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/3​ce1fa3723390312352ae252c8565e768f9c4f59
08:12 dalek parrot: r47107 | moritz++ | trunk/ext/nqp-rx/src/stage0 (4 files):
08:12 dalek parrot: [nqp] update stage0 files
08:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47107/
08:28 JimmyZ joined #parrot
08:39 clinton joined #parrot
09:14 seatek joined #parrot
09:42 somebody_ joined #parrot
09:53 jsut joined #parrot
10:07 gbacon joined #parrot
10:21 whiteknight joined #parrot
10:25 whiteknight ggod morning, #parrot
10:37 dalek rakudo: 250adbb | pmichaud++ |  (5 files):
10:37 dalek rakudo: Initial fixes towards enabling Rakudo-specific Match objects.
10:37 dalek rakudo: Most things work, but there are still a couple of issues with
10:37 dalek rakudo: getting Match ~~ Positional to work (see src/core/Match.pm for
10:37 dalek rakudo: details).
10:37 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​50adbb1ccde9f953123468e3c1ddecbb75104a7
10:37 dalek rakudo: 3ac2d94 | moritz++ |  (5 files):
10:37 dalek rakudo: Merge remote branch 'origin/mob_pm'
10:37 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​ac2d94cb7e5f33b5c649d8669234f34d093962e
10:37 dalek rakudo: f58bca2 | moritz++ | build/ (2 files):
10:37 dalek rakudo: remove some setting left-overs from alpha
10:37 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​58bca26f62022fb33aadd3694ba100189114582
10:37 dalek rakudo: f743dca | moritz++ | build/gen_ (2 files):
10:37 dalek rakudo: [build] remove two fossile Perl scripts
10:37 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​743dcafae603b1ab304911e0577efcddd681691
10:44 lucian joined #parrot
11:24 dalek rakudo: bbb336a | moritz++ | src/core/Match.pm:
11:24 dalek rakudo: make Match.list and Match.hash return Perl 6 objects
11:24 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​bb336a173b8bd5b740e7a4f10aea535fd38615a
11:32 fperrad_ joined #parrot
11:53 whiteknight I see my email about ns_func_cleanup branch has been read, and filed away, by mr. Warnock
11:54 whiteknight under the assumption that somebody would mentioned any objections, my email is assumed to have complete support and agreement from the community :)
11:59 fperrad joined #parrot
12:05 dalek parrot: r47108 | whiteknight++ | branches/oo_func_cleanup:
12:06 dalek parrot: creating a branch to cleanup the <s>garbage</s>code in src/oo.c
12:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47108/
12:06 dalek parrot: r47109 | khairul++ | failed to fetch changeset:
12:06 dalek parrot: Sync with trunk
12:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47109/
12:06 fperrad_ joined #parrot
12:21 cognominal joined #parrot
12:23 dolmen joined #parrot
12:26 Themeruta joined #parrot
12:47 joeri joined #parrot
12:47 * NotFound_gf thinks about reverting the conversion to dynops unless someone design a quickly doable way of sane dynop loading.
13:00 JimmyZ joined #parrot
13:02 whiteknight the block starting at src/oo.c:189 makes absolutely no sense
13:03 whiteknight NameSpace.get_pmc_keyed_int returns a vtable Sub
13:05 whiteknight And then from there I have no idea how Parrot_get_namespace_keyed is supposed to work on a Sub (which is probably PMCNULL) in most cases
13:06 whiteknight the more I look at this, the more I suspect this function only works by accident
13:08 NotFound_gf whiteknight: some days I think that about the full parrot codebase.
13:09 NotFound_gf Today, for example.
13:10 whiteknight NotFound_gf: no, there are several parts of it that make some sense. This absolutely does not
13:10 whiteknight Probably why this function has never been succesfully refactored, because it doesn't do what it claims to do, and then is broken on top of it
13:13 whiteknight anyway, it's time to go. I'll fight with this nonsense later
13:17 Hunger joined #parrot
13:28 * darbelo starts thinking about adding some more dynops.
13:33 hudnix joined #parrot
13:37 dalek website: smash++ | call for Parrot foundation members applications
13:37 dalek website: http://www.parrot.org/news/call-par​rot-foundation-members-applications
13:41 jsut_ joined #parrot
14:18 JimmyZ 7,14 Oh hai
14:20 JimmyZ 7,14 Oh hai
14:23 darbelo o/
14:42 Themeruta joined #parrot
14:48 dalek rakudo: 9085183 | jonathan++ | src/Perl6/Actions.pm:
14:48 dalek rakudo: Tweak some name canonicalization/non-canonicalization bits for R[R[-]] style
14:48 dalek rakudo: things. Fixes RT#75402.
14:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​085183cde6de0c0cef6ebea8c324937b4185522
14:48 dalek rakudo: f2896c3 | jonathan++ | src/ (2 files):
14:49 dalek rakudo: Rename notresults to negate, to be in line with S03.
14:49 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​2896c3f43148b407d77bb84303ca7cad1de8c97
14:49 dalek rakudo: 8c14284 | moritz++ | src/core/Match.pm:
14:49 dalek rakudo: [Match] .caps and .chunks
14:49 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​c142841c3db54820a185957248e32e577b767ad
14:52 tetragon joined #parrot
14:54 dalek rakudo: ffb9a36 | pmichaud++ | build/Makefile.in:
14:54 dalek rakudo: YOU_ARE_HERE wants to be last in the core setting (jnthn++).
14:54 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​fb9a368a45594640546f1e31c92b78b3a82347e
15:28 patspam joined #parrot
15:35 dalek rakudo: c491a18 | pmichaud++ | src/core/operators.pm:
15:35 dalek rakudo: Enable &prefix:<?> to work on foreign objects.
15:35 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​491a184fa347d130f3b35b6c176c4dd1d56f0fa
16:39 tcurtis joined #parrot
16:40 contingencyplan joined #parrot
16:46 dalek parrot: r47110 | darbelo++ | branches/gsoc_nfg/src/string (3 files):
16:46 dalek parrot: Separate the grapheme-related definitions from other Unicode data.
16:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47110/
16:46 dalek parrot: r47111 | darbelo++ | branches/gsoc_nfg/MANIFEST:
16:46 dalek parrot: Upate MANIFEST.
16:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47111/
16:46 dalek parrot: r47112 | darbelo++ | branches/gsoc_nfg/src/string/grapheme.h:
16:46 dalek parrot: [CAGE] Add svn props.
16:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47112/
17:19 dalek parrot: r47113 | jonathan++ | trunk/compilers/pct/src/PCT/HLLCompiler.pir:
17:19 dalek parrot: [pct] Allow compilers to implement a .backtrace method to produce their own format of backtrace to print in the event of an uncaught exception. If not, we just fall back to Parrot's own handling.
17:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47113/
17:19 dalek parrot: r47114 | tcurtis++ | branches/gsoc_past_optimization/t/​library/pasttransformerdynamic.t:
17:19 dalek parrot: Fix changing node type test.
17:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47114/
17:30 mariano joined #parrot
17:43 _shockwave joined #parrot
17:44 _shockwave purl paste
17:44 purl somebody said paste was (see: nopaste) or like glue but a little safer to sniff. or http://nopaste.snit.ch:8001/ or http://scsys.co.uk:8001/ anywhere shadowpaste is or mmm, sticky paste or You there! Eating the paste. or <see> 2 girls, 1 paste or App::Nopaste or toxic for bots and humans
17:44 dukeleto msg plobsing io_ops did not fix the problem
17:44 purl Message for plobsing stored.
17:45 dukeleto no, going to yapc::na 2010 is qw(jhannah rbuels cfedde apeiron dha nacmac dhoss mst chargrill kyriel triddle DrForr coke packy kolibrie colomon jasonmay arcanez dylan doy ology waltman autarch pmichaud atrodo)
17:45 purl okay, dukeleto.
17:47 _shockwave Hello.
17:48 dukeleto shockwave: howdy
17:48 shockwave I had some code that used to work in 2.3 -- I just updated and it broke. I know where IMCC says it's broken, but I'm not sure why.
17:48 shockwave http://nopaste.snit.ch/20723?ln=on
17:48 shockwave Line 32
17:48 shockwave I just updated from Trunk like 5 mins ago.
17:49 dukeleto shockwave: bxors became a dynop
17:49 dukeleto shockwave: you will need .loadlib "bit_ops", i think
17:49 moritz .loadlib 'bit_ops' or so
17:49 shockwave I don't understand the difference. Is there a place that talks about what a dynop means?
17:50 dalek plparrot: 47b805f | dukeleto++ | ROADMAP:
17:50 dalek plparrot: Cleanup the ROADMAP
17:50 dalek plparrot: review: http://github.com/leto/plparrot/commit/4​7b805fb2c38579219f3bd07b67bf5c82810e23f
17:50 dalek plparrot: 30b49fc | dukeleto++ | Makefile:
17:50 dalek plparrot: Always regenerate plparrot.h when compiling
17:50 dalek plparrot: review: http://github.com/leto/plparrot/commit/3​0b49fc3d9b7a24b495426088a4ca4b4fbcd3474
17:50 dalek plparrot: 71434f3 | dukeleto++ | Makefile:
17:50 dalek plparrot: Regenerate headers when compiling
17:50 dalek plparrot: review: http://github.com/leto/plparrot/commit/7​1434f3295380a6274f1c63c31d63fd7901369eb
17:50 dalek plparrot: 6da6549 | dukeleto++ | plparrot (2 files):
17:50 dalek plparrot: Load io_ops, since many ops became dynops recently
17:50 dalek plparrot: review: http://github.com/leto/plparrot/commit/6​da654910a7f29045cdf031c0ee754e8ca45c19f
17:50 dukeleto shockwave: yes, dynop = dynamically loadable opcode
17:50 moritz shockwave: it's like a module that, when loaded, provides some new opcodes
17:50 shockwave Oh, a 'dynop' is just something that has to be loaded.
17:50 shockwave moritz: yeah, you beat me to my guess :)
17:50 dukeleto shockwave: dynop is like loading a perl 5 module that overrides builtin functions
17:50 * moritz tries hard not beat people
17:51 dukeleto shockwave: except certain non-core parrot opcodes were made dynops, so unless you load the dynop, they don't exist
17:52 shockwave In the docs page, is there a way to tell if something is a dynop, and if so, from where to load it... or is it generally a try/fail/ask kinda thing?
17:52 moritz shockwave: the deprecation document that comes with parrot 2.3 should list those that were planned to be (re)moved
17:53 shockwave moritz. ok
17:53 dukeleto shockwave: there should be a nice doc that explains where they all are
17:53 dukeleto shockwave: if there isn't, please make one :)
17:53 shockwave I also see a bit.ops at the top the page.
17:53 shockwave Hopefully, there is a correlation between the location and that filename.
17:54 shockwave On more question, if you guys don't mind: What's the speed inpact on making things dynops, as opposed to built-in?
17:54 dukeleto shockwave: http://en.wikibooks.org/wiki/Parrot​_Virtual_Machine/Run_Core_and_Opcod​es#Dynops:_Dynamic_Opcode_Libraries (slightly outdated but still useful)
17:54 moritz shockwave: I generally search for an op in parrot's t/ directory, and see what .loadlib line the files include :-)
17:55 dukeleto shockwave: foo.ops => .loadlib "foo_ops", i think
17:55 dukeleto shockwave: the .ops file is the source of what you .loadlib, if that makes sense
17:56 shockwave Yep. Thanks alot, guys. I appreciate the thorough help.
18:05 particle joined #parrot
18:06 shockwave Hey, guys. Thanks for the help, again.
18:06 shockwave The program is running fine again.
18:06 shockwave But, now I'm wondering. Where are these libraries located?
18:06 shockwave When I distribute the application, is having libparrot enough?
18:07 dukeleto shockwave: they are installed with an installed parrot
18:07 shockwave dukeleto: So, when I distribute my app using parrot... I'll be distributing other .dlls besides libparrot.dll?
18:07 dukeleto Would any PaFo members like to nominate me for the PaFo board? I think I have coke++ as my first nomination, need one more.
18:08 dukeleto shockwave: good question, not sure
18:09 japhb joined #parrot
18:09 shockwave Ok. I see something at runtime/parrot/dynext which is full of DLLs matching some of the names I just used. My guess that's it.
18:12 dalek rakudo: 46e2b53 | jonathan++ | build/PARROT_REVISION:
18:12 dalek rakudo: Bump to latest Parrot to get a fix and an improvement.
18:12 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​6e2b53906a5f25d0990a947194d7b304cdf939b
18:12 dalek rakudo: 6afdfbd | jonathan++ | src/metamodel/RoleToRoleApplier.nqp:
18:12 dalek rakudo: Stringify methods to get the name rather than .name them; we do that in other
18:12 dalek rakudo: bits of the metamodel, to RoleToRoleApplier should be consistent.
18:12 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​afdfbd6dd4157e224202d0f4622b5e4b42af832
18:13 cotto dukeleto, yes
18:19 jsut joined #parrot
18:24 dalek rakudo: 9de1eba | moritz++ | src/builtins/ (2 files):
18:24 dalek rakudo: use Perl 6 arrays in Match objects
18:24 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​de1eba437841f9969c66823d0e82130175b2ebd
18:28 shockwave left #parrot
18:33 dukeleto cotto++
18:39 plobsing joined #parrot
18:41 dalek rakudo: 401d2d0 | moritz++ | src/core/Match.pm:
18:41 dalek rakudo: remove workarounds in Match.caps
18:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​01d2d0e5d67d83b73b9be0f4a32fbe59dcb1f02
18:59 dalek rakudo: 418e795 | moritz++ | src/core/Match.pm:
18:59 dalek rakudo: remove an outdated comment in Match.pm
18:59 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​18e79560bfd82c43f7f75d6f9d6b69789fe708a
19:10 joeri joined #parrot
19:19 dalek nqp-rx: 416e5b4 | moritz++ |  (2 files):
19:19 dalek nqp-rx: match objects should never have negative .chars, even if the match fails
19:19 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/4​16e5b4fd46cc4d36640b23dff38a06aa11445bb
19:21 whiteknight joined #parrot
19:26 * darbelo resists the urge to completely break strings.
19:28 cotto You're normally so enthusiastic about that sort of thing.
19:29 darbelo Yeah, but I'd rather get the grapheme tables working first.
19:31 darbelo Once I get that out of the way... parrot_string_t is going to get pruned.
19:32 dalek parrot: r47115 | tcurtis++ | branches/gsoc_past_optimization (2 files):
19:32 dalek parrot: Fix issue in pastcompare and add test for deleting nodes with PAST::Transformer::Dynamic.
19:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47115/
19:35 darbelo I think I can make that two (maybe three) pointers smaller.
19:38 Andy joined #parrot
19:48 dalek parrot: r47116 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
19:48 dalek parrot: Try to pre-normalize incoming strings as much as possible.
19:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47116/
19:49 cotto ops2c is quite a bit faster after the ops cull
19:49 cotto plobsing++
19:49 plobsing heh. you're probably the only person happy about that right now
19:50 cotto You're just uncovering existing problems.
19:50 cotto better sooner than later
20:11 LoganLK joined #parrot
20:21 particle joined #parrot
20:27 dalek rakudo: c0bcaf0 | moritz++ | t/spectest.data:
20:27 dalek rakudo: run another S05 spectest file
20:27 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​0bcaf07aed3066f7fc83bffc3a431717d335d28
20:27 dalek rakudo: e6dfd1d | moritz++ |  (2 files):
20:27 dalek rakudo: implement smartmatching of arrays and hashes against regexes; add a few more
20:27 dalek rakudo: passing test files
20:27 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​6dfd1df56c7fae48cddef15390c690ee5008c7d
20:37 whiteknight joined #parrot
20:42 tcurtis pmichaud: I'm about to leave the house, so I won't be able to read your response to this until a while later. First: a question, would it be acceptable if I included a summary of our conversation from Thursday in my next blog post?
20:42 tcurtis pmichaud: Second: concerning the idea of PCT-like grammars for PAST optimizations, a key difference is that with optimization, your input is already structured in such a way that some transformations will be valid regardless of where in the tree they're performed, so long as they are operating on a subtree with certain characteristics.
20:42 tcurtis pmichaud: So, unlike grammars where you have a top-level rule that builds upon other rules that match portions of the desired result, you have a number of generally independent(though possibly sometimes affected in effectiveness by order ran) rules.
20:42 tcurtis pmichaud: Optimization "grammars" being similar in basic structure to PCT grammars is still appealing, but "grammar" might not be the best name. What do you think?
20:44 dalek rakudo: f514389 | moritz++ | t/spectest.data:
20:44 dalek rakudo: re-enable 4 test files
20:44 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​51438949136cd024f72636f696f50c091297455
21:02 whiteknight interp->HLL_namespace is a hash, not a namespace
21:03 whiteknight and interp->class_hash is a namespace, not a hash
21:03 whiteknight I love this code with all my heart
21:08 mariano joined #parrot
21:08 cotto Not that it invalidates your point, but interp->HLL_namespace looks more like an rpa
21:09 whiteknight oh, right. sorry. HLL_namespace is an RPA
21:09 whiteknight what is also boggling my mind is that code is using a namespace PMC as a key to look up a namespace in a namespace
21:10 whiteknight like, you can't use a Key or an RSA for the purpose?
21:10 cotto seriously?
21:10 purl is that for real?
21:11 whiteknight check out src/oo.c, the block starting around line 206
21:11 cotto not that I'm very surprised, but wow
21:11 whiteknight I took out the special case "this is a hack" code, and the first type that came through there and threw an exception was NameSpace
21:12 whiteknight and that lovely bit of magic is happening inside pbc_to_exe.pir
21:25 dalek rakudo: 5c62b61 | moritz++ |  (2 files):
21:25 dalek rakudo: implement Match.perl; fix Match.ast to return Any if not set (not Undef)
21:25 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​c62b61ee886172070a5eb7ee2fbb61f4bddd478
21:25 chromatic joined #parrot
21:26 chromatic Anyone want to remove some 35-40% of opcodes without losing any features?
21:26 cotto What's the catch?
21:26 purl the catch is the new laptop comes with a metal rod in the side that pops out. You set the CPU speed by adjusting a metallic slider on the rod.
21:26 chromatic Step one: make all register numbers in PBC signed.
21:27 chromatic Step two: make all references to constants (INTVAL, STRING, NUM, PMC) negative offsets in the constant tables.
21:27 chromatic Step three: update the register access macros to check for negative register indices and look in the constant tables.
21:27 chromatic Step four: remove all _ic, _pc, _nc, _sc opcodes.
21:27 chromatic Step five: look, the ops fit better in the icache!
21:28 sorear But you pay for it with bigger register access code and more conditional branches.
21:28 plobsing chromatic: that's why I want to add constant unfolding to IMCC
21:29 chromatic Constant unfolding?
21:30 plobsing add_i_ic_ic becomes set_i_ic set_i_ic add_i_i_i
21:30 plobsing opposite of constant folding
21:30 plobsing note that your proposal doesn't quite fit with the fact that intval constants are currently inlined in bytecode
21:31 plobsing although I think it is a good way forward
21:33 sorear How about subtyping?  If IMCC sees an ic value, but the only instruction variant is p, it automatically generates coercion code
21:33 plobsing sorear: that is the exact *opposite* of the direction we want IMCC to go. IMCC should become *less* smart
21:34 sorear It's worse than constant unfolding?
21:34 plobsing it is somewhat equivalent except it now has to deal with HLL mappings
21:35 sorear ah, yes
21:35 plobsing also what happens when an HLL mapped Integer addition calls low-level INTVAL addition with constants? infinite recursion.
21:36 whiteknight --no-line-directives doesn't appear to be having any effect when I pass it to Configure.pl
21:36 plobsing auto-coercing in non-obvious places is unintuitive
21:36 whiteknight ...which is really really screwing up my debugging
21:45 plobsing I am currently working on getting dynext's to play nice together in PBC, but if you'd like I could switch over and work on getting the unfolding working. Then it would be a SMOP to get opsc to not emit constant variants of all but a select few, specially marked ops.
21:46 cotto dynexts are probably more important atm
21:46 cotto nothing's on fire because we have too many constant variant ops
21:47 * plobsing considers adding an hcf_ic op to prove cotto wrong
21:47 cotto We used to have an hcf op.  I was sad to see it go.
21:47 plobsing resurect it as a dynop!
21:49 sorear cotto: what did it do?
21:51 bubaflub joined #parrot
21:51 * cotto digs
21:54 cotto It called abort().
21:55 cotto and it was a dynop
21:55 cotto http://trac.parrot.org/parrot/ticket/790
22:00 dalek rakudo: 9581e6a | moritz++ | src/core/Match.pm:
22:00 dalek rakudo: fix Match.caps again; I have no idea why it's a fix, but it is. Weird.
22:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​581e6a8b8d98a2e6bd81feb802c5e0271fda13a
22:01 sorear cotto: http://trac.parrot.org/parrot/changeset/28001
22:02 plobsing an advantage of constant unfolding over magical negative registers are constant indices: it makes the meaning of ops simpler for anything that analyses PBC (JIT, dumper, pbc_to_pbc optimizer, etc)
22:04 chromatic I'm not sure about it.
22:04 chromatic I'd like to see benchmarks and example code.
22:05 plobsing Not sure about it being simpler or not sure about whether it is worthwhile?
22:06 chromatic Both.
22:06 chromatic Simpler is easier to believe.
22:07 plobsing the first I think I can demonstrate right now. the second will take some work.
22:07 chromatic One lesson from Perl 5 is that the more ops you dispatch, the slower your program goes.
22:07 chromatic There's no linear correspondence, but there's a strong correlation.
22:08 plobsing I'll agree with that. And for hot ops, I think it would be a good idea to have constant variants
22:08 plobsing but making every op handle both const and non-const arguments adds complexity to the behaviour of each op
22:09 plobsing this complexity shows up not only in the code for running the op, but also in all code that analyses ops, which must now check for negative arguments in analysing what the ops mean
22:12 chromatic Are you suggesting that we should make only a few ops handle constants?
22:12 plobsing yes.
22:12 chromatic That seems workable.
22:22 whiteknight this src/oo.c code is basically intractable
22:26 whiteknight trying to fix this, I've seen almost every exception in the book, segfaults, and now miniparrot hangs
22:32 whiteknight this code is so stupid, and everything in the world relies on the stupidity in extremely weird ways
22:34 whiteknight forget it, dinner time
22:34 purl whiteknight, I didn't have anything matching it, dinner time
22:39 jrtayloriv joined #parrot
22:40 jrtayloriv 6
22:40 * jrtayloriv oops! ... joins #perl6 as he initially intended
23:00 Psyche^ joined #parrot
23:24 davidfetter joined #parrot
23:40 dalek parrot: r47117 | jonathan++ | trunk/src/ops (2 files):
23:40 dalek parrot: [core] First step towards trying to get some better annotations returned by .backtrace(). We rely on the context's ->current_pc pointer to know a context's current code location but never actually update it (unless we're in the profiling core) other that at sub entry. Makes some sense, since it'd cost us to do it every op. Doing it before an invoke, however, is enough to ensure that we know the callsite location, which is a big improvement to the back
23:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47117/
23:48 lucian_ joined #parrot

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

Parrot | source cross referenced