Parrot 3.10.0 "Apple Pi" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 2 December 2011.
00:16 davidfetter joined 00:25 whiteknight joined
whiteknight good evening, #parrot 00:30
cotto hio whiteknight 00:49
whiteknight do we still have that example bacek added a while ago where he uses the packfile pmcs to create and run a "hello world" program? 00:50
or was that not in master? 00:53
cotto it's in master 00:56
make_hello_pbc
examples/pir/make_hello_pbc.pir
dalek itor: 9693d47 | NotFound++ | / (2 files):
getwidth and getheight methods in TextButton
00:58
whiteknight how did I miss that? 01:03
cotto++
dalek kudo/nom: 66edf0b | moritz++ | / (2 files):
properly handle bigish numbers in Num.floor and .ceiling
01:46
itor: cf1a5d2 | NotFound++ | examples/winxed_repl.winxed:
differentiate compiling error and runtime exceptions and
01:48
whiteknight I think i've finally had my grand inspiration for my new bytecode library 01:53
cotto whiteknight: care to elaborate? 01:56
whiteknight no. I'm going to let the code do the talking
bleh, already running into snags and it's the stupid l-value problems coming in to play 02:21
my thought is that if we overload all the vtables on a Variable type, we can generate bytecode through symbolic manipulation 02:22
"a + b" would call the add vtable, which would push an "add" op into the stream with the given symbols as arguments
so creating bytecode becomes almost as simple as creating Variable objects and performing operations on them that you want performed in the generated bytecode 02:23
moritz that sounds... like it sounds nice at first, but will hit lots and lots of problems in the long run
"you think that is cute today"
whiteknight yeah, I'm playing with it now and it's not perfect 02:24
mostly because we have far more ops than we have vtables to overload
moritz I'm trying to point my finger at what's not going to work, but it's not easy 02:25
yes, that's one
the other is that you can never generate ops for non-PMCs that way
another is that you'd probably need loads of Variable objects to generate mildly complex bytecode 02:26
and need to keep track of them and their dependencies somehow
whiteknight sure you can. In the code generator I have a Variable.PMC type and a Variable.String type, and convert vtable calls on those to different low-level ops
and yes, you would end up creating lots of variables, which is going to require a very smart register allocator to make sane 02:27
moritz doesn't quite follow
whiteknight var s = new Variable.String(), var i = new Variable.Integer(), var c = s + i;
that sequence would generate an add_p_s_i opcode
moritz and with .Integer twice, I'd get an add_i_i_i? 02:28
whiteknight I think so
in any case this kind of system could be a small part of a larger library 02:29
moritz ok, one conceptual problem down
moritz tries to sleep again
whiteknight so we would still have to have a higher-level context object that could perform other operations on variable objects without needing overloaded vtables
and something to handle assignments/sets 02:30
02:37 Yuki`N joined
bacek_at_work whiteknight, bad design. Really bad. 02:50
whiteknight, try to apply this design to something like "bytecode optimization"
whiteknight, you do need "external" process to generate bytecode.
whiteknight, usually it's Visitor
whiteknight, we can employ our multidisplatch to make it nice. 02:51
whiteknight, e.g. class Visitor { multi method visit(op, PMC, Int); ... visit(op, PMC, PMC); ... } 02:52
whiteknight, and implementation of BCGenVisitor.visit("add", thePMC, 42) will push "add_p_i" op to bytecode stream 02:53
"op" can be hierarchical set of classes as well if we want
afk # lunch
whiteknight yeah, the more I think about it, the less I like it 02:56
bacek_at_work: if you have a few minutes later, could you look at nine's GC problem on the threads branch? I'm out of time tonight 02:57
03:28 benabik joined
cotto 'evening, humans 03:32
03:59 JimmyZ joined 04:22 dafrito joined 04:34 JimmyZ_ joined
alvis hello cotto. you still available? 04:36
cotto alvis, in 30 minutes or so 04:45
need to do a quick errand
alvis cotto: 'k, sounds good. i'll be 'bout.
04:47 nbrown joined
cotto and back 05:06
alvis, how can I help? 05:07
alvis Ok, well ..., I got some questions: (1) Do you (or most folks) use a fork for their commit to the parrot master work? I'm thinking, not.
cotto alvis, it's mostly branches or direct commits to master for smaller changes
alvis cotto: yeah, that's what (I think) i figured out this evening. i've been following the gitflow doc and it's a bit ambiguous on a coupl'a points ... 05:08
cotto quite possible 05:09
alvis and, so, i think i'm getting a'bit confused 'cause i've been workin' from a fork.
i think that's solve 90% of my problems/confusion. (at least, i'm on the right track, i think.) 05:10
cotto In my mind, forks are mainly for people who want to contribute but don't have a commit bit. Anything (afaik) a fork can do, a branch can do.
05:10 woosley joined
alvis Ok. (2) on the VM Spec/Ref Implementation. should i use a branch or is stickin' it under my github account fine? which do you prefer? 05:11
cotto depends on how you want to start it
if you're using the existing docs as a starting point, a branch would be beest 05:12
*best
if you're starting from scratch, either works
I like branches either way because they have more visibility.
alvis hmm, ok. well, i think i'll go with a branch then.
cotto cool 05:13
alvis 'k (3) the reason i asked several days ago about my CLA is, the last i heard (you said), you were uncertain ...
so, i mailed a copy as well and haven't heard anything. 05:14
cotto d'oh
I should have mentioned it at #ps today
dukeleto, ping
alvis cotto: i'm just trying to ensure compliance. i don't have to know now; just so someone, sometime let's me know -- one way or t'other. 05:16
cotto alvis, it's appreciated
alvis 'k. one last (informal) question: do you EVER sleep? :) 05:18
cotto sure. I'm on the US west coast, so it's not that late for me.
alvis ahh, ok. that makes sense. 05:19
ok, i appreciate your help. gonna try to get a coupl'a hours of work done, before i turn in. 'night.
cotto great! I'll be glad to answer any questions while I'm awake. 05:20
alvis cotto: oops, there was one more thing: do you have a preference on an interactive documentation system (e.g., ... 05:25
lisp's documentation, ruby, swi-prolog)?
cotto hmmm 05:26
I'm not used to using anything fancier than perldoc.
alvis i wanna pull up a repl and fire up a doc system and get answers to my questions about docs. 05:27
hmmm, ok, i've been thinking of a way to integrate perldoc into a repl, as well. (it's longer-term, but ...) 05:28
just gotta get parrot-embed workin' again -- when i can get to it. well ..., 'night again. 05:30
05:31 rfw joined
dalek p: d5649fd | moritz++ | tools/build/PARROT_REVISION:
bump parrot revision to one that has the is_inf_or_nan opcode
05:58
07:51 mj41 joined 08:14 lucian joined 08:31 rfw joined 08:38 nbrown_ joined 08:43 AzureStone joined 08:47 mj41 joined 09:11 lucian joined
dalek kudo/nom: 735d127 | moritz++ | tools/build/NQP_REVISION:
fix NQP revision, moritz--
09:23
09:50 woosley left 10:14 marcel_r joined 10:21 bacek joined 10:32 Aleksandar joined 10:53 bacek joined
dalek p: aa20f03 | moritz++ | src/PAST/NQP.pir:
add nqp::isspecial_n alias for pir::is_inf_or_nan__In
11:25
12:13 Psyche^ joined 12:21 bluescreen joined
dalek p: 987cd89 | moritz++ | src/PAST/NQP.pir:
rename nqp::isspecial_n to isnanorinf
12:44
12:49 benabik joined
benabik o/ #parrot 13:11
nine Hi benabik 13:19
benabik o/ nine, how's things?
nine Well...stuck 13:20
benabik That's no good.
nine How on earth can a PMC end up with a NULL data pointer? 13:28
dalek kudo/nom: 7cb7f2a | moritz++ | / (2 files):
use nqp::isnanorinf op in rounders
13:36
benabik I have no idea. I haven't spent much time with Parrot's internals. :-/ 13:37
13:38 AzureStone joined
nine Well that's the upside of such problems: I'm learning more about Parrot's internals by the hour. 13:38
benabik That's the spirit! 13:39
13:44 whiteknight joined
whiteknight good morning, #parrot 13:46
nine Good morning, whiteknight
whiteknight nine: I didn't have much time last night to look at your GC bug, I apologize 13:47
benabik o/ whiteknight
nine whiteknight: nothing to apologize for. That's just how life is 13:48
whiteknight hello benabik
benabik: I've had something of a surge of motivation, and I want to start getting active in PACT
benabik: I'm going to just start dropping some code, feel free to direct me in any way that seems most profitable
benabik whiteknight: Woo! TODO in the repo kinda outlines my plan for it. I was basically at the point where I was thinking about building PACT::Nodes out of the packfile. 13:49
Which requires things like a build system, organization, the actual Node class, etc etc etc. 13:50
whiteknight okay, what's the gist of it? We're basically rewriting POST in Winxed, with more consideration paid to bytecode generation?
benabik I was pondering using Rosella as the basis of the build/test system. I want to keep the runtime dependencies down, but build deps are fine. :-) 13:51
whiteknight distutils doesn't really have great support for building winxed files yet, so that's not a bad idea
benabik Basically. Need more attention paid to maintaining types and structural data. I was also going to use… hold on, finding refs.
whiteknight I'm really interested in getting to work on the stage1 jaesop compiler, for which I need some kind of bytecode generating backend 13:52
so that's going to give us an immediate test case, because as soon as PACT provides anything Jaesop will be trying to use it 13:53
benabik I was going to use control flow graphs as the basic structure for POST. Possibly converting from a POST-tree to the extremely specific byte by byte graph. en.wikipedia.org/wiki/Control_flow_graph
CFGs have useful properties for optimization and register allocation.
(Some of this is described in TODO and docs/) 13:54
whiteknight so I assume we're going to need some kind of facade layer over the packfile pmcs to represent things that we want to have: subs, control flow structures, etc 13:56
benabik Right. 13:58
whiteknight okay, so howabout I get to work on that first. I'll start putting together an abstraction layer over the packfile PMCs that will make building packfiles and adding Subs and stuff to it much simpler 13:59
benabik Sounds good.
whiteknight On top of that layer we build something like POST, then we build PAST and a past2post stage
so on and so forth
benabik I was figuring on building a Packfile facade that didn't worry about things like const tables and the like, where the PACT::Sub held PACT::Ops, etc etc etc
whiteknight right right, that's my plan too. The PACT::Sub will contain lists of PACT::OPS, PACT::Variables and PACT::Constants 14:00
benabik Woo! \\o/
whiteknight the ops will be mostly symbolic nodes that can hold references to other ops, variables and constants (as operands) and other variables as results
benabik I was thinking at the lowest level, ops would never hold ops. At the bytecode level we have to just use things like temporary variables and the like. 14:02
whiteknight okay, that's fine too. At the lowest level we can be more flat
higher levels can hold more logical tree shapes
benabik Yup ypu
flat < cfg < trees
whiteknight gotcha 14:03
this is exciting. I can't wait to start dropping some code to see what happens 14:04
benabik One of the side projects once the flat PACT structure exists is to build a language that targets it. PACT assembly, essentially. 14:06
whiteknight gotcha 14:09
that is what we will use to form the basis of the flat-PACT tests? 14:10
benabik Well, the goal of it was to be the basis of replacing PIR. :-D 14:12
But that's a useful stepping stone. :-D
The first tests will have to be building structures via PIR, but that's tedious to say the least.
whiteknight I see no reason to use PIR 14:20
ever 14:21
14:22 Coke left, Aleksandar joined
whiteknight I feel like I would really like to have multiple backends. Like the ability to generate something like winxed code would be pretty awesome for testing 14:24
but I can't think of a good way to do that which doesn't involve lots of duplicated functionality in the backends
that may just be a fact of life 14:25
benabik That's one reason why I want each level to have an explicit structure to it. So hopefully backends can share as much as possible.
dalek rrot: 624f97a | Sasho++ | docs/binaries/parrot_nci_thunk_gen.pod:
parrot_nci_thunk_gen POD added
14:36
dukeleto ~~
aloha Commit 624f97a (parrot_nci_thunk_gen POD added) - github.com/parrot/parrot/commit/62...9722e887ca
aloha Commit 624f97a14b (parrot_nci_thunk_gen POD added) - github.com/parrot/parrot/commit/62...9722e887ca
dalek rrot: cfac5cb | dukeleto++ | docs/binaries/parrot_nci_thunk_gen.pod:
Merge pull request #225 from Alekssasho/master

GCI parrot_nci_thunk_gen POD
aloha Commit cfac5cb (Merge pull request #225 from Alekssasho/master) - github.com/parrot/parrot/commit/cf...5a33b37ac3
aloha Commit cfac5cbe91 (Merge pull request #225 from Alekssasho/master) - github.com/parrot/parrot/commit/cf...5a33b37ac3 14:37
dukeleto hmmm. aloha and dalek fighting?
14:38 nbrown joined
dalek kudo/nom: 9fd40d8 | moritz++ | src/core/Num.pm:
fix Inf.perl
14:41
14:58 JimmyZ joined
dalek rrot: a90ce2a | dukeleto++ | docs/binaries/parrot_nci_thunk_gen.pod:
[doc] Tweak parrot_nci_thunk_gen.pod
15:13
aloha Commit a90ce2a ([doc] Tweak parrot_nci_thunk_gen.pod) - github.com/parrot/parrot/commit/a9...86529a360d
aloha Commit a90ce2a4dd ([doc] Tweak parrot_nci_thunk_gen.pod) - github.com/parrot/parrot/commit/a9...86529a360d
15:17 jsut_ joined 15:36 Psyche^ joined 15:58 mtk joined 16:14 alester joined
nine Ok, my GC problem must have something to do with GC initalization. If I let the new thread just use the same GC as the main thread it runs perfectly...as long as the main thread is inactive of course. 16:50
whiteknight okay, weird
who owns the task that runs on the new thread? Is that task created by the new thread or created by the main thread? 16:51
because if it's created by the main thread, it only gets marked when the main thread runs GC
(which isn't happening because main thread is inactive)
nine The task is created in the main thread but on scheduling the task on the new interp, a local copy is created and scheduled instead. At this time proxies are created for any shared PMCs. 16:52
Also interestingly the marking is not the problem. The task does get marked. But it's never sweeped. So it stays marked and on the next GC run it gets recognized as marked and so never gets a chance to mark it's data 16:53
whiteknight so the task->code and task->data PMCs are proxies, not the originals from the main thread? 16:54
...never gets sweeped? wtf? 16:55
the sweep happens by linearly traversing the raw memory pools. if it never gets swept, it is not in the memory pools for that GC
nine No, those are copied. Shared data is pushed onto the task and on the new "shared" array.
whiteknight ok
nine whiteknight: and that's what's funny: I debugged it like hell and am very sure that it does got put onto the PA that's immediately afterwards iterarted over by gc_gms_sweep_pools 16:56
Only that the latter never finds it in the PA
whiteknight this is too weird 16:57
nine Its almost as if gc_gms_sweep_pools is iterating over a different list 16:59
whiteknight where does it get the list from? interp->gc_private->*? 17:00
I think we need to find out exactly what list that task is on, and exactly what list is being swept 17:01
nine it's interp->gc_private->objects which is an array of PAs (one PA for each generation) 17:02
from the debug output, it should be on interp->gc_private->objects[0]
whiteknight okay
dukeleto ~~ 17:05
benabik PA?
nine And I can confirm that gc_gms_sweep_pools is indeed iterating over the same objects[0]
gc_gms_process_work_list(0x70b1e0) cought item 0x7b25d0 cur_task 0x7b25d8 in gen 0 putting into 0x70b300
gc_gms_sweep_pools iterating over 0x70b300
benabik: a Parrot Pointer Array
benabik Exciting. 17:06
nine benabik: some highly optimized (read extremely difficult to debug) data structure defined in include/parrot/pointer_array.h
whiteknight nine: this is rediculous.
nine: highly optimized? I thought it was just a linked list 17:07
nine whiteknight: well I think it's a linked list of arrays coming with some macro magic for iterating that confuses gdb to the point where a single step takes about a minute and ends right after the loop 17:08
whiteknight oh, great 17:10
nine That's why the debug output patch I attached expands the macro 17:12
Gotta go now. Will have a closer look at GC initialization on the train 17:13
dukeleto Interesting read: lucumr.pocoo.org/2011/12/7/thoughts-on-python3/ 17:20
17:31 dmalcolm joined
cotto ~~ 18:02
dukeleto: do you have access to the list where CLAs go? 18:03
whiteknight cotto: yeah, we have access. What do you need? 18:05
dukeleto cotto: CLAs go to legal@parrot.org 18:07
cotto: anybody can email that list, iirc
cotto: it is really just a fwd address to particle, methinks
cotto: or maybe it forwards to parrot-directors, i forget
whiteknight parrot-directors 18:08
nine GOT IT! 18:11
cotto dukeleto: do we have alvis' cla? 18:12
nine I think Parrot_Pointer_Array is buggy. It tries to re-use empty slots in the chunk array, but then this slot is missing in the iteration. Chaning line 125 in pointer_array.h to an if (0 && self->next_free) { fixes my problem.
cotto nine++
whiteknight nine++ 18:13
benabik nine++ 18:15
nine I don't have the slightest idea how a bug at this point could have stayed hidden for so long (this code must be quite old) or why it's only hitting me and so reliably 18:16
dukeleto cotto: not sure. I don't see his CLA in the PaFo dropbox 18:20
tadzik . o O ( so nine is now twelve? ) 18:21
particle1 cotto, dukeleto, it's in. 18:22
dukeleto particle: cool
particle it's in a stack of papers to scan
dukeleto cotto: alvis' cla is in. Feel free to give him a commit bit if he doesn't already have one
particle: any chance you have gotten around to sending cotto++ and I reimbursements for GSoC? I emailed you all the receipts. 18:23
particle sigh, no.
dukeleto particle: i will send some people with tar and feathers soon :)
particle let me find that checkbook...
benabik dukeleto: Will you then submit a receipt? Tar and feathers aren't cheap these days. ;-) 18:26
whiteknight even more checks! The vicious cycle continues 18:29
dukeleto benabik: i got a guy for tar and feathers
dukeleto has a guy for everything
benabik particle++ # putting up with these guys :-D 18:30
dukeleto "You need a toe? I'll get you a toe."
whiteknight so *that's* why I woke up in a bathtub filled with ice, missing a toe 18:33
cotto msg alvis Your CLA has arrived, so you're official. 18:40
aloha OK. I'll deliver the message.
18:54 schmooster joined
dalek kudo/nom: 1022412 | coke++ | t/spectest.data:
track failure modes
19:09
19:10 fperrad joined 19:14 Aleksandar joined
dalek Heuristic branch merge: pushed 18 commits to parrot/interp_api_cleanup by Whiteknight 19:29
20:12 lucian joined
dalek rrot: e66e875 | Sasho++ | docs/binaries/ops2c.pod:
ops2c POD added
20:40
aloha Commit e66e875 (ops2c POD added) - github.com/parrot/parrot/commit/e6...2a3abd4f03
aloha Commit e66e875b64 (ops2c POD added) - github.com/parrot/parrot/commit/e6...2a3abd4f03
dalek rrot: babf730 | Alekssasho++ | docs/binaries/ops2c.pod:
Update docs/binaries/ops2c.pod
aloha Commit babf730 (Update docs/binaries/ops2c.pod) - github.com/parrot/parrot/commit/ba...2173441d22
aloha Commit babf730dce (Update docs/binaries/ops2c.pod) - github.com/parrot/parrot/commit/ba...2173441d22
dalek rrot: c847084 | dukeleto++ | docs/binaries/ops2c.pod:
Merge pull request #226 from Alekssasho/master

GCI ops2c POD
aloha Commit c847084 (Merge pull request #226 from Alekssasho/master) - github.com/parrot/parrot/commit/c8...2527d26df1
aloha Commit c84708425b (Merge pull request #226 from Alekssasho/master) - github.com/parrot/parrot/commit/c8...2527d26df1
dalek rrot: 9a8ba70 | dukeleto++ | docs/binaries/ops2c.pod:
[doc] Tweak ops2c POD
20:42
aloha Commit 9a8ba70 ([doc] Tweak ops2c POD) - github.com/parrot/parrot/commit/9a...502cd5a0bd
aloha Commit 9a8ba70ae8 ([doc] Tweak ops2c POD) - github.com/parrot/parrot/commit/9a...502cd5a0bd
dukeleto blarg. why are aloha *and* dalek reporting commits?
msg whiteknight please close www.google-melange.com/gci/task/vie...11/7181203 20:43
aloha OK. I'll deliver the message.
benabik dukeleto: bacek installed a module to announce issues and pull requests.. commits appear to be an unwelcome side effect.
dukeleto No good deed goes unpunished. 20:45
dalek rrot: 94df889 | (Alvis Yardley)++ | docs/binaries/parrot.pod:
Add 'parrot.pod' to 'docs/binaries'.
20:54
aloha Commit 94df889 (Add 'parrot.pod' to 'docs/binaries'.) - github.com/parrot/parrot/commit/94...c0c40d9511
aloha Commit 94df889f2d (Add 'parrot.pod' to 'docs/binaries'.) - github.com/parrot/parrot/commit/94...c0c40d9511
dalek kudo/nom: 64fd762 | jonathan++ | src/Perl6/Grammar.pm:
Add back the custom operator handling as we did it in ng. It needs re-doing, but that'll take the QRegex bootstrap, which - miracles aside - isn't going to be done before the December release. In the meantime, this unregresss the feature.
20:59
21:05 Yuki`N joined
dukeleto Yuki`N: how goes it? What are you hacking on? 21:11
Yuki`N I'm hacking on FreeBSD actually. 21:14
Making some sort of web portal
in Python.
bacek ~~ 21:24
"parrot: 9a8ba70 | dukeleto++ | docs/binaries/ops2c.pod:" 21:25
aloha Commit 9a8ba70 ([doc] Tweak ops2c POD) - github.com/parrot/parrot/commit/9a...502cd5a0bd
bacek aloha, stupid girl...
"parrot: 9a8ba70 | dukeleto++ | docs/binaries/ops2c.pod:"
much better
!rt
!pt
!pr
aloha Open pull requests for parrot/parrot : 1 pull requests open (gitster:1)
bacek sorry guys. I unloaded spammy module from aloha 21:26
cotto bacek++ 21:30
dukeleto bacek++ 21:32
!pr
aloha Open pull requests for parrot/parrot : 1 pull requests open (gitster:1)
dukeleto i like it
bacek: what other commands just got added? issues?
!issues
!sudo_make_me_a_sandwhich 21:33
Yuki`N: cool. Sounds fun.
21:50 elmex joined
dalek p: 73e0060 | jonathan++ | src/QRegex/P6Regex/Actions.nqp:
Add missing setting of ignorecase flag.
21:58
p: 2695eea | jonathan++ | src/QAST/Compiler.nqp:
Implement ignorecase subtype in literal. Well, try to - for some reason it seems to need ICU, which I don't have to hand. :-( Testing and Rakudo version bump welcome from anyone who does.
22:21 Tene joined
bacek_at_work ~~ 22:53
dukeleto, I can add more commands. It's metacpan.org/module/Bot::BasicBot:...le::GitHub with loaded Announce and PullRequests 22:54
23:16 schmooster joined 23:45 aloha joined
bacek_at_work !pr 23:50
aloha, !pr
23:53 aloha joined 23:54 aloha joined
bacek_at_work !pr 23:55
!pr 23:56
aloha Open pull requests for parrot/parrot : 1 pull requests open (gitster:1)