Camelia, the Perl 6 bug

IRC log for #parrot, 2011-03-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:00 dukeleto see y'all laters
00:00 whiteknight soh_cah_toa: we probably need to fill in a form. I'll look at that tonight
00:01 whiteknight soh_cah_toa: how are you doing? Are you interested in doing GSoC work with Parrot?
00:01 soh_cah_toa i sure am!
00:02 soh_cah_toa i've been getting my parrot on. reading the developer wiki. playing around with pasm/pir
00:02 whiteknight awesome! what kinds of things are you interested in?
00:03 soh_cah_toa well i see the taptinder project is looking for perl 5 developers which interested me but i don't know much about taptinder
00:03 whiteknight mj41 is the grandmaster of taptinder.
00:04 whiteknight basically, it's a tool that Parrot wants very much: An automated testing and reporting system
00:04 cotto_work whiteknight: shouldn't people interested in helping our automated testing infrastructure be working on jitterbug?
00:05 whiteknight let's say I have a math library, that I'm using in my own custom library from Rakudo Perl 6. If Parrot changes something and my library breaks, taptinder can help identify when that broke and what part of the dependency chain is broken
00:05 cotto_work I thought taptinder was pretty solid already
00:05 whiteknight cotto_work: mj41 says it needs work to support parrot better
00:06 cotto_work whiteknight: isn't that what jitterbug will be for?
00:06 whiteknight jitterbug is a project that we need too, in which case you talk to dukeleto
00:06 cotto_work msg dukeleto Is there anything I can do to help complete PaFo's GSoC org profile?
00:06 aloha OK. I'll deliver the message.
00:06 whiteknight cotto_work: I can't keep track of what all tools we are using
00:07 soh_cah_toa okay, pretty neat
00:09 * cotto_work goes home
00:10 marcel_r Hi all.
00:10 soh_cah_toa the debugger project seemed interesting as well
00:11 marcel_r I'm another student interested in contributing to Parrot during GSoC.
00:11 soh_cah_toa hey, me too!
00:12 marcel_r soh_cah_toa: Cool!
00:13 marcel_r whiteknight: Where can we find more information about the debugger project?
00:13 whiteknight marcel: right here. All you have to do is ask!
00:13 whiteknight marcel_r: Parrot has a debugger right now, but it's very broken
00:13 whiteknight and it's old
00:14 whiteknight and there are spiders
00:14 soh_cah_toa i was just gonna ask that
00:14 soh_cah_toa where is it? i just compiled parrot and i can't find it
00:14 soh_cah_toa is it a switch or a seperate binary?
00:14 whiteknight frontend/parrot_debugger/*
00:15 soh_cah_toa tada! thanks
00:15 whiteknight Parrot basically is libparrot. All the real guts of it are in that library
00:15 whiteknight so the parrot executable and parrot_debugger are just small frontends over libparrot
00:15 whiteknight Last year for GSoC a student made a project called Parrot-Instrument.
00:15 soh_cah_toa yeah, i just saw that in the wiki
00:15 whiteknight Parrot-Instrument is a series of tools for interacting with Parrot while it's running
00:16 whiteknight Parrot-Instrument is a little bit broken right now too, but shouldn't take too much work to fix
00:16 soh_cah_toa is it in the source package?
00:16 whiteknight once we fix it, it can be used for making a nice debugger pretty easily
00:17 whiteknight it's a separate project. Let me find a link
00:17 whiteknight https://github.com/Whiteknight/parrot-instrument/
00:21 soh_cah_toa great, thanks. i'll take a look
00:21 bubaflub joined #parrot
00:22 bubaflub dukeleto: i saw that both Perl and Parrot got accepted to GSoC - good work!
00:22 whiteknight marcel_r: What are your interests?
00:24 marcel_r I'm interested in VMs in general. I'm the developer of a small programming language ( http://code.google.com/p/zap/ ).
00:24 marcel_r Parrot looks very nice, although I have little familiarity with it.
00:25 marcel_r The debugger and profiler projects would be cool to work on.
00:30 soh_cah_toa i've known about parrot for a while but didn't become that interested until i listened to a podcast on floss weekly about it
00:30 soh_cah_toa that was maybe a few months ago
00:36 whiteknight soh_cah_toa: I don't think I heard anything about a podcast. Do you have a link or anything?
00:36 whiteknight marcel_r: oh, okay, so you're familiar with VMs and compilers already. That's a good start
00:37 soh_cah_toa http://www.twit.tv/floss140
00:37 whiteknight soh_cah_toa++
00:37 soh_cah_toa it was on rakudo but it talked about parrot obviously
00:37 whiteknight oh, nice
00:38 whiteknight marcel_r: the great thing about Parrot is that it's so expansive. You can do something related to compilers and VMs, or you can do something related to languages, libraries, etc
00:39 cotto ~~
00:40 whiteknight marcel_r: zap looks fun. Very minimalist
00:40 marcel_r I'm also interested in the possibility of running Python on Parrot.
00:41 marcel_r Yeah, you could not use a better word for it: minimalist.
00:41 soh_cah_toa doesn't it already support pythong? pynie?
00:41 soh_cah_toa *python
00:41 whiteknight there is a project called Pynie which was python on Parrot
00:41 whiteknight it's broken and sort of abandoned.
00:42 whiteknight lucian is another GSOC student who is talking about rewriting it. Allison is probably going to mentor that project. She might be interested in related projects too
00:42 marcel_r Interesting.
00:43 bubaflub left #parrot
00:43 marcel_r To be honest, I'm afraid of writing much Pearl code, since I'm still learning it.
00:44 whiteknight Python really needs a few things: It needs a compiler to parse the syntax, but it also is going to need a proper object model (to implement classes and objects), and also a runtime library
00:44 marcel_r So if Parrot has a project more focused in the C internals, it would be better for me.
00:44 whiteknight marcel_r: right. Old pynie is written in NQP (a perl6 subset), which isn't ideal. The new pynie that we're planning will probably be written in Python itself
00:44 soh_cah_toa i'm with you marcel_r
00:44 whiteknight marcel_r: if we have a project? We have tons of them!
00:45 marcel_r Nice. I'm very comfortable with Python too.
00:45 soh_cah_toa well, i meant your c internals comment
00:46 soh_cah_toa i've never done any work with python. perl's my little sidekick instead.
00:47 soh_cah_toa i'm glad to see that parrot has lots of opportunites for work
00:50 marcel_r I'm reading lots of parrot documentation and playing with PIR codes right now. Probably will look at this Pynie thing too.
00:51 soh_cah_toa whiteknight: is there a guideline for code style conventions? it looks like you guys follow the gnu style, maybe?
00:52 whiteknight take a look at NQP ( a subset of Perl6 on Parrot) and Winxed (a language similar to JS and C++) too. Those are low-level parrot languages and nicer to write in than PIR
00:52 whiteknight soh_cah_toa: yes, we do have guidelines. They aren't the same as Gnu. let me look
00:52 soh_cah_toa sure
00:54 whiteknight docs/project/*.pod contains some information, although some of it is a little old
00:54 whiteknight PDD07 has info too (docs/pdds/pdd07_codingstd.pod)
00:55 soh_cah_toa found it. thanks.
00:55 soh_cah_toa i love all this documentation. i can't stand poorly documented code.
00:56 whiteknight the PDDs are our design documents. They tend towards being inaccurate, bug have a lot of good ideas in them
00:57 whiteknight and docs/book is a book we wrote a while ago, though it's mostly about PIR syntax
00:57 soh_cah_toa oh good. i was looking for something a little more than what was in the wiki
01:03 whiteknight I'm going to be posting project ideas on my blog for the next couple days. You guys may want to keep an eye on that (http://whiteknight.github.com/)
01:03 whiteknight also, other parrot folks may be blogging about it too. Most blogs end up on http://planet.parrotcode.org/
01:03 whiteknight so keep an eye on that for ideas
01:05 marcel_r Ok, thanks.
01:06 whiteknight "Parrot in Apache" will be mostly C
01:06 whiteknight "Sub-level profiling" will be mostly C
01:07 whiteknight "GCC Translator" will be C and dark magic
01:07 whiteknight the GSL, GMP, and LAPACK binding ideas will all be mostly C or NCI
01:07 whiteknight OpenCL too
01:09 ShaneC left #parrot
01:11 bacek ~~
01:13 whiteknight hello bacek
01:13 whiteknight bacek: are there any LLVM project ideas for GSoC?
01:14 bacek aloha, whiteknight
01:14 bacek whiteknight, nope afaik
01:14 whiteknight yeah, I didn't think so
01:15 whiteknight marcel_r, soh_cah_toa: the PL/Parrot project is mostly C too
01:16 marcel_r How do we write a library binding to Parrot?
01:16 bacek aloha, is parrot fast yet?
01:16 aloha bacek: is parrot fast yet is http://isparrotfastyet.com/
01:17 bacek aloha, parrotfastyet?
01:17 aloha bacek: Sorry, I don't know.
01:17 bacek aloha, isparrotfastyet?
01:17 aloha bacek: No clue. Sorry.
01:17 bacek aloha, isparrotfastyet.com?
01:17 aloha bacek: isparrotfastyet.com is owned by atrodo
01:17 bacek msg atrodo Take a look at http://justrakudoit.wordpress.com/2​011/03/06/first-benchmark-results/
01:17 aloha OK. I'll deliver the message.
01:18 soh_cah_toa whiteknight: good, i'm very comfortable with c
01:33 dalek Rosella: 3240ce6 | Whiteknight++ | src/winxed/Distutils.bootstrap.pir:
01:33 dalek Rosella: re-add bootstrapped file
01:33 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/3240ce6d09
01:34 dalek Rosella/test_refactor: 3240ce6 | Whiteknight++ | src/winxed/Distutils.bootstrap.pir:
01:34 dalek Rosella/test_refactor: re-add bootstrapped file
01:34 dalek Rosella/test_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/3240ce6d09
01:34 dalek Rosella/test_refactor: 27b9ccd | Whiteknight++ | src/winxed/Distutils.bootstrap.pir:
01:34 dalek Rosella/test_refactor: Merge branch 'master' into test_refactor
01:34 dalek Rosella/test_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/27b9ccd4be
01:45 marcel_r whiteknight: I will be taking a look at potential projects for me in this weekend.
01:45 whiteknight marcel_r: okay. Definitely let us know if you have any questions
01:45 marcel_r whiteknight: Lots of interesting stuff to select from...
01:45 contingencyplan left #parrot
01:45 marcel_r whiteknight: I will be back with more question in the following days, for sure.
01:45 whiteknight awesome!
01:46 marcel_r whiteknight: Thanks for your support.
01:46 whiteknight thanks for your interest
01:46 soh_cah_toa marcel_r: see you later
01:46 marcel_r soh_cah_toa: Sure! Nice to meet you.
01:47 * marcel_r goes to beb.
01:47 marcel_r left #parrot
01:50 soh_cah_toa whiteknight: there wouldn't happen to be a parrot api reference, would there?
01:50 whiteknight for the embedding API? Sort of
01:51 whiteknight src/docs/embed_new.pod
01:51 whiteknight it's incomplete
01:51 whiteknight the files are in src/embed/*.c. The functions there are well documented
01:52 soh_cah_toa yes, exactly what i'm looking for
01:56 soh_cah_toa what about parrot-specific datatypes? for instance, i can't figure out what PARROT_INTERP is
01:59 cotto soh_cah_toa, parrot_interp_t
01:59 cotto include/parrot/interpreter.h
01:59 soh_cah_toa thanks
02:00 cotto Do a breadth-first search.  It's too easy to get stuck on details if you try to understand anything in great detail at first.
02:02 soh_cah_toa i suppose you're right. sometimes i gotta put away the magnifying glass and take a step back
02:02 bubaflub joined #parrot
02:10 woosley joined #parrot
02:12 whiteknight PARROT_INTERP is just an easier way to say "Interp * const interp"
02:12 whiteknight if you see PARROT_INTERP, you know you have a variable named "interp"
02:13 bubaflub left #parrot
02:14 sorear PARROT_INTERP is a macro
02:14 sorear #define
02:15 sorear are you familiar with the C preprocessor?
02:15 sorear also.  get ctags and learn how to use it, it is incredibly useful
02:18 eternaleye_ is now known as eternaleye
02:20 soh_cah_toa yeah, i know cpp
02:21 soh_cah_toa i've heard of ctags but never really had a use for it though. you're right, it would help a lot in this case
02:22 whiteknight I am having some of the weirdest errors tonight in Rosella. The instruction "$P0 = new 'Class'" is returning me an existing class, not a new class
02:22 whiteknight same with "$P0 = newclass 'foo'". It's returning me a semi-random existing Class, not a new class named 'foo'
02:23 whiteknight does that even remotely make sense?
02:25 soh_cah_toa i'm gonna head out now. you've been a great help whiteknight
02:26 whiteknight soh_cah_toa: okay, it's nice to meet you. We're always here if you want to chat more
02:26 soh_cah_toa i'm on spring break this week so i'll be around here quite often :)
02:26 dalek parrot: 2560bf4 | plobsing++ | src/pmc/nativepccmethod.pmc:
02:26 dalek parrot: add expected get_multisig() method to NativePCCMethod
02:26 dalek parrot: review: https://github.com/parrot/parrot/commit/2560bf41a1
02:26 dalek parrot: d8203d2 | plobsing++ | lib/Parrot/Pmc2c/PMC.pm:
02:26 dalek parrot: create multi-dispatcher PCC signature based on return type, not NCI signature mangling
02:26 dalek parrot: review: https://github.com/parrot/parrot/commit/d8203d2f8b
02:26 dalek parrot: 4659654 | plobsing++ | lib/Parrot/Pmc2c/Parser.pm:
02:26 soh_cah_toa take care guys
02:26 dalek parrot: set method type correctly at creation
02:26 dalek parrot: review: https://github.com/parrot/parrot/commit/46596549f9
02:26 dalek parrot: db3ba55 | plobsing++ | lib/Parrot/Pmc2c/ (2 files):
02:26 dalek parrot: eliminate "short sigs" (really NCI signatures) for multis
02:26 dalek parrot: review: https://github.com/parrot/parrot/commit/db3ba55fd5
02:26 dalek parrot: 71c5503 | plobsing++ | lib/Parrot/Pmc2c/ (3 files):
02:26 dalek parrot: put method/multi name mangling in one place
02:26 dalek parrot: review: https://github.com/parrot/parrot/commit/71c5503d87
02:26 dalek parrot: a1d45c4 | plobsing++ | lib/Parrot/Pmc2c/ (2 files):
02:26 dalek parrot: generate PCC variants for multis
02:26 * soh_cah_toa has dinner
02:26 dalek parrot: review: https://github.com/parrot/parrot/commit/a1d45c4585
02:26 soh_cah_toa left #parrot
02:26 dalek parrot: eccfd4e | plobsing++ | lib/Parrot/Pmc2c/PMC.pm:
02:26 dalek parrot: use Parrot_mmd_add_multi_from_long_sig() to register NativePCCMethod multis
02:26 dalek parrot:
02:26 dalek parrot: also minor fixups to pcc call and return sections
02:26 dalek parrot: review: https://github.com/parrot/parrot/commit/eccfd4ec16
02:28 dalek Heuristic branch merge: pushed 61 commits to parrot/tt1931-nci-parameters-deprecation by plobsing
02:28 ttbot Parrot db3ba55f i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/55689
02:31 ttbot Parrot db3ba55f i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/55719
02:33 plobsing TT doesn't handle branch merges very well it seems
02:34 ttbot Parrot a1d45c45 i386-freebsd-64int make error http://tt.taptinder.org/cmdinfo/55744
02:38 ttbot Parrot db3ba55f i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/55769
03:10 whiteknight nopaste?
03:10 clunker3 http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/
03:10 plobsing aloha, nopaste?
03:10 aloha plobsing: nopaste is is http://nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl)
03:11 nopaste "Whiteknight" at 192.168.1.3 pasted "Can anybody explain this nonsense?" (26 lines) at http://nopaste.snit.ch/38202
03:11 clunker3 was kicked by plobsing: "we have aloha"
03:11 whiteknight I've got massive karma rewards for anybody who can figure out why that nopaste does something so stupid
03:12 plobsing that nopaste doesn't make sense
03:12 plobsing newclass gives a class object
03:12 plobsing typeof gives the class object of an object
03:12 whiteknight right. But typeof Class is giving me an instance of an existing class apparently
03:12 plobsing 'typeof class-obj' should be "Class"
03:13 whiteknight exactly!
03:13 whiteknight I've been tracking this bug down for hours, thinking it was a problem in Rosella
03:13 whiteknight but no. It's PArrot doing something absurd
03:13 whiteknight I would expect that example to say "Foo\nClass\nClass\nBar\nClass\nClass"
03:14 whiteknight or, at the very least, typeof Bar should be Bar, not Foo
03:15 plobsing whiteknight: using typeof_s_p gives reasonable results
03:15 whiteknight right, that is correct
03:15 whiteknight in winxed I was doing string(typeof(class_obj)) and getting those results
03:17 plobsing whiteknight: get_class isn't implemented on "Class". class pmcs aren't "Object"s
03:18 plobsing so you call default.get_class
03:18 whiteknight but shouldn't that fallback to default.get_class, and return a pmcproxy?
03:18 samwho left #parrot
03:18 whiteknight ...no, vtable_type is going to return something that isn't Class's PMCProxy
03:18 whiteknight damnit
03:19 plobsing nope. first it checks whether there is an associated namespace, which appears to be the case here (for some odd reason)
03:20 whiteknight there shouldn't be, there is no associated namespace
03:20 whiteknight unless Class autovivifies one
03:21 plobsing there isn't. it returns a [ "Class" ] namespace object for reasons I cannot understand.
03:22 plobsing ah, again with the default.get_namespace()
03:26 whiteknight okay, this probably isn't a huge issue and I have a workaround now
03:26 whiteknight it was a little bit...unexpected
03:27 dalek Rosella/test_refactor: acf6e7a | Whiteknight++ | / (8 files):
03:27 dalek Rosella/test_refactor: fix several tests, remove a few unneeded debug messages
03:27 dalek Rosella/test_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/acf6e7a73a
03:27 dalek Rosella/test_refactor: b5954ce | Whiteknight++ | t/ (4 files):
03:27 dalek Rosella/test_refactor: fix some tests
03:27 dalek Rosella/test_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/b5954ceead
03:27 dalek Rosella/test_refactor: 58ea2da | Whiteknight++ | / (5 files):
03:27 dalek Rosella/test_refactor: figured out the cause of my last problems. Fixed remaining broken tests. Removed debugging statements
03:27 dalek Rosella/test_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/58ea2da508
03:27 whiteknight plobsing++ for looking at it and helping me keep my sanity
03:28 plobsing whiteknight: what needs doing on your IMCC branch?
03:29 whiteknight plobsing: I think primary development is done. The last problem I have right now is the TT #1990 fix
03:29 whiteknight We can't be blocking GC twice on the way into IMCC, because IMCC can now be throwing exceptions
03:30 whiteknight but when I take out that GC block, I get problems, probably related to a PMC getting prematurely recycled
03:30 plobsing or we need a way to handle finally blocks
03:31 whiteknight if I keep the GC block in, some tests consume huge amounts of memory
03:31 whiteknight because GC gets blocked, IMCC throws an exception, GC doesn't get unblocked, and then the program continues
03:31 plobsing catch, unblock, rethrow?
03:32 sorear idea: instrument gc_ms to not actually free PMCs, but instead _reuse them as Null, so you get a throw at the instant a dangling pointer is used
03:32 whiteknight possible
03:32 whiteknight sorear: that's possible
03:33 sorear combine with -Rgcdebug for extra win
03:35 whiteknight okay, I have no interest in watching the clock roll over to tomorrow. I'm going to bed. Goodnight
03:35 whiteknight left #parrot
04:18 bacek aloha, humans
04:22 cotto g'day bacek
04:22 bacek g'day cotto :)
04:28 bacek cotto, I've got somewhat crazy idea. Implement parrot-on-parrot using llvm :)
04:29 bacek Kind of jit prototype
04:29 cotto not unlike GGE
04:29 bacek aloha, GGE?
04:29 aloha bacek: No clue. Sorry.
04:30 bacek cotto, gge?
04:30 cotto it's a project of masak's to implement Perl6 in Perl 6
04:31 cotto glacial grammar engine
04:31 bacek I think it was called Yapsi
04:31 cotto ihttps://github.com/masak/gge/
04:31 cotto my mistake
04:31 bacek yes, https://github.com/masak/yapsi
04:31 cotto it's just a grammar engine
04:32 cotto you
04:32 cotto you'd think I'd guess that from the name
04:33 cotto bacek, that's a scary and interesting idea.  I hope you have a lot of ram.
04:34 bacek Actually, I'm just to lazy to implement JIT in C from scratch.
04:34 bacek Implementing it in NQP will be much more faster for prototyping purpose.
04:34 cotto that's a good thing
04:34 bacek And -Ofun of course :)
04:34 cotto you mean implementing Parrot in nqp?
04:35 bacek cotto, "jit core"
04:35 bacek s/core/runcore/
04:35 sorear you can implement runcores in managed code?
04:35 bacek sorear, nope.
04:36 bacek But I can emit native code from manged code with LLVM
04:36 bacek I suspect it will be few orders of magnitude slower than current runcore.
04:37 bacek otoh, it shouldn't be "production ready"
04:39 cotto bacek, how many ways can you think of that M0 might be executed?  I've got a hll-based interp, a C-emitting compiler and an interp written in C.
04:40 sorear bacek just suggested a LLVM-emitting JIT
04:40 sorear er that was for M1
04:40 sorear (if M1 is PIR, is opcode_t* M0.5?)
04:42 cotto I was thinking of an llvm-emitting interp as equivalent to an interp written in C.
04:43 sorear a fast non-jit C interp is a very useful thing to have
04:43 cotto definitely
04:43 sorear imho it's parrot's #1 selling point in the mid term
04:47 plobsing we don't really have one of those now, and I'm not convinced lorito's design decisions will make that better (in fact, I'm pretty sure M0 interpretation will be *worse*)
04:48 plobsing so if we care about interpreter speed, we may want to consider keeping a means of interpreting a higher-level representation
04:52 cotto plobsing, as you see it, what does the ideal interpreter look like?
04:52 plobsing I'm not sure, but I don't think increasing the instructions dispatched to accomplish a particular goal is going to improve performance.
04:53 plobsing it seems counter-intuitive
04:53 cotto you mean instruction count per unit of work?
04:54 plobsing exactly
04:54 plobsing I'm also concerned about code-size issues.
04:55 cotto my intuition breaks down at the size of op that we're planning for M0 (both amount of work and number of bytes per op)
04:56 cotto they'll fit in cache better, but we'll be running a lot more of them
04:57 plobsing I'm not sure whether we'll win or loose relative to current PBC, but I am concerned that we will lose to machine code. The whole reason interpreters came about was because opcodes took less space than machine code.
04:58 cotto I thought it was portability and programmer laziness
04:59 cotto well, I guess almost everything boils down to programmer laziness
04:59 plobsing AFAIK, both forth and p-code systems were unconcerned about portability
05:00 KaeseEs forth famously so
05:04 dalek parrot/whiteknight/imcc_compreg_pmc: c3de770 | plobsing++ | / (4 files):
05:04 dalek parrot/whiteknight/imcc_compreg_pmc: narrow scope of GC blockage to work around TT #1990
05:04 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/c3de770ac3
05:05 plobsing msg whiteknight: I've got some good news and some bad news. The good news is that the TT #1990 bug might not have anything to do with IMCC and the recent changes. The bad news is that this is because of a gc-block-leak in the workaround, and that the real bug could be anywhere. See c3de770 for details.
05:05 aloha OK. I'll deliver the message.
05:20 theory left #parrot
05:23 sorear plobsing: current parrot compares very well to other VMs I've tested on most microbenchmarks not involving PCC, memory allocation, or the class system
05:23 plobsing I'm surprised. our dispatch mechanism is surprisingly naive
05:24 sorear which is to say N, I, conditional branching stuff; I don't think I've actually tested strings stuff
05:25 sorear I should probably do some more scientific testing sometime
05:25 plobsing we have 100% branch mispredict on op dispatch
05:26 sorear it's still far better than Perl 5
05:26 sorear which is most of what I've compared pir against
05:27 plobsing sorear: OK, you've managed to find an even worse op-dispatch mechanism.
05:28 sorear they're not hard to find
05:29 plobsing our advantage is we don't do graph-traversal for execution. but we still do all the jumps from the same location. so our cache-friendlyness and indirection are better, but our branch predictor friendlyness (and amenability to advanced processor features in general) is still poor.
05:32 sorear parrot's use of registers and unboxed type support are also rather large wins
05:33 plobsing we're probably better than the big interpreted languages (Perl, Python, Ruby). but we lose hands down to many existing language VMs (eg: many interpreting JVMs, OCaml, SMLNJ)
05:33 sorear ocaml and smlnj don't count
05:33 plobsing why?
05:34 sorear they were more or less created as optimizer research platforms
05:34 sorear the big places where JIT-like systems fall over are startup time and startup memory usage
05:35 sorear imagine $user is running perl6 -e 'say 2 ** 31 #oops I forgot, what is this in decimal?'
05:35 plobsing I'm not talking about the JIT and JIT-like systems. those contain pure interpreters that run while the JIT is warming up to eliminate the large startup pause.
05:36 sorear the Perl6 parser is a very large chunk of code (I'll be amazed if you ever get it under 2MB)
05:36 plobsing and we're slower than those systems' JIT stop-gap
05:37 sorear right, well, it's not fair to compare a general-purpose VM designed by Perl geeks to Andrew Appel's sandbox
05:37 plobsing sorear: we're at what, 10MB now?
05:37 sorear plobsing: last I checked it was 15
05:38 plobsing 32-bit or 64-bit?
05:38 sorear 32
05:38 sorear 32 bit opcode_t is responsible for a lot of that, but there's still quite a bit of essential complexity
05:39 plobsing one of my projects I'd like to do in the coming months is a network PBC format that squeezes everything to the fullest
05:39 plobsing I'm thinking I can probably get most opcodes to a single byte using variable-width ints.
05:39 sorear dan sugalski talks about environments like HLL CGI scripts
05:40 plobsing also, strings alignment kills us huge.
05:41 sorear if you have a HLL with 10MB of bytecode, and you try to run 50 simultaneous interpreters, and you're using a system that needs to copy bytecode (threaded code or JIT).... no.
05:41 plobsing if we use a string pool in PBC, we wouldn't have to align them, and we'd likely get more size-reduction there too
05:41 sorear Java folks say this is CGI's fault
05:43 plobsing well, yeah. I mean, it is the world's fault when reality doesn't fit their object model.
05:43 cotto plobsing, would that pbc be directly executable?
05:44 sorear obviously not without a special runloop
05:44 plobsing cotto: of course not. network-format PBC is for efficient transmission over the network between hosts.
05:44 sorear pluggable runloops are a cool parrot feature though
05:44 plobsing it would need some decoding before execution
05:44 plobsing I suppose you could write a custom runloop, but it might run kinda slow.
05:45 cotto that's what I was thinking
05:45 plobsing always decoding variable-width ints.
05:45 cotto yes
05:45 plobsing but then again, that code runs almost straight and costs nearly nothing relative to all the indirection we do on today's deep-pipleline chips
05:46 sorear it could just always decode 1-byte ints, but implement pseudo ops that decode more
05:47 sorear if the per-pbc op table is sorted by usage the psuedo ops don't need to be hit often
05:47 sorear depending on just how much packing you want to do; this won't really work for an arithmetic coder.
05:47 plobsing that's a good point. but opcodes make up a tiny fraction of bytecode
05:48 plobsing register and constant numbers also need decoding
05:48 sorear right, 75% of bytecode is used to fill the gaps between opcodes. :)
05:48 sorear oh right
05:48 plobsing your opcode game doesn't work for them
05:49 cotto I'm wondering if M0 could do with 4-byte ops by explicitly setting the context, rather than explictly passing something that'll only change on sub invocations.
05:49 sorear I suspect that once the PAST register allocator is fixed, we'll be able to limit register numbers to 127 and nobody will notice
05:49 plobsing how many times do I have to tell people that any reasonable attempt at register allocation should happen *AFTER* IMCC
05:49 plobsing PAST register allocator doesn't see half of the registers
06:10 woosley left #parrot
06:16 JimmyZ joined #parrot
06:23 JimmyZ left #parrot
06:59 lucian left #parrot
07:06 rurban_ joined #parrot
07:08 rurban left #parrot
07:08 rurban_ is now known as rurban
07:08 dalek parrot: df6273e | bacek++ | src/io/io_private.h:
07:08 dalek parrot: Remove useless casts.
07:08 dalek parrot: review: https://github.com/parrot/parrot/commit/df6273e1dc
07:15 fperrad joined #parrot
08:03 alin joined #parrot
08:16 mj41 joined #parrot
08:32 alin left #parrot
08:33 alin joined #parrot
08:35 lucian joined #parrot
08:48 alin left #parrot
08:49 alin joined #parrot
08:52 woosley joined #parrot
09:19 alin left #parrot
09:31 contingencyplan joined #parrot
09:47 alin joined #parrot
09:47 contingencyplan left #parrot
09:47 contingencyplan joined #parrot
09:59 lucian left #parrot
10:02 lucian joined #parrot
10:13 lucian_ joined #parrot
10:16 lucian left #parrot
10:28 lucian_ left #parrot
10:30 contingencyplan left #parrot
10:31 mj41 left #parrot
10:43 lucian joined #parrot
10:44 dalek parrot: 48a8127 | bacek++ | src/pmc/sub.pmc:
10:44 dalek parrot: [cage] Remove outdated comment.
10:44 dalek parrot: review: https://github.com/parrot/parrot/commit/48a8127cc9
11:04 dodathome joined #parrot
11:10 lucian left #parrot
11:17 JimmyZ joined #parrot
11:33 zby_home joined #parrot
11:37 dalek parrot/opsc_llvm: df6273e | bacek++ | src/io/io_private.h:
11:37 dalek parrot/opsc_llvm: Remove useless casts.
11:37 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/df6273e1dc
11:37 dalek parrot/opsc_llvm: 48a8127 | bacek++ | src/pmc/sub.pmc:
11:37 dalek parrot/opsc_llvm: [cage] Remove outdated comment.
11:37 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/48a8127cc9
11:37 dalek parrot/opsc_llvm: a1948f0 | bacek++ | / (8 files):
11:37 dalek parrot/opsc_llvm: Merge branch 'master' into opsc_llvm
11:37 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/a1948f023c
11:40 whiteknight joined #parrot
11:42 whiteknight good morning, #parrot
11:42 JimmyZ left #parrot
11:43 JimmyZ joined #parrot
11:44 whiteknight have I said something nice about bacek today?
11:44 whiteknight bacek++
11:44 lucian joined #parrot
11:45 bacek whiteknight, noooo. No I became "bacel"...
11:45 whiteknight then, bacel++ too
11:46 bacek $ perl -M5.010 -e '$b="bacek"; $b++; say $b'
11:46 bacek bacel
11:46 bacek :)
11:47 tadzik bacek: did you know about perl -E?
11:47 bacek tadzik, erm. No idea. What is it?
11:47 bacek wow.
11:48 bacek Quite useful
11:48 bacek tadzik++
11:49 bacek tadzil-- # just in case :)
11:49 tadzik I'd like some pErl, doing the same but w/o -E ;)
11:54 tadzik heh. Looking at the "What I need is:" section in the blog post, I thought «how the hell does bacek want to do these things in 3 CPU ticks»"
11:55 bacek tadzik, I just need some kind of VVVVLIW CPU :)
11:57 JimmyZ left #parrot
11:58 * tadzik gone
11:58 lucian left #parrot
11:59 dalek parrot: 3a3ab5a | bacek++ | config/gen/config_h/config_h.in:
11:59 dalek parrot: Set HAS_LONGLONG and HAS_INT64 into config.h to reduce amount of warnings from StructView PMC compilation.
11:59 dalek parrot: review: https://github.com/parrot/parrot/commit/3a3ab5a49a
12:21 samwho joined #parrot
12:28 mj41 joined #parrot
12:51 dalek parrot/opsc_llvm: 3a3ab5a | bacek++ | config/gen/config_h/config_h.in:
12:51 dalek parrot/opsc_llvm: Set HAS_LONGLONG and HAS_INT64 into config.h to reduce amount of warnings from StructView PMC compilation.
12:51 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/3a3ab5a49a
12:51 dalek parrot/opsc_llvm: 2c980d2 | bacek++ | config/gen/config_h/config_h.in:
12:51 dalek parrot/opsc_llvm: Merge branch 'master' into opsc_llvm
12:51 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/2c980d25df
12:51 dalek parrot/opsc_llvm: 5d13cb0 | bacek++ | src/dynpmc/Rules.in:
12:51 dalek parrot/opsc_llvm: Link all libraries into llvm_engine.
12:51 dalek parrot/opsc_llvm:
12:51 dalek parrot/opsc_llvm: llvm-config --libs produces list of _static_ libs. And linker selects only used functions. Which leads to "Undefined symbol" errors when we do dynamic linking of dynops.
12:51 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/5d13cb0a5a
12:51 dalek parrot/opsc_llvm: 1d4307c | bacek++ | / (2 files):
12:51 dalek parrot/opsc_llvm: Implement Builder.get_insert_block
12:51 dalek parrot/opsc_llvm: review: https://github.com/parrot/parrot/commit/1d4307c913
13:06 mj41 left #parrot
13:08 dalek parrot: 80bcb73 | bacek++ | / (2 files):
13:08 dalek parrot: Expose current context into external world from interpret
13:08 dalek parrot: review: https://github.com/parrot/parrot/commit/80bcb7372b
13:16 jsut_ joined #parrot
13:21 jsut left #parrot
13:41 dalek Rosella/test_refactor: 21e64d7 | Whiteknight++ | / (14 files):
13:41 dalek Rosella/test_refactor: Add in several new tests and some new stub test files. A few small fixes throughout the test library
13:41 dalek Rosella/test_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/21e64d7e5a
13:41 dalek Rosella/test_refactor: e08a944 | Whiteknight++ | src/test/ (4 files):
13:41 dalek Rosella/test_refactor: Add in the ability to throw internal-only failures, which won't show a complete backtrace
13:41 dalek Rosella/test_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/e08a9449f2
13:43 dalek Rosella: 27b9ccd | Whiteknight++ | src/winxed/Distutils.bootstrap.pir:
13:43 dalek Rosella: Merge branch 'master' into test_refactor
13:43 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/27b9ccd4be
13:43 dalek Rosella: acf6e7a | Whiteknight++ | / (8 files):
13:43 dalek Rosella: fix several tests, remove a few unneeded debug messages
13:43 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/acf6e7a73a
13:43 dalek Rosella: b5954ce | Whiteknight++ | t/ (4 files):
13:43 dalek Rosella: fix some tests
13:43 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/b5954ceead
13:43 dalek Rosella: 58ea2da | Whiteknight++ | / (5 files):
13:43 dalek Rosella: figured out the cause of my last problems. Fixed remaining broken tests. Removed debugging statements
13:43 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/58ea2da508
13:43 dalek Rosella: 21e64d7 | Whiteknight++ | / (14 files):
13:43 dalek Rosella: Add in several new tests and some new stub test files. A few small fixes throughout the test library
13:43 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/21e64d7e5a
13:43 dalek Rosella: e08a944 | Whiteknight++ | src/test/ (4 files):
13:43 dalek Rosella: Add in the ability to throw internal-only failures, which won't show a complete backtrace
13:43 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/e08a9449f2
13:54 ambs joined #parrot
13:54 dalek winxed: r864 | NotFound++ | trunk/winxedst1.winxed:
13:54 dalek winxed: hand parse parrot include files to avoid depending on PGE::P5Regex
13:54 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=864
13:54 dalek winxed: r865 | NotFound++ | trunk/pir/winxed_compiler.pir:
13:54 dalek winxed: update installable compiler
13:54 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=865
14:08 mj41 joined #parrot
14:23 alin left #parrot
14:33 mj41 left #parrot
14:34 dalek parrot: df0ae5e | util++ | include/parrot/ (2 files):
14:34 dalek parrot: [Coverity] Removed #include of thread.h from atomic.h, and parrot.h from string.h.
14:34 dalek parrot: These unneeded includes were causing loops (harmless in most compilers).
14:34 dalek parrot:     Fixes Coverity defect #473: PW.INCLUDE_RECURSION in string.h
14:34 dalek parrot:         parrot.h
14:34 dalek parrot:             -> platform_interface.h
14:34 dalek parrot:                 -> interpreter.h
14:34 dalek parrot:                     -> context.h
14:34 dalek parrot:                         -> string.h
14:34 dalek parrot:                             -> parrot.h
14:34 dalek parrot:     Fixes Coverity defect #474: PW.INCLUDE_RECURSION in atomic.h
14:34 dalek parrot:         thread.h
14:34 dalek parrot:             -> atomic.h
14:34 dalek parrot:                 -> thread.h
14:34 dalek parrot:     Fixes Coverity defect #475: PW.INCLUDE_RECURSION in parrot.h
14:34 dalek parrot:         encoding.h
14:34 dalek parrot:             -> parrot.h
14:34 dalek parrot:                 -> encoding.h
14:34 dalek parrot: review: https://github.com/parrot/parrot/commit/df0ae5e0a9
14:34 dalek parrot: f83909e | util++ | include/parrot/ (2 files):
14:34 dalek parrot: Merge branch 'coverity_474'
14:34 dalek parrot: review: https://github.com/parrot/parrot/commit/f83909e8e6
14:41 mj41 joined #parrot
14:44 samwho left #parrot
15:05 rurban_ joined #parrot
15:07 dodathome left #parrot
15:07 rurban left #parrot
15:07 rurban_ is now known as rurban
15:17 mj41 left #parrot
15:19 jsut joined #parrot
15:24 jsut_ left #parrot
15:38 dodathome joined #parrot
15:42 mj41 joined #parrot
15:55 ambs left #parrot
15:56 ambs joined #parrot
16:29 theory joined #parrot
16:37 mj41 left #parrot
16:39 lucian joined #parrot
16:42 woosley left #parrot
16:43 whiteknight left #parrot
17:17 mj41 joined #parrot
17:25 cotto ~~
17:46 mikehh forgot to post:All tests PASS (pre/post-config, make corevm/make coretest, smoke (#12631) fulltest) at 3_2_0-16-gf83909e - Ubuntu 10.10 i386 (g++-4.5)
18:03 dalek winxed: r866 | NotFound++ | trunk/winxedst1.winxed:
18:03 dalek winxed: cosmetic changes
18:03 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=866
18:21 dodathome left #parrot
18:24 dalek winxed: r867 | NotFound++ | trunk/winxedst1.winxed:
18:24 dalek winxed: reorganize a bit argument modifier emision
18:24 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=867
18:46 dodathome joined #parrot
18:46 Patterner left #parrot
18:47 Psyche^ joined #parrot
18:47 Psyche^ is now known as Patterner
18:57 contingencyplan joined #parrot
19:04 kurahaupo joined #parrot
19:11 dalek winxed: r868 | NotFound++ | trunk/winxedst1.winxed:
19:11 dalek winxed: compile time evaluate comparaison operators with integer operands
19:11 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=868
19:34 elmex left #parrot
19:47 alin joined #parrot
19:57 fperrad left #parrot
19:59 fperrad joined #parrot
20:10 rurban left #parrot
20:11 Andy_ left #parrot
20:19 elmex joined #parrot
20:22 rurban joined #parrot
20:28 zby_home left #parrot
20:29 whiteknight joined #parrot
20:40 kid51 joined #parrot
20:41 kid51 ~~
20:45 dalek Rosella: cc83d37 | Whiteknight++ | src/test/ (2 files):
20:45 dalek Rosella: some docs and TODO notes
20:45 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/cc83d37fee
21:01 rurban left #parrot
21:06 rurban joined #parrot
21:07 plobsing ping whiteknight
21:17 lucian left #parrot
21:26 rurban left #parrot
21:30 whiteknight pong plobsing
21:34 plobsing whiteknight: I suspect the problems we're seeing when removing the TT #1990 workaround occurs due to string compilations
21:34 plobsing PGE runs several evals upon startup
21:34 dodathome left #parrot
21:34 plobsing but I can no longer track down where we register the PIR compreg
21:35 plobsing where does that happen now?
21:35 whiteknight in compilers/imcc/api.c, called from frontend/parrot/main.c
21:36 whiteknight what's going wrong with strings?
21:37 plobsing not sure, but the segfault occurs in a program that is all PBC, no compile from file.
21:58 Coke left #parrot
22:03 whiteknight PGE and NQP do a lot of load_bytecode with .pir files instead of .pbc files
22:03 whiteknight internally, Parrot tries to redirect those I think, but can't always
22:04 Coke joined #parrot
22:11 alin left #parrot
22:19 ambs left #parrot
22:25 fperrad left #parrot
22:29 lucian joined #parrot
22:43 kid51 left #parrot
22:55 contingencyplan left #parrot
23:11 Coke left #parrot
23:29 whiteknight msg NotFound can we improve the "Checking Implementation" error message? It's very difficult to debug. A line number would be nice
23:29 aloha OK. I'll deliver the message.
23:33 NotFound whiteknight: Checking... ;)
23:35 NotFound Uh... I've completely forgot to finish that part.
23:38 whiteknight heh
23:40 NotFound Fixed, thanks.
23:41 dalek winxed: r869 | NotFound++ | trunk/winxedst1.winxed:
23:41 dalek winxed: proper diagnose invalid argument modifier, whiteknight++
23:41 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=869
23:41 dalek winxed: r870 | NotFound++ | trunk/pir/winxed_compiler.pir:
23:41 dalek winxed: update installable compiler
23:41 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=870
23:42 whiteknight NotFound: We should throw a big party when you reach revision 1000
23:45 NotFound Who pay the beers?
23:45 dalek Rosella/harness_refactor: 4046d69 | Whiteknight++ | src/tap_harness/ (5 files):
23:45 dalek Rosella/harness_refactor: delete old nqp versions of these files
23:45 dalek Rosella/harness_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/4046d69bf8
23:45 dalek Rosella/harness_refactor: 02362b6 | Whiteknight++ | src/tap_harness/ (6 files):
23:45 dalek Rosella/harness_refactor: start refactoring the TAP harness using a better MVC architecture.
23:45 dalek Rosella/harness_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/02362b61bd
23:45 dalek Rosella/harness_refactor: 44e7015 | Whiteknight++ | / (8 files):
23:45 dalek Rosella/harness_refactor: fixes to the harness. We're now able to run the rosella test suite again, although no tests in the suite are known to fail. not all corner cases are accounted for
23:45 dalek Rosella/harness_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/44e701563c
23:45 dalek Rosella/harness_refactor: 67de9b0 | Whiteknight++ | / (3 files):
23:45 dalek Rosella/harness_refactor: fix it so we report errors correctly
23:45 dalek Rosella/harness_refactor: review: https://github.com/Whiteknig​ht/Rosella/commit/67de9b0280

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

Parrot | source cross referenced