|
Priorities for this week: irclog.perlgeek.de/parrotsketch/201...#i_3348283 | Post closed tickets in your report. | Note: This channel is for our Tuesday status meetings (at 20:30 UTC); you probably want #parrot instead. | irclog: irclog.perlgeek.de/ Set by moderator on 1 March 2011. |
|||
|
01:35
whiteknight left
03:04
ShaneC left
05:32
contingencyplan left
07:15
eternaleye_ joined
07:19
eternaleye left
08:32
lucian joined
08:36
lucian left
10:13
lucian joined
10:22
lucian left
10:29
lucian joined
11:08
lucian left,
lucian joined
11:31
lucian left
11:32
lucian joined
11:56
lucian left
12:01
lucian joined
12:50
bluescreen joined
12:55
lucian left
13:11
bluescreen left
13:19
bluescreen joined
13:21
atrodo joined
13:29
bluescreen left
13:38
contingencyplan joined
13:40
bluescreen joined
14:32
bluescreen left
14:55
mikehh joined
15:22
bluescreen joined
16:12
bluescreen left
17:05
lucian joined
17:11
bluescreen joined
17:22
ShaneC joined
17:35
whiteknight joined
|
|||
| whiteknight will not be at #parrotsketch today | 17:35 | ||
| WHAT I DID: | |||
| * Started looking into TT #1886 for Coke. I think I have a solution in mind, although it's going to require some grunt-work. | |||
| * Setup a github pages website for Rosella. Going to be adding content and tutorials to it. (whiteknight.github.com/Rosella/) | |||
| * Fixes, cleanups and improved test coverage throughout Rosella. | |||
| * Created an experimental new Rosella library for contracts and runtime assertions | |||
| * Lots of work on the Rosella proxies library. Ability to make read-only proxies. Ability to make transparent proxies. | |||
| * Still plugging away, slowly, at the imcc branch. | |||
| WHAT I WILL DO: | |||
| * Work on TT #1886 for Coke | 17:36 | ||
| * Try to wrap up development on the IMCC branch and open it up for testing | |||
| * Play around with the new contracts library for Rosella | |||
| * Start working towards a release for Rosella (and maybe PLA) | |||
| WHAT I AM BLOCKING ON: | |||
| * Only 24 hours in the day? When did that happen? | |||
|
18:27
ekg joined
18:28
ekg left
18:29
minusnine joined
|
|||
| lucian salutes minusnine | 18:32 | ||
| minusnine waves | 18:34 | ||
|
18:34
allison joined
18:50
particle left
18:53
particle joined
19:03
bluescreen left,
kid51 joined
|
|||
| kid51 | kid51's report | 19:03 | |
| * Closed trac.parrot.org/parrot/ticket/2037 following bacek++'s research | |||
| * Some PaFo business | |||
| * Stressful week at $job; little energy for Parrot. | |||
| * Meeting up with dukeleto tomorrow | 19:04 | ||
|
19:04
bluescreen joined
|
|||
| kid51 | * At today's parrotsketch, we should review progress toward our 3.3 Roadmap Goals | 19:04 | |
| EOR | |||
| (With advent of DST, 2030 UTC => 1630 US EDT; 1330 US PDT) | 19:05 | ||
| (I'll only be able to attend first 30 min of meeting today due to Perl Seminar NY.) | 19:06 | ||
| Change of plans: Won't be able to attend any of parrotsketch today due to $job conflict | 19:22 | ||
|
19:22
kid51 left
19:50
benabik joined
19:51
bubaflub joined
20:00
minusnine left
20:10
plobsing joined
|
|||
| mikehh | What I did since my last report: | 20:12 | |
| * building and testing parrot on amd64/i386, with gcc/g++ | |||
| * some fixes | |||
| * branch testing and fixes | |||
| What I intend to do in the next week: | |||
| * testing and fixing | |||
| .eor | |||
| cotto_work | *did: | 20:15 | |
| - code review, feedback | |||
| - pushed developer tips doc (docs/project/hacking_tips.pod), improvements welcome | |||
| - uploaded docs for the release | |||
| - M0 roadmap progress | |||
| -- have the basic idea behind ffi, needs a bit of refining | |||
| - profiling runcore progress | |||
| -- none | |||
| *will do: | |||
| - finish M0 ffi, start on concurrency primitives, start polishing the spec | 20:16 | ||
| *blockers: | |||
| - none | |||
| *eor | |||
| atrodo | .did | 20:19 | |
| * isparrotfastyet hacking | |||
| * lorito thinking but no hacking | |||
| .todo | |||
| * isparrotfastyet | |||
| * help with the m0-spec with ernest | |||
| * lorito experiments | |||
| .eor | |||
|
20:21
minusnine joined
|
|||
| cotto_work | q1q | 20:24 | |
| bubaflub | DID: | 20:26 | |
| Cardinal hacking | |||
| TODO: | |||
| More cardinal hacking | |||
| Learn about NCI for GSoC | |||
| cotto_work | hello | 20:29 | |
|
20:30
davidfetter joined
|
|||
| allison | hi | 20:31 | |
| cotto_work | could be a quiet day today | 20:32 | |
| bacek | aloha | ||
| bubaflub | hello | ||
| davidfetter | namaste | ||
| plobsing | HI | ||
| mikehh | hi there | ||
| cotto_work | our goals for last week were: | 20:33 | |
| GOAL 1: Get more GSoC ideas on the wiki. (all) | |||
| GOAL 2: Close tickets (all) | |||
| GOAL 3: Produce a stable release, make life easy for gerd (all) | |||
| GOAL 4: Be ready next week to assess status of roadmap goals | |||
| How did we do with those? | |||
| plobsing | by my count, we have 23 GSoC ideas posted on the wiki | 20:34 | |
| mikehh | quite a bit of activity on 1, did some test runs on 3 | 20:35 | |
| cotto_work | The GSoC page looks excellent, though many of the tasks need specifying. | ||
|
20:35
whiteknight left
|
|||
| cotto_work | Our ticket count looks about the same. | 20:35 | |
|
20:35
nwellnhof joined
|
|||
| bacek | q2q | 20:36 | |
| cotto_work | Is anyone aware of problems gerd had with the release? It looked smooth from what I saw. | 20:37 | |
| tadzik | no ftp issues? | ||
| mikehh | didn't see any particular ones, gerd++ mentioned server links slow | ||
| cotto_work | I generated the docs from the release tarball, so that part worked fine. | 20:38 | |
| any other comments before we move to questions? | 20:39 | ||
| my q: Do we want to switch back to gen_gc as the default gc for a couple weeks? | 20:40 | ||
| mikehh | are we going (bacek++) to work on gc at all during the period of switch | 20:42 | |
| cotto_work | It's more likely to get tuits than gc_ms2. | 20:43 | |
| bacek | Unlikely. There is few improvements which can be made but I will not able to spend any time on it. | 20:44 | |
| cotto_work | I'm fine if we switch only after 3.3 is released. | ||
| bacek | gen_gc available via Configure.pl anyway. | 20:45 | |
| tadzik | Rakudo moved to --gc=gms by default now. Who still wants ms2, besides Miss Deprecation Policy? | ||
| bacek | no one | 20:46 | |
| cotto_work | tadzik: that's the big reason we're keeping it. | ||
| tadzik | ok, just checking | ||
| cotto_work | (as the default) | ||
| mikehh | I would say switch and switch back only if we get complaints | ||
| cotto_work | eoq from me then | ||
| lucian | are there any significant users other than rakudo that have issues on gms? | ||
| cotto_work | lucian: I don't believe so. Partcl is the other user that needs to be aware of it, but it's been patched. | 20:47 | |
| lucian | cotto_work: then i'd assume defaulting to gms (and having ms2 available as a compile option) is the better choice | 20:48 | |
| mikehh | how about winxed, seems to work either way | ||
| lucian | for stressing the new gc, if nothing else | ||
| cotto_work | wfm. Let's switch the default for 2-3 more weeks and switch back in time for the release (plus testing). | 20:49 | |
| eoq (really) | |||
| bacek: go ahead | |||
| bacek | q1: planet.parrotcode.org. Can we move it to planet.parrot.org? And how I can add my blog.bacek.com into it? | 20:52 | |
| allison | bacek: it's hosted by perl.org | 20:53 | |
| bacek: afaik, the only way to add a blog to it currently is to submit a request to the perl.org admins | |||
| bacek | Should we just bring it under PaFo umbrella? | 20:54 | |
| allison | bacek: and yes, it should be possible to set up a planet on OSU OSL instead, but would need someone with tuits to do the legwork | ||
| cotto_work | bacek: I look forward to following your blog. | 20:55 | |
| allison | planet sites aren't difficult to set up | ||
| would be nice to pick one of the planet implementations that allows web submissions of new blogs to aggregate | |||
| bacek | who can ask OSUOSL folks to setup one on parrot.org? | ||
| cotto_work | bacek: anyone can ask. They're pretty responsive on #osuosl on freenode. | 20:56 | |
| I think that dukeleto has access to their bug tracker. | 20:57 | ||
| bacek | cotto_work, ok. I'll try to squeeze some time today. But if someone else can do it iwbn. | ||
| cotto_work | bacek: ok | 20:58 | |
| bacek | q2: opsc_llvm branch | ||
| Currently it's highly experimental for LLVM bindings | |||
| I would like to get more eyeballs on it. | |||
| lucian | bacek: to the llvm c api? | ||
| bacek | lucian, yes | ||
| lucian | i doubt i'll have time, but i'd like to have a look at that | 20:59 | |
| bacek | Major "issue" is finding proper "libLLVM.so" in runtime. | ||
| lucian has been dreaming of writing a JIT in a HLL for a while | |||
| bacek | If we can solve it than we'll have almost functional LLVM bindings in Parrot. | 21:00 | |
| And I can move to next target - implement JIT prototype :) | |||
| mikehh | you seem to have to be specific - I have both 2.7 and 2.8 on my system, 2.9 is available | ||
| bacek | mikehh, yes. Probable via Configure.pl --llvm-lib=/usr/lib/libLLVM-2.8.so | 21:01 | |
| or something like this | |||
| Coke | both whiteknight and I have keys to planet parrot. please don't bug the perl.org admins. | ||
| bacek | Coke, ok, thanks. | ||
| Coke | and we've already started the dialog about moving the planet. it's just a realllly low priority. | 21:02 | |
| cotto_work | any other questions? | 21:05 | |
| kid51 suggested that we review our roadmap goals at the end of this #ps, but they'll be a bit fragmented since neither he nor whiteknight can make it. I suggest we review those goals on parrot-dev. | 21:06 | ||
| thoughts? objections? | 21:08 | ||
| allison | bacek: yah, with all things parrot.org related I should note Coke knows the most | ||
| mikehh | no objectios | ||
| do we have any branches ready to merge? | 21:09 | ||
| cotto_work | I'm sure we'll find one or two. | 21:12 | |
| Are there any other issues or questions before we close? | 21:13 | ||
|
21:14
bluescreen left
|
|||
| Util | Late report: I attended the VM Summit at PyCon. Blog post pending. .end | 21:14 | |
| cotto_work | Util: looking forward to it | ||
| lucian is curious about that | 21:15 | ||
|
21:15
minusnine left
|
|||
| Util | lucian: anything in particular? | 21:16 | |
|
21:16
minusnine joined
|
|||
| lucian | Util: bits reusable in other VMs | 21:17 | |
| Util | There will be a bit about that. | 21:18 | |
| mikehh | goal setting? | 21:19 | |
| cotto_work | mikehh: I was just about to forget that. Thanks. | ||
| GOAL 1: discuss roadmap goals on parrot-dev (team leads) | 21:20 | ||
| GOAL 2: merge branches, clean up (all) | 21:21 | ||
| GOAL 3: work on llvm probes for the opsc_llvm branch (bacek, all) | |||
| more are welcome | |||
|
21:29
bluescreen joined
|
|||
| cotto_work | let's call it a wrap | 21:30 | |
|
21:31
nwellnhof left
|
|||
| allison | starting up the next meeting in the channel... | 21:33 | |
| minusnine asked to meet with lucian and I about python-on-parrot implementations | |||
| minusnine | ...but of course others' input is welcome | 21:34 | |
| allison | joining us are the pypy developers, here at the development sprints at PyCon | ||
| minusnine | neat. ah the power of technology and collaboration. | ||
| lucian | THIS IS OPENSOURCE! | ||
| lucian kicks cvs into pit | |||
| minusnine | basically, all three of us have been talking about such an implementation for a while. I thought it might be a good idea to get onto the same page as to what needs to happen and where we're going. | 21:35 | |
| Specifically, allison and lucian have some strong ideas. | |||
| (I'm just tagging along and (hopefully) will do what I'm told :-) | 21:36 | ||
| allison | lucian: could you tell us a little about pynie-ng (have I got the name right)? | ||
| lucian | allison: yeah, i guess | 21:37 | |
| the idea is to reuse an existing pure-python compiler, rewriting the backend to target PIR or maybe Winxed | |||
| then, to close the loop by implementing the core types the compiler references on parrot, likely in winxed | |||
| allison | do you have a specific pure-python compiler in mind? | 21:39 | |
| or, still evaluating options? | |||
| lucian | allison: the most promising one is PyPy | 21:40 | |
| there are a few others, although less nice | |||
| afaict, there isn't any pure python3 one | |||
| s/is PyPy/is PyPy's/ | 21:41 | ||
| allison | summarizing from pypy developers... | 21:43 | |
| they say the pure-python parser that they have is tightly coupled with the pypy interpreter | |||
| lucian | allison: in that it outputs PyPy interpreter-specific bytecode? | 21:44 | |
| allison | that is, it's not currently intended for multiple backends | ||
|
21:44
bluescreen left
|
|||
| allison | on the other side, they have the pypy static compiler, which only inputs RPython (not full Python syntax) | 21:44 | |
| and compiles it to multiple backends | |||
| lucian | allison: yes, but that generates interpreters | 21:45 | |
| in fact, it's an entire (and huge) translation framework | |||
| allison | a translation framework for RPython, not Python | 21:46 | |
| lucian | allison: yes | ||
| allison | (this is an important distinction as far as they're concerned) | ||
| lucian | allison: also, RPython is mostly just an implementation detail of their VM-building framework | ||
| allison | that is, the full object framework is implemented to run in RPython | ||
| lucian | their terminology is kinda crappy | ||
| allison | and we'd be running their VM on top of our VM | 21:47 | |
| lucian | allison: yes. which is pointless | ||
| allison | yup, agreed | ||
| (and they also agree) | |||
| minusnine | fwiw, I agree too. | ||
| Util | Parrot + PyPy = FlyPy :) | ||
| lucian | Util: more like divepy | ||
| i'd be *SLOOOW* | 21:48 | ||
| it'd | |||
| allison | yup | ||
| lucian | allison: i'm not convinced that their compiler isn't useful, however | ||
| allison | there's a chance that we could bootstrap it | ||
| as in, run it initially in PyPy or CPython, to generate a PIR version of itself | 21:49 | ||
| lucian | allison: i wouldn't be dissatisfied if the pynie-ng compiler depended on CPython for a while | ||
| allison | and thereafter use the PIR version to regenerate the PIR version | ||
| yes, I'd be totally fine with a CPython dependency to get started | 21:50 | ||
| lucian | but yes, bootstrapping would prove pynie-ng is useful | ||
| the main barrier is that most reusable code is written in python2, and pynie would be python3 | |||
| of course, later moving to CPython3 and then to pynie-ng would also be ok | 21:51 | ||
| allison | if we used the PyPy parser directly, pynie-ng wouldn't be python3 anymore | ||
| lucian | allison: indeed | ||
| although i'm not convinced that's a bad idea either | |||
| i'd really like parrot to have both python2 and python3 | |||
| allison | given time-for-development, we're more likely to get adoption for python3 | 21:52 | |
| but, yes, both python2 and python3 would be ideal | |||
| lucian | yes, i tend to agree that python3 should probably done before python2 | ||
| minusnine | agreed on python3 before python2 | ||
| allison | any chance that we could use the existing pypy parser for python2, develop it in parallel with an updated version of the same parser for python3 | 21:53 | |
| lucian | allison: do you happen to know whether the pypy parser uses the CPython grammar file? | ||
| allison | and contribute the python3 updates back to pypy? | ||
| yes | |||
| lucian | allison: i think that's unlikely, unless pypy folks refactor their compiler to be retargetable | ||
| allison | (the pypy developers say) | ||
| they start with the straight CPython grammar, then run it through their own version of pgen implemented in RPython | 21:54 | ||
| lucian | i'd see pynie-ng as more of a fork of the pypy compiler than a branch | ||
| allison | the Python3 parser can be a total fork | ||
| lucian | allison: i see. that's annoying | ||
| allison | not necessarily | ||
| lucian | i'd love to have *one* python compiler with multiple backends, to be used by everyone | 21:55 | |
| allison | I mean, we could do a pretty straight translation of their pgen-in-RPython to pgen-in-PIR | ||
| lucian | allison: can't it be in pure python? | ||
|
21:56
cxreg left
|
|||
| lucian has little experience with compilers | 21:56 | ||
| my internet will die for a bit | |||
| allison | afaik, RPython is a subset of CPython, so runs on the straight interpreter... let me double-check with them | ||
| lucian | 2mins max | ||
| allison | okay, will wait for you | ||
|
21:58
lucian_ joined
|
|||
| lucian_ is back | 21:59 | ||
| allison blocking on other sprinters, just a sec | |||
| lucian_ | allison: afaik RPython running on CPython still depends on the PyPy translation framework | 22:00 | |
|
22:02
lucian left
|
|||
| allison | answer: RPython syntax is a pure subset of CPython so it runs directly | 22:02 | |
|
22:02
lucian_ is now known as lucian
|
|||
| allison | but, depending on how pgen-on-RPython was implemented, it might depend on some libraries from PyPY | 22:03 | |
| minusnine | grr my turn: fwiw, the passive observer needs to commute to ny perl seminar (should only be a few minutes). I'll rejoin there. | ||
| allison | so, we'd need to try it out and see | ||
| minusnine | please continue the discussion | ||
| allison | minusnine: will update you on anything when you return | ||
| lucian | allison: i see. i remember you said you tried the stdlib ast modile | ||
| allison | well, I tried hacking out the CPython parser directly from the interpreter | 22:04 | |
| I didn't try introspecting through the ast module on a running CPython interpreter | 22:05 | ||
| lucian | allison: so parse with ast, compile from that ast to something? | ||
| allison | (I was trying to avoid the full CPython interpreter) | ||
| scraping the ast in a running CPython interpreter might be a decent bootstrapping option | 22:06 | ||
| lucian | allison: yes, and rewrite the parser in pure python later on | ||
| allison | i.e. use it to dump PIR, and then run PIR directly on Parrot VM | ||
| lucian | yep | ||
| i really wouldn't mind depending on cpython for the foreseeable future, everyone has it | 22:07 | ||
| allison | yes, pure python parser could be later (possibly based on PyPy's pgen-in-RPython) | ||
| lucian | allison: and we'd get py3 for "free" docs.python.org/release/3.0.1/library/ast.html | ||
| allison | cpython3? | ||
| lucian | well, cpython3 requires installation, yes | ||
| allison | or, is ast the same for both 2 and 3? | 22:08 | |
| lucian | allison: not quite afaik | ||
| allison | makes sense | 22:09 | |
| lucian | ah, no docs.python.org/library/ast.html | ||
| allison | but, it'd likely be possible to port cpython3 ast scraper to cpython2 ast scraper | ||
| lucian | this has been removed in py3, but not really useful docs.python.org/library/compiler.html | ||
| so the ast module seems identical for both | |||
| allison | sweet! | 22:10 | |
| just a sec, let me check with core python devs | |||
| lucian | perhaps core devs might be convinced to rewrite in pure python? | 22:11 | |
| allison | rewrite which in pure python? | 22:12 | |
| ast is slightly different in 2 and 3, 3 is somewhat simplified | |||
| (more details coming...) | |||
| lucian | allison: rewrite the ast module | ||
| it's C now afaik | |||
|
22:12
plobsing left
22:13
plobsing joined
|
|||
| allison | docs.python.org/devguide/compiler.html | 22:18 | |
| so, the differences between 2 and 3 are functional | 22:20 | ||
| that is, they're because of the different behaviour on 2 and 3 | |||
| but, they're both written in the same AST format | |||
| Zephyr Abstract Syntax Definition Language | 22:21 | ||
| (full definition linked from that page above) | |||
| lucian | right | 22:22 | |
| allison | so, it's possible that we could have one translator for both | ||
| lucian page still loading here | |||
| ah, done | 22:23 | ||
|
22:23
minusnine_ joined
|
|||
| minusnine_ | woohoo. back. | 22:23 | |
| allison | giving an initial workflow of: | ||
| 1) write your application in CPython | |||
| 2) load it in CPython, together with a PIRTranslator module | 22:24 | ||
| 3) dump your full application to PIR | |||
| 4) Run it on the Parrot VM | |||
| pretty compelling for trying out Parrot | 22:25 | ||
| minusnine: we're looking at CPython's ast | |||
| minusnine: docs.python.org/devguide/compiler.html | |||
| lucian | allison: do you mean that 2) is online compilation? | 22:26 | |
| or are 2) and 3) just stages of the compilation? | |||
| minusnine_ | yup, reading the irc logs | ||
|
22:26
plobsing left
|
|||
| allison | lucian: what do you mean by "online compilation"? | 22:30 | |
| lucian: yes, just mean stages of compilation, resulting in a version of the application in PIR | |||
| lucian | allison: like PyPy does. but i don't think you meant that | ||
| allison | yeah, I meant a more manual compilation process | 22:31 | |
| just as a "first implementation" | |||
|
22:31
plobsing joined
|
|||
| lucian | yeah. it might actually be relatively easy to implement | 22:32 | |
| allison | I mean, eventually we'd want to be able to run Python sources straight (a registered compiler module in Parrot) | ||
| but, not a bad way to start | |||
| we'd still need to implement PyObject and core types in Parrot | 22:33 | ||
| lucian | allison: all that would be missing for that is a pure-python parser that offered the same api as the ast module | ||
| allison | doable | ||
| lucian | allison: yes | ||
| that seems like the bulk of the work | |||
| allison | yeah | ||
| (for both the pure-python parser later, and objects being the bulk of the work) | 22:34 | ||
| lucian | i'm worried about corner-cases | ||
| for both core types and compiler | 22:35 | ||
| allison | minusnine: have we caught you up enough? | ||
| lucian: yeah, we'll have corner-cases to deal with no matter what the implementation | 22:36 | ||
| minusnine_ | :-) yes, thanks. Apologies that I don't have much to offer with regards to strategy and tradeoffs. I'm mostly unfamiliar with the particular projects involved (though am familiar with compiler design and generally mashing systems together) | ||
| allison | minusnine: we're all learning here (it's been really nice to have pypy and cpython devs here to answer questions) | 22:37 | |
| minusnine_ | revision: slightly familiar with compiler design. at least I got to steal some knowledge from Al Aho :-) | ||
| allison | :) he's da man! | ||
| is this a good strategy to start on for pynie-ng? | 22:38 | ||
| (and, I'm happy to just call it "Pynie", and deprecate the old repos) | 22:39 | ||
|
22:39
bubaflub left
|
|||
| lucian | allison: yeah, pynie sounds fine | 22:41 | |
| tadzik | yay, Python on Parrot! | ||
| lucian | allison: also to note is that there would be two versions of the core types, too | ||
| for py2 and py3 | |||
| allison | that's true | ||
| should we start on py3 for simplicity? | |||
| get one working? | |||
| lucian | allison: yes, old style classes are just a headache | 22:42 | |
| i'm tempted to not implement old style classes in pynie2, but since it's for backwards compat, not very useful | 22:43 | ||
| allison | so, basically two pieces, py3 classes, (written in winxed?) and a CPython3 module to dump AST->PIR | ||
| lucian | yep, pretty much | ||
| NotFound suggested maybe doing AST->winxed for simplicity | 22:44 | ||
| allison | lucian: yeah, seems pynie2 classes will have to be backward compatible, no matter how ugly | ||
| minusnine_ | agreed. supporting earlier than at least python 2.2 should probably out of scope | ||
| lucian | allison: it's entirely possible that by the time pynie is usable, people would've moved to py3 more | ||
| minusnine_: i'm thinking py2.7 | |||
| allison | lucian: ast->winexd could work too, though it's an extra stage... does winexed translate directly to PIR? | 22:45 | |
| minusnine_ | lucian: agreed | ||
| lucian | allison: yes, winxed->pir | ||
| davidfetter | py3 == way out ahead of a lot of python apps | ||
| allison | lucian: I mean, ultimately we want to produce code that runs on Parrot VM with the smallest possible interpretation overhead | ||
| lucian: great | |||
| lucian | davidfetter: yep. pynie will manage to beat cpython3 at not running anything | ||
| davidfetter | lol | 22:46 | |
| allison | davidfetter: it is, but we (python devs) are working really hard now on python3 migration plans | ||
| davidfetter | <-- python n00b | ||
| thanks for the heads-up :) | |||
| allison | davidfetter: so, by the time python3-on-parrot is strong, there will be more available | ||
| lucian | allison: at least for now, if winxed compiles reasonably fast, it may be a good target | 22:47 | |
| davidfetter | christmas? 2011q3? | ||
| allison | davidfetter: (I'm assuming we're talking 2-years-ish) | ||
| davidfetter | k | ||
| davidfetter would dearly love to be able to produce a PL/Python (sandboxed language for postgres) using parrot | 22:48 | ||
| lucian | allison: but winxed semantics might be restrictive (or at least more restrictive than PIR's) | ||
| minusnine_ | davidfetter: has parrot been integrated into postgres yet? | 22:49 | |
| allison | lucian: ah, good point | ||
|
22:49
whiteknight joined
|
|||
| Tene | minusnine_: Yes. | 22:49 | |
| davidfetter | minusnine_, well, dukeleto++ did some amazing work on PL/PIR and PL/Rakudo, so yes | ||
| Tene | minusnine_: you'll want to talk to dukeleto about it. | ||
| davidfetter | but nothing out there's in production yet, afaik | 22:50 | |
| minusnine_ | Tene, davidfetter: no worries, i just missed that. that's very cool. | ||
| davidfetter | it was my dumb idea, long ago, but dukeleto actually went and built it :) | ||
| ...which turned it from a dumb idea to a cool hack ;) | 22:51 | ||
| Tene | fwiw, looks like 6model is going to be a very good base to build an object model on. It's more than sufficiently flexible to support Cardinal, which Parrot's objects weren't. | ||
| lucian | Tene: i'll have to look into that | 22:52 | |
| Tene | Once I get cardinal's object model working well, I've already been planning on writing an object model for python. | ||
| davidfetter | speaking of which, what stat's cardinal in atm? | ||
| state's* | |||
| Tene | davidfetter: blocked on a new object model | ||
| davidfetter | heh | ||
| lucian | allison: any insight on 6model | ||
| allison | (just a sec, in conversation with python 2-to-3 developers) | 22:54 | |
| lucian | ok | ||
| github.com/jnthn/6model/blob/maste...erview.pod sounds alright | 22:56 | ||
| there are some assumptions that are a mismatch to python, though | |||
| allison | I suspect 6model is going to be a terrible fit for Python | ||
| I certainly wouldn't wait for it or block on it | |||
| Tene | allison: Why is that? | 22:57 | |
| lucian | Tene: for one, it has methods and it optimises for that | ||
| python has no methods | 22:58 | ||
| allison | Tene: it may be a much closer fit for ruby, as perl6 objects are heavily inspired by ruby | ||
| tadzik | is python object model too primitive for that? | 22:59 | |
| Tene | allison: Not really; the Perl 6 representation built on 6model is totally inappropriate for ruby. | ||
| lucian | tadzik: it's just very different | ||
| it could be implemented with just attributes (ignoring 6model methods) | |||
| Tene | Ruby's attributes are completely different, inheritance model is very different, etc. | ||
| lucian | tadzik: oh, you meant methods? python methods are just attributes that are callable | ||
| allison | Tene: I thought you said it was a good fit? | ||
| (6model and ruby) | 23:00 | ||
| Tene | allison: I said that 6model is, not the Perl 6 representation built on 6model. | ||
| lucian | allison: it might be nice if the 6model method cache could be used for python, i guess | ||
| allison | Tene: or, are you saying it's sufficiently general to accomodate different object models? | ||
| lucian | allison: the way i see it, 6model is a small subset of CLOS | ||
| Tene | allison: That's what I'm saying. Rakudo will use (among others) a representationc alled P6Opaque, which is built on 6model. | 23:01 | |
| allison | Tene: okay, that's reasonable | ||
| Tene: I'm reacting at a more fundamental level, having been badly burned by trying to use NQP for Python | |||
| Tene: so very, very wary of relying on anything Perl6-related | |||
| Tene | Sure. | ||
| lucian openly hates perl5 | 23:02 | ||
| allison | Tene: but, 6model may turn out to be different | ||
| lucian | it bothers me a bit that in 6model state and behaviour are lumped together | ||
| allison | lucian: at this point though, we still shouldn't block on any other implementation efforts | ||
| minusnine_ am learning about abuses of perl5's typeglobs | |||
| lucian | allison: so roll our own? | ||
| allison | lucian: so if it's simple enough to roll PyObject in winexed, go for it | ||
| lucian | allison: i'm not sure it is | 23:03 | |
| i certainly wouldn't mind getting stuff for free | |||
|
23:03
plobsing left
|
|||
| allison | lucian: we can always re-implement later with 6model if it looks good | 23:03 | |
| Tene | For example, Perl 6 attributes are pre-declared, (mostly) known at compile-time, and per-class, such that separate attributes of the same name in classes that inherit from each other are different storage locations. In Ruby, objects just have a flat set of attributes, completely unrelated to any classes. | ||
| lucian: Explain what bothers you about 6model's treatment of state and behaviour? | |||
| lucian | Tene: it assumes single dispatch | 23:04 | |
| allison | lucian: is it easier to implement PyObject in PIR, or Parrot's PMC macroized-C? | ||
| lucian | allison: i don't have experience with the latter, but it scares me | ||
| i'd say winxed/pir | |||
| allison | lucian: another possibility is to see how much of PyPy's PyObject implementation we could use | 23:05 | |
| not sure if it's in RPython or in C | |||
| lucian | allison: i doubt if any. it seems to heavily depends on the object space, written in RPython, and again depending on PyPy libs | ||
| allison | agreed, winexed/pir sounds like the safest option to me | ||
| lucian: yeah, that's a big dependency in PyPY | 23:06 | ||
|
23:06
plobsing joined
|
|||
| Tene | lucian: I don't think that that's the case? Multiple-dispatch isn't in the problem space that 6model is addressing. 6model provides means to build single dispatch semantics, as those are part of the object model, but you don't have to use them if they don't make sense for your language. | 23:06 | |
| lucian | Tene: if i don't use them, what's the point? also, what about performance, since 6model will optimise for single-dispatch, attributes-and-methods | ||
| allison | Tene: the thing is, what we're trying to implement is Python's core data types, much lower-level than an object model | 23:07 | |
| lucian | allison: not really much lower | 23:08 | |
| allison | long-term, I'm open-minded on 6model | ||
| for now, winexed/pir seems like the best starter approach | |||
| lucian | allison: all python core types are objects | ||
| allison | lucian: they have a method/attribute interface, yes | ||
| lucian | allison: it's an implementation detail that they just act like 'object' | 23:09 | |
| so it'd be nice if 6model could be used for 'object', and inherit that for 'dict' and so on | |||
| Tene | lucian: First, be aware that I'm very uninformed about python's object model. | ||
| Having said that, 6model provides an API for representation polymorphism and behaviours around method dispatch, attribute access, etc. | 23:11 | ||
| lucian | Tene: in short, objects are things with attributes. attributes can be get/set pretty much from anywhere. there are functions (callables). functions can be attributes of objects, and when bound receive self (like this) as the first argument | ||
| so obj.bla gets the attribute | 23:12 | ||
| it could be a function | |||
| Tene | lucian: Are attributes declared? Do all instances of a class have the same set of attributes? | ||
| Can anyone set additional attributes on an object? | |||
| can I just say "obj.my_special_attr = 1" from anywhere? | |||
| lucian | Tene: attributes aren't declared. instances only share class attributes | ||
| Tene: yeah, pretty much | |||
| Tene: think of objects like huge dicts, similar a bit to lua/js | 23:13 | ||
| allison | lucian: er, no on the randomly created attributes, IIRC | ||
| Tene | Okay, that's a lot like Ruby's attribute model. | ||
| lucian | allison: it doesn't work on 'object', but it works on user-created classes | ||
| it's a CPython detail afaik | |||
| Tene | lucian: class attributes? Are those just attributes on the class object? | ||
| lucian | Tene: yeah, pretty much | ||
| allison | lucian: on classes or instances of classes? | ||
| lucian | allison: i think both. i should try before spouting crap | 23:14 | |
| Tene | Are those accessed through the object, or separately through the class? If I access an attributes on an object that's not set, does it look at the class for a fallback or something? | ||
| lucian | Tene: class as fallback | ||
| sort of | |||
| Tene: i think that's exactly what happens in fact | 23:15 | ||
| can i paste here? my browser's acting up | |||
|
23:16
cotto left
|
|||
| Tene | Sure. | 23:16 | |
| lucian | ah, finally gist.github.com/871711 | ||
| excuse the crappy names | |||
| allison: as you can see, for user-created classes it works. try that with object() and it won't | |||
| Tene | So, in 6model, your repr for user objects would have (at least) a reference to a class and a reference to a dict to store attributes in. I don't know what inheritance is like in python, if it supports MI or can change at runtime or anything. | 23:17 | |
| lucian | Tene: both | 23:18 | |
| Tene: it's C3 though, so not weird | |||
| Tene | lucian: Here's what jnthn's proposed repr for ruby looks like: github.com/perl6/nqp/blob/master/s...ttrStore.c | 23:19 | |
| lucian | Tene: python's objects are indeed similar to ruby's when it comes to actual usage | ||
| Tene | So, object is something different, then? What's object() ? | 23:20 | |
| lucian | the root object | ||
| allison | mmm... this is a new definition of "simple" I'm not familiar with | ||
| sorry, I'm descending into sarcasm, I think I'm hungry :( | 23:21 | ||
| lucian | allison: it does look at least a little horrible. and it's C | ||
| Tene | :) | ||
| lucian | Tene: so is this the common way to use 6model? | 23:22 | |
| allison | Tene: do you know if it's anticipated that the language implementations of object models on 6model with be implemented in macroized-C? | ||
| Util | Regarding 6model's single/multiple inheritance: see irclog.perlgeek.de/parrot/2011-03-15#i_3396281 | ||
| allison | er, yeah, what lucian asked | ||
| lucian: it may be too early to know yet | 23:24 | ||
| lucian | Util: i'm not too bothered by inheritance, it's easy after you have attributes working | ||
| Tene | allison: That's just the instance representation/storage; the behaviour of things like inheritance, method lookup, etc. is just methods on an object, and so can be implemented in any HLL. | 23:25 | |
| lucian | well, for a certain definition of 'easy' | ||
| Tene | Cardinal's will be written in Ruby. | ||
| lucian | Tene: subset of ruby? | ||
| allison | full-ruby without objects? | 23:26 | |
| lucian is back in 5min | |||
| allison | or, full-ruby with proto-objects provided by 6model? | 23:27 | |
| Tene | allison: I expect it to be full ruby with possibly some custom cardinal-specific extensions. | 23:28 | |
| I'm fairly confident that it's bootstrappable without notable difficulty, but I haven't actually done it yet. | |||
| allison renotes unpleasant past experiences building on top of systems that are unfinished and rapidly changing | |||
| Tene | allison: "I expect it to be ..." is talking about my expectations for implementing ruby's model for cardinal, not talking about expected changes in 6model. | 23:29 | |
| allison | but then, that rule may apply to Parrot itself in the not-to-distant-future, if Lorito is realized | ||
| Tene | Nothing I've looked at so far has changed in any way that I've noticed over the past two months or so. I've been working on this very intermittently. Very busy with work lately. | 23:30 | |
| But, you're right, there are likely to be changes. At the very least, Parrot is planning to adopt 6model into its core. | 23:31 | ||
| There's likely to be some amount of shuffling at that point. | |||
| I'm not particularly invested in "selling 6model" or anything, just trying to be informative. | 23:32 | ||
| FWIW, the object model for NQP is written in NQP: github.com/perl6/nqp/blob/master/s...lassHOW.pm | 23:33 | ||
| allison | how heavy are the dependencies for 6model now? | 23:34 | |
| cotto_work | allison: "when" ;) | ||
| allison | cotto: er, what? | ||
| cotto_work | <allison> but then, that rule may apply to Parrot itself in the not-to-distant-future, if Lorito is realized | ||
| allison | ah, I thought you were answering the question about 6model dependencies :) | 23:35 | |
| "when" sounds like one of those weird perl 6 object model things | |||
| cotto_work | that would be a strange answe | ||
| r | |||
| Tene | allison: NQP, although it could probably be extracted out, and likely will when imported into parrot's core. | ||
| allison | it's got like, HOW and WHAT, ja? | 23:36 | |
| NQP is right out as a dependency for pynie | |||
| been there, done that | |||
| Tene | 'k | 23:38 | |
| TimToady | "NQP" is more than one thing these days | ||
| allison | TimToady: I'm familiar with it as "a lightweight language, partial Perl 6 + p6 regexes, targeted at implementing compilers"? | 23:40 | |
| TimToady | with native reprs, it is potentially becoming a C replacment | 23:41 | |
| allison | particularly targeted at implementing perl 6, but general enough to implement multiple dynamic languages | ||
| in the sense of being a good language to write system libraries in? | 23:42 | ||
| TimToady | potentially, but then, that's always been an underlying goal of adding a type system to Perl 6 :) | ||
| allison | or, a good general-purpose low-level language? | ||
| or, a good way of writing very fast (static) code? | 23:43 | ||
| TimToady | well, the "NQ" of "NQ" keeps varying... | ||
| we hope the dynamic range of p6 is that large, so not-quite that may achieve some of it | |||
| allison | "NotQuite" transforming to "Very Close To"? | 23:44 | |
| TimToady | in spots | ||
| but we're very hopeful that the native types will turn out to be quite useful in writing fast, low-level code | 23:45 | ||
| and I agree, it's always hard to bootstrap a full stack | 23:46 | ||
| Tene | allison: There's nothing in 6model that requires using the language NQP. It can be used just fine from any language that can run on Parrot. It currently lives in the nqp repository, and the current examples all are written in NQP. I don't know what your issues with NQP are, and how this fits in exactly. | 23:47 | |
| lucian back | |||
| Tene: i still don't see how you'll be able to run ruby code without objects | 23:49 | ||
| Tene | allison: One of the goals of 6model, already partially realized, is allowing NQP and then Rakudo to use much more efficient representations. NQP can currently inline native attributes (int, num, str), which cuts down GC and attribute access time quite a bit. | ||
| lucian: I won't. | |||
| lucian | Tene: then how would you write ruby objects in ruby? | 23:50 | |
| Tene | lucian: Where would there be no objects? | ||
| lucian | Tene: in the ruby implementation of ruby objects | ||
| TimToady | just talking to jnthn, who says nqp does not yet have compact structs of native types, but only because he's been working on other things, not because it's "something that needs hard thought" | 23:51 | |
| Tene | Apparently I'm making shit up, then. | ||
| That's unfortunate. | |||
| :/ | |||
| TimToady | he says the inlining stuff is already mostly there | 23:52 | |
| it's mostly boxing/unboxing that needs work | |||
| Tene | Maybe I got it confused with native types for variables and some of the NYI stuff in P6Opaque.c | ||
| TimToady | the stuff already works on the object level, but nqp's compiler hasn't been taught to use the native stuff, basically | 23:53 | |
| Tene | Still, if I was wrong about that, I'd recommend that you be skeptical about the rest of what I've said. I thought I was getting a bit more reliable these days, but apparently not. | ||
| TimToady | so all he has to do is implement the equivalent of a C++ compiler--no sweat :) | 23:54 | |
| but the important thing is that jnthn thinks the 6model stuff is not another hack, but "close to right" on first principles | 23:55 | ||
| Tene | lucian: given that I don't actually have code to support my claims, I wouldn't necessarily take me that seriously here. It certainly may be that I use a restricted subset, or something. | 23:56 | |
| lucian | Tene: i don't see a way out other than using a subset, for the actual types | ||
| whiteknight | even "close to right", 6model is still miles ahead of Parrot's current woefully-inadequate MOP offering | ||
|
23:57
plobsing left
|
|||
| lucian | whiteknight: perhaps, but not necessarily appropriate for pynie | 23:57 | |
| i'd like it to be, so i'd have less work to do | |||
| whiteknight | lucian: is Parrot's current MOP any more suited to pynie than 6model is? | ||
| allison | whiteknight: we'd likely bypass that too | 23:58 | |
| whiteknight | ignoring the cultural ties to perl | ||
| lucian | whiteknight: not really. it's either custom or 6model, the way i see it | ||
| Tene | lucian: However, to a first approximation: I don't need the object model up to compile the code for the object model, as my compiler isn't written in ruby. If my compiler were written in ruby, it would be using whatever already-compiled object model the compiler process was using, so still wouldn't be relevant. At the time the object model code itself is running, there's obviously an object model loaded, as that's the code that's ... | ||
| ... running. | |||
| whiteknight | parrot wants 6model not because it's best for everybody but because it's less wrong for everybody than what we have right now | ||
| lucian | whiteknight: i don't really know 6model, but from what i've read it makes assumptions that are wrong for both python and CLOS | 23:59 | |
| Tene | lucian: You still haven't explained what those assumptions are? | ||