|
Parrot 3.2.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Parrot is accepted for GSoC 2011! Student application deadline is Apr 8 | Goals: Get more GSoC ideas on wiki; close tickets; stable 3.2 release; assess status of roadmap goals for 3/15 meeting. Set by moderator on 18 March 2011. |
|||
| 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 | ||
| soh_cah_toa: how are you doing? Are you interested in doing GSoC work with Parrot? | 00:01 | ||
| soh_cah_toa | i sure am! | ||
| 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? | ||
| 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. | ||
| 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? | ||
| 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 | ||
| whiteknight | cotto_work: mj41 says it needs work to support parrot better | ||
| 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 | ||
| cotto_work | msg dukeleto Is there anything I can do to help complete PaFo's GSoC org profile? | ||
| aloha | OK. I'll deliver the message. | ||
| whiteknight | cotto_work: I can't keep track of what all tools we are using | ||
| soh_cah_toa | okay, pretty neat | 00:07 | |
| cotto_work goes home | 00:09 | ||
| marcel_r | Hi all. | 00:10 | |
| soh_cah_toa | the debugger project seemed interesting as well | ||
| marcel_r | I'm another student interested in contributing to Parrot during GSoC. | 00:11 | |
| soh_cah_toa | hey, me too! | ||
| marcel_r | soh_cah_toa: Cool! | 00:12 | |
| whiteknight: Where can we find more information about the debugger project? | 00:13 | ||
| whiteknight | marcel: right here. All you have to do is ask! | ||
| marcel_r: Parrot has a debugger right now, but it's very broken | |||
| and it's old | |||
| and there are spiders | 00:14 | ||
| soh_cah_toa | i was just gonna ask that | ||
| where is it? i just compiled parrot and i can't find it | |||
| is it a switch or a seperate binary? | |||
| whiteknight | frontend/parrot_debugger/* | ||
| soh_cah_toa | tada! thanks | 00:15 | |
| whiteknight | Parrot basically is libparrot. All the real guts of it are in that library | ||
| so the parrot executable and parrot_debugger are just small frontends over libparrot | |||
| Last year for GSoC a student made a project called Parrot-Instrument. | |||
| soh_cah_toa | yeah, i just saw that in the wiki | ||
| whiteknight | Parrot-Instrument is a series of tools for interacting with Parrot while it's running | ||
| 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? | ||
| whiteknight | once we fix it, it can be used for making a nice debugger pretty easily | ||
| it's a separate project. Let me find a link | 00:17 | ||
| github.com/Whiteknight/parrot-instrument/ | |||
| soh_cah_toa | great, thanks. i'll take a look | 00:21 | |
|
00:21
bubaflub joined
|
|||
| bubaflub | dukeleto: i saw that both Perl and Parrot got accepted to GSoC - good work! | 00:22 | |
| whiteknight | marcel_r: What are your interests? | ||
| marcel_r | I'm interested in VMs in general. I'm the developer of a small programming language ( code.google.com/p/zap/ ). | 00:24 | |
| Parrot looks very nice, although I have little familiarity with it. | |||
| The debugger and profiler projects would be cool to work on. | 00:25 | ||
| 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 | |
| that was maybe a few months ago | |||
| whiteknight | soh_cah_toa: I don't think I heard anything about a podcast. Do you have a link or anything? | 00:36 | |
| marcel_r: oh, okay, so you're familiar with VMs and compilers already. That's a good start | |||
| soh_cah_toa | www.twit.tv/floss140 | 00:37 | |
| whiteknight | soh_cah_toa++ | ||
| soh_cah_toa | it was on rakudo but it talked about parrot obviously | ||
| whiteknight | oh, nice | ||
| 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:38 | ||
| cotto | ~~ | 00:39 | |
| whiteknight | marcel_r: zap looks fun. Very minimalist | 00:40 | |
| marcel_r | I'm also interested in the possibility of running Python on Parrot. | ||
| Yeah, you could not use a better word for it: minimalist. | 00:41 | ||
| soh_cah_toa | doesn't it already support pythong? pynie? | ||
| *python | |||
| whiteknight | there is a project called Pynie which was python on Parrot | ||
| it's broken and sort of abandoned. | |||
| 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
|
|||
| marcel_r | To be honest, I'm afraid of writing much Pearl code, since I'm still learning it. | 00:43 | |
| 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. | ||
| 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 | ||
| soh_cah_toa | i'm with you marcel_r | ||
| whiteknight | marcel_r: if we have a project? We have tons of them! | ||
| marcel_r | Nice. I'm very comfortable with Python too. | 00:45 | |
| soh_cah_toa | well, i meant your c internals comment | ||
| i've never done any work with python. perl's my little sidekick instead. | 00:46 | ||
| i'm glad to see that parrot has lots of opportunites for work | 00:47 | ||
| 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:50 | |
| soh_cah_toa | whiteknight: is there a guideline for code style conventions? it looks like you guys follow the gnu style, maybe? | 00:51 | |
| 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 | |
| soh_cah_toa: yes, we do have guidelines. They aren't the same as Gnu. let me look | |||
| soh_cah_toa | sure | ||
| whiteknight | docs/project/*.pod contains some information, although some of it is a little old | 00:54 | |
| PDD07 has info too (docs/pdds/pdd07_codingstd.pod) | |||
| soh_cah_toa | found it. thanks. | 00:55 | |
| i love all this documentation. i can't stand poorly documented code. | |||
| whiteknight | the PDDs are our design documents. They tend towards being inaccurate, bug have a lot of good ideas in them | 00:56 | |
| 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 | ||
| 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 (whiteknight.github.com/) | 01:03 | |
| also, other parrot folks may be blogging about it too. Most blogs end up on planet.parrotcode.org/ | |||
| so keep an eye on that for ideas | |||
| marcel_r | Ok, thanks. | 01:05 | |
| whiteknight | "Parrot in Apache" will be mostly C | 01:06 | |
| "Sub-level profiling" will be mostly C | |||
| "GCC Translator" will be C and dark magic | 01:07 | ||
| the GSL, GMP, and LAPACK binding ideas will all be mostly C or NCI | |||
| OpenCL too | |||
|
01:09
ShaneC left
|
|||
| bacek | ~~ | 01:11 | |
| whiteknight | hello bacek | 01:13 | |
| bacek: are there any LLVM project ideas for GSoC? | |||
| bacek | aloha, whiteknight | 01:14 | |
| whiteknight, nope afaik | |||
| whiteknight | yeah, I didn't think so | ||
| marcel_r, soh_cah_toa: the PL/Parrot project is mostly C too | 01:15 | ||
| marcel_r | How do we write a library binding to Parrot? | 01:16 | |
| bacek | aloha, is parrot fast yet? | ||
| aloha | bacek: is parrot fast yet is isparrotfastyet.com/ | ||
| bacek | aloha, parrotfastyet? | 01:17 | |
| aloha | bacek: Sorry, I don't know. | ||
| bacek | aloha, isparrotfastyet? | ||
| aloha | bacek: No clue. Sorry. | ||
| bacek | aloha, isparrotfastyet.com? | ||
| aloha | bacek: isparrotfastyet.com is owned by atrodo | ||
| bacek | msg atrodo Take a look at justrakudoit.wordpress.com/2011/03/...k-results/ | ||
| aloha | OK. I'll deliver the message. | ||
| soh_cah_toa | whiteknight: good, i'm very comfortable with c | 01:18 | |
| dalek | sella: 3240ce6 | Whiteknight++ | src/winxed/Distutils.bootstrap.pir: re-add bootstrapped file |
01:33 | |
| sella/test_refactor: 3240ce6 | Whiteknight++ | src/winxed/Distutils.bootstrap.pir: re-add bootstrapped file |
01:34 | ||
| sella/test_refactor: 27b9ccd | Whiteknight++ | src/winxed/Distutils.bootstrap.pir: Merge branch 'master' into test_refactor |
|||
| 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 | ||
| marcel_r | whiteknight: Lots of interesting stuff to select from... | ||
|
01:45
contingencyplan left
|
|||
| marcel_r | whiteknight: I will be back with more question in the following days, for sure. | 01:45 | |
| whiteknight | awesome! | ||
| marcel_r | whiteknight: Thanks for your support. | 01:46 | |
| whiteknight | thanks for your interest | ||
| soh_cah_toa | marcel_r: see you later | ||
| marcel_r | soh_cah_toa: Sure! Nice to meet you. | ||
| marcel_r goes to beb. | 01:47 | ||
|
01:47
marcel_r left
|
|||
| 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 | ||
| src/docs/embed_new.pod | 01:51 | ||
| it's incomplete | |||
| the files are in src/embed/*.c. The functions there are well documented | |||
| soh_cah_toa | yes, exactly what i'm looking for | 01:52 | |
| what about parrot-specific datatypes? for instance, i can't figure out what PARROT_INTERP is | 01:56 | ||
| cotto | soh_cah_toa, parrot_interp_t | 01:59 | |
| include/parrot/interpreter.h | |||
| soh_cah_toa | thanks | ||
| 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:00 | |
| soh_cah_toa | i suppose you're right. sometimes i gotta put away the magnifying glass and take a step back | 02:02 | |
|
02:02
bubaflub joined
02:10
woosley joined
|
|||
| whiteknight | PARROT_INTERP is just an easier way to say "Interp * const interp" | 02:12 | |
| if you see PARROT_INTERP, you know you have a variable named "interp" | |||
|
02:13
bubaflub left
|
|||
| sorear | PARROT_INTERP is a macro | 02:14 | |
| #define | |||
| are you familiar with the C preprocessor? | 02:15 | ||
| also. get ctags and learn how to use it, it is incredibly useful | |||
|
02:18
eternaleye_ is now known as eternaleye
|
|||
| soh_cah_toa | yeah, i know cpp | 02:20 | |
| 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:21 | ||
| 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 | |
| same with "$P0 = newclass 'foo'". It's returning me a semi-random existing Class, not a new class named 'foo' | |||
| does that even remotely make sense? | 02:23 | ||
| soh_cah_toa | i'm gonna head out now. you've been a great help whiteknight | 02:25 | |
| 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 :) | ||
| dalek | rrot: 2560bf4 | plobsing++ | src/pmc/nativepccmethod.pmc: add expected get_multisig() method to NativePCCMethod |
||
| rrot: d8203d2 | plobsing++ | lib/Parrot/Pmc2c/PMC.pm: create multi-dispatcher PCC signature based on return type, not NCI signature mangling |
|||
| rrot: 4659654 | plobsing++ | lib/Parrot/Pmc2c/Parser.pm: set method type correctly at creation |
|||
| soh_cah_toa | take care guys | ||
| rrot: db3ba55 | plobsing++ | lib/Parrot/Pmc2c/ (2 files): eliminate "short sigs" (really NCI signatures) for multis |
|||
| rrot: 71c5503 | plobsing++ | lib/Parrot/Pmc2c/ (3 files): put method/multi name mangling in one place |
|||
| rrot: a1d45c4 | plobsing++ | lib/Parrot/Pmc2c/ (2 files): generate PCC variants for multis |
|||
| soh_cah_toa has dinner | |||
|
02:26
soh_cah_toa left
|
|||
| dalek | rrot: eccfd4e | plobsing++ | lib/Parrot/Pmc2c/PMC.pm: use Parrot_mmd_add_multi_from_long_sig() to register NativePCCMethod multis also minor fixups to pcc call and return sections |
02:26 | |
| 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 tt.taptinder.org/cmdinfo/55689 | ||
| Parrot db3ba55f i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/55719 | 02:31 | ||
| plobsing | TT doesn't handle branch merges very well it seems | 02:33 | |
| ttbot | Parrot a1d45c45 i386-freebsd-64int make error tt.taptinder.org/cmdinfo/55744 | 02:34 | |
| Parrot db3ba55f i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/55769 | 02:38 | ||
| whiteknight | nopaste? | 03:10 | |
| clunker3 | pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ | ||
| plobsing | aloha, nopaste? | ||
| aloha | plobsing: nopaste is is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) | ||
| nopaste | "Whiteknight" at 192.168.1.3 pasted "Can anybody explain this nonsense?" (26 lines) at nopaste.snit.ch/38202 | 03:11 | |
| whiteknight | I've got massive karma rewards for anybody who can figure out why that nopaste does something so stupid | ||
| plobsing | that nopaste doesn't make sense | 03:12 | |
| newclass gives a class object | |||
| typeof gives the class object of an object | |||
| whiteknight | right. But typeof Class is giving me an instance of an existing class apparently | ||
| plobsing | 'typeof class-obj' should be "Class" | ||
| whiteknight | exactly! | 03:13 | |
| I've been tracking this bug down for hours, thinking it was a problem in Rosella | |||
| but no. It's PArrot doing something absurd | |||
| I would expect that example to say "Foo\\nClass\\nClass\\nBar\\nClass\\nClass" | |||
| or, at the very least, typeof Bar should be Bar, not Foo | 03:14 | ||
| plobsing | whiteknight: using typeof_s_p gives reasonable results | 03:15 | |
| whiteknight | right, that is correct | ||
| in winxed I was doing string(typeof(class_obj)) and getting those results | |||
| plobsing | whiteknight: get_class isn't implemented on "Class". class pmcs aren't "Object"s | 03:17 | |
| 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
|
|||
| whiteknight | ...no, vtable_type is going to return something that isn't Class's PMCProxy | 03:18 | |
| damnit | |||
| plobsing | nope. first it checks whether there is an associated namespace, which appears to be the case here (for some odd reason) | 03:19 | |
| whiteknight | there shouldn't be, there is no associated namespace | 03:20 | |
| unless Class autovivifies one | |||
| plobsing | there isn't. it returns a [ "Class" ] namespace object for reasons I cannot understand. | 03:21 | |
| ah, again with the default.get_namespace() | 03:22 | ||
| whiteknight | okay, this probably isn't a huge issue and I have a workaround now | 03:26 | |
| it was a little bit...unexpected | |||
| dalek | sella/test_refactor: acf6e7a | Whiteknight++ | / (8 files): fix several tests, remove a few unneeded debug messages |
03:27 | |
| sella/test_refactor: b5954ce | Whiteknight++ | t/ (4 files): fix some tests |
|||
| sella/test_refactor: 58ea2da | Whiteknight++ | / (5 files): figured out the cause of my last problems. Fixed remaining broken tests. Removed debugging statements |
|||
| whiteknight | plobsing++ for looking at it and helping me keep my sanity | ||
| plobsing | whiteknight: what needs doing on your IMCC branch? | 03:28 | |
| whiteknight | plobsing: I think primary development is done. The last problem I have right now is the TT #1990 fix | 03:29 | |
| We can't be blocking GC twice on the way into IMCC, because IMCC can now be throwing exceptions | |||
| 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 | ||
| whiteknight | if I keep the GC block in, some tests consume huge amounts of memory | 03:31 | |
| because GC gets blocked, IMCC throws an exception, GC doesn't get unblocked, and then the program continues | |||
| plobsing | catch, unblock, rethrow? | ||
| 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 | ||
| sorear: that's possible | |||
| sorear | combine with -Rgcdebug for extra win | 03:33 | |
| whiteknight | okay, I have no interest in watching the clock roll over to tomorrow. I'm going to bed. Goodnight | 03:35 | |
|
03:35
whiteknight left
|
|||
| bacek | aloha, humans | 04:18 | |
| cotto | g'day bacek | 04:22 | |
| bacek | g'day cotto :) | ||
| cotto, I've got somewhat crazy idea. Implement parrot-on-parrot using llvm :) | 04:28 | ||
| Kind of jit prototype | 04:29 | ||
| cotto | not unlike GGE | ||
| bacek | aloha, GGE? | ||
| aloha | bacek: No clue. Sorry. | ||
| bacek | cotto, gge? | 04:30 | |
| cotto | it's a project of masak's to implement Perl6 in Perl 6 | ||
| glacial grammar engine | 04:31 | ||
| bacek | I think it was called Yapsi | ||
| cotto | igithub.com/masak/gge/ | ||
| my mistake | |||
| bacek | yes, github.com/masak/yapsi | ||
| cotto | it's just a grammar engine | ||
| you | 04:32 | ||
| you'd think I'd guess that from the name | |||
| bacek, that's a scary and interesting idea. I hope you have a lot of ram. | 04:33 | ||
| bacek | Actually, I'm just to lazy to implement JIT in C from scratch. | 04:34 | |
| Implementing it in NQP will be much more faster for prototyping purpose. | |||
| cotto | that's a good thing | ||
| bacek | And -Ofun of course :) | ||
| cotto | you mean implementing Parrot in nqp? | ||
| bacek | cotto, "jit core" | 04:35 | |
| s/core/runcore/ | |||
| sorear | you can implement runcores in managed code? | ||
| bacek | sorear, nope. | ||
| But I can emit native code from manged code with LLVM | 04:36 | ||
| I suspect it will be few orders of magnitude slower than current runcore. | |||
| otoh, it shouldn't be "production ready" | 04:37 | ||
| 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:39 | |
| sorear | bacek just suggested a LLVM-emitting JIT | 04:40 | |
| er that was for M1 | |||
| (if M1 is PIR, is opcode_t* M0.5?) | |||
| cotto | I was thinking of an llvm-emitting interp as equivalent to an interp written in C. | 04:42 | |
| sorear | a fast non-jit C interp is a very useful thing to have | 04:43 | |
| cotto | definitely | ||
| sorear | imho it's parrot's #1 selling point in the mid term | ||
| 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:47 | |
| so if we care about interpreter speed, we may want to consider keeping a means of interpreting a higher-level representation | 04:48 | ||
| 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. | ||
| it seems counter-intuitive | 04:53 | ||
| cotto | you mean instruction count per unit of work? | ||
| plobsing | exactly | 04:54 | |
| I'm also concerned about code-size issues. | |||
| 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:55 | |
| they'll fit in cache better, but we'll be running a lot more of them | 04:56 | ||
| 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:57 | |
| cotto | I thought it was portability and programmer laziness | 04:58 | |
| well, I guess almost everything boils down to programmer laziness | 04:59 | ||
| plobsing | AFAIK, both forth and p-code systems were unconcerned about portability | ||
| KaeseEs | forth famously so | 05:00 | |
| dalek | rrot/whiteknight/imcc_compreg_pmc: c3de770 | plobsing++ | / (4 files): narrow scope of GC blockage to work around TT #1990 |
05:04 | |
| 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
|
|||
| 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 | ||
| sorear | which is to say N, I, conditional branching stuff; I don't think I've actually tested strings stuff | 05:24 | |
| I should probably do some more scientific testing sometime | 05:25 | ||
| plobsing | we have 100% branch mispredict on op dispatch | ||
| sorear | it's still far better than Perl 5 | 05:26 | |
| which is most of what I've compared pir against | |||
| plobsing | sorear: OK, you've managed to find an even worse op-dispatch mechanism. | 05:27 | |
| sorear | they're not hard to find | 05:28 | |
| 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:29 | |
| sorear | parrot's use of registers and unboxed type support are also rather large wins | 05:32 | |
| 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 | ||
| plobsing | why? | ||
| sorear | they were more or less created as optimizer research platforms | 05:34 | |
| the big places where JIT-like systems fall over are startup time and startup memory usage | |||
| 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. | ||
| 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 | ||
| 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? | ||
| sorear | plobsing: last I checked it was 15 | ||
| plobsing | 32-bit or 64-bit? | 05:38 | |
| sorear | 32 | ||
| 32 bit opcode_t is responsible for a lot of that, but there's still quite a bit of essential complexity | |||
| 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 | |
| I'm thinking I can probably get most opcodes to a single byte using variable-width ints. | |||
| sorear | dan sugalski talks about environments like HLL CGI scripts | ||
| plobsing | also, strings alignment kills us huge. | 05:40 | |
| 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 | ||
| sorear | Java folks say this is CGI's fault | ||
| 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? | ||
| 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. | ||
| sorear | pluggable runloops are a cool parrot feature though | ||
| plobsing | it would need some decoding before execution | ||
| I suppose you could write a custom runloop, but it might run kinda slow. | |||
| cotto | that's what I was thinking | 05:45 | |
| plobsing | always decoding variable-width ints. | ||
| cotto | yes | ||
| 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 | ||
| sorear | it could just always decode 1-byte ints, but implement pseudo ops that decode more | 05:46 | |
| if the per-pbc op table is sorted by usage the psuedo ops don't need to be hit often | 05:47 | ||
| depending on just how much packing you want to do; this won't really work for an arithmetic coder. | |||
| plobsing | that's a good point. but opcodes make up a tiny fraction of bytecode | ||
| register and constant numbers also need decoding | 05:48 | ||
| sorear | right, 75% of bytecode is used to fill the gaps between opcodes. :) | ||
| oh right | |||
| plobsing | your opcode game doesn't work for them | ||
| 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 | ||
| plobsing | how many times do I have to tell people that any reasonable attempt at register allocation should happen *AFTER* IMCC | ||
| PAST register allocator doesn't see half of the registers | |||
|
06:10
woosley left
06:16
JimmyZ joined
06:23
JimmyZ left
06:59
lucian left
07:06
rurban_ joined
07:08
rurban left,
rurban_ is now known as rurban
|
|||
| dalek | rrot: df6273e | bacek++ | src/io/io_private.h: Remove useless casts. |
07:08 | |
|
07:15
fperrad joined
08:03
alin joined
08:16
mj41 joined
08:32
alin left
08:33
alin joined
08:35
lucian joined
08:48
alin left
08:49
alin joined
08:52
woosley joined
09:19
alin left
09:31
contingencyplan joined
09:47
alin joined,
contingencyplan left,
contingencyplan joined
09:59
lucian left
10:02
lucian joined
10:13
lucian_ joined
10:16
lucian left
10:28
lucian_ left
10:30
contingencyplan left
10:31
mj41 left
10:43
lucian joined
|
|||
| dalek | rrot: 48a8127 | bacek++ | src/pmc/sub.pmc: [cage] Remove outdated comment. |
10:44 | |
|
11:04
dodathome joined
11:10
lucian left
11:17
JimmyZ joined
11:33
zby_home joined
|
|||
| dalek | rrot/opsc_llvm: df6273e | bacek++ | src/io/io_private.h: Remove useless casts. |
11:37 | |
| rrot/opsc_llvm: 48a8127 | bacek++ | src/pmc/sub.pmc: [cage] Remove outdated comment. |
|||
| rrot/opsc_llvm: a1948f0 | bacek++ | / (8 files): Merge branch 'master' into opsc_llvm |
|||
|
11:40
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 11:42 | |
|
11:42
JimmyZ left
11:43
JimmyZ joined
|
|||
| whiteknight | have I said something nice about bacek today? | 11:44 | |
| bacek++ | |||
|
11:44
lucian joined
|
|||
| bacek | whiteknight, noooo. No I became "bacel"... | 11:45 | |
| whiteknight | then, bacel++ too | ||
| bacek | $ perl -M5.010 -e '$b="bacek"; $b++; say $b' | 11:46 | |
| bacel | |||
| :) | |||
| tadzik | bacek: did you know about perl -E? | 11:47 | |
| bacek | tadzik, erm. No idea. What is it? | ||
| wow. | |||
| Quite useful | 11:48 | ||
| tadzik++ | |||
| tadzil-- # just in case :) | 11:49 | ||
| tadzik | I'd like some pErl, doing the same but w/o -E ;) | ||
| 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:54 | ||
| bacek | tadzik, I just need some kind of VVVVLIW CPU :) | 11:55 | |
|
11:57
JimmyZ left
|
|||
| tadzik gone | 11:58 | ||
|
11:58
lucian left
|
|||
| dalek | rrot: 3a3ab5a | bacek++ | config/gen/config_h/config_h.in: Set HAS_LONGLONG and HAS_INT64 into config.h to reduce amount of warnings from StructView PMC compilation. |
11:59 | |
|
12:21
samwho joined
12:28
mj41 joined
|
|||
| dalek | rrot/opsc_llvm: 3a3ab5a | bacek++ | config/gen/config_h/config_h.in: Set HAS_LONGLONG and HAS_INT64 into config.h to reduce amount of warnings from StructView PMC compilation. |
12:51 | |
| rrot/opsc_llvm: 2c980d2 | bacek++ | config/gen/config_h/config_h.in: Merge branch 'master' into opsc_llvm |
|||
| rrot/opsc_llvm: 5d13cb0 | bacek++ | src/dynpmc/Rules.in: Link all libraries into llvm_engine. 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. |
|||
| rrot/opsc_llvm: 1d4307c | bacek++ | / (2 files): Implement Builder.get_insert_block |
|||
|
13:06
mj41 left
|
|||
| dalek | rrot: 80bcb73 | bacek++ | / (2 files): Expose current context into external world from interpret |
13:08 | |
|
13:16
jsut_ joined
13:21
jsut left
|
|||
| dalek | sella/test_refactor: 21e64d7 | Whiteknight++ | / (14 files): Add in several new tests and some new stub test files. A few small fixes throughout the test library |
13:41 | |
| sella/test_refactor: e08a944 | Whiteknight++ | src/test/ (4 files): Add in the ability to throw internal-only failures, which won't show a complete backtrace |
|||
| sella: 27b9ccd | Whiteknight++ | src/winxed/Distutils.bootstrap.pir: Merge branch 'master' into test_refactor |
13:43 | ||
| sella: acf6e7a | Whiteknight++ | / (8 files): fix several tests, remove a few unneeded debug messages |
|||
| sella: b5954ce | Whiteknight++ | t/ (4 files): fix some tests |
|||
| sella: 58ea2da | Whiteknight++ | / (5 files): figured out the cause of my last problems. Fixed remaining broken tests. Removed debugging statements |
|||
| sella: 21e64d7 | Whiteknight++ | / (14 files): Add in several new tests and some new stub test files. A few small fixes throughout the test library |
|||
| sella: e08a944 | Whiteknight++ | src/test/ (4 files): Add in the ability to throw internal-only failures, which won't show a complete backtrace |
|||
|
13:54
ambs joined
|
|||
| dalek | nxed: r864 | NotFound++ | trunk/winxedst1.winxed: hand parse parrot include files to avoid depending on PGE::P5Regex |
13:54 | |
| nxed: r865 | NotFound++ | trunk/pir/winxed_compiler.pir: update installable compiler |
|||
|
14:08
mj41 joined
14:23
alin left
14:33
mj41 left
|
|||
| dalek | rrot: df0ae5e | util++ | include/parrot/ (2 files): [Coverity] Removed #include of thread.h from atomic.h, and parrot.h from string.h. Fixes Coverity defect #473: PW.INCLUDE_RECURSION in string.h parrot.h -> platform_interface.h -> interpreter.h -> context.h -> string.h -> parrot.h Fixes Coverity defect #474: PW.INCLUDE_RECURSION in atomic.h thread.h -> atomic.h -> thread.h Fixes Coverity defect #475: PW.INCLUDE_RECURSION in parrot.h encoding.h -> parrot.h -> encoding.h |
14:34 | |
| rrot: f83909e | util++ | include/parrot/ (2 files): Merge branch 'coverity_474' |
|||
|
14:41
mj41 joined
14:44
samwho left
15:05
rurban_ joined
15:07
dodathome left,
rurban left,
rurban_ is now known as rurban
15:17
mj41 left
15:19
jsut joined
15:24
jsut_ left
15:38
dodathome joined
15:42
mj41 joined
15:55
ambs left
15:56
ambs joined
16:29
theory joined
16:37
mj41 left
16:39
lucian joined
16:42
woosley left
16:43
whiteknight left
17:17
mj41 joined
|
|||
| cotto | ~~ | 17:25 | |
| 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) | 17:46 | |
| dalek | nxed: r866 | NotFound++ | trunk/winxedst1.winxed: cosmetic changes |
18:03 | |
|
18:21
dodathome left
|
|||
| dalek | nxed: r867 | NotFound++ | trunk/winxedst1.winxed: reorganize a bit argument modifier emision |
18:24 | |
|
18:46
dodathome joined,
Patterner left
18:47
Psyche^ joined,
Psyche^ is now known as Patterner
18:57
contingencyplan joined
19:04
kurahaupo joined
|
|||
| dalek | nxed: r868 | NotFound++ | trunk/winxedst1.winxed: compile time evaluate comparaison operators with integer operands |
19:11 | |
|
19:34
elmex left
19:47
alin joined
19:57
fperrad left
19:59
fperrad joined
20:10
rurban left
20:11
Andy_ left
20:19
elmex joined
20:22
rurban joined
20:28
zby_home left
20:29
whiteknight joined
20:40
kid51 joined
|
|||
| kid51 | ~~ | 20:41 | |
| dalek | sella: cc83d37 | Whiteknight++ | src/test/ (2 files): some docs and TODO notes |
20:45 | |
|
21:01
rurban left
21:06
rurban joined
|
|||
| plobsing | ping whiteknight | 21:07 | |
|
21:17
lucian left
21:26
rurban left
|
|||
| whiteknight | pong plobsing | 21:30 | |
| plobsing | whiteknight: I suspect the problems we're seeing when removing the TT #1990 workaround occurs due to string compilations | 21:34 | |
| PGE runs several evals upon startup | |||
|
21:34
dodathome left
|
|||
| plobsing | but I can no longer track down where we register the PIR compreg | 21:34 | |
| where does that happen now? | 21:35 | ||
| whiteknight | in compilers/imcc/api.c, called from frontend/parrot/main.c | ||
| what's going wrong with strings? | 21:36 | ||
| plobsing | not sure, but the segfault occurs in a program that is all PBC, no compile from file. | 21:37 | |
|
21:58
Coke left
|
|||
| whiteknight | PGE and NQP do a lot of load_bytecode with .pir files instead of .pbc files | 22:03 | |
| internally, Parrot tries to redirect those I think, but can't always | |||
|
22:04
Coke joined
22:11
alin left
22:19
ambs left
22:25
fperrad left
22:29
lucian joined
22:43
kid51 left
22:55
contingencyplan left
23:11
Coke left
|
|||
| 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. | ||
| NotFound | whiteknight: Checking... ;) | 23:33 | |
| Uh... I've completely forgot to finish that part. | 23:35 | ||
| whiteknight | heh | 23:38 | |
| NotFound | Fixed, thanks. | 23:40 | |
| dalek | nxed: r869 | NotFound++ | trunk/winxedst1.winxed: proper diagnose invalid argument modifier, whiteknight++ |
23:41 | |
| nxed: r870 | NotFound++ | trunk/pir/winxed_compiler.pir: update installable compiler |
|||
| whiteknight | NotFound: We should throw a big party when you reach revision 1000 | 23:42 | |
| NotFound | Who pay the beers? | 23:45 | |
| dalek | sella/harness_refactor: 4046d69 | Whiteknight++ | src/tap_harness/ (5 files): delete old nqp versions of these files |
||
| sella/harness_refactor: 02362b6 | Whiteknight++ | src/tap_harness/ (6 files): start refactoring the TAP harness using a better MVC architecture. |
|||
| sella/harness_refactor: 44e7015 | Whiteknight++ | / (8 files): 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 |
|||
| sella/harness_refactor: 67de9b0 | Whiteknight++ | / (3 files): fix it so we report errors correctly |
|||