|
Parrot 4.0.0 "Hyperstasis" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 12 February 2012. |
|||
|
00:03
travis-ci joined
|
|||
| travis-ci | [travis-ci] parrot/parrot#76 (master - 33316f8 : Vasily Chekalkin): The build passed. | 00:03 | |
| [travis-ci] Change view : github.com/parrot/parrot/compare/5......33316f8 | |||
| [travis-ci] Build details : travis-ci.org/parrot/parrot/builds/717789 | |||
|
00:03
travis-ci left
00:14
particle joined
00:31
dmalcolm joined
00:35
particle1 joined
|
|||
| dalek | website: ayardley++ | Parrot 4.1.0 "Black-headed Parrot" Released | 00:41 | |
| website: www.parrot.org/news/2012/Parrot-4.1.0 | |||
| cotto | Is nobody else seeing the checkdepend.t failure? | 00:54 | |
| whiteknight | I haven't tested since yesterday | ||
|
01:13
alester joined
01:23
benabik joined
|
|||
| dalek | href="https://parrot.github.com:">parrot.github.com: b309cc8 | alvis++ | README_gh-pages.pod: Add skeleton on how to hand-roll the parrot.github.com docs and any relevant repositories. |
02:21 | |
| href="https://parrot.github.com:">parrot.github.com: a634719 | alvis++ | README_gh-pages.pod: Renamed README_gh-pages.pod to README_release.pod which better indicates the purpose of the document. |
|||
| href="https://parrot.github.com:">parrot.github.com: d35e549 | alvis++ | README_release.pod: Renamed doc to README_release.pod to better reflect the purpose of the doc. |
|||
| href="https://parrot.github.com:">parrot.github.com: 48c88df | alvis++ | README_release.pod: Partial updates to README_release.pod |
|||
| href="https://parrot.github.com:">parrot.github.com: fcd9af8 | alvis++ | / (434 files): Remove 4.0.0 docs |
|||
| href="https://parrot.github.com:">parrot.github.com: f816802 | alvis++ | / (434 files): Update to 4.1.0 docs |
|||
| rrot: cb82296 | alvis++ | docs/parrothist.pod: Update docs/parrothist.pod to correct the year for 4.0.0 and 4.1.0 |
02:40 | ||
| alvis | can someone up op me? thanks. | 03:05 | |
|
03:06
travis-ci joined
|
|||
| travis-ci | [travis-ci] parrot/parrot#77 (master - cb82296 : Alvis Yardley): The build passed. | 03:06 | |
| [travis-ci] Change view : github.com/parrot/parrot/compare/3......cb82296 | |||
| [travis-ci] Build details : travis-ci.org/parrot/parrot/builds/718416 | |||
|
03:06
travis-ci left
|
|||
| dalek | rrot: 88e81a1 | bacek++ | / (17 files): Merge remote-tracking branch 'origin/cont_reuse' |
03:13 | |
| benabik | No idea if this will work... | 03:14 | |
| opbots, trust alvis | |||
| slavorg | But I already trust alvis | ||
| alvis | benabik: thanks. let me try to set the topic again ... | 03:19 | |
| benabik: #parrot says i'm not a channel operator. do you mind setting the topic? | 03:20 | ||
|
03:20
benabik left,
benabik joined
|
|||
| benabik | Minor client error there, clicked close instead of channel info... | 03:20 | |
| (PEBCAK error, to be precise.) | 03:21 | ||
| alvis: No problem. 4.1.0 "???" | |||
| alvis | benabik: here it is: /topic #parrot Parrot 0.4.8 Released | parrot.org/ | ||
| benabik | 0.4.8? | 03:22 | |
| alvis | oops! make that 4.1.0 | ||
| benabik | Oh, dear... I lost op when I closed the window. | 03:23 | |
| opbots, do your job | |||
| benabik fails. | 03:24 | ||
| alvis | yeah, i seem to lose op a'lot. don't know why. | ||
| benabik | I think the opbots may be taking unauthorized naps. | ||
| alvis | ha! | 03:25 | |
| well, ok. thanks. i'll try again later. i gotta coupl'a more steps to finish out this release. | |||
| my eight month pregnant wife required my attention, slowing things down a'bit. :) | 03:26 | ||
| benabik | alvis: They do tend to do that. | ||
|
03:42
travis-ci joined
|
|||
| travis-ci | [travis-ci] parrot/parrot#78 (master - 88e81a1 : Vasily Chekalkin): The build passed. | 03:42 | |
| [travis-ci] Change view : github.com/parrot/parrot/compare/c......88e81a1 | |||
| [travis-ci] Build details : travis-ci.org/parrot/parrot/builds/718530 | |||
|
03:42
travis-ci left
|
|||
| moderator | Parrot 4.1.0 "Black-headed Parrot" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC | 04:06 | |
| bacek_at_work | ~~ | 04:10 | |
|
04:33
alvis joined
|
|||
| moderator | Parrot 4.1.0 Released | parrot.org | 04:34 | |
| alvis | 'k. i, think, i've got this release done, except for two items: | 04:37 | |
| 1) i do not have administrative access to parrot.org to complete item IX.5. of the 'docs/project/release_manager_guide.pod' and | 04:38 | ||
| 2) the copyright dates in 'docs/html/*.html' still report an ending date of 2011. | 04:39 | ||
| on the former, i need someone to grant me access, and i'll fix it up ... | |||
| and on the later, i'll write a script, hopefully, tomorrow -- though it may be later in the evening -- to fix it. to fix the) | 04:40 | ||
| s/to fix the)// | 04:41 | ||
|
04:59
particle joined
05:06
jsut joined
05:28
jsut_ joined
|
|||
| dalek | p: 052bc4b | moritz++ | tools/build/PARROT_REVISION: bump parrot requirement to 4.1 release |
06:05 | |
|
06:38
dngor joined
07:37
he joined
07:47
fperrad joined
07:54
preflex_ joined
08:24
mj41 joined
08:26
lucian joined
08:53
dngor_ joined
09:01
dngor joined
09:31
lucian joined
10:28
alin joined
11:01
particle joined
11:21
JimmyZ joined
11:57
pmichaud joined
11:58
PerlJam joined
12:01
Util joined,
masak joined,
Coke joined
12:15
tadzik joined
12:57
benabik joined
13:00
jsut joined
|
|||
| benabik | o/ #parrot | 13:02 | |
| dalek | kudo/macros2: 913dc7b | masak++ | src/ops/perl6.ops: [perl6.ops] wrote a real comment moritz++ for noticing. |
13:35 | |
|
14:33
PacoAir joined
|
|||
| dalek | kudo/macros2: 161f188 | masak++ | src/Perl6/Actions.pm: [Perl6::Actions] fixed remaining two macro call types The recent stuff only worked for calling macros as terms. Now it works for identifiers, terms, and ops. |
14:45 | |
|
15:01
bluescreen joined
15:26
whiteknight joined
15:27
kj joined
|
|||
| benabik | whiteknight: ping? | 15:31 | |
| msg whiteknight Love the introspection/PACT article. I am, in fact, planning to apply for GSoC with that very topic. | 15:35 | ||
| aloha | OK. I'll deliver the message. | ||
|
15:46
dmalcolm joined
15:48
Psyche^ joined
|
|||
| whiteknight | benabik: perfect! | 16:07 | |
| benabik: I was hoping you would be in this year. I think that PACT has enough space for at least two non-overlapping projects | |||
| but if we had you working on it in dedicated fasion, that would be awesome | 16:08 | ||
| benabik | The "non-overlapping" bit might be interesting. | ||
| whiteknight | if we can come to some basic agreements about what an Opcode PMC is going to look like, multiple people can build tools and interactions with that common interface | ||
| and if we had that, a single mentor could easily cover two projects, which is good considering the lack of mentors we had last year | 16:09 | ||
| benabik | I'd love to be able to build upwards to the CFG level by September. | ||
| whiteknight | that would be unbelievable | ||
| That chart was just off the top of my head. I'm not certain that AST->CFG is a step that is necessary for a compiler | |||
| but being able to construct a CFG at some point would be a big help for analysis | 16:10 | ||
| we could just as easily serialize AST->Op stream | 16:13 | ||
| benabik | The most reasonable (IMnoHO) front end for a generic compiler backend is a CFG. | ||
| whiteknight | okay, it is perfectly fine too if that's what you want. | 16:14 | |
| benabik | Providing a generic AST level syntax is really just trying to make people's lives easier. | ||
| But languages trying to do more interesting things may need more interesting ASTs. | |||
| whiteknight | If we have a generic AST and a generic CFG step and then transformations all the way down to packfiles, creating a new compiler is as easy as plugging in a parser and a runtime | ||
| benabik | Yup. | 16:15 | |
| whiteknight | because if I have, say, a PHP parser written in PHP that generates its own AST, we need a stage to translate it's tree to our AST and then the engine takes care of the rest of it | ||
| benabik | Or you can have a PHP AST -> CFG stage instead of going PHP AST -> PACT AST -> CFG. | 16:16 | |
| whiteknight | yeah, that's true. However you want to do the transformation | ||
| if we have things like optimizers that only operate on the AST stage, it seems like a bad idea to cut that out | |||
| dead code analysis will be easy at the CFG level, but certain other manipulations will happen much better in the AST | 16:17 | ||
| and then some peephole optimizations will happen at the opcode/emitter level | |||
| benabik | Dead code, constant folding, and more existing things can be done at CFG stages. | ||
| Most compiler optimizations are designed at the CFG level. | |||
| whiteknight | Okay, so it seems like the CFG is something that's going to be very central | 16:18 | |
| benabik | I'd think that AST optimizations would really be more macroish thing. "This AST node actually means this more complicated thing" | ||
| Maybe some basic re-ordering, elimination, etc. | |||
| whiteknight | AST level might be more suited for things like macro substitution than optimization then | ||
| benabik | But my vision was that everything essential could be done at the CFG level. | ||
| whiteknight | ...which would be an amazingly awesome thing to offer out of the box | 16:19 | |
| benabik | Basically, I want to port Hoopl to parrot. | ||
| whiteknight | okay | ||
| That's as good a design as any | |||
| benabik | I like any papers called "Complicated thing made simple" | 16:20 | |
| whiteknight | :) | ||
| dalek | kudo/match-refactor: dd27465 | moritz++ | src/core/Int.pm: fix signature of an infix:<!=> candidate. No idea if it makes any difference |
||
| benabik | And by the time summer comes around I should have my head deep into things like data-flow analysis. | 16:21 | |
| whiteknight | awesome | ||
| benabik | But I don't know if a summer is long enough to get that far upwards in the stack. :-/ | ||
| whiteknight | yeah, that is the big question | ||
| What if we had symbolic op PMCs already, and a serialization/deserialization mechanism for them beforehand? | 16:22 | ||
| worded differently, are there any parts of the stack that you think we could and should provide before the summer, to give our GSOC students the most to latch on to | 16:23 | ||
| benabik | Oh. I think there's an opcode PMC already. It has a lot of useful information, so you might want PACT.Opcode to just have a reference to it and the arguments. | ||
| whiteknight | right, that's what I mean | ||
| We have a PMC representing an Op. We don't have one representing the grouping of Op+args | 16:24 | ||
| benabik | (Which I think would remove the oplib pointer from your article.) | ||
| whiteknight | yeah, I was being unnecessarily verbose | ||
| not all the readers are going to be as familiar with the system as the great and powerful benabil | |||
| benabik* | |||
| benabik | hah | ||
| I suppose a basic set of Unit < Sub < Op classes would be a good start point. | 16:27 | ||
| Even if serialization doesn't exist, it would split the job into serialization on the backend and generation on the front. | 16:28 | ||
| whiteknight | that's two separate GSOC projects, in my mind | ||
| benabik | The trick would be ensuring that those had everything they need at the beginning. | ||
| whiteknight | serializing a stream of symbolic ops to packfile is not trivial, | 16:29 | |
| benabik | Yes. Which is why I worried about getting from PBC all the way up to CFG in a summer. | ||
| Deserialization somewhat exists already, so that could be used as an idea of "what do we need for the classes" | 16:30 | ||
| Going from disarm.winxed to a PACT.Disassembler shouldn't be too much work. | |||
| benabik knocks on wood. | |||
| whiteknight | Okay, let's say that I put together an Instruction and InstructionSerializer PMC type to represent an Opcode+Args and write them to packfile. If we had that before the summer started, what would you be able to do with it? | ||
| (If that's a part you're dieing to work on yourself, let me know) | 16:31 | ||
| benabik | Well, if we had a _De_serializer and the classes it output, we could have a Serializer as it's own project. I'd bet there are fun gotchas in that direction that deserialization doesn't have to worry about. | 16:32 | |
| Oh... | |||
| If we just had something that dealt with a raw stream, you mean? | |||
| Hm.... | |||
| whiteknight | My plan is to write up the basics as a single dynpmc group, so we would have Instruction, InstructionSerializer and InstructionDeserializer PMCs in a single loadable library | 16:33 | |
| the serializer would take an Array of Instructions, and the deserializer woudl output the same | |||
| benabik | As far as I can tell, it can all be done without more C-level support. | ||
| whiteknight | maybe also taking pre-allocated register counts, pre-build constant tables, etc | ||
| That's what I'm hoping. Accessing the raw packfile needs to be done in C, everything else can happen at higher levels | 16:34 | ||
| and once we have a packfile, we already have tools to write it to file, to load and execute it, etc | |||
| benabik | The point of my disasm PoC is that the C level stuff exists. :-) I'm pretty sure that the existing Packfile* classes have enough to work with. | 16:35 | |
| Although I suppose a cleaner interface could be built. It's not really pretty. | |||
| (Especially the writing side.) | |||
| There are interesting hidden dependencies. | 16:38 | ||
| If a basic serializer existed... hmmm... | 16:39 | ||
| If we created a basic serializer and a set of classes for a protocol, we could have a complex serializer as one project and a CFG as anothger. | |||
| whiteknight | The Packfile* PMCs don't take a friendly interface for ops. | 16:40 | |
| A symbolic Instruction PMC would give us the ability to do round-trim asm/disasm | |||
| round-trip | |||
| benabik | True, they deal with raw integers which have to be translated in either direction. Which can be done in-VM. | 16:41 | |
| whiteknight | The serializer might even be able to be written in winxed, if the Packfile PMCs are capable | ||
| deserializer is definitely a C-level tool | |||
| benabik | Oh? | ||
| disasm.winxed seemed to be doing a pretty capable job. The biggest gotcha I had left was Key PMCs being unfriendly to build and introspect. | 16:42 | ||
| whiteknight | maybe. The system may be more capable than I expect | 16:43 | |
| I really do want the ability to introspect bytecode from an individual sub, Which we defintely don't have now | |||
| Sub doesn't have any decent accessor for its bytecode | 16:44 | ||
| benabik | The relation between Sub and bytecode is rather loose. | ||
| Which is somewhat helpful, and somewhat not. | |||
| whiteknight | The Sub basically has a pointer to bytecode, a start index and and length | 16:45 | |
| we need to be able to get that info back out | |||
| benabik | Yes-ish. I'm very curious what will happen if we have enough optimizations that subs have overlapping bytecode. | 16:46 | |
| whiteknight | We've talked about that a lot before. I think that's disallowed | ||
| In any case, if we have a method that says "get me the bytecode for this sub" that sub can eventually be updated to assemble chunks or tease apart overlapping code | 16:47 | ||
| benabik | I see no reason it should be. A DFA with multiple entry points could be output as a sub per entry point where the guts all overlap. | ||
| I'm not sure how often that would come up, but there's no technical reason why it wouldn't work. :-D | |||
| whiteknight | regardless, the abstraction for getting bytecode stands | 16:48 | |
| benabik | Here's what I'd do: | 16:49 | |
| 1) Build a bare-bones deserializer with the minimal-functional classes needed to represent existing PBCs. | |||
| 2) Build a set of classes to represent PBCs in a "friendly" way. This is the interface between: | |||
| 3) A more competent serializer. Handles register counting, constant pools, etc (GSoC?) | |||
| 4) A CFG system that handles more interesting things like register allocation, variables, etc etc. | |||
| Ooops. I missed something in there... | 16:50 | ||
| 2.5) A basic serializer that uses the classes from 1 | |||
| whiteknight | okay | ||
| benabik | Step 3 is really "convert between the friendly and unfriendly classes" | 16:51 | |
| If 4 is done without 3, it would just need to do some very basic translation. | |||
| whiteknight | yes, that's important. The nicer the interface is, the more people are going to happily use it | ||
| We want to wrap the ugly guts in something pretty, and use the pretty where possible | |||
| Ideally, what I would like is this: A function that takes (An array of Instructions, an array of PMC constants, an array of String constants, Integers, Floats) and outputs a bytecode | 16:52 | ||
| benabik | Right. | ||
| whiteknight | If the Instructions contained optional metadata like debug symbols or annotations, those could be added in too | 16:53 | |
| or if we had some null-Instructions which represented annotations but didn't generate actual opcodes, that would work too | |||
| whichever | |||
| brb, food | |||
| benabik | ditto. | ||
| bak | 17:30 | ||
| whiteknight | awesome | ||
| I think what we want really is an InstructionBlock, which has a name, number of used registers, and an array of opcodes. An array of InstructionBlocks represents a packfile | 17:42 | ||
| a single InstructionBlock represents a Sub | |||
| var pf = new 'Packfile'; for (var ib in blocks) block.add_to(pf); return self.assemble_packfile(pf, constants, etc) | 17:43 | ||
| and to compile a single sub, essentially, we would do this: | 17:44 | ||
| benabik | Why label it InstructionBlock instead of Sub? (or SomethingSub or SubSomething) | ||
| whiteknight | We already have Sub, and in reality it's not a sub because you can't directly execute it | ||
| InstructionBlock is more like SubBuilder than Sub | |||
| benabik | Right. | ||
| whiteknight | Actually a number of problems in our system stem from the fact that we use the same type to be a Sub as we use to build and serialize a Sub | 17:45 | |
| benabik | Clear introspection requires clear abstractions. | ||
| whiteknight | right, and if Sub is anything, it's muddled | ||
| benabik | :-D | ||
| Hopefully building clear introspection will help with clear abstractions. | 17:46 | ||
| whiteknight | it will be a big motivator | 17:47 | |
| My sincere goal is to build up the abstractions we need so that we can start cleaning the internals with some protection over our heads | |||
| benabik | +1k | ||
| whiteknight | as far as I am concerned, the Sub should be a simple, read-only wrapper around an invokable chunk of bytecode. Inherently it shouldn't be anything more than that | 17:48 | |
| benabik | brb | ||
| whiteknight | The Sub shouldn't have a name associated with it, it shouldn't have namespace info, it shouldn't have multisig info, it shouldn't have anything like that. It's just invokable bytecode | ||
| And so instead of having to subclass Sub to get it to do what you want or stop doing what you don't want, you just write a wrapper for it and use that | 17:49 | ||
| because Sub is a fundamental core component and should be one of the least magical and least unpredictable things in the system | 17:50 | ||
| Then a NameSpace becomes a hash of name->Sub pairs. A multisub becomes a lookup of Sig->Sub Pairs, a Closure becomes a tuple of (Sub,Context) without needing any clones | 17:51 | ||
| Coroutine is a wrapper with a Sub, a Context and a state flag. A method is just a Sub in a name->Sub hash inside the metaobject | 17:52 | ||
| but that's off the topic a little | |||
| If I have a single Sub and I want to store it in a namespace under multiple names, or in a MultiSub under multiple Sigs, I should be allowed to do that and right now you can't | 17:53 | ||
|
18:00
dngor joined
|
|||
| benabik | Back again. | 18:04 | |
| whiteknight: 100% agreed, really. | |||
| Oh! The most core thing needed to get this working is reasonable in-VM introspection and creation of Key objects. They're pretty magical at the moment and I don't see a reasonable way to deal with them. | 18:06 | ||
| work & | 18:11 | ||
|
18:12
lucian joined
|
|||
| benabik | back | 18:17 | |
|
18:17
zack_s joined
|
|||
| whiteknight | okay, we can work on Key objects | 18:18 | |
| they're linked lists, in case that helps | 18:19 | ||
| benabik | I know what they are, there's just limited/no creation or introspection of them. | ||
| whiteknight | What kinds of operations do you want to do on them? | ||
| benabik | IIRC, there's no way to create a new one in-VM. That's done solely by IMCC. | ||
| And I'd like to be able to introspect them without them trying to access registers that don't exist. | 18:20 | ||
| whiteknight | github.com/Whiteknight/parrot-line...ory.nqp#L7 | ||
| you can make them in-VM, it's just a nightmare | |||
| benabik | What about int register keys? | ||
| Really it's keys with register types that are the problem. | 18:21 | ||
| whiteknight | oh, okay. You're right we can't really do anything with those | ||
| benabik | And they're required for constructs like `$P0[$I0] = $S0` | ||
| whiteknight | yes | ||
| github.com/parrot/parrot/issues/717 | 18:25 | ||
| benabik | whiteknight++ | 18:26 | |
| whiteknight | feel free to add any details to that ticket that you think are worth remembering | ||
| benabik | Just added a note about introspection as well. | 18:28 | |
| aloha | (parrot/parrot) Issues opened : 717 (Need a way to make register-ref Keys from PIR) by Whiteknight : github.com/parrot/parrot/issues/717 | 18:29 | |
|
18:31
dngor joined
|
|||
| whiteknight | I've added a "PACT" label for tickets on github | 18:37 | |
| If you think of anything else, make a ticket, give it that label and assign it to me | |||
| benabik | Cool. | ||
| aloha | (parrot/parrot) Issues closed : 426 ([LHF] Add tests for Plumage's Util.nqp) by japhb : github.com/parrot/parrot/issues/426 | 18:39 | |
| cotto | ~~ | 18:41 | |
| whiteknight | hello cotto | 18:52 | |
| I've cleaned up some of the labels in the issue tracker | 18:53 | ||
| now we just need a consistent scheme for color-coding them and we're set | |||
|
19:02
kid51 joined
|
|||
| aloha | (parrot/parrot) Issues closed : 344 (FileHandle .puts and .print) by Whiteknight : github.com/parrot/parrot/issues/344 | 19:10 | |
|
19:29
dmalcolm joined
|
|||
| whiteknight | funny/depressing article about kakapo (the birds): io9.com/5886679/this-is-the-worst-r...al-kingdom | 19:33 | |
|
19:36
mj41 joined
|
|||
| benabik | That's really strange. | 19:39 | |
| whiteknight | it's highly adapted to a specific environment: Where there are no natural predators and where nutrient-rich food is sparse most years | 19:43 | |
| benabik | "... this also might be why more males survived in the wild. Using the claws to try to mate with a cat is still better than just freezing up and hoping the cat loses interest." | 19:44 | |
| whiteknight | sounds like a guy I knew a while back who joined the army | 19:47 | |
| PerlJam | he used his claws to mate with a cat? | ||
| whiteknight | it wouldn't surprise me | ||
|
20:13
bluescreen joined
20:24
kid51 joined
20:25
perlite_ joined
20:44
contingencyplan joined,
contingencyplan_ joined
20:59
autark joined
21:20
dngor_ joined
21:21
zby_home joined
21:25
dngor joined
|
|||
| dalek | p: 7b8137f | moritz++ | / (3 files): implement :$var colonpair syntax Also adds a single test. |
21:28 | |
|
22:10
alin joined
22:26
lucian joined
22:58
jsut_ joined
23:41
davidfetter joined
|
|||