|
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 Set by moderator on 27 March 2011. |
|||
| plobsing | that's the result of me trying to reduce the core ops last year. People writing PIR protested that it was too inconvenient. | 00:01 | |
| so the getstd ops stayed | |||
| bacek | ParrotInterp.stdfoo_handle methods aren't tested. And doesn't work apparently. | 00:02 | |
| cotto_work | charming | ||
| whiteknight | bacek: those methods do work. I use them in Rosella every day | 00:03 | |
| they might not be tested, but they do work | 00:04 | ||
| nopaste | "Whiteknight" at 192.168.1.3 pasted "fib benchmark with new Rosella Memoize library" (44 lines) at nopaste.snit.ch/39231 | 00:05 | |
| whiteknight | (abrupt change of topic) | 00:06 | |
| soh_cah_toa | so i've been editing a lot of the docs in /docs/dev. is there a max line length i should abide by? it looks like there is | 00:12 | |
| whiteknight | I think it's 78 | 00:14 | |
| 78 or 80 | |||
| aloha | 94 | ||
| whiteknight | damnit | ||
| soh_cah_toa | why thank you aloha | ||
| it also looks like they all should have a blank line at the end as well | 00:17 | ||
| cotto_work | soh_cah_toa: run make codingstd_tests and it'll yell at you as needed | ||
| If it doesn't complain about something we don't like and could reasonably detect, that's a bug. | 00:18 | ||
| kid51 | soh_cah_toa: In response to your question: tinyurl.com/3foqrn6 | ||
| cotto_work | I'd like to see a gsoc project to update all of our documentation. I don't think it'd take a whole summer, but it'd be nice to get that Augean stable cleaned out. | 00:19 | |
| soh_cah_toa | that's what i've been doing actually | ||
| cotto_work | soh_cah_toa++ | 00:20 | |
| we have too many lies and half-truths | |||
| soh_cah_toa | i've been fixing some grammar issues, format code errors, abbreviations used before explaining what it stands for, etc. | 00:21 | |
| also, you don't need =cut at the end if there's no code right? just a pod file | |||
| cotto_work | soh_cah_toa: I encourage you to try to match the docs to the code and ask (or update it yourself) if you see any discrepancies. | ||
| soh_cah_toa: podchecker can tell you that. | 00:22 | ||
| soh_cah_toa | ok | ||
| match the docs to what code? | |||
| cotto_work | whatever code the docs cover | ||
| e.g. if you're reading about pbc, check out the packfile code and try to figure out if it does what the docs say | 00:23 | ||
| soh_cah_toa | i see, okay | ||
| do they all need they vim comments at the end? e.g. expandtab, shiftwidth, etc. b/c some do and some don't | 00:24 | ||
| *the | |||
| nopaste | "kid51" at 192.168.1.3 pasted "t/src/extend_vtable.t: FAIL on Darwin/PPC with gcc for cc, g++ for link and ld" (101 lines) at nopaste.snit.ch/39238 | ||
| cotto_work | soh_cah_toa: which ones? We have a test that's supposed to make sure the codas are present. | 00:25 | |
| soh_cah_toa | docs/dev/c_functions.pod | 00:26 | |
| docs/dev/headerizer.pod | |||
| docs/dev/infant.pod | |||
| a few others i think too | |||
| some aren't all the same. for instance, some have tw=78 others don't | 00:27 | ||
| there's also a lot of broken links in infant.pod. what should i do about those? | 00:28 | ||
| cotto_work | docs/pdds/pdd07_codingstd.pod specifies which files should have which codas | ||
| nopaste | "kid51" at 192.168.1.3 pasted "t/src/extend_vtable.t: FAIL on Darwin/PPC with gcc for cc, g++ for link and ld" (113 lines) at nopaste.snit.ch/39239 | ||
| soh_cah_toa | oh good | ||
| cotto_work | I'm not sure that file is still useful. bacek, should we nuke docs/dev/infant.pod? | 00:29 | |
| bacek | cotto_work, I think it can stay. We are using "Variant 1 - C stack walking" | 00:31 | |
| cotto_work | bacek: ok | 00:32 | |
| soh_cah_toa | docs/pdds/pdd07_codingstd.pod doesn't specify the correct coda for pod files. only for source code | ||
| cotto_work | soh_cah_toa: do any pod files have codas? They're most useful for code. | 00:33 | |
| soh_cah_toa | yeah | ||
| cotto_work heads home. I'll backscroll. | 00:34 | ||
| soh_cah_toa | sure, i gotta eat dinner anyway | ||
| kid51 | I doubt we need codas for .pod files. If the formatting is bad, it's usually self-evident. 'pochecker %' gets most (but not all) other problems. | 00:35 | |
| we need codas for .pl .pir .pasm .c | |||
|
00:42
bubaflub joined
00:45
khisanth_ joined
00:47
Khisanth left
|
|||
| soh_cah_toa | kid51: so should i remove the codas from pod files, then? | 00:51 | |
| kid51 | Well, if they're there, please leave them. | 00:54 | |
| soh_cah_toa | okay | ||
| kid51 | Maybe they serve some purpose of which I am not fully aware. | ||
| After all, we know that the major problem with the docs is content, not form ;-) | 00:55 | ||
| soh_cah_toa | if that's the case then it must be a MAJOR problem | ||
| cotto | ~~ | 00:57 | |
|
00:58
mikehh joined
|
|||
| dalek | rrot/jit_prototype: cf79a9f | bacek++ | t/compilers/opsc/21-jit-files.t: Add proper unittest for "end-to-end" jitter testing. |
00:59 | |
| rrot/jit_prototype: 8496f10 | bacek++ | t/compilers/opsc/data/03.pir: Embed expected results into test. |
|||
| rrot/jit_prototype: 9de7241 | bacek++ | t/compilers/opsc/ (5 files): Add expected results and enable more tests |
|||
| rrot: 756672c | petdance++ | src/gc/gc_gms.c: Fixed PARROT_CAN_RETURN_NULL annotations |
|||
| rrot/jit_prototype: 320a8e7 | bacek++ | t/compilers/opsc/21-jit-files.t: Don't recreate Ops::File for each test. |
01:02 | ||
| kid51 | bacek: Does functionality in the jit_prototype branch depend on having a sufficiently modern LLVM? | 01:07 | |
| bacek | kid51, 2.7 at least | 01:08 | |
| mikehh | bacek: I am setting up Kubuntu 11.04 amd64 beta, I have installed LLVM 2.8, will that work? | 01:12 | |
| bacek: IOW what do I need to do to test the branches | 01:13 | ||
| kid51 | mikehh: that should work | 01:14 | |
| you just check them out and run them like any other branches | |||
| (assuming bacek got rid of hard-coding 2.7 in certain locations) | 01:15 | ||
| mikehh | do I need to specify any Configure options? | ||
| kid51 | No. | ||
| Unless you specifically want to build without llvm | |||
| perl Configure.pl --help | |||
| bacek | mikehh, try Configure.pl --llvm-config=llvm-config-2.8 | 01:16 | |
| mikehh | 'k will give it a try when I have everything set up - I doubt it will be soon, need some sleep first :-} | 01:17 | |
|
01:21
lucian left
01:27
woosley joined
02:00
whiteknight left
|
|||
| soh_cah_toa | can anyone recommend an article or document i can read to get started w/ nqp? | 02:14 | |
| kid51 | soh_cah_toa: If you find one, let me know too! :-) | 02:15 | |
| cotto | soh_cah_toa, I go for its test suite. It covers most of the basics in a fairly minimalist way. | 02:16 | |
| soh_cah_toa | where's that? | ||
| plobsing | soh_cah_toa: nqp is mostly (strictly?) a subset of Perl 6. IIUC, most of the basic perl 6 stuff should work. | ||
| soh_cah_toa | yeah, i never thought about that. i do have my perl 6 and parrot essentials book | 02:17 | |
| cotto | I don't know how up-to-date that'll be. | ||
| It'll probably help you get the basic idea of how Perl 6 works. | 02:18 | ||
| bubaflub | soh_cah_toa: perlgeek.de/blog-en/ has some perl5 to perl6 posts | ||
| i believe that's moritz++ 's blog | 02:19 | ||
| cotto | yes. That's helpful. | ||
| soh_cah_toa | yeah, this is pretty good | 02:21 | |
| bubaflub | you can also pop over to #perl6 on freenode and ask there - they're pretty friendly and helpful | 02:27 | |
| soh_cah_toa | good | 02:29 | |
| bubaflub | sorear over on #perl6 recommended looking at squaak | 02:31 | |
| soh_cah_toa | it looks like squaak is for compiling hll's into pir | 02:34 | |
| cotto | squaak is an example hll | 02:40 | |
| soh_cah_toa | oh okay | 02:41 | |
|
02:44
khisanth_ is now known as Khisanth,
kid51 left
02:50
dcolish left
|
|||
| sorear | cotto: isn't squaak implemented in nqp? | 02:51 | |
| cotto | sorear, yes | 02:52 | |
| sorear | that's why I'm suggesting it | 02:53 | |
| the squaak tutorial examines a NQP program | |||
| soh_cah_toa | oh good | 02:54 | |
| bubaflub | sorear++ | 03:00 | |
|
03:23
bubaflub left
03:35
soh_cah_toa left
03:49
mikehh left
03:52
mtk left
03:58
mtk joined
04:12
bubaflub joined
04:22
bubaflub left
04:52
theory left
05:33
mtk left
06:16
fperrad joined
06:34
particle left
06:35
particle joined
06:42
Kulag left
06:43
Kulag joined
06:44
fperrad_ joined
06:47
fperrad left,
fperrad_ is now known as fperrad
07:16
dcolish joined
07:50
dodathome joined
07:52
woosley left
09:26
cgaertner joined
|
|||
| cgaertner | hello #parrot | 09:26 | |
|
09:41
bacek left
10:08
benabik_ joined
10:09
benabik left,
benabik_ is now known as benabik
10:12
lucian joined
10:13
jsut_ joined
10:15
rohit_nsit08 joined
10:18
jsut left
10:30
bacek joined
10:52
rohit_nsit08 left
|
|||
| lucian | 'morning | 10:54 | |
| well, it's 12 here so not really | |||
|
10:56
benabik_ joined,
benabik left,
benabik_ is now known as benabik
11:00
benabik_ joined
11:02
benabik left,
benabik_ is now known as benabik
11:08
rohit_nsit08 joined
|
|||
| moritz | lucian: regarding your mail to parrot-dev... | 11:16 | |
| lucian | moritz: yes? | ||
| moritz | lucian: 6model is generic enough to do what you want | ||
| lucian: you just won't get the same benefits from at as a Perl 6 compiler does | |||
| lucian | moritz: ok, cool. that's the gist of what everyone's beey saing | 11:17 | |
| what benefits? | |||
| moritz | well | ||
| in Perl 6, attributes are declared | |||
| so an attribute $!foo can be compiled to a slot number | |||
| and if the attribute has a native type, it can be stored inline the object | 11:18 | ||
| lucian | and 6model has optimisations for that | ||
| moritz | correct | ||
| lucian | hmm. well, there are a lot of techniques to achieve similar effects in python/js | ||
| substitute "a lot" for "a couple" | |||
| v8 calls them hidden classes, PyPy has something more general | 11:19 | ||
| moritz | even if you don't use them, 6model gives you a convenient way to write metaclasses | ||
| lucian | does 6model want to be more general? or will non-perl6 be a second-class citizen forever | ||
| metaclasses are trivial in python's object system, can't get more convenient than that really | |||
| cgaertner | lucian: as I understand it, python's object model on 6model wouldn't be second class - it just would not make use of all of its features... | 11:21 | |
|
11:21
whiteknight joined
|
|||
| lucian | ch | 11:21 | |
| cgaertner: i get that. but there are plenty of other features that python's object model could make use of | |||
| cgaertner | andwhich of these are currently not in 6model? | 11:22 | |
| lucian | mainly shared structure classes | 11:23 | |
| or "hidden classes" as v8 calls them | 11:24 | ||
| it's a non-issue for perl6 because it's objects appear to be very static | |||
| moritz: cgaertner: this sort of thing morepypy.blogspot.com/2010/11/effic...jects.html | 11:26 | ||
| it's a bit like declared slots, but better | |||
| moritz | lucian: 6model is generic already | 11:28 | |
| lucian: jnthn has also implement Perl 6 specific things, but those aren't required | |||
| lucian | moritz: right. so conceivably i could implement python3-specific things? | ||
| moritz | lucian: sure | 11:29 | |
| lucian | moritz: and how hard is that? | ||
| moritz | lucian: I don't know | ||
| whiteknight | that's the crux | ||
| we need to figure out what the effort required there would be | 11:30 | ||
| moritz | there's just one way to find out: dig into the sources | ||
| lucian | ok. actually, "hidden classes" or maps or w/e you want to call them would benefit other languages as well | ||
| whiteknight: btw, i shan't have time today for that digging | 11:31 | ||
| whiteknight | no worries | ||
| rohit_nsit08 | whiteknight: hi | 11:43 | |
| whiteknight | good morning rohit_nsit08 | ||
| rohit_nsit08 | lucian: hi | ||
| lucian | hi | ||
| rohit_nsit08 | lucian: read your proposal, fantastic :-) | ||
| lucian | glad you like it. i have a 'meh' attitude towards it | ||
| plobsing | lucian: the article you linked to describes parrot's current class scheme pretty well | 11:44 | |
| lucian | plobsing: really? i had the impression classes weren't even objects | ||
| plobsing | lucian: they have a slots lookup mechanism and instances have an array of attributes | 11:45 | |
| lucian | plobsing: hmm | 11:46 | |
|
11:54
cgaertner left,
Patterner left
11:55
Psyche^ joined,
Psyche^ is now known as Patterner,
lateau joined
11:56
lateau left,
lateau joined
12:02
cgaertner joined
12:04
benabik_ joined
|
|||
| dalek | rrot/jit_prototype: 84e3931 | bacek++ | src/pmc/parrotinterpreter.pmc: Implement ParrotInterpeter.mark. It's required to be child interpreter independent from parent in terms of memory management. |
12:04 | |
| rrot/jit_prototype: 226e5bb | bacek++ | src/dynpmc/llvm_engine.pmc: Don't waste space for attributes. Store LLVMExecutionEngine directly in PMC_data. |
|||
| rrot/jit_prototype: 5d7a091 | bacek++ | t/compilers/opsc/21-jit-files.t: Reorganize logical blocks in test as preparation for more-than-one-sub JITting. |
12:05 | ||
| rrot/jit_prototype: 6ba48b4 | bacek++ | compilers/opsc/src/Ops/JIT.pm: Resurrect keep_going flag with handling "branch" and "jump" ops. |
|||
|
12:06
benabik left,
benabik_ is now known as benabik
|
|||
| dalek | sella/gh-pages: 4aec279 | Whiteknight++ | / (16 files): conflict |
12:24 | |
| sella: ca4183b | Whiteknight++ | / (4 files): fixes for Path class move |
|||
| sella: 92ae143 | Whiteknight++ | / (4 files): Add memoize to the build. Fix it so it builds, and at least part of it runs. Add in a benchmark which shows the performance difference between a naive recursive fibonacci, and a version using a memoized Y combinator |
|||
| sella: debb3fc | Whiteknight++ | / (10 files): Redo the memoizer cache system. Add in a proxy-based memoization solution in addition to the 'simple' versions |
|||
| sella: 601bc6a | Whiteknight++ | benchmarks/memoize/proxy.winxed: Add in a benchmark showing the performance of simple memoizer vs proxy-based. proxy-based is approx 60% slower, but does add more features |
|||
| cgaertner | is it correct that the flag PObj_is_object_FLAG (which decides whether pmc attribute access goes throuh the vtable get_attr/set_attr functions or through the attributes structure) is dynamic, ie modifyable at runtime? | 12:33 | |
| atupid question, I guess: if it's not, there would be no need for pmc2c to generate attribute accessor macros | 12:35 | ||
| ^stupid | |||
|
13:00
kid51 joined
13:04
ambs joined
|
|||
| cgaertner | the question wasn't as pointless as I thought | 13:10 | |
| what I really need to know is whether PObj_is_object_FLAG can change during a PMC's lifetime | |||
| whiteknight | cgaertner: yes, it should be modifiable at runtime | 13:11 | |
| cgaertner: I don't think there's a PIR opcode to do it, so you would need to do it internally | |||
| cgaertner: what are you trying to do with it? | 13:12 | ||
| cgaertner | whiteknight: I want to be able to poke into parrot's guts from gobject so that I could for example write the Vala-bindings for Rakudo in Vala | 13:13 | |
| whiteknight | ok | 13:14 | |
| cgaertner | therefore I need a gobject extension api | ||
| it would have been nice if a pmc could not suddenly becom an object | |||
| whiteknight | cgaertner: there are macros to set those flags. PObj_is_object_SET and PObj_is_object_CLEAR | ||
| oh, you don't want that flag to change? In current Parrot, it doesn't | |||
| well, unless the PMC is garbage-collected and recycled to something that isn't an object | 13:15 | ||
| cgaertner | right, if it does not change, I can have a GParrotObject subclass of GParrotPMC, and non-object pmcs can't sudeenly become objects | ||
| that way, I would only need to check for object-ness once when the PMC passes the boundary into gobject, at not on each access | 13:16 | ||
| whiteknight | checking flags is an inexpensive operation | ||
| lucian | perhaps it's just me, but i'd find being able to consume gobject more interesting | ||
| cgaertner | lucian: yes, but that gonna be my gsoc proposal - if I do all the work now, I can't get paid for that ;) | 13:17 | |
| lucian | heh. sure you can :) fiddle with the dates in git commits | 13:18 | |
| cgaertner | whiteknight: the operation may be inexpensive, but the interface won't be as nice | ||
| whiteknight | cgaertner: okay. Good interfaces are fine. I'm just making sure you're not optimizing prematurely | ||
| lucian | cgaertner: also, i'm not sure a complete parrot-gobject-introspection can be written in 3 months anyway :) | ||
| cgaertner | lucian: that might well be the case, but didn't the python bindings also start as a gsoc project? | 13:19 | |
| lucian | cgaertner: i don't know, perhaps :) | 13:20 | |
| cgaertner | whiteknight: I also plan to register pmc attributes as gobject properties, and it makes sense to put that logis into GParrotObject instead of GParrotPMC | 13:23 | |
| the latter gives low-level access, the former is roughly what is exposed to HLLs | |||
| and that means I only need to register attributes which correspond to nativa parrot types | 13:24 | ||
| which is actually the only way this can sanely work as gobject properties must have their types registered with gtype | |||
| whiteknight: if it won't break existing code, I'm going to assume that object-ness is constant over a pmc's lifetime | 13:25 | ||
| dalek | sella/gh-pages: 7126d75 | Whiteknight++ | libraries/future.md: add memoize library to listing |
13:28 | |
|
13:28
jsut joined
|
|||
| dalek | sella/gh-pages: 5dc8a0f | Whiteknight++ | index.html: remove index.html file |
13:29 | |
| whiteknight | cgaertner: that's a good idea. We probably don't want gobject messing with the attributes of built-in PMC types | 13:30 | |
| unless exposed through get_attr_str or set_attr_str, those are considered opaque | |||
|
13:33
jsut_ left
|
|||
| cgaertner | btw, this means that I could write the introspection code in Vala, which would however carry a performance penalty because of wrapper-object generation and dynamic type-checking | 13:43 | |
| whiteknight | is there a benefit to doing it in Vala? | 13:45 | |
| cgaertner | whiteknight: using libgirepository from Vala is probably easier that doing it from C or through NCI from any Parrot language | 13:47 | |
| whiteknight | ok | ||
| cgaertner | girepository is actually gobject-based, so using Vala would be natural | 13:50 | |
| if speed is a concern, one could also create a low-level wrapper over parrot's APi which treats all types as opaque and still use Vala, I guess | 13:51 | ||
| whiteknight | ok | 13:55 | |
| cgaertner | it's just that the GObject API I'm working on can be made far nicer that parrot's C API [more] | 13:57 | |
| for example, the pmc arwpper structure already is larger that apointer because it inherits form GObject (which carries at least an int for type information and a refcount), so it's not really in issue to stick a pointer to the interpreter into that as well | 13:58 | ||
| thus, you don't need to always carry the interpreter around yourself: a PMC knows where ir's from | |||
| or is there a valid use-case for invoking a PMC's vtable funciton on an interpreter which wasn't used for it's creation? | 14:00 | ||
|
14:02
kid51 left
|
|||
| whiteknight | no, the PMC should only be used with the interpreter that owns it | 14:02 | |
| lucian | cgaertner: so you're trying to make parrot objects available for gobject-introspection? | ||
| whiteknight | there are very few exceptions to that rule. | ||
| cgaertner | lucian: to a certain degree, yes | 14:04 | |
| of course that's only possible for core (ie non-dynamic) pmcs | |||
| C code for pmcs is generated, it should be possible to leverage the existing infrastructure | 14:05 | ||
| lucian | cgaertner: hmm. it'd be nice if HLLs were gobject-introspectable | 14:06 | |
| but that's certainly outside the scope of your gsoc | |||
| cgaertner | lucian: as far as I know, gi is purely static, so in the general case, that's impossible | 14:09 | |
| lucian | possibly | ||
| cgaertner | however, you can get access to HLLs through parrot's api | ||
|
14:13
lateau left
14:15
jrtayloriv joined
|
|||
| cgaertner | btw, who would be willing to mentor the project? the proposal template ask for that information, I I don't remeber anyone actually mentioning that... | 14:19 | |
|
14:30
hudnix left
14:41
hudnix joined
|
|||
| dalek | nxed: r918 | NotFound++ | trunk/winxedst1.winxed: use a specific class for argument modifiers |
14:51 | |
|
14:55
JimmyZ joined
|
|||
| JimmyZ | good evening, #parrot | 15:07 | |
| dalek | nxed: r919 | NotFound++ | trunk/winxedst1.winxed: use a specific class for parameter modifiers |
15:12 | |
|
15:15
theory joined
|
|||
| dalek | nxed: r920 | NotFound++ | trunk/pir/winxed_compiler.pir: update installable compiler |
15:22 | |
|
15:42
kid51 joined
16:00
bubaflub joined
16:15
JimmyZ left
|
|||
| cotto | ~~ | 16:18 | |
|
16:20
theory left
16:29
kid51 left
16:32
ambs_ joined,
ambs left,
ambs_ is now known as ambs
|
|||
| cgaertner just sent a mail asking for likely mentors and a revised project outline to parrot-dev | 16:38 | ||
|
16:47
lucian left
|
|||
| cgaertner is gone for today, be back tomorrow | 16:55 | ||
|
16:55
cgaertner left
17:01
Eduardow left
|
|||
| dalek | rrot/whiteknight/imcc_compreg_pmc: 8500125 | Whiteknight++ | config/gen/makefiles/root.in: fix some deps in the makefile so that checkdepend.t can shut up |
17:12 | |
|
17:18
Eduardow joined
17:37
Eduardow left
|
|||
| rohit_nsit08 | whiteknight:hi, sorry for absence from the irc, now i have finished some work on nodejs and today compiled some scripts using 'cafe' and winxed , so i can now start my work on cafe now :-) | 17:42 | |
| whiteknight | rohit_nsit08: awesome! I'm glad to hear you are making progress | 17:43 | |
| NotFound | rohit_nsit08: welcome to the Winxed fanbase ;) | ||
| rohit_nsit08 | whiteknight: thanks, had to dig a lot for it, :-) loved it | ||
| whiteknight: u play cricket? | |||
| whiteknight: sorry, i'm very happy today, india has just won cricket world cup after 28 years | 17:44 | ||
| whiteknight | rohit_nsit08: no cricket. I did hear that india beat pakistan in a nice match last week | ||
| oh, I didn't know they won the cup | |||
| rohit_nsit08 | whiteknight: yup, just 5 minutes ago :-) | ||
| whiteknight | very nice | 17:45 | |
| now we have your undivided attention :) | |||
| rohit_nsit08 | whiteknight: ya, but i saw just last half an hour, before that i was on nodejs irc :-) knowing their api , | 17:46 | |
| whiteknight: so let's get back to work, now that i'm done with some more work, i'm working on to finish my proposal and will upload it on google today | 17:48 | ||
| bubaflub | NotFound: i'm thinking about using Winxed for my NCI bindings for GMP - i might be joining the fanbase as well | ||
| rohit_nsit08 | bubaflub: hi | ||
| bubaflub | rohit_nsit08: hello | 17:49 | |
| NotFound | Soon we'll be doing the first World Winxed Users convention ;) | ||
| rohit_nsit08 | NotFound: :-) | 17:50 | |
| whiteknight | bubaflub: Winxed is to C, like PIR is to ASM | 17:52 | |
| bubaflub: once you start using it, I think you never go back to PIR | |||
| rohit_nsit08 | whiteknight: how should i start with making changes in codegen.js of cafe, right now it's generating an AST and converting it back to javascript. pls guide | 17:54 | |
| NotFound | whiteknight: BTW, I've almost finished the the syntax for function call getting multiple return values. | 17:55 | |
|
17:57
Eduardow joined
|
|||
| bubaflub | whiteknight: i'm sold. i'll modify my proposal from PIR/Test::More to Winxed/Rosella | 17:58 | |
| tadzik | whiteknight: how good is the generated code from winxed? | 17:59 | |
| rohit_nsit08 | bubaflub: faced any problem with PIR? | ||
| bubaflub | rohit_nsit08: not problems, just very low-level and i have to deal with a lot of stuff that i don't normally | ||
| rohit_nsit08 | bubaflub: i am planning to generate PIR code from my javascript compiler | ||
| bubaflub | rohit_nsit08: especially when creating and initializing an obejct | ||
| rohit_nsit08: that's fine... writing it from scratch / by hand can be tedious | 18:00 | ||
| rohit_nsit08 | bubaflub: i have spent some time with PIR, ya it's low level. seemed similar to C . | 18:01 | |
| bubaflub | rohit_nsit08: i'd say a bit lower than that... most of my hacking on Parrot has been in PIR | ||
| rohit_nsit08 | bubaflub: any benefits if i switch to winxed? | ||
| winxed is similar to javascript | |||
| bubaflub | rohit_nsit08: syntax wise, yes it is. but i'm not sure if there is any benefit | ||
| rohit_nsit08: the idea is that eventually the code would get into some form that can be compiled on parrot | 18:02 | ||
| rohit_nsit08 | ya that's the main thing, either PIR or winxed all ends to bytecode | 18:03 | |
| cotto | It'd be interesting to build a compiler that generated pbc using our packfile PMCs. | ||
|
18:04
pranq joined
|
|||
| rohit_nsit08 | cotto: what are packfile PMCs? | 18:04 | |
| cotto | src/pmc/packfile*.pmc | ||
| a pmc-based interface for dealing with the binary format parrot uses for bytecode | 18:05 | ||
| benabik | cotto: I am in the middle of writing a POST->Packfile library GSoC proposal. | ||
| cotto | benabik, have you talked with bacek? He has a POST variant that's better suited to packfile generation than the one currently used. | 18:06 | |
| benabik | cotto: Not yet, although I'm guessing that's what the nqp_pct branch is? | ||
| cotto | benabik, iirc yes | 18:07 | |
| rohit_nsit08 | cotto: packfile object is a parser? what does it parses to ? | ||
| cotto | rohit_nsit08, it's not a parser. | 18:08 | |
| tadzik | wow, the code winxed generates is awesome | ||
| at least for the examples I tried | 18:09 | ||
| rohit_nsit08 | cotto:sorry, i'm reading packfile.pmc .i read the class implements a packfile object which is a parser and serializer . | 18:10 | |
| cotto | ah. I see where the confusion came from. | ||
| benabik | rohit_nsit08: It's a parser in that it can read in a .pbc file and give an interface to its internals. | ||
| rohit_nsit08 | benabik: hmm okay, actually i'm new to pbc. Sorry didn't knew that | 18:12 | |
| benabik | rohit_nsit08: Asking questions is how you learn. :-) | ||
| cotto | The PMCs are just the interface. Note that set_string_native isn't very long. | ||
| benabik | rohit_nsit08: I mostly know that because I've been looking over the docs for a couple hours now. | ||
| cotto | Packfile_unpack, which does the work, doesn't live in the PMC code. | ||
| dalek | nxed: r921 | NotFound++ | trunk/winxedst1.winxed: experimental syntax in stage 1 to call functions with multiple results: ':(a, b) |
18:13 | |
| rohit_nsit08 | benabik: how is pbc different from PIR. | ||
| benabik: i know PIR | 18:14 | ||
| cotto | rohit_nsit08, pbc is the binary format that pir compiles to. | ||
| benabik | rohit_nsit08: PIR : pbc :: assembler : object code | ||
| cotto | (after some desugaring and magic) | ||
| rohit_nsit08 | got it . | ||
| i thought PIR is the lowest level and it gets converted into object code, the Pbc part was missing | 18:16 | ||
| thanks | |||
| benabik | rohit_nsit08: PBC is basically the object code for Parrot. It stands for Parrot ByteCode (I think) | ||
| rohit_nsit08 | yes, that's correct | 18:17 | |
| dalek | TT #2085 created by jkeenan++: Eliminate reliance on any 'tempdir' based on Perl 5's setting | 18:18 | |
| TT #2085: trac.parrot.org/parrot/ticket/2085 | |||
| TT #1544 closed by jkeenan++: t/profiling/profiling.t fails on darwin | |||
| TT #1544: trac.parrot.org/parrot/ticket/1544 | |||
| bubaflub | rohit_nsit08: if you know java there is as good analogy - .java files (which are text files written in the Java language) are compiled to bytecode .class files | ||
| rohit_nsit08: just like .class, .pbc is platform independent compiled files | 18:19 | ||
| rohit_nsit08: we have multiple languages just like the JVM does, and anything that runs on Parrot written in any languages can be compiled down to a PBC | |||
| rohit_nsit08 | bubaflub: thanks, now i have got the whole point. | 18:20 | |
| bubaflub | rohit_nsit08: glad to help. feel free to ask any questions about anything you are confused about. someone here will point ya in the right direction. | ||
| rohit_nsit08: ah, so the original question if you should use PIR or Winxed - it doesn't totally matter as long as it compiles correctly... PIR is pretty simple but can be tedious to write since it is so low-level. | |||
| rohit_nsit08: for my project i think i'll be using Winxed because it is more convenient. | 18:21 | ||
| NotFound | And even more tedious to debug. | ||
| bubaflub | rohit_nsit08: but if the code is generated, you might not care about how low-level something is | ||
| rohit_nsit08 | yup | ||
| i have decided to stick to PIR , since i know it and keep winxed for an option for future | 18:22 | ||
| dalek | nxed: r922 | NotFound++ | trunk/pir/winxed_compiler.pir: update installable compiler |
18:23 | |
|
18:26
bubaflub left
|
|||
| dalek | nxed: r923 | NotFound++ | trunk/ (3 files): add test for multiple return |
18:39 | |
|
18:44
jrt4 joined
18:46
jrtayloriv left
18:52
rohit_nsit08 left
18:55
bubaflub joined
|
|||
| whiteknight | tadzik: (sorry about the delay) the PIR generated from Winxed is very good and very efficient | 18:56 | |
| tadzik: winxed does not hide too many details, so the translation is pretty straight-forward | |||
| tadzik | yeah, I checked that out. Very nice | 18:57 | |
|
19:08
rohit_nsit08 joined
|
|||
| benabik | Is the OpLib PMC the way to access the opcode tables from inside the VM? I noticed that IMCC uses interp->op_hash from C and was looking for a way to do something similar without C code. | 19:09 | |
| sorear | rule of thumb: whatever way IMCC uses, is the wrong way | 19:10 | |
| plobsing | benabik: having a global hash of ops is wrong | 19:14 | |
| you should keep track of the oplibs that are relevant to the compile in progress and perform lookups on those. | 19:15 | ||
|
19:17
theory joined
|
|||
| benabik | sorear: I can understand where that rule's coming from, but as far as I can tell IMCC is the only thing that actually generates bytecode right now. | 19:19 | |
| sorear | benabik: there's also PIRATE, but it's rather limited | 19:20 | |
| benabik | plobsing: Fair enough... But is ObLib the right way to do that? And how do dynops get converted to opcode numbers? | ||
| sorear: Oddly enough, searching for "parrot PIRATE" doesn't give very useful links. ;) | |||
|
19:21
jevin left
|
|||
| plobsing | IMCC is the only thing that generates PBC right now because IMCC was integrated in a highlander fashion (there can be only one) | 19:21 | |
| sorear | benabik: bacek/pir IIRC | ||
| benabik | sorear: 404 from github. parrot/pir ? | 19:22 | |
| plobsing | benabik: OpLib is how you'll want to go about doing that, yes. Ops (dyn- or otherwise) need to be mapped into a segment before they can be used. The PackFilePMC representing the bytecode segment should facilitate this operation. | ||
| sorear | benabik: parrot/pir looks correct | ||
|
19:33
theory left,
theory joined
|
|||
| rohit_nsit08 | whiteknight: i'm uploading my final proposal on gsoc site. will be glad if u can have a last look before submitting gist.github.com/899803 | 19:35 | |
|
19:38
nwellnhof joined
20:20
jevin joined
|
|||
| whiteknight | rohit_nsit08: okay, looking now | 20:26 | |
| I'm going to be offline for most of the rest of the afternoon | |||
|
20:27
dodathome left
|
|||
| whiteknight | rohit_nsit08: the proposal looks good | 20:27 | |
| rohit_nsit08 | whiteknight: thanks for the reviewing , I'm putting it on mailing list and will finally submit it tomorrow morning. | 20:29 | |
| whiteknight: can i make any further changes after submitting? | |||
| benabik | GSoC 2011 Proposal for Parrot: Bytecode Emitters for POST gist.github.com/899867 | 20:44 | |
|
20:50
bubaflub left,
theory left
|
|||
| benabik | If anyone has any comments on my proposal above, I'll be online for about another half-hour. I'll leave my client open to try to catch any messages after that. I also sent a copy to the parrot-dev list for comments, so e-mail and comments on the gist itself are good. | 20:52 | |
|
20:57
pranq left
21:02
bubaflub joined
21:08
rohit_nsit08 left
21:16
clunker9_ joined
|
|||
| rblackwe | I am in pmichaud talk at Texas Linux Fest | 21:17 | |
| There are ~40 people in here. | 21:18 | ||
|
21:20
jevin left
|
|||
| sorear | is that a lot? | 21:21 | |
|
21:21
jevin joined
|
|||
| rblackwe | sorear: I think so | 21:24 | |
| I am very happy with attendence | |||
| Even better ... people seem interested | 21:25 | ||
| benabik | rblackwe: Sounds awesome. | 21:27 | |
| Heading off to "be social", whatever that is. | 21:28 | ||
|
21:32
Eduardow left
21:37
ambs left
|
|||
| rblackwe | benabik: Interactive audience too | 21:43 | |
| People are interested enough to ask questions | 21:44 | ||
|
21:45
bacek left
21:47
nwellnhof left
22:07
soh_cah_toa joined
|
|||
| dalek | rrot/whiteknight/imcc_compreg_pmc: 52f4632 | plobsing++ | src/packfile/api.c: [codingstd] c_arg_assert |
22:28 | |
| rrot/whiteknight/imcc_compreg_pmc: f0010a7 | plobsing++ | src/packfile/api.c: [codingstd] c_function_docs |
|||
| soh_cah_toa | whiteknight: i'm reworking my gsoc proposal and i have a question. would you recommend doing documentation before or after the coding phase? | 22:37 | |
| bubaflub | soh_cah_toa: if i may be so bold as to suggest you do inline documentation before and during the coding, examples after | 22:38 | |
| soh_cah_toa | bubaflub: yeah, alright. how much time should i reserve for user docs/examples? | 22:40 | |
| bubaflub | soh_cah_toa: that's a tough call. it's been my experience that the docs and tests and other "periphery" type stuff usually takes more time | ||
| soh_cah_toa: but it is in some ways more important - if you have that last week open maybe allocate some of that time to a good tutorial or README | 22:41 | ||
| soh_cah_toa | bubaflub: well, i think i'm gonna go w/ a test driven development approach w/ failing tests before and passing afterwords | ||
| bubaflub | soh_cah_toa: great. that's a good way to ensure you've got the coverage you want and need. i'd say to combine that with documentation driven development - tests and docs before the code is written | 22:42 | |
| soh_cah_toa: that might just be my style, though. your mileage may vary | |||
| soh_cah_toa | bubaflub: well, i've never developed as part of a team before so this would be the first time i actually practiced a development process w/ design, docs, test, all the works. any advice will help | 22:44 | |
| bubaflub | soh_cah_toa: sure. i think test driven development is the bee's knees. | 22:46 | |
| soh_cah_toa: but getting use to TDD can sometimes take a bit | |||
| soh_cah_toa: for me the impulse is always to just jump into the code | |||
| soh_cah_toa | bubaflub: yeah, i know | ||
| bubaflub | soh_cah_toa: and the tests (or docs or whatever) is never very glamorous | ||
| soh_cah_toa: and it's ok if there is some give and take | |||
| soh_cah_toa: i.e. you sometimes start with the tests, sometimes start with the code | 22:47 | ||
| soh_cah_toa: as long as in the end there are both good, passing tests and code | |||
| soh_cah_toa: at work i've had one line changes that take five minutes to fix | |||
| soh_cah_toa: and 45 minutes to test | |||
| soh_cah_toa | bubaflub: wow | ||
| bubaflub | soh_cah_toa: it may or may not be "worth it" in that kind of environment, but i think it's always good to have more tests | ||
| soh_cah_toa: you'll know if you broke something | |||
| soh_cah_toa: esp. if you get bug reports - every regression should have a test so you don't keep making the same mistakes | 22:48 | ||
| soh_cah_toa | bubaflub: right | ||
| bubaflub: i've never had to right documentation outside of inline comments before. are there any articles or books you could recommend for writing technical documentation? | |||
| bubaflub | soh_cah_toa: ah, that's tough. yeah, i mean most developers end up dumping stuff into a wiki... and then the information never gets updated and it gets useless. i'd say avoid the wiki route. | 22:49 | |
| soh_cah_toa: also, POD is pretty standard with Perl projects, but it has the nasty tendency of following the API a bit too closely. | |||
| soh_cah_toa: a good tutorial will show people step by step exactly what they need to get a project up and running | 22:50 | ||
| soh_cah_toa: the Catalyst tutorial or the DBIx::Class intro are both good examples of that kind of doc | |||
| soh_cah_toa: i think you can also expect feedback from the community and your mentor to help improve the docs | |||
| soh_cah_toa: and you can always bug me if you'd like my opinion | |||
| soh_cah_toa | bubaflub: o'reilly has been my best friend in the past. i'm sure they have some good books on technical writing as well | 22:51 | |
| bubaflub | soh_cah_toa: no doubt. it's not particularly my field so i don't have any suggestions off hand. | ||
| soh_cah_toa: this is a great parrot tutorial: coolnamehere.com/geekery/parrot/learn/ | 22:54 | ||
| soh_cah_toa: i'm not suggesting you do something this in-depth (as it could well be outside the scope of a single summer) but the style is engaging | |||
| soh_cah_toa: also, he does some TDD in there | |||
| soh_cah_toa | bubaflub: i know, i've been reading it religiously. it's a really great tutorial | ||
| bubaflub | soh_cah_toa: great. | 22:55 | |
|
22:56
Eduardow joined
23:04
zby_home left
23:05
benabik_ joined
23:06
benabik_ left,
benabik_ joined
23:40
benabik_ left,
benabik__ joined
23:53
benabik_ joined
23:54
jasonmay left
23:58
benabik__ left
|
|||