Parrot 0.8.2 "Feliz Loro" Released www.parrot.org/news/2008/Parrot-0.8.2
Set by moderator on 18 January 2009.
00:01 TiMBuS joined 00:09 AndyA joined 00:18 Whiteknight joined 00:25 Rahly joined
dalek r35731 | Whiteknight++ | trunk/src/gc: 00:41
: [GC] apply a patch from jimmy++ to simplify a debug condition for TT#84
review: www.parrotvm.org/svn/parrot/revision?rev=35731
01:04 Tene_ joined 01:22 particle joined 01:25 tetragon joined
bkuhn Hey, can someone suggest the best example to look at if my goal is wrap an object in C and have it appear as an object in Parrot? 01:34
01:35 kid51 joined
dalek r35732 | julianalbo++ | trunk/src: 02:03
: allow packfile.c to compile with c++ again
review: www.parrotvm.org/svn/parrot/revision?rev=35732
Infinoid bkuhn: a generic object? or something in particular? (Generally that's what PMCs are for.) 02:06
bkuhn Yeah, I'm starting to discover that. I have a data structure in C that I want to present as an object in PIR. Seems that I should just use the NCI and wrap it with PIR code that makes it an objection. Am I on the right track? 02:07
s/an objection/an object/ :) 02:08
Infinoid NCI is for calling functions; PMCs are for representing objects in PIR. together, they fight crime.
if you just want something generic you can pass around, you can probably just use UnmanagedStruct or Pointer as-is. If you want to implement some methods to call on it and that sort of thing, you should probably write a PMC for it, and src/pmc/ is full of examples 02:09
bkuhn Yes, I have some crime I want to fight. It sounds like these are the guys I need.
NotFound bkuhn: if you cat treat the structure as an opaque object, NCI migth be fine. If not, yoy can have more problems.
bkuhn Yeah, I have been looking at examples in the code of opaque objects. I can probably do so and have C function operate on it when I need to reach into it. 02:10
Infinoid great 02:11
02:14 mdiep joined 02:19 jimmy joined
jimmy Anyone helps me to take a look at TT #153? 02:20
NotFound jimmy: Why do you want to modify this function? 02:23
jimmy PMC_IS_NULL did the same action. 02:24
NotFound jimmy: PMC_IS_NULL is mapped to that function in extern/embed usage.
Or at least that was the intention some time ago. 02:25
jimmy PMC_IS_NULL is global.
at least, it works for pmc.c
NotFound jimmy: is a macro, there is no scope for macros. 02:26
mdiep there should be a comment in the source to that effect then
NotFound mdiep: agree, and maybe his declaration must be moved to extend.h 02:28
By the way, some day we must drop the PARROT_CATCH_NULL thing. There are a lot of things that depends on catch null PMC 02:30
jimmy yes, seems that there is a TT on it. 02:31
Coke_distracted jonathan: ping. 02:32
02:32 galeron joined
galeron hi 02:32
What's with the perl channel? 02:33
NotFound jimmy: in any case, currently we cannot implement PMC_is_null by using PMC_IS_NULL, because PMC_IS_NULL can be defined as calling PMC_is_null, depending on what and why we are compiling.
galeron Not anymore perl oriented?
jimmy move PMC_IS_NULL out of PARROT_IN_CORE condition
Infinoid no idea.
galeron There's a bunch of new ops going crazy. 02:34
jimmy NotFound: and then we can remove it.
galeron Where's the perl channel?
purl hmmm... the perl channel is there elite holds discussions
jimmy galeron: irc.freenode.org/perl6
galeron Oh it's moved from here? 02:35
Sigh
Infinoid I think #perl is for perl5
jimmy yep
Infinoid (according to www.perlfoundation.org/perl5/index....c_channel)
shorten Infinoid's url is at xrl.us/becyuw
Infinoid the one jimmy mentioned is specific to perl6.
galeron Not exactly, it's some server admin spouting racial slurs and making bans
NotFound jimmy: we can, but I think that that way just add confusion to the code. 02:36
Infinoid That sounds about average, from what I've heard.
galeron The perl channel used to be a lot better before.
Oh well freenode it is I guess. 02:37
Later
Thanks.
Infinoid good luck, galeron
NotFound jimmy: the reason for the functions is to not depend of exposing an internal variable to the outside world, even if wrapped in a macro. 02:39
jimmy however, PMC_IS_NULL must be defined, why not define it outside?
Infinoid indeed. if I remember right, exporting variables from a DLL doesn't work
jimmy ah 02:40
NotFound: thanks. I know that now. 02:42
NotFound BTW, what is that ASSERT_ARGS(PMC_is_null) thing?
Infinoid NotFound: it enforces NULL checks on ARGIN()/ARGMOD()/ARGOUT() parameters by use of runtime asserts 02:44
NotFound Infinoid: It enforces it in a function where all arguments can be null? 02:45
jimmy maybe we should use BEGIN_ASSERT_ARGS, END_ASSERT_ARGS too make MSVC debug works.
Infinoid no. that's why you declare those parameters as ARGIN_NULLOK() or the like
jimmy but, it is ugly. 02:46
Infinoid if it isn't NULLOK, it gets checked.
yeah, it's ugly. but it seems to be better than the alternative
NotFound Is as ugly as hell. 02:47
Infinoid agreed. unfortunately, the problem it fixes is even uglier
it has exposed (and allowed us to fix) a few bugs already
NotFound Infinoid: and there is some reason to not have a semicolon at his end? 02:48
jimmy yes, makes gcc and msvc more happy. 02:49
Infinoid NotFound: more specifically, msvc doesn't have an equivalent of __attribute__((unused)), and so we need to define it to nothing on that architecture. the semicolon caused tons of C90 warnings in that case
NotFound jimmy: usually there are ways to make the compilers happy without disturbing the programmers.
bkuhn Is embed.pod still current instructions for embedding an interpreter? 02:50
jimmy Hadn't found another way yet. 02:51
Infinoid NotFound: the "proper" solution (in my opinion) would be to fix gcc's handling of __attribute__((nonnull)). The current implementation in gcc 4.x is a bit ... half-written, and often hurts more than it helps.
NotFound Infinoid: my personal view is that we must no use that feature because is a known source of problems for no clear benefit, but I know that opinion is not majoritary. 02:53
Infinoid I advocated getting rid of __attribute__((nonnull)) at one point, too. I was voted down. 02:54
NotFound And the not C99 thing, i fixed problems ot that nature just by adding an scope in several places. 02:55
scopes usually does not harm the compilers nor the programmers 02:56
Infinoid C90, you mean?
the ugly lack of semicolon was due to "mixed declarations and code" errors on MSVC 02:57
I think I can dig up a nopaste if you want details.
jimmy yep, ugly.
NotFound Infinoid: yes, that problem. You fix it just by moving the declarations in a scope.
Infinoid by "scope", you mean adding curly braces? I would love to do that, but with 1800 functions to maintain, it's not very easy 02:58
NotFound I agree that adding a scope to all functions will also be ugly.
Infinoid it's much easier when you are generating the code like with ops2c or pmc2c, but for the bare C files, it's ... time-consuming
this is one of the few things I *do* like about XS :) 02:59
NotFound Infinoid: is some cases there is not even need to add an empty scope, you just need no move the declarations to the appropiate branch of an if.
Infinoid that sounds like a much nicer solution 03:00
for what it's worth, they did something similar to the perl5 codebase. It was Nicholas Clark who suggested it for parrot
NotFound Infinoid: in particular cases is. But for a general prelude to all functions...
Infinoid www.nntp.perl.org/group/perl.perl6....49677.html
shorten Infinoid's url is at xrl.us/bea6n7
Infinoid if you are selective about what functions it applies to, the problem, then, is how do you enforce it as a codingstd 03:01
NotFound Infinoid: the ugliness I see in that ASSERT_ARGS thing is the it remembers me too much of the macro abuse in XS. 03:02
Infinoid what. you don't like my beautiful macros? :P 03:03
I agree that XS is ugly and should be avoided at all costs. I also admit that the current implementation isn't pretty to look at.
jimmy ;(
:(
NotFound Infinoid: I like some macros, but the code that depends too much on them is ususally ugly.
Infinoid the only thing I like about it is that it *works* 03:04
if you've got a better way, I'm certainly open to suggestion
NotFound Don't be afraid, I like to at least have a way to check that pesky nonnulled null problems. 03:05
jimmy wonders Is there a better way?
Infinoid fixing gcc would make me happy
that is, in my mind, the best possible solution. because it can also generate warnings/errors from the perspective of the caller, which is more useful (in my opinion) than just indicating the function that broke 03:06
NotFound jimmy: there is no way, at least until a day when we have a way to check that non-nullness in all usages of the function at compile time. 03:07
Infinoid I'd have gcc generate runtime checks
if the optimizer is relying on it, then the assumption needs to be validated
jimmy as somebody said: removing all functions is the better way.:D 03:08
Infinoid and then it can decide the runtime check isn't necessary when it's just passing a notnull argument to another function being called
kinda like how constness is inherited
it only needs to do the check at the roots of the tree
NotFound Infinoid: I think that is not enough. If we promise to the compiler that will never be called with null, we must have a way to check.
Infinoid yes. I just think it would be nice if gcc could do that check, generating runtime to do it if necessary 03:09
runtime code, I mean.
NotFound Infinoid: if you add runtime checks, you are pessimizing instead of optimizing. 03:10
Infinoid if you have one function with a nonnull argument, which calls another, which calls another, you only need to do the check at the base of the call stack
currently gcc generates compile-time checks when it can, and just shrugs and drops it on the floor the rest of the time 03:11
...but optimizes based on it regardless
NotFound Infinoid: funny you mention the const thing, is also a recurrent problem. 03:12
Infinoid yeah. but I'm primarily concerned with seatbelts, not optimization 03:13
NotFound And possibly related to this one: every place where we have a cast to solve a contness problem, we a have pointer that change type, effectively disabling known information about nonnullness available.
Infinoid hmm, that's a good point. unfortunately, I don't know of a practical way to enforce it other than at function entry 03:14
NotFound Well, that is one more point to keep working in const consistency. 03:15
Infinoid well... on the other hand, hmm
for ARGIN(), that variable shouldn't be modified anyway 03:16
I think I asked about making that one const by default, but Andy said for some reason it wouldn't work
for the others, the ARGMOD() contract is only for its value at the beginning of the function, it doesn't necessarily mean the function can't modify the variable later on 03:17
and so I'm not sure it needs to be sanity checked after that point
...but will the optimizer get confused about this?
NotFound Infinoid: I don't have a clear image of what exactly does that modifiers. 03:18
Infinoid ARGIN() means a pointer is being passed into the function which won't be modified. 03:19
ARGOUT() means a pointer is being passed into the function which won't be read; it will only be written to.
ARGMOD() means both may occur.
the ASSERT_ARGS() stuff makes sure those pointers are not NULL
NotFound The pointed to thing, I suppose. 03:20
Infinoid it doesn't care about the pointed to thing, it's only looking at the pointers themselves
but if the pointer itself is modified, for example, by ptr = realloc(ptr, size, whatever), and then you have a check to make sure ptr isn't NULL, will the optimizer strip out the check in that case? 03:21
I don't know if the __attribute__((nonnull)) is for the variable's initial value, or if it follows the variable even if it's been reassigned.
I'm a little confused about this 03:22
NotFound Infinoid: the comments in the source says "The pointer target" 03:24
Infinoid yeah, that's the difference between ARGIN/ARGOUT/ARGMOD. 03:26
but the difference between ARGxx and ARGxx_NULLOK is about the pointer, not the pointer target
sorry if I misunderstood your earlier comment
NotFound The net changed it ;) 03:27
Turning to the original point, the PMC_is_null function: the macro in that case is just to aid enforcing in a policy that all functions have it? 03:32
Infinoid the macro is nice because then you can skip a function call 03:34
03:34 Ademan joined
Infinoid I gather the function is *only* there for embedders. 03:34
jimmy yes,
NotFound The ASSERT_ARGS macro, I mean. 03:35
jimmy It had'nt been used yet.
ah, I meant PMC_is_null
Infinoid oh. yes 03:36
NotFound Both args can be NULL, so there is nothing to check.
Infinoid well, there's 2 parts to it
NotFound In fact, the interpreter is always NULL in the current implementation.
Infinoid (typing)
first, the test (t/codingstd/c_arg_assert.t) checks that all ASSERT_ARGS_* macros emitted by the headerizer are actually used 03:37
second, I made the headerizer emit them for *everything* to reduce the number of "wtfs" when someone changes the NULLOK tagging on a parameter and all of a sudden codingstd tests fail
in other words, to reduce test flapping.
but I don't feel too strongly about the second part, so I don't mind it being changed
NotFound That is another problem, people frequently forgot, or don't care, to run headerizer. 03:38
In fact I was just abotu to commit a headerize whe we started talking. 03:39
Infinoid yes, indeed. and the codingstd failures don't show up until you have done so
headerizer has still been a pretty useful tool for this purpose :) 03:40
NotFound Infinoid: is not my favourite thing, but I agree is useful. 03:41
Infinoid it's far better than doing it by hand... 03:42
03:42 particle1 joined
NotFound In fact I was just (one more time) fixing c++ buildability, and this things are someway complicating it, but it can just that I'm not yet used to them. 03:44
Infinoid what's the problem? I haven't tried to build for c++ for a while. 03:45
dalek r35733 | julianalbo++ | trunk/include/parrot (2 files):
: update headerizing
review: www.parrotvm.org/svn/parrot/revision?rev=35733
NotFound The usual ones of casting dropping or adding constness. 03:46
Infinoid ah. (picky compilers)++
NotFound Infinoid: but c++ bulidability is a must, I located, fixed and prevented lots of problems thanks to it. 03:47
Infinoid NotFound++
NotFound Now to realclean and configure for g++ again... 03:50
Coke tries to get mdiep back into hacking on partcl and nearly fails due to parrot bugs. 03:53
dalek r35734 | allison++ | trunk/runtime/parrot/include: 03:58
: [pdd30install] Apply change to reduce full pathname to just module pathname. (Reini Urban) Fix part of TT #123.
review: www.parrotvm.org/svn/parrot/revision?rev=35734
04:37 allison joined
allison is committing parrot changes from Windows today 04:38
strange, but not too painful 04:39
a bit like doing development through a porthole window
NotFound This is an "You are enter a military zone" warning of sort?
allison heh, yes :)
Coke hey, allison. 04:47
purl allison is, like, Allison Randal <mailto:allison@perl.org>
allison hey, coke 04:48
Coke that -t1 segfault I just posted seems to be IO related. 04:54
04:58 Andy joined
Infinoid msg moritz Now that we're following the advice from Nicholas Clark in RT #61242, is there any chance you can check whether you still get segfaults building with --optimize? 04:58
purl Message for moritz stored.
allison Coke: mailing list or ticket? 05:01
NotFound I'm unable to fix c++ build now, too much interrelated things to look for. 05:08
cotto allison, re ATTRs, does the suggestion you made on the list ( rt.perl.org/rt3/Ticket/Display.html...txn-521960 ) account for multiple inheritance?
shorten cotto's url is at xrl.us/becy7g
allison cotto: nope, but C PMCs can't really multiply inherit anyway 05:09
cotto ISTR that some do
let me check 05:10
Coke allison: ticket.
TT #193 05:11
cotto Some of the LuaFunction does, but I don't think there are any others.
so multiple inheritance isn't a concern? 05:12
s/Some of //
because that'll make the code *much* simpler 05:13
allison cotto: it's a problem if two parents have attributes of the same name but a different type
cotto: or, if attempting to use a child pmc with a different struct layout with the parent's struct description
otherwise, multiple inheritance will still work 05:14
cotto Do those cases fall in the "don't do that" category or should the code deal gracefully with them?
allison cotto: but, yes, you can go with single inheritance assumptions for now
cotto: the general answer to both is "if you use the standard vtable function/method interface, you won't have problems" 05:16
cotto I'd rather not write something that we know will have to be changed later.
vtable++
allison C-level PMC inheritance has to be changed anyway, so better not to write a hack now that has to be ripped out later
using ATTR declarations isn't required, it's just a convenience, so we're providing the most common case in the convenience 05:17
more complex cases may have to step outside the convenience 05:18
Coke: yup, looks like an IO bug. What platform? Or have you duplicated it on several?
cotto Does that mean I should hold off on the UnionVal deprecation (as far as it'd need an inheritance update) until C-level PMC inheritance can be fixed?
Coke osx/86 for me. I'm guessing that's mdiep's core platform as well. 05:19
cotto: makes sense to me.
allison cotto: you don't need a UnionVal to declare your own data struct 05:20
cotto: so, no
cotto: look at LuaFunction and see what it needs 05:21
NotFound Did we have some policy about trac account names? Must be the same as in the svn repository? 05:25
Coke I don't think that was said, but I imagine it'll be easier if you keep them the same. 05:26
NotFound That can be delayed until we migrate the repo 05:27
Then, can someone give permissions to the NotFound trac account? 05:28
Coke sure. 05:29
you should now have developer access
NotFound Thanks. Must log out and in?
Coke maybe? 05:30
(probably)
allison NotFound: when the svn repository migrates, your svn name will be the same as your trac name 05:32
cotto allison, it looks like it uses PMC_struct_val and PMC_pmc_val similarly to the Sub PMC (and other related PMCs)
allison NotFound: (or, you can maintain two trac accounts, if you'd prefer)
cotto: does it inherit from Sub?
cotto It also uses VTABLE functions from Sub and LuaAny. 05:33
is that what you mean?
allison cotto: the main question is, does it add any new struct members, or could it just use the ones from Sub?
NotFound allison: I like better to change the snv one
allison cotto: if it's not using anything but PMC_struct_val and PMC_pmc_val, it's likely that it can just use a direct copy of Sub's ATTR declarations 05:34
cotto It's also using PMC_metadata and PMC_sub. 05:35
That's all. 05:36
allison is it a known problem that ActivePerl won't even make it through configure on MSVC 2008 Express Edition? 05:40
Cygwin also won't make it through configure 05:41
only Strawberry Perl/MSVC seems to work 05:42
Coke does SDL work anywhere?
allison: strawberry/ming should also work.
allison Coke: don't know, haven't tried it
Coke (which is the default make suggested for strawberry)_ 05:43
allison Coke: I'm not customizing the options here, just taking the defaults, so it may be using ming instead of msvc 05:44
Coke if you type "nmake", you get msvc.
if you use mingw32-make, you get the strawberry toolchain. 05:45
NotFound I don't see any change in the trac, "leave as new" is still the only option available :?
allison I typed 'nmake' but 'mingw32-make' is what was scrolling past on the screen
Coke allison: configure might have hardcoded the choice it told you to make. 05:46
I thought cygwin worked, though. (haven't tried it in some time.)
for the longest time (pre you) I had trouble with cygwin; in the past year or so it's been pretty stable when I try it once every quarter or so.
NotFound Cygwin does not require his own version of perl? 05:47
Coke I thought it did. 05:48
read the cygwin readme in parrot root.
(yes)
allison Coke: yes, looks like it's setting an environment variable for MAKE at the top of the Makefile (setting it to mingw32-make) 05:49
NotFound: yes, I'm using the Cygwin version of Perl
Coke: any special incantations you invoke when you try Cygwin every quarter or so? 05:50
Coke nope. 05:51
oh, yes. there's one.
(it's in the readme. =-)
parrot/runtime/parrot/library/SDL.pir
no, that's not it.
Parrot builds out of the box under Cygwin after
C<export PATH=`pwd`/blib/lib:$PATH>
that's it.
without that, you'll fail hard trying to link against libparrot. 05:52
NotFound Coke: I take some looks at SDL a month ago, seems broken.
Coke Then I won't bother trying to fixup the examples. :| 05:55
dalek r35735 | allison++ | trunk/examples/tge/branch (2 files):
: [cage] Update TGE examples so they'll actually compile and run. Found while attempting to test Reini Urban's path change for TT #123.
review: www.parrotvm.org/svn/parrot/revision?rev=35735
NotFound I think it uses still the :: in namespaces
dalek r35736 | coke++ | trunk/examples/library:
: update opcode usage.
review: www.parrotvm.org/svn/parrot/revision?rev=35736
NotFound Coke: the trac account looks unchanged 05:58
Coke NotFound: did you have an account that was all lowercase? 06:00
NotFound Coke: one sec...
Coke should be fixed. 06:01
trac seems to let me add permissions to things that don't exist.
so I added it to 'notfound', saw it was set, and moved on.
just added it to "NotFound" and removed the wrong permission.
NotFound I was creatig "notfound" now 06:02
Will delete it
Deleted notfound and login as NotFound 06:03
06:03 particle joined
NotFound Ah, yes, now I have cute new buttons 06:04
Coke: thanks
allison Coke: yes, adding permissions to a name that doesn't exist as a user creates a group 06:06
Coke: that's how the 'developer' group was created
06:17 jkva joined
dalek r35737 | allison++ | trunk/runtime/parrot/library/SDL: 06:29
: [pdd30install] Shorten library path, 'library/' prefix unnecessary. For TT #123 (Reini Urban).
review: www.parrotvm.org/svn/parrot/revision?rev=35737
moritz good morning 06:30
Infinoid: optimized make still segfaults for me (during ./miniparrot config_lib.pasm) on 64bit linux 06:31
dalek r35738 | allison++ | trunk/runtime/parrot/library/Test: 06:34
: [pdd30install] Shorten library path, 'runtime/parrot/library/' prefix unnecessary. For TT #123 (Reini Urban).
review: www.parrotvm.org/svn/parrot/revision?rev=35738
Infinoid moritz: hmm. ok, thanks. is that --optimize -specific? I think that might be TT #179 06:36
moritz Infinoid: I'm trying without --optimize now... 06:37
uhm, yeah, segfaults at the same stage 06:40
how very inconvenient
Infinoid TiMBuS: I just noticed your comments and patch to TT #179. That's ... odd. What your patch really does is prevent the get_type() method from actually being implemented, since it no longer parses correctly. 06:41
(METHODs are sorta like XS. In METHODs, the return value is specified in the RETURN() macro, not on the function declaration line.) 06:43
I'd be interested to know if that patch helps on other x86-64 machines 06:45
06:47 HG` joined 06:48 mdiep joined, justin joined 06:49 mc_ joined
mc_ hello all 06:49
purl It's a crazy world, but hello to you too!
mdiep hi mc_ 06:50
mc_ any channel rules somewhere? this is my first time here
oops: nickname already used 06:51
moritz well, that happens 06:52
channel rules: be polite, stay on topic
mdiep we're a pretty easygoing group
khatar pastebin prefered? do i have to introduce myself? 06:53
mdiep purl: nopaste?
purl rumour has it nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others)
moritz nopaste preferred, no need for an introduction IMHO 06:54
mdiep you can tell purl who you are though.
purl: mdiep?
purl well, mdiep is Matt Diephouse <mailto:matt@diephouse.com> matt.diephouse.com/parrot or .
06:54 namenlos joined
khatar (sorry: i'm comming from france in where we're just strangled by rules and law 06:54
ok 06:55
newbie questions welcome?
mdiep no, purl mdiep is Matt Diephouse <mailto:matt@diephouse.com>
purl okay, mdiep.
moritz khatar: sure
khatar ok
i've tried en.wikibooks.org/wiki/Parrot_Virtua...troduction yesterday 06:56
shorten khatar's url is at xrl.us/beczd7
khatar read the .pir, understood a part of it
i try to squaak -e 'say 42' 06:57
and it fail
moritz has to run to catch the bus, bbl
hope somebody else can help you
khatar data or instructions ?
mdiep how does it fail? 06:58
khatar mdiep, syntax error
i added a ;
but it desn't change 06:59
mdiep looks 07:00
Coke mdiep: hey. 07:02
mdiep Coke: ho.
Infinoid khatar: looks like the implementation in languages/squaak/ has suffered a bit of bitrot; I can't run a simple "say" command either 07:03
mdiep me neither
Coke mdiep: looks like [unknown] will require [return -options -level N] where N is 1 or 2, depending on what you try to unknown.
level 1 is easy (it's just tcl_return)
Infinoid goodnight all
Infinoid z & 07:04
07:04 Theory joined
Coke anything higher than one might require a slight redo on on our control flow exceptions. 07:04
(to basically track how far down we are, and let the control exception keep propagating until the level is reached.
mdiep Coke: I will try to take a look 07:05
Coke mdiep++
bah. woke up at 11am local time, so I'm still wide awake now. 07:06
khatar ok. so i didn't fucked up :) 07:10
mdiep lol, no
07:10 namenlos joined
Coke reclaims at least 4 more partcl spec tests... 07:27
07:34 alvar joined
Coke +3 more... 07:39
mdiep: hurm. haven't seen any commit messages for a few days. 07:40
mdiep: Any objections to me making tclarray a class instead of a PMC? 07:44
(right now it's just there to be a placeholder; I need something I can easily add attributes to for [array search] and friends. 07:45
dalek r35739 | allison++ | trunk/tools/dev: 07:48
: [cage] Fix simple typo in install_files.pl. (Reini Urban)
review: www.parrotvm.org/svn/parrot/revision?rev=35739
mdiep Coke: have at it! 07:50
Coke anyone know how to say a class does a role from PIR? 07:53
mdiep I think there's a roles array that you modify and push the role onto. 07:57
or an attribute, maybe?
Coke in c, it looks like it's a string.
mdiep an array of strings?
Coke so if I do hash and array, it's "hash array"
mdiep oh
Coke also, "ew" 07:58
mdiep that's less than ideal
yes. ew ew ew ew ew.
Coke looks like I need to modify "provides_str", but I don't see a way to get at that from pir.
mdiep there's an addrole opcode 07:59
Coke I think that's for adding actually roles 08:01
I don't think provides_str actually provides roles.
mdiep there's also an add_role vtable 08:04
looks like that might do what you want
Coke roles != provides. 08:05
mdiep ohhh
maybe 08:06
Coke hits the list. 08:11
I would not be upset if the response was "create a dummy role and use that." if it also mean that this got ripped out. 08:13
mdiep heads to bedd 08:18
err... bed
Coke mmm.
I should have done that 4 hours ago.
~~
08:21 iblechbot joined 08:24 particle1 joined
Coke chromatic++ 08:40
08:49 jimmy joined 09:21 bacek joined
jonathan morning all 10:05
purl afternoon, jonathan
10:36 barney joined
dalek r35740 | fperrad++ | trunk/config/auto: 10:37
: [OpenGL] MinGW
: - gives reference & external link
review: www.parrotvm.org/svn/parrot/revision?rev=35740
10:44 particle joined 10:46 kj joined 10:56 masak joined 11:06 gaz joined 11:14 nopaste joined 11:22 ruoso joined
dalek r35741 | bernhard++ | trunk: 11:27
: [Pipp] NEWS item about constants
review: www.parrotvm.org/svn/parrot/revision?rev=35741
r35742 | bernhard++ | trunk:
: [docs] fix a typo
review: www.parrotvm.org/svn/parrot/revision?rev=35742
r35743 | bernhard++ | trunk/src:
: [codingstd] Move ASSERT_ARGS(sub_pragma) to top of function
review: www.parrotvm.org/svn/parrot/revision?rev=35743
11:32 ruoso joined 11:40 kj joined 11:46 ruoso joined 12:00 ruoso joined 12:13 Hinrik joined 12:15 ruoso joined 12:20 Hinrik joined 12:30 ruoso joined 12:44 ruoso joined 12:52 tomyan joined
dalek r35744 | fperrad++ | trunk/t/codingstd: 12:56
: [codingstd]
: SVN keyword Id must by followed by a column
review: www.parrotvm.org/svn/parrot/revision?rev=35744
r35745 | fperrad++ | trunk (6 files): 12:58
: [codingstd]
: fix malformed SVN $Id
review: www.parrotvm.org/svn/parrot/revision?rev=35745
12:58 ruoso joined 13:04 particle1 joined 13:09 bacek joined
dalek r35746 | bernhard++ | trunk/languages/pipp/docs: 13:12
: [Pipp] add ling to namespaces FAQ
review: www.parrotvm.org/svn/parrot/revision?rev=35746
r35747 | bernhard++ | trunk/languages/pipp/docs: 13:13
: [Pipp] type hints are TODO
review: www.parrotvm.org/svn/parrot/revision?rev=35747
r35748 | bernhard++ | trunk/languages/pipp/docs:
: [Pipp] edit cycle over internals.pod
review: www.parrotvm.org/svn/parrot/revision?rev=35748
r35749 | bernhard++ | trunk/languages/pipp (2 files):
: [Pipp]mark leading backslash in 'name', leading backslash is not allowed
: in namespace declaration
review: www.parrotvm.org/svn/parrot/revision?rev=35749
13:13 ruoso joined
dalek r35750 | bernhard++ | trunk/t/codingstd: 13:27
: [codingstd] unexpanded SVN tags are OK for git-svn users and for new
: files
review: www.parrotvm.org/svn/parrot/revision?rev=35750
13:28 ruoso joined 13:42 ruoso joined 13:50 tetragon joined
dalek r35751 | bernhard++ | trunk/languages/pipp/src/pct (2 files): 13:50
: [Pipp] Eliminate token constant_name
review: www.parrotvm.org/svn/parrot/revision?rev=35751
r35752 | bernhard++ | trunk/languages/pipp/t/php: 13:51
: [Pipp] FOO in different namespace block
review: www.parrotvm.org/svn/parrot/revision?rev=35752
14:01 ruoso joined 14:03 pjcj joined 14:07 gryphon joined, bacek joined 14:19 ruoso joined
dalek r35753 | jonathan++ | trunk/languages/perl6: 14:29
: [rakudo] Make proclaim accept a junction rather than thread over it, but give a warning; moritz++ for input on how to handle this.
review: www.parrotvm.org/svn/parrot/revision?rev=35753
r35754 | jonathan++ | trunk/languages/perl6/src/classes (2 files): 14:32
: [rakudo] Handling of junction auto-threading for the single dispatch case with positional arguments. Note that it won't work for built-ins written in PIR; those will start working when we switch to a PIR prelude.
review: www.parrotvm.org/svn/parrot/revision?rev=35754
jonathan gah!
a Perl 6 prelude!!
dalek r35755 | jonathan++ | trunk/languages/perl6/t: 14:33
: [rakudo] Add S03-junctions/autothreading.t to the spectests list.
review: www.parrotvm.org/svn/parrot/revision?rev=35755
14:34 masak joined 14:35 ruoso joined 14:42 Whiteknight joined 14:50 ruoso joined
dalek r35756 | bernhard++ | trunk/languages/pipp (3 files): 14:50
: [Pipp] Add support for constants with fully qualified name.
: Keep the trailing '\\' in namespace names.
review: www.parrotvm.org/svn/parrot/revision?rev=35756
14:53 PacoLinux joined 14:55 riffraff joined
riffraff hi everyon 14:58
barney Hi 15:00
riffraff entered the scene 15:01
riffraff someone knows if there is a way of visualizing what PGE is doing ? I seem to have generated some crazily slow interaction of rules, but I cannot understand what is wrong :/ 15:02
15:03 Andy joined
jonathan At Parrot level, --trace 4 will show you what is being called... 15:03
But it'll be a lot of output.
Whiteknight jonathan, when you get a chance could you add some clarification to TT#158?
15:04 ruoso joined
riffraff ah i never understood what the arguments to trace were supposed to be :) 15:05
thanks
dalek r35757 | bernhard++ | trunk/languages/pipp/t/php: 15:15
: [Pipp] fix expected test output
review: www.parrotvm.org/svn/parrot/revision?rev=35757
jonathan Whiteknight: I'm only talking there about add_method method (not vtable method) in Class PMC. 15:17
And it should actually be just ripping out some code, rather than anything hard. 15:18
15:18 donaldh joined 15:19 ruoso joined 15:25 particle joined
dalek r35758 | bernhard++ | trunk: 15:27
: NEWS about Pipp and m4
review: www.parrotvm.org/svn/parrot/revision?rev=35758
15:30 masak joined
dalek r35759 | jonathan++ | trunk/languages/perl6/src (2 files): 15:43
: [rakudo] Make auto-threading work in the multi-dispatch case.
review: www.parrotvm.org/svn/parrot/revision?rev=35759
masak help, my Parrot doesn't build. :/ 15:45
gist.github.com/49027
jonathan masak: I built on Win32 this morning, so either it's a compiler specific one or something introduced very recently... 15:46
masak I should add that I just switched to this computer.
so yes, it's probably something to do with that. 15:47
jonathan Hmm.
I don't see anything this morning that woulda been likely to do it.
So I suspect the latter.
masak still, a bit worrying.
it should just build out of the box.
jonathan Indeed. 15:49
Hmm. I struggle to see recent patches that may have caused that. :-| 15:50
masak maybe I just have a stricter compiler than everybody else. 15:51
jonathan Erm.
Which one?
That error looks odd. 15:52
Like, header not in sync...but it's in generated code. :-|
Coke-zzz jonathan: trace -4 is also broken again.
jonathan Again?!
15:52 jhorwitz joined
Coke unless you just fixed it. 15:52
masak gcc says it's 4.0.1 here.
Coke there's a ticket for -t4 and for -t1 :| 15:53
jonathan Coke: Nope. I seem to remember someone (might have been me even) fixing --trace=4 a while back.
--trace 1 is broken too?
Coke I was going to ask you about it, since you're the only one who modified the code since I fixed it.
jonathan: in some cases, yes.
-t1 segfaults with the "right" bytecode.
jonathan Hmm. 15:54
Ticket #?
Coke t1: trac.parrot.org/parrot/ticket/193
t4: trac.parrot.org/parrot/ticket/122 15:55
dalek r35760 | pmichaud++ | trunk/languages/perl6/docs:
: [rakudo]: spectest-progress.csv update: 290 files, 6352 passing, 0 failing
review: www.parrotvm.org/svn/parrot/revision?rev=35760
Coke t4's not got a nice reproducible test case.
jonathan Oh, I remember the previous fix now... 15:56
I pointed you at what to copy/paste. :-)
I don't remember updating Perl6MultiSub though. 15:57
With anything additional.
15:57 ruoso joined
jonathan So doubt it's the same kinda problem. 15:57
Coke yah; you committed something to disable GC in the middle of the fix here; no clue what that's for.
jonathan Weird errors.
16:07 Whiteknight joined
Coke Whiteknight: I will gladly take you up on your offer to fix my problem! =-) 16:07
Whiteknight and which problem is that? I blindly offer to fix so many of them 16:09
Coke Whiteknight: where are you looking to see if the override is supported or not? src/pmc/class.pmc ?
whtrac.parrot.org/parrot/ticket/195
er, Whiteknight : trac.parrot.org/parrot/ticket/195
jonathan I suspect Object.pmc. 16:10
Whiteknight src/pmc/object.c, after it's been generated by pmc2c
and src/pmc/object.pmc too.
Coke ah. that actually seems like an easy fix,then.
finding the right place to put your 3 lines of code? 97% of the job. 16:11
16:12 ruoso joined
dalek r35761 | fperrad++ | trunk/config/gen: 16:13
: [OpenGL] MinGW
: - find includes without using environment variable INCLUDE
review: www.parrotvm.org/svn/parrot/revision?rev=35761
Whiteknight Coke: it will be a relatively easy fix. I'll play with it tonight after work
or maybe during my lunch break, if I eat in 16:14
jhorwitz jonathan: ping
jonathan jhorwitz: pong
OH! Yes, I forgot about that ticket you wanted me to look at. Sorry. :-( 16:15
jhorwitz had a chance to look at RT #62326 yet?
LOL
you read my mind
jonathan OK, let me finish getting a fix in for something else I just discovered, and then some more tests, then I'll look at that one. 16:16
jhorwitz awesome. 16:17
16:22 bkuhn joined
Infinoid good morning 16:23
jonathan morning, Infinoid 16:24
Coke Whiteknight: I added a patch to the ticket that adds tests. 16:26
er, /am adding/ my internets are slow. 16:27
there, added. 16:28
only tricky bit is that we should probably still 'does' what our parent does.
Though I would not cry if I could do that check in PIR.
16:31 ruoso joined
masak gradually realizes how little he can do without a built Parrot 16:31
I think this computer is one of those osx_64 thingies.
Whiteknight masak, why isn't your parrot built?
masak anyone else have one of those?
Whiteknight: because it doesn't build. :/ 16:32
gist.github.com/49027
Whiteknight where does the build fail?
masak see gist.
Whiteknight wow, that's a weird error, but it should be easy enough to fix I think 16:33
I don't have a darwin PC, so I can't really test it
Infinoid uh. I would think a realclean would fix that
pmc_default.h is generated from default.pmc
masak Infinoid: why do I need a realclean when it's the first time I try to build? 16:34
masak tries the realclean anyway
16:34 Casan joined
Infinoid masak: I don't know. if the prototype in pmc_default.h doesn't match the declaration in default.c, and they were both generated at the same time by pmc2c, then it seems pmc2c is emitting the wrong stuff 16:34
if its your first time building, then that rules out an old pmc_default.h 16:35
masak the osx_64 thing was a false lead, btw. 16:36
aye, building after make clean produces the same error.
Infinoid ok. what's the definition look like, and what's the prototype look like? 16:37
for me, they are both PARROT_EXPORT INTVAL Parrot_default_is_same(PARROT_INTERP, PMC *pmc, PMC *value) 16:38
(with various amounts of whitespace inserted)
masak INTVAL is_same(const PMC* value) and PARROT_API extern INTVAL Parrot_default_is_same(Interp *, PMC*, PMC* value), respectively.
dalek r35762 | jonathan++ | trunk/languages/perl6/src/parser: 16:39
: [rakudo] When we had a multi foo() rather than a multi sub foo() we didn't call !SIGNATURE_BIND nor did we set the block type to Sub. Fix that.
review: www.parrotvm.org/svn/parrot/revision?rev=35762
Infinoid masak: you want to look at the generated default.c, not the default.pmc
moritz so the difference is a const?
masak oh.
Infinoid though "extern" smells a little off
hmm. it isn't "const" in my checkout, oddly 16:41
masak Parrot_default_is_same(Interp *interp, PMC* pmc, const PMC* value) and PARROT_API extern INTVAL Parrot_default_is_same(Interp *, PMC*, PMC* value), then.
Infinoid I've added const to my copy, and rebuilt src/pmc/default.o 16:42
both the definition and the prototype were updated properly, no build error.
masak any idea why I'm the only one getting this error? 16:43
Infinoid not yet. I think we can rule out 64 bitness, as I'm on linux x86-64 16:44
I'm guessing you get the same error if you do this?
rm src/pmc/pmc_default.h src/pmc/default.c; make src/pmc/default.o
Coke perhaps running the preprocessor on that file would be instructive?
Infinoid its the pre-preprocessor (pmc2c) that seems to be broken.
Coke have we done a diff on the generated .c on his platform vs. a building platform? 16:48
masak Infinoid: aye, same error. 16:49
Infinoid well, the difference seems to be that his .c file has "const" and his .h file doesn't 16:50
masak: though, my .pmc file doesn't have a const, either. is this a trunk checkout, or some branch?
16:51 ruoso joined
masak Infinoid: checking. 16:51
16:51 Tene joined
masak oh! 16:51
erm.
found it, guys.
it's trunk, but it's r19310...
Coke BWAHAHAHA
jonathan ....wow!
Infinoid :) 16:52
masak sorry to take up your time :)
Coke yah, you owe us a cookie. =-)
Infinoid mmm, cookie
masak this is what happens when you specify revision numbers in svn-externals...
masak svn ups 16:53
Coke wow, I figured that was going to be much older than a year.
(it's only, what, about 17 months) 16:54
er, 19
Infinoid yarly. That is a *huge* number of commits
17:07 davidfetter joined 17:10 ruoso joined
jonathan jhorwitz: *Think* I have a fix, doing make spectest to be sure I didn't break anything. 17:11
jhorwitz excellent! 17:12
purl EGG-see-lent!
17:14 gryphon joined
dalek r35763 | jonathan++ | trunk/languages/perl6/src/parser: 17:21
: [rakudo] Fix say A::b() to actually call A::b.
review: www.parrotvm.org/svn/parrot/revision?rev=35763
jonathan jhorwitz: And there was the patch. :-) 17:26
jhorwitz yay, jonathan++ 17:27
jonathan Heh, that randomly fixed a completely unrelated bug too. 17:28
17:29 ruoso joined
jhorwitz even better :) 17:30
confirmed -- works on my end. :) 17:31
17:31 AndyA joined
jhorwitz now if we can get TT #185 ironed out, mod_perl6 will work again. 17:31
davidfetter w00t! 17:32
dalek r35764 | jonathan++ | trunk/languages/perl6/t: 17:36
: [rakudo] Add (probably passing since rvar merge) S12-attributes/inheritance.t to spectest.data.
review: www.parrotvm.org/svn/parrot/revision?rev=35764
17:41 ruoso joined 17:46 particle1 joined 18:00 donaldh joined 18:08 Whiteknight joined, tomyan left
dalek r35765 | infinoid++ | trunk/src/pmc: 18:15
: Merge ssh://infinoid@10.0.254.2/home/infinoid/parrot-dev/test
review: www.parrotvm.org/svn/parrot/revision?rev=35765
r35766 | moritz++ | trunk:
: [NEWS] mention Junction autothreading in Rakudo's section
review: www.parrotvm.org/svn/parrot/revision?rev=35766
Infinoid erk. commit message fail
was supposed to be "As tomorrow is Release Day, temporarily work around TT #179." 18:16
(that'll teach me to make sure I do a rebase before the dcommit) 18:17
dalek r35767 | kjs++ | trunk/compilers/pirc (2 files): 18:18
: [pirc] update README file and TODO file.
review: www.parrotvm.org/svn/parrot/revision?rev=35767 18:19
Infinoid tries again with further clarification 18:21
dalek r35768 | infinoid++ | trunk/src/pmc:
: As tomorrow is Release Day, temporarily work around TT #179.
: Note: this causes pmc2c to not emit the PackfileFixupEntry.get_type()
: method, as it no longer parses correctly.
review: www.parrotvm.org/svn/parrot/revision?rev=35768
r35769 | kjs++ | trunk (2 files): 18:23
: [pirc] remove unused bctest.c file that contained a test framework for bytecode generation. PIRC's bcgenerator works nicely now, and compilers/pirc/src/bcgen.c contains a fairly re-usable bytecode generation interface (except there's 1 thing to make it completely independent from pirc/src/*).
: + update MANIFEST.
review: www.parrotvm.org/svn/parrot/revision?rev=35769
Infinoid just overwrote TT #179's main description by typing his comment into the wrong text box. 18:26
Infinoid isn't having a very good day 18:27
moritz one could also complain about track in this one
I personally don't find it appropriate to force bug submitters to learn a markup just so that trac can uses its wiki capabilities...
Infinoid yeah... and the comment box and description box aren't visually distinct enough (or maybe I'm just used to those things existing on separate pages) 18:31
Whiteknight Coke, I think I got your does issue solved. I'm building and testing now 18:38
dalek r35770 | kjs++ | trunk/compilers/pirc/src: 18:41
: [pirc] add function doc.
review: www.parrotvm.org/svn/parrot/revision?rev=35770
tewk :q 18:44
moritz E37: No write since last change (add ! to override)
jonathan seems to have got the named argument auto-threading stuff working 19:14
commits when make spectest has (hopefully) completed successfully...going for dinner now
19:20 jrockway joined 19:24 ruoso joined 19:29 chromatic joined 19:52 Tene joined
Infinoid oh, cool, I can reproduce the miniparrot segfault in an ubuntu chroot here. 19:57
jonathan Cool, that should give a better chance of it being findable. :-) 20:02
Infinoid Oh, my. I'm stepping through the creation/initialization of the Scheduler PMC, and it seems Parrot_go_collect() got called. I'm starting to strongly suspect it was freed during its own initialization phase. 20:06
chromatic Sounds plausible, if it's vtable goes 0xdeadbeef.
s/it's/its/
need lunch
20:07 particle joined
Infinoid it does. 20:07
purl stays quiet
jonathan staying quiet fail! 20:08
dalek r35771 | jonathan++ | trunk/languages/perl6/src (2 files): 20:12
: [rakudo] Handle auto-threading of named arguments correctly. (The named ones that passed in the single dispatch case seem to have done so as a result of a Parrot bug; this gets them passing for real and also handles the multi-dispatch case.)
review: www.parrotvm.org/svn/parrot/revision?rev=35771
nopaste "Infinoid" at 96.238.213.50 pasted "Scheduler->vtable goes deadbeef in the middle of its own init function." (55 lines) at nopaste.snit.ch/15358
Infinoid I would assume the current stack contains a few local variables that point to the Scheduler object. Which (I guess) means the GC's stack scanner didn't find it. 20:13
jonathan 121 PMC * const pmc = get_new_pmc_header(interp, base_type, 0); 20:19
(gdb)
122 VTABLE_init(interp, pmc);
I'd guess it's on the stack there for sure. As pmc.
Unless somehow it is optimized to just keep it in a register...
...but that'd get shuffled onto the stack during the call.
So hmm, it must be. 20:20
Infinoid Yeah. I start to get a little paranoid about gcc optimizations playing tricks like offsetting the pointer on the stack after some point in the child function when it only needs to reference a particular member from then on
but I'm not quite desperate enough to be poring through the disassembly just yet.
jonathan Infinoid: One thing to check. Somewhere I think we set the point in the stack that we walk down to. 20:21
We're not by any chance creating that PMC *before* setting up that variable, are we?
Infinoid I'm not too familiar with the internals of the GC. any particular place I should start?
jonathan I think it's a member of interpreter... 20:22
Infinoid starts flipping through parrot_interp_t
jonathan void *lo_var_ptr; 20:23
Infinoid (gdb) print interp->lo_var_ptr 20:24
$3 = (void *) 0x0
so, my next question is, is that good or bad?
jonathan Is that at the point of the segfault? 20:25
Infinoid its just after the 0xdeadbeef
but ... if it excludes stack locations with addresses less than 0, I'm not so sure that's the worst thing that can happen
its a starting point tho, I'll see if I can learn more about how this stuff works. 20:26
thanks!
jonathan /* Create a local variable on the system stack. This represents the
"top" of the stack. A value stored in interp->lo_var_ptr represents
the "bottom" of the stack. We must trace the entire area between the
top and bottom. */
Infinoid: It appears to be at least set in runops_int 20:28
But only if it's not already set.
Infinoid ok. if we assume a stack model that counts downward (I don't remember which way x86 counts), you're starting to make more sense
jonathan Thing is, we're likely setting up the scheduler before we've run any ops. 20:29
Infinoid I seem to recall there's some simple stack-like API for telling the GC not to run during a section of code... that might be a quick fix 20:30
jonathan IMCC sets it in imcc_run
Which is called from main.c 20:31
Whiteknight src/cpu_dep.c 20:32
it's ugly as hell, but that's the stack-walking code 20:33
jonathan Infinoid: aha.
See make_interpreter
Whiteknight I know it works for x86, I don't know if it is as reliable for x86_64
jonathan in inter_create.c
interp->lo_var_ptr = NULL;
And later in that function
Parrot_cx_init_scheduler(interp);
Note also that *before* that we unblock GC!! 20:34
/* Okay, we've finished doing anything that might trigger GC.
* Actually, we could enable DOD/GC earlier, but here all setup is
* done
*/
lol
Infinoid heh
in other words, "but since we got here, life is happy, daisies and butterflies"
jonathan Sugget moving the two lines and that comment like, down several :-)
Infinoid that makes a lot of sense. 20:35
jonathan *amused*
pmichaud jonathan: ping
jonathan pmichaud: hi 20:36
Infinoid Parrot_cx_init_scheduler is where all this crashy stuff comes from, so I think you must be right :)
jonathan pmichaud: Is that a reply to my ping, or a ping of your own? ;-)
pmichaud re: r35771 -- so, are we basically planning to do our own argument passing for a while until Parrot catches up to us?
(ping of my own -- didn't see an earlier ping)
Infinoid cool, that triggered a different crash
jonathan Infinoid: It's just possible you want to set the lo_var_ptr...
pmichaud I'm in-and-out today, lots of stuff going on around the house (no school for kids)
jonathan looks up which patch that was 20:37
pmichaud r35771 is the one that handles named arguments, I think.
nopaste "Infinoid" at 96.238.213.50 pasted "miniparrot crash after moving the unblock-GC stuff below the call to Parrot_cx_init_scheduler()" (12 lines) at nopaste.snit.ch/15359
jonathan pmichaud: Don't quite get what you mean. 20:38
We need to detect which argument to thread on.
Oh, you're commenting on my comment about the Parrot bug?
pmichaud yes (more)
chromatic Re: scheduler in a register, the stack scanner uses setjmp to store register contents in a memory structure which we can scan during system area scanning.
pmichaud in r35771, are we only doing this for junction calls?
jonathan pmichaud: Yes.
pmichaud or for every dispatch?
Infinoid fetching thai takeout, brb 20:39
jonathan The Parrot bug in question is that it will let a positional argument fill a named slot.
pmichaud right
I'm hoping that gets fixed, soon.
actually
jonathan So before, when my dispatcher wasn't looking for junctions in named slots, it just worked by accident.
pmichaud I'm hoping that gets fixed. I'm despairing of "soon".
jonathan I didn't know quite why because I knew it wasn't meant to work yet...
pmichaud okay. If what you're doing is only for junctions then I'm great with that. 20:40
jonathan ('cus I hadn't written the code to auto-thread named args...)
pmichaud I haven't had much opportunity to watch the patches in detail this weekend
jonathan Oh, even when the Parrot bug is fixed, we'd still need to find which named argument is the right one to thread over.
pmichaud (or do much rakudo-related over the weekend)
jonathan This isn't a workaround for a Parrot bug. The Parrot bug just worked around my lack of implementation of named arg auto-threading. ;-)
pmichaud jonathan: yes, got it. 20:41
jonathan: understood, and it's fine.
jonathan OK. Sorry the comment message wasn't clear on that.
I didn't commit anything over the weekend either...
So you've only got todays. :-)
pmichaud okay.
thanks. 20:42
you pinged me for something?
jonathan Yeah
I'm getting to the point where the p6 prelude is starting to matter.
pmichaud same here.
this week we *have* to resolve the repository issues.
jonathan Yes, agree. 20:43
pmichaud so that may be delayed by another week
jonathan But basically my reasons are:
(not disagreeing, just want you to understand what I'm needing out of it)
1) Auto-threading of built-ins will just fall out of us having the p6 prelude
So say(1|2) etc (not to mention the operators) won't work until we do that. 20:44
pmichaud iirc, say doesn't autothread. :-)
but yes, I understand the point :-)
jonathan 2) To handle the later parts of my grant, I need to start making various things (e.g. Array) into parametric roles.
I epicly do not want to hand-role those in pir. 20:45
uh, handroll
;-)
pmichaud yes, understood on both parts.
jonathan OK.
say doesn't? Heh. I didn't know that bit. :-)
pmichaud well, it takes a slurpy list as an argument, so no autothreading there :-)
jonathan Oh, yes. 20:46
pmichaud and we really want it to output a junction.
jonathan That makes sense. :-)
How does it output a junction?
Or is that unspec?
pmichaud "1|2" iirc.
it's almost like a call to .perl
moritz right
jonathan Yes. But not quite. :-)
Do junctions stringify in this way generally?
pmichaud yes.
jonathan Or is this special to say/print?
OK, good. 20:47
That's quite easy to write.
Stringify the eigenvalues and join on the appropriate separator.
pmichaud I think it's already written, or is fairly close.
jonathan Does it paren nested junctions too?
rakudo: say 1|2;
polyglotbot OUTPUT[Junction<0xb6a60988>␤]
jonathan Close. ;-)
pmichaud rakudo: say ~(1|2);
jonathan rakudo: say (1|)2.Str;
polyglotbot OUTPUT[Junction<0xb6a4b580>␤]
OUTPUT[Statement not terminated properly at line 1, near "|)2.Str;"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤called from Sub 'parrot;Perl6;Grammar;eat_terminator' pc 31408 (src/gen_grammar.pir:3387)␤called from Sub 'parrot;Perl6;Grammar;statementlist'
..pc 30056 (src/gen_grammar.pir:2854)␤called from S...
jonathan fail 20:48
pmichaud fail.
jonathan rakudo: say (1|2).Str;
polyglotbot OUTPUT[Junction<0xb69d01a0>␤]
jonathan epic fail
purl i guess epic fail is chopping chili and go pee without washing hands
pmichaud anyway, easy to do when we need it.
jonathan Easier than most of the code I've been comitting of late, yes.
pmichaud yes, I understand the need for prelude, and it's likely to be immediately following the repository stuff.
jonathan wants something easy to work on now. :-)
OK, great.
pmichaud that means that I'll be doing my milestones out of sequence as well, but maybe we can work that out. 20:49
and I just ordered a new notebook last night, so I'll need some way to pay for it :-)
jonathan OTOH, it gives you something on your milestone that you can tick off as done.
Ooh, seems like with today's work I've about done my January grant tasks too. :-) 20:53
Now I need to go back and do those bits I didn't do in December. ;-)
(I've had last week and half of this week as pretty much uninterupted time, so decided to get the big/hard things in during that.) 20:54
dalek r35772 | chromatic++ | trunk (3 files): 21:11
: [src] Added a test for TT #24, where \\xab escapes in literal PIR don't work
: correctly for iso-8859-1 encoding.
review: www.parrotvm.org/svn/parrot/revision?rev=35772
chromatic lathos, the test I added in r35772 relates to the Unicode escaping bug we looked at the other day. 21:12
nopaste "Infinoid" at 96.238.213.50 pasted "This hacky patch fixes the miniparrot segfault." (36 lines) at nopaste.snit.ch/15360 21:17
Infinoid jonathan++ for suggesting it 21:18
21:18 Theory joined
chromatic Seems to me we already have code like that somewhere. 21:19
Infinoid yeah, it just runs too late.
chromatic Could we call it earlier? 21:20
Infinoid as long as it's called before the unblock_GC functions in make_interpreter(), I think it closes this race 21:21
chromatic Are you working on a slightly less hacky patch along those lines then?
Tene chromatic: re ops review: count_eh was broken and completely unused and untested, last I checked.
Infinoid chromatic: I certainly can. 21:22
without the patch, there's a window between the unblock_GC functions and the lo_var_ptr initialization code in imcc_run(), during which, if the gc is called, it fails horribly. Parrot_cx_init_scheduler() is within that window.
chromatic Tene, I thought so too. 21:23
Tene count_eh can be a method on something
jonathan I'm not sure why it's hacky in a way... 21:25
Infinoid jonathan: well, first off, the prototype isn't in a headerfile and I haven't documented it at all 21:26
jonathan I mean, the fix is to set lo_var_ptr, AFAICT.
chromatic Adding a static function in one place when we already have a function which does the same thing in another place, just at the wrong time, is hacky.
Infinoid I don't think the existing initializer is in a dedicated function, c.
chromatic Hm, I thought it was. Perhaps it should be.
Infinoid it's just at the top of imcc_run()
well, that's what I plan to do with my patch
jonathan Sure, then if there's another function we should call that. But the _idea_ behind this fix isn't hacky, is more what I meant. 21:27
Infinoid Glad to hear it. (I'm not at all familiar with this stuff.)
GeJ Good morning everyone 21:28
Infinoid hi GeJ 21:29
uh. and there's another initializer at the top of runops_int(), which is also too late. 21:32
GeJ I'm sorry I can't bother anymore with conversion patches. But $job got in the way. Hopefully, I should be able to resume my Parrot activity in a few days. 21:34
21:37 kj joined
Infinoid chromatic: Was Parrot_init_stacktop() the function you were thinking of? 21:51
chromatic That sounds right.
Infinoid any objection to my calling that from mem_setup_allocator()? 21:52
jonathan Infinoid: Thing is, how deep is that? 21:53
It's not about how early you call it, so much as where the stack is at the point you call it... 21:54
Infinoid jonathan: yeah. mem_setup_allocator() is called from make_interpreter(). The alternative is to call it from make_interpreter(), directly.
Either way I think it will work.
jonathan Perhaps. ;-)
chromatic t/op/trans.t fails with -j
specifically the atan2 test
Infinoid I was just thinking it should be part of the GC init, hence looking at mem_setup_allocator()... 21:55
chromatic Infinoid, the only complication is when Parrot's run embedded from another process.
Provided all of the tests pass (we have tests for that), it's a workable fix.
Infinoid Great. I think I can address the stack-position issue too. With Parrot_init_stacktop(), it isn't about where you call it from, it's about where you got the pointer you're passing to it. 21:56
chromatic Makes sense. 21:58
dalek r35773 | kjs++ | trunk/compilers/pirc (4 files): 22:06
: [pirc] add some #if for comments. + add tests
review: www.parrotvm.org/svn/parrot/revision?rev=35773
Infinoid Sadly, Parrot_init_stacktop() also calls init_world_once(), which also crashes. 22:08
The yaks are lining up.
jonathan hands Infinoid a shaver 22:10
chromatic Why in the world does this not assign to NREG(1) under JIT? 22:11
NREG(1) = atan2((FLOATVAL)NREG(2), (FLOATVAL)NREG(3));
jonathan chromatic: Is the op jitted? 22:12
chromatic I don't believe so, no.
I stuffed fprintf() calls in the body of the op in src/ops/core_ops.c and they print during normal and JIT operations. 22:13
Atan_n_n_n: 1, 1 = 0.785398163397448 (0.785398163397448)
Atan_n_n_n: 1, 1 = nan (0.785398163397448)
The second case prints NREG(2), NREG(3), NREG(1), and the results of the atan2 call directly. 22:14
jonathan What does the NREG macro resolve to? 22:16
chromatic The appropriate N register based on the register number of the opcode address + offset.
jonathan Under JIT too? 22:17
chromatic Yes.
dalek r35774 | jonathan++ | trunk/languages/perl6/src (2 files): 22:20
: [rakudo] Make //= work (but see RT#61880 for discussion on this patch).
review: www.parrotvm.org/svn/parrot/revision?rev=35774
22:22 TiMBuS joined 22:27 particle1 joined
dalek r35775 | infinoid++ | trunk (5 files): 22:31
: [core] The GC is being called too early, and didn't have enough stuff
: set up yet to scan the stack effectively. This caused early frees of
: critical objects (in this case, the Scheduler) and crashed miniparrot
: during the build process. Initialize the stack pointer stuff earlier,
: before the GC is enabled. This fixes TT #179.
review: www.parrotvm.org/svn/parrot/revision?rev=35775
r35776 | infinoid++ | trunk/src/pmc:
: Undo the TT #179 workaround... reenable building of the get_type() method.
review: www.parrotvm.org/svn/parrot/revision?rev=35776
Infinoid chromatic: Please sanity check r35775 for me, if you have a moment.
chromatic Looking now. 22:32
It looks sane. 22:33
Infinoid thanks! 22:35
PerlJam, TiMBuS: do either of you have a moment to see whether miniparrot still segfaults in the current trunk? (I was able to reproduce it locally, and seem to have fixed it here.)
22:35 gravity joined
TiMBuS Infinoid, yeah i just did a svn checkout and it compiled fine 22:36
Infinoid TiMBuS++, thanks for all your testing help
TiMBuS no problem. it gets you motivated to help out when its not working heh 22:37
kj or mapping) 22:41
mmm.
jonathan: hi
jonathan kj: hi 22:44
purl que tal, jonathan.
jonathan muy bien, purl... 22:45
purl i guess muy bien is spanish right?
Infinoid purl: Your attacks upon us will not go unpunished. You are in contravention of the New Paradigm.
purl OK, Infinoid.
jonathan Yes purl.
kj not sure if all my messages arrive. crap irc client today
anyway, I'm trying to find out where debug mappings are stored in bytecode
apparently, the mappings are there, when running pbc_disassemble
jonathan For PIR file/line numbers?
They go in a debug seg. 22:46
kj well, for each .sub, there's a line like 'Current Source Filename <filename>'
if you pbc_disassemble a pbc file
Andy ping pmichaud 22:47
purl I can't find pmichaud in the DNS.
kj and I can't really find out where 1) the debug segment is created, and 2) when this information is stored in that debug segment
jonathan It's all in pbc.c in imcc
In one routine
I think emit_bytecode or something 22:48
The main one that emits the bytecode.
kj yes I know that one
NotFound kj: I looked for that some months ago when working with the debugger, and failed miserably
jonathan But basically it stores for each op an entry in the data part of the segment.
kj that doesn't promise much good.
jonathan: ok, thanks
jonathan That holds the line number that this op was on.
It's pretty dumb, but works. 22:49
kj ah now I notice the difference between pirc-generated pbc and imcc-generated pbc
hadn't noticed before
22:51 TonyC joined
jhorwitz chromatic: ping 22:57
dalek r35777 | kjs++ | trunk/compilers/pirc/src (2 files):
: [pirc] store PIR source line in the instruction for each, ehm, source line :-)
review: www.parrotvm.org/svn/parrot/revision?rev=35777
chromatic pong 22:58
jonathan kj: There is the mapping section with filenames in the header too, if you didn't already do that bit.
kj no, don't think so. 22:59
jhorwitz chromatic: been working on TT #185, but my fixes exposed other problems. question -- would it make sense for subs with empty labels ('') to be automatically marked :anon?
chromatic as in .sub '' ? 23:00
jhorwitz correct
kj what really troubles me is that the generated PBC can be disassembled nicely, but fails massively when running
chromatic Makes sense to me.
jhorwitz how would that be done?
chromatic In IMCC, when you parse the sub declaration rule, you need to set VT_ANON or whatever the right flag is on the resulting Sub object. 23:02
kj setting :anon in imcc: around line 1105 in imcc.y 23:03
jhorwitz ok i'll try that out. 23:04
kj that's also the part where other flags are set, as 'sub_proto' indicates flags
well, not really, the flags are really set in the actions for sub_proto; aruond line 1330
but I guess you can add it later
chromatic Hm, I wonder if this has ever worked. 23:11
NotFound How do we make references to trac tickets in source comments? TT#num ?
chromatic TT #num
NotFound With a space?
chromatic Please.
As of July last year, the JIT atan2 test triggered NAN. How odd. 23:12
dalek r35778 | allison++ | trunk/src: 23:16
: [install] Include configured 'libdir' and 'includedir' in default search path for libraries and include files.
review: www.parrotvm.org/svn/parrot/revision?rev=35778
r35779 | julianalbo++ | trunk/compilers/imcc: 23:22
: add assertion that catches TT #162 segfault
review: www.parrotvm.org/svn/parrot/revision?rev=35779
r35780 | kjs++ | trunk/compilers/pirc/src (3 files): 23:26
: [pirc] add debug segment and debug info. Not finished yet, but at least pbc_disassemble does now print it.
review: www.parrotvm.org/svn/parrot/revision?rev=35780
23:30 iblechbot joined
dalek r35781 | kjs++ | trunk/compilers/pirc/src (2 files): 23:36
: [pirc] fix source lines for debug info.
review: www.parrotvm.org/svn/parrot/revision?rev=35781
23:43 Whiteknight joined
dalek r35782 | kjs++ | trunk/compilers/pirc/src (2 files): 23:44
: [pirc] Eh. debug linenrs are /not/ fixed yet, but the problem is identified. + add some comments. Will fix Another Day.
review: www.parrotvm.org/svn/parrot/revision?rev=35782
23:49 kid51 joined
Whiteknight Coke here? 23:51