Parrot 1.3.0 "Andean Swift" released | parrot.org | YAPC10 Parrot Implementers BOF: Dowd Room, 2nd floor, 5:00 pm
Set by moderator on 22 June 2009.
bacek_ time to go to $dayjob. 00:01
Infinoid msg cotto Great group photo! needs labels tho, who is who? :) 00:07
purl Message for cotto stored.
00:18 Limbic_Region joined
Infinoid I think top row #2 is jkeenan/kid51 00:22
and I think bottom row #5 is jhorwitz
Coke yes. 00:28
oddly, top #1 looks a bit like me.
dalek rrot: r39729 | coke++ | branches/context_pmc (5 files):
Remove Parrot_context_ref_trace & CTX_LEAK_DEBUG
00:29 s1n_yapc joined
Infinoid The only parroteer I've met in person is particle, and that was unfortunately very brief 00:29
00:42 japhb joined 00:48 wayland76 joined
dalek rrot: r39730 | coke++ | branches/context_pmc (4 files):
Add (unused) Context PMC
00:51
mikehh bottom row #1 Bruce Grey/Util I think #2? 00:53
Infinoid ah, cool 00:54
mikehh is that cotto (or did he just take the picture?) 00:55
Coke I think that's cotto, yes.
mikehh sorry Gray 00:56
Infinoid Coke: So is that you, or just a doppelganger? 00:58
dalek tracwiki: v2 | bacek++ | Yapc10Bof 01:01
tracwiki: Start describing group photo based on IRC discussions :)
tracwiki: trac.parrot.org/parrot/wiki/Yapc10...ction=diff
mikehh So that gives us -> Coke, kid51, chromatic, whiteknight / Util, cotto, pmichaud, particle, jhorwitz
bacek (someone have to finish it)
Coke mikehh: no, that's not me.
it just looks vaguely like me.
Infinoid s/Coke/unCoke/ 01:02
dalek tracwiki: v3 | Infinoid++ | Yapc10Bof 01:07
tracwiki: I think these are right... apologies if I'm wrong!
tracwiki: trac.parrot.org/parrot/wiki/Yapc10...ction=diff
Infinoid Free karma for whoever gets the other two :) 01:08
01:17 Maddingu1 joined, GeJ joined 01:38 s1n_yapc joined 01:44 guru joined
dalek TT #502 reopened by coke++: [PATCH] build on OpenBSD/ppc 01:46
01:56 wayland76 joined, amuck joined 01:58 amuck__ joined 02:10 amuck joined 02:21 amuck joined 02:53 rg joined 02:54 amuck joined 02:56 guru left 02:58 cotto joined
cotto wb me 02:58
darbelo++ #generated tests 03:00
darbelo++ #generated tests that fail
darbelo++ #generated tests that fail, but will eventually pass
03:01 wayland76 joined
cotto Infinoid, the pictures are labeled 03:03
dalek tracwiki: v4 | cotto++ | Yapc10Bof 03:05
tracwiki: trac.parrot.org/parrot/wiki/Yapc10...ction=diff
TT #734 closed by jkeenan++: Branch cleanup: pdd30_install 03:19
nopaste "tene" at 24.10.252.130 pasted "gl-devel libs for japhb++" (7 lines) at nopaste.snit.ch/17005 03:22
03:24 amuck joined
dalek rrot: r39731 | cotto++ | trunk/lib/Parrot/Pmc2c/PMCEmitter.pm:
[pmc2c] aggregate a couple adjacent heredocs
04:01
04:07 s1n_yapc joined 04:25 Theory joined
dalek rrot: r39732 | cotto++ | branches/pmc_pct/compilers/pmcc/src/parser/grammar.pg:
[pmcc] get a nice increase in parsing speed by capturing more than once character at a time from C function bodies
04:41
japhb Tene: we have different versions, but the only difference in package *names* is that I had mesa-libGLw-devel installed. I'm not sure that should matter at all. 04:43
dalek rrot: r39733 | cotto++ | branches/pmc_pct/compilers/pmcc/src/emitter (2 files):
[pmcc] emit more of class_init and some (probably broken) VTABLE function bodies
04:44
japhb Tene: My next thought is that you are running nVidia proprietary drivers, aren't you? If so, on Debian at least, you have to have the (exactly) matching nvidia-glx-dev package. Version skew or using just the Mesa -dev packages alone won't work. 04:47
Tene: There may be a similar issue on Fedora. (I can't tell, because my only Fedora box has ATI hardware.) 04:48
Tene I am using nvidia proprietary
lemme change that
dalek rrot: r39734 | cotto++ | branches/pmc_pct/compilers/pmcc/src/parser (2 files):
[pmcc] parse some more PMC traits
04:54
04:55 jq joined
Tene japhb: okay, I got my system in a situation where Parrot's GL works. 05:05
japhb: I've got X running under nouveau.
glxinfo reports direct rendering: No and OpenGL renderer string: Software Rasterizer
05:07 flh joined
japhb Interesting 05:27
Tene: But this is a step forward, in that we can rule out "completely fubar". And in fact it sounds like things are narrowed down to the combination of driver and devel packages. 05:28
Tene: What method did you use to install the nvidia proprietary packages?
05:41 mikehh joined 06:03 uniejo joined
Tene japhb: rpmfusion 06:05
what did you use?
bacek cotto: are you sure that r39732 didn't break t/06-body.t? 06:08
japhb Tene: I've used both the Debian packages, and the nvidia self-extractor. I vastly prefer the Debian packages, but Debian has a systemic problem with not keeping past package versions, and sometimes the latest one is unusable on my card, and then I have to use some older nVidia self-extractor. But I haven't yet figured out how to get the nVidia scripts to install the proper -dev bits, so then I'm SOL trying to compile Parrot with OpenGL b 06:09
indings then ...
Tene: does RPMFusion have -devel packages for the nVidia drivers?
Tene um, dunno 06:11
nopaste "tene" at 24.10.252.130 pasted "yum search nvidia for japhb++" (66 lines) at nopaste.snit.ch/17006
japhb nVidia: Your "unified driver" is failing to remain unified. By any stretch of the imagination. 06:13
Tene which should I install? 06:14
japhb It looks like "xorg-x11-drv-nvidia-devel" 06:15
Assuming you are using "xorg-x11-drv-nvidia-libs" along with the kmod
nopaste "tene" at 24.10.252.130 pasted "rpm -qa '*nvidia*' for japhb++" (12 lines) at nopaste.snit.ch/17007 06:18
japhb OK, 185 is the current series, so you should be able to use xorg-x11-drv-nvidia-devel and xorg-x11-drv-nvidia-libs (if they work anything like the Debian equivalents, they're either virtual packages or release-tracking packages, either way they should work) 06:22
I will say, though, that 185.18.14 is the release that refused to work on my poor laptop's card (an m7800) 06:23
Tene: Any luck with the installs? 06:37
Tene afk phone 06:38
japhb k
06:48 clunker3 joined 06:59 magnachef joined 07:02 iblechbot joined 07:49 barney joined 08:28 donaldh joined 08:31 masak joined 08:43 clinton joined 09:10 wayland76 joined 09:18 bacek_ joined
bacek_ o hai... 09:24
Infinoid good morning 09:58
purl And good moroning to you, Infinoid.
bacek_ good moroning, Infinoid
Infinoid purl is always so negative 09:59
bacek_ Almost all girls are same. 10:00
dalek rrot: r39735 | bacek++ | branches/tt761_keys_revamp/lib/Parrot/Pmc2c/Method.pm:
[pmc2c] Fix handling trailing spaces in "void" MULTIs.
10:09
rrot: r39736 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
[pmc] Migrate Hash.set_integer_keyed(_something)? to "brave new world".

Use hash_key_from_TYPE and hash_value_from_TYPE instead of blind cast to void*.
10:12
rrot: r39737 | Infinoid++ | trunk/compilers/imcc/pbc.c:
[cage] c_parens.t fix.
bacek_ discovered that he has registered at identi.ca more than year ago... 10:15
10:18 mikehh joined
mikehh infinoid: was just about to paste a patch, but you already fixed it 10:19
manifest also needs regenerating
nopaste "Infinoid" at 65.18.171.17 pasted "Serious I/O breakage" (20 lines) at nopaste.snit.ch/17009
Infinoid I got that joyful behavior after turning line buffering on for stdout 10:21
Note that the handles in question have nothing to do with stdout.
mikehh codetest, manifest_tests FAIL, All others PASS make fulltest r39734 10:22
Ubuntu 9.04 i386
bacek_ Infinoid: looks like issue that Whiteknight described couple of days ago.
Incorrect order of destruction
Infinoid bacek_: What, between FileHandle and Handle? hmm, could be 10:23
mikehh: If you have a manifest patch, I'll apply it. I'm using git here, so the manifest scripts fail
I particularly love the way it tries to flush stdin 10:24
bacek_ I'm not sure that it is stdin. It's in forked child afaik 10:25
nopaste "infinoid" at 65.18.171.17 pasted "[patch] line/block buffering for stdout" (62 lines) at nopaste.snit.ch/17010 10:26
Infinoid src/io/unix.c assumes it is stdin
mikehh # Failed test 'No need to regenerate MANIFEST.SKIP'
Infinoid if it were an output handle, the kernel wouldn't have returned EINVAL
bacek_ ah, ok. 10:27
Infinoid msg Whiteknight I tried turning on line buffering for stdout to see if it had a performance impact, and ran into what looks like another ordered destruction issue with FileHandle and Handle. See nopaste.snit.ch/17010 and nopaste.snit.ch/17009. You saw this a couple of days ago, how did you fix it?
purl Message for whiteknight stored.
mikehh infinoid: I see the mystery Coke lookalike was Austin_Hastings 10:29
somewhat obscured by Util 10:30
Infinoid cool
I noticed that by default, parrot's stdout handle has a 0-sized buffer. I'm not sure if all FileHandles are like that or if stdout is a special case, but I figured stdout should have an impact on the test suite runtimes. 10:32
bacek_ It definitely should 10:38
10:42 wayland76 joined 11:00 JC1 joined 11:05 guru joined
dalek rrot: r39738 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
[pmc] Implement hash_value_to_number. Slightly refactor get_number_keyed_TYPE to use it.
11:14
rrot: r39739 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
[pmc] Implement (get|set)_value_type in Hash.
bacek_ *incoming*
dalek: hey. One more commit! 11:18
:)
dalek rrot: r39740 | bacek++ | branches/tt761_keys_revamp/t/pmc/hash.t:
[t] Add tests for storing different value-type in Hash.
Infinoid racey bot 11:19
bacek_ good bot :)
purl :)
bacek_ purl: not you!!!
purl Whatever.
Infinoid <purl--> # dork 11:21
11:21 donaldh joined
bacek_ start loving Hash implementation in Parrot. 11:21
It was made by some very clever guy!
O wait...
11:22 szabgab joined
Infinoid uh. I don't think this is an ordered destruction issue, Whiteknight didn't actually check in his filehandle-encapsulates-handle patch 11:23
bacek_ hmm...
Infinoid: time to use power of gdb and check who call fsync on closed handle. 11:24
11:26 s1n_yapc joined
Infinoid Working on that. There are actually a few issues here 11:26
For instance, if the file ever drops off (stale nfs handle, for instance), PIO_WRITE returns -1 in Parrot_io_flush_buffer(), and parrot will repeatedly toss the same exception until it runs out of stack 11:27
bacek_ oh shi... 11:28
bacek_ passing famous book by Stevens to Infinoid 11:30
11:32 guru left
Infinoid I've been thinking about detecting multiple exceptions of the same type from the same place and handling the double-fault differently (and not using pio for that) 11:33
But that's a separate patch
11:33 burmas joined
Infinoid (and currently just vaporware) 11:34
11:35 davidfetter joined
bacek_ It's... not easiest thing in the world. 11:38
Infinoid the only difficult part I see is differentiating recursive exceptions from serial exceptions 11:40
because we're calling these things as continuations, I can't just wait for it to return 11:41
or maybe I can. But it means I need to understand PCC better than I currently do :)
11:44 Whiteknight joined
bacek_ actually there is 2 problems 11:47
Infinoid Whiteknight: I made you a purl msg, but then I realized I'm an idiot, nevermind :)
bacek_ "ex_throw_from_c" doesn't unwind C stack.
Whiteknight yeah, I have that "I'm an idiot" realization multiple times per day
...and there's purl!
bacek_ second: there is no stack in Parrot :_
Whiteknight bacek_: there is 1 stack left
Infinoid bacek_: Right, so I'd have to use a global. Which means I couldn't detect flipflopping exceptions 11:48
Whiteknight deprecated in 1.5
Infinoid Whiteknight: We're talking about detecting recursive exceptions and implementing a failsafe double-fault handler
bacek_ Whiteknight: I'm from future :)
Infinoid When PIO_WRITE returns -1 in Parrot_io_flush_buffer(), parrot repeatedly tosses the same exception until it runs out of stack 11:49
That's happened a few other times, so I was thinking it would be nice to be a little smarter about that
But it isn't easy :)
11:49 jdv79_ joined
Infinoid Then again, it's perfectly ok if handling one kind of exception raises another one 11:50
Whiteknight Infinoid: what's important is that an infinite problem of exceptions causes parrot to exit, not recurse and segfault
Infinoid yes, preferably with a nasty looking message that tells you where to fix it 11:51
Whiteknight very very nasty messages
Parrot: exception b0rked. STFU and fix it!
Infinoid So the problem I have messing with PIO is, the exception message emission uses PIO 11:52
but a similar case can probably happen with broken encoding plugins
I'd really love a failsafe handler that just falls back on stderr, prints the message if it can, and CANNOT fail
that means... does not call PCC, does not allocate memory, nothing fancy at all 11:53
all of that is fine. But how do you detect when the previous exception handler has exited? 11:54
I want to disambiguate between recursive exceptions and serial exceptions
s/exited/returned/ 11:55
bacek_ Infinoid: welcome to C++ world! :)
All this issues were solved many years ago... 11:56
Whiteknight Infinoid: it is quite a problem
...in a galaxy far far away...
Infinoid I didn't think C++ used continuations, so I'm not quite sure they solved this 11:57
Ok, I'm clueless. I need to understand how parrot calls exceptions better, and then I will revisit this
Whiteknight yeah, we could all use a better understanding of it 11:59
Infinoid In the meantime, I'll see if I can fix up this stdout buffering patch, while waiting for the verizon installation guy 12:00
Whiteknight apparently Allison implemented the current system, so you can prbably put any questions past her
Infinoid Do you happen to know if FileHandles buffer by default? Because stdout doesn't 12:01
Whiteknight Infinoid: what about a linked-list of exceptions (not a stack) and when we reach a list with duplicates or a list above size N, we just exit 12:02
I have no idea about the default settings, I still need some research
that patch I sent you for io_cleanups is very out of date now, I would need to send an update
brb, breakfast
Infinoid oki
back later & 12:06
12:08 jdv79 joined 12:20 Whiteknight joined 12:25 skids joined 12:36 Whiteknight joined 12:37 cotto joined
cotto bacek, ping 12:37
bacek_ cotto: pong
cotto bacek_, in pmcc, is there any reason not to slurp up a VTABLE function's body and apply a bunch of regexes to do SELF.add_int-><dtrt> instead of the current approach? 12:38
Having files parse in .5s instead of 5s is a nice change. 12:39
bacek_ I know... But it's failing badly... 12:40
Ok. Our current approach is wrong.
cotto btw, that test does fail. I'll dedicate some time to fixing valid failing tests (which includes most or all of them) before the end of YAMP.
bacek_, how so? 12:41
bacek_ But re-implement pmc2c approach is wrong either.
afk_coke yamp?
Coke yamp?
cotto The code does seem a little convoluted.
bacek_ cotto: look, we don't have to parse current PMCs. 12:43
We have to parse some L1HIGH language.
12:44 Whiteknight joined
bacek_ From which we can emit C code semantically equivalent to current PMCs pseudo-C code. 12:44
cotto bacek_, right. My approach is to do minimal parsing for current PMCs such that we *can* later add different parsers for VTABLE (etc) function bodies. 12:45
actually my current approach is just to spit out code similar to what pmc2c does. I should probably give extensibility some thought at some point.
bacek_ than just use bunch of regexes stolen from pmc2c to replace stuff in. 12:46
stuff in bodies.
12:47 whoppix joined
cotto yeah. That'll be enough for now, as long as the code that deals with function bodies is reasonably well encapsulated. 12:47
bacek_ I propose to steel "subst" from rakudo to do this
erm...
steal
cotto Is that different from the substr opcode?
masak yes. 12:48
bacek_ "substr" do plain string substitution
masak substr does substrings.
subst does substitutions.
bacek_ "subst" - regexp based
cotto sounds handy
very handy
bacek_ implemented by masak. O wait.
masak well, parts of it. 12:49
purl parts of it are in English
masak purl: parts of you are very annoying.
purl OK, masak.
12:49 s1n_yapc joined
bacek_ masak: it's good part. And probably will be enough for pmcc. 12:50
masak \\o/ 12:51
what's pmcc again? :) 12:52
bacek_ PMC compiler written in PCT 12:53
like... Baron Munhgauzen pulling himself 12:54
cotto bacek++
12:54 cognominal joined
masak ooh, nice. 12:56
so the first time you compile that, you need something to bootstrap?
bacek_ masak: indeed. But we can commit "previously generated C files" to svn. Similar to bison/flex files 12:57
masak ah. nice.
masak likes bootstrapping in all forms 12:58
bacek_ thinking about using STD.pm in "bootstrapped rakudo" :)
pmichaud Good morning #parrot 12:59
bacek_ good mor^ localtime(), pmichaud
13:02 gryphon joined
mikehh snap - how's YAPC 10 etc goin' 13:08
13:10 wayland76 joined
wayland76 Here I am on #parrot 13:10
pmichaud suggested we continue a conversation about both Rakudo and Parrot“s install processes here.
pmichaud 13:08 <wayland76> My hope all along has been to make the Rakudo install process use any relevant and useful bits from the parrot install process 13:11
I agree with that to some extent
But I don't want HLLs to be limited to using Parrot's build tools
wayland76 No, of course not
I“m just too lazy to write my own :)
pmichaud for example, I have strong disagreements with the structure of gen_makefile (and the Makefiles it generates)
wayland76 All I wanted was the MANIFEST part
pmichaud I have lesser disagreements there :-) 13:12
wayland76 Yeah, I agree
But did you notice the recent refactor that kid51 and I did?
(recent = within the last month or so, I think) 13:13
Infinoid My $0.02: Rakudo is currently the only HLL which builds and tests successfully against a (non-installed) parrot build tree, I've been wishing other HLLs did
pmichaud basically my issue is that if the standard in Parrot is that HLLs are supposed to use parrot tools for their own local build/install process, then Parrot's tools need an official API, documentation, etc.
mikehh pmichaud: where would you like gen_makefile to go?
pmichaud mikehh: I'd like us to supply a prototype gen_makefile that HLL implementors can then customize
I don't want to be constrained to use the gen_makefile that is in Parrot's install 13:14
mikehh sounds good - what's involved in that
pmichaud This is what rakudo (and create_language.pl) currently do --they provide a generic gen_makefile when creating the language directory (more) 13:15
wayland76 pmichaud: Were you thinking of something like lib/Parrot/Install.pm ? :)
pmichaud wayland76: how do you mean?
wayland76 pmichaud: That“s got an API and documentation, and it“s the part that I want to call from Rakudo. If the functions in there are called with the right parameters, it can read in a MANIFEST, and put the files wherever you“ve specified 13:16
pmichaud how much freedom is there in "put the files wherever you've specified"? 13:17
wayland76 Lots, I think. The only things that call it at the moment are tools/dev/install_files.pl and tools/dev/install_dev_files.pl 13:18
And they do things like pass in data structures that contain transformation functions that get run on the path
pmichaud anyway, the actual copying of files isn't the current blocker for this. 13:19
wayland76 (this is for the stage that“s roughly equivalent to ¨make install¨)
pmichaud so if the issue is handling of MANIFEST and where to place files.... that's not really been a blocker for me (and so I haven't thought about it much) 13:20
wayland76 Well, that“s the thing I“m interested in
pmichaud okay.
wayland76 It“s needed for packaging
pmichaud sure.
but we also need to be able to _build_ the files to be installed in the first place. :-) 13:21
wayland76 Of course. But I claim no expertise there, I“m afraid :)
pmichaud okay.
it's the "build and test" phase of dealing with an installed parrot that's the major issue for me at the moment. What happens after that stage I've not thought as much about (or worried too much about) 13:22
wayland76 kid51 was saying you don't like the current Parrot MANIFESTs because they move things around too much
pmichaud that's not really what I was saying 13:23
my complaint is that the build tree doesn't look _anything_ like the install tree
wayland76 I'll try to remember to test tomorrow morning whether building the Rakudo RPM against an installed Parrot RPM works for me
pmichaud: Yes, that's what he actually said. It was me that misinterpreted you :) 13:24
pmichaud things would be a lot simpler if I didn't have to constantly remap paths based on whether we're working from a build-copy of Parrot versus an install copy of Parrot
for example
to use NQP I have to have my makefile be smart enough to look in either compilers/nqp/nqp.pbc or lib/parrot/1.3.0/languages/nqp/nqp.pbc 13:25
wayland76 I never work from a build-copy, I guess, so that's why I haven't run into this :)
pmichaud Developers (and people who are using more recent copies of rakudo) want to be able to test Rakudo without installing it :-)
wayland76 Yes, I know that. I just get the SVN, and turn it into RPMs, and install them :) 13:26
moritz shouldn't the solution be a parrot opcode (or PMC or whatever) that makes it load NQP (so that it doesn't have to appear in any Makefile)?
wayland76 But I can accept that not everyone works that way, just like I expect others to accept that I *do* work that way 13:27
pmichaud moritz: (parrot opcode) We need to be able to invoke nqp from a command line. And Perl6Grammar, and a number of other tools.
moritz: what _should_ happen is that there's a standard way for me to invoke parrot .pbc files as if they were executable 13:28
(from a command line)
wayland76 how about a command line "parrot_invoke" tool that finds things for you :)
moritz pmichaud: ok
pmichaud Perhaps that means we need a fakecutable NQP. I'm fine with that.
We would also want/need a fakecutable Perl6Grammar.pbc .
And I don't seem to get people to realize that Perl6Grammar is a command-line compiler, not a library. 13:29
moritz that doesn't really scale well, does it?
pmichaud ...scale well?
moritz adding a fake executable for everything that we need from rakduo
pmichaud This wouldn't be just for rakudo
wayland76 parrot_invoke Perl6Grammar.pbc
pmichaud it's needed for every language that wants to create a compiler for Parrot 13:30
wayland76: that would be great, *if* I didn't have to do
parrot_invoke (some_path_that_frequently_changes)/Perl6Grammar.pbc
Coke I say again, I don't think installing parrot is a hardship.
pmichaud I'm not claiming it is.
wayland76 Maybe I should go to bed -- I'm out of my depth and not helping :)
pmichaud: Yeah, I'm claiming that parrot_invoke should sort out the paths for you 13:31
moritz (and on demand tell you the path it sorted out) 13:32
wayland76 That would be nice too
pmichaud wayland76: that still sounds band-aid ish. Ultimately we need to be able to compile things in Parrot that can be invoked from the command line (without having to be prefaced by "parrot")
our "best effort" at that thus far is fakecutables.
wayland76 Ok, I was just suggesting an alternative to moritz complaint about scaling, which I assume was possibly a complaint about "command line namespace clutter", and I effectively suggested introducing a sub-namespace 13:34
pmichaud I'm not saying that NQP needs to be in a users' default PATH :-) 13:35
Coke I think having fakecutables for all the compilers/ is reasonable.
pmichaud I think there may be a misconception that NQP is needed to _run_ rakudo. NQP is only used at this time to _build_ rakudo; once rakudo is built, NQP no longer exists.
wayland76 Actually, paths could help with this, maybe
Coke (hurm. maybe not all; but certainly nqp) 13:36
pmichaud I'd primarily want nqp and Perl6Grammar
since thsoe are the compilers that are used in building other hll compilers
wayland76 ie. at the command line: PATH=compilers/nqp:lib/parrot/1.3.0/languages/nqp nqp.pbc
pmichaud ugh 13:37
wayland76 Yeah, ugh :)
13:37 ilia joined
pmichaud the solution discussed at the workshop was that building parrot creates a local install image 13:37
wayland76 I'll give that idea the boot (the ugg boot, of course :) )
pmichaud (within the parrot tree) 13:38
and then "make install" really just does the equivalent of copying that local install image to its ultimate location
wayland76 Did kid51 mention my idea of creating METAFESTs ?
Coke pmichaud: I hope that any discussions like that at the workshop that might influence policy are written up for the wiki or the list so we can all comment. 13:39
pmichaud Coke: certainly.
Coke: it was more brainstorming of ideas than making decisions
there weren't sufficient Parrot core committers there to be able to make any sort of policy decisions 13:40
Coke pmichaud: the last set of brainstorming was presented as decisions made; Just hoping not to repeat that mistake.
pmichaud The last set of brainstorming was done with a significant quorum of Parrot core committers present. (Agreed totally that they were communicated badly and did not provide non-attendees with an opportunity to influence the decision.)
Anyway, what happened this past weekend is very different (and had different goals) from the developer's summit 13:41
Coke pmichaud: not being at either of them, you can see where I'd have no clue about that. =-)
pmichaud correct.
Coke thanks for keeping us in mind. Appreciate it.
NotFound pmichaud: please don't forget TT #772 13:45
13:51 Andy_ joined
wayland76 pmichaud: What would you say to a function/program that you could call where you could tell it the build location of the file, and it would tell you the install location? 13:52
Coke it seems saner to have both places be the same. 13:53
have the build generate a layout like install would.
wayland76 Coke: I agree as a general rule, and that's what pmichaud was (according to what I've heard) advocating at the brainstorm 13:54
It's been suggested that input should be sought from Allison on this, and I'm under the impression that she's indisposed. 13:55
Coke perhaps input should be sought... on list. =-)
it's where all the cool committers hang out. =-)
wayland76 Well, I'm a bad boy, I'm not on the list :)
Coke you're not on parrot-dev?
wayland76 No. I'm only here because I want a Rakudo RPM that works on a Parrot RPM 13:56
And I've got one that works, but pmichaud doesn't like my code, so this discussion is also part of us negoatiating a solution to that
13:56 ilia joined
wayland76 (well, the solution is me writing something that he likes, but he's said that he'll do some makefile hacking for me, and I'll rework things around that, and somehow we ended up here :) ) 13:57
Maybe I should just give in and join the list, though 13:58
Infinoid Coke: (cool committers) Well, I fail that... haven't been able to keep up with the lists for the last couple of weeks 14:00
wayland76 Coke: Part of my idea is that the code to turn build paths into install paths already exists
It just needs to be turned into a library function :) 14:01
14:05 magnachef joined
wayland76 Ok, I'm on parrot-dev. 14:11
Anyway, bedtime for me. Goodnight
14:15 chromatic joined
chromatic Let's talk about L1 over lunch! Meet by the registration room. 14:15
pmichaud I'll be there. 11:35, yes? 14:18
14:20 Whiteknight joined
dalek rrot: r39741 | whiteknight++ | branches/io_cleanups (16 files):
[io_cleanups]. Handle is now a separate delegate type that encapsulates the low-level file descriptor, and is included as an attribute (not inherited by) FileHandle, Socket, Pipe, etc. These IO PMCs are now that much closer to being properly subclassable from PIR. Parrot builds with this change but there are some test failures. Likely, these are caused by passing a FileHandle to low-level functions that now expect a Handle, or vice-versa. Need help te
14:20
14:24 ilia joined 14:26 chromatic joined
chromatic 11:35 yes 14:28
Coke chromatic: I propose we rename your L1 to C1 to avoid confusion with whiteknight's L1 (W1) 14:34
Whiteknight Coke: they're the same one now 14:35
basically
Coke ok. then we can call it CW2!
Whiteknight OMGORLYCW2?
Coke there we go. perfectly clear.
Whiteknight: I am stabbing blindly at context_pmc branch; trying to remove stuff without actually doing the conversion yet. =-) 14:36
(stuff that will be not needed when context aren't manually managed)
doesn't help that "make test" fails on feather in trunk. :|
Whiteknight chromatic: where you at right now?
chromatic Earth.
Coke THis chat is coming from inside your own room.
chromatic 12 feet from The Chip.
Coke CHIP! 14:37
chromatic 14 feet?
Coke tell him I said hi.
Whiteknight okay, where is chip?
chromatic Earth.
Whiteknight increase your resolution!
chromatic NORTH AMERICA
purl rumour has it NORTH AMERICA is like 30% Spanish... it's more like 95% in South and Central America... there's out of the way places like the Philipines... and, most of western Europe at least UNDERSTANDS it
Coke 5) U.S.
chromatic que paso America!!
Coke que tal, freaks!
chromatic Ay, chulo. No me gusta. 14:38
14:38 cotto joined
chromatic I'm in Rangoon 3 or whatever the R-word is. 14:38
moritz "room"? 14:39
purl it has been said that "room" is something refugees from AOL might say. ITYM "channel".
chromatic The room has a specific name which isn't "Where Schwern and Chip are" but also starts with R.
Roanoke? 14:40
14:40 ruoso joined
Coke Chip Rangoon. 14:41
NotFound ...and most of Spain understand Spanish ;)
Coke verdad?
Whiteknight chromatic: is there a talk right now in rangos 3? 14:42
chromatic Yes. Schwern's talking about perl5i. 14:47
14:48 kid51 joined 14:51 kid51 joined
kid51 Does anyone know why I didn't get opped when I joined the channel? Is some bot down? 14:53
Thanks, slavorg 14:54
moderator Parrot 1.3.0 "Andean Swift" released | parrot.org 14:54
Infinoid I had a second instance called "slavorgn" running for a while, but the server I was running it on no longer exists 14:54
kid51 Since the BOF is history, I simply wanted to delete it from the channel message. 14:55
Infinoid Cool. How was it?
14:56 mikehh_ joined
kid51 Raw braindump output is available on YAPC wiki. 14:56
Whiteknight Infinoid: it was very productive I think
kid51 yapc10.org/yn2009/wiki?node=Parrot%...tors%20BOF
There were more attendees than are listed there 14:57
14:57 Theory joined
Infinoid cotto posted some photos on trac.parrot.org/parrot/wiki/Yapc10Bof 14:57
kid51 whiteknight, particle, jhorwitz, Austin_Hastings, etc. 14:58
Plus, some unnamed participants from Deep Corporate! 14:59
cotto Someone should move the transcribed notes to our wiki where we know they won't disappear at an inopportune time. 15:00
Coke (our wiki)++ 15:04
Whiteknight agreed, we'll move them to our wiki (and maybe add fun formatting!) 15:09
dalek rrot: r39742 | whiteknight++ | branches/io_cleanups/src/pmc (3 files):
[io_cleanups] fix socket so it doesn't attempt to access it's Handle during destroy. This creates an order-of-destruction bug. Also, plug a leak where socket isn't freeing it's Parrot_Socket_attributes structure
chromatic s/creates/fixes/ 15:10
Coke when creating context pmcs, do I need to specifically mark anything that is an ATTR? 15:16
or does that get appropriately marked without any effort on my part?
s/context//
cotto: as long as you're in there, any chance you can fix the long standing bug about not dropping unknown bits on the floor? 15:18
(pmc2c in trunk)
15:18 kid51 joined
dalek rrot: r39743 | cotto++ | trunk/lib/Parrot/Pmc2c/PMCEmitter.pm:
[pmc2c] only emit custom class_init code if it exists
15:19
cotto Coke, I'll check if it'd be worthwhile. 15:21
Whiteknight some of these io bugs are just obnoxious
15:24 magnachef joined
pmichaud Chip says "PASM is to real assembly as Legos are to materials engineering" 15:26
(in praise of Parrot, though) 15:27
moritz how's that a praise?
moritz doesn't understand 15:28
cotto Coke, it looks like I can catch some specific things that pmc2c drops on the floor, but it'd need some big changes to ensure that nothing gets dropped silently.
Whiteknight Infinoid: ping
pmichaud it's more aimed at the point that Parrot (as a vm) has different goals and constraints from assembly languages designed in silicon 15:29
the context is that chip was suggesting that learning assembly is a good skill to have when understanding C (or other languages), and the question arose whether Parrot assembly would qualify
so the exact quote is something like "it would be like using Legos to learn materials engineering" :-)( 15:30
15:30 masak joined
Whiteknight purl msg Infinoid I got that issue fixed and committed it to the io_cleanups branch. Builds now. Have a few interesting test failures if you have a moment to look at them. 15:30
purl Message for infinoid stored.
dalek rrot: r39744 | cotto++ | branches/pmc_pct/compilers/pmcc/src (3 files):
[pmcc] generate some more code in class_init, add actions to support hll and maps traits
15:33
15:53 s1n_yapc joined
Tene I don't know much about chip. As far as I'm aware, he's some kind of mysterious enigmatic figure in the primordial past of Parrot 15:57
15:59 Patterner joined 16:11 viklund joined
masak en.wikipedia.org/wiki/Chip_Salzenberg 16:14
16:18 darbelo joined 16:20 MoC joined
Coke if dan is pre-cambrian, chip is permian. 16:28
16:28 st joined, s1n_yapc joined
st hi! does anyone know ho to spawn a new thread from PIR? 16:29
*how 16:30
Coke st: check out examples/pir/thr-primes.pir ?
whoops. 16:31
that's apprently from an old revision.
st yes, i couldn't find it 16:32
Coke examples/sdl/mandel.pir // look for ParrotThread
also perldoc src/pmc/parrotthread.pmc
(ew. that shows PASM, not PIR) 16:33
st thanks! 16:34
Coke also t/pmc/threads.t
good luck. =-) 16:35
16:44 kid51 joined 16:48 Psyche^ joined 16:50 jdv79 joined 16:57 mtk joined 16:58 s1n_yapc joined 16:59 mj41 joined 17:01 ilia joined 17:09 cotto joined 17:11 mjf joined 17:18 jhorwitz joined 17:27 davidfetter joined 17:36 mtk left 17:38 Austin_Hastings joined 17:39 Austin_Hastings left
dalek rrot: r39745 | pmichaud++ | trunk/compilers/pct/src/PCT/Dumper.pir:
[pct]: Correct some documentation in PCT's node dumper. No functional changes.
17:39
17:44 flh joined, s1n_yapc joined 17:49 chromatic joined
cotto bacek, it turns out that your key refactoring will make the road to L1 easier. 17:49
darbelo bacek++ # paving the road to shiny! 17:51
17:52 kid51 joined
cotto We had a good discussion here about how to make the future happen. Expect a writeup from Whiteknight++ soon. 17:53
cotto looks at darbelo's new and shiny generated decnum tests 17:54
17:54 barney joined
cotto oh noes! It's in Perl. 17:55
17:55 Theory joined 17:56 s1n_yapc joined, magnachef joined, ilia joined
cotto darbelo, lmk if you want help using pct to generate the tests. You've been too low-maintenance lately. 17:58
darbelo I've been too low-performance too, I hacked the converter together in perl to get it out of the way and go back to the productive stuff. 18:01
I get side-tracked by shiny too often. I'm one of those guys who say "Trying to measure voltage with a hammer is stupid, you have to know the proper tool" and then start pounding nails with a volt-meter. 18:04
japhb Tene: so, any luck with the nvidia / parrot build? 18:05
18:05 bacek_ joined
moritz well, if it's a *heavy* and robust volt-meter ... ;-) 18:07
PerlJam fluke++ 18:08
dalek kudo: 0e0671a | moritz++ | t/spectest.data:
another passing integration test
18:09
Tene japhb: eh? last night kind of trailed off for me. 18:10
I don't actually remember where we ended up.
nopaste "kid51" at 70.85.31.226 pasted "auto::gettext warning on Darwin/PPC in io_cleanups branch" (10 lines) at nopaste.snit.ch/17013 18:16
japhb Tene: heh. Well, you were on the phone when I suggested that you install a couple packages on top of the base proprietary nvidia drivers. In particular, here's what I said last night:
OK, 185 is the current series, so you should be able to use xorg-x11-drv-nvidia-devel and xorg-x11-drv-nvidia-libs (if they work anything like the Debian equivalents, they're either virtual packages or release-tracking packages, either way they should work)
I will say, though, that 185.18.14 is the release that refused to work on my poor laptop's card (an m7800)
purl i already had it that way, japhb.
japhb throws purl a hush puppy 18:17
18:19 cotto joined
cotto the wireless here is really nice when I can connect 18:19
kid51 seen Whiteknight? 18:21
purl Whiteknight was last seen on #parrot 2 hours, 50 minutes and 39 seconds ago, saying: purl msg Infinoid I got that issue fixed and committed it to the io_cleanups branch. Builds now. Have a few interesting test failures if you have a moment to look at them.
chromatic Whiteknight's driving back home now.
kid51 Oh, sorry to hear he had to leave early 18:22
cotto I think that was his original plan.
either way, agreed
Where's pmichaud?
purl pmichaud is www.pmichaud.com/ or "Patrick R. Michaud" <mailto:pmichaud@pobox.com> or in charge of toaster experiments
cotto < purl-- > 18:23
pmichaud I'm in the mst talk 18:24
(rangos 1) 18:25
cotto ok. I'll catch you later. I'm playing with writing some functions in hash.pmc in nqp.
pmichaud excellent
cotto does nqp currently support three-part for loops? 18:26
pmichaud no, but we can add it if you need it.
(it's always possible to convert a three-part for loop into a while loop, though)
chromatic It might be useful to see what NQP can do unchanged first. 18:27
cotto struct access? 18:29
pmichaud hmmm, struct access might be a challenge, yes. 18:30
cotto I'm just doing a line-by-line translation, preserving the original in comments.
pmichaud Although I wonder to what extent we really want to support struct access
18:30 allison joined
kid51 msg Whiteknight smolder.plusthree.com/app/public_pr...ails/24046 18:30
purl Message for whiteknight stored.
cotto The architect appears. 18:31
pmichaud, I don't see how we can do much without it.
of course, this is pre-pre-pre-prototype
pmichaud wouldn't we be dealing with "attributes" more than specific structs? 18:32
chromatic I think so. 18:34
18:34 eternaleye joined
chromatic Mostly we just need to see what the syntax looks like for PMCL. 18:34
pmichaud I'm not saying we'll never have a need to do struct access... but one of the things we've been doing lately is to try to move PMCs away from direct struct access 18:35
cotto What about things like HashTable?
chromatic That's a good question.
nopaste "kid51" at 128.237.250.183 pasted "Test of nopaste.pl" (1 line) at nopaste.snit.ch/17014 18:36
Coke any parroteers going to EuroPython?
pmichaud I'm not.
allison ah, thanks to whoever put up the "no ps due to yapc" message 18:37
Coke whoops. yah, thanks. =-)
cotto allison, you're welcome. In a perfect world someone would have thought of it last #ps. 18:38
NotFound Coke: maybe I can go for a few hours, not sure.
allison Coke: I didn't hear about EuroPython until I was already in the UK, so didn't manage to plan my latest trip around it
Coke: hopefully next year
NotFound: it would be good to have someone there, if it works out for you
davidfetter allison, how's your head? 18:39
NotFound Ah, no, I mixed conferences X-)
allison NotFound: ah well
cotto I have to say that it's considerably nicer writing PMCs in nqp, even if the syntax is experimental^2.
allison davidfetter: much clearer
davidfetter :)
allison davidfetter: I've only been working a few hours a day, but today I feel almost entirely myself again :) 18:40
davidfetter yay!!!
davidfetter notes that jet lag is more hazardous than he'd originally imagined
allison heh, indeed :)
NotFound No, Birmingham is a little too far to me, sorry.
davidfetter has been pretty continuously jet-lagged for the past year or so :P
nopaste "cotto" at 128.237.230.103 pasted "a couple VTABLE functions from hash.pmc rewritten in nqp" (105 lines) at nopaste.snit.ch/17015 18:41
allison davidfetter: well, beware of sunlit plate glass doors
davidfetter will do
Coke allison: I work with a guy named sumit; I just misread your send to great confusion. 18:42
cotto comments welcome. Check XXX for things that are most questionable.
chromatic cotto, that'd be easier to read with the comments at the top, not inlined.
cotto I thought it'd be the opposite.
Coke cotto: s/J/j/
is $iter.vtable.shift_string valid nqp? 18:43
18:43 ilia joined
chromatic I get lost trying to figure them out. 18:43
cotto Coke, there are likely many problems with that nopaste. 18:44
When you get out, I'm in the registration room. 18:45
chromatic There should be snacks.
cotto There's cookies, fruit and drinks.
NotFound Magic cookies?
18:46 athomason joined
cotto they don't look magical, but maybe that's part of the magic 18:47
Maybe the cookies are magic. They're disappearing.
NotFound Amazing! 18:48
purl If you want to see amazing you should look at groditi_gone's collection of ear wax statues
nopaste "cotto" at 128.237.230.103 pasted "a couple VTABLE functions from hash.pmc rewritten in nqp, v2" (120 lines) at nopaste.snit.ch/17016 18:51
cotto and they're gone 18:54
One advantage of hacking pmc2c (and pmcc) to generate destroy/mark and add PObj flag code to a PMC is that the nqp wouldn't have to do it. 18:56
but I guess we'll need syntax for that for other reasons
Coke do we have any docs on NQP syntax? 18:57
(nothing in compilers/nqp leaps out at me.)
(aside from the grammar itself)
19:02 bobke joined
cotto Coke, this is part of the long-term plan for L1. Whiteknight should be writing about it soon, but the basic plan is that we implement a prototype of L1 as dynops, make nqp powerful enough to do what our C code does and make PCT emit those dynops. 19:03
nopaste "coke" at 72.228.52.192 pasted "valid nqp?" (4 lines) at nopaste.snit.ch/17017 19:04
cotto Coke, it looks valid. Does it asplode?
Coke ayup.
error momentarily: 19:05
No applicable methods.
happens on the assignment.
cotto I guess it'd work if you split the declaration and assignment.
Coke hurm. 19:06
nope.
nopaste "coke" at 72.228.52.192 pasted "valid nqp?" (13 lines) at nopaste.snit.ch/17018 19:07
Coke ah. it's just that it's borked in installed parrot.
cotto yeah. It works fine here. 19:08
Coke opens a ticket. 19:14
so much for my just hatched plan of rewriting parts of tcl in NQP to simplify them. =-)
cotto Coke++ #breaking stuff so the rest of us don't have to
Coke is running out of ways to break partcl.
Coke guesses that if NQP isn't working in an installed parrot, PCT might not be either. 19:15
I can't convert any more PMCs to PIR...
I'm too slow but need a profiler...
I tink switching from "compile the whole program and run it" to "compile the next command and run it" is probably the best bet. 19:16
dalek TT #785 created by coke++: "hello world" nqp fails when run with installed parrot
cotto That ticket looks familiar. 19:19
Coke I search for NQP before opening a ticket.
(only int rac, though)
19:20 mikehh_ joined 19:22 ilia joined 19:23 magnachef joined
dalek rrot: r39746 | japhb++ | trunk/runtime/parrot/library/OpenGL/Math.pir:
[OpenGL] Math.pir: Refactor elementwise binops again using macros of macros
19:34
19:35 cotto joined
dalek rrot: r39747 | japhb++ | trunk (2 files):
[OpenGL] Math: rename binop 'mult' to 'mul'
19:37
19:41 chromatic joined
NotFound parrot insparrot/lib/1.3.0-devel/languages/nqp/nqp.pbc foo.nqp - hello world 19:42
Works for me 19:43
japhb pmichaud, Tene: do you have brain cells to spend on cross-HLL brainstorming? 19:52
19:59 mtk joined 20:00 mtk left 20:07 Theory joined, jan joined
Tene japhb: I do. 20:10
japhb: do you?
purl hmmm... do you is it compulsory? ;)
japhb I do
I think we need pmichaud as well, because I want to discuss the keyed assign problem 20:11
foo[N] = baz
Since Rakudo and I believe you said cardinal both start by trying to use postcircumfix:[] to get an lvalue for the LHS, and then assign to it. 20:12
Which goes against the Parrot grain, shall we say.
Tene um... cardinal does it very very wrongly
it just tries to call a method named '[]=' in the object 20:13
I need to fix it.
japhb Well, arguably that's closer to the Parrot expectations than what Rakudo does.
Tene yes
if I just makr :vtable{'set_pmc_keyed') on them, and switch to keyed assign, it would be fine. 20:14
japhb So do we raise the bar to expect foreign objects to support Rakudo's method, or teach Rakudo to understand set_pmc_keyed?
s/Rakudo/PCT/, I guess 20:15
Tene I'd prefer the latter, I think. 20:17
Need to think about it, though.
It might cause some problems...
japhb Yeah, as do pmichaud and jonathon.
Tene my $b := @a[3];
japhb Do we want to support that on foreign objects? 20:18
I guess it comes down to how much foreign objects are expected to behave like natives.
"Can't bind to sub-objects of foreign objects" might be a passable rule, assuming we go down the restricted route. 20:19
Tene Sure.
Coke might be worth seeing how many other HLLs agree with perl6.
japhb How common is the bind operation in dynamic languages? Does the equivalent exist in Ruby, Python, Tcl, et al.? 20:20
Coke: we're on the same wavelength, I think.
Coke something like bind exists in tcl; you can alias a local variable to an outer scope's associative array element.
PerlJam japhb: perl5 does it! :)
japhb Perl 5? Never heard of it. :-) 20:21
OK, that's 3.
PerlJam japhb: scheme, haskell, lisp, etc. all do binding as well.
20:21 Andy_ joined
japhb I think this may be an operation we need to support generally, then 20:21
Coke hurm. I actually can't make my sample there work. 20:22
so nevermind from my side, at least for now. =-)
japhb Tene, Coke: So how do we do this in PIR, in a general way? Do we have existing ops/PMCs for this, or do we need to make new ones? 20:23
Coke for what, now. 20:25
"bind" ?
japhb Coke: minimally, bind to element of collection.
as an lvalue
Coke value = hash[key] - you now have a pmc value that you can pass around. if you change the value of that pmc, it should change the value returned by the next person that asks for the key. no? 20:26
isn't that already bound?
japhb so that @a[3] = 5 can be decomposed into $temp := @a[3]; $temp = 5, even if @a is a foreign object
Coke what does "foreign object" have to do with it? aren't you using parrot's "get_pmc_keyed" vtable to get the element, regardless of what the actual type is? 20:27
japhb Hmmm. That assumes that the only collections we pass around contain PMCs all the way down.
Coke (in which case it should return a PMC, which...)
japhb So we can't pass a FixedFloatArray, for example.
dalek rrot: r39748 | japhb++ | trunk (2 files):
[OpenGL] Math: fill out vec-num binops using another super-macro; add another sample to math.pir; make math.pir output less confusing
Coke how on earth would you bind that? =-)
Coke that would be like binding to a constant.. you need a PMC or binding doesn't make sense anyway. 20:28
japhb Coke: with some sort of proxy
Coke but then you have to upgrade the value in the original container with the proxy.
or else the next person to ask for the value gets the original constant.
at which point... use pmcs. No? 20:29
japhb Coke: no, because the proxy just passes assigns through.
Coke I can't say I like that plan.
japhb Here's the use case. Let's say I've got a packed array of say 64K floats. I don't want to expand that into 64K PMCs, just so I can assign into it. 20:30
Coke you don't have to. just assign into it. =-)
japhb Coke: from an HLL?
Tene HLL isn't at issue here.
Coke You can do that now: 20:31
bigcontainerofPackedfloats[index] = newfloat.
japhb Yes, in PIR. How do I do:
@big_array = ForeignLibrary::Make_me_a_big_packed_Array. @big_array[5] = 27; 20:32
Tene Coke: rakudo is translating @a[0]='foo'; into 'postcircumfix:[ ]'(0,'foo')
dalek TT #782 closed by moritz++: src/pmc/env.t confuses compiler specific and platform specific macros
japhb In that latter statement, Rakudo currently wants to do it in two steps, binding a temp first.
Coke japhb: in pir: big_array = somethingThatReturnsArray()
big_array[5] =27 20:33
japhb Coke: I think I'm being confusing. I mean: "Yes, I know it works in pure PIR. How do you get a HLL like Rakudo to correctly handle a packed array handed up from a PIR library?"
Tene Coke: I lied. Rakudo is translating it into: $P0 = 'postcircumfix:[ ]'(@*a, 0); $P0 = 'foo'; 20:34
Coke japhb: you make it generate the appropriate pir.
Tene: if perl6 wants to assign to things that aren't PMCs, it's going to have to be smarter.
japhb Coke: Yes. Er. And that's what I want to have happen. But we need to make that work with the postcircumfix:[] thing that Tene just alluded to. 20:35
Coke japhb: it's all just PIR (or c or bytecode) under the covers...
20:35 cotto joined
japhb Coke: exactly 20:35
Tene Coke: so what should "$a := @b[0]" translate into that will work with a fixedfloatarray?
japhb Coke: now -- how does Rakudo know what PIR to write when it doesn't know the type of the array until runtime?
Coke japhb: as I recall, allison's take on that was "explode" 20:36
japhb LOL
allison: bad architect, no biscuit. :-)
Coke japhb: try it and catch it when it throws an exception, falling back to the slow "create a proxy" method? 20:37
japhb Well, that's at least better than exploding 20:38
Seems a heck of a hit, though.
Coke or you could /always/ make the proxy.
moritz how fast are exceptions, compared to other control flow?
japhb Perhaps collections could have a "bindable" attribute/property/whatever that can be detected ....
Coke moritz: they're all slow. 20:39
japhb Then I'd like to do something else.
Working with packed arrays should not be Slow By Design
Coke If you avoid everything in parrot that's slow NOW, you're never going to do anything.
japhb: I'm not saying they're slow by design. I'm saying everything is slow in the current implementation.
japhb Ah. 20:40
Coke doing what's fast in parrot /today/ is a recipe for cleaning up your code later.
moritz CPS should make them fast, in theory, I think
Coke moritz: parrot is SUPER HELLA FAST in theory.
moritz Coke: ;-)
Coke tene, japhb : so, I have no clue what the /right/ way to solve your problem is. Sorry to have distracted you. =-) 20:42
japhb np, worth discussing
cotto Where are all the Parrot hackers at yapc? 20:43
Coke japhb: I think a ContainerProxyKey has some merit, though. 20:45
KeyProxy?
japhb Coke: nodnod. I was just ruminating on the implementation. 20:46
Coke something that is like a Float, but overrides the Set/Get to coordinate with its host PMC.
I think once you have that, though, the HLL is responsible for instantiating it when it needs it.
japhb ... but the HLL needs some way to know if it needs it.
Coke and there are 3 ways: check the type of the container ahead of time; try it and deal with any exceptions, or always use it. 20:47
japhb And I'd like to not force the HLL to do a test every time.
Coke (do a test) why not?
(you could cache the results for a given PMC.)
s/PMC/Container/ 20:48
japhb Because that's slow by design. A better way might be to have a variant get_pmc_keyed that will return the PMC inside a PMC collection, or return a proxy from a packed collection.
I thought of the cache,
Coke you don't know how long the test takes or how often it's going to be invoked. How can you say "slow by design"? 20:49
if you have a variant get_pmc_keyed, then you need to subclass the core packed type anyway.
japhb but we can't do the cache directly, because the HLL in theory could loop over the whole array making unique binds.
Coke (otherwise it won't behave like the core type.)
You could. why would you do that?
NotFound TT #785 works for me
japhb I'm saying that perhaps all core collection types ought to have this extra vtable. 20:50
Coke if you're going to loop over the whole array anyway, loop over the array.
japhb Coke: not that it's a good idea. We just need to do the right thing, and not get crazy slow.
PerlJam "core collection types"?
Coke it's ok to get crazy slow if your users are doing something stupid. =-)
japhb And I said testing on every index was slow by design because it makes it slightly slower to do the index/bind operation on PMC arrays, which will be most of the uses, to benefit packed arrays, which will be rare. 20:51
Coke I could see a proposal that perhaps changed get_pmc_keyed on the non-pmc collection types to support a containerProxyKey.
is checking the type of a pmc container slow?
japhb Coke: it's not that the check is slow. It's that there are ways to do it that don't do the check at all. 20:52
And I think your idea of changing the non-pmc collection types to DTRT is close to what I am looking for.
Coke DTJT.
(japhb)
japhb I say DTRT because currently in the context of an HLL, they DTWT. :-) 20:53
Coke of course, that might mean that folks that want to just get a PMC value to play with have to do do extra work.
s/HLL/Perl 6/ 20:54
japhb We just said that most HLLs expect to be able to bind to array elements. Rakudo just happens to be the one doing it right now. 20:55
Coke "oh, I'll clone the pmc I got so I don't modify any data." - set the clone. clone of the proxy happily goes back and resets the value in the container.
so then you have to do the check to find out if it that use case is safe... etc.
japhb ... which is why I suggested that instead of modifying the current op/vtable, we add one for the lvalue bind case. 20:56
Because you want both behaviors.
indexing to get rvalue and indexing to get lvalue are fundamentally different.
cotto I was feeling enthusiastic about getting pmcc working before the end of yapc until just now when I looked at METHOD and MULTI rewriting.
Coke japhb: there, concensus. =-) 20:57
japhb :-) 20:58
20:59 magnachef joined 21:00 ilia joined 21:03 ilia_ joined
Coke japhb: looks like fixedfloatarray is currently creating a PMC and returning it when asked, so that's your rvalue semantics (and not an error to be trapped anyway.); I would expect that you would need to add 3 vtables for: get_pmc_keyed{_int,_str,}_lvalue ; you might also want to investigate slice 21:09
japhb "investigate slice"? Meaning, figure out how to proxy that? 21:10
Coke if you want an lvalue slice. 21:11
dalek cnum-dynpmcs: r88 | darbelo++ | trunk/ (5 files):
Fix "Inf" handling in the converter script.

