#parrot Parrot 0.6.1 "Bird of Paradise" Released | parrotcode.org
Set by moderator on 22 April 2008.
cotto_work nopaste? 00:37
purl nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or paste.husk.org/ or poundperl.pastebin.com/ or paste.scsys.co.uk/ or don't bother me while I'm eating
cotto_work nopasta? 00:40
purl, nopasta is www.news.com.au/story/0,23599,22352...62,00.html 00:42
purl OK, cotto_work.
00:43 particl1 joined 00:45 kid51 joined 00:48 Theory joined
cotto_work purl, svn st is <reply>svn: warning: '#parrot' is not a working copy 00:50
purl OK, cotto_work.
cotto_work svn st
svn st 00:51
tetragon "Determining whether libc has the backtrace* functions (glibc only).....yes."? I don't have use glibc. 00:55
cotto_work that's what you think
tetragon backtrace(3) is in the "BSD Library Functions Manual" 00:57
(And was added to OS X in 10.5) 00:59
kid51 ... which explains why on OS X 10.4, I get "no entry" for 'man backtrace'
tetragon The manpage documents that it is a recent addition 01:00
It's in execinfo.h 01:01
kid51 Part of our problem is that we don't (as far as I know) have anyone who *primarily* develops Parrot on BSD -- not counting Darwin.
nopaste "cotto_work" at 131.107.0.106 pasted "cultural sensitivity to non-glibc systems with a backtrace()" (13 lines) at nopaste.snit.ch/12821
kid51 So we solve Darwin problems as they occur on the laptops many/most of us use ... to access Linux servers. 01:02
tetragon And, as you might expect, Apple's execinfo.h is not the same as glibc's execinfo.h 01:03
They appear to be effectively the same signatures, though 01:04
glibc sticks in a load of macros, though 01:05
(in the declaration lines)
kid51 cotto_work: I don't think we can accept that patch unless we understand that step's runstep() method better. After all, it specifically sets 'glibc_backtrace' in the P::C object. I can't say that that's 100% correct, but it was clearly the intent of the person who wrote the step.
cotto_work I would expect an actual commit to be made by someone more knowledgeable about that than me 01:07
nopaste "kid51" at 68.237.13.171 pasted "How auto::backtrace first appeared as a separate config step class in Parrot" (6 lines) at nopaste.snit.ch/12822
kid51 ... and that certainly isn't me! ;-)
cotto_work I really should get some BSD system set up for testing 01:08
kid51 Is 'backtrace' something on the order of these libraries we've been adding lately, e.g., readline, gdbm, gmp, opengl? Or is it something more fundamentally tied in with the C compiler?
tetragon It's from the base C library 01:09
Here's the manpage: developer.apple.com/documentation/D...ace.3.html
shorten tetragon's url is at xrl.us/bjt5k
kid51 cotto_work: I dunno know about lately, but in the past year we've had good *smoke* testing on FreeBSD and Dragonfly -- but that's not quite the same thing as active developing on the system.
tetragon: Given its position in the sequence of config steps, that's what I suspected. 01:10
2 steps after auto::gcc
tetragon Looks like there could be slightly different behaviour at compile-time between Linux/glibc/gcc and OS X 01:11
The glibc variant makes use of gcc attributes
The attributes used mean that the compiler checks calls for NULL pointers 01:12
(and can adjust optimisations based upon the assumption of non-null) 01:13
The three functions are otherwise equivalent, going by the OS X manpage and the comments in the header on a Linux box 01:15
Infinoid it sounds perfectly safe to me to remove the glibcism 01:17
the only thing I think we have to worry about is some other obscure OS adding a backtrace() with different parameters 01:18
01:18 Zaba joined
Infinoid if execinfo.h doesn't exist, the test will barf 01:18
if execinfo.h exists but doesn't contain backtrace(), it will yield a "implicit declaration" warning and succeed... but might not work correctly later
is there a portable version of -Werror? 01:19
tetragon I can't think of one. The Linux manpage for backtrace(3) I found claims that backtrace is a GNU extension. 01:26
Infinoid several things have started out that way :)
but it doesn't mean someone else might have a backtrace() of their own, with different arguments/semantics (one might expect to be passed a pthread_t, for example) 01:27
tetragon Here's the manpage for the glibc version: linux.die.net/man/3/backtrace 01:28
Infinoid so what I'm worried about is, we try out a new platform, detect backtrace bogusly, crash horribly at runtime for some other reason (pointer alignment perhaps), try to call backtrace, and make the problem even worse
I'd prefer if it didn't get in the way of future debugging
but I suppose that isn't a big deal. just removing "glibc" from the variable names and Configure.pl output is a step in the right direction 01:29
tetragon Heh, the test for supported compiler warnings is a few steps after the check for backtrace 01:30
Infinoid Figures (tm) 01:31
I don't want to add -Werror to the standard set of compiler warnings, but it would be nice if it could compile this particular test with it
01:31 Andy joined 01:32 peepsalot joined
dalek r27172 | coke++ | trunk: 01:34
: [codingstd] Fix svn:keywords
diff: www.parrotvm.org/svn/parrot/revision?rev=27172
Infinoid nice of them to say its a GNU extension but not what version it was added in
Coke Infinoid: I had already figured that out and one point and think perhaps opened a ticket.
Infinoid: rt.perl.org/rt3/Ticket/Display.html?id=50908 01:35
Infinoid Coke: Nice. Speaking of beating me to it, did you get anywhere with the ops2c flags hashification thingy? 01:36
Coke Every time I try to improve upon your version, I screw it up in an incompatible fashion. I think I might have something I can commit, checking....
I just have your version. 01:37
Feel free to check yours in and get your karma.
Infinoid ok, I will. and I'll add a blurb to the accessor method as you suggested 01:38
Coke (in fact, I just reverted it to force you!)
Infinoid heh. good thing I still have a copy of the diff :)
nopaste doesn't seem to keep things around for very long
Coke I had to go back through nopaste one a time to get back to yours.
(this was only the following day, though) 01:39
Infinoid is there a way to intentionally crash parrot, in order to test whether backtrace() worked? 01:42
I mean, I could tell it to sleep for a second and send it a SIGSEGV, but that isn't very sporting. (nor portable.)
tetragon So no dereferencing a NULL pointer? 01:43
Infinoid I don't think I'm able to do that from PIR 01:44
but maybe I can do it through an NCI call
... call fprintf(undef) or try to call stdout as a function or somesuch 01:45
Coke is there a CPP way to see if two literal strings are equal?
Infinoid C++ or C Preprocessor? 01:46
Coke latter
Infinoid #if (a == b) will probably work
tetragon Hrm... the pointer alignment test detects a minimum alignment of one byte on my system, except based upon my (brief) look at the rules and compiler flags, it should probably be four 01:47
Infinoid will your system crash if you access a non-aligned location? some processors (like ARM) do. 01:48
the kernel has a whole exception framework to fix those up for userspace processes
tetragon I know I got alignment errors when I ran that sub test{}; test(); thing a while back 01:49
I'll find out if I correctly remembered the syntax in a couple moments
Infinoid ok 01:50
Coke: I lied. the preprocessor is all sorts of incompetent about quoted strings, it seems
tetragon Hrm, I'm getting double-frees from that
The slightly confusing bit is that PPC OS X supports multiple alignment modes 01:52
Infinoid interesting... does it depend on how the OS and/or bootloader set things up? or how the RAM is wired? or what? 01:53
tetragon Compiler flags and pragmas
Infinoid blinks
tetragon developer.apple.com/documentation/D...TP40002438
shorten tetragon's url is at xrl.us/bjt66
tetragon I'm on PPC32 01:54
Infinoid oh... that's just for performance (fitting into cache nicely and minimizing TLB hits and such)
or does it actually crash when you get this wrong? 01:55
tetragon I think the flags (or more correctly lack thereof) put me into Power mode, but the single byte would only be correct for packed
Docs suggest that it's performance and that the compiler will pad things out 01:56
Infinoid yep, you'll find your generated assembly dotted with ".align" tags for that
and there's a whole subset of linker flags related to this 01:57
tetragon Although there are special rules for function parameters
Non-vector parameters are four-byte
Vector parameters are 16-byte
tetragon is so glad that compilers take care of this stuff 01:58
Infinoid that's to keep the stack working, and scannable by gdb and backtrace()-like functions
I don't think any of this is ppc-specific... they all have that. :)
tetragon As evidenced by the subsequent pages for i386 and amd64
Infinoid there are some architectures (ARM as I mentioned before and probably MIPS), which simply aren't able to think about non-aligned access 01:59
in fact, when you branch to a subroutine on ARM, the least significant 2 bits are repurposed as "flags" 02:00
to tell it what mode to execute the subroutine in
so you couldn't call an unaligned function even if you tried, it would round down to the next dword boundary and start executing there
(sorry, this counts as "idle conversation" for me.) 02:01
02:02 donaldh joined
Infinoid does t/op/sysinfo.t fail for anyone else, or did I break it? 02:02
tetragon hehe, the test used by alignptrs.pm still passes if I tell it 0 02:03
Or -1
purl -1
Infinoid nice!
tetragon Hrm, well -1 changes the number to -29 02:04
I'll have to check on that
Infinoid ok, I didn't break it. and it looks like a 64-bit specific error 02:09
# Failed test 'sysinfo integer size'
# at t/op/sysinfo.t line 53.
# got: '8'
# expected: '4'
nopaste "Infinoid" at 75.5.241.119 pasted "backtrace: Its Not Just For Glibc Kiddies Any More" (108 lines) at nopaste.snit.ch/12823 02:10
Infinoid that's a logical extension of cotto++'s patch. It works fine here 02:11
tetragon backtrace was detected here with the patch 02:14
Infinoid I just wish we had a test that called it 02:15
I guess that's stage 2 :) 02:16
kid51: so, the patches we've been tossing around just change the name and description to avoid accusing OSX people of GNU-ness. Should I just check it in? I don't think it makes the current situation any worse... 02:18
kid51 I have no big personal investment in this step. Other than the 2 steps tests -- which I'm glad to see you adjusted -- I didn't have any thing to do with it. But let me see what I get on OS X 10.4. 02:19
Also: how would this run on win32?
Infinoid it should fail to compile, and thus, say "no" 02:20
I presume it already does that
kid51 svn ups 02:21
Infinoid I can test that on mingw in a few minutes 02:22
kid51 Infinoid: Once I do 'make', what are the relevant tests? ('make test' takes too long on my iBook). 02:23
Infinoid I don't think there are any. 02:24
[19:15] <@Infinoid> I just wish we had a test that called it
tetragon There are some tests that consistently crash parrot on my box 02:25
Infinoid do they have nifty looking backtraces?
tetragon Give me a minute
I need to get it to the point of not being blocked by prove -v 02:26
But there is a backtrace
Infinoid I'm not really sure under what conditions it does this. but it looks like "Backtrace - Obtained %zd stack frames (max trace depth is %d).\\n" 02:27
nopaste "tetragon" at 69.196.138.185 pasted "Nifty looking backtrace from the crash of t/imcc/syn/macro.t, test 32" (20 lines) at nopaste.snit.ch/12824
Infinoid nifty!
tetragon This particular test is one that crashes hard enough to trigger the OS X crash reporter 02:28
Infinoid hmm, kinda nifty. but I wonder if we need to compile with -g or something, to get symbol names
tetragon Want to see the output made using the sample C code in the OS X manpage? 02:30
nopaste "Infinoid" at 75.5.241.119 pasted "Linux has some symbol names, but is still missing some" (17 lines) at nopaste.snit.ch/12825
tetragon I get the names without fancy compiler options
The crash reporter stack trace on macro 32 I get has all the function names 02:31
kid51 Infinoid: change of topic: rt.perl.org/rt3/Ticket/Display.html?id=53270 Do you know what interface to _add_to_libs() japhb wanted? I kinda understand his point about the internals, but am unsure what he meant by $args->{default}.
purl kid51: that doesn't look right
kid51 purl That's why I am asking the question!
Infinoid purl, zark off
purl OK, kid51.
Infinoid: i'm not following you...
Infinoid purl, that's why kid51? 02:32
purl that's why kid51 is asking the question!
kid51 Dare we ask purl who's on first?
Infinoid its pronoun handling amuses me 02:33
japhb Oh boy
kid51: IRC client alerted me ... what's up?
I fear that I have done a poor job of explaining myself ....
kid51 Infinoid: Your patch passed Configure.pl --test on both Linux and Darwin 10.4. backtrace correctly detected on former and correctly not found on latter. Am currently running make test on Linux only.
Infinoid kid51: I don't think the interface to _add_to_libs was the issue, it was the implementation 02:34
I think he just cleaned it up to make it look nicer
(and easier to extend in the future)
japhb Infinoid: mostly what you just said. Plus the default thing, as follows: 02:35
kid51 Okay: I understand that you'd like that darwin KVP so that we could accommodate one more conversion from _handle_mswin32. And I understand that you'd prefer cascading ternary on the inside. But I'm unclear as to what you wanted for the interface for _add_to_libs().
japhb If several different platforms have the same libs flags, it seems a shame to have to specify them all individually.
And most *nix are like this. 02:36
So I figured -- make the *nix case the 'default',
and then ONLY specify flags for OSen that do not want those.
Infinoid (we out number the win32's, anyway)
japhb So we no longer have to specify win32_gcc if it's just the same as gcc on every platform.
Same with darwin, fink, macports, etc.
afk for just a sec 02:37
bak
My point was basically: why have to list the flags for every platform, when most are the same.
er, s/\\./?/ 02:38
kid51 And how/where would the default be coded?
japhb That's the thing -- in the args to the function, one key be called 'default';
depending on the platform detected, if there is no explicit arg for that platform, it falls back to using the 'default'. 02:39
kid51 So, more or less, 'default' substitutes for what I referred to as 'non_win32'?
japhb That's why the my $lib line
kid51: yes, exactly.
Except it gets renamed, because it now really is a default.
Infinoid and now we have the ability to add special cases for things other than win32, in the future, without looking really bizarre 02:40
kid51 Ok. Since it's getting late here, I won't try to do this now. Will try over the weekend.
Infinoid japhb: if you're really motivated, you could come up with a full patch to demonstrate this :)
japhb So for example, if only VC++ is different, you would only specify { win32_other => 'foo.lib', default => '-lfoo' }. Then darwin, win32_gcc, non_win32, etc. all would use 'default'
Infinoid: exactly 02:41
Infinoid japhb++
japhb Infinoid: RL has been getting in the way. If I get lucky, sure. If not, hopefully kid51 understands what I mean now. :-) 02:42
Infinoid no problem, thanks for the help 02:44
tetragon Would there be some provision for temporary flags in the sense of only added on for some platforms during certain tests, with the temporary flags being removed in both cases of failing and passing the checks?
dalek r27173 | infinoid++ | trunk:
: [Ops2c]
: * Make flags() into a hash reference, so we don't have to add a
: little regex parser every time we want to check a flag.
: * Coke++ for the idea and the help.
diff: www.parrotvm.org/svn/parrot/revision?rev=27173
Infinoid I've been too busy in RL to do anything at all this week, until now :)
tetragon: you mean like passing -Werror for the backtrace() test? 02:45
I don't know, but I want it.
tetragon Infinoid: The more specific case for me is '-undefined error' to darwin in the readline test
I need that tacked onto the end of the parameter list so that editline doesn't trick Configure.pl into thinking the system has readline 02:46
Infinoid what's it do?
tetragon -undefined error?
Infinoid is it anything like the -Werror=declaration-after-statement mentioned in RT #50908?
yeah, that 02:47
purl Sure, that.
japhb tetragon: I don't think there currently is such a facility (unless auto::readline implements it as a one-off), but that could be added later. Or auto::readline could subclass the standard methods. 02:48
Infinoid it sounds like a feature we both want 02:49
tetragon '-undefined dynamic_lookup' is passed in the standard g++ flag list on OS X. This tells the linker that undefined symbols are to be looked up dynamically
I hacked together a one-off in #52212
Infinoid oh. in other words, you never get undefined symbol errors from your linker?
tetragon That's right
Infinoid eew!
tetragon I get the errors at runtime 02:50
japhb sheesh
tetragon And by standard list, I mean the parrot standard list
kid51 All tests passed on Linux, so, at the very least, the Infinoid backtrace patch Did No Harm there.
kid51 must sleep
purl $kid51->sleep(8 * 3600);
Infinoid sleep well kid51
tetragon One of the symbols in the readline test is declared in the editline headers but not implimented in the library
Infinoid and its referenced in the test file, which compiles, but doesn't run? 02:51
tetragon Yep
For the past couple of weeks I've been using my patch
Infinoid welp, since kid51 crosses his heart and swears that our backtrace patch is perfect and mindblowingly awesome, I'll check it in 02:52
tetragon The OS X default behaviour is that of '-undefined error' 02:53
Infinoid tetragon: hmm. is there a good reason why parrot shouldn't leave that behavior alone? 02:54
tetragon The options are 'error', 'warning', 'suppress', and 'dynamic_lookup'
I'm not sure why it's touching that flag in the first place
I only see it in compiler lines that use 'c++', not 'cc' 02:55
(although I could have missed a case)
Infinoid I wonder if everything would work fine if we just ripped it out 02:56
tetragon I can always realclean and find where it comes from 02:57
Infinoid maybe it was in there because it was hard to figure out what libs to link against, or their paths or something
dalek r27174 | infinoid++ | trunk:
: [config] Backtrace: Its Not Just For Glibc Kiddies Any More.
: * backtrace() and backtrace_symbol() exist on OSX 10.5 too, with
: compatible prototypes and behavior.
: * Change the Configure.pl description to avoid accusing OSX users
tetragon (config/init/hints/darwin.pm)
dalek : of glibc-ness.
: * Rename the config option from "glibc_backtrace" to "backtrace".
: * Rename the header define from "PARROT_HAS_GLIBC_BACKTRACE" to
: "PARROT_HAS_BACKTRACE".
: * cotto++ for the original idea, kid51++ and tetragon++ for testing.
diff: www.parrotvm.org/svn/parrot/revision?rev=27174
tetragon Well, time to see if it builds without '-undefined dynamic_lookup' 02:59
Infinoid ok :)
I take it that's also passed during configure tests. I'd be curious how many detection results change
tetragon OS X linking is scary enough without that flag
Infinoid hopefully your readline test, at least
tetragon The readline test results don't change 03:00
Two reasons: 1) I pass in the location to readline (not in default search paths) 2) The patch in #52212
Infinoid guess you've already killed that bug sufficiently :) 03:01
hmm, brb.
guacamole &
tetragon Yay, the build failed without '-undefined dynamic_lookup' 03:03
The failure occurred while building libglutcb.bundle
Infinoid that's not at all surprising. Didn't we omit the -lGL (and so forth) for glut on darwin? 03:04
tetragon There still is '-framework OpenGL -framework GLUT', but I don't think that's it
The symols it can't find are _Parrot_runops_fromc_args_event, _PMCNULL, and _do_panic 03:05
Infinoid ooh, _PMCNULL sounds familiar from months and months ago 03:06
tetragon I'm going to try without -j2 03:07
Infinoid ok, but I doubt it will help
tetragon It will result in a more legible set build log
Infinoid _PMCNULL doesn't exist at all, or there were multiple instances of it? (I'm trying to figure out if this is how we fixed a bug last August.) 03:08
tetragon Actually, I haven't reached where the OpenGL code builds, but it looks like omitting -j2 may help with at least one symbol 03:12
Infinoid hmm. if so, that's probably a -j bug 03:13
tetragon But I'll have to wait and see
None of the pmc objects had been built by the time the build of libglutcb was attempted 03:14
japhb tetragon: I wonder if the '-undefined dynamic_lookup' is why you found no difference before when you tried getting rid of the -framework flags ...? 03:15
tetragon japhb: Doubtful. I did the test code at the command line without any flags and it worked.
japhb ah, OK, nm 03:16
tetragon This time it failed during the build of libparrot
The undefined symbols are _environ and _offset_fixup
Infinoid what was the error message from libglutcb? 03:18
it shouldn't matter whether the PMCs were built, but it might need a dependency on one of their header files.
nopaste "tetragon" at 69.196.138.185 pasted "make -j2 opengl ld error" (41 lines) at nopaste.snit.ch/12826 03:19
Infinoid that library will very likely need -lparrot 03:21
japhb hmmm, I wonder if libglutcb.so needs to depend on libparrot.so ...
tetragon _Parrot_runops_fromc_args_event wasn't defined in any of the objects built at that point
japhb Infinoid: both with the -lparrot, and with a make dependency, so -j2 works
Infinoid yeah
this is definitely a difference in behavior. linux ld doesn't care about undefined symbols in shared objects, because there will always be some of those. OSX (without the ultimate-laziness cheat code) seems to be a bit stricter about resolving these at dynlib link time 03:22
tetragon There's also the warning option
japhb Why bother to warn if we won't do anything about it? 03:23
tetragon _Parrot_runops_fromc_args_event is from inter_run.o
japhb I'd prefer to do what it takes to make OS X happy, but barring that, no reason to have a warning appear that we are guaranteed not to do anything about. 03:24
Infinoid now that's optimism 03:30
anyway, it sounds like -undefined dynamic_lookup was a workaround for OS X's strict default shlib linking 03:31
I won't pursue the matter, because I don't want to break platforms I don't actually ever run.
tetragon++ # thanks for the testing
tetragon If parrot is built before the glut code, I think I can get away with using -bundle_loader on it
japhb What does that do? 03:32
tetragon libglutcb.bundle is built as a bundle, and -bundle_loader <executable> tells ld to also check the executable's symbols
Infinoid and presumably, those of the shlibs referenced by the executable 03:33
tetragon Here's the manpage I'm referring to: developer.apple.com/documentation/D.../ld.1.html
shorten tetragon's url is at xrl.us/bjt88
Infinoid interesting. so -bundle_loader is a way of telling OS X, "look, I'm only going to be loading this library from this program over here, so don't complain about any symbols that program defines"? 03:34
out of curiosity, does OS X use ELF executables?
they have changed a surprising amount of stuff about how linking works.
tetragon Not ELF 03:35
tetragon tries to dig out one of the quad-architecture binaries
But it's Mach-O 03:36
Infinoid ok, thanks 03:37
tetragon A document about Mach-O: developer.apple.com/documentation/D...ction.html 03:42
shorten tetragon's url is at xrl.us/bjt9a
03:44 Psyche^ joined
pmichaud yapc::na talks look really good this year 03:55
Infinoid too bad it's 2/3 of the way across the country for me :( 03:59
tetragon: thanks for that link, I understand bundles and frameworks a lot better now 04:00
and I think you're right, -bundle_loader is exactly what OS X would need
04:08 Psyche^ joined
pmichaud that's odd, yapc::na is 2/3rd of the way across the country for me, also :-) 04:09
tetragon Infinoid: OS X can be such fun when combining Unix and OS X conventions and build techniques 04:11
Infinoid pmichaud: are you in california?
pmichaud texas :-) 04:12
my "across the country" is along a different axis than yours
Infinoid ah. well, you have to travel 2/3 of the way across the country just to get across the state line
pmichaud that too
Infinoid :)
pmichaud when I got onto I-20 tonight (on my way to san angelo), it had mile marker 400 04:13
400 miles to the end of I-20
i.e., where I-20 meets I-10
and even at *that* one would still have another 120 miles to go to get out of texas. yeesh
Infinoid I know the feeling. its ridiculous that I can drive 600 miles (from here to San Diego) and still be in the same state 04:14
pmichaud largest mile marker I've ever seen is mile marker 880 on I-10 near Orange, Texas
or, when driving from corpus christi (where I used to live) to Los Angeles, El Paso is half way.
Infinoid heh 04:15
I can't comprehend of that distance. farthest east I've ever been is Phoenix
pmichaud phoenix?!? east?!? ;-) 04:17
tetragon I'm not sure I've been that far west
pmichaud I think the only states I haven't been in are Rhode Island, Connecticut, North Dakota, Alaska, and Hawaii 04:18
and I'm hoping to knock Hawaii out this summer :-)
Infinoid Gentoo is talking about dropping parrot from their tree, since the package is outdated and in need of a maintainer 04:21
I'm not so sure that's a bad thing, considering the general opinion of "oh, we don't really support make install anyway" 04:22
their current package is 0.4.6, which is probably worse than nothing at all
japhb NOD 04:23
pmichaud time for me to get some sleep before tomorrow's symposium
g'nite all
Infinoid sleep well pmichaud
japhb g'nite!
Infinoid that said, I hope we can get the installation stuff sorted out soon, so we can install a nifty looking "perl6" executable that actually works
japhb agreed 04:24
Infinoid I'd work on it, but I've already got the pdd13pbc stuff in my queue :) 04:25
04:26 b2gills left
japhb Long ago I had a job writing InstallShield scripts for Windows boxen. I went insane, only cured by swearing off writing installers. ;-) 04:27
Infinoid wow, that's a good excuse!
mine is pretty threadbare, considering I haven't done anything on pdd13pbc in a week. 04:30
japhb Would you prefer to shave yaks or specs? 04:31
Infinoid I'm a low level coding sort of guy, so implementing .pbc handling PMC classes is right up my alley. 04:34
japhb well there you go 04:35
:-)
Infinoid high level stuff tends to trigger "yak overflow" exceptions in my brain more often
japhb Followed by yakking if exposure persists? 04:36
Infinoid it tends to lead me into things like IMCC, so generally, yes 04:39
*** IMCC defense mechanism engaged, yak exception thrown.
japhb heh 04:43
tetragon Urgh, I found one of the symbols the linker was complaining about lacking when linking libparrot.dylib together 04:52
It's in one of the objects being linked
japhb ?!
tetragon I found an _offset_fixup in exec_dep.o 04:54
I'm even looking at otool's disassembly of it 04:55
I don't think it's being exported 04:57
Unfortunately, knowing how to manipulate export lists in AIX does not automatically mean I know how to do it in OS X 04:58
05:04 Zaba joined
Infinoid is _offset_fixup declared with PARROT_API? 05:20
developer.apple.com/documentation/D...02013-SW18 05:22
shorten Infinoid's url is at xrl.us/bjua4
Infinoid msg tetragon developer.apple.com/documentation/D...02013-SW18 05:24
purl Message for tetragon stored.
shorten Infinoid's url is at xrl.us/bjua4
Infinoid msg tetragon Parrot runs gcc with -fvisibility-hidden, thus, symbols you want to export must be declared with PARROT_API. ...which is defined to __attribute__ ((visibility("default")) 05:25
purl Message for tetragon stored.
Infinoid goodnight all
05:30 tetragon joined
dalek r27175 | coke++ | trunk: 06:08
: remove TODO comment; the opcode it's in is slated for deletion
diff: www.parrotvm.org/svn/parrot/revision?rev=27175
r27176 | coke++ | trunk: 06:12
: Remove old TODO that had nothing TODO.
diff: www.parrotvm.org/svn/parrot/revision?rev=27176
r27177 | coke++ | trunk: 06:27
: [languages/PIR]
: remove some commented out code
: RT #41633 - replace .IMPORT with something more standard.
: (This doesn't make the file work, though, just removes this particular
: piece of cruft.)
diff: www.parrotvm.org/svn/parrot/revision?rev=27177
06:46 IllvilJa joined 07:30 barney joined 08:03 iblechbot joined
dalek r27178 | bernhard++ | trunk: 08:36
: Remove trailing whitespace.
diff: www.parrotvm.org/svn/parrot/revision?rev=27178
r27179 | bernhard++ | trunk: 08:37
: Beautifications in config/gen/crypto.pm
diff: www.parrotvm.org/svn/parrot/revision?rev=27179
r27180 | bernhard++ | trunk: 08:48
: Clean up src/dynpmc/Makefile with -$(MAKE) src/dynpmc realclean
: The main 'realclean' does not depend on languages 'realclean'
diff: www.parrotvm.org/svn/parrot/revision?rev=27180
r27181 | bernhard++ | trunk: 08:52
: [dynpmc]
: Clean up generated *.pmc file.
: No need to clean up 'build.pl'.
diff: www.parrotvm.org/svn/parrot/revision?rev=27181
09:15 Ademan joined
dalek r27182 | bernhard++ | trunk: 09:37
: [Eclectus]
: Add stub for driver_nqp.pir.
: Use string=? for switching between implementations.
diff: www.parrotvm.org/svn/parrot/revision?rev=27182
r27183 | bernhard++ | trunk: 09:57
: [Eclectus]
: coding std for driver_nqp.pir
diff: www.parrotvm.org/svn/parrot/revision?rev=27183
barney going out for a walk, enjoying the sun
10:51 Ademan joined
rafl i wonder if it's possible to somehow get the string representation of a C<Closure> in rakudo. 11:08
on the pir level, that is. 11:09
11:21 ambs joined 11:22 AndyA joined 11:25 Ivatar joined 11:41 rdice joined 12:01 turrepurre joined
dalek r27184 | fperrad++ | trunk: 12:09
: [docs]
: - add language Squaak
diff: www.parrotvm.org/svn/parrot/revision?rev=27184
r27185 | fperrad++ | trunk: 12:12
: [install]
: - add language Squaak
diff: www.parrotvm.org/svn/parrot/revision?rev=27185
12:13 kid51 joined 13:01 ambs joined 13:40 Senaka joined
Senaka ping Coke 13:40
purl I can't find Coke in the DNS.
Senaka Coke: ping
purl: hey 13:41
purl Senaka: i'm not following you...
Senaka seen Coke
purl Coke was last seen on #parrot 11 hours and 55 minutes ago, saying: latter
Senaka Coke: good to see the issues in fixing the warnings
there are a lot of them
msg Coke good to see the issues in fixing the warnings. there are a lot of them 13:42
purl Message for coke stored.
13:42 Senaka left 13:44 mire joined 14:38 gryphon joined 14:57 jan joined 15:21 ruoso joined
pmichaud rafl: (string representation of closure in rakudo) you mean you want the PIR source? 16:13
rafl pmichaud: no. I have a Closure object (the condition attribute of an Subset object) and want a string that describes it. similar to B::Deparse::coderef2text. 16:16
pmichaud rafl: no, we don't have anything like that in Rakudo yet. Don't know when/if we will. :-) 16:18
rafl pmichaud: i wanted to improve the typecheck error messages. do you think i should commit that even if it can't tell anything useful if subtypes are involved? 16:21
pmichaud might check with jonathan about it 16:24
Tene Hm, I've got a free hour... any parrot-related requests? 16:27
barney Yes. I have a NQP reuest. Trailing comma in sub calls. Like: eleven( 'dummy', ); 16:30
Tene grabs an editor and springs into action! 16:31
16:32 guru joined
barney Looking a rule 'signature' in nqp/src/Grammar.pg I expected trailing commas to be allowed 16:32
Tene barney: signature is for defining a sub, not calling it. 16:34
Patterner "make distclean" removes "languages/eclectus/driver_nqp.pir" which is in the MANIFEST and Configure.pl complains bitterly...
Tene barney: the rule you want to look at is arglist, which just contains a single EXPR 16:36
barney Tene: Yes, I saw that too now, so it's <arglist>
Tene Which is an optable
The commas come from infix:,
It would be possible to just add a \\,? to arglist, but that's awkward enough that I'd want to ping pmichaud about it first. 16:37
japhb kid51: ping 16:38
barney Pattener: I'll look into that
Tene pings pmichaud
pmichaud I'd look at how it currently parses 16:40
Tene pmichaud: the ,s are infix:<,> inside of EXPR 16:41
pmichaud tene yes, but is there an empty node at the end? 16:42
iirc, the optable is supposed to be able to handle that
Tene with trailing , it gives: statement not properly terminated
pmichaud okay, that tells me a bunch 16:43
I _think_ that it can be fixed by just adding a 'is nullterm' trait to infix:<,>
Tene I'll try it.
seems to work. 16:44
pmichaud "is nullterm" means that the last term in an infix operator is optional
Tene make test passes.
pmichaud probably need a test for it, too :-) 16:45
Tene Hm.
> say('test',);
No result object
So it doesn't seem to work, actually.
Tene digs. 16:46
pmichaud I'm curious about how it parses in that case
Tene will nopaste 16:47
pmichaud hmmm 16:48
'test', is creatting a null operand
nopaste "tene" at 166.70.38.237 pasted ", parse" (61 lines) at nopaste.snit.ch/12829
dalek r27186 | bernhard++ | trunk:
: [Eclectus]
: Do not clean up 'driver_nqp.pir', it's in the repos.
diff: www.parrotvm.org/svn/parrot/revision?rev=27186 16:49
r27187 | jkeenan++ | trunk: 16:50
: Specify exact number of tests in plan.
diff: www.parrotvm.org/svn/parrot/revision?rev=27187
pmichaud yeah, [1] => PMC 'NQP::Grammar' => "" @ 6
that looks like an OPTable bug
I'm also curious how STD.pm handles it 16:52
dalek r27188 | bernhard++ | trunk: 16:58
: [Eclectus]
: Emit slightly saner NQP-code for setting up PAST.
diff: www.parrotvm.org/svn/parrot/revision?rev=27188
pmichaud I don't know if STD.pm handles it yet
but it looks like an OPTable bug in PGE to me 17:00
kid51 japhb: pong 17:01
Zaba what is NQP?
purl NQP is not quite perl (6)
Zaba heh.
PerlJam good afternoon 17:02
Zaba moin PerlJam
PerlJam pm: Are you in San Angelo?
pmichaud purl, NQP is also svn.perl.org/parrot/trunk/compilers/nqp
purl okay, pmichaud.
pmichaud pj: yes, in San Angelo now 17:03
pj: why aren't you here?!? :-)
dalek r27189 | jkeenan++ | trunk:
: Eliminate one test repeated from this step's '-01' test file.
diff: www.parrotvm.org/svn/parrot/revision?rev=27189
PerlJam pm: I almost went, but kids and wife want me here more :) 17:04
pmichaud pj: I brought my wife with me :-)
PerlJam I could've brought the whole clan except Jazmine (she had a chior performance today) 17:05
But, she's not quite old enough to drive herself around or take care of herself :)
pmichaud time for lunch here 17:06
japhb kid51: sorry, got pulled away ... and now getting pulled away again. Will try again later. 17:08
kid51 See your comment. I actually did mean 'wordspace', not 'whitespace' -- because I don't know how tabs would work. Would 'single whitespace' be clearer? 17:09
Tene Hmm... OPTable.pir:463 17:13
nopaste "pmichaud" at 72.18.170.67 pasted "tene: try this patch for infix:<,>" (25 lines) at nopaste.snit.ch/12830
17:13 tetragon joined
pmichaud lunchtime, gone 17:13
Tene ## we have an unbalanced open, so error. remove the
## incomplete circumfixed term, and for circumfix: opers
## put a failed nullterm onto the termstack
pmichaud: works 17:15
17:18 davidfetter joined
dalek r27190 | jkeenan++ | trunk: 17:19
: Eliminate one test repeated from this step's '-01' test file.
diff: www.parrotvm.org/svn/parrot/revision?rev=27190
17:20 cognominal joined
dalek r27191 | bernhard++ | trunk: 17:22
: [Eclectus]
: Delete outdated comments.
diff: www.parrotvm.org/svn/parrot/revision?rev=27191
Tene Hm. svn.perl.org/account won't load for me, so I can't get my svn password 17:25
barney Works for me 17:27
Almost, till I want to see my password 17:28
Tene know where the password is stored on disk? 17:30
I could dig it out of the cache on my old laptop
17:31 schmalbe joined
schmalbe was barney 17:32
Tene know where the password is stored on disk?
purl i already had it that way, Tene.
schmalbe I found ~/.subversion/auth 17:34
Tene ahh, .subversion, not .svn.
The only place in all of svn where "subversion" is used.
I wonder if this fix should be ported to rakudo too. 17:36
dalek r27192 | tene++ | trunk: 17:38
: Allow trailing commas in lists for NQP.
: barney++
diff: www.parrotvm.org/svn/parrot/revision?rev=27192
r27193 | bernhard++ | trunk: 17:41
: [nqp]
: Add test for trailing comma in sub call.
diff: www.parrotvm.org/svn/parrot/revision?rev=27193
Tene schmalbe: Thanks. I was just about to ask you to do that. I'm just about to leave. 17:43
schmalbe tene++ pmichaud++ leaving too 17:44
dalek r27194 | fperrad++ | trunk: 17:58
: [inno]
: now, use Parrot::Config
diff: www.parrotvm.org/svn/parrot/revision?rev=27194
rillian um, how does one debug nqp? 18:03
I'm getting: method 'get_scalar' not found for invocant of calls 'Undef' 18:05
er, class 'Undef'
which is fine, but it would be nice to know which class is Undef'd
'print' doesn't seem to work
18:09 skids joined 18:14 Theory joined, Coke joined
pmichaud rillian: can you nopaste the source? (yes, rakudo and much of parrot needs better error reporting) 18:15
note that in NQP all function calls (including 'print') require the parens.
rillian ah. print() compiles, but I get 'Null PMC in invoke()' 18:18
rafb.net/p/QgppfF73.html 18:20
part three of the squaak tutorial on parrotblog.org
Zaba squaak?
purl squaak is, like, languages/squaak or the language in kj's tutorial at parrotblog.org or svn.perl.org/parrot/trunk/languages/squaak/
18:23 AndyA joined
pmichaud oh, NQP doesn't have a 'print' 18:23
try say("...");
Zaba pmichaud, what's NQP?
pmichaud NQP == "Not Quit Perl" 18:24
er
"Not Quite Perl"
Zaba what is it for?
pmichaud svn.perl.org/parrot/trunk/compilers...README.pod
rillian pmichaud: ok thanks. need to revert an svn update first... 18:25
Zaba oh, I see.
rafl pmichaud: ok, thanks. 18:35
rillian what does ~$/ do? 18:37
dalek r27195 | chromatic++ | trunk: 18:40
: [src] Added slice-handling code to key_integer(), which fetches the integer
: index from a Key or Slice PMC. This cleans up a warning (RT #53356, Will
: Coleda) and implements a TODO.
diff: www.parrotvm.org/svn/parrot/revision?rev=27195
rillian ah, coerces to a string 18:47
dalek r27196 | infinoid++ | trunk: 18:48
: [t] Fix sysinfo to check against sizeof(INTVAL), not against sizeof(int).
diff: www.parrotvm.org/svn/parrot/revision?rev=27196
rillian ah, I also get a stack trace if I don't run interactively. that helps 18:52
19:05 donaldh joined
dalek r27197 | infinoid++ | pdd13pbc: 19:16
: [merge] Merge changes from trunk (-r27012:27196) into pdd13pbc branch.
diff: www.parrotvm.org/svn/parrot/revision?rev=27197
Infinoid dalek++ # that sooo would have killed svnbotl
19:19 guru joined 19:27 paco joined
dalek r27198 | pmichaud++ | trunk: 19:30
: [nqp]:
: * Clarify that perl6 === Rakudo in README.pod .
diff: www.parrotvm.org/svn/parrot/revision?rev=27198
20:08 ambs joined 20:22 mire joined 20:54 tetragon joined 20:57 kid51 joined 21:07 mire joined 21:08 mire joined
tetragon I took a quick look at the backtrace code used by parrot when it crashes. I get all the symbols if I uncomment "#define BACKTRACE_VERBOSE" in exceptions.c 21:15
And how do I retrieve messages from purl? 21:16
pmichaud tetragon: /purl messages
tetragon: er, /msg purl messages
and also /msg purl messages help
tetragon pmichaud: I've retreived them. Purl didn't like my phrasing when I asked how to retrieve them 21:17
kid51 I find I get better results with this, called from #parrot: /q purl messages 21:18
That opens a private room to have a chat with purl
And then in that window you can say: messages erase
nopaste "tetragon" at 69.196.138.185 pasted "Nifty backtrace with BACKTRACE_VERBOSE defined" (15 lines) at nopaste.snit.ch/12832 21:19
tetragon Hrm... Looks like the existing backtrace code relies upon glibc formatting of the trace 21:21
21:24 Zaba_ joined
tetragon I now have it displaying the symbol names on OS X 10.5, but the code my change is a bit fragile looking 21:30
21:31 slightlyoff joined 21:34 Zaba joined
nopaste "tetragon" at 69.196.138.185 pasted "Nifty backtrace with symbols and OS X 10.5 patch" (33 lines) at nopaste.snit.ch/12833 21:35
Infinoid oh, my, that does look fragile 21:37
tetragon Yes, I did count the characters in Apple's fixed-width format to get 50
PerlJam tetragon: you should replace 50 with MAGIC_APPLE :) 21:38
Infinoid "Magic is stored in native byteorder." -- parrotbyte.pod
comforting, huh
tetragon PerlJam: I don't have a 64-bit box at home, and I think the offset would be different on them
Infinoid probably 21:39
purl Really? Probably? Are you Certain it's not certain? Are you sure it's unsure? I think you need to look harder.
Infinoid might be better to search for 0x and then the next space...
or it might be better to just let the OS tell it what it wants, and pass it directly to the user, for both glibc and OSX.
tetragon And that works until someone with a sick sense of humour creates the symbol foo_0x000_bar 21:40
Or we could just add a configure test
PerlJam tetragon: search for " 0x" and then the following space 21:41
Infinoid hacks upon hacks :)
tetragon I'm thinking of column counting, instead
PerlJam are you sure it's always going to be the fourth column? 21:42
tetragon I have yet to see a counterexample
The issue is that backtrace_symbols goes for human-readable, not machine-parsable
PerlJam machines can parse anything given sufficiently smart humans to write the parser :) 21:43
tetragon May be simpler to just ignore backtrace_symbols and use dladdr
Infinoid (machine-readable approach)++ 21:44
PerlJam: the problem is, the humans available in 2008 aren't smart enough to anticipate weird things Apple (or GNU) will throw at it in 2012
I don't really have a problem with taking the human-readable output given by backtrace_symbols() and reporting that to the user directly, in its entirety 21:46
21:46 Zaba joined
tetragon You get that if you define BACKTRACE_VERBOSE 21:46
Infinoid ...but if we do want a reliable way to get the function name, dladdr() is a far more sane approach than parsing backtrace_symbols() is
I'm confused. I'm trying to learn the .pbc file format as it exists in parrot today, but docs/pdds/pdd13_bytecode.pod isn't it. and surprisingly, docs/parrotbyte.pod doesn't seem to be it, either. 21:52
I'm just getting started on this, but so far judging from the output of hexdump, the specs have more in common with eachother than either has in common with reality
on glibc, half of the backtrace entries are missing the symbol name anyway, so your output looks better than mine 21:57
the undefined ones look like this: /work/parrot-dev/parrot-trunk/blib/lib/libparrot.so.0.6.1 [0x2b91c6cb2fcc]
normal ones look like this: /work/parrot-dev/parrot-trunk/blib/lib/libparrot.so.0.6.1(Parrot_confess+0x41) [0x2b91c6cb2fa1]
22:07 Psyche^ joined
japhb Manifest errors in configure: 22:17
Checking MANIFEST...No such file: languages/squaak/examples/life.sq
No such file: languages/squaak/MAINTAINER
No such file: languages/squaak/t/01-math.t
(fresh pull from head a couple minutes ago)
Is someone working on squaak right now? 22:18
kid51 IIRC I saw someone working on squaak yesterday or today.
japhb Ah good, you're here. 22:19
I want to add a new gen:: config step. Any special things you want me to do to make you happy (well happier) with the patch?
kid51 for a few minutes more
What would it do? 22:20
japhb Instead of using a static call_list.txt, concatenate it from snippets; that way, a Parrot not containing something humongous (like say OpenGL) need not generate stubs for the 250 NCI signatures it won't ever use. 22:21
Plus, I'm going to be generating those ~250 sigs from system headers, so I would have to merge them into call_list.txt somehow, might as well generalize the process. 22:22
thoughts? 22:23
purl i like cheese
japhb purl, go to sleep
purl japhb: excuse me?
kid51 I actually haven't done very much work in the 'gen' step classes. If you looked at the corresponding t/steps/gen_*.t tests, you'd see they're mostly stubs. So in turns of keeping *me* happy, all you'd have to do is include a stub test file. But this is a case where I recommend filing an RT so that others can evaluate what would be the pluses and minuses of adding this step. 22:24
japhb I was planning to. 22:25
kid51 I just don't like to wake up in the morning and find out that someone has added a new config step without discussing it on list first.
japhb well all right then. :-)
kid51 But I don't have fixed opinions as to what should be in or not in the config system. My own objective is more modest: that what's in it should have well tested Perl 5. 22:26
So that if we move to different ways of running the config system, we'll have tests to remind us of all we've broken ;-) 22:27
Other than the whitespace/wordspace thing, are you satisfied with _add_to_libs()? 22:28
gotta go now 22:38
23:13 teknomunk joined
japhb msg kid51 yes, you said all tests passed, the structure looks good, and the triangle still spins for me, so the _add_to_libs patch is +1 from me. 23:15
purl Message for kid51 stored.
23:26 guru joined 23:33 cognominal joined 23:56 Theory joined