www.parrotcode.org/ | Last release: 0.7.1 "Manu Aloha"
Set by moderator on 17 September 2008.
00:06 silug joined 00:09 AndyA joined
dalek r31998 | particle++ | trunk: 01:30
: [rakudo] more simple refactorings
diff: www.parrotvm.org/svn/parrot/revision?rev=31998
01:40 Ademan joined 01:41 particle1 joined
dalek r31999 | particle++ | trunk: 01:56
: [rakudo] s/perl6/rakudo/
diff: www.parrotvm.org/svn/parrot/revision?rev=31999
02:00 Andy joined 02:04 nopaste joined 02:06 silug joined
dalek r32000 | particle++ | trunk: 02:11
: [rakudo] remove unused debug code
diff: www.parrotvm.org/svn/parrot/revision?rev=32000
02:12 Theory joined 03:12 konobi joined 03:21 Theory joined 03:23 ab5tract joined 03:37 TonyC joined
ab5tract tutorial says i should be able to run 'make test' after generating a new language 03:48
PCT tutorial, sorry. 03:51
parrot isn't generating byte code either 03:52
03:58 konobi left 04:14 tetragon joined 04:30 johbar joined 05:44 Theory joined 06:16 uniejo joined 06:19 uniejo joined 06:35 davidfetter joined
dalek r32001 | cotto++ | trunk: 06:48
: [t] break t/pmc/ro.t into a separate rotest.t file, unTODO the related coverage test
diff: www.parrotvm.org/svn/parrot/revision?rev=32001
06:50 cotto joined
cotto is there a nice way to enumerate a PMC's METHODs in PIR? 06:52
(or an ugly one)
Tene There is. 06:55
cotto get_mro looks like my friend (since I'm just using it to test something) 06:56
Tene get a class object
$P0 = inspect class, 'methods'
$P1 = new 'Iterator', $P0
cotto even better 06:57
except it doesn't work. 07:07
07:13 iblechbot joined
dalek r32002 | cotto++ | trunk: 07:21
: [t] unTODO test and update svn metadata
diff: www.parrotvm.org/svn/parrot/revision?rev=32002
07:31 Ontolog joined
cotto Infinoid, do you know how to use exceptions in PIR? 07:37
er, handlers 07:38
of exceptions
if not, see my reply to #59940 07:39
Zaba_ t/spec/S16-io/basic-open..................................ok 1/9 07:55
stuck :/
08:09 cosimo joined, barney joined
Zaba_ What is a .HLL? 08:09
purl somebody said a .HLL was useful w/o any dynamic lib too, if all is PIR
08:16 gmansi joined 08:18 Zaba joined 08:38 gaz joined
barney HLL stands for High level language, e.g. Perl 6, PHP 08:48
.HLL is a directive in PIR that (among other things?) initializen a mapping from standard PMCs to hll specific PMCs 08:50
08:55 tomyan joined 09:35 iblechbot joined 10:00 bacek joined 10:23 tetragon joined 11:45 contingencyplan joined 11:53 tetragon joined 11:56 Zaba joined 12:08 contingencyplan joined 12:24 contingencyplan joined 12:29 kj joined 12:40 Zaba joined 12:52 iblechbot joined 13:02 jq joined 13:03 Ontolog joined 13:10 grim_fandango joined 13:14 uniejo joined
Infinoid msg cotto thanks, but Mark Grimes != Mark Glines, #59940 is someone else 13:25
purl Message for cotto stored.
particle :) 13:27
Infinoid: been thinking about bytecode at all? 13:28
Infinoid thinking a lot, yes. doing anything, sadly not.
particle well, it's important to think before you do 13:30
Infinoid it's also important to do at some point, too. its on my list of things to work on in the next week or two 13:31
particle excellent
Infinoid merging is a barrier at the moment. since I haven't really changed anything outside the new PMCs, it might be easier to just refresh the branch from current trunk
particle that shouldn't be a problem 13:32
Infinoid I spent some time playing with merges, even brought out git at some point... the results weren't pretty.
particle really, why?
purl really, why is it green, and what is its favorite treat?
particle where were the conflicts?
13:33 gryphon joined
Infinoid it was just time consuming. I didn't realize things would get so difficult with lots of local patches and periodic trunk merges 13:33
guess I'm used to some other SCMs, that do all the work for me *shrug*
PerlJam Which scms "do all the work" of merging? 13:35
I mean, conflicts still need to be resolved by a human. git does all of the work save that.
Infinoid monotone does this nicely, too 13:36
anyway, I've been thinking, I don't really *need* to be doing this stuff in my own branch until I start breaking the rest of the system to use the new PMCs 13:37
I'm not really to that point yet. so the overhead of manually merging is kinda useless
particle yeah 13:38
you can develop the new pmcs in trunk, as long as the tests pass
Infinoid thanks, I thought that might be the case. 13:39
15:11 Andy joined 15:16 johbar joined 15:17 Theory joined 15:36 Wknight8111 joined
dalek r32003 | Whiteknight++ | trunk: 15:38
: [PDD] Add information about get_outer opcode to PDD20. Patch courtesy kjs++ from RT#39615
diff: www.parrotvm.org/svn/parrot/revision?rev=32003
Wknight8111 only 29 more tickets till we hit 600 16:05
...assuming no more bugs are found between now and hen
Infinoid whiteknight++ 16:06
Tene purl: parrotbug?
purl parrotbug is mailto:parrotbug@parrotcode.org or svn.perl.org/parrot/trunk/docs/submissions.pod or see also "rakudobug"
kj it's easy to convert another 20 XXX's to tickets... but let's not :-)
Tene echo "There are too many open tickets. We're still over 600." | mail -s '[BUG] Too many bugs' parrotbug@parrotcode.org
Wknight8111 damnit!
some of the tickets are over a year old or more, so closing them is easy because the problems don't exist anymore 16:08
16:08 Bzek joined
kj otoh, some tickets are too complex, and may have to be converted into several tickets 16:09
TimToady just close 'em all; the important ones will come back again :)
kj hehe 16:10
Infinoid oh? is there a standard rule that defines a number of estimated man-hours per ticket?
other than common sense, I guess
kj what I meant was that some tickets are very hard to tackle; when browsing to see what Can I Do Today, these are the ones that get skipped 16:11
Infinoid that's a good way to measure it
16:36 sjansen joined 16:45 borondil joined, borondil left 17:11 silug joined 17:20 particle2 joined 17:58 chromatic joined 18:06 masak joined 18:22 ruoso joined
dalek r32004 | coke++ | trunk: 18:27
: [t] export another handy test function by default.
: Courtesy mgrimes <mgrimes at cpan dot org> via RT #59938
diff: www.parrotvm.org/svn/parrot/revision?rev=32004
Coke we're quite a few more than 30 away from 600. 18:42
btw, 49832, 56052, 58760 59600 and 59660 are probably all the same issue. 18:43
we're 73 away from 600.
chromatic Coke, he counted just open issues. 18:45
Coke I realize the source of his confusion. =-) 18:46
particle2 i have a question about namespaces and importing 18:47
i'm trying to get that working for rakudo
particle haven't seen pmichaud around in a bit, so maybe you'll have some ideas
Coke chromatic: while I don't particularly like upping our Storable requirement separate from our perl requirement, I don't mind if no one else does. Can probably close out those 5 tickets if someone goes through and cleans that up.
chromatic: 53156 you say "fixed", but the ticket is still open. 18:48
... nevermind.
particle currently, rakudo's use and require just wrap eval 18:49
so, when a file is evaled, i need to find out fi any new packages/classes/etc have been created 18:50
then look in the namespaces for symbols to import
but i don't see a good way of walking the past tree using nqp 18:51
i'm wondering if what i really need is package/class/etc registries
and if a new package is added, a callback can be run or something
Tene "walking the past tree"? 18:52
particle see src/builtins/eval.pir
no, sorry, see actions.pm 18:53
line 303 has 'use_statement' method
when 'use Foo' is encountered, a call to 'use' in eval.pir is made
then the result is compiled to past and invoked 18:54
Coke tcl is going to solve something like this by marking on the namespace an attribute that tracks what is exported/able. 18:55
you could then just ask the namespace "what do you have?"
particle but i need to know what new namespaces have been created 18:56
chromatic Coke, I don't like it much either, but I don't want to rule out OpenSolaris as a platform just because they don't know how to update software from upstream.
particle if i 'use Foo' there's no guarantee that i get a namespace named Foo anywhere in Foo.pm 18:57
...or that that's the only namespace created.
Coke complain to larry.
particle this isn't different from perl 5 18:58
Coke if you say "use Foo (stuff)", aren't you expecting stuff to be in the Foo namespace?
particle Foo.pm could start with 'package Bar;
Coke it could, sure. or we could make that a compile time error. :)
Tene particle: if it did, would it be right to import the symbols from the Bar namespace? 18:59
particle yes, as far as i'm aware. coding a p5 test now
ok, it doesn't work like that in p5 19:02
it'll only export from package Foo if you do 'use Foo' 19:03
Tene So: use Foo; should look for the exports from the Foo namespace, right?
chromatic That's because 'use Foo;' turns into BEGIN { require 'Foo'; Foo::->import(); }
particle yep, so it seems
you'd have to do 'require Foo' and Bar->import
or use Foo and Bar->import 19:04
Coke so if Foo declares what it exports, say by putting an attribute on the namespace slot, you can just interrogate it. =-)
particle in perl 6, Foo declares what it exports by creating aliases in subnamespaces
Foo::EXPORT::ALL, Foo::EXPORT::DEFAULT, Foo::EXPORT::my_tagset 19:05
so i know where to look, as long as i have the module name
ok, that's easy enough
Tene It would be really great if all the languages used that same convention, for interop... 19:06
particle i'd be happy if that convention were to have shadow namespaces in the language-private ns 19:07
Coke Tene: except that pollutes the namespaces. 19:08
particle _perl6;Foo;EXPORT;ALL
Tene Coke: s/that/the/
Coke yes. That would be awesome. 19:09
I am not holding my breath. :|
19:14 silug joined
particle ok, the other trick with p6 importing is that it imports to the current block, not current package 19:16
Tene Coke: is it possible to get access to the namespaces directly in TCL? 19:17
Coke I'm not sure what you mean 'directly', but [namespace] gives you a lot of rope. 19:24
Tene 'kay
Coke I can create, delete, import, export, forget I imported, find a parent, see if one is defined... 19:25
Tene Coke: how would you feel about particle's _hll;etc;EXPORT;ALL suggestion?
Coke Given that the _hll namespaces are not really private, I'd have concerns.
Tene "not really private"? 19:26
Coke ... yes. how do you make a namespace private in parrot?
Tene I'm not sure what you mean. private namespace? private to what?
Coke You can't, SFAIK: there's no way to say "this is visible to the users, but this is only for the compiler."
in my case, how would I make the _tcl namespace so that Tcl users could not poke around in it? 19:27
Tene I don't understand why you'd want to do that, however, I don't think any HLLs have a way to directly access the other hll namespaces.
Coke Tene: of course we do. we're all in the same interpreter with no safe. 19:28
Tene set_root_namespace ['_tcl';'foo';'EXPORT';'ALL']
or whatever
chromatic You need language syntax for that.
Tene Right.
Coke for poking into namespaces? already have it.
19:29 gmansi joined
Tene Coke: those would be get_hll_namespace ops, not get_root_namespace 19:29
Coke Tene: I'm not sure those are as separate as you think they are.
esp. if we're going to allow languages the ability to invoke things, say, in parrot's standard library. 19:30
Tene So your concern is that a user could ask a namespace in tcl for its parent until it got to the parrot root namespace and then looked around in there?
Or...
Coke or even in other languages; if I can get to things in the Perl6 namespace from Tcl, what is stopping me from getting to the _perl6 namespace? 19:31
my point is that the _ namespaces aren't a safe place to hide things you don't want the user diddling.
Tene 1) I odn't see more of a problem with the user diddling _ namespaces than other hll namespaces, 2) I don't see how they'd be doing it in the first place. 19:32
Can you give me an example of a problem?
Coke no, because HLL interop doesn't really work yet. 19:34
particle #! perl6 ; Q:PIR{ $P0 = get_root_namespace ['tcl' ] ; null $P0 }; #screw you, tcl users!
Coke but that's a good thought experiment.
particle ...which can be made safe by outlawing Q:PIR 19:35
Coke ... in perl6.
particle ayep
Tene Coke: a hypothetical example
Coke nothing is stopping arbitrary bytecode from doing whatever it wants in any namespace.
including the "private" ones.
particle admittedly, i haven't reviewed allison's security pdd yet
Coke tene: here's a different way to look at it: not everything is meant to be introspectable. 19:37
Tene Coke: I still don't understand how this is a problem. The bytecode SHOULD be able to access these namespace. If the code I write modifies the export list of some other namespace, then my code needs to be able to write to that namespace.
Coke we should aspire to something a little more secure than perl5's "please don't open this door" model.
ditto what particle said, though. 19:38
Tene But there are plenty of valid reasons to open that door.
Also, how are the root namespaces being exposed to tcl/perl6/whatever in this harmful way?
I'm not sure how I'd get the ['tcl'] namespace from Perl 6. 19:39
Coke in the same way in which we'll able to invoke code defined in other languages from our language?
chromatic You need HLL syntax for that, I mean -- not PIR, unless you allow inline PIR.
Tene use Doom :lang<tcl>; 19:40
That won't do it.
Coke chromatic: yes, but we can't assume poeople running on parrot can't run pir.
Tene That will import some namespaces into my current hll, at most.
Coke Tene: [namespace import ::parrot::perl6::CGI]
[namespace delete ::parrot::_perl6::CGI::EXPORT::DEFAULT] ? 19:41
Tene What's the leading ::parrot for? 19:42
Coke (and any concerns I have make more sense in something like mod_parrot than me running a script on my desktop, of course.)
it's me waving my hands to show how I'd get to perl6 in the frist place.
Tene Okay.
Coke because if I can't do that, then I don't see how interop will EVER work.
Tene Why is that more of a problem than [namespace delete ::my::cool::namespace] ?
Coke because for tcl at least, anything in _tcl is not meant to be user visible. at all. it's compiler internal crap no one should be poking with. 19:43
help methods that aren't meant to be invokable by the user, etc.
Tene They'll still be called by the same bytecode, though. 19:44
You restrict that at the HLL level, not the bytecode level. 19:45
Coke I can prevent tcl users from mucking with _tcl, yes. unless i let them run raw PIR. or invoke another HLL that I have no control over.
I can stop -myself- from touching that. I can't stop you. 19:46
Tene so you're suggesting a situation where both you and me are running code on the same interpreter at the same time, and I fuck with your namespaces and then your code breaks? 19:47
Coke that's one thought.
Tene That's the security pdd. Namespaces aren't a special case there.j 19:48
These namespaces, at least.
Coke Ok. I'll read the pdd.
Tene In your example of 'helper methods' and such, the generated bytecode will be calling those anyway.
Coke but honestly, I'm more concerned about the HLL pdd, since we haven't really agreed how the stuff that's -supposed- to work is supposed to work.
which generated bytecode?
Tene The bytecode generated by your compiler. 19:49
Coke I may not be generating all the bytecode I'm running.
(in fact, I hope I'm not. at that point, I'll just use tclsh =-)
Tene Can you give me a hypothetical example of a problem here, or was that your 'delete namespace' example earlier? 19:50
Coke meh. if I haven't made any kind of even remotely convincing argument, nevermind. 19:51
Tene I'm having trouble seeing how your namespace example is significantly different from "$importantvariable = 0; # Oops, I just destroyed some state that I need".
dalek Krishna Sethuraman | Parrot Development on Windows: 19:52
link: www.perlfoundation.org/parrot/index...on_windows
Coke not everything is supposed to be visible to the user.
Tene That's a bug in the user's code, and bytecode running in the same context will need to be accessing it, wherever it is.
Coke there's a difference between me changing a variable in perl's interpreter that is visible to the user anyway and me changing the state of a C variable used to run the interpreter.
Tene In Perl 6, wherever you're storing this list of symbols, the bytecode generated by a 'use' statement needs to access that list, yes? 19:53
Coke I have no place I can put things for you not to touch them, so everything is, by default, world visible/writable.
Tene $P0 = <get the symbols for some namespace>; namespace.export_to(something, $P0) 19:54
Coke for example, a stupid useless number: [info cmdcount] tells me how many commands the tcl interpreter has run. I have no place to put that variable that isn't visible to someone on the VM.
but in tclsh, this isn't a user visible variable. 19:55
Tene Am I completely off track in that being the sort of bytecode that will be generated by a 'use' statement? 19:56
NotFound Coke: you can put in the lexical environment of a continuation, for example. 19:58
I've readed some tie ago an article about that tricks to have private variables in perl, don't remember where. 20:00
Tene Coke: so if we restrict any loaded bytecode from having access, at the bytecode level, to wherever export lists are stored, then no bytecode generated by user code will have be able to read export lists, right? 20:02
I freely admit the possibility that I'm insane here.
chromatic Uninformed about Perl 5, Perl 6, and Topaz: weblog.infoworld.com/fatalexception...chine.html 20:03
Coke there are various levels of access.
well, there -could- be. 20:04
Tene Please explain.
Coke well, ro and rw for one.
public/private/protected/package might be a different way to slice it.
(and making a PMC RO is not necessarily sufficient, since you can simply replace it with a more compliant one) 20:05
let's back up. do you agree with the premise that a compiler may have internal state it does not wish to expose? 20:06
s/compiler/HLL/
and s/state/functionality/ 20:07
er, state +/or functionality. 20:08
Tene You're talking about, for example, a helper function in the compiler, for performing a common manipulation on an AST? 20:11
Coke I didn't have that example in mind, but sure. 20:13
Tene That would fit the idea you're referring to, though?
Coke yes.
Tene I'd imagine that would be the same as any other non-exported symbol in any other namespace. If I write some other library and make internal functions there. 20:15
Your compiler should already be in its own namespace.
Coke what does "exported" mean at the parrot level? 20:16
Tene Nothing. You can get any symbol in any namespace. 20:17
Coke I posit this is a security issue.
Tene Please explain.
Coke No, I give up now. =-) 20:19
(and this time, I mean it. At least for today)
Tene Running untrusted code, maybe?
chromatic Running an extension written in C? 20:20
Tene Sandboxing is discussed in pdd23.
Mentioned, at least.
"al machine. It’s a safe zone to contain code from an untrusted source. In the extreme case, a sandbox is completely isolated from all outside code, with no access to read or write to the surrounding environment. In the general case, a sandbox will have the ability to read from, but not write to the surrounding environment (global namespaces, for example), with a very 20:21
narrow ad carefully filtered route to send some data back to the code that called it."
Hmm. That was surprising. 20:22
20:58 gryphon joined 21:33 Theory joined 21:50 rdice joined 21:53 chromatic joined
dalek r32005 | tene++ | hllify: 22:02
: Delete the unused hllify branch.
diff: www.parrotvm.org/svn/parrot/revision?rev=32005
22:05 jan joined 22:10 chromatic joined
Tene purl: msg pmichaud In HLLCompiler.pir, it looks like we're repeatedly trying to dispatch on a variable being a string, RSA, NameSpace, Class, whatever. Can we standardize on what $parseactions, $parsegrammar, etc. are holding, and find the appropriate object in the accessor? 22:30
purl Message for pmichaud stored.
chromatic Tene, Parrot doesn't make that distinction, unfortunately. 22:33
Tene chromatic: In the parsegrammar() setter, I can look at what I've been passed, and then get and save a namespace in the attribute. Then in the rest of HLLCompiler, I can rely on parsegrammar being a NameSpace. 22:35
chromatic Yes, sanitizing on input seems sane. 22:40
22:42 TiMBuS joined 23:05 silug joined 23:06 tetragon joined 23:09 apeiron_ joined 23:59 PacoLinux joined