|
Parrot 0.9.1 Released | parrot.org/ | 451 RTs left! Set by moderator on 24 February 2009. |
|||
|
00:09
AndyA joined
|
|||
| rg | notfound: i think those extra 16 bytes on 64bit archs really have to go | 00:37 | |
| i also find that either the spec is unclear as to where the extra alignment is enforced, or it is enforced too much. | 00:40 | ||
| notfound: check_overlap could be simplified if you called it after sorting the directory. | 00:54 | ||
|
01:00
bacek joined
01:03
davidfetter joined
01:10
HG` joined
02:10
frodwith joined
02:12
bacek_ joined
|
|||
| dalek | rrot: r37142 | Util++ | trunk/docs (21 files): [docs] Typo corrections |
02:34 | |
|
02:39
ilia joined
02:41
Tene_ joined
|
|||
| dalek | rrot: r37143 | Util++ | failed to fetch changeset: [compilers] Typo corrections |
03:31 | |
|
03:35
janus joined
04:07
Andy joined
04:13
bacek joined
|
|||
| dalek | rrot: r37144 | Util++ | trunk/config (6 files): [config] Typo corrections |
04:29 | |
|
05:01
tetragon joined
06:22
masak joined
07:08
uniejo joined
07:50
mj41 joined
08:05
wayland76 joined
|
|||
| wayland76 | Hi all. I'm trying to make an RPM of rakudo, and do it with the parrot and parrot-devel RPMs installed, rather than installing a special version of parrot into rakudo | 08:08 | |
| It seems there are some files that need to be in the parrot-devel package that are not being included in any package | 08:09 | ||
| For example, the nqp compiler (and maybe it would be a good idea to include the whole "compilers" directory) | 08:10 | ||
| rakudo also seems to need the tools directory | |||
| It also seems to want the lib directory, so it can run | 08:11 | ||
| $(PERL) -I$(BUILD_DIR)/lib build/gen_objectref_pmc.pl $(PMC_DIR)/objectref_pmc.template \\ | |||
| $(PMC_DIR)/objectref.pmc | |||
| Thoughts anyone? | 08:12 | ||
|
08:15
Tene joined
|
|||
| moritz | wayland76: allison put a patch into RT to allow rakudo to build and run against an installed parrot - maybe you can draw inspiration from there (and/or review the patch) | 08:18 | |
| wayland76 | moritz: thanks. I'll start looking for it. | ||
| moritz | wayland76: rt.perl.org/rt3/Ticket/Display.html?id=63360 | 08:21 | |
|
08:22
riffraff joined
|
|||
| wayland76 | moritz: Thanks! My RT-fu isn't very good :) | 08:26 | |
|
08:26
Tene_ joined
08:32
Tene joined
|
|||
| wayland76 | Looks like I should toss out my stuff :) | 08:38 | |
| Do people know that if you go to www.parrot.org/download and click "Current Development Release", you get 0.9.0? | 08:40 | ||
| moritz | shouldn't that be 0.9.1? | ||
| wayland76 | Should, yes. Is, no :) | 08:41 | |
| moritz | I'll open a ticket. | ||
| wayland76 | I think the problem is the www.parrot.org/release/current link points to the wrong place. | 08:42 | |
| The 0.9.1 release is there if you navigate around the place | |||
| moritz | yes | 08:43 | |
| if it happened once, it'll happen again unless we do something about it. | |||
| cotto | we can at least add it to the release manager's guide | 09:09 | |
| moritz | it can be automated, so it should be. | 09:13 | |
| either by upload hooks, or by a cron job that checks for svn tags | |||
|
09:14
gaz joined
|
|||
| dalek | rrot: r37145 | fperrad++ | trunk/MANIFEST.generated: [install] since r37123, pmc_continuation.h needs to be installed, in order to build PMC for language. |
10:01 | |
|
10:11
alvar joined
10:31
wayland76 joined
11:39
Debolaz joined
11:54
rdice joined
12:07
contingencyplan joined
12:30
justin joined
12:33
rg1 joined
|
|||
| Infinoid | moritz: heh. updating the /release/current alias is on my list of website tasks, but I'm not sure how to automate it | 12:48 | |
| moritz | Infinoid: svn ls svn.parrot.org/parrot/tags/ | grep ^RELEASE|sort |tail -n 1 | 12:49 | |
| if a tarball of the corresponding name exists on the server, update the link to point there | |||
| Infinoid | Yeah. But try telling drupal that. | 12:50 | |
| moritz | uhm. | ||
| i'm asking our drupal expert over in #perl6 | 12:51 | ||
| Infinoid | It'd probably be best if we just dropped a copy of the tarball as a well-known filename (like latest.tar.gz) as part of the release process | 12:52 | |
| ok | |||
| moritz | Infinoid: that works for me too | 12:53 | |
|
12:54
ruoso joined
|
|||
| moritz | irclog.perlgeek.de/perl6/2009-03-06#i_961341 | 12:55 | |
| Infinoid | also, it might be debateable whether we want to include the monthly releases in that download link. | 12:56 | |
| moritz | it doesn't say "latest stable release" | 12:57 | |
| what are the monthly releases, if not development releases? | |||
| man, all this terminology is going to kill us | |||
| Infinoid | heh. I didn't say I wanted to do the debating :) | 12:58 | |
| moritz | ;-) | ||
| Infinoid | thanks, anyway a latest/ symlink in ftp sounds reasonable | ||
| moritz | aye | 12:59 | |
|
13:00
Fayland_logger joined
|
|||
| Infinoid | allison: I'm getting "The selected file ParrotInDetail2.pdf can not be attached to this post, because the disk quota of 1 MB has been reached." | 13:01 | |
| I've uploaded the talks I could, for now. On to old release accouncenemts. | 13:02 | ||
| allison: Nevermind, I found where to bump up the limit, life is good. | 13:06 | ||
| dalek | rrot: r37146 | jkeenan++ | trunk/t/pharness/03-handle_long_options.t: Add tests to cover --archive and --send-to-smolder options. |
13:07 | |
|
13:08
alvar joined
13:29
bacek joined
13:49
justin joined
13:52
tetragon joined
13:56
gryphon joined
|
|||
| Infinoid | ok, there. parrot.org has a better 404 page, /release/current is updated, and /dev/talks is happy. (of course, it doesn't seem to have anything more recent than 2007... but at least it's off the parrotcode.org migration task list.) time for breakfast | 14:06 | |
|
14:18
ron joined
14:36
alvar joined
|
|||
| rg | infinoid++ # getting loads of work done even before breakfast | 14:39 | |
| Infinoid | rg: :) It seems like I get most of my work done this time of day. By the time I hit noon, I'm too easily distracted by shiny things | 14:41 | |
|
14:46
frodwith joined
|
|||
| Coke_^_^ | Infinoid: "add a trac ticket" should be a hyperlink to trac. | 14:57 | |
| Coke | danke. | 14:58 | |
| Infinoid | I was actually hoping for a "submitting tickets" document that went through the process of creating an account and all of that too, but I hadn't gone and looked for such a document yet | 15:00 | |
| I was aiming for the knows-nothing-about-parrot-and-isn't-likely-to-put-much-effort-into-finding-out crowd | 15:01 | ||
|
15:04
Tene joined
|
|||
| Coke | we could make a trac wiki page on "Submitting Tickets" and for now just have it say "click on teh link above, fool!" | 15:05 | |
| Infinoid | that works for me | ||
| rg | i can tell you one thing from my own experience: if i don't care much about some tool that i found a bug in, making me register to report a ticket will only result in no report for the ticket. | 15:07 | |
| for the bug i mean. | |||
| Infinoid | agreed. requiring registration cuts our newbie submissions by 90% (but also cuts the spam, thankfully) | ||
| of course, we not only require registration, but also confirmation via the user's inbox. (and wasn't there some confusion in the past about trac not properly telling the user why their unconfirmed account didn't work yet?) | 15:08 | ||
| rg | i thought allison disabled the confirmation requirement recently | 15:09 | |
| Infinoid | I wouldn't know, but that would help. | ||
| with this stuff in mind, I'm thinking it might be easier to just link them to IRC, its the closest thing to a support forum we have :) | |||
| rg | that would probably be much better. | 15:10 | |
| Infinoid | anyway, it's a starting point | 15:11 | |
| it is quite possible to overthink the 404 page :) | |||
| rg | oh that was in regard to the 404 page? i didn't catch that. | 15:12 | |
| Infinoid | yeah, www.parrot.org/404 | 15:13 | |
| strange that it appears normally there (that's its normal name) yet when it's being delivered as an actual 404 page for some other link, we lose the sidebar with the search form | 15:14 | ||
| otherwise I'd tell them to STFW | 15:15 | ||
| Util | purl, seen davidfetter? | ||
| purl | davidfetter was last seen on #parrot 1 days, 19 hours, 9 minutes and 8 seconds ago, saying: Util, around? [Mar 4 20:06:01 2009] | ||
| particle1 | confirmation has not been disabled | 15:27 | |
| there is a bug in trac about poor notification of non-confirmation | |||
| that's known by the trac software team | |||
| particle1 thinks the parrot logo should link to parrot.org/ | 15:29 | ||
| it doesn't, on docs.parrot.org... there's no clear way to get to the home page | 15:30 | ||
| dalek | a: a99b6fb | (Francois Perrad)++ | config/makefiles/root.in: fix makefile |
15:32 | |
| a: 8aad557 | (Francois Perrad)++ | src/pmc/luatable.pmc: now LuaTable uses ATTR |
|||
| a: 5917928 | (Francois Perrad)++ | src/pmc/luatable.pmc: replace PMC_hash by t_val |
|||
| shorten | dalek's url is at xrl.us/beijng | ||
| shorten | dalek's url is at xrl.us/beijni | ||
| dalek's url is at xrl.us/beijnk | |||
| dalek | a: 34f9a8b | (Francois Perrad)++ | src/pmc/luatable.pmc: clean up |
||
| purl | clean up is a breeze | ||
| shorten | dalek's url is at xrl.us/beijnn | ||
|
15:43
rakudohudson joined
|
|||
| Coke | particle1: that's a pretty easy fix in 'make html', I think. | 15:48 | |
| Infinoid | particle1: I'm going to kick "make html" around a bit in the near future, I'll add that to my list. | ||
| particle1 | sweet. | ||
|
15:48
pjcj joined
15:50
zostay joined
16:11
Theory joined
16:24
contingencyplan joined
|
|||
| dalek | kudo: f6cdf9b | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 317 files, 7121 passing, 0 failing |
16:42 | |
| shorten | dalek's url is at xrl.us/beijv7 | ||
|
17:05
justin joined
17:33
barney joined
|
|||
| Coke | svn question. if we branch, modify some files, merge from trunk, modify, RENAME THE BRANCH, modify, merge from trunk... should we experience extra difficult merging the renamed branch back to trunk? | 17:37 | |
| Not entirely hypothetical, but also entirely unrelated to parrot. =-) | |||
| rg | imho no, but my svn experience is still quite limited. | 17:38 | |
| Infinoid | SHOULD you? no. but you will. | 17:45 | |
| Coke | yah. Thankfully, said branch occurred 99.9% in a single directory. | 17:52 | |
| so I just did an svn copy and found the one stray commit to keep elsewhere, did the merge as 2 commits. | |||
| no clue why the developer decided to renaming the branch (I asked them to rename the one directory they were hacking on, that's it.) | |||
| *rename | 17:54 | ||
| Infinoid | in svn, there's not much difference between a branch and a directory | 17:59 | |
| Sounds like you lucked out tho... could have been a lot worse. | |||
| PerlJam | Infinoid: "not much difference"? you mean "not *any* difference" :-) | 18:02 | |
| Coke | yah. I'd not have expected the conflicts I'm see. I'm sure some other thing is screwed up. | ||
| damnit. "I'm seeing". | 18:03 | ||
| I apparently have participle trouble. | |||
| our troubling participles. | |||
| OR! | |||
| Coke takes his fingers out back and shows them what fer. | |||
|
18:03
rurban joined
18:09
jan joined
|
|||
| Infinoid | PerlJam: the only difference I can see is that branches have an svn:mergeinfo attribute and directories don't. But given their overall philosophy, that might be construed as a design issue. | 18:09 | |
| I suspect when they finally get this stuff right, you'll see svn:mergeinfo in a lot more places | 18:10 | ||
| PerlJam | oh, "they" have already got it right ... it's just that "they" are the git-devs ;) | 18:11 | |
| Infinoid | git has a different overall philosophy. svn will do things their own way, stable and slow, but the path they're on will lead to something reliable I think | 18:13 | |
| The only reason git's gotten this right is because pretty much *everything* is a branch merge for them. :) | 18:14 | ||
| PerlJam | Well, IMHO, branching + merging is (and should be) fundamental to a VCS. Those operations should be easy and painless. | 18:15 | |
| Coke | (mergeinfo) note that I'm using svn server of 1.2, I think. | 18:16 | |
| PerlJam | the svn folks coming at the problem from "making a better CVS" haven't quite gotten there yet. | ||
| Infinoid | Sure they have. It's MUCH better than CVS. :) | ||
| PerlJam | Coke: that's ooooold. You should upgrade to 1.5 at least. | ||
| Coke | "not having this conversation again." =-) | ||
| PerlJam | Coke: That's okay 1.6 is due to arrive soon anyway :) | 18:17 | |
| Infinoid: Indeed. When I started using svn, I absolutely and completely stopped using CVS. | |||
| Infinoid | Yep. Night and day. | 18:18 | |
| Coke | double checked; work is using 1.2.1 | ||
| an upgrade is planned, but this infrastructure is really outside of my control. | |||
| rg | coke: complain often and loudly. ;) | 18:19 | |
| PerlJam | Coke: svn < 1.5 is just fine for almost anything you want to do as long as you don't mind painful merges :) | ||
| (or don't need merges at all) | |||
| Infinoid | the simplest solution is to keep the branch topology linear by never merging any trunk changes into the branch, ever | 18:29 | |
| That's pmichaud++'s solution, and it works. | |||
| PerlJam | Infinoid: If you used svn 1.5, that's essentially what the new merge goodness does (but you can still merge from trunk to branch) | 18:32 | |
| particle1 | yep | 18:33 | |
| svn1.5++ | |||
| now if only they supported custom metadata | 18:34 | ||
| Infinoid | PerlJam: Yeah. Doesn't seem to handle renames very well though. Still a step in the right direction | ||
| particle1 | i think svn mv branches/foo branches/bar would work fine | ||
| Infinoid | Most of the merging issues I've seen with parrot were just a normal file being modified and renamed | 18:35 | |
|
18:35
Psyche^ joined
|
|||
| Infinoid | Also, complex merge topologies only work when all of the branches mentioned in svn:mergeinfo still exist | 18:36 | |
| PerlJam | particle1: what sort of "custom metadata support" are you after? | ||
| particle1 | %Copyright%, %Year%, etc. | ||
| Infinoid | Ah, that does sound nice | ||
| PerlJam | Well, you can stick those in svn properties now. | 18:37 | |
| particle1 | it's been requested since 1.1, promised "any day now" since 1.3 | ||
| PerlJam | (and use a similar trick to getting the version in a file to retrieve them) | ||
| particle1 | you can't expand them in a file | 18:38 | |
| PerlJam | (but, yeah, you'd still need some sort of scripting support to make it work) | ||
| Infinoid | You can always fix those things up after the fact, I guess. (Kinda like headerizer) | ||
| PerlJam | Those svn guys may be smarter than we think. They leave stuff out so that whole ecosystems can be created to support the absent features. That way they spread the love of svn support contracts and such rather than hoarding it all for themselves ;) | 18:41 | |
| Infinoid | Nice conspiracy theory :) | 18:44 | |
|
18:53
ruoso joined
18:56
japhb joined
|
|||
| Theory conspires against Infinoid | 19:19 | ||
| Paranoid | <.< >.> | ||
| ron | Is there any kind of architecture for creating/using test built-in (non dynamid) PMCs? | 19:26 | |
| s/dynamid/dynamic/ | |||
| Coke | architectures? | 19:28 | |
| s/es/e/ ? | 19:29 | ||
| you mean a tool? | |||
| particle1 | creating a new core pmc type? sure, create the file, modify the thing in config that specifies that it get built | ||
| Coke | particle1: I'm not entirely sure step 2 is necessary. | ||
| particle1 | neither am i, but you'll definitely need to reconfig | ||
| ron | You might want to create a pmc for testing purposes that isn't need in "production". | 19:30 | |
| Coke | ron: is this something you'd commit to the repo? | ||
| just trying to figure out your use case here. | |||
| particle1 | ron: then you shouldn't compile it into parrot in production :) | ||
| ron | In src/dynpmc there is foo.pmc | 19:31 | |
| rg | i've been thinking the same thing, but i would have suggested a dynpmc (if i ever got around to building anything ;)) | ||
| allison | ron: yes, that's a dynpmc | ||
| Coke | we have dynpmcs that should have been deprecated before 1.0, as an aside. | ||
| allison: be nice if we could cull those and any experimental ops we don't want to keep. | 19:32 | ||
| allison | Coke: also dynops (why do we have dynops named "dan"? | ||
| Coke | (in fact, experimental.ops should b e empty in 1.0) | ||
| particle1 | well, if they were moved under examples, that'd be fine with me | ||
| Coke | allison: for testing. hopefully we're not installing them. | ||
| allison | Coke: experimental we can remove, they've never been "precated", so don't need to be "deprecated" | ||
| Coke | particle1: it's ok to build them and test them, I think. | 19:33 | |
| particle1 | some experimental ops are relied upon, iirc | ||
| Coke | allison: except that experimental.ops really hasn't been treated that way anywhere. | ||
| pmichaud | lots of ops listed as "experimental" are in fact highly used. | ||
| particle1 | i think c went through experimental.ops and classified them on the ml | ||
| ron | I am working on some tests that operate similarly (but not identically) on pmcs and dynpmcs. I will just include the pmcs with the test for the moment. | ||
| allison | Coke/pmichaud: sure, so the ones that are used and useful should move out of experimental into core or other relevant file | 19:34 | |
| pmichaud | splice, iter, morph, pow_n_n_i, find_sub_not_null | ||
| morph might not be used as much any more. | |||
| allison | experimental is exactly that, a testing ground to decide if something is worth keeping | ||
| Coke: though, I'm not keen on making big ops changes before 1.0 at this point just from a stability perspective, would rather make them in 1.1 | 19:36 | ||
| Coke: or if we make them, no later than this weekend | 19:37 | ||
| Coke | allison: (worth keeping) and now is an excellent time to formulate that decision. | 19:38 | |
| not as good as last month would have been, sadly, but it didn't float to the top of my brain then. | |||
| I'm not suggesting removing anything in experimental.ops, though; just moving them to their permanent homes. | 19:39 | ||
| allison | Coke: there's no time like the present :) | ||
| Coke | then we can add NEW ops into experimental in non-stable releases, making it easier to know which ones are killable before the next stable. | 19:40 | |
| allison | Coke: that should be safe | ||
| Coke: we might want a permanent entry in DEPRECATED.pod that simply lists whatever is currently in experimental.ops | 19:41 | ||
| (since we're pointing people there to see what they shouldn't rely on in future releases) | 19:42 | ||
| Coke | allison: I'd rather just have it be empty on stable releases. | ||
| Infinoid | is the stable release the *last* version in a deprecation cycle, or the *first*? | ||
| Coke | Infinoid: can't parse. | ||
| allison | Coke: oh, I thought you just said not removing anything from experimental? | ||
| Coke | what? | ||
| allison: for 1.0; I don't want to have to decide what to keep or not at this point. | 19:43 | ||
| I'm assuming that if it's been in there that long, we're using it. | |||
| allison | Coke: that is, if we're running all the development releases with a set of experimental ops, but don't include them in stable, then our stable release isn't really the same as the development releases (and so, not really tested) | ||
| Coke | allison: let's remove experimental ops entirely then. | 19:44 | |
| (the file, not the OPS) | |||
| allison | Coke: I'm fine with that too | ||
| Coke | Ok. | ||
| allison | Coke: there are some ops in experimental that aren't becoming full ops, though | ||
| Coke | allison: but they weren't deprecated, so they're in 1.0. neh? | ||
| allison | Coke: some failed experiments | 19:45 | |
| Coke: well, that's the question. we sure aren't going to move them into core.ops | |||
| Infinoid | Coke: since the stable releases are the boundary points for deprecation cycles, I was wondering whether we remove a bunch of stuff before those releases, or after. | ||
| Coke | why not? move them in, add a :deprecated warning, open a ticket, pull them in 1.1 | ||
| Infinoid: it's all between. =-) | 19:46 | ||
| but, basically, immediately after. | |||
| allison | Coke: if we do that, let's keep the experimental file. I don't want to put stuff in core that we really don't want people using | ||
| Coke | allison: ... but it's already IN CORE. | ||
| allison | Coke: I mean core.ops | 19:47 | |
| Coke | let's try a different tack. | ||
| Which opcodes need to be removed? | |||
| (then once I have a concrete list, I can worry about moving what's left.) | 19:48 | ||
| allison | gcd, exec, maybe classname (wasn't that deprecated?), trap, need_finalize, runinterp | 19:49 | |
| not sure about substr_r | |||
| the implementation of substr_r is "a temporary hack", so I'd be inclined not to promote it out of experimental | 19:50 | ||
| Coke | then we should kill it. | ||
| adding tickets... | 19:51 | ||
| allison | these ops have always been explicitly tagged as "experimental", which means they've always been deprecated | 19:52 | |
| Coke | ... fine. closing tickets. nevermind. | 19:53 | |
| allison | that wasn't against tickets, just a question of timing | ||
| Coke | I'm just trying to clean up some messes before 1.0. that's all. | ||
| allison thinks it's difficult to get tone of voice across in IRC | 19:54 | ||
| Coke: I'm enthusiastically supporting you :) | 19:55 | ||
| (maybe too enthusiastically) | 19:56 | ||
| Coke: do you want to remove experimental.ops before or after 1.0? | |||
| Coke | allison: Ok. I certainly wasn't getting that impression, you're right. Thanks. | ||
| I propose we eliminate experimental.ops before 1.0; I would rather not have anything labeled 'experimental' in the 1.0 release. | 19:57 | ||
| allison | Coke: ok, sounds good | ||
| Coke: there are some ops we know we want to keep and move to core.ops (or other files) | |||
| Coke: what do you want to do with the others (failed experiments)? | |||
| Coke | allison: I was going to leave them in 1.0 with a deprecation notice. | 19:58 | |
| and then immediately yank them post release. | |||
| I understand you're saying we can avoid that and just yank them now. | 19:59 | ||
| allison | Coke: okay, agreed, that's most consistent with our deprecation policy | ||
| Coke | of course, now I have no actual desire to do any of this. =-) | ||
| I'll see if I can get to this weekend; if nothing else, I'll make a ticket. | 20:00 | ||
| allison | Coke: bleh, just from this discussion? | ||
| Coke | allison: the misinterpretation of your sends pretty much killed any enthusiasm I had. Not your fault. | 20:01 | |
| I'm sure some will return in a day or two. | |||
| pmichaud | substr_r appears to be heavily used in examples/ , nowhere else that I can see. afaict Rakudo isn't using it. | ||
| allison | Coke: bummer, sorry | ||
| Coke | pmichaud: once "make examples_tests" passes again, that might not be true. | ||
| Infinoid | Hmm. If we deprecate a bunch of stuff immediately after a stable release (as opposed to before), doesn't that result in a worst case support scenario? | 20:09 | |
| If you want a fix for a "not quite critical enough to issue a minor stable bump release" bug, you can't upgrade to the next monthly without also crossing a deprecation boundary and breaking lots of other stuff. | |||
| (sorry about the delay, lots of stuff going on at once here.) | 20:10 | ||
| Coke | Infinoid: please clarify deprecate vs. remove. | ||
| Infinoid | Coke: thanks, you're right that it's all between, but I was curious about the interaction with monthlies | ||
| we remove things only on deprecation boundaries. That's why we call them deprecation boundaries. | 20:11 | ||
| Coke | Infinoid: the first monthly after a stable could be completely different. | ||
| the deprecations must announced in at least one stable before removal. that means as soon as that one stable occurs, all bets are off. | 20:12 | ||
| Infinoid | Yeah. I'm just concerned about the interaction between deprecation cycles and support cycles. We've defined a value of "support" that sets a threshold of bugginess, which if exceeded will trigger a new stable bump (like 1.0.1) | 20:13 | |
| Any bugs below that, and our response is "we've fixed that, upgrade to the latest monthly" | |||
| Coke | Infinoid: how is 1.0.1 a problem ? | ||
| Infinoid: that's the policy, yes. | |||
| Infinoid | It isn't. But the deprecation cycle occurs at the same time, which means there's guaranteed to be much more work following the above advice | ||
| Coke | as described by the kind folks at PDS. | ||
| Infinoid | 1.0.1 isn't a problem, I mean. | ||
| Coke | Infinoid: so what is the problem them? | ||
| then? | 20:14 | ||
| (that is, I'm just parroting the party line here.) | |||
| Infinoid | The problem is that our answer for not-quite-critical bugs is "we've fixed that, upgrade to the latest monthly", yet doing so means you also have to handle a bunch of deprecated stuff, to cross that line | ||
| Coke | Infinoid: that only matters if you've already upgraded to a monthly. no? | 20:15 | |
| Infinoid | If we deprecated stuff before the stable releases, that wouldn't be such an issue. Though I guess that would require having 6 month foresight on what to put into DEPRECATED.pod | ||
| Coke | Infinoid: deprecations only matter on things that have been in a stable release. does that help? | ||
| Infinoid: so, let me play this back. | 20:16 | ||
| Infinoid | I'm just having trouble getting it straight in my head, I guess | ||
| Coke | someone has 1.0; we release ... 1.2; it has a lot of bugfixes. | ||
| Infinoid | it seems like the interaction between the deprecation cycles and the support cycles generates a guaranteed worst-case scenario | ||
| Coke | someone reports a bug with 1.0 that is fixed in 1.2. we say "you can either upgrade to 1.2 now or 1.4 when it comes out" | ||
| in EITHER case, they have to deal with the removal of deprecated items that has occurred since 1.0 | 20:17 | ||
| Infinoid | even though you're still relying on the 1.0 API, because we've promised to backport the important bugs, for some value of "important" | ||
| but the bug in question didn't quite meet that "important" threshold | |||
| Coke | Infinoid: yes. | ||
| Infinoid | so either way you've got to cross a deprecation boundary to get the fix | ||
| Coke | yes. | ||
| Infinoid | if the actual removals happened between 1.3 and 1.4, that wouldn't be an issue | 20:18 | |
| but now that I think about it, that causes other issues. | |||
| Coke | Infinoid: then there would be no releases testing the removal. | ||
| Infinoid | Yeah. And it requires an unreasonable amount of foresight | ||
| Ok. I don't like it much, but the alternative is worse. I think I understand now... Thanks for putting up with me. | 20:19 | ||
| Coke | I don't think that in theory our users will like it either. I think in practice it problably won't be so bad. | ||
| if we did more incremental releases (like what most people expect a 1.1 to be), then we'd have another problem; we'd have to start a new branch to work on all the 1.4 stuff that we can't put into 1.1 | 20:20 | ||
| particle1 | in theory, theory and practice are the same. | ||
| Infinoid | hah | ||
| Tene | So theoretically that should be true in practice as well. | 20:21 | |
| Coke | so this way, we end up with a more linear release cycle. From a development standpoint, that's better. I think our plan is going to be a tough marketing sell, though. | ||
| sorry. s/our/the/ | 20:22 | ||
| caveat: I may still not understand what the hell the plan is. =-) | |||
| Infinoid | The entire point of calling a release "1.0" is marketing, anyway. But marketing never made much sense to me. | ||
| dalek | pp: 3a345b6 | (Bernhard Schmalhofer)++ | build/PARROT_REVISION: Ask for last Parrot version that works for Pipp. |
20:57 | |
| shorten | dalek's url is at xrl.us/beik54 | ||
|
20:58
particle1 joined
21:10
babygirl24 joined,
particle1 joined
21:16
rurban_ joined
21:44
elmex joined
21:51
Rhyolite joined
|
|||
| Rhyolite | Hi | 21:51 | |
| purl | salut, Rhyolite. | ||
| Rhyolite | salut | 21:52 | |
|
21:52
davidfetter joined
|
|||
| Rhyolite | does anyone have a moment to answer some basic questions about Parrot memory management? | 21:52 | |
| Coke | I do not, but the list is always a good place to ask such things. | 21:53 | |
| parrot-dev | |||
| purl | somebody said parrot-dev was mailto:parrot-dev@lists.parrot.org or lists.parrot.org/mailman/listinfo/parrot-dev | ||
| Coke | (also, usually easier to throw out a basic starter question rather than ask if you can. =) | ||
| ... ok, apparently I do have enough time. what's up? =-) | |||
| Rhyolite | I see the low-level gc stuff | 21:56 | |
| and resources.c / res_lea.c | |||
| I am trying to find where the symbol table accesses objects | |||
| is that through what parrot calls vtables? | 21:57 | ||
| Coke | I don't follow "symbol table" - doesn't help that I am not a c programmer, I suspect. | ||
| Rhyolite | I mean the dictionary for accessing global variables | 21:58 | |
| Coke | globals are done via the global ops; the ops definitions call out to various C-level functions to do the heavy lifting. | ||
| moment... | |||
| particle1 | [sg]et_global | 21:59 | |
| Coke | for example: src/ops/var.ops defines "get_global" as: | ||
| op get_global(out PMC, in STR) { PMC * const cur_ns = CONTEXT(interp)->current_namespace; $1 = Parrot_find_global_op(interp, cur_ns, $2, expr NEXT()); | |||
| } | |||
| Rhyolite | okay, it is in the ops stuff | ||
| Coke | that's how I'd start looking for it, anyway. | 22:00 | |
| (but that's because I tend to approach things from the PIR level.) | |||
| Rhyolite | Yes, I was a little confused by the wrappers in the ops directory | 22:01 | |
| so it's really Parrot_find_global_op | |||
| particle1 | make tags-vi can help | ||
| Coke | Rhyolite: the C-level function that does the work of the get_global op is Parrot_find_global_op, yup. | ||
| particle1 | if you're a vi user :) | ||
| Rhyolite | I also assumed that most of this was through PMC | 22:02 | |
| and started looking in pmc/integer.pmc | |||
| and get_integer | |||
| etc. | |||
| but those accessors did not lead me very far | |||
| particle1 | globals aren't used much in parrot | ||
| Coke | Rhyolite: that will help once you /have/ a PMC. | ||
| particle1: bite your tongue. | |||
| purl | NNNF! | ||
| particle1 | ;) | 22:03 | |
| Rhyolite | particle1: yes, I realize that live values will be loaded into Parrot registers | ||
| but whatever language is being fed to the Parrot VM | |||
| the global namespace needs to be accessed initially from somewhere | 22:04 | ||
| particle1: or do I completely misunderstand things? | |||
| for Parrot's implementation | |||
| Coke | ah. if you're looking for the root namespace, that's a different op. | ||
| get_global gets you something from a slot in the global namespace. | |||
| get_root_namespace is the op for ... well, doing that. | 22:05 | ||
| Rhyolite | I'm looking for the critical path in Parrot for accessing variables | ||
| Coke | Rhyolite: Are you trying to solve a particular problem, or just understand parrot? | ||
| Rhyolite | It's a little more complicated in Parrot because values are cached in registers | ||
| Coke | cached? | 22:06 | |
| Rhyolite | and then there is the question of mapping Parrot registers to the system on which Parrot is running | ||
| sorry, cached is the wrong term | |||
| live values are loaded into Parrot registers | |||
| I'm not trying to solve a problem or a bug | |||
| I'm analyzing various VMs for memory access behavior | 22:07 | ||
| and Parrot is next on my list | |||
| at some point there is a name lookup for the program variable in the original program | |||
| that Parrot needs to find to extract the actual value | 22:08 | ||
| that's the path I'm trying to understand in Parrot | |||
| Coke | Rhyolite: it might be instructive to take an actual language like perl6, write some code, and see what the compiler generates. | ||
| then you can see what opcodes are used, what PMCs are generated, and follow the code in the opcodes or PMCS or Objects to see what C is getting invoked. | 22:09 | ||
| rakudo-past: "Hello".say(); | |||
| polyglotbot | No output (you need to produce output to STDOUT) | ||
| Coke | rakudo.past: "Hello".say(); | 22:10 | |
| nopaste | "polyglotbot" at 193.200.132.146 pasted "perl6 past" (112 lines) at nopaste.snit.ch/15795 | ||
| Coke | rakudo.pir: "Hello".say(); | ||
| nopaste | "polyglotbot" at 193.200.132.146 pasted "perl6 pir" (55 lines) at nopaste.snit.ch/15796 | ||
| Coke | something like that last one. | 22:11 | |
| Rhyolite | ok | ||
| Coke | ... if I knew the syntax for globals in perl6, I'd just give it to you. =-) | ||
| ron | If a PMC has an hll modifier, is it reasonable to expect that the PMC's methods be accessible through the namespace specified in the hll modifier rather than the 'parrot' hll namespace? | 22:12 | |
| particle1 | rakudo.pir: $::foo = 1; | 22:13 | |
| nopaste | "polyglotbot" at 193.200.132.146 pasted "perl6 pir" (10 lines) at nopaste.snit.ch/15797 | ||
| particle1 | guess i don't know it, either :) | ||
| Rhyolite | I assumed that I could find the name lookup mechanism in the interpreter without tracing sample code | 22:14 | |
| tho it looks like global.c:internal_ns_keyed() and related functions may be the place | 22:15 | ||
| pmichaud | Rhyolite: maybe I can help a bit. IIUC, namespaces are just PMCs. | ||
| they're PMCs with a hash interface. | |||
| so, a namespace is just a symbol table | |||
| Rhyolite | yes | ||
| pmichaud | mapping (string) keys to PMC objects | ||
| Rhyolite | it looks like everything comes down to VTABLE_get_<blah> | 22:16 | |
| pmichaud | yes, if I want to look up a symbol in a namespace, that probably goes through the NameSpace PMC's get_pmc_keyed vtable function. | ||
| this allows different namespaces to provide different lookup behaviors (e.g., for different HLLs) | 22:17 | ||
| ron: in answer to your question, I suspect that methods should not be accessed via a namespace at all. | 22:19 | ||
| TT #389 has more details about that. | 22:20 | ||
| sjn | sigusr2.net/2009/Mar/04/dispatching...-with.html | 22:25 | |
| how would that be done with perl6? | 22:26 | ||
| s/with/in/ (bad, my english is) | 22:27 | ||
| Rhyolite | thanks for the guidance! | 22:28 | |
|
22:29
Rhyolite left
|
|||
| pmichaud | sjn: might ask on #perl6 or on perl6-users@perl.org mailing list. | 22:30 | |
| (I don't know the answer off the top of my head) | |||
| ron | pmichaud: it sounds to me like you are saying that if I have a method 'printhi' associated with a pmc of class foo which has an hll modifier of (say) dale, then foo.'printhi'() should work regardless of the current hll namespace. Correct? | 22:31 | |
| pmichaud | ron: methods are always looked up via the object, not via a namespace. | ||
| so short answer to your question: yes, that should work. | |||
| (and assuming that the foo in foo.'printhi'() is an instance of the class and not the PMC class object itself) | 22:32 | ||
| ron | I was considering a pmc instance like new ['Integer'] rather than a pmc resulting from a newclass operation in some way - if that makes sense ... | 22:36 | |
| except here its new ['foo'] | 22:37 | ||
| sjn | pmichaud: ook | 22:39 | |
| Coke | $P1 = new ['TclList']; $P1.'reverse'() ? | ||
| pmichaud | right, so if you did foo = new ['foo'] and then foo.'somemethod'() then it should invoke whatever 'somemethod' method is defined in the foo class. Namespaces don't enter into the picture at all. | 22:40 | |
| Coke | pmichaud: it's possible that method is /defined/ in a namespace somewhere. | ||
| pmichaud | Now then, when 'somemethod' is invoked, it will run within the namespace in which it was defined, and not in the caller's namespace. | ||
| Coke: yes, it's possible for a method to be entered as a symbol in a namespace (and that's Parrot's current erroneous default), but invoking a method doesn't involve the namespace. | |||
| Coke | pmichaud: I'm still trying to figure out what problem he's trying to fix. | 22:41 | |
| pmichaud | oh, I didn't do that at all. I'm just answering whatever question ron happens to ask. :-) | ||
| ron | In rt #40438 (again :)) changing the current hll namespace with .HLL changes whether or not you can access a pmc method ... | 22:43 | |
| pmichaud | looking at 40438 | ||
| interesting. Testing. | 22:44 | ||
|
22:56
Whiteknight joined
23:01
ron joined
|
|||
| pmichaud | sorry, I got called away. I think the original bug report in #40438 (and the subsequent ones) are bogus. | 23:01 | |
|
23:02
Hinrik left
|
|||
| nopaste | "ron" at 168.100.250.30 pasted "Updated 40438 example using Perl6str" (21 lines) at nopaste.snit.ch/15798 | 23:03 | |
|
23:03
Limbic_Region joined
|
|||
| pmichaud | Except that Perl6Str isn't in the perl6 HLL yet. | 23:03 | |
| that's what's wrong with the original ticket and the examples -- the PMCs involved are all in the Parrot HLL namespace. | 23:04 | ||
| So no, I wouldn't expect methods from a different HLL namespace to end up as methods in the PMCs | |||
| ron | perl6str.pmc has a 'hll Perl6' modifier in its pmclass declaration. Does that matter? | 23:05 | |
| pmichaud | Apparently it doesn't (more) | 23:06 | |
| even with that modifier in place, it looks as though Perl6Str is going into the Parrot HLL namespace. But let me test. | |||
|
23:06
particle1 joined
|
|||
| davidfetter | Util, you rang? | 23:06 | |
| pmichaud | (I'm fairly certain that the PerlString in the original ticket were in the parrot hll) | 23:07 | |
| Limbic_Region wonders if it is "sometime tonight" yet | |||
| pmichaud | L_R: sorry, I didn't forget you, but I did get taken away by wife again | 23:08 | |
| I'll do that as soon as I troubleshoot this issue. | |||
| Tene | Oh, is this about the rakudo pmc HLL issues? | 23:09 | |
| ron | Your last argument seemed to be that the current hll ns shouldn't matter for method access. The pasted example seems off there. No? | ||
| Limbic_Region | no worries | ||
| pmichaud | for method *access*, no. | 23:10 | |
| called away again for a minute -- brb | |||
| ron | No the ns shouldn't matter or no the pasted example is no problem ... | 23:11 | |
| pmichaud | back | 23:13 | |
| when invoking a method, the method is looked up through the object's list of methods. It's not looked up in the namespace. | |||
| When installing a method into a object, the namespace matters, yes. | |||
| ron | But in the pasted example the result of invocation seems to be determined by the current hll namespace. | 23:14 | |
| if invocation is only determined by the object is that correct behavior? | 23:16 | ||
| pmichaud | when I run the code you posted, I get: | ||
| pmichaud@orange:~/rakudo$ parrot/parrot y.pir | 23:17 | ||
| fop | |||
| Method 'perl6str_printhi' not found for invocant of class 'NewPerlString' | |||
| current instr.: 'perl6;Perl6Str;main' pc 30 (y.pir:21) | |||
| is that what you're seeing? | |||
| ron | yes .. did you uncomment the line that says .HLL parrot and see the difference ? | ||
| pmichaud | weird. (more) | 23:19 | |
| wait, testing more examples. | 23:21 | ||
|
23:23
kid51 joined
|
|||
| nopaste | "parrot" at 72.181.176.220 pasted "no HLL needed" (20 lines) at nopaste.snit.ch/15799 | 23:23 | |
|
23:24
rurban_ joined
|
|||
| nopaste | "pmichaud" at 72.181.176.220 pasted "with .HLL, the Perl6Str method has to be in the parrot namespace when .loadlib is in parrot" (21 lines) at nopaste.snit.ch/15800 | 23:26 | |
|
23:27
rurban__ joined
|
|||
| ron | do you consider the examples you are pasting OK or a problem? | 23:28 | |
| nopaste | "pmichaud" at 72.181.176.220 pasted "even with .loadlib being done in Perl6 HLL, the Perl6Str method still expects to be in parrot HLL" (23 lines) at nopaste.snit.ch/15801 | ||
| pmichaud | it appears to me as though the "hll Perl6" declaration in the Perl6Str PMC has no direct effect. | 23:29 | |
| ron | So if I rephrased my initial view of the problem as below might you agree? | 23:30 | |
| Methods for PMCs with an hll modifier may be expected to be installed in the hll namespace in their modifier rather than the 'parrot' hll namespace. | |||
| pmichaud | I have trouble with the phrase "methods ... installed in a namespace" | 23:31 | |
| Methods aren't installed in a namespace, they're installed in a class. | |||
| we use namespaces as an easy shortcut to indicate the class that a method should be installed in, but the method itself isn't supposed to go into a namespace. | 23:32 | ||
| ron | the problem is about * HLL * namespaces though | ||
| pmichaud | same point, though -- the method goes into the class, not into the namespace. | ||
| my phrasing of the problem would be something like: | 23:33 | ||
| PMCs that declare themselves to be in a different HLL namespace are not receiving methods declared in that namespace. | |||
| I don't know if the problem exists for only dynpmcs or if it would exist for non-dynpmcs as well. I don't think we have any core PMCs that go into a namespace other than Parrot. | 23:34 | ||
| ron | Should such PMCs be receiving methods declared in 'parrot' or other hll namespaces? | ||
| pmichaud | I would think that a PMC should receive methods only declared in the namespace corresponding to the PMCs declaration. | 23:35 | |
| so, if the Perl6Str PMC says it's in the | |||
| 'Perl6' HLL namespace, I would expect its methods to be in .HLL 'perl6' and .namespace ['Perl6Str'] | 23:36 | ||
| I would not expect methods declared in the 'parrot' HLL namespace to be installed in the Perl6Str class. | |||
| ron | What is the distinction between receive and install ? (going back to my earlier rephrase) | ||
| pmichaud | the distinction isn't between receive and install; it's in where it's received or installed. Your phrasing says it goes into the namespace; in reality it goes into the class. | 23:37 | |
| if I do: | |||
| .namespace ['XYZClass'] | |||
| .sub 'xyzmethod' :method | |||
| ... | |||
| .end | |||
| Then there should not be any entries in the XYZClass namespace. However, the XYZClass should end up with a method called 'xyzmethod' in it. | 23:38 | ||
| ron | thanks for explaining this btw | ||
| pmichaud | the :method flag means that a sub goes into a class instead of into a namespace. | 23:39 | |
| ron | If I change 'installed' to 'declared' in my phrasing does that help some? | 23:40 | |
| pmichaud | yes, a lot. | ||
| the next ambiguity is "may be expected to..." | |||
| there shouldn't be any "may" | 23:41 | ||
| ron | So maybe: Methods for PMCs with an hll modifier are expected to be declared in the hll namespace in their modifier rather than the 'parrot' hll namespace. | ||
| pmichaud | for any given PMC, there should be only one location (hll + namespace) in which we would expect to declare its methods. | ||
| I see it as two related problems, instead of being a single problem. | 23:42 | ||
| (1) Methods declared in the 'parrot' HLL namespace are being installed in classes declared in other HLL namespaces. | |||
| (2) Methods declared in the same non-parrot HLL as a PMC are not being installed in that PMC. | 23:43 | ||
| where we might need to s/classes/PMC/ in #1 above. | 23:44 | ||
| okay, gotta go -- my wife wants me to meet her for dinner. bbl. | 23:48 | ||
| Limbic_Region: (message sent) | |||
|
23:48
wayland76 joined
|
|||
| ron | I am off for a bit too. The explanations have clarified my understanding of the rt some but not that much. Thanks again. | 23:51 | |