doing it on purpose.
japhb Coke: gotcha
I know next to nothing about how to write PMC vtables. Given various projects currently in play in the branches, is it worth learning the current method? Or should I wait for one or more projects to merge? (Assuming they plan to merge "soonish") 21:13
darbelo japhb: The current way of writing PMC VTABLEs is unlikely to go away "soonish". You should be good for, at the very least, a deprecation cylce. It's likely to take longer than that though. 21:16
japhb OK
All right, what's the best doc to get started with? 21:17
(Assuming Tene++ doesn't beat me to the punch and JFDI)
darbelo docs/pmc.pod has the basics and there's also some stuff in docs/pmc/ on the parrot tree. 21:19
japhb OK.
Thanks, darbelo++
darbelo Also look at how other PMCs do what they do, just don't trust 'em to be doing it right ;) 21:20
japhb *chuckle* Somehow, I was already thinking along those lines. ;-)
japhb goes back to the "mental break" activity of writing OpenGL/Math.pir 21:21
21:24 skids joined
GeJ Good morning everyone 21:27
japhb o/
dalek rrot: r39749 | japhb++ | trunk (2 files):
[OpenGL] Math.pir: more compact dump output; math.pir: improve output spacing
21:32
japhb Huh, that's interesting. dalek ate the __ before 'dump' 21:34
rg would guess trac ate it (underline the empty string) 21:39
japhb :-/
21:41 gryphon_ joined
darbelo I think dalek watches the RSS feed and reports based on that. I'd check there if I wanted to be sure of who ate what. 21:42
moritz refrains from adding a lolcat comment ending in "EATED IT" 21:43
japhb moritz: REFRAIN FAIL
;-)
NotFound ABSTAIN FROM REFRAINING
japhb darbelo: where would I go on trac.parrot.org to see the RSS Feed? 21:44
NotFound One day I'll write an INTERCAL parrot compiler.
darbelo I'm looking at "trac.parrot.org/parrot/log/?limit=...ormat=rss" and it doesn't have the __
japhb Ah, I think I found it 21:45
yup, trac--
21:45 bacek_ joined
darbelo and trac.parrot.org/parrot/log/ has an underline running from dump to the "..." at the end of the line. 21:45
TRAC EATED UR UNDERSCOER 21:46
22:01 bacek_ joined
bacek_ good morning 22:02
purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
bacek_ read irclog 22:03
hooray! NQP FTW!
22:04 cotto joined
bacek_ cotto++ # C is dead, long live NQP 22:05
cotto not dead, but greatly diminished
and if we do a good job replacing it with nqp, I won't miss it either 22:06
bacek_ :)
NotFound I'll say it one more time: TT #785 does not fail for me.
bacek_ We need static typing in NQP.
And reduced support for MULTIs. 22:07
Or we can use it directly from pmcc. 22:08
cotto bacek_, reduced?
bacek_ Simplified. Not full Perl6 multis. 22:09
22:09 eternaleye joined
cotto Oh. Of course not. 22:09
I thought you meant reduced from where it currently is.
bacek_ btw, "rule body { NQP:::Grammar::statement_block }" in pmc probably will work. 22:10
Currently there is no multis in NQP :)
cotto exactly
bacek_ exactly "multis" or exaclty "rule"? 22:11
"rule body { <NQP::Grammar::statement_block> }" 22:12
cotto multis
22:15 Austin_Hastings joined
dalek cnum-dynpmcs: r89 | darbelo++ | trunk/ (5 files):
Fixup some regexes in decTest2pir.
22:20
22:22 JC1 joined
dalek rrot: r39750 | japhb++ | trunk (2 files):
[OpenGL] Math: document and show alternate instantiation syntax
22:30
22:33 rg1 joined 23:11 patspam joined
japhb Tene: I have a PIR Module OpenGL/Math.pir, which I use from Rakudo as: "use OpenGL::Math:from<parrot>;". OpenGL/Math.pir defines various classes within the OpenGL::Math:: namespace, such as OpenGL::Math::Vec4. I can't seem to find a syntax that allows me to instantiate an OpenGL::Math::Vec4 directly from Rakudo. Depending on the syntax I use, I end up with "Malformed declaration" (for 'my OpenGL::Math::Vec4 $foo .= new;') to "invoke() n 23:17
ot implemented in class 'NameSpace'" (most of the other variations I've tried). Any thoughts?
bacek_ OpenGL::Math::Vec4.new?
japhb bacek: I think I tried that one, but let me check again. 23:18
yup, the invoke() error above
dalek tracwiki: v5 | Austin_Hastings++ | Yapc10Bof
tracwiki: Moved photos inline, w/ OCR
tracwiki: trac.parrot.org/parrot/wiki/Yapc10...ction=diff
bacek_ japhb: no idea... 23:23
japhb Yeah, I'm drawing a blank myself.
Perhaps I need some inline PIR for now.
Austin_Hastings Did you 'register' it? 23:24
(I'm assuming you've got lots of these, and this is probably a no-brainer, but ...)
japhb Austin_Hastings: hmmm?
Given that I don't know what you're talking about, I probably missed something key. :-) 23:25
Austin_Hastings Did you write this?
(The OpenGL/Math/whatever stuff?)
japhb YEs.
I've been testing it so far just using PIR callers. 23:26
Austin_Hastings Okay. There's a call you have to make to hook a pir class into the perl6 object model. It's usually in the initload code,
japhb But now I'm trying to use it from Rakudo,
like I already use OpenGL (the bindings for which I also wrote), and works swimmingly. But OpenGL does not have any sub-namespaces .... 23:27
Austin_Hastings and you get a p6meta and eventually call a 'register' method with your class and optionally parent classes, attributes, and what-not.
japhb Ah! Tene's cross-HLL loader must be doing this automatically for the exact classname you 'use' ....
Austin_Hastings Haven't seen it. Maybe?
(But I kind of expect not...) 23:28
japhb Or maybe Rakudo does by itself, hmmm.
Austin_Hastings: OK, where do I look for sample code? 23:29
Austin_Hastings I'm looking for some now. bide
japhb thx
Austin_Hastings Try $PARROT/runtime/parrot/library/PGE/Perl6Grammar.pir 23:30
Search for p6meta.'new_class'
23:31 magnachef joined
Austin_Hastings That's "how you create a p6 class on purpose" 23:31
japhb Hmmmm. This is going to be slightly different for every HLL that wants to load the module, isn't it? 23:32
Austin_Hastings Not really. 23:33
Anyway, then look at the "register" method in P6object.pir (in runtime/library)
That's how you hook a non-P6 class into the P6 object model.
japhb If I register via P6metaclass, am I really registering with PCT's MOP? So any PCT language will recognize the new class?
Austin_Hastings You're registering with P6's MOP, which PCT also uses. 23:34
(I think)
Anyhow, if you DON'T do this, then you probably have a class and a namespace, but you won't have a global symbol defined in the OpenGL::Math namespace. 23:35
japhb OK. So that just leaves Tcl out in the cold right now
Austin_Hastings Can you give me a pointer to "Tene's cross-HLL loader" ?
japhb It's what makes Rakudo's 'use Foo:from<parrot>' work (and Cardinal as well). Tene did a journal entry about it, lemme see if I can find it. 23:36
Oh nice, my DNS server is deciding to be a pest 23:37
Austin_Hastings LOL
23:37 Limbic_Region joined
Austin_Hastings I just got home from PVMW/YAPC, and plugging my laptop into the docking station caused my X server to go into "only if you're in the top left corner" mode. 23:38
japhb bugger all, looks like it's not coming back from a reboot. 23:41
afk for a few -- Austin_Hastings, I'm pretty sure if you go searching for Tene's blog / use.perl journal, you'll find the article I'm talking about. 23:43
Austin_Hastings Is it under "Tene" or some other name 23:44
??
japhb Tene?
purl hmmm... Tene is Stephen Weeks or a madman
Austin_Hastings Thanks
23:46 Whiteknight joined
Austin_Hastings Howdy, WhiteKnight 23:46
Whiteknight howdy 23:47
Infinoid Whiteknight: pong
Whiteknight hiya infinoid 23:48
I actually don't remember why I pinged you. did I msg you?
Infinoid yeah, about your checkin and some test failures
Austin_Hastings purl msg? 23:50
purl msg is Monosodium Glutamate, accelerates cooking of chinese food or a flavor enhancer, to make shitty stuff taste better, increase thirst, and desire to eat more. the perfect food additive :> or Madison Square Garden or in *everything*
Whiteknight yeah, I had a few really weird failures, although they look mostly related
Infinoid testing now
purl, messages help?
purl To leave a message, say in channel or privmsg purl "msg <nickname> MESSAGE FOR J00". To read your messages, privmsg purl "messages". To erase your messages, privmsg purl "messages erase". or Delivery Not Guaranteed!
Whiteknight awesome, thanks!
msg is also "msg <username> <message"
purl Message for is stored.
Whiteknight damnit
Infinoid purl, msg is also see messages help
purl Message for is stored.
Infinoid lame.
Whiteknight weak
is . 23:51
[19:51] <purl> You have 6 messages waiting.
Austin_Hastings msg japhb (Re: cross-HLL load) Apparently the nopaste he put his API in has expired. But from what I see, it does look like a mod for every compiler. I'll have to chase it down from one of the compiler source trees. Thanks for pointing me at it.
purl Message for japhb stored.
Whiteknight oh awesome, kid51 already did a smolder in the branch: smolder.plusthree.com/app/public_pr...ails/24046
so that should give you an idea about what is broken
Infinoid I see broken packfiles (due to PBC_COMPAT yet again) and some failures from t/pmc/io.t 23:55
looks pretty much the same as kid51's 23:56
dinner time, I promise I'll look at the failures after 23:59