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.
Set by moderator on 6 July 2010.
cotto_work coke++ for the docs refactor 00:09
Coke I need docs for src/dynpmc/*.pmc and tools/dev/mk_native_pbc 00:12
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
darbelo Ah. I hadn't looked at those. 00:15
Coke sorry, I hadn't look at what other ones were there. =-)
darbelo But, with the exception of subproxy, those are there for testing purposes.
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.
darbelo cotto_work: I was referring to the one's in Coke's list. 00:17
cotto_work gotcha
darbelo There's also pccmethod_test.pmc, looking at the dir contents. 00:18
Coke the rest all have docs.
dalek rrot: r48039 | coke++ | branches/html_cleanup/config/gen/makefiles/docs.in:
remove old html target.
rrot: r48040 | coke++ | branches/html_cleanup (2 files):
Remove old tool for generating html docs.
rrot: r48041 | coke++ | branches/html_cleanup/tools/docs/make_html_docs.pl:
'make html' is really run from docs/ - fix the script to cope.
rrot: r48042 | coke++ | branches/html_cleanup/docs/index/tools.json:
This file has been removed, don't try to generate docs for it.
rrot: r48043 | coke++ | branches/html_cleanup/tools/docs/make_html_docs.pl:
now that the old script is gone, just use docs/html
Coke rant: the json processor in perl tells you the file offset where the error occurred, not the /line number/
darbelo I've just discovered that I have no idea what SubProxy PMCs are for, other than (I suppose) proxying subs. 00:22
And that we have pasm and pir code (with hideously outdated instructions) to 'test' them in src/dynpmc/ 00:24
Other than that, they look completely unused. 00:27
The fact that it's referred as "Sample SubProxy class" in the .pmc file doesn't fill me with confidence either. 00:28
00:29 lucian joined
cotto_work -Ofire 00:32
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.
darbelo The invoke() vtable seems legit enough.
And 'Sub' provides the rest. 00:34
I wonder if PODing up the comments in there is enough to make it 'documented'
dalek rrot: r48044 | coke++ | branches/html_cleanup/docs/index/pmcs.json:
Don't generate user-docs for parrot-internal testing dynpmcs.
00:35
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:37
nopaste "darbelo" at 192.168.1.3 pasted "Token docs for SubProxy." (38 lines) at nopaste.snit.ch/21857 00:38
darbelo Coke: Same goes for SubProxy, apparently. OTOH, if you want to have it 'documented' nopaste.snit.ch/21857 will probably doit for you :) 00:39
00:39 kid51 joined
Coke darbelo: internal testing only? removed. danke. 00:45
feel free to commit those docs anyway.
kid51 Coke: What exactly is supposed to happen if a naļæ½ve user types 'make html'? 00:47
Specifically, where are those html docs created? 00:48
dalek rrot: r48045 | coke++ | branches/html_cleanup/docs/index/pmcs.json:
skip docs for some more apparently unused pmcs.
00:51
Coke kid51: docs/html, just like today. 00:53
kid51 Does anyone other than the release manager ever have to issue that command?
These questions may sound stupid, but there's little guidance in, say, config/gen/makefiles/root.in. 00:54
And in 4 years I have never felt the need to type 'make html'.
tcurtis If anyone wants to see more up-to-date docs than are on docs.parrot.org
kid51 crosses fingers and calls 'make html' for first time ever :-) 00:55
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
cotto_work you might as well just inline the PASM 00:58
kid51 I see that in trunk, at least, we are still producing some zero-byte .html files via 'make html'. 00:59
cotto_work That's an outstanding compression ratio. 01:00
kid51 No doubt the invention of all those old Bell Labs guys Google has hired. 01:01
01:01 rurban_ joined
dalek rrot: r48046 | darbelo++ | branches/html_cleanup/src/dynpmc/subproxy.pmc:
PODify the comments in the subproxy dynpmc source code.
01:08
Coke kid51: that's one of the tickets that drove me to redo this. 01:11
mikehh Coke: we still need an index.html (start page) 01:14
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 nopaste.snit.ch/21859
kid51 Coke: Yes I recall that ticket from years back. 01:16
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
mikehh: yup, all the ones out there now are straight pod2html.
kid51 Coke: Yes, but that only gets me back to the first failure message in paste 21859
Coke index.html requires stitching together. 01:18
kid51 k
Coke kid51: probably accidentally depending on something that requires docs (even though we don't need to) checking...
mikehh kid51: I did not get that at r48046
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
mikehh kid51: didn't for me, but I only ran it after make corevm/make coretest, make world/make test 01:20
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
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
mikehh kid51: probably, but I have never tried 01:24
kid51: or let me correct that, not recently anyway, IIRC there were some problems, but that was yonks ago 01:25
kid51 So, after 'make' and 'make -B html' in branch, I get 226 .html files. In trunk there are 283. 01:26
nopaste "kid51" at 192.168.1.3 pasted "html_cleanup branch: 'make html' generates 226 .html files" (226 lines) at nopaste.snit.ch/21860 01:29
mikehh kid51: confirm 226, but there is parrotbug in docs/html which is an html file with no extension 01:31
kid51 mikehh: Yes, perhaps there are more like that. 01:32
Well, I'm glad Coke had the nerve to go deep into the make-html mine! 01:33
mikehh kid51: I made various half-hearted attempts, but got scared off 01:35
01:35 davidfetter joined
Coke kid51: fixed the packfile-c.pod issue. 01:36
mikehh: what do you mean? we are using the json stuff.
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
kid51 Note: At some point: "requires JSON.pm" has to go into the docs. 01:36
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.
kid51: it'll go into Task::Parrot. 01:38
kid51 Thx
Coke there are 0 byte pod files in the branch? checking... 01:39
01:39 plobsing joined
kid51 r48047 html_cleanup branch: 226 files created; screen output cleaner; still get: tools/dev/mk_native_pbc generated no HTML output 01:39
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
find . -type f -name '*.html' -size 0c
Coke it's a shell script, I'm just going to not try to generate docs for it.
kid51 k
dalek rrot: r48047 | coke++ | branches/html_cleanup/docs/index/developer.json:
use the original c file for pod source, not the pod file generated.
01:41
Coke looks like it's mk_native_pbc , not .html
cotto ~~ 01:43
Coke kid51: I'm also going to remove Pod::Simple 01:45
scratch that.
*thinking about.
01:47 silug joined
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:50
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:52
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.
he can fix it if I break it
mikehh Coke: regarding json, we could use it to generate the index.html file 01:55
01:56 eternaleye joined
dalek rrot: r48048 | coke++ | branches/html_cleanup/docs/index/tools.json:
This file doesn't have any POD , don't bother trying to gen html from it.
01:57
Coke mikehh: oh, yes, that's the plan. =-)
each .json file corresonds to an .html file for us to generate. 01:58
02:12 jimk joined 02:17 eternaleye joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34794), fulltest) at r48048 - Ubuntu 10.04 amd64 (g++) 02:49
02:55 tewk_ joined 03:06 janus joined
dalek rrot: r48049 | tcurtis++ | branches/gsoc_past_optimization/t/library/pasttransformer.t:
Rewrite PAST::Transformer tests in NQP with PAST::Pattern to make adding tests easier.
03:19
03:20 JaphMalik joined
ash_ ping plobsing 03:47
03:48 Coke joined
dalek rrot: r48050 | tcurtis++ | branches/gsoc_past_optimization (2 files):
Add tests for PAST::Transformer transforming PAST::Var.viviself and .vivibase, and implement it.
03:52
parrot: 05e5684 | dukeleto++ | html/docs.html:
Add another link to the docs page
03:54
04:03 silug joined 05:25 PerlPilot joined 06:00 NotFound joined 06:34 uniejo joined 07:39 fperrad joined 08:55 clinton joined 09:01 rurban_ joined 10:39 JimmyZ joined 10:41 bkuhn joined 11:38 lucian joined 12:14 szabgab joined 12:21 szabgab joined
dalek rrot: r48051 | gerd++ | trunk (2 files):
add a news and update the editor documentation a bit
12:37
12:47 AzureStone joined 12:50 ruoso joined
moritz I've started an unofficial #yapc-eu channel on this server 13:01
dalek rrot: r48052 | gerd++ | trunk/editor/README.pod:
I don't use kde and kate, only find some information on the internet.
13:26
13:35 tcurtis joined
dalek rrot: r48053 | fperrad++ | trunk/t/library/pcre.t:
[t] test TODOed on Windows
13:43
kudo: e597953 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 507 files, 33910 (84.4% of 40163) pass, 0 fail
13:48
13:51 Mokurai joined 14:00 bubaflub joined 14:08 gbacon joined
dalek rrot: r48054 | gerd++ | trunk/config/gen/platform/generic/env.c:
add patch from TT #1140
14:32
14:47 ash_ joined 15:15 clinton joined 15:34 Maddingue joined 15:36 hercynium joined
dalek rrot: r48055 | tcurtis++ | failed to fetch changeset:
Merge trunk.
15:55
16:05 skv joined 16:07 theory joined 16:26 ash_ joined 16:33 ilbot2 joined
moderator 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.
Coke points at rt.perl.org/rt3/Ticket/Display.html?id=76416. 16:40
would be nice to figure out if that is us or rakudo.
(and fix it.)
moritz it seems that rakudo leaks again on very simple loops 16:42
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)
cotto_work ~~ 16:46
darbelo allison: ping. 16:48
16:49 NotFound joined
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:49
moritz tcurtis: none that I'm aware of 16:50
tcurtis moritz: I didn't think there would be. Thanks, though.
particle what's the newish svn functionality called that lets you get slices (perl term) of the repo?
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
i mean, i can checkout/update <root>/abc and <root>/def/ghi only 16:52
it's 1.6 iirc
anyway, the folks at irc.freenode.net#git are very helpful
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 svn.pugscode.org/pugs/t/spec' mirror
particle ah, sparse checkouts: svnbook.red-bean.com/nightly/en/svn...edirs.html 16:54
new in svn 1.5
moritz huh
particle yeah, pretty cool feature 16:55
17:00 fperrad joined
darbelo Heh. Looks like we have 6 different platform specific definitions for a function we never use :) 17:00
17:00 bluescreen joined
particle we strive for portability 17:01
NotFound darbelo: We should patent that!
17:01 rurban_ joined
darbelo No, wait it's two functions. Parrot_signbit and Parrot_signbit_l 17:01
cotto_work autographs a bit and hands it to darbelo 17:03
NotFound plays Supertramp 'Give a little bit'
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.
ans signbit() shows up in Parrot_is_nzero() which does get called. 17:07
17:41 s1n left
mikehh needs to reboot - brb 18:08
18:11 fperrad joined 18:19 LoganLK joined 18:21 silug joined 18:30 fperrad joined
dalek tracwiki: v64 | cotto++ | ParrotQuotes 18:38
tracwiki: we strive for portability
tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff
18:43 bubaflub joined 18:49 fperrad joined 19:02 baest joined
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'
moritz NotFound: right 19:12
19:13 fperrad joined
NotFound moritz: It's a comment in slashdot. 19:13
cotto_work That's what you get for reading slashdot comments.
darbelo That's what you get for reading slashdot. 19:14
sorear it's also wrong, but I stopped fighting that battle years ago
darbelo Yeah. Porsche makes motorcycles too.
NotFound cotto_work: Don't have a Porsche but my car has 5 wheels. 19:15
cotto_work Something wrong? On the Internet?
moritz I know that with interp['lexpad';1] I get the caller's lexpad
and with interp['outer';'lexpad';1] I get the outer lexpad
but how do I get the caller's outer pad? 19:16
atrodo cotto_work> xkcd.com/386/
cotto_work just what I was thinking of
atrodo I figured. But still, I love xkcd
cotto_work xkcd++ 19:17
atrodo xkcd++
sorear allison++
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
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:21
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:22
Tene Coke: I don't knwo if I fall into the named category, but I've never noticed such sentiment. 19:23
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:24
(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.
NotFound Coke: I'm anti-anti
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.
atrodo: yup
NotFound Unless someone creates a language called "anti", 'course.
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
but I also wanted to see what allison had to say
cotto_work . o 0 (Perhaps I should be keeping these comments in the thread.)
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
Tene: so, even if read/write as stdin/stdout don't make it into the final implementation, really want it in the initial implementation
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.
I'm wondering if not is needed.
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
Coke ash_: well, we're trying to reduce the special things here.
allison ash: aye, but at first we won't even have PMCs, which are kind of necessary for filehandles
NotFound For absolutely minimalism, "exit" is enough X-)
cotto_work Mu 19:32
Coke NotFound: *thbbbthp*
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.
ash_ Coke, allison: yeah, i see your point(s?)
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!
NotFound Next step will be "exit" and "hcf"
Tene So this is the opcode that would be used in the 'read' method of the IO pmc, or whatever.
allison cotto: aye, but trying to avoid perl6-isms too
atrodo Really "subleq" is all you need
Coke hopes no one suggests resurrecting the "DWIM" opcode. 19:33
atrodo Tene> windows?
NotFound All you need is subleq! Ta-da-da-da-daaaa.
Coke allison: +1 on killing strings vs. Strings.
NotFound: ... I will Beat(le) you.
Tene I... actually don't know how windows does read/write. I assumed it was the same. I guess that might be silly.
allison Tene: yah, platform portability, as atrodo said (going for generic abstractions where possible)
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
cotto_work NotFound: I wish I could hang out in Spain during that partying.
allison Tene: which probably means we should have 'error' too
Tene bleh... I don't like that much... okay. 19:35
NotFound cotto_work: you're welcome
Tene I'll avoid grumping without patches. :)
moritz uhm... what happened to calling stuff?
Coke allison: if you give me error, I'll want catch.
moritz: see "call"
atrodo allison> I like the raw block of memory idea, but what about pointers to other blocks? 19:36
moritz ah
Coke: thanks
allison atrodo: PMCs are just pointers
Coke I will be amused if the first VM for this is written in PIR.
since, you know, we have that lying around.
moritz :-)
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.
Coke also horrified, btw. just to be clear.
atrodo allison> but do you really want to expose the real pointers as integers inside of a VM?
allison atrodo: not as integers, no
atrodo: there are too many platform portability problems with that
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?
allison atrodo: but, you do need the ability to store a pointer to a PMC as the attribute of a PMC
cotto_work allison: for the record, were you referring to the Piumarta and Warth paper when you mentioned "dynamic vtables"?
allison Coke: no, not really, they could just be handled by 'call'
Coke: and really better that way, no hard coding of the behaviour 19:39
Coke just wondering if speed was a concern there.
(or something)
atrodo allison> So are the attributes different than the allocated block of memory?
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:40
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
Coke at which point, they're just, what, hidden methods?
allison moritz: ah, but that's the key to Lorito, there is no distinction between the two 19:42
Coke POC - Parrot Object Container. ;)
cotto_work It's pretty cool. vtables have a vtable 19:43
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)
tcurtis cotto_work: link to this dynamic vtables paper, please?
Coke (fast methods) one certainly hopes so ;)
allison Coke: only to the extent that a "method" is an invokable PMC, while a vtable is a function pointer
cotto_work tcurtis: tinyurl.com/22owv6r
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?
allison Coke: yes, and so we could call them all methods
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'
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
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.
purl Message for tcurtis stored.
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
atrodo What if you wanted to, in the case of embedders, call a function that's really a native function? 19:49
japhb <rez>
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.
tcurtis s/is/are/
atrodo I will now make it a point to randomly say "plumage!" in the middle of the day
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
atrodo allison> makes sense 19:52
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:53
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.
atrodo tcurtis> okay, i'll try and limit myself to once a week 19:55
19:55 eternaleye joined
ash_ opensource.apple.com/source/objc4/o...time-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
allison ash: there's a reason for the similarity, it was one of our references in the revised Parrot MOP :) 19:58
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
allison ash: also Moose, and Sam Vilain's SMOP, among other things
atrodo errr, a loader to take an assembled file into memory to run
allison Coke: I wasn't thinking of 'error' as an exception, but simply as writing to stderr, but probably needs a better name 20:00
darbelo 'complain'? 20:01
allison Coke: and 'not' is a good idea
darbelo: aye, something like that
atrodo: yup, that's it 20:03
atrodo allison> My weekend might just be shot... 20:04
allison atrodo: :)
darbelo allison: I also have a gsoc issue I wanted to run by you.
allison darbelo: sure
dalek kudo: 1971474 | moritz++ | lib/Safe.pm:
[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.
NotFound darbelo: "cry" 20:06
cotto_work 'gripe'
allison darbelo: what's that?
darbelo I found the solution in the PDD, amusingly. It claims parrot will offer 'grapheme and codepoint'-level interfaces to strings.
We don't. So we end up conflating graphemes and codepoints in a few places. 20:07
Coke allison: printerr is fine.
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
If that's really the plan.
Coke but is that really necessary?
darbelo I'm thinking of adding 'codepoint iterators' that decompose graphemes on the fly.
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?
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.
darbelo Which makes sense, since the distinction is irrelevant outside of NFG.
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 :)
moritz darbelo++ 20:12
darbelo It's just that, most of the time, graphemes look very much like codepoints ;)
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:13
darbelo NotFound: In non-nfg strings, you won't be able to tell the difference. 20:14
And getting a grapheme is the right thing when iterating a NFG-encoded string.
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.
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:18
You won't be able to tell the difference... until it explodes. 20:19
darbelo NotFound: If you keep on doing stuff as you are doing it now, it'll just work and not explode. 20:21
... if it doesn't explode already :) 20:22
NotFound Sure, I usually don't write serbo-croatian X-) 20:23
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:25
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.
dalek kudo: c80319f | moritz++ | src/Perl6/ (2 files):
add FORBID_PIR pseudo package which disallows Q:PIR { } and pir::stuff
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
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.
allison darbelo: sorry, I was waiting for your question, then got pulled away. I'll backscroll.
darbelo I'm leaning towards passing an extra param to iter_init() right now. 20:30
tcurtis allison: if [set|get]attr are method/vtable calls, how does the PMC implement the relevant vtable/method? 20:31
darbelo tcurtis: Magic! 20:32
Or intimate knowledge of it's own internals.
It amounts to the same thing really.
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
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:33
darbelo: and then add new interfaces specific to grapheme behavior 20:34
20:34 silug joined
allison tcurtis: all methods/vtables are implemented in (low or high-level) opcodes 20:35
tcurtis: because all PMCs and ops (except for the lowest level of the microcode) are implemented in opcodes
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?
ash_ is there any need (at the lorito level) for making a closure? or cloning objects?
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)
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?
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
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:40
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
ash: so we'll need to provide a way to access "the current executing sub" and "the current interpreter"
ash: or really, just "the current interpreter" since the rest is linked from there 20:42
particle no 'print' in the 20 opcodes? 20:43
darbelo particle: see write.
particle oh, 'write'.
ash_ it had access to stdout
moritz write (write a register to stdout, absolute minimum for testing)
particle i'm scanning while on a concall, sorry
allison NotFound: I have (on TT #1702), or at least a nearly identical bug that was reported several months ago
cotto_work tcurtis: I was too quick with that link. I meant to link to tinyurl.com/23dfwut 20:44
particle so, exceptions will be based on goto?
allison particle: exceptions are based on subroutines
particle phew
tcurtis Oh my. Does "git svn clone" really clone the entire history of the repository?
NotFound allison: yes, but I wonder what is the intended solution. Just an example in the pdd isn't very normative.
ash_ tcurtis: yes, but you can limit that 20:45
Tene tcurtis: use -r to specify the revision to start from
tcurtis Tene: thanks.
ash_ would lorito need any ability to box/unbox or type convert? 20:46
or would that be delegated to a PMC
for the most part
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
Coke return is call. hah!
ash_ lol
allison Coke is right :)
NotFound allison: in fact they can be used several times, you just need to use clones. 20:48
ash_ call 'return'
cotto_work so tailcall is just a call that doesn't do a call back
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
cotto_work s/call back/return call/ 20:49
allison NotFound: or, dead by default and a way to mark it as live
NotFound: but requiring a clone seems wasteful
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.
allison NotFound: yes, that is very true 20:50
NotFound: perhaps we should have a :restart option passed in the call?
NotFound: we might even make it work when the coroutine isn't dead yet 20:51
NotFound A method, maybe. 20:52
tcurtis Tene: so, if I wanted every revision beginning at 46812, what would I do?
allison NotFound: or an optional named argument 'restart'=>1
Tene tcurtis: trac.parrot.org/parrot/wiki/git-svn-tutorial 20:53
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:54
allison NotFound: that's against the :restart option? agreed 20:55
NotFound allison: yes
allison NotFound: especially since it's a custom option to one particular PMC
NotFound: but, having that PMC intercept arguments passed to it in the call is pretty reasonable 20:56
NotFound: calling a separate method is also reasonable 20:57
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.
allison NotFound: I can record the decision in the ticket 20:59
NotFound No urgent, anyway.
allison NotFound: that removes the roadblock, so someone can work on it when inclined
NotFound BTW the posibilty of using a clone of a coroutine is useful, as a extremely simple functor. 21:03
21:37 lucian_ joined
atrodo github.com/atrodo/lorito # My weekend is shot 21:38
cotto_work nice to see that gripe made it 21:40
time for some cloninating 21:41
GeJ Bonjour everyone. 21:42
dalek rrot: r48056 | mikehh++ | trunk/t/library/pcre.t:
perlcritic does not like - Variable declared in conditional statement
cotto_work kinda stubby 21:43
way to develop in the open though
atrodo++
atrodo Hey, if it 21:46
's one thing I'm good at, it's stubs! 21:47
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34804), fulltest) at r48056 - Ubuntu 10.04 amd64 (gcc with --optimize) 21:59
22:04 ash_ joined
dalek rrot: r48057 | mikehh++ | trunk/editor/README.pod:
correct typo, remove TODO as I did a bit of testing,
22:32
nxed: r539 | NotFound++ | trunk/winxedst1.winxed:
a bit of refactoring to avoid repeated code
22:51
cotto_work piumarta and warth? 23:12
piumarta and warth is tinyurl.com/23dfwut 23:13
p&w is tinyurl.com/23dfwut
p&w?
purl p&w is tinyurl.com/23dfwut
23:15 kid51 joined
nopaste "kid51" at 192.168.1.3 pasted "html_cleanup branch: 'make html' fails due to 'malformed JSON string'" (4 lines) at nopaste.snit.ch/21896 23:18
kid51 let's try that paste agian 23:19
s/agian/again/
nopaste "kid51" at 192.168.1.3 pasted "html_cleanup branch: 'make html' fails due to 'malformed JSON string'" (7 lines) at nopaste.snit.ch/21897
kid51 That's better
23:39 nopaste joined 23:45 ruoso joined 23:55 Psyche^ joined
Coke kid51: fixed, thanks. 23:55