|
Parrot 4.3.0 "In Which..." | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 25 April 2012. |
|||
|
00:01
losinggeneration joined
00:02
jevin joined
|
|||
| benabik | Bleh. | 00:02 | |
| whiteknight | one test in one file is hanging, and I can't figure out why | 00:06 | |
| everything else seems like it's passing | |||
| actually, a few tests fail in that file, but all other files are fine | 00:08 | ||
| benabik | Sadly, I haven't poked at regexen. | 00:09 | |
| cotto | whiteknight: you could bug pmichaud_ | ||
| whiteknight | actually..... I might have found it | ||
| cotto | or you could just fix it yourself | ||
| that's a great option | 00:10 | ||
| whiteknight | if I poke around randomly and look lost and confused for long enough, eventually something good is bound to happen | ||
| ...maybe not | 00:23 | ||
|
00:27
kid51 joined
|
|||
| whiteknight | ...but, maybe I did... | 00:37 | |
| benabik | quantum bug fix! | 00:38 | |
| whiteknight | This codebase is confusing me | 00:39 | |
| benabik | o/~ On top of PAST.Compiler.coerce... all covered with cheese... o/~ | 00:41 | |
| whiteknight | GOT IT | 00:42 | |
| benabik | There are a lot of gotos in this switch. | 00:43 | |
| \\o/ whiteknight++ | |||
| cotto | ~~ | 01:01 | |
| benabik | The "fun" part about hacking on a compiler is that errors tend to be subtle and explode nowhere near their cause. | 01:09 | |
| whiteknight | how do I build Rakudo with current Parrot master? | 01:12 | |
| actually, the error is for a too-recent version of NQP | 01:14 | ||
| benabik | perl Configure.pl ; make | 01:16 | |
| cotto | whiteknight++ | ||
| whiteknight | yeah, it's telling me that my NQP isn't the right version | ||
| and I need to test Rakudo with the version of NQP I just patched | 01:18 | ||
| benabik | It shouldn't be complaining about too new a version. | 01:19 | |
| whiteknight | eff it, I just ripped the check out of Configure.pl | 01:20 | |
| ...and there's another check somewhere in the makefile | |||
| benabik | It really shouldn't complain about too new a version. It seems possible that you're not using the version of nqp you think you are. | 01:24 | |
| whiteknight | actually, I guess the version is older | 01:27 | |
| the numbering is a little confusing | |||
| 2012.04-43 is older than 2012.04-1 | 01:28 | ||
| 2012.04.1 | |||
| cotto | sounds like something snuck into you $PATH | 01:32 | |
| whiteknight | I don't get it, nqp's VERSION file says 2012.04.1, but when I build it and do ./nqp --version it gives me a different value | 01:34 | |
| whatever, I've spent all the tuits on this that I have to give tonight | 01:36 | ||
| I'm out. Goodnight | 01:37 | ||
|
02:10
Hunger joined
|
|||
| moritz | msg whiteknight your nqp pull request breaks rakudo; it seems to need some updates to src/Perl6/World.pm, method compile_in_context -- though I'm not quite sure what to do | 06:51 | |
| aloha | OK. I'll deliver the message. | ||
|
07:01
brrt joined
|
|||
| nine | msg whiteknight I got the bastard! It was just a missing lock in the GC. The problem is that I'm very reluctant to add code when I don't have a good testcase demonstrating the neccessity of the code. So I added locks only in PMC allocator functions but not for example in the fixed size allocator which blew up here... | 07:16 | |
| aloha | OK. I'll deliver the message. | ||
| prologic | Hey guys, are there any guides on going from parser/interpreter to compiler/vm (parrot) for a language designer that's relatively new at this? | 07:58 | |
| moritz | well, there's lots of literature on writing compilers | 08:12 | |
| but I guess that doesn't quite answer your question | |||
| masak | maybe the Squaak tutorial will help: www.parrotblog.org/2008/03/targetin...ot-vm.html | 08:34 | |
|
09:14
lucian joined
|
|||
| prologic | masak, thanks, I've seen that. I'll take another look | 09:20 | |
| just have questions that are unanswered at this stage until I'm ready to start writing the compiler part to target parrot pir | |||
| masak | asking here is probably a good idea. | 09:22 | |
| prologic | ok well not having ever written a vm before or bytecode, my main questions lie around questions like a) what should my compiler / code generator look like? b) how much of my language's runtime do I need to implement in PIR? (all of it, some of it, or can/should you just translate the ast into appropriate pir?) | 09:26 | |
| they're the main questions I have in my mind right now | |||
| (still learning and reading parrot/pir docs) | |||
| moritz | well, there are tools in parrot that can generate PIR (and thus bytecode) for you | 09:27 | |
| for example PCT (parrot compiler toolkit) lets you construct PAST, Parrot Abstract Syntax Tree | 09:28 | ||
| and compiles it to PIR for you | |||
| as for the runtime lib, anything that can compile to PIR or PBC is fine | 09:29 | ||
| ie you can write it in your own language, in PIR, winxed, NQP or some other language | |||
| prologic | hmm that confuses me even more :) | 09:30 | |
| but bare with me | |||
| so some of the design features around my toy (at this stage) language are that it has a prototype object model and uses message passing (ala Smalltalk, Io) | 09:31 | ||
| I've already written (prototyped) a lot of the working features in Python (as the host language) such as the lexer, parser and ast (which is just a chain of messages) as well as the required runtime model (if you can call it much of one) | 09:32 | ||
| right now (possibly because I'm still in the learning stages) I can't quite see the transition path to a working vm (using parrot as the actual vm and not writing one from scratch!) | |||
| moritz | well, you need to generate code for parrot, and you need to port the runtime part (including the object model) to parrot code | 09:36 | |
| prologic | okay cool that clears taht up - I thought that's the case | 09:37 | |
| translating an oo model to plain low-level assembler-style (pir) isn't really possible I guess | |||
| tadzik | you can write in winxed, can't you? | ||
| prologic | I can see how winxed easily translates class/functions to pir fairly straightforwardly by just making use of .sub and .namespace | ||
| but that's probably really simplistic | |||
| tadzik | before your compiler becomes self-hosting | 09:38 | |
| prologic | winxed is just a light syntax layer over pir from the looks right? | ||
| not decided on writing the runtime using winxed or plain pir yet | 09:39 | ||
| tadzik | oh, you probably don't want to write it in pir | ||
| nine | prologic: if you like pain, do it in pir! :) | ||
| prologic | haha okay | ||
| winxed will remove a lot of the boiler-plate and tediousness huh | 09:40 | ||
| ok! | |||
| nine | Though I have to admit, that I kinda liked working in PIR for a while. Reminded me of hacking x86 assembly back when I was a child ;) Those were the days... | 09:41 | |
| prologic | absolutely :) | ||
| moritz | except with fewer segfaults | ||
| prologic | had my fair share, x86, MC6800 | ||
| so some more stupid questions | 09:42 | ||
| nine | moritz: since I did it on DOS, there were no segfaults...just "interesting" effects ;) | ||
| prologic | my runtime (I'll write it in winxed I guess) should look and behave almost identically to the one I've prototyped in Python (my host language)? | ||
| to a point where I can create simple objects/methods/etc and test them in parrot | 09:43 | ||
| moritz | if your prototype was good, yes :-) | ||
| prologic | of course | ||
| hence I'm asking questions now - I'm not ready to start targetting parrot yet :) | |||
| my language implementation isn't stable enough to start thinking about that, let alone starting to think about self-hosting | 09:44 | ||
| but I digress | |||
| and once I have a working runtime model that I can play with and test using parrot, then what? | |||
| write a compiler that compiles (in Python where everything is implemented right now) to compile the message chain(s) down to equivilent PIR/winxed objects that match the runtime I've just built in winxed? | 09:45 | ||
| moritz | yes | ||
| prologic | merge/mash the output files and get parrot to compile them together | ||
| moritz | right | ||
| prologic | sot the only compiling to pbc/pir would be the actual message chains themselves | 09:46 | |
| in whatever representation I end up with (after writing the runtime model in winxed/pir) | |||
| moritz | well, depends on what your language offers | ||
| if your language has control flow (and it's not just implemented as messages), you'd compile that too | |||
| prologic | can you expand on that? | ||
| moritz | like, branching and loops and so on | 09:47 | |
| prologic | it's all just messages and objects | ||
| so all the control flow would be implemented in the runtime model | |||
| moritz | convenient for the compiler writer :-) | ||
| prologic | absolutely | 09:48 | |
| and homoiconic :) | |||
| well that's the plan anyway here | |||
| moritz | then it's probably easier to emit PIR than to use the compiler toolkit | ||
| prologic | yeap | ||
| that was my plan also | |||
| I've already done all the hardwork that the PCT offers | |||
| sorry :) | |||
| I used some rather good libraries | |||
| namely funcparserlib - a combinator recursive descent parser lib | 09:49 | ||
| the parser is only a few dozen lines of code | |||
| the other 100 or so is around actually constructing the chain of messages! | |||
| and operator precedence reshuffling and rules - which I'm going to drop I think | |||
| is there a python library for parrot (like there is the C library)? | 09:51 | ||
| moritz | I'm not aware of any | 09:52 | |
|
09:52
lucian joined
|
|||
| prologic | okay that's alright | 09:52 | |
| and btw what is miniparrot? I noticed this executable in the build dir after compiling parrot | 09:53 | ||
| moritz | I don't know | 09:54 | |
| I suspect it has something to do with the bootstrapping build or so | 09:55 | ||
| arnsholt | IIRC it's a pared down parrot for bootstrapping, yeah | 09:59 | |
| Similar to miniperl in the Perl 5 build process | |||
| prologic | ahh k | 10:00 | |
| so not really useful for anyone else :) | 10:01 | ||
| oh and you guys mentioned this the other night iirc | |||
| but parrot has no concurrency support as yet right? | |||
| tadzik | not in master branch yet | 10:02 | |
| prologic | kk | ||
| tadzik | you can ask nine about it while he's around :) | ||
| prologic | I was going to attempt to implement cooperative coroutines in my langauge anyway | ||
| so I don't need concurrency support in parrot right now | |||
| but I will want that later to spawn multiple vm(parrot) instances as real os threads | |||
| nine | prologic: you might want to have a look at niner.name/Hybrid_Threads_for_the_Parrot_VM.pdf | 10:18 | |
| prologic: in short: you just create a Task PMC, set it's code attribute to some sub, add shared data and schedule it and Parrot will execute it on a thread | 10:19 | ||
|
10:58
brrt left
11:06
ligne joined
|
|||
| prologic | this is an upcoming new parrot feature? | 11:15 | |
| nine | prologic: yep...just getting the finishing touches | ||
| prologic | cool | ||
| dalek | rrot: f2caeaf | jkeenan++ | / (2 files): _handle_ccflags_status() has been simplified, so we can simplify the corresponding step tests. |
11:16 | |
|
11:18
kid51 joined
|
|||
| prologic | nine, I look forward to it | 11:18 | |
| but for now I still have to work more on stabalizing my language :) | |||
|
12:29
bluescreen joined
12:31
nbrown joined
12:59
davidfetter joined
13:02
ttbot joined
|
|||
| Coke | does winxed support .HLL ? | 13:04 | |
|
13:05
mj41 joined
13:12
PacoAir joined
|
|||
| benabik | ~~ | 13:24 | |
|
13:37
JimmyZ joined
13:42
contingencyplan joined
13:44
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:44 | |
| tadzik | good afternoon whiteknight | ||
| whiteknight | msg moritz: Thanks, I tried to test Rakudo last night but was running into problems getting NQP configured correctly. I'll give it another spin tonight and try to track down the rakudo failures | 13:45 | |
| aloha | OK. I'll deliver the message. | ||
| whiteknight | good morning tadzik | ||
| nine++ # GC bug squashing | |||
| atrodo | Crazy idea, I wonder how well a kickstarter to fund a developer to work on parrot's guts would go | 13:49 | |
| tadzik | hmm | 13:50 | |
| I would donate to that :) | |||
| Coke | Or you could donate to the foundation. | 13:53 | |
| tadzik | true | 13:55 | |
| but my contribution alone would not be significant enough, and kickstarter may provoke many enough me-s to make it something worthwhile | 13:56 | ||
| atrodo | plus it could help to raise awareness | ||
| tadzik | aye | 13:57 | |
| nine | whiteknight: just one thing to do for the university before I can finally start with the new timer implementation. | ||
| whiteknight | that's awesome | 14:00 | |
| JimmyZ | the parrot git repo is too big... It's hard to clone it | 14:17 | |
| tadzik | yeah | ||
| JimmyZ | I have to re-download the repo after receiving objects paused | 14:18 | |
| *the whole | |||
| atrodo | JimmyZ> Try the --depth <n> option on git clone, that will only download n revisions | 14:19 | |
| JimmyZ | atrodo: will try it | 14:20 | |
| atrodo: thanks | |||
| whiteknight | is that something we can fix? | 14:21 | |
| atrodo | Can't make a git repo smaller without losing history | 14:22 | |
| JimmyZ | I think there many history about /languages | ||
| there are | 14:23 | ||
| nine | Putting tar balls of the repo on some server for download could help. | 14:40 | |
| FlightGear people have similiar problems, but their repo is several GB large. | 14:43 | ||
|
15:01
dmalcolm joined
|
|||
| JimmyZ | atrodo: That means I can't push ... | 15:06 | |
| atrodo | JimmyZ> Really? Didn't know that | ||
| JimmyZ | atrodo: :) | 15:07 | |
| nine | JimmyZ: if you want I can put a tar ball on my server for you | 15:12 | |
|
15:18
jwilliams joined
|
|||
| jwilliams | a quick question. is parrot based on csp model? i came across to read a webpage seemingly refers to this, but couldn't find it right now. so just want to check. | 15:21 | |
| PerlJam | "csp"? do you mean "cps"? (continuation passing style) | 15:23 | |
| nine | csp might be communicating sequential processes (sounds like actor model to me) | 15:24 | |
|
16:22
jashwanth joined
|
|||
| dalek | nxed: 5c598cc | NotFound++ | winxedst2.winxed: annotate switch cases |
16:42 | |
| cotto | ~~ | 17:00 | |
|
17:17
brrt joined
17:58
lucian joined
17:59
dukeleto joined
|
|||
| dukeleto | ~~ | 17:59 | |
| cotto | hio dukeleto | 18:05 | |
|
18:16
davidfetter joined
18:20
brrt joined
|
|||
| dalek | kudo/nom: dda5b09 | moritz++ | src/core/Mu.pm: hide some dispatchers from backtraces |
18:39 | |
| dukeleto | cotto: i won't be making it to LFNW this weekend | 18:41 | |
| cotto | dukeleto: ok. I've got a co-worker talking, but I still don't have a ticket. | ||
| dukeleto | cotto: trying to close on a house. What a cluster of waiting and paperwork. | 18:42 | |
| cotto | dukeleto: I'm sure whiteknight would laugh. | ||
| moritz | in sovjet russia, houses close on you! | 18:48 | |
| davidfetter | moritz, how's your russian? | 18:49 | |
| moritz | davidfetter: Nil :-) | ||
| well, I guess I know one word. | |||
| davidfetter | what's that? | 18:50 | |
| moritz | njet | ||
| davidfetter | that's a good word to know | 18:51 | |
| so is "spaseebo" (spah-SEE-buh) | |||
| moritz | what does it mean? | 18:52 | |
| awwaiid | means "thank you" I think | 18:55 | |
|
19:08
Khisanth joined,
brrt joined
19:20
dukeleto joined
|
|||
| Coke | curl -kL install.perlbrew.pl | bash | 19:30 | |
| urk? | |||
| curl -kL install.perlbrew.pl | bash | 19:31 | ||
| спасибо | |||
| there we go. | |||
|
20:26
perlite_ joined
21:12
brrt left
|
|||
| benabik | ~~ | 22:06 | |
| Coke | ho, benabik | 22:07 | |
| benabik | 'lo Coke, what's happening? | ||
| Coke | GAH! DAYJOB! | 22:09 | |
| other than that, not much. | |||
| benabik | That good, huh? | ||
| Coke | oh, it's a fine job, just have a project due in stages this month. | 22:11 | |
| benabik | I didn't assume it was always bad, just that it wasn't fun right now. :-) | 22:24 | |
|
22:46
whiteknight joined
|
|||
| whiteknight | good evening, #parrot | 22:46 | |
| benabik | o/ whiteknight | 22:47 | |
| whiteknight | hello benabik | 22:59 | |