Camelia, the Perl 6 bug

IRC log for #parrot, 2010-07-08

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:09 cotto_work coke++ for the docs refactor
00:12 Coke I need docs for src/dynpmc/*.pmc  and tools/dev/mk_native_pbc
00:14 darbelo Coke: docs in what form? The pmc files seem to have embedded POD documetation.
00:14 Coke darbelo: rotest, subproxy, foo, and foo2.
00:15 ruoso joined #parrot
00:15 darbelo Ah. I hadn't looked at those.
00:15 Coke sorry, I hadn't look at what other ones were there. =-)
00:15 darbelo But, with the exception of subproxy, those are there for testing purposes.
00:16 cotto_work khairul's branch keeps some non-testing dynpmcs there
00:16 Coke ok. if someone adds docs for subproxy, I can exclude the other 3.
00:17 darbelo cotto_work: I was referring to the one's in Coke's list.
00:17 cotto_work gotcha
00:18 darbelo There's also pccmethod_test.pmc, looking at the dir contents.
00:18 Coke the rest all have docs.
00:18 dalek parrot: r48039 | coke++ | branches/html_cleanup/conf​ig/gen/makefiles/docs.in:
00:19 dalek parrot: remove old html target.
00:19 dalek parrot: add some html help for recently added targets.
00:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48039/
00:19 dalek parrot: r48040 | coke++ | branches/html_cleanup (2 files):
00:19 dalek parrot: Remove old tool for generating html docs.
00:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48040/
00:19 dalek parrot: r48041 | coke++ | branches/html_cleanup/tool​s/docs/make_html_docs.pl:
00:19 dalek parrot: 'make html' is really run from docs/ - fix the script to cope.
00:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48041/
00:19 dalek parrot: r48042 | coke++ | branches/html_cleanup/docs/index/tools.json:
00:19 dalek parrot: This file has been removed, don't try to generate docs for it.
00:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48042/
00:19 dalek parrot: r48043 | coke++ | branches/html_cleanup/tool​s/docs/make_html_docs.pl:
00:19 dalek parrot: now that the old script is gone, just use docs/html
00:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48043/
00:19 Coke rant: the json processor in perl tells you the file offset where the error occurred, not the /line number/
00:22 darbelo I've just discovered that I have no idea what SubProxy PMCs are for, other than (I suppose) proxying subs.
00:24 darbelo And that we have pasm and pir code (with hideously outdated instructions) to 'test' them in src/dynpmc/
00:27 darbelo Other than that, they look completely unused.
00:28 darbelo The fact that it's referred as "Sample SubProxy class" in the .pmc file doesn't fill me with confidence either.
00:29 lucian joined #parrot
00:32 cotto_work -Ofire
00:33 darbelo Well, we *do* have a test under t/dynpmc/ that uses it. But I'm guessing it's just another 'test' dynpmc.
00:33 cotto_work It didn't appear to have much substance.
00:33 darbelo The invoke() vtable seems legit enough.
00:34 darbelo And 'Sub' provides the rest.
00:34 darbelo I wonder if PODing up the comments in there is enough to make it 'documented'
00:35 dalek parrot: r48044 | coke++ | branches/html_cleanup/docs/index/pmcs.json:
00:35 dalek parrot: Don't generate user-docs for parrot-internal testing dynpmcs.
00:35 dalek parrot: (Esp. since these 3 didn't have docs to gen anyway)
00:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48044/
00:37 darbelo Coke: I think you might want to exclude pccmethod_test.pmc too. While it has docs, it's another internal-testing-only dynpmc.
00:38 nopaste "darbelo" at 192.168.1.3 pasted "Token docs for SubProxy." (38 lines) at http://nopaste.snit.ch/21857
00:39 darbelo Coke: Same goes for SubProxy, apparently. OTOH, if you want to have it 'documented' http://nopaste.snit.ch/21857 will probably doit for you :)
00:39 kid51 joined #parrot
00:45 Coke darbelo: internal testing only? removed. danke.
00:45 Coke feel free to commit those docs anyway.
00:47 kid51 Coke:  What exactly is supposed to happen if a na�ve user types 'make html'?
00:48 kid51 Specifically, where are those html docs created?
00:51 dalek parrot: r48045 | coke++ | branches/html_cleanup/docs/index/pmcs.json:
00:51 dalek parrot: skip docs for some more apparently unused pmcs.
00:51 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48045/
00:53 Coke kid51: docs/html, just like today.
00:53 kid51 Does anyone other than the release manager ever have to issue that command?
00:54 kid51 These questions may sound stupid, but there's little guidance in, say, config/gen/makefiles/root.in.
00:54 kid51 And in 4 years I have never felt the need to type 'make html'.
00:54 tcurtis If anyone wants to see more up-to-date docs than are on docs.parrot.org
00:55 * kid51 crosses fingers and calls 'make html' for first time ever :-)
00:56 mikehh kid51: it's part of my build/test process - I usually do a make html just before a make smoke, and I do check the docs produced fairly regularly
00:56 darbelo Coke: nopaste committed as r48046
00:58 cotto_work you might as well just inline the PASM
00:59 kid51 I see that in trunk, at least, we are still producing some zero-byte .html files via 'make html'.
01:00 cotto_work That's an outstanding compression ratio.
01:01 kid51 No doubt the invention of all those old Bell Labs guys Google has hired.
01:01 rurban_ joined #parrot
01:08 dalek parrot: r48046 | darbelo++ | branches/html_cleanup/src/dynpmc/subproxy.pmc:
01:08 dalek parrot: PODify the comments in the subproxy dynpmc source code.
01:08 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48046/
01:11 Coke kid51: that's one of the tickets that drove me to redo this.
01:14 mikehh Coke: we still need an index.html (start page)
01:15 mikehh Coke: docs/html/parrotbug does not have an html extension
01:15 nopaste "kid51" at 192.168.1.3 pasted "html_cleanup branch 'make html' fails to build all docs" (23 lines) at http://nopaste.snit.ch/21859
01:16 kid51 Coke:  Yes I recall that ticket from years back.
01:17 Coke the html target has no dep, so when the dir gets created, it's done, and won't run again. you can use make -B html to force it.
01:17 Coke mikehh: yup, all the ones out there now are straight pod2html.
01:17 kid51 Coke:  Yes, but that only gets me back to the first failure message in paste 21859
01:18 Coke index.html requires stitching together.
01:18 kid51 k
01:18 Coke kid51: probably accidentally depending on something that requires docs (even though we don't need to) checking...
01:18 mikehh kid51: I did not get that at r48046
01:19 mikehh Coke: can't we use the json stuff?
01:19 kid51 mikehh:  r48046 trunk 'make html' was fine; only in 'html_cleanup' branch did it fail
01:20 mikehh kid51: didn't for me, but I only ran it after make corevm/make coretest, make world/make test
01:21 mikehh kid51: I still got the tools/dev/mk_native_pbc generated no HTML output
01:21 kid51 Hmm, I had assumed I could run it directly after Configure.pl
01:23 mikehh kid51: the only things I find you can run straight after configure without a build are make manifest_tests and make codetest
01:23 kid51 Well, as I read Makefile, I don't see any target dependencies such as 'all' for 'html' and its brethren
01:24 mikehh kid51: probably, but I have never tried
01:25 mikehh kid51: or let me correct that, not recently anyway, IIRC there were some problems, but that was yonks ago
01:26 kid51 So, after 'make' and 'make -B html' in branch, I get 226 .html files.  In trunk there are 283.
01:29 nopaste "kid51" at 192.168.1.3 pasted "html_cleanup branch: 'make html' generates 226 .html files" (226 lines) at http://nopaste.snit.ch/21860
01:31 mikehh kid51: confirm 226, but there is parrotbug in docs/html which is an html file with no extension
01:32 kid51 mikehh:  Yes, perhaps there are more like that.
01:33 kid51 Well, I'm glad Coke had the nerve to go deep into the make-html mine!
01:35 mikehh kid51: I made various half-hearted attempts, but got scared off
01:35 davidfetter joined #parrot
01:36 Coke kid51: fixed the packfile-c.pod issue.
01:36 Coke mikehh: what do you mean? we are using the json stuff.
01:36 kid51 As I told Coke at YAPC (I think), I looked at that stuff 3 years ago ... and decided refactoring Configure.pl was easier!
01:36 TiMBuS joined #parrot
01:36 kid51 Note:  At some point: "requires JSON.pm" has to go into the docs.
01:37 * kid51 did not have that installed on Linux box at first attempt of 'make html'
01:37 Coke make html is intended to be run right aftet config, yes. just had an old dep on someething in in 'make docs', which I fixed.
01:38 Coke kid51: it'll go into Task::Parrot.
01:38 kid51 Thx
01:39 Coke there are 0 byte pod files in the branch? checking...
01:39 plobsing joined #parrot
01:39 kid51 r48047 html_cleanup branch: 226 files created; screen output cleaner; still get: tools/dev/mk_native_pbc generated no HTML output
01:40 Coke only 0-byte file in branch is the one we warn about.
01:40 kid51 I get no 0 byte .html files in branch
01:40 kid51 find . -type f -name '*.html' -size 0c
01:40 Coke it's a shell script, I'm just going to not try to generate docs for it.
01:40 kid51 k
01:41 dalek parrot: r48047 | coke++ | branches/html_cleanup/docs/index/developer.json:
01:41 dalek parrot: use the original c file for pod source, not the pod file generated.
01:41 dalek parrot: kid51++ for the bug report.
01:41 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48047/
01:41 Coke looks like it's mk_native_pbc , not .html
01:43 cotto ~~
01:45 Coke kid51: I'm also going to remove Pod::Simple
01:45 Coke scratch that.
01:45 Coke *thinking about.
01:47 silug joined #parrot
01:50 mikehh Coke: the book stuff is PseudoPod format - I know gerd++ has been working on that for .pdf, but there is Pod::PseudoPod::HTML
01:52 mikehh Coke: I have never managed to get make pdf to work, but I don't think I've got all the LaTeX stuff loaded
01:54 mikehh Coke: you also want to make sure that anything you do does not mess up make pdf, whatever
01:54 Coke mikehh: SFAIK, only one person ever touches make pdf.
01:54 Coke he can fix it if I break it
01:55 mikehh Coke: regarding json, we could use it to generate the index.html file
01:56 eternaleye joined #parrot
01:57 dalek parrot: r48048 | coke++ | branches/html_cleanup/docs/index/tools.json:
01:57 dalek parrot: This file doesn't have any POD , don't bother trying to gen html from it.
01:57 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48048/
01:57 Coke mikehh: oh, yes, that's the plan. =-)
01:58 Coke each .json file corresonds to an .html file for us to generate.
02:12 jimk joined #parrot
02:17 eternaleye joined #parrot
02:49 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34794), fulltest) at r48048 - Ubuntu 10.04 amd64 (g++)
02:55 tewk_ joined #parrot
03:06 janus joined #parrot
03:19 dalek parrot: r48049 | tcurtis++ | branches/gsoc_past_optimizatio​n/t/library/pasttransformer.t:
03:19 dalek parrot: Rewrite PAST::Transformer tests in NQP with PAST::Pattern to make adding tests easier.
03:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48049/
03:20 JaphMalik joined #parrot
03:47 ash_ ping plobsing
03:48 Coke joined #parrot
03:52 dalek parrot: r48050 | tcurtis++ | branches/gsoc_past_optimization (2 files):
03:52 dalek parrot: Add tests for PAST::Transformer transforming PAST::Var.viviself and .vivibase, and implement it.
03:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48050/
03:54 dalek plparrot: 05e5684 | dukeleto++ | html/docs.html:
03:54 dalek plparrot: Add another link to the docs page
03:54 dalek plparrot: review: http://github.com/leto/plparrot/commit/0​5e5684526aaa3ff6d9e4a14ba1c08a52db73e92
04:03 silug joined #parrot
05:25 PerlPilot joined #parrot
06:00 NotFound joined #parrot
06:34 uniejo joined #parrot
07:39 fperrad joined #parrot
08:55 clinton joined #parrot
09:01 rurban_ joined #parrot
10:39 JimmyZ joined #parrot
10:41 bkuhn joined #parrot
11:38 lucian joined #parrot
12:14 szabgab joined #parrot
12:21 szabgab joined #parrot
12:37 dalek parrot: r48051 | gerd++ | trunk (2 files):
12:37 dalek parrot: add a news and update the editor documentation a bit
12:37 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48051/
12:47 AzureStone joined #parrot
12:50 ruoso joined #parrot
13:01 moritz I've started an unofficial #yapc-eu channel on this server
13:26 dalek parrot: r48052 | gerd++ | trunk/editor/README.pod:
13:26 dalek parrot: I don't use kde and kate, only find some information on the internet.
13:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48052/
13:35 tcurtis joined #parrot
13:43 dalek parrot: r48053 | fperrad++ | trunk/t/library/pcre.t:
13:43 dalek parrot: [t] test TODOed on Windows
13:43 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48053/
13:48 dalek rakudo: e597953 | pmichaud++ | docs/spectest-progress.csv:
13:48 dalek rakudo: spectest-progress.csv update: 507 files, 33910 (84.4% of 40163) pass, 0 fail
13:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​597953a8540b03a00c7192a24769b72c59bd10f
13:51 Mokurai joined #parrot
14:00 bubaflub joined #parrot
14:08 gbacon joined #parrot
14:32 dalek parrot: r48054 | gerd++ | trunk/config/gen/platform/generic/env.c:
14:32 dalek parrot: add patch from TT #1140
14:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48054/
14:47 ash_ joined #parrot
15:15 clinton joined #parrot
15:34 Maddingue joined #parrot
15:36 hercynium joined #parrot
15:55 dalek parrot: r48055 | tcurtis++ | failed to fetch changeset:
15:55 dalek parrot: Merge trunk.
15:55 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48055/
16:05 skv joined #parrot
16:07 theory joined #parrot
16:26 ash_ joined #parrot
16:33 ilbot2 joined #parrot
16:33 Topic for #parrotis now Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: review experimental features for promotion or removal, fix 'make html', pre-release testing.
16:40 * Coke points at http://rt.perl.org/rt3/Tic​ket/Display.html?id=76416.
16:40 Coke would be nice to figure out if that is us or rakudo.
16:40 Coke (and fix it.)
16:42 moritz it seems that rakudo leaks again on very simple loops
16:44 tcurtis Any git-knowledgable people have any suggestions on how to extract part of a svn repo to a git repo? Other than importing the whole repo and deleting all the stuff that is unneeded?
16:44 moritz tcurtis: you can git-svn clone $repo_url/some/path (but you probably won't get branches)
16:46 cotto_work ~~
16:48 darbelo allison: ping.
16:49 NotFound joined #parrot
16:49 tcurtis moritz: any way of doing similar when the parts you need of the svn aren't all in the same directory(other than the root)?
16:50 moritz tcurtis: none that I'm aware of
16:50 tcurtis moritz:  I didn't think there would be. Thanks, though.
16:50 particle what's the newish svn functionality called that lets you get slices (perl term) of the repo?
16:51 moritz particle: svn has that from the auld days, git has sub-repositories... don't know which one you mean
16:51 particle eh, that probably wouldn't help anyway, i don't think you can get history that way
16:52 particle i mean, i can checkout/update <root>/abc and <root>/def/ghi only
16:52 particle it's 1.6 iirc
16:52 particle anyway, the folks at irc.freenode.net#git are very helpful
16:53 particle i have in the past used this svn feature to sync only the src/perl6 and t/spec directories from pugs
16:53 * moritz create a 'git svn clone http://svn.pugscode.org/pugs/t/spec' mirror
16:54 particle ah, sparse checkouts: http://svnbook.red-bean.com/nightl​y/en/svn.advanced.sparsedirs.html
16:54 particle new in svn 1.5
16:54 moritz huh
16:55 particle yeah, pretty cool feature
17:00 fperrad joined #parrot
17:00 darbelo Heh. Looks like we have 6 different platform specific definitions for a function we never use :)
17:00 bluescreen joined #parrot
17:01 particle we strive for portability
17:01 NotFound darbelo: We should patent that!
17:01 rurban_ joined #parrot
17:01 darbelo No, wait it's two functions. Parrot_signbit and Parrot_signbit_l
17:03 * cotto_work autographs a bit and hands it to darbelo
17:03 * NotFound plays Supertramp 'Give a little bit'
17:06 NotFound darbelo: looks like its usage is hidden inside macros
17:06 darbelo No wait, one of them *is* used.  signbit() get's defined to one of them.
17:07 darbelo ans signbit() shows up in Parrot_is_nzero() which does get called.
17:41 s1n left #parrot
18:08 * mikehh needs to reboot - brb
18:11 fperrad joined #parrot
18:19 LoganLK joined #parrot
18:21 silug joined #parrot
18:30 fperrad joined #parrot
18:38 dalek tracwiki: v64 | cotto++ | ParrotQuotes
18:38 dalek tracwiki: we strive for portability
18:38 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Pa​rrotQuotes?version=64&amp;action=diff
18:43 bubaflub joined #parrot
18:49 fperrad joined #parrot
19:02 baest joined #parrot
19:11 moritz how do I get a caller's outer lexpad?
19:11 NotFound ' "Closures are anonymous methods, packaged in such a way that they can be passed as parameters to other methods." - this is like describing a porsche by stating it generally has 4 wheels'
19:12 moritz NotFound: right
19:13 fperrad joined #parrot
19:13 NotFound moritz: It's a comment in slashdot.
19:13 cotto_work That's what you get for reading slashdot comments.
19:14 darbelo That's what you get for reading slashdot.
19:14 sorear it's also wrong, but I stopped fighting that battle years ago
19:14 darbelo Yeah. Porsche makes motorcycles too.
19:15 NotFound cotto_work: Don't have a Porsche but my car has 5 wheels.
19:15 cotto_work Something wrong?  On the Internet?
19:15 moritz I know that with interp['lexpad';1] I get the caller's lexpad
19:15 moritz and with interp['outer';'lexpad';1] I get the outer lexpad
19:16 moritz but how do I get the caller's outer pad?
19:16 atrodo cotto_work> http://xkcd.com/386/
19:16 cotto_work just what I was thinking of
19:16 atrodo I figured.  But still, I love xkcd
19:17 cotto_work xkcd++
19:17 atrodo xkcd++
19:17 sorear allison++
19:17 cotto_work I have the "Map of the Internet" poster outside my office and it *still* catches people every other week or so.
19:18 mikehh joined #parrot
19:21 Coke do any of the primarily-perl6 folks that hang out in this channel ever feel like there's an anti-perl6 sentiment here?
19:22 cotto_work allison, if "dynamic vtables" in your parrot-dev post refers to the Piumarta and Warth paper, you might want to link to it for anyone who hasn't read it.
19:23 Tene Coke: I don't knwo if I fall into the named category, but I've never noticed such sentiment.
19:24 Coke k. I feel an undercurrent of the reverse there (anti-parrot from #perl6). wondering if it is symetrical, or perhaps if it's just me.
19:25 Coke (having just chimed in on a thread about how easy it is to misread people online...)
19:25 Tene I've never noticed that either, so maybe I'm just insufficiently observant.
19:25 NotFound Coke: I'm anti-anti
19:27 atrodo cotto_work> you're the lorito task master, right?
19:27 cotto_work allison, also, why have a separate isgt and islt?  If we're going for minimalism it seems redundant.
19:27 cotto_work atrodo: yup
19:27 NotFound Unless someone creates a language called "anti", 'course.
19:28 Tene allison: instead of read/write stdin/stdout, can that just be read/write a fh?
19:28 atrodo I had some ideas about Lorito lately, and wanted to see how insane/sane someone with a bit more experience than me thought they were
19:28 atrodo but I also wanted to see what allison had to say
19:28 cotto_work . o 0 (Perhaps I should be keeping these comments in the thread.)
19:29 allison Tene: it could be a fh, but that's a heavy amount of bootstrapping before you can start to test that it's working
19:29 allison Tene: so, even if read/write as stdin/stdout don't make it into the final implementation, really want it in the initial implementation
19:30 Tene 'k, I guess I'm fine with that.
19:30 Coke if you're looking for completely minimalism, you could kill mul and goto Label, too.
19:30 Coke I'm wondering if not is needed.
19:31 ash_ couldn't you do read/write with fh's and have a special thing for easily retrieving stdin/out/err?
19:31 cotto_work Coke, me too
19:31 Coke ash_: well, we're trying to reduce the special things here.
19:31 allison ash: aye, but at first we won't even have PMCs, which are kind of necessary for filehandles
19:31 NotFound For absolutely minimalism, "exit" is enough X-)
19:32 cotto_work Mu
19:32 Coke NotFound: *thbbbthp*
19:32 Tene ash_: by fh, I mean actual fh numbers.  I'd expect that user-level IO will be done by methods or whatever, but this microcode is for writing the PMCs in, and you need a way to get to the read and write system calls eventually.
19:32 ash_ Coke, allison: yeah, i see your point(s?)
19:32 Coke NotFound: I am reminded of early, very promising speed trials comparing partcl to tclsh... until I realized i was segfaulting parrot, which was really fast!
19:32 NotFound Next step will be "exit" and "hcf"
19:32 Tene So this is the opcode that would be used in the 'read' method of the IO pmc, or whatever.
19:32 allison cotto: aye, but trying to avoid perl6-isms too
19:32 atrodo Really "subleq" is all you need
19:33 * Coke hopes no one suggests resurrecting the "DWIM" opcode.
19:33 atrodo Tene> windows?
19:33 NotFound All you need is subleq! Ta-da-da-da-daaaa.
19:33 Coke allison: +1 on killing strings vs. Strings.
19:33 Coke NotFound: ... I will Beat(le) you.
19:33 Tene I... actually don't know how windows does read/write.  I assumed it was the same.  I guess that might be silly.
19:33 allison Tene: yah, platform portability, as atrodo said (going for generic abstractions where possible)
19:34 NotFound Sorry, I'm still under the effect of yesterdays football match X-)
19:34 allison Tene: but, you're absolutely right, it is effectively just the low-level fh's in *nix
19:34 cotto_work NotFound: I wish I could hang out in Spain during that partying.
19:34 allison Tene: which probably means we should have 'error' too
19:35 Tene bleh... I don't like that much... okay.
19:35 NotFound cotto_work: you're welcome
19:35 Tene I'll avoid grumping without patches. :)
19:35 moritz uhm... what happened to calling stuff?
19:35 Coke allison: if you give me error, I'll want catch.
19:35 Coke moritz: see "call"
19:36 atrodo allison> I like the raw block of memory idea, but what about pointers to other blocks?
19:36 moritz ah
19:36 moritz Coke: thanks
19:36 allison atrodo: PMCs are just pointers
19:36 Coke I will be amused if the first VM for this is written in PIR.
19:36 Coke since, you know, we have that lying around.
19:36 moritz :-)
19:37 allison Coke: heh :)
19:37 cotto_work allison, I'll repsond inline to your post.  it's too easy to lose the thread in here.
19:37 Coke also horrified, btw. just to be clear.
19:37 atrodo allison> but do you really want to expose the real pointers as integers inside of a VM?
19:37 allison atrodo: not as integers, no
19:37 allison atrodo: there are too many platform portability problems with that
19:38 atrodo But if you can manipulate the block of memory as a whole directly, where does that leave the pointers?
19:38 Coke allison: is there a reason for making setattr/getattr "native" instead of doing them via method calls?
19:38 allison atrodo: but, you do need the ability to store a pointer to a PMC as the attribute of a PMC
19:38 cotto_work allison: for the record, were you referring to the Piumarta and Warth paper when you mentioned "dynamic vtables"?
19:38 allison Coke: no, not really, they could just be handled by 'call'
19:39 allison Coke: and really better that way, no hard coding of the behaviour
19:39 Coke just wondering if speed was a concern there.
19:39 Coke (or something)
19:39 atrodo allison> So are the attributes different than the allocated block of memory?
19:40 allison cotto: in a general way yes, but more specifically we've been talking for ages about the bloat of a fixed vtable, and how much better it would be to only store the vtable entries the PMC actually uses
19:41 allison Coke: yes, speed was what prompted me to add them, and also thinking of attribute access as the replacement for direct low-level memory access
19:41 moritz allison: re "PMC" vs. "object", I like "PMC" because it means it's easy to linguistically distinguish parrot objects from HLL objects
19:41 Coke at which point, they're just, what, hidden methods?
19:42 allison moritz: ah, but that's the key to Lorito, there is no distinction between the two
19:42 Coke POC - Parrot Object Container. ;)
19:43 cotto_work It's pretty cool.  vtables have a vtable
19:44 Coke is there any reason to keep a dstinction between method & vtable in this model?
19:44 allison Coke: I was thinking of them more like C's direct struct access, just raw offset in the memory. but methods are much safer (if we can make them fast, and I think we can)
19:44 tcurtis cotto_work: link to this dynamic vtables paper, please?
19:44 Coke (fast methods) one certainly hopes so ;)
19:44 allison Coke: only to the extent that a "method" is an invokable PMC, while a vtable is a function pointer
19:44 cotto_work tcurtis: http://tinyurl.com/22owv6r
19:45 allison Coke: that is, it has more to do with calling conventions than anything else
19:45 Coke allison: but if you override a vtable, you use an invokable PMC, neh? and if you want to handroll a method, you could potentially use a function pointer?
19:45 allison Coke: yes, and so we could call them all methods
19:46 allison Coke: and we could even unify the calling conventions (maybe even should)
19:46 Coke (have to  jump through hoops to override a vtable today) be nice if there was just a marker to say "this is internal use only" vs "this is an HLL-visible method'
19:46 allison Coke: if we can make it so that simple dispatch is fast, and you only pay the cost of the more complex dynamic dispatch features when you use them, we'll be ahead there
19:48 ash_ that paper sounds like objective-c's class implementation
19:48 darbelo msg tcurtis dukeleto and me are also plumage committers, we can add your plumage metadata once it's ready.
19:48 purl Message for tcurtis stored.
19:48 allison Coke: and really, when you get down to it, we're talking about making everything implemented in the microcode (ops, pmcs, etc). if vtables and methods are both implemented in mirocode, then there's really no distintion
19:49 atrodo What if you wanted to, in the case of embedders, call a function that's really a native function?
19:49 japhb <rez>
19:50 tcurtis allison: is potentially unsafe ops at the lowest level as much of a problem if we plan for most things to not use the unsafe ops directly?
19:50 japhb tcurtis, darbelo: And of course anytime someone says 'plumage', I get highlighted, so you can get my attention that way -- or just send me email.
19:50 tcurtis s/is/are/
19:50 atrodo I will now make it a point to randomly say "plumage!" in the middle of the day
19:51 japhb I knew someone was going to say that.  :-)
19:51 allison atrodo: I made an implicit assumption there that 'load' would be both bytecode and C libraries, with some additional NCI plumbing for C libraries
19:52 atrodo allison> makes sense
19:53 ash_ objective-c has a pretty solid (and fast) class system setup, if you want to look for inspiration for an open class implementation that is extendable at runtime
19:54 tcurtis atrodo: Don't abuse our benefactors.
19:54 allison tcurtis: yes, it depends to a certain extent on how much me expose of the lowest level of microcode to the higher levels. It also partly depends on the composition model of the higher levels. As in: implementing 'new' or attribute access in terms of opcodes like 'alloc' and direct memory peeking is really cumbersome.
19:55 atrodo tcurtis> okay, i'll try and limit myself to once a week
19:55 eternaleye joined #parrot
19:57 ash_ http://opensource.apple.com/source/objc4​/objc4-437.1/runtime/objc-runtime-new.h has the class structures used by objc, it's MOP is really close to parrots, except you can only have 1 parent, (protocols are roles though)
19:57 allison tcurtis: It also doesn't lend itself to swapping out GC models. But then, it may make the most sense to provide both "managed" memory through 'new' and attribute access, as well as "unmanaged" memory for things like optimized integer arrays that want direct manipulation.
19:58 fperrad joined #parrot
19:58 allison ash: there's a reason for the similarity, it was one of our references in the revised Parrot MOP :)
19:59 atrodo So, if I was making this test proposed lorito, I'd need an assembler of minimal sorts, a core that runs these 20 ops, and a loader to bring it in memory
19:59 ash_ allison: got ya
19:59 allison ash: also Moose, and Sam Vilain's SMOP, among other things
19:59 atrodo errr, a loader to take an assembled file into memory to run
20:00 allison Coke: I wasn't thinking of 'error' as an exception, but simply as writing to stderr, but probably needs a better name
20:01 darbelo 'complain'?
20:01 allison Coke: and 'not' is a good idea
20:01 allison darbelo: aye, something like that
20:03 allison atrodo: yup, that's it
20:04 atrodo allison> My weekend might just be shot...
20:04 allison atrodo: :)
20:04 darbelo allison: I also have a gsoc issue I wanted to run by you.
20:04 allison darbelo: sure
20:05 dalek rakudo: 1971474 | moritz++ | lib/Safe.pm:
20:05 dalek rakudo: [Safe.pm] remove non-functional code
20:05 darbelo I think I've found a cleaner way to solve the NFG transcoding issues without having to make all other encoding grapheme aware.
20:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​97147422c0283d686a4ccfa2c6cc94d27fd3d43
20:06 NotFound darbelo: "cry"
20:06 cotto_work 'gripe'
20:06 allison darbelo: what's that?
20:06 darbelo I found the solution in the PDD, amusingly. It claims parrot will offer 'grapheme and codepoint'-level interfaces to strings.
20:07 darbelo We don't. So we end up conflating graphemes and codepoints in a few places.
20:07 Coke allison: printerr is fine.
20:08 Tene allison: I'd like to see explicit mention that this is a bootstrapping set of opcodes, and see a list of what the changes for the final set of opcodes will be.
20:08 Tene If that's really the plan.
20:08 Coke but is that really necessary?
20:08 darbelo I'm thinking of adding 'codepoint iterators' that decompose graphemes on the fly.
20:09 NotFound darbelo: I think we already have codepoint iterators.
20:09 atrodo Isn't the idea that these 20 or so ops are composed to create all other ops and pmcs?
20:10 darbelo NotFound: Sort of, we have one kind of iterator, that doesn't make the grapheme-codepoint distinction.
20:10 NotFound darbelo: as long as all we have now are codepoints, they are codepoint iterators.
20:10 darbelo Which makes sense, since the distinction is irrelevant outside of NFG.
20:11 tcurtis atrodo: These are just a bootstrapping set to be able to get a prototype implemented quickly so that we can actually try our plans out, if I understand what allison said at #ps yesterday correctly.
20:11 darbelo NotFound: In my branch, "all we have now are codepoints" has become false :)
20:12 moritz darbelo++
20:12 darbelo It's just that, most of the time, graphemes look very much like codepoints ;)
20:13 NotFound darbelo: yeah, but IMO is better to leave existing iterators as they are rather than rewriting them to be a different thing and then creatring new ones to do what the older do in the beginning X-)
20:14 darbelo NotFound: In non-nfg strings, you won't be able to tell the difference.
20:14 darbelo And getting a grapheme is the right thing when iterating a NFG-encoded string.
20:15 ash_ in pbc_to_exe, has anyone ever thought about expanding the runloop?
20:15 darbelo I just need a way to iterate over the codepoints of a NFG-encoded string.
20:18 NotFound darbelo: that depends of the meaning of string_length. If string_length gives codepoint length but iterators uses grpaheme length we'll have not amusing confusions.
20:19 NotFound You won't be able to tell the difference... until it explodes.
20:21 darbelo NotFound: If you keep on doing stuff as you are doing it now, it'll just work and not explode.
20:22 darbelo ... if it doesn't explode already :)
20:23 NotFound Sure, I usually don't write serbo-croatian X-)
20:25 ash_ allison: taking some inspiration from llvm-ir, instead of a getattr and setattr, you could just use pseudo-code  "R0 = someobject; R1 = getattr R0, 'name'; set R1, 'new_val'; and do away with setattr, but its pretty nice to have setattr...
20:26 allison ash: aye, there's a balance between minimimalism and circumlocution, sometimes a simplification is possible, but just makes writing other code cumbersome
20:26 ash_ the llvm-ir calls that 'getelementptr' for grabbing a pointer to any offset of a pointer/struct/etc.
20:28 dalek rakudo: c80319f | moritz++ | src/Perl6/ (2 files):
20:28 dalek rakudo: add FORBID_PIR pseudo package which disallows Q:PIR { } and pir::stuff
20:28 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​80319f902ee84142a7338e31ba4a5b97265fb5d
20:28 allison ash: it doesn't work as well in our case, too, since the attribute may be an integer rather than an object
20:29 allison ash: but I'm leaning toward Coke's suggestion, where both setattr and getattr go away, to be replaced by vtable functions/methods on the PMC
20:29 darbelo allison: Anyway, does it make sense to you to have a flag on iterators (or a variant iterator maybe) that does codepoint iteration over NFG strings.
20:29 allison darbelo: sorry, I was waiting for your question, then got pulled away. I'll backscroll.
20:30 darbelo I'm leaning towards passing an extra param to iter_init() right now.
20:31 tcurtis allison: if [set|get]attr are method/vtable calls, how does the PMC implement the relevant vtable/method?
20:32 darbelo tcurtis: Magic!
20:32 darbelo Or intimate knowledge of it's own internals.
20:32 darbelo It amounts to the same thing really.
20:32 allison darbelo: yes, we need ways to interface with strings by graphemes and by codepoints, but we'll have to be very careful about a) what we make the default, and b) where we expose only one way and where we expose both
20:33 bubaflub joined #parrot
20:33 allison darbelo: I'd be inclined to say the current interfaces should continue to operate by codepoints where necessary, and by graphemes where possible
20:34 allison darbelo: and then add new interfaces specific to grapheme behavior
20:34 silug joined #parrot
20:35 allison tcurtis: all methods/vtables are implemented in (low or high-level) opcodes
20:35 allison tcurtis: because all PMCs and ops (except for the lowest level of the microcode) are implemented in opcodes
20:36 allison tcurtis: but, will had some declarative syntax for some aspects of classes
20:36 tcurtis allison: ah. And the attribute accessors will be generated from that?
20:36 ash_ is there any need (at the lorito level) for making a closure? or cloning objects?
20:37 allison ash: closures are just a kind of sub object, the same as now (with a reference to the relevant captured lexical scope)
20:37 ash_ or lexical/dynamic variable lookup? (just wondering, those seem like complicated things that might be hard to explain in lorito)
20:38 allison ash: cloning currently is a vtable function, don't see any need to change that
20:38 NotFound allison: BTW have you looked at TT #1702?
20:39 allison ash: variable access is an interpreter issue, i.e. you grab the relevant data structure from the relevant location and access attributes on it
20:39 ash_ just thinking of complicated things that might be worth being low level, thats all
20:40 allison ash: yah, it's a matter of making sure it's possible to implement the complex features in terms of the simple low-level features
20:41 allison ash: for lexicals, they're stored in a data structure that's stored in the callcontext of the current executing subroutine (and in a chain linking backward from that data structure)
20:41 allison ash: so we'll need to provide a way to access "the current executing sub" and "the current interpreter"
20:42 allison ash: or really, just "the current interpreter" since the rest is linked from there
20:43 particle no 'print' in the 20 opcodes?
20:43 darbelo particle: see write.
20:43 particle oh, 'write'.
20:43 ash_ it had access to stdout
20:43 moritz write (write a register to stdout, absolute minimum for testing)
20:43 particle i'm scanning while on a concall, sorry
20:43 allison NotFound: I have (on TT #1702), or at least a nearly identical bug that was reported several months ago
20:44 cotto_work tcurtis: I was too quick with that link.  I meant to link to http://tinyurl.com/23dfwut
20:44 particle so, exceptions will be based on goto?
20:44 allison particle: exceptions are based on subroutines
20:44 particle phew
20:44 tcurtis Oh my. Does "git svn clone" really clone the entire history of the repository?
20:44 NotFound allison: yes, but I wonder what is the intended solution. Just an example in the pdd isn't very normative.
20:45 ash_ tcurtis: yes, but you can limit that
20:45 Tene tcurtis: use -r to specify the revision to start from
20:45 tcurtis Tene: thanks.
20:46 ash_ would lorito need any ability to box/unbox or type convert?
20:46 ash_ or would that be delegated to a PMC
20:46 ash_ for the most part
20:47 allison NotFound: this is one of those "not yet specified" cases, but having it restart from the beginning of the subroutine after it's "returned" seems far more useful than Coroutines that can be used only once in the whole running of the virtual machine, so let's go with that
20:47 ash_ also, i see call but is there a way to return? /me okay done with annoying questions
20:47 Coke return is call. hah!
20:47 ash_ lol
20:47 allison Coke is right :)
20:48 NotFound allison: in fact they can be used several times, you just need to use clones.
20:48 ash_ call 'return'
20:48 cotto_work so tailcall is just a call that doesn't do a call back
20:48 allison NotFound: yes, but that seems like a silly workaround. I could accept the argument that there should be a way to mark it as dead
20:49 cotto_work s/call back/return call/
20:49 allison NotFound: or, dead by default and a way to mark it as live
20:49 allison NotFound: but requiring a clone seems wasteful
20:49 NotFound allison: my point is that the argument that the caller shouldn't care isn't true, that works only if it takes no args.
20:50 allison NotFound: yes, that is very true
20:50 allison NotFound: perhaps we should have a :restart option passed in the call?
20:51 allison NotFound: we might even make it work when the coroutine isn't dead yet
20:52 NotFound A method, maybe.
20:52 tcurtis Tene: so, if I wanted every revision beginning at 46812, what would I do?
20:52 allison NotFound: or an optional named argument 'restart'=>1
20:53 Tene tcurtis: http://trac.parrot.org/par​rot/wiki/git-svn-tutorial
20:54 NotFound allison: I don't think we should add more load to pcc for a particular case, unless that particular case is very frequent and speed critical.
20:55 allison NotFound: that's against the :restart option? agreed
20:55 NotFound allison: yes
20:55 allison NotFound: especially since it's a custom option to one particular PMC
20:56 allison NotFound: but, having that PMC intercept arguments passed to it in the call is pretty reasonable
20:57 allison NotFound: calling a separate method is also reasonable
20:58 NotFound I don't think is an urgent problem, I just care because there is a todo'ed test since long time wich needs a design decision in order to be fixed, and that ticket reminded me of it.
20:58 tcurtis Tene: thanks. That works.
20:59 allison NotFound: I can record the decision in the ticket
20:59 NotFound No urgent, anyway.
20:59 allison NotFound: that removes the roadblock, so someone can work on it when inclined
21:03 NotFound BTW the posibilty of using a clone of a coroutine is useful, as a extremely simple functor.
21:37 lucian_ joined #parrot
21:38 atrodo http://github.com/atrodo/lorito # My weekend is shot
21:40 cotto_work nice to see that gripe made it
21:41 cotto_work time for some cloninating
21:42 GeJ Bonjour everyone.
21:42 dalek parrot: r48056 | mikehh++ | trunk/t/library/pcre.t:
21:42 dalek parrot: perlcritic does not like - Variable declared in conditional statement
21:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48056/
21:43 cotto_work kinda stubby
21:43 cotto_work way to develop in the open though
21:43 cotto_work atrodo++
21:46 atrodo Hey, if it
21:47 atrodo 's one thing I'm good at, it's stubs!
21:59 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34804), fulltest) at r48056 - Ubuntu 10.04 amd64 (gcc with --optimize)
22:04 ash_ joined #parrot
22:32 dalek parrot: r48057 | mikehh++ | trunk/editor/README.pod:
22:32 dalek parrot: correct typo, remove TODO as I did a bit of testing,
22:32 dalek parrot: (kate_syntax.pl probably needs to be updated as there have been quite a few changed since it was last worked on)
22:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48057/
22:51 dalek winxed: r539 | NotFound++ | trunk/winxedst1.winxed:
22:51 dalek winxed: a bit of refactoring to avoid repeated code
22:51 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=539
23:12 cotto_work piumarta and warth?
23:13 cotto_work piumarta and warth is http://tinyurl.com/23dfwut
23:13 cotto_work p&w is http://tinyurl.com/23dfwut
23:13 cotto_work p&w?
23:13 purl p&w is http://tinyurl.com/23dfwut
23:15 kid51 joined #parrot
23:18 nopaste "kid51" at 192.168.1.3 pasted "html_cleanup branch: 'make html' fails due to 'malformed JSON string'" (4 lines) at http://nopaste.snit.ch/21896
23:19 kid51 let's try that paste agian
23:19 kid51 s/agian/again/
23:19 nopaste "kid51" at 192.168.1.3 pasted "html_cleanup branch: 'make html' fails due to 'malformed JSON string'" (7 lines) at http://nopaste.snit.ch/21897
23:19 kid51 That's better
23:39 nopaste joined #parrot
23:45 ruoso joined #parrot
23:55 Psyche^ joined #parrot
23:55 Coke kid51: fixed, thanks.

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced