Parrot 2.4.0 "Sulfur Crest" Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere
Set by moderator on 2 June 2010.
cotto_work wacky: You don't have permission to access /parrot/chrome/common/css/wiki.css 00:00
whiteknight nice 00:01
ash_ that loads for me... hmmm
cotto_work I guess we have to keep our css secret.
ash_ i can even curl it
whiteknight protect it from ze germans 00:02
cotto_work trac.parrot.org//parrot/chrome/comm.../search.js <- how does that look?
whiteknight forbidden
cotto_work js or forbidden
ash_: ^? 00:03
ash_ works if you take out the extra /
with // it is forbidden
(for me) 00:04
kid51 forbidden for me with either one slash or two
ash_ i might be logged into trak? let me check
no, not logged in... hmm 00:05
works in FF, Safari and Chrome (on OS X), if i only have 1 /, with the // it always gives me forbidden 00:06
cotto_work seems to deny when I'm logged in, otherwise not 00:07
ash_ thats backwards... 00:10
you'd think when your not logged in you'd get access denied
cotto_work no, just broken
It's denying access to js and css files.
ash_ when your logged in? 00:12
cotto_work when my^H^HI'm logged in
00:27 ash_ joined 00:32 mikehh joined
dalek parrot: d02c64e | dukeleto++ | plparrot (2 files):
Attempt to fiddle with open() mocking
00:33
parrot: 3d41ad7 | dukeleto++ | t/sql/test.sql:
Add a test for FileHandle.open in PL/PIRU
tcurtis Hm... I just got a make fulltest pass on trunk at r47316(last change at 47310). I thought there were some problems being had? 00:45
cotto ohai 00:46
dalek rrot: r47317 | tcurtis++ | branches/gsoc_past_optimization (2 files):
All PAST::Node and PCT::Node "attributes" exact match tests pass.
01:10
01:18 plobsing joined
ash_ ping plobsing 01:32
plobsing ash_: pong 01:33
ash_ hi
plobsing so how goes it?
ash_ the robot competition is over, so now I am working on GSoC full time 01:34
i am trying to make a parser for signatures, its a bit annoying without regular expression :P, since i'd like to keep it all in C that the core has access to, which is pretty basic string ops
right now, i think i have a strategy that works, i am making a test program to ensure that my parsing of signatures is right, then i'll work on putting it into parrot 01:35
plobsing can I convince you to either stop hand-coding your parser or reduce the structure your signatures allow? 01:36
matching braces require at least a pushdown automaton IIRC
ash_ sure?
purl sure are a lot of joels in perl
plobsing If you want to do the signatures you proposed to the list (or some close variant), I'd look into some form of state machine generator. 01:37
ash_ yeah, bison could do that 01:38
plobsing pick your favorite tool and go for it 01:39
Bison is a good choice
ash_ i was thinking, most of its pretty simple because i only limit most modifiers to 1 character, or it only takes 1 character to identify which type of modifier it is, so i only have to look ahead 1 character. If i was doing more of a look ahead i'd need something else, but i think i have a strategy thats working...
plobsing well if it is working, stay the course. But I'd watch out for the matching braces you gave in examples. 01:40
cotto any reinvented wheels should at least be round 01:41
ash_ the postfix { } and [ ] only need 1 char to identfy them, '[' and '{', then right now i am either looking for a digit (for [ ]) or for { i grab the whole string until i reach '}' 01:42
those are the two complicated cases
{ } also checks that your in a structure definition, otherwise i say its an error (which is currently just me saying in stderr that its a bad identifier 01:43
if i have problems with this strategy after i test it further i'll probably use bison, since I know it and it can produce C that should be acceptable
dalek rrot: r47318 | jkeenan++ | trunk (135 files):
Merge tt1452_configure_debug branch into trunk. Implements Parrot::Configure::debug().
rrot: r47319 | jkeenan++ | branches/tt1452_configure_debug:
Branch has been merged into trunk and is no longer needed at HEAD.
plobsing purl: Branch has been merged into trunk and? 01:44
purl plobsing: i don't know
plobsing aw
01:44 aloha joined
plobsing ash_: are there any other issues that have come up? 01:45
ash_ um, i am not sure how to use the gen configuration things to properly mix my code into the source
plobsing ah. that *is* black magic 01:46
ash_ are the gen things pretty one off ish? or is it generic?
plobsing ash_: we have a decent general-case framework, but it is a little eccentric 01:47
are you a) trying to conditionally compile files? b) trying to conditionally generate cpp #defines? c) trying to insert arbitrary text into a template?
ash_ i'd like the nci.pmc to have two separate implemenations so they can be maintained independently with a common interface and at config time pick which one to put into src/pmc 01:49
i think that would be a good way of doing it
if thats not how things are normally done though i am fine with a different method
plobsing that seems like the simplest thing to do. which is the best IMHO. 01:50
ash_ so they probably wouldn't have to have any real parsing of their content, just a move or copy would do 01:51
plobsing I don't know of any steps that do that yet, but our config does determine the system-appropriate 'cp' and 'mv' commands 01:52
or you could just use the ExtUtils module that it winds up using half the time 01:53
ash_ I'll look into it, for now i'd like to get my parser and my test cases working, then i'll make sure it responds to the configuration commands (like --without-libffi) and works with a similar interfaces as the old NCI system (or update the old NCI system if it needs to be updated) 01:55
are there any issues you forsee with the llvm?
plobsing LLVM provides excellent targets for probing if I am not mistaken, so none from a config perspective. 01:56
and I don't anticipate any trouble from LLVM for actually generating code. so not really 01:57
ash_ its odd, in the llvm_config branch whoever wrote it doesn't use llvm-config (which comes with the llvm)
detect_llvm branch i mean 01:58
plobsing the author may not have been aware of the tool. or perhaps it isn't always installed or something. 01:59
my money's on the first though
ash_ i'll check on some other systems to see if its installed by default, but i think it is 02:00
tonight/tomorrow can i send you a copy of my parsing tool to see if you think its okay? assuming i don't run into problems getting it finished 02:01
plobsing ash_: sure. 02:02
so you intend on getting the parser done within the next few days? excellent! 02:03
pmichaud bacek_at_work: can I double-check the location of the multi branch you'd like me to review?
ash_ I'd like to get the libffi stuff done by monday or tuesday? if thats at all possible... i really wana work on the llvm stuff
tcurtis Fun. I have a segfault that disappears when I insert some extra says to see where exactly it happens.
pmichaud tcurtis: Welcome to my hell. 02:04
plobsing ash_: yes, that's the meat of the project.
sorear tcurtis: --trace=1
pmichaud oh, that's another part of my hell. Turning on tracing causes the segfault to disappear. :-/
hope you don't end up in that little dead end... 02:05
plobsing ash_: OK we have what you did, where you are, and where you're going. I think that's a wrap!
ash_ the parser returns a structure that has the various parts of the libffi function builder in it, so making the libffi calls will be easy when i am done with this, its just converting pmc's to the right types, and converting the result to the right pmc when i am done that will be annoying but i don't imagine to difficult
sorear also, you're not a parrot expert until you can generate a backtrace using gdb from a core dump
ash_ the only complicated data structure i might have to implement is a union type pmc
sorear protip: pbc_disassemble to map PC numbers into lines
ash_ s/might/will
plobsing ash_: good idea. if it is too much trouble (and unions aren't *that* common), leave it (at least for now). publish early publish often. 02:07
ash_ i also need to figure out if 64 bit ints, since $I0 registers are all only 32 bits 02:09
02:10 petdance joined
plobsing some parrot operations use 2 INTVALs to handle overflow. For example the tell op 02:10
or you could use a PMC 02:11
ash_ I noticed github.com/ashgti/parrot/blob/gsoc_..._h.in#L118 which seems like there should be some sort of portable way of doing 64 bit ints 02:13
02:14 preflex joined
sorear you mean like int64_t? 02:17
HAHA THAT'S C99
plobsing I don't think that's the way to do things. Users should be able to choose smaller (and possibly platform-native) int registers. 02:18
ash_ parrot could take the c approach to int, int could be a short, or a long, or a long long, its all system dependent, but its at least the size of a short 02:19
tcurtis Well, my segfault seems to have gone away, but I don't really know why. All I did was stop explicitly specifying the signature for pir::push. And if I change the code back to specifying it, I don't get a segfault, just empty strings in the array.
ash_ an int register could be at least 32 bits, maybe more if your system supports it
plobsing I thought that was the unwritten standard now.
that INTVAL64 seems like wishful thinking to me 02:20
ash_ i don't think it is, even on 64 bit systems it defaults to a 32 bit
plobsing really? I thought parrot would break in a number of places if you couldn't fit a pointer in an intval.
bacek_at_work pmichaud, github.com/perl6/nqp-rx/tree/multis 02:21
02:22 abqar joined
ash_ well, unless my long is 64 bits... is long 64 bits on OS X? hmm, i'll check 02:23
i thought it had to be long long before it was 64 though, one sec
tcurtis I think long is 64 bit on 64 bit OS X. Not on i386, though. 02:25
ash_ yeah, long is 64 bits with -m64 and 32 bits on -m32 02:26
so it is a 64 bit register then on os x, neat, i am completely wrong
plobsing neat is not the first word I'd use to describe the arbitrary sizing of C's integer types 02:29
02:29 TiMBuS joined
ash_ lol, true 02:31
if the int register has to be the size of a pointer you could use intptr_t or uintptr_t defined in stdint.h, those are supposed to be the size of a pointer for the native system 02:38
plobsing this is true. but we like to give the illusion that we can work with smaller intval types :p 02:39
dalek rrot: r47320 | tcurtis++ | branches/gsoc_past_optimization (2 files):
PAST::Pattern.blocktype matching works.
02:49
sorear ash_: that might work, except for the oh so minor detail that we can't use stdint.h 03:05
stdint.h isn't specified by C89
ash_ ah, dang, i didn't realize that was part of c99 too 03:06
cotto It's an 11 year old standard. I'm sure all the most commonly used compilers will implement it. 03:09
03:09 theory joined
ash_ well, Microsoft's compiler only supports bits of C99 not all of it 03:12
which is the trouble
cotto forgot the sarcasm tags 03:13
though they're usually implicit in discussions about standards and their implementation
ash_ going to bed, be back later 03:14
Coke trac looks better again. I think there might have been a site update earlier today that was supposed to be unnoticable. :| 03:18
cotto yup. 0.11.6 to 0.11.7 03:20
still looks broken though 03:21
Coke cotto: you're caching the failure.
?
BOOYAH, no you're not.
I'll open a ticket. 03:22
cotto silly webs 03:23
03:23 aloha joined
cotto so useful yet so stupid 03:23
aloha, aloha
aloha, status 03:24
03:26 parthm joined
Coke ticket opened. :P 03:26
cotto coke++
also, test site ticket pinged 03:39
03:44 janus joined 04:20 kurahaupo joined
cotto If anyone's up for a brain picking, I've got a list of Lorito questions that'll need answering during the design process. 05:30
trac.parrot.org/parrot/wiki/LoritoRoadmap
05:30 bacek joined
cotto ohai 05:30
05:35 szabgab joined
dalek tracwiki: v14 | cotto++ | LoritoRoadmap 05:38
tracwiki: trac.parrot.org/parrot/wiki/LoritoR...ction=diff
05:42 kurahaupo joined 06:06 uniejo joined 06:07 frodwith joined
Coke grumbles at cmp_str being removed. 06:07
cmp_str_iss, that is. (and cmp_num_iii) 06:09
dukeleto i am attempting to load perl6.pbc in PL/Parrot and getting this message: gist.github.com/423516 06:11
if anybody can throw me a bone, i would greatly appreciate it
plobsing Coke: it didn't do anything different from cmp 06:12
06:13 parthm left 06:18 eternaleye joined
Coke plobsing: danke. 06:24
dalek rrot: r47321 | tcurtis++ | branches/gsoc_past_optimization (2 files):
Block attributes other than symtable are now tested for exact matches.
plobsing I removed it because "$I0 = cmp_str $P0, $I1" did the *exact* wrong thing
rrot: r47322 | plobsing++ | trunk/t/pmc/freeze.t:
fix a coretest
Coke ah, crap. I tried to leapfrog from immutable strings to the end, and partcl is unhappy. 06:30
will have to go back and step through again. :P
dukeleto: random guess :dynops. 06:33
06:42 aukjan joined 06:46 viklund joined 06:50 frodwith joined
dalek rrot: r47323 | plobsing++ | trunk (4 files):
convert some raw Interp.stdhandle calls to use PIO_x_FILENO macros from stdio.pasm
06:57
purl I don't know how to convert some raw Interp.stdhandle calls to use PIO_x_FILENO macros from stdio.pasm.
rrot: r47324 | plobsing++ | trunk/docs/pdds (2 files):
mark some POD-PIR as invalid (core doesn't contain 'perl5_group' or 'tcl_group' libraries)
Coke arrrrgh. 07:00
for those of us that were relying on the old substr that both modified the existing string AND returned the substring, we're screwed. 07:01
yes?
(that is, replace__ssiis is not a dropin replacement for substr__ssiis) 07:02
msg bacek - what is the proper replacement code for the old substr__ssiis ? (replace__ doesn't have all the side effects) 07:03
purl Message for bacek stored.
bacek_at_work Coke, substr+replace combo 07:04
Coke so I have to do the same work /twice/? 07:06
bacek_at_work no. It's different work :)
Coke too zzz now. will grumble at you later.
07:17 tcurtis joined
tcurtis msg ash_ Have you seen blogs.perl.org/users/doubi/2010/05/...-spec.html ? He's using libffi to do something like Python's ctypes for Perl 5. Might be work looking into what he's doing. 07:22
purl Message for ash_ stored.
07:33 fperrad joined 07:41 clinton joined 08:04 tcurtis joined 08:05 Essobi joined 08:13 JimmyZ joined
dalek kudo: a1140cc | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get latest nqp-rx fixes
08:34
08:37 eternaleye joined 08:53 snarkyboojum joined
dalek rrot: r47325 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Simplify TMS.is_owned
08:54
rrot: r47326 | fperrad++ | trunk/examples/languages/squaak (2 files):
[squaak] refactor without dynops IO
rrot: r47327 | fperrad++ | trunk/examples/pir/befunge (3 files):
[befunge] remove opcodes getstdin/getstdout
rdinal: b22731f | fperrad++ | src/builtins/ (2 files):
remove opcodes getstdin/getsdout/getstderr
09:14
09:34 ruoso joined 09:46 purl joined
dalek lambda: ca471cc | fperrad++ | unl.pir:
remove some IO opcodes
09:53
lambda: 904f2d2 | fperrad++ | setup.pir:
chmod +x setup.pir
purl I don't know how to convert CRLF to LF.
zy-k: d09d73d | fperrad++ | setup.pir:
chmod +x setup.pir
10:01
purl I don't know how to convert CRLF to LF.
zy-k: f09651e | fperrad++ | lazy.pir:
remove some IO opcodes
bacek purl, purl? 10:03
purl rumour has it i am a retard or a trannybot or a fuckslut in GumbyBRAIN's mind or the national trannywreck champion or better than any of you #perl fucktards or very vile or the one to watch >:) or omniscient or 13 or well behaved or useless or fun or a megalomaniac or known to get testy if not fed or slacking off or gummy in scalar context or a silly bot or a stitch or a coprophiliac
bacek Yay. She've got her memory back 10:04
dalek a: 3defd23 | fperrad++ | lua/lib/lua (3 files):
remove opcodes getstdin/getstdout/getstderr
10:20
a: 3cb3b32 | fperrad++ | t/pmc/function_hll.t:
fix test
10:25 zibri joined, mikehh_ joined
bacek seen chromatic 10:28
purl chromatic was last seen on #parrot 4 days, 12 hours, 15 minutes and 41 seconds ago, saying: That seems workable. [May 29 22:12:45 2010]
10:29 lucian joined
dalek rrot: r47328 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Pacify compiler.
10:33
rrot: r47329 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Speed-up testing on TMS.is_pmc by checking "pmc" flags.
rrot: r47330 | bacek++ | branches/gc_massacre/src/gc (2 files):
Speed up PoolAllocator.is_owned by caching lo/hi bounds of arenas.
rrot: r47331 | bacek++ | branches/gc_massacre/src/gc (2 files):
Poor-man templates: implement macros for manipulating lists
rrot: r47332 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Use list macros instead of functions
rrot: r47333 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Skip marking already live or dead objects.
rrot: r47334 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Reimplement TMS.free_pmc_header.
10:38 lucian_ joined
dalek rrot: r47335 | gerd++ | trunk/tools/docs/filename_and_chapter.pl:
Add the PIR documentation to be generated as PDF
10:50
bacek msg chromatic List based TMS doesn't work... It's freaking slow. 11:09
purl Message for chromatic stored.
11:47 JimmyZ joined 11:49 whiteknight joined
dalek kudo: 3a6b43f | moritz++ | (2 files):
First shot at pure-Perl Cool.trans

The range unpacking is greatly inspired by (David Green)++'s p6c mail. Also pyramidine++ for his initial implementation.
11:58
whiteknight good morning, #parrot 12:02
bacek aloha, whiteknight 12:03
whiteknight hello bacek
so we're not eliminating constant PMCs in this iteration?
I do think that's something we should do soon, if not right now
We should be able to either register all PMCs, or anchor them somewhere in the object graph. 12:05
bacek whiteknight, yes. I would like to get rid of them. Just because it will be much easier to implement proper Generational GC without them. 12:06
whiteknight so should we keep working in the _no_constants branch, or wait and do it later?
bacek It's lower priority now. I've got workarounds in both TMS and MS2 for zombi^W constant pmcs. 12:08
I think proper encapsulation of PMC Attributes allocator will help more.
And hairy-hairy string compact pool... 12:09
whiteknight okay. Let's shelve the idea. I'll see about stealing that NCI/ParrotLibrary patchset for use in trunk since I think it's still a good idea and we can start over later 12:10
bacek deal
whiteknight, was it your idea to split string allocator into separate "class"? 12:11
whiteknight yeah
bacek than you can start now :) 12:12
whiteknight My idea was that the GC was really two parts: a fixed-width object allocator, and a buffer allocator
dalek rrot: r47336 | bacek++ | branches/gc_massacre (5 files):
Add dumb M&S GC based on GCMassacre wiki page.

Overall performance isn't so great due absence of fast Attributes allocator.
rrot: r47337 | bacek++ | branches/gc_massacre/examples/benchmarks/stress_integers.pir:
Add GC stress test for almost pure PMC allocator speed.
whiteknight we may want to merge them together into a single allocator, but I feel like the fixed-width allocator gives us a performance boost 12:13
bacek whiteknight, I don't think that merging them is good idea. 12:14
whiteknight yeah, I don't either. I'm just presenting ideas
bacek We just have to figure out proper interaction between PMC GC and String GC. Just because PMC GC is driving. 12:15
whiteknight the PMC/STRING header GC will have to run first and clean up the headers. Then the buffer GC goes over the headers and compacts the buffers 12:16
at least, that's how it is now, we could change it if you have a better ida
idea
bacek I do want GenGC.
And it will be not so easy... 12:17
But... Let me think for few minutes.
whiteknight maybe we need to change strings over to a proper refcount.
every STRING* header has a pointer to the buffer. str->buffer[-1] could contain a refcount
bacek no way!
whiteknight why not? Then buffer deallocation would be an automatic part of normal GC 12:18
bacek we do want compacting.
whiteknight I have to run an errand. I'll be back in a little while
we can compact after the GC run. Anything that is still alive with a positive refcount gets compacted 12:19
everything else, not so much
be back in a bit
whiteknight leaves
12:23 cognominal joined 12:27 JimmyZ_ joined 12:32 bluescreen joined 12:40 jsut joined 12:46 mikehh joined
pmichaud bacek: reviewing multi code is my first task after taking daughter to school 12:49
(was going to do it last night but fell asleep) 12:50
bacek pmichaud, I'll probably fell asleep soon.
or it's "fall"
anyway, everything in C<multis> branch in main nqp-rx repo 12:51
pmichaud bacek: excellent.
bacek want me to sync it with master?
pmichaud bacek: no thanks, I can review it okay as-is 12:52
bacek pmichaud, ok
12:58 lucian joined 13:01 lucian__ joined
dalek kudo: 2242efb | (Solomon Foster)++ | src/core/metaops.pm:
Implement the new rules for handling hypers of different lengths.
13:09
13:17 atrodo joined
whiteknight I don't like it when bacek falls asleep 13:17
so much work stops getting done until he comes back :) 13:18
bacek I do need to recharge my batteries
Unfortunately there is no compact nuclear power reactors yet
whiteknight certainly none approved for use with humans 13:19
bacek I don't need such approval 13:20
Coke \\o/ yay, partcl should be fixed by this evening. 13:21
... now stop breaking it. =-)
whiteknight Coke: far more likely is that you just stop fixing it :) 13:22
Coke ... well, I've discovered that makes me grumpy, so I'll try to avoid that in future. 13:25
whiteknight haha, yeah.
pmichaud: ping
pmichaud whiteknight: pong
Coke PING PONG! 13:26
purl hmmm... ping pong is for everybody
whiteknight pmichaud: does NQP-RX support functions with multiple return values?
I know it didn't used to, I'm wondering if that has changed
bacek good night. humans 13:27
Time for recharge
Coke good night, bacbok.
whiteknight goodnight
pmichaud whiteknight: it does, but not in the parrot sense of multiple return values 13:28
because there's not really a way to put multiple return values into a return exception
(in the parrot sense)
in other words, in NQP-rx it's perfectly legal to do 13:29
whiteknight at the risk of sounding exceptionally stupid, is there a reason why we're still using return exceptions for that, instead of something like a return continuation?
pmichaud return ($a, $b, $c)
but you get back a single RPA with three elements
whiteknight: what's a "return continuation"?
Coke whiteknight: by return continuation, you mean a normal parrot return?
because the parrot sub's .return isn't necessarily returning where the HLL is returning to. 13:30
whiteknight pmichaud: I'm being unclear. In my HLL, can I write grammar rules so my HLL allows multiple return values? Previously, PAST didn't support it
by "return continuation" I meant a continuation pointing to the label of some kind of return logic
or even the continuation that points back to the caller
pmichaud whiteknight: so, you're basically saying that we set up a return continuation at the beginning of a HLL sub, and then invoke it when we're ready to return? 13:31
how does that return continuation carry the return values?
whiteknight pmichaud: yes, basically. The benefit there is that you can invoke that continuation with any number of return values
pmichaud how does the nested Parrot sub locate the return continuation it's supposed to use?
how does the label that the return continuation targets obtain the return values? 13:32
13:32 JimmyZ_ joined
whiteknight you can locate anything if you store it in a sufficiently odd-named lexical 13:32
pmichaud: it all really depends how much cleanup work do you need to do at the end of every HLL sub? 13:33
pmichaud so, in the nested sub, we'd do
$P0 = find_lex '!return_continuation'
$P0(1, 2, 3, 4)
?
(short answer to your earlier question is that PAST has no problem with doing things with multiple return values.) 13:34
(one can create a :pirop<return> node that will generate a PIR .return(1,2,3,4) instruction. The trickier part is dealing with HLL returns.) 13:35
whiteknight yes, that's exactly what I was thinking 13:38
I'm sure i'm missing some feasibility details
so long as PAST can support it, I guess I really don't care how the sausage is made 13:39
pmichaud the problem is on the receiver side 13:41
in the outer sub that sets up !return_continuation, I get
$P0 = new ['Continuation']
set_addr $P0, label
...
label:
# we get here because someone invoked a 'return'
# how do we get the arguments? 13:42
i.e., how do we get the return values?
that's the part I don't know how to handle.
this is also the place where we have to have NotFound++'s "finalize" opcode working properly, so that we can roll back the caller stack to the correct continuation point 13:43
whiteknight pmichaud: well, we wouldn't do it that way. We can get the current continuation from the context object and invoke that directly 13:45
unless there is cleanup to do a the end of the function 13:47
pmichaud right... I'm interested in the cleanup case.
jnthn Not to mention that in Perl 6 you may need to type check and/or coerce the value.
Before returning it. 13:48
So a general solution needs us to be able to do something before returning.
Coke tcl specifically deals with returns as control exceptions, so this isn't a cross-HLL portable thing, either.
whiteknight ...in which case we would need to unpack the context, do cleanup/postprocesing, and pass them to the next continuaton
pmichaud ...unpack the context?
how does one do that (in PIR)?
whiteknight pmichaud: There may not be a good way to yet 13:49
Coke (rather; tcl deals with [return], [break], [continue], and [error] all the same way.)
whiteknight so this idea needs more consideration
pmichaud sure.
jnthn I'm not convinced that we'd end up with a cleaner result by doing some continuation based thing rather than exception based.
In both cases you need to clear up a bunch of contexts.
13:49 hudnix joined
pmichaud and keep in mind that when PAST was put together, Parrot had no ability to get hold of contexts (because they weren't PMCs) 13:49
whiteknight jnthn: it would be faster, if only marginally so
jnthn It may be more expensive to do it the continuation way since you have to clone the the chain of contexts when taking the continuation. 13:50
pmichaud it's definitely faster to invoke a continuation that jumps to the correct point than to throw an exception and go through a chain of exception handlers
whiteknight jnthn: it doesn't clone the contexts, I don't believe. Just takes a reference
pmichaud but as yet, continuations don't have payloads afaik
jnthn In the ideal case, yes.
pmichaud and there doesn't seem to be a way to grab any parameters from an invoked continuation
jnthn You have to know it's safe to do that though.
whiteknight continuations do take argument lists, and a call to get_args can retrieve them 13:51
pmichaud whiteknight: from PIR?
whiteknight from PIR
pmichaud example, please?
whiteknight that's something that I either need to hunt for or create
pmichaud ah
whiteknight but I know that, at least after the PCC refactors, it is very possible
jnthn pmichaud: I guess if we did stash a lexical continuation, we get lexical return semantics for free. ;-)
pmichaud also, when a continuation is invoked, is that considered to be a new caller in the call chain, or does that roll-back any intermediate callers?
jnthn: this is exactly what I've been asking for when I say that we need a better way to handle "leave semantics". See my messages from last November. :-) 13:52
whiteknight $P0 = new ['Continuation'] 13:53
set_addr $P0, exit_routine
exit_routine:
.param pmc args :slurpy
.param pmc args_n :named :slurpy
...
.return (args :flat, args_n :flat)
I haven't tested that, but something like it should work
pmichaud whiteknight: that works today? or you're proposing it?
I'm pretty sure that doesn't work today. I bet it doesn't even parse.
whiteknight the .param syntax may be the sticking point. 13:54
pmichaud iirc, imcc only accepts .param immediately after .sub declarations
it doesn't even allow blank lines or comments
whiteknight yeah, so we probably need to call the raw get_args opcode directly
jnthn Dunno if the .get_arg hack we use for exception handlers would work.
Or whatever it's called.
whiteknight .get_result?
jnthn Maybe
jnthn checks
pmichaud anyway, the ability to grab values from a continuation is effectively NYI in Parrot, which is one reason (among many) why PAST hasn't used them. :=) 13:55
jnthn uncaught_exception:
.get_results ($P0)
That one, yeah.
pmichaud I thought that just got me the exception object 13:56
not any payload
in the exit_routine case above, I already have the continuation object
jnthn pmichaud: Indeed, and I've no clue what it does in the continuation case.
pmichaud that's not what I need.
jnthn pmichaud: I was guessing it might get the actual argument(s).
pmichaud: Since the invoke of the continuation woulda set up a callsig.
iirc
pmichaud jnthn: does 'throw' use PCC to pass the exception? eww. 13:57
jnthn pmichaud: I'm pretty sure it does, or at least that's what the code looked like it was doing.
I ran over it the other day when fixing backtraces.
whiteknight pmichaud: if this is the functionality you are waiting on, I'll gladly try and get it put together soon
pmichaud whiteknight: what would be most useful is to see a working example where continuations are used to effect a 'return' from a nested block 13:59
whiteknight pmichaud: okay, I will try to slap that together first
pmichaud ideally where the routine (the outermost block) can intercept the return to do any cleanups it needs before doing the real return
I'm writing a short framework example... just a sec
whiteknight ok 14:00
nopaste "pmichaud" at 192.168.1.3 pasted "example with return handling" (36 lines) at nopaste.snit.ch/20879 14:04
pmichaud see nopaste. The XXX step is the part that isn't entirely clear at this point.
pmichaud tries .get_results 14:05
hmm, .get_results seems to work
nopaste "pmichaud" at 192.168.1.3 pasted "initial working example with return handling" (53 lines) at nopaste.snit.ch/20880 14:06
pmichaud now to see if it works with :slurpy
nopaste "pmichaud" at 192.168.1.3 pasted "initial working example with return handling and :slurpy" (51 lines) at nopaste.snit.ch/20881 14:07
pmichaud now to see what is happening with the caller stack. 14:08
looks like invoking the continuation "rolls up" the caller stack 14:10
oh, maybe not. 14:11
ummm....
so, can someone explain exactly what happens with contexts when a continuation is invoked? 14:12
whiteknight assuming I'm not missing anything, the continuation has a pointer to a context. When you invoke the continuation, that pointed-to context becomes current 14:14
any contexts that aren't being referenced by anything at that point will get GC collected
I don't know that any explicit unrolling happens. I'm not sure it's possible since it's not necessarily a linear path from where I am now to where I am going 14:15
pmichaud in src/pmc/continuation.pmc, we have
Parrot_continuation_check(INTERP, SELF);
Parrot_continuation_rewind_environment(INTERP, SELF);
I don't know what "rewind_environment" means here.
whiteknight _rewind_environment doesn't walk the list of contexts or anything
if I remember correctly, it doesn't do a hell of a lot 14:16
pmichaud ok.
whiteknight trac.parrot.org/parrot/browser/trun...sub.c:502. All it appears to do is set the current signature object 14:17
trac.parrot.org/parrot/browser/trun...sub.c#L502
pmichaud anyway, it wouldn't seem to be too difficult to add features to PAST::Block that would be able to set up a return handler like this 14:18
we'd want to support both options, because there are some languages for which returns really do need to be dynamic and exception based
(e.g., Perl 6)
14:18 JimmyZ joined
jnthn pmichaud: We could still use a way in PAST that makes it easy to handle performing some action on both implicit and explicit return values, fwiw. 14:19
pmichaud jnthn: this would do that.
jnthn pmichaud: The way I had it in alpha was horrible.
OK, great.
(I didn't put return value type checks back into master yet, mostly for not having a clean way.) 14:20
The alpha way made even me go "ick". ;-)
pmichaud well, it wouldn't completely handle that problem. but it would be closer 14:21
Coke pmichaud: blank lines and comments were fixed recently.
pmichaud Coke: ah yes, I remember seeing that. Coke++
Coke plobsing++
pmichaud jnthn: the "short" answer would be to have the implicit return simply invoke the continuation directly also. :-) 14:22
Coke # he's been doing a lot of IMCC upkeep lately, including the very old assignment syntax fix!
14:23 hudnix joined
jnthn pmichaud: Well, in alpha I had it just tack on to routines a last statement that essentially threw a return exception which of course was immediately caught by the code that followed it. 14:23
But, well, wasteful.
pmichaud agreed, that's a bit wasteful. but there's a bit of a mismatch in getting an implicit value versus values coming from a continuation/exception 14:24
still, a specialized PAST structure for the whole thing would likely work.
jnthn pmichaud: In PAST in general, yes. In Rakudo in general, we only ever have on return value however you look at it, in theory at least.
pmichaud: (e.g. a Parcel) 14:25
pmichaud PAST::Op.new( :pasttype<return_handler>, $mainline_past )
sets up a return handler, uses the value from $mainline_past if no return continuation invoked
or perhaps it's more of a PAST::Control node 14:26
I dunno.
or it's another special-purpose marker in PAST::Block
i.e., instead of :control<return_pir> it's :control<return_handler> or something like that. 14:27
Coke I am wondering why exceptions are more expensive than continuations here.
is it just an implementation issue, like with methods?
pmichaud Coke: because you have to walk the chain of callers looking for exception handlers
whereas with a continuation, you jump directly to the point registered with the continuation 14:28
no need to look up the call chain for handlers and figure out which ones are designed to handle the return exception.
Coke given that tcl (and perl6) explicitly support returning specific levels up the chain, that needs to be taken into account too. 14:30
14:30 plobsing joined
pmichaud well, the perl 6 case could be made slightly simpler -- we just attach the continuation as a specific property of the sub 14:31
so, &sub.leave actually invokes the return continuation
Coke pmichaud: yes, but that'll just return to the caller, yes? you're not necessarily going to know at compile time if the sub is going to do something wonky with the call chain.
(so I imagine you'd have to invoke N return continuations to get that effect.) 14:32
pmichaud right, we don't have a way for the intermediate subs to say "hey, I need this cleaned up before you jump around me"
i.e., an do-this-on-exit sort of thing. 14:33
but overall you're correct, I don't think in the general case there's going to be a significant performance difference between an exception-based return and a continuation-based one. 14:34
the real cost is in setting up the exception/continuation, not in handling it.
Coke (on exit handlers) tcl's needs are even worse there. =-)
(I need enter, leave, enterstep, and leavestep granularity.) 14:35
14:35 hudnix joined
Coke (though i suspect in my case, I'm going to just recompile the sub and generate a new AST for that case) 14:36
nopaste "pmichaud" at 192.168.1.3 pasted "another working example, invoke routine's return continuation directly" (45 lines) at nopaste.snit.ch/20884 14:39
pmichaud usefully, here's an example that doesn't involve creating an exception handler or continuation at all 14:40
this would work if you don't care about intercepting the return values
i.e., you're willing to return them directly to the caller.
more importantly, PAST already supports this. :-)
I might switch NQP to use it. 14:41
(instead of the exception-based return)
the downside is that it does involve making an otherwise invisible entry in the lexpad 14:42
jnthn The upside of that is that you then tend to get stuff having sane closure semantics. 14:44
Coke that would probably allow me to clean up partcl-nqp, since I have to avoid your exceptional returns for mine.
pmichaud Coke: yes, that's correct.
jnthn: I agree -- I may want to re-examine S04 with this new information in mind. 14:46
14:52 Draco joined
Draco Hello, people! 14:52
moritz hello Draco 14:54
Draco This may seems silly, but where is the parrot root directory, actually? 14:56
moritz depends on what you mean by "parrot root directory"
Draco I am reading through the tutorial and it mentioned that I should run the mk_language script from parrot directory 14:57
Coke the install dir?
ah, that's the build dir.
moritz Draco: the tutorial assumes that you have a source directory of parrot lying around
if you see a Configure.pl, you're likely there
Draco Ah, that is the one that I download, then run the make install-dev from? 14:58
Coke install-dev is also old directions. just 'install' works. 14:59
Draco Okies, then I get to the part where I start to add grammar....
But I can't find the parse directory in the Squaak/src 15:00
parser*
There is a squaak directory inside squaak/src...... But there is no grammar.pg inside, but I can find grammar.pm 15:01
15:01 bubaflub joined 15:04 theory joined
Draco So... Is the grammar.pg same as Grammar.pm? 15:04
particle yes, that's another but of unupdated history 15:05
Draco Okies, thanks.... 15:06
As I go down even further, I see the tutorial mentioned about changing the rule "value" to expression, but there is no rule "value".... So, I figure, maybe I just type it out myself... 15:07
15:08 patspam joined
Draco But the next line mentioned about renaming rule "integer" as "integer_constant" .... That rule is not there either... 15:09
Or does that merely means rename the "integer_constant" in the rule "expression"?
Sorry for so many questions :D 15:10
15:11 khairul joined, ruoso joined
pmichaud afk, errand 15:13
Coke draco - if you're reading off the blog posting, those docs are now ancient. 15:14
and I don't think they were ever updated. (so questions are inevitable, don't worry)
Draco: not that it helps you, but trac.parrot.org/parrot/ticket/1673 15:17
the just created ZOMG please update those docs ticket. 15:18
Draco Thanks much, Coke.... 15:24
I was reading from Wikibook, but I supposed it doesn't differ much from the blog 15:25
whiteknight The wikibook is older too 15:28
I haven't updated that in some months
it doesn't look like anybody has updated much documentation in some months 15:32
dalek TT #1673 created by coke++: need better "create a language docs"
TT #1673: trac.parrot.org/parrot/ticket/1673
15:37 cognominal joined
fperrad karma fperrad 15:42
purl fperrad has karma of 2379
dalek rrot: r47338 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] add a 'Hello World' example
15:48
Coke hello, FranƧois 15:52
sorear bacek: I am a fan of the proposal that we eliminate the substr "optimization". substr copies and no buffers are ever shared... 15:57
15:58 davidfetter joined 16:03 theory joined
whiteknight sorear: what's the purpose of that? Substrings get more expensive, memory requirements get higher, and there aren't a lot of gains that I can se 16:06
16:08 Maddingue joined
sorear memory requirements get lower because random strings in parse trees no longer retain the original 16:11
memory requirements get lower because the "start" field can be scrapped
substrings get cheaper because compact_pool has less numbers to work with
NotFound That can be easily tested just by changing a function, isn't it? 16:12
sorear it needs to be attempted and profiled. (once)
Coke I was under the impression bacek had already ripped out that optimization.
er, imagine I used the finger-quotes there.
16:13 tcurtis joined
whiteknight sorear: we can do a test, but I am extremely dubious that it would have a net improvement on memory use, especially for large parse jobs 16:14
Coke sorear, whiteknight: at one point, the substr optimization was keeping very very many copies of the input file. I /thought/ that had been fixed, though. 16:36
dalek rrot: r47339 | mikehh++ | branches/gc_massacre/MANIFEST:
re-generate MANIFEST
rrot: r47340 | mikehh++ | branches/gc_massacre (2 files):
add svn properties
Coke but any memory improvements ++. =-)
whiteknight Coke: well that certainly sounds like a bug. Any substrings should point into the original buffer and require no additional storage allocation 16:37
NotFound We are still getting used to immutable strings, many things we were used to are not longer true. 16:41
whiteknight Yes, there are some growing pains 16:43
but overall, I would say it was a very easy transition
NotFound Yeah, and helped a lot to clear some long-running mistakes. 16:44
dalek rrot: r47341 | NotFound++ | trunk/t/pmc/resizableintegerarray.t:
tests for RIA delete_keyed_int
16:53
rrot: r47342 | mikehh++ | branches/gc_massacre/src/gc/list.h:
fix codetest failure - there should be at least one space between a C keyword and any subsequent open parenthesis
16:53 theory_ joined 17:01 cotto_work joined
Coke hurm. git status on master showed how far ahead of origin I was. the branch doesn't seem to provide that info. 17:05
whiteknight is the branch tracking the origin? 17:10
17:11 theory joined 17:26 jsut joined 17:53 dmalcolm joined
Coke *blank stare* 17:56
(how do I check that?) 17:57
mikehh make corevm/make coretest FAIL - 37 subtests fail, 208 subtests and 1 test not even run 18:06
t/compilers/imcc/syn/clash.t - Failed test: 13 in testr
all other tests PASS (pre/post-config, smoke (#34197), fulltest) at r47342 - Ubuntu 10.04 amd64 (g++)
t/op/annotate-old.t - TODO passed: 1 in testf
get a couple of TODO passes on i386 which don't on amd64 18:07
bubaflub Coke: you could try `git branch -a` 18:09
to see all branches
dalek kudo: a0b6d74 | jimmy++ | src/Perl6/Actions.pm:
fixed #75114: Can't augment class Int
18:53
Coke bubaflub: that doesn't really show me anything. 18:54
I mean, I get a list of branches, with a * next to the active one.
but that's it. 18:56
bubaflub Coke: ah, i thought you wanted to see your branches
18:56 ruoso joined
bubaflub Coke: did you want to setup your local branch to track a remote branch? 18:57
Coke bubaflub: in the past, "git status" has shown me how many commits ahead of the origin I am. 18:58
it's not showing me this now. I'm assuming it might have something to do with the fact that I'm on a branch.
bubaflub Coke: it may be the way that the branch is set to track 18:59
can you nopaste the relevant section from your .git/config
should be something like 19:00
[branch "topic"]
and then a line below that that says merge =
Coke ENOSECTIONLIKETHAT 19:02
bubaflub yikes
Coke oh, .git/config, not ~/.gitconfig. =-)
bubaflub ah, yes
Coke there is no [branch "<branchname>"] there.
bubaflub what do you see in there? perhaps it's in a section [remote ...] 19:03
nopaste "coke" at 192.168.1.3 pasted "git config" (15 lines) at nopaste.snit.ch/20890 19:04
Coke the branch is 'revive'
19:05 gbacon joined
bubaflub Coke: i'm staring at it and not figuring out why it wouldn't give you the "you are ... commits ahead" kind of thing 19:07
atrodo Coke> Your current branch is "revive" and the branch that will tell you are N commits ahead is master? 19:08
Coke atrodo: yes. 19:24
not that I'm ahead on my local copy of master atm to double check.
atrodo Coke> Using what little I do about this black magic and what bubaflub was saying, the remote option of the master branch section in your git config makes the master branch track the origin, thus giving you the ahead N commit info 19:28
would be my guess
19:31 cotto_work joined 19:33 jsut_ joined, pjcj joined 19:46 whiteknight joined
NotFound mikehh: What TODOs? It passes just one for me. 19:47
Oh, you mean with testf... 19:49
mikehh NotFound - t/pmc/packfile.t - TODO passed: 34 in coretest, smoke, testb, testf and testr
NotFound: t/op/exit.t - TODO passed: 6 in testf
thats as well as t/op/annotate-old.t - TODO passed: 1 in testf 19:50
whiteknight misread that chromatic called David Foster Wallace a "Porno Hero" instead of a "Pomo Hero"
the internet has done bad things to my mind 19:51
NotFound The packfile one is passing since I've added lacking features in the packfile PMCs. Still don't know what is the problem in 64
19:51 theory joined
NotFound whiteknight: Internet is for porn! 19:51
whiteknight NotFound: well, I certainly haven't found another use for it
NotFound video.google.com/videoplay?docid=54...227974645# 19:52
cotto_work avoids clicking 19:53
NotFound cotto_work: Is just a funny video
cotto_work sfw?
purl sfw is safe for work or safe for wife or sun freeware but you knew that.
NotFound cotto_work: that depends of the humor sense of the coworkers and your volume level. 19:54
cotto_work I'll hold off then. If it's that WoW video, I'll have already seen it anyway.
NotFound cotto_work: yes, that video. 19:55
purl that video is the major reason why anyone still has even the faintest idea who Glenn Danzig is.
cotto_work I think it's nice to have purl back. I'm not entirely sure though.
NotFound don't know who Glenn Danzig is 19:56
cotto_work maybe you should see that video
NotFound purl: Glenn Danzig?
purl notfound: bugger all, i dunno
NotFound purl: Internet? 19:59
purl Internet is for porn or Serious Business.
20:03 Psyche^ joined
bacek Good morning, humans 20:24
sorear, whiteknight, I've got feeling that removing "shared buffers" will actually speed-up parrot. 20:26
And reduce memory usage because compact_pool can be precise 20:27
dalek p-rx: a68924f | pmichaud++ | src/Regex/P6Regex/ (2 files):
Update ** quantifier a bit, recognize trailing spaces as request to

specifies, but it's a good first cut.)
20:29
p-rx: 9e955a4 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get FileHandle.tell.
p-rx: 38fc6e9 | pmichaud++ | src/Regex/P6Regex/Actions.pm:
Add :sigspace handling to range quantifiers (e.g., <x> ** 0..3)
pmichaud bacek: still trying to get to review multi branch :) 20:31
bacek pmichaud, :)
darbelo bacek: I did some thinking on 'unshared buffers' and it shouldn't be too hard to do.
bacek darbelo, just ripping a lot of code. 20:32
whiteknight bacek: I would like to see an experiment without shared buffers, but I'm not hopeful 20:33
darbelo The first step would have to be to disable the 'cow' parts of strings, then a global s/strstart/_bufstart/ replacement, and poof! 20:34
bacek whiteknight, do you have any preferred test for it? 20:35
whiteknight bacek: I don't know. Standard benchmarks and NQP/Rakudo builds. NQP parsing seems like it would be the ultimate test of string handling
20:35 theory joined
darbelo whiteknight: If anything benefits from precise compaction, it'll be that. 20:36
whiteknight darbelo: maybe. I'm open to data
darbelo Also, it would make it easier to do some of the stuff I've failed to do to strings in the past. 20:38
;)
bacek darbelo, just create unshared_buffer branch then :) 20:39
It will take couple of hours to implement 20:40
20:40 bluescreen joined
darbelo And, COW complicates NFG. 20:40
dalek p-rx: 5fb2d58 | pmichaud++ | (3 files):
Add \\e in quoted strings, refactor 46-charspec.t .
20:41
whiteknight has to go to the store. be back later
bacek slacker! 20:44
purl slacker is like lazy bum
20:47 joeri joined
mikehh bacek: got a couple of problems with gc_massacre 20:49
bacek mikehh, only couple??? :) 20:51
mikehh g++ don't like src/gc/pool_allocator.c - assigning (size_t) - 1 to a pointer 20:52
bacek change it to something like MAX_INT 20:53
purl bacek: that doesn't look right
cotto_work toxic botsnack
purl thanks cotto_work :)
bacek (I'm not sure that it's in C89)
mikehh bacek: and t/op/string_mem.t hangs on test 6 20:54
bacek mikehh, because test is stupid...
And we didn't implement GC.get_info yet :) 20:55
particle INT_MAX is C89, limits.h 20:56
Coke purl, i hope you choke on that botsnack.
purl thanks Coke :)
mikehh bacek: yeah that test is a hangover for COW and stuff 20:57
from 20:58
bacek: in make test the opsc tests seem to go out-to-lunch as well 21:06
bacek mikehh, let me check 21:07
21:09 gbacon joined
cotto_work code.google.com/events/io/2010/sess...ik-vm.html (video is up now) 21:10
bacek mikehh, yeah... String part of GC isn't implemented yet. 21:16
21:19 lucian joined
cotto_work opsc tests are really slow in gc_massacre but they appear to be running ok so far 21:19
dalek rrot: r47343 | gerd++ | trunk/tools/docs/filename_and_chapter.pl:
make necessary changes to integrate "ch04_variables.pod" and to improve the table of contents
bacek untill OOM killer will kill it
cotto_work true. It does seem to have an unusual love for my delicious memory. 21:20
mikehh stopped t/compilers/opsc/02-parse-all-ops.t after 10 minutes and after it grabbed over 2GB at 10/20 21:21
cotto_work I'd prefer that it eat my memory rather than my brains. 21:22
neither would be ideal
mikehh cotto_work: refuse to comment on that :-} 21:23
cotto_work for the time being, the only one I can upgrade is my memory
darbelo Have it eat cotto's brain or my memory? Tough choice there.
21:24 hudnix joined 21:25 theory joined
dukeleto 'ello 21:27
atrodo Interesting. Kylix messes with the FPU which causes parrot to die on divide by zeros or invalid floating point operations 21:28
darbelo ...why does it mess with the FPU? 21:30
atrodo :shurg: No idea. Probably a vestage from it's Windows roots 21:31
Thankfully, now that I know what it does (masks some FP excetptions), it does give an easy way to undo them
darbelo And, mostly out of curiosity, does mess it up enough that we should be dying?
:)
atrodo Probably. It turns divide by zero's into a SIGFPE 21:32
darbelo Ouch.
21:34 davidfetter joined
GeJ Good morning everyone. 21:36
everyone Good morning GeJ. 21:37
dukeleto davidfetter: howdy
davidfetter what's new & good, dukeleto ?
dukeleto davidfetter: hanging out at OSBridge, hacking on PL/Parrot 21:38
davidfetter got new compadres for that?
dukeleto davidfetter: telling people about it and drumming up interest 21:39
davidfetter :)
dukeleto davidfetter: trying to get PL/Perl6 to work, hitting some brick walls
davidfetter do you have some idea where those are? 21:40
purl those are fairly generic
dukeleto davidfetter: loading the perl6 PBC errors out now 21:41
davidfetter hrm. is there some parrot sha1 (or whatever svn uses) that doesn't do this? 21:42
pmichaud nqp now supports primitive multisubs. bacek++ 21:44
dukeleto davidfetter: what exactly do you mean? i am using Parrot trunk and rakudo master
davidfetter did any recent parrot commits break this? 21:45
rakudo ones?
dukeleto davidfetter: i don't think so. "parrot perl6.pbc" works, but I am not doing something correctly, most probably 21:46
21:47 bluescreen joined
darbelo dukeleto: rakudo can be fairly libreal with it's uses of parrot guts, sometimes. 21:47
dukeleto darbelo: yes, i imagine rakudo is doing special things 21:48
darbelo It woudln't surprise me at all that all three of you, parrot and rakudo were doing something wrong ;)
dukeleto darbelo: indeed :)
dalek p-rx: eba2f2b | pmichaud++ | (3 files):
Merge branch 'multis'
21:49
pmichaud bacek: multis branch merged and updated in parrot. enjoy. :-)
p-rx: 7006d42 | pmichaud++ | t/nqp/49-multis.t:
Rename multi tests.
p-rx: 9612a72 | pmichaud++ | src/NQP/ (2 files):
[nqp]: Eliminate $*METHODTYPE from grammar and actions.
p-rx: 9d44980 | pmichaud++ | src/stage0/ (4 files):
Update bootstrap.
dukeleto pmichaud: i am getting this when attempting to load perl6.pbc from Parrot's C API : gist.github.com/423516 any ideas? 21:50
pmichaud dukeleto: no immediate ideas, but I do wonder if rakudo's dynops and dynpmcs get correctly loaded.
afk for a while 21:51
dukeleto pmichaud: $P0 = get_root_global ['parrot'], 'P6metaclass' <-- this seems to return NULL (line 44 of src/Perl6/Compiler.pir)
jnthn perl6;Perl6;Compiler;main
main?
purl hmmm... main is the package of the test script
jnthn wonders if we should be in :main
(on a library load)
pmichaud yeah, seems like :main shouldn't be invoked there either. 21:52
21:52 cotto_work joined
jnthn dukeleto: That almost certainly means something that needs to be loaded isn't. 21:52
pmichaud if P6metaclass is null, that means that P6object.pbc isn't being loaded
21:52 tcurtis joined, patspam joined
pmichaud which likely means that the :load :init subs from the perl6.pbc file aren't being invoked 21:52
jnthn Most probably
pmichaud or, if they are, that the load_bytecode that they do (in order to load the other libraries) aren't being honored somehow.
jnthn Note taht we don't laod P6object explicitly, but other things we do load will in turn load it. 21:53
pmichaud correct
P6object gets loaded by PCT, which is loaded by HLL.pbc
(or something like that)
there's a reasonably long chain of library loads that happen early on in any pct-based environment.
dukeleto jnthn, pmichaud: yeah, i loa P6object manually, but some other dependency must be missing
dalek rrot: r47344 | pmichaud++ | trunk/ext/nqp-rx/src/stage0 (4 files):
[nqp-rx]: Update nqp-rx with multisub support (bacek++), other fixes.
21:54
pmichaud or it could be loading things into the wrong place.
afk for a while
NotFound dukeleto: if the problem is related to dynops loading, anything can fail in the most bizarre ways. 21:55
dukeleto NotFound: yes, lots of dynops are involved. 21:56
darbelo I would investigate pbc load order first. Rule out the obvious suspects first.
bacek pmichaud, hooray! 21:57
next step - traits parsing :)
darbelo See if you can load rakudo from straight PIR. Then try again from inside pl/parrot 21:58
NotFound darbelo: a quick workaround can be to load exactly the same dynops as rakudo and in the same order... good luck finding that order ;)
dalek nxed: r488 | julian.notfound++ | trunk/winxedst1.winxed:
more refactor of simple argument list
dukeleto darbelo: i have a skeleton C file which attempts to load perl6.pbc and fails 21:59
22:01 silug joined 22:05 snarkyboojum joined
dukeleto seems like perl6_group is not getting .loadlib'ed correctly, probably because it can't be found 22:07
i see the light! 22:08
whiteknight dont walk into it
dukeleto parrot perl6.pbc only works from the directory that perl6.pbc is in 22:10
darbelo Is that an installed perl6?
dukeleto if you try parrot /some/dir/perl6.pbc, you get the error about "Null PMC access in find_method('new_class')"
oh noes! 22:11
it is not
whiteknight: trying an installed perl6 now
darbelo An non-installed rakudo can't function out of the build dir IIRC.
It used to be a note in some SHOUTING FILE or another. 22:12
jnthn darbelo: Correct.
It probably is in one, but of course nobody reads them...unless you call them IGNOREME :-)
dukeleto using an installed rakudo is the way to go 22:14
darbelo Until this step is performed, the "perl6" executable 22:15
created by C<make> above can only be reliably run from the root of
Rakudo's build directory.
That's on the README ;)
'this step' == make install 22:16
dukeleto darbelo: that is what I get for not reading the README :) 22:18
i get: Class '[ 'ClassToBe' ]' not found now 22:19
darbelo I wonder if symlinking it to README.NOT would make more people read it...
dukeleto: Failing differently can be a form of progess ;) 22:20
dukeleto darbelo: indeed. but i just borked postgres so hard it can't shut itself down...
darbelo said 'progress' not 'perfection' ;) 22:21
dukeleto now i get this: gist.github.com/424624 when loading perl6.pbc from C 22:42
22:44 theory joined 22:49 kid51 joined
whiteknight Anybody have objections if I merge in the ns_func_cleanup branch? 22:54
I was hoping for feedback, but no
cotto_work Does it need a deprecation cycle?
+1 if not
kid51 What does it do?
Has it been described at all on parrot-dev?
whiteknight kid51: yeah, I sent out an email about it a few days ago 22:55
warnocked
purl warnocked is en.wikipedia.org/wiki/Warnocked
kid51 reads parrot-dev 22:56
cotto_work Yay. trac.parrot.org is unbroken
sorear What was wrong?
cotto_work coke++ for complaining about it through the proper channel
kid51 sorear: My impression was that it wasn't loading its CSS
cotto_work It was denying access to css and js for users who were logged in. 22:57
kid51 That was approx 22 hours ago. I haven't backscrolled the channel since then.
whiteknight lists.parrot.org/pipermail/parrot-d...04335.html
darbelo whiteknight: Cleanup is always good. Non-breaking cleanups are best.
whiteknight it's a breaking cleanup, but the function renames have been deprecated for a long damn time
cotto_work fire at will, then 22:58
whiteknight working... 22:59
purl working is a good approximation.
cotto_work just don't make Rakudo cry
or partcl
kid51 reads whiteknight's post ...
src/global.c -> src/namespace.h
a .c file became a header file?
whiteknight I make no promises
kid51, no. Might be a typo
Coke plays with his new ubuntu netbook 23:00
cotto_work I don't see any such change 23:01
just some x.c -> y.c and x.h -> y.h changes
whiteknight if Rakudo uses any of these functions, it's going to need a patch 23:05
whiteknight is building now 23:08
kid51 whiteknight: you are belatedly dewarnocked; check mail 23:09
23:11 dngor joined
whiteknight kid51++ 23:11
kid51 whiteknight: After all, if *you* can't figure out WTF those tickets are talking about, no one else is likely to either. 23:12
make coretest still doing badly: smolder.plusthree.com/app/projects/...ails/34202
whiteknight kid51: I was hoping some of our longest-active members would have some intrinsic memories about them 23:13
kid51 Well, you could always try svn blame on some older versions of those files.
Now, this is somewhat of a philosophical position on my part, which we've touched on before. 23:14
While I respect the work of our predecessors in the project, I don't think we have to treat their brainstorms re TODOs as mandates for action. 23:15
In particular, unless the TODO is consistent with a design decision that we continue to hold, we shouldn't be bound for it.
s/for/by/
As far as I am concerned, such RTs are technical debt. 23:16
23:17 workbench joined
kid51 So if we don't have a PDD which supports what's in the TODO comment, I don't think we should retain the TODO or the corresponding ticket. 23:17
But, as we well know, other committers have different opinions.
23:18 darbelo_ joined
kid51 And there have been times when I have gone on a ticket-closing rampage only to have my knuckles rapped thereafter. 23:18
That being said, we currently have 690 open tickets (Report 10) 23:19
That's at the high end of what we have historically been willing to tolerate.
700 open tickets is a red flag
23:19 cotto_work joined
kid51 At the time of conversion from rT to TT, I know we got down under 600. 23:19
pmichaud whiteknight: fwiw, Rakudo uses at least some of the functions you're renaming there.
whiteknight pmichad: yes, I just tried building. I'll submit a patch or something 23:20
pmichaud*
how do you prefer I go about it, send you a patch? fork rakudo on github and make changes there for you to pull?
pmichaud we generally prefer patches still 23:21
or, you could create a branch in the rakudo repository
but anything will work, really -- we now have enough git-fu to be able to figure out how to deal with merging :)
just know that github "pull requests" still tend to get ignored :)
dalek TT #1219 closed by whiteknight++: Parrot's default namespaces should be fully typed 23:22
TT #1219: trac.parrot.org/parrot/ticket/1219
TT #1220 closed by whiteknight++: Stop depending upon typed namespaces in internal_ns_keyed()
TT #1220: trac.parrot.org/parrot/ticket/1220
TT #1221 closed by whiteknight++: Match HLL of enclosing namespace in internal_ns_keyed()?
TT #1221: trac.parrot.org/parrot/ticket/1221
TT #1222 closed by whiteknight++: Use the untyped interface in Parrot_find_global_n()
TT #1222: trac.parrot.org/parrot/ticket/1222
TT #1224 closed by whiteknight++: Fix temporary hack for cache invalidation; should be a namespace function; ...
TT #1224: trac.parrot.org/parrot/ticket/1224
TT #1225 closed by whiteknight++: Method cache invalidation should be a namespace function
TT #1225: trac.parrot.org/parrot/ticket/1225
cotto_work It's a tracpocalypse!
Coke some of those old NS tickets were from chip 23:25
whiteknight: I'll have partcl master working shortly so you can test against that too.
sorear you mean partcl-not-nqp? 23:28
bacek_at_work whiteknight, cheap karma for closing trac.parrot.org/parrot/ticket/655 23:30
pmichaud Coke: have you had to give up on partcl-nqp? 23:31
Coke pmichaud: no. But partcl was so broken it needed some lvoe 23:33
pmichaud Coke: okay, just checking. 23:34
Coke i'm not trying to add any new stuff to it, but Keeping it passing make test should be possible.
bacek_at_work I've got an idea for some internal cleanups. 23:35
Let's remove "buffers" (and all related stuff). PMC and STRING are enough.
pmichaud bacek_at_work: your multis brance was awesome. great work.
whiteknight pmichaud: okay, I'll get a patch together and send that to you before I merge. Coke, once you get partcl working I'll try to do the same 23:36
pmichaud *branch
bacek_at_work Currently it's used in freeze/thaw only.
pmichaud, I almost blindly copied stuff from rakudo :)
pmichaud whiteknight: excellent. You may have better responsiveness if you send it to moritz, jnthn, etc. in addition to me. My schedule is sometimes not my own. 23:37
s/sometimes/often/
bacek_at_work And create Buffer PMC with .push_byte, .encode, .decode, etc methods.
pmichaud bacek_at_work: does what you're suggesting likely have any relation to the work that masak++ is trying to do on a Buf type?
bacek_at_work pmichaud, yes
pmichaud bacek_at_work: excellent.
+1 from me, then :)
bacek_at_work It will solve few problems at once. 23:38
1) Currently "buffers" are not accessible from pir
2) There is a lot of logic in GC to handle them.
pmichaud it sounds like a nice win to me
bacek_at_work 3) "buffers" are mutable by nature. Strings are not
pmichaud gotta run -- bbl
dalek TT #1081 closed by bacek++: segfault in Parrot_HashIteratorKey_get_string
TT #1081: trac.parrot.org/parrot/ticket/1081
cotto_work There are quite a few design questions for Lorito. Would it be overkill to ask for volunteers to take on the various primary issues mentioned in LoritoRoadmap and have them write up LDDs on the wiki, similar to the existing PDDs? 23:43
trac.parrot.org/parrot/ticket/655 is closed 23:46
dalek rrot: r47345 | tcurtis++ | branches/gsoc_past_optimization (2 files):
Added PAST::Pattern::Op attribute exact matching.
23:49
rrot: r47346 | tcurtis++ | branches/gsoc_past_optimization (2 files):
PAST::Pattern::Val tests for attributes matching exactly pass.
jnthn bacek_at_work: See also something I started hacking up to help masak++ last night - github.com/rakudo/rakudo/commit/39b...ceefe99e0. Idea is it just gives a byte view of a string and then when you modify it, it'll make a copy in a byte array to work with instead.
bacek_at_work: But for the "look at the bytes" only case, it's more efficient than copying right off.
bacek_at_work: Didn't get very far with it yet though, and ended up with ETOOMUCHDAYJOB today. 23:50
bacek_at_work jnthn, yeah. I'm writing proposal to maillist now. Actually rakudo-specific byteview will be unnecessary if it will be accepted :) 23:51
whiteknight bacek_at_work: GC doesn't trace C stack? I was positive it did
the code is all there, in any case
bacek_at_work whiteknight, it do not.
whiteknight I'm not sure I believe that. I know it used to at some point
jnthn bacek_at_work: Sure - feel free to use the Rakudo one as a starting point if the proposal is accepted, anyways. 23:52
bacek_at_work Code is there but we never call Parrot_gc_trace_root(GC_FULL)
whiteknight Some point recently
jnthn We...don't trace the C stack? :-S
sorear if not the C stack, what *do* we use as roots?
opbots trust jnthn
slavorgn Ok
slavorg Ok
bacek_at_work sorear, "interp" 23:53
dalek tracwiki: v15 | cotto++ | LoritoRoadmap 23:54
tracwiki: put primary design questions in the approximate order they'll need to be answered
tracwiki: trac.parrot.org/parrot/wiki/LoritoR...ction=diff
sorear Actually, this is great. 23:55
We have a _precise GC_
jnthn I thought we also had code that relied on the C stack being traced, but maybe I'm wrong.
dalek TT #655 closed by cotto++: Kill non-working GC cores
TT #655: trac.parrot.org/parrot/ticket/655
whiteknight jnthn: I'm with you. I think bacek must be missing something 23:56
Last time I really scrutinized the code, we were tracing it 23:57
bacek_at_work whiteknight, do you have valgrind? 23:58
or gdb? 23:59
purl it has been said that gdb is the command line debugger from the gnu project (common on unix platforms)
jnthn whiteknight: I've done little Parrot core hacking for a while, it's entirely possible I'm rusty on the latest. :-)
bacek_at_work just run "hello.pir" and set breakpoint into trace_mem_block.
jnthn whiteknight: I just worry a little because I know full well I've until now written code and had in the back of my mind, "the stack is traced".