Parrot 3.7.0 "Wanda" | parrot.org | Log: irclog.perlgeek.de/parrot/today | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 17 August 2011.
whiteknight I'm not sure what you mean 00:00
plobsing how would you go about looking up the return continuation, or the current HLL, or the current sub, or other attributes of CallContext.pmc? 00:01
they have accessors, but why aren't they just registers?
but the idea does not end there
whiteknight oh, I see what you mean
plobsing I then realized, that every register accessing opcode has to do many pointer follows to even get at the register frame 00:02
it follows interp->ctx->data->bp
why isn't that just interp->bp
with ctx falling into the register frame somewhere? 00:03
turn callcontexts inside out
whiteknight so the interp points to a register frame, the first element in that frame is the CallContext? 00:04
second is the Sub, third is the lexpad, etc
plobsing yes, that's the general idea
whiteknight then in PIR, we could have special symbolic names like $Pcc, $Psub, $Plex, etc
I like this
plobsing the immediate win is the reduction in complexity of *every* op in parrot (on x86_64 by 2 instructions or 8 bytes) 00:05
and it also lets us have those cool accessors
whiteknight how is that? I mean, to get the register frame we would still need to pull it out of the CallContext
plobsing no, we'd pull the callcontext out of the interp 00:06
s/callcontext/register frame/
whiteknight right, but where do we get it from in the first place? And where do we store it when we're recursing, or saving an outer context for a lexically nested closure?
basically, we would need some kind of circular reference 00:07
plobsing we still need to shove it in a callcontext when we're not using it
whiteknight ctx->data->bp[0] == ctx, etc
plobsing what's wrong with circular references?
whiteknight nothing. It's necessary here 00:08
so CallContext.get_pointer would return the register frame for easy access. get_integer might return a packed count
cache those in the interp at the beginning of the sub call
i like the idea
plobsing ok, I'll prototype something
whiteknight plobsing++ 00:09
plobsing I didn't want to invest the amount of time just to find out it was madness
but now I know it doesn't *sound* crazy...
whiteknight I suspect it could be an easier idea than it appears, especially since much of the op code and other accessor code is generated or macroize 00:10
macroized
we need to teach IMCC to add like 5 extra slots to the beginning of each register frame 00:11
maybe [interp, callcontext (self), sub, lexpad, current namespace]?
although, maybe we don't need interp in there. That's a lot of data duplication for something that's very easy to fetch 00:12
plobsing the IMCC part should actually be pretty easy. the register allocator, as dumb as it is, could easily be told to start allocating at a higher value. 00:13
benabik Do we ever have more than one interp?
plobsing benabik: when we have threads or sandboxes
whiteknight plobsing: also need to update IMCCompiler and other places that call into IMCC, because those are responsible for allocating register frames
plobsing right 00:14
whiteknight although those places are fewer than they once were 00:17
we can cut several attributes out of the call context too, so we aren't wasting more space 00:18
plobsing exactly, it works out roughly even 00:20
whiteknight I tried merging Sub->namespace_name and Sub->namespace_stash yesterday on the train, and the results were disasterous 00:21
plobsing those do different things
whiteknight I was hoping that particular cleanup would go more smoothly, because that would mean I had a good grasp of it
->namespace_name isn't really used after the packfile is loaded
plobsing true, I guess
whiteknight once the NameSpace is loaded, we should be able to overwrite namespace_name with it, but that is the major fail
I really can't wait to get all this crap cleaned up. CallContext, Sub, NameSpace, etc. They're all rotten on the inside 00:23
dalek sella: 56fe283 | Whiteknight++ | / (2 files):
Comment out the Function routines I'm not ready for yet. Add some tests
00:35
sella: a0d29a1 | Whiteknight++ | / (2 files):
Change Asserter.is_true and Asserter.is_false to use the istrue and isfalse opcodes
rrot-gmp: 6c1c59e | bubaflub++ | / (2 files):
more docs
00:37
bubaflub plobsing: do you know where i should install custom thunks to? where does Parrot install it's extra thunks? 00:38
plobsing bubaflub: I'm not sure exactly. they're just a dynext, so wherever parrot installs those 00:42
bubaflub plobsing: ok, i'll take a look into it 00:43
plobsing: looks like on my system /usr/local/lib/parrot/3.6.0-devel/dynext 00:46
or $PConfig{libdir} . $PConfig{versiondir} . "/dynext" 00:47
plobsing sounds about right 00:49
dalek nxed/multi_opt_flag: 6f516b1 | NotFound++ | / (3 files):
Merge pull request #4 from Whiteknight/multi_syntax

Multi functions and methods
00:55
nxed/multi_opt_flag: c6ac75c | NotFound++ | winxedst1.winxed:
work around stage 1 limitations to allow multi tests pass with make test1
nxed/multi_opt_flag: 8f25134 | NotFound++ | winxedst1.winxed:
use separate methods to get and set the is_multi flag, and recognize multi declarations on reopened namespaces
nxed/multi_opt_flag: 2cd7e1a | NotFound++ | t/advanced/10multi.t:
tests for multi in reopened namespace
nxed/multi_opt_flag: 747b557 | NotFound++ | / (2 files):
update NEWS and set version to 1.1.0
nxed/multi_opt_flag: 2a5ac47 | NotFound++ | / (2 files):
optimize a bit handling of the is_multi flag
nxed/multi_opt_flag: ba8694a | NotFound++ | pir/winxed_compiler.pir:
update installable compiler
nxed/multi_opt_flag: 13b1371 | NotFound++ | winxedst1.winxed:
unify scope search methods
nxed/multi_opt_flag: 81bbfb2 | Whiteknight++ | winxedst1.winxed:
fix multi to work with optional/opt_flag
whiteknight you don't realize how messy some of this crap is until you have to reimplement some of it 01:01
docs/multidispatch.pod is so far out of date, it's absolutely unusable 01:03
01:03 bubaflub joined
whiteknight i didn't think we did, and I don't see evidence to the contrary, have any way to tell MMD that a parameter is :optional or :slurpy 01:06
we don't have any way to dispatch based on value, only type 01:08
plobsing couldn't you associate multiple signatures with the same sub?
one with the option and one without?
whiteknight we don't have any way to dispatch based on the types of named parameters
plobsing slurpy is harder
whiteknight plobsing: no. Sub has a multi_sig parameter. Only one
can't have more than that right now
plobsing yet another instance of a sub owning something that should really own the sub 01:09
whiteknight exactly
all this shit needs to die in a fire
benabik whiteknight's favorite refactoring tool: acecombat.wikia.com/index.php?title...hrower-jpg 01:11
whiteknight I don't tolerate bad code very well 01:14
plobsing how I imagine whiteknight most of the time: emotibot.net/pix/444.gif 01:15
whiteknight :)
benabik plobsing++ 01:16
whiteknight what annoys me the most is that Parrot has so many problems. Instead of fixing them, we put together a deprecation policy and codified all of them forever 01:21
two and a half years later, all our developers and all our users complain about the deprecation policy, but we magically can't change it
plobsing you're missing a part. everyone complains about the cruft in parrot, but everyone thinks a different part is crufty 01:23
whiteknight even the parts that have been refactored well and recently are relying on things that suck 01:24
GC alone might be good, because it doesn't depend on much 01:25
plobsing nah, GC's design needs work.
why does it call into all the objects to mark? no other VM does that and it is inefficient 01:26
benabik compacting would be nice.
whiteknight compared to some other subsystem, it's a shining gem
compacting is a pain in the ass
plobsing stack-walking is part of GC. are you calling that shiny?
it explicitly makes use of undefined (per C std) behaviour 01:27
whiteknight comparatively
it does work, there are no obvious limitations. It isn't filled with evil hacks and code that nobody understands 01:28
compared to, say src/oo.c, it's the most beautiful code ever
although, that's hardly a fair comparison
01:34 bubaflub joined
plobsing speaking of stack-walking, how would you feel about something more like obstacks that are explicitly registered with the GC? 01:35
whiteknight how would that work?
plobsing as a replacement for stack-walking
whiteknight I'm not familiar with obstacks 01:37
plobsing for any frame that contains references to GCables, you are no longer allowed to hold it in a variable (that the C compiler might play with). in steady, you create a region of memory (either heap or stack) for all GCable variables you want to work with, and push it onto a stack maintained by GC
obstacks are like malloc/free but with a LIFO limitation
IIUC
libiberty provides an implementation gcc.gnu.org/onlinedocs/libiberty/Obstacks.html 01:38
basically, maintain a side-stack of GCable references in native code
whiteknight what if we just provided some scratch space in a register frame?
plobsing and who holds a reference to the register frame?
it needs to root somewhere 01:39
whiteknight the current register frame is rooted in the interp
plobsing hmmm
whiteknight you would be limited in how many you could store, and you wouldn't have guarantee that it would be preserved across calls, unless you set up a separate frame 01:41
plobsing I see the need to prevent users from holding direct references to parrot gcables on the stack 01:42
saying "manage your gcables by putting them in a register frame" doesn't solve that problem 01:43
whiteknight I do too, but it isn't a pressing need
compared to some of the other big cleanups and projects we've got scheduled
plobsing it does (if users use it correctly) solve the problem of rooting stack GCables somewhere GC can find them
whiteknight: stack walking is a barrier to thread safety
whiteknight is it? even if we walk all stacks in all threads? 01:44
plobsing multiple threads => multiple stacks => how does GC know where to walk?
how do you determine the stacktop of a stack that isn't the stack of the thread you are executing?
whiteknight if each thread has its own GC, the GC just walks it's current stack 01:45
plobsing I thought we were considering multiple threads managed by a single GC
whiteknight if we have a system with relatively many greenlets dispatched over relatively many OS threads, they can afford to be a little heavyweight
we're considering everything
if we go the single GC route, which is fine, we need a thread-safe GC 01:46
if not, we don't
we are missing two things right now: thread-safe code and a comprehensive design for a new threading sysem 01:47
plobsing if we don't do single GC, am I to assume messaging between kthreads will be expensive?
and will that lead to unpredictable cost of messaging between vmthreads (because they might be mapped to different kthreads)?
whiteknight that's where my idea of read-only proxies comes in. Make cross-thread reads delayed. Forbid cross-thread writes 01:48
plobsing thread safety is a big reason why I want stack walking to go the way of the dodo
and then there's the whole precice GC thing 01:49
whiteknight if we go single GC, we still want to forbid or severely restrict by default, cross-thread writes
plobsing why?
whiteknight otherwise we need a data contention mechanism like STM
plobsing don't the guys at azul have a solution for this? 01:50
whiteknight not that I am aware of
you either need to make items read-only, or use STM, or use transactions of some other variety, or use locks 01:51
I like the idea of read-only, because that only matters between kthreads. vmthreads on the same kthread see no penalty
plobsing they use java, so their decision is made. locks via synchronised and friends.
whiteknight right, and I hate locks and want to avoid them as much as possible
plobsing locks as a user interface suck, but locks are how most platforms choose to expose their concurrency control 01:52
whiteknight I'm convinced that we can avoid it in most cases 01:53
message queues, a small amount of global data, and GC 01:54
most everything else can either be read-only, used on a single thread, or shared with messages
if each item has a single kthread owner, and we have a cheap operation to change the current owner, that will go a long way
we have a nice advantage that we can bundle up an execution context in a tuple of objects, and move it around as a group 01:56
the Sub, CallContext graph and Interp can be moved around as a group, and invocations make clean barriers where we can do tricky things 01:57
bubaflub whiteknight: i've got a distutils question for ya, if you've got a moment. 01:58
whiteknight bubaflub: precious few. What's the question?
bubaflub whiteknight: can i do a register_step_before or register_step_after install?
i've seen them used for build or clean 01:59
whiteknight yeah, I don't see why not
bubaflub ok, cool.
whiteknight anything else? It's about my bed time 02:00
bubaflub nope. 02:02
whiteknight okay then, I'm out. Goodnight
02:42 preflex joined
dalek rrot-gmp: 4d9acd0 | bubaflub++ | setup. (2 files):
changes for NCI thunks:

only build NCI thunks when libffi isn't present copy thunks to a place where parrot can find them
02:44
bubaflub ping plobsing 03:10
plobsing bubaflub: present 03:14
bubaflub plobsing: i'm thinking about modifying tools/dev/ncidef2pir.pl to use NCI::Utils and the dlfancy function when an NCI def has 't' in the return type or the parameters. any thoughts? 03:15
plobsing dlfancy doesn't support pass-by-ref currently. you'd be reducing functionality elsewhere 03:16
bubaflub plobsing: i'm only modifying it in the case that there is a 't' signature - would that still reduce functionality? 03:17
plobsing ah. probably not then. just document that pass-by-ref and 't' are currently incompatbile 03:18
bubaflub plobsing: now i'm doubting if i should do that at all - it was to make some Parrot-GMP stuff easier, but i really only have a 3 or 4 functions that used string stuff 03:20
and i'm doing just manual parrot_cstring type stuff
plobsing I'll admit, manually mangling strings sucks.
bubaflub plobsing: yeah, the whole string NCI stuff is just bothersome right now. 03:21
plobsing you could output an equivalent wrapping as dlfancy when working with cstrings but directly use the dlfunc interface (not the string sig interface)
then you could have your strings and pass-by-ref too 03:22
bubaflub: raw nci will always be bothersome. the trick is comming up with a decent wrapper so that we don't have to think about it most of the time.
bubaflub plobsing: yeah. i think as we get more and more people doing lib bindings we'll figure out something 03:23
plobsing dlfancy is more for back-compat and appeasing the immediate needs of rakudo than it is a decent wrapper
I like the direction zavolaj took
bubaflub plobsing: another nice part about having a decent wrapper is that we can change the underlying subsystem and just fix the wrapper rather than a hundred different libs
plobsing bubaflub: that assumes you'd want to change the underlying subsystem for no good reason 03:24
bubaflub hah. not exactly what i was suggesting - i meant if we'd ever need to make a small but possibly breaking change we'd only have one place to check / fix.
plobsing most of the time, when a change is being made, it is because the old way was buggy somehow. unfortunately, IME, that usually pokes through as behaviour in the interface which gets deleted. 03:25
bubaflub understood. ok, thanks for your help. 03:28
03:28 rdesfo joined 03:29 rdesfo left
dalek rrot-gmp: cac2763 | bubaflub++ | docs/tutorial.md:
more docs
03:36
website: bubaflub++ | Parrot-GMP: Almost done 03:42
website: www.parrot.org/content/parrot-gmp-almost-done
rrot/inside-out-ctx: 136f201 | plobsing++ | / (4 files):
disambiguate bp as bp_ni - it is the $Nx and $Ix bp only
04:45
rrot/inside-out-ctx: eec74ea | plobsing++ | / (3 files):
encapsulate base pointers in struct
rrot/inside-out-ctx: c1e6a45 | plobsing++ | include/parrot/interpreter.h:
kill unused struct
rrot/inside-out-ctx: 60adcc4 | plobsing++ | / (3 files):
duplicate bp directly in interp since it is accessed so frequently
rrot/inside-out-ctx: 3026a03 | plobsing++ | / (2 files):
kill unused, dangerously encapsulation-breaking function
rrot/inside-out-ctx: 64438ce | plobsing++ | include/parrot/context.h:
use interp bp reference in optimized build register accessors
rrot/inside-out-ctx: 2ef966f | plobsing++ | src/pmc/ (2 files):
only set a context *after* it has its registers allocated
04:50 logie joined 05:05 bubaflub joined 05:29 theory joined 06:31 Kulag joined 06:47 dalek joined, SHODAN joined 06:58 bubaflub joined 07:04 jsut_ joined 07:39 zby_home joined 07:53 mj41 joined 08:12 ajish joined, ajish left, ajish joined 08:13 rohit_nsit08 joined, ajish left 08:38 rfw joined 08:43 cotto joined
cotto ~~ 08:57
09:01 Eclesia joined
Eclesia hi 09:01
09:04 jsut joined 09:09 jsut_ joined 09:12 Kulag joined 09:20 Kulag joined 09:22 not_gerd joined
not_gerd good morning, #parrot 09:22
cotto hi not_gerd 09:23
seen soh_cah_toa
aloha soh_cah_toa was last seen in msg 1 days 4 hours ago <private message>.
09:25 lucian joined
not_gerd I started to fix the test failures on msys, and a lot of them are path issues 09:28
for now, I just added special cases to the test files
however, that's somewhat brittle
a saner approach would be to provide our own implementation of 'use Cwd;'
I don't know if that's overkill for just a single, somewhat obscure platform...
09:29 rohit_nsit08 joined
cotto Is Cwd not core? 09:38
dalek kudo/nom: b2c2669 | moritz++ | t/spectest.data:
run pointy-rw.t
tadzik Cwd was first released with perl 5
seems like it is 09:39
cotto lyup
*yup
not_gerd, would using Cwd be sufficient?
09:40 gaz joined
not_gerd cotto: the problem is that msys-perl uses unix-style virtual paths, whereas Parrot needs windows-style paths 09:42
thus, you can't compare paths returned by cwd with paths coming from parrot
cotto how much work would reimplementing be? 09:47
If it's not too much code and if the code is straightforward, I'd be happy to go that route. 09:52
not_gerd cotto: it would probably be less code as I won't have to repeat myself in every test file 09:53
cotto not_gerd, can you hack it up and submit a pull request? 09:54
not_gerd++ #for working on this 09:55
not_gerd sure, will work on it later today 09:56
I'll have to take another look at the test files to see if providing a decicated function for path comparisons might be a better approach, though 09:57
not all paths might go through the Cwd::* subs...
moritz why do so many tests compare paths anyway?
10:10 cotto joined 10:13 whiteknight joined
cotto hio whiteknight 10:15
whiteknight good morning cotto 10:23
it's funny seeing you online so early
cotto funny seeing you online so late 10:25
so there :]
whiteknight :)
cotto will be back to "normal" soonish 10:26
whiteknight++ whiteknight++ whiteknight++ for prt0.winxed 10:27
so much nicer 10:28
whiteknight unfortunately, I don't think there is any reasonable way to integrate it into the build 10:37
but it's good to get the ideas straight
cotto really? 10:39
you could chech in the generated pir
*check
whiteknight yeah, that might be what I do eventually 10:40
cotto like with ops2c
10:41 PacoLinux_ joined
whiteknight I haven't even tested this winxed code yet. I'm going to give it a spin now 10:44
10:45 ssqq joined
ssqq hello 10:47
how i log this irc with mIRC?
How to config the server name? 10:48
whiteknight ssqq this channel is already logged 10:49
irclog.perlgeek.de/parrot/today
10:53 cotto joined
ssqq I used firefox to log this , I want log here with mIRC to config the background and font 10:53
moritz then ask the mIRC folks for help 10:56
10:59 hernan joined
dalek rrot/whiteknight/frontend_parrot2: 0f113c0 | Whiteknight++ | frontend/parrot2/prt0 (3 files):
Use prt0.winxed to build the frontend. check in the generated .pir file. cotto++ for the suggestion
11:05
11:13 cotto joined 11:38 gaz joined 11:39 zby_home joined
dalek rrot/whiteknight/frontend_parrot2: 416b1d6 | Whiteknight++ | / (2 files):
fix backtraces. Fixes several tests
11:40
11:50 whiteknight joined 12:12 rohit_nsit08 joined 12:42 JimmyZ joined 12:48 jsut joined 13:09 kid51 joined 13:10 not_gerd joined
Eclesia and here it is : sourceforge.net/p/eria 13:12
whiteknight Eclesia++ 14:00
14:18 rohit_nsit08 joined
dalek website: rohit_nsit08++ | corellaScript : Functions and Objects 14:27
website: www.parrot.org/content/corellascrip...nd-objects
14:48 Eclesia joined
dalek sella: 6f99502 | Whiteknight++ | src/query/ (5 files):
Big cleanups to the provider API, and expose more functionality through Queryable
14:50
sella: de24c04 | Whiteknight++ | t/query/Queryable.t:
+stub tests for some of the new Queryable methods
sella: 407cc1b | Whiteknight++ | src/query/ (4 files):
+some comments for new functions
15:02 lateau joined 15:10 lateau joined 15:14 lateau left 15:15 lateau joined 15:25 JimmyZ joined
dukeleto ~~ 15:30
15:51 lateau joined 15:52 lateau left, lateau joined 15:53 theory joined
whiteknight hello dukeleto 15:57
16:00 contingencyplan joined
dukeleto whiteknight: howdy. 16:01
can anybody get to the github web interface?
tadzik yes
16:01 lateau left
whiteknight yeah, github loaded right up 16:09
plobsing whiteknight: I've started implementing the ideas I was talking about last night on the inside-out-ctx branch. it is already 15% better on the mops_intval benchmark
dukeleto i think firefox was having a bad day. restarting seemed to fix everything. 16:11
plobsing: can you explain what the inside-out-ctx branch is about, to mere mortals? looks interesting. 16:12
plobsing dukeleto: it turns contexts, or at least the current one, on their head 16:14
instead of containing the register frame in a context PMC (takes 3 pointer follows to get from interp to the register frame), keep the register frame in the interp and keep the context in the register frame 16:15
this means we have 1 pointer follow to get the register frame
16:16 silug joined
plobsing now considering nearly every op accesses the register frame, this is potentially a huge win for code that spends a lot of time in ops (as opposed to in the runtime system) 16:16
s/runtime system/other parts of the runtime system/
mops_intval is pretty much a flat out ops execution benchmark 16:19
whiteknight dukeleto: and if we keep values in the register frame by default, we can access some important values directly in registers, instead of special-purpose ops 16:21
$Psub would be the current sub, instead of having to do $P0 = getinterp, $P1 = interp["sub"] or whatever the incantation is 16:22
plobsing: yes, I saw the commits this morning and am following along avidly
Eclesia does someone has an exemple on how I can attach properties on a function or class ? I remember it was something like setProp ... 16:39
ha found it : setprop $P0, 'BUILD', $P1 16:42
dukeleto Eclesia: setprop and getprop 16:43
Eclesia dukeleto: thanks ^^
16:45 lateau joined 16:50 lateau left
dukeleto Eclesia: github.com/parrot/parrot/blob/mast...pmc/prop.t 16:56
Eclesia dukeleto: can I set a property on a function argument ? 16:57
dukeleto Eclesia: you can set it on the think you pass in as an argument, if it is a PMC 16:58
s/think/thing/
whiteknight the mother @#%@!* hinge on my laptop screen broke again 16:59
Eclesia dukeleto: but I don't have the 'thing' yet. I only have the class. not any instance yet
dukeleto Eclesia: not sure 17:00
Eclesia: i think you can only set props on instantiated PMCs, but I could be wrong 17:01
Eclesia dukeleto: argument already have properties (I think) to store stuffs like 'optional' or 'slurp' ... 17:02
or am I wrong ?
plobsing Eclesia: those go into a "signature" that parrot reads 17:03
those are not meaningfully extensible
Eclesia plobsing: using reflexion we can get a PMC for the function. so I guess I could acces the list of it's arguments ? and them set properties on them ? 17:04
plobsing the arguments aren't objects. it is a list of integer flags, and messing with them is not supported. 17:05
but yes, you could get that list
Eclesia so my best option is to set the arguments properties in the function property list using some kind of numbering 17:07
plobsing: can I set any kind of object in the properties ? like a Hash ? 17:08
plobsing sure. or an array, which might be more what you're looking for.
Eclesia plobsing: thanks 17:09
plobsing whiteknight: is there a way to lookup a PackfileView PMC from a PackFile*? 17:12
I may just have the solution to the t/pmc/packfileview.t segfault in parrot2 17:13
dalek sella: c9f5873 | Whiteknight++ | / (2 files):
Make sure to wrap queryable results. Add several tests for hash and array behaviors in Queryable
17:14
sella: ff49cd6 | Whiteknight++ | src/query/Queryable.winxed:
start prototyping some vtable accessors for Queryable
sella: 6fe6cd6 | Whiteknight++ | / (6 files):
refactor provider selection logic into a Factory class. Make a global default provider factory
sella: 80dc59c | Whiteknight++ | src/query/provider/Factory.winxed:
Add in a method to set a specific provider for a given role
whiteknight plobsing: what do you mean?
plobsing: I thought I fixed that failure already
plobsing you did it with a hack IIRC. 17:15
ideally, interp->packfile should always point to the currently executing packfile no? 17:16
if we could lookup the packfile pmc from the packfile struct, we could set it when we switch_to_cs
whiteknight Sub->eval_pmc is the packfile owner of the Sub. At least, it should be 17:17
so you can set it on Sub.invoke
I don't think we currently cache the PackfileView wrapper in the PackFile* struct, but we can 17:18
src/packfile/api.c:Parrot_pf_get_packfile_pmc is the place where we wrap it
plobsing is there a way we can reuse existing PMCs? if we're switching between segments a lot, with no cached mechanism, we're going to be creating more PMCs than necessary 17:19
perhaps we'll just cross that bridge when we come to it
bubaflub ~ 17:20
plobsing wow, no, not acceptable after all. PackfileView PMCs are eternal? 17:22
do we really need to always register them?
whiteknight they're eternal now, to replicate previous behavior 17:24
I want to stop GC registering them, but when we do, errors
plobsing well, allocating a new eternal pfv pmc on every cs switch is completely unacceptable. 17:26
whiteknight why would we be doing it for every switch? When we create the PackFile* we almost always wrap it in a PackfileView 17:27
all we need to do is keep a reference to the one that exists, and switch to it
plobsing exactly, that's cacheing
17:27 ajish joined
plobsing and we need to either cache or eliminate the registration before interp->current_pf can be properly kept in sync 17:28
whiteknight like I said, it should already be cached in each Sub
so we have it, we just need to switch to it
17:28 rohit_nsit08 joined
plobsing why is it cached in the sub, but not the Packfile*? 17:28
17:28 ajish left
whiteknight for GC 17:29
when we mark the Sub, we need to mark the PackfileView that owns it
plobsing ah
whiteknight we can cache it in both places
rohit_nsit08 hello #parrot 17:30
whiteknight or, we can move it so Sub->seg->pf->pmc is the PackfileView
benabik o/
whiteknight hello rohit_nsit08
rohit_nsit08 whiteknight : hello
whiteknight rohit_nsit08++ on the blog post 17:31
plobsing whiteknight: I prefer the latter
whiteknight rohit_nsit08: I haven't been able to test CorellaScript much, yet
plobsing: let's do it
damn the torpedos, full speed ahead
gets rid of an attr in Sub, anyway, and gets rid of most of the last uses of do_sub_pragmas
plobsing OK. I'm doing a lot of (what I consider to be) fixes on the inside-out-ctx branch. I'll commit that there after I get rid of these segfaults. 17:32
whiteknight awesome
let me know if you need a second pair of hands/eyes
rohit_nsit08 whiteknight: thanks, I'm fixing some loose bugs, but it is still not able to compile itself as I have told in the blog post, will try to wind up as much as possible before 22 17:33
whiteknight: I wanted to ask about the documentation
whiteknight rohit_nsit08: sure. What do you need? 17:34
rohit_nsit08 how should I submit it, and it is in html format
plobsing whiteknight: I likely won't have anything until sunday evening (eastern).
whiteknight plobsing: no rush. So much awesomeness takes time
rohit_nsit08: add it to your repo. Create a docs/ folder 17:35
rohit_nsit08: you can create a website on github pages too. But we can do that later 17:36
rohit_nsit08 whiteknight: ohh yes, I once created that . Okay I can get it done. 17:37
17:37 kid51 joined 17:45 bubaflub joined
pmichaud does commit 416b1d6 change the order strings appear in Exception.backtrace_strings ? 17:46
(it switches an unshift to a push) 17:47
oh, it's in a branch, so nm, unless that branch merges with master at some point. 17:48
whiteknight pmichaud: the order in master is wrong 17:50
but yes, it does change the order
pmichaud why is the order in master wrong?
whiteknight if you have 5 rethrows, it would have the backtraces in the order 2, 3, 4, 5, 1 17:53
clearly, the feature is under-tested
dalek kudo/nom: 484052a | tadzik++ | / (4 files):
Fix implicit code blocks detection

Paragraph and abbreviated blocks set VMARGIN not only for their contents, but for all the upcoming Pod as well. This fixes the behaviour and tests, and also adds a new test taken straight from S26.
whiteknight that ordering is only for rethrows. Frames from a single throw are unaffected
pmichaud okay. when it merges to master, be sure to check with me or someone so that we can make sure nqp's use of it is unaffected. 17:54
(or that we can patch nqp to match)
it's possible we were only ever using/seeing the single throw case. 17:55
bubaflub ping dukeleto 18:13
plobsing I'd argue that rethrow shouldn't add another backtrace 18:18
rethrow basically means (to me, as a heavy user of rethrow in Ωη) that the handler shouldn't have caught but did
and so to pass up the chain
I use rethrow because type-based handler dispatch is insufficiently general 18:19
18:26 schmooster joined
not_gerd msg cotto just sent the pull request with my msys fixes 18:40
aloha OK. I'll deliver the message.
dalek rrot/nqp_pct: f74f55f | benabik++ | docs/pct/bytecode.pod:
[docs] Document bytecode generation for PCT

This adds a simple document that gives the bare bones about how to use newPOST and what to expect if you do. The list of known issues is very short, mostly because I haven't found a good way to generate a comprehensive list.
18:45 mj41 joined
dukeleto bubaflub: pong 18:51
dalek rrot/nqp_pct: 7769a36 | benabik++ | docs/pct/bytecode.pod:
Fix POD syntax in bytecode.pod

I'm not used to writing POD, and I used =cut where I should have used
  =back
bubaflub dukeleto: i blogged recently - i've fixed most of the remaining issues. any thing else you'd like me to put together before Monday?
dukeleto bubaflub: is there anything left on your gsoc roadmap that is only partially done? 18:52
dalek website: benabik++ | GSOC 12: Coming to an end 18:53
website: www.parrot.org/content/gsoc-12-coming-end
dukeleto bubaflub: reading your blarg toast now
bubaflub dukeleto: i have some areas to fill out on the docs and could do a few more examples, but i think what i have is sufficient to illustrate how to use parrot-gmp
dukeleto bubaflub: i think you have accomplished what you set out to do. Congrats! Also, congrats on finishing your masters(!) and the new house. 18:54
bubaflub dukeleto: yup. level up. 18:55
dukeleto bubaflub: if you want a change of pace, feel free to hack on parrot-libgit2. I haven't had any tuits for it lately.
bubaflub dukeleto: Eclesia++ asked for some benchmarks; i could throw some of that together.
dukeleto: definitely, i'll take a look at libgit2. last time i looked there was some oddities loading a function.
dukeleto benabik: nice docs 18:56
bubaflub: there are some passing PIR tests, but I have some winxed tests that blow up
bubaflub: github.com/letolabs/parrot-libgit2/issues/2
18:57 fperrad joined
benabik dukeleto: I tried to spend some time figuring out what isn't working, but the answer appears to be "a lot"… But I think it's at a reasonable point for other people to take pokes at it. Right now it's a lot of "find something broken, figure out how to get newPOST to do it". (Although I'm somewhat afraid that there are several large gaps in the newPOST->PBC portion too, which requires deeper knowledge.) 18:57
bubaflub dukeleto: ok, i'm taking a look at it now. 19:01
dukeleto: i can also help generate the NCI thunks that you need so you won't need libffi
dukeleto bubaflub: that would be awesome 19:02
bubaflub dukeleto: github.com/bubaflub/parrot-gmp/blo...winxed#L39 - basically, if they have libffi don't build and install the thunks. if they don't have it, build custom thunks and copy them to a place where parrot can find them 19:03
dukeleto: i'll look at issue #2 first though
dukeleto bubaflub: sweet 19:21
bubaflub: please add any info relevant to debugging that to the gh issue
bubaflub dukeleto: will do
dalek kudo/nom: 2d2ff44 | tadzik++ | src/core/IO.pm:
Implement cwd()
19:30
kid51 dukeleto: ping
19:38 Eclesia joined
Eclesia back 19:38
19:51 ambs joined
dalek p: 9ba57ef | benabik++ | tools/build/Makefile.in:
Makefile: use MKPATH to make all needed paths

While PARROT_LIBRARY_DIR may exist, it may not exist inside DESTDIR. For example when building for a package manager (even one so simple as stow).
This commit adds the missing MKPATH for PARROT_LIBRARY_DIR and also moves the one for NQP_LANG_DIR/lib to immediately before the files installed into it.
20:10
p: babcf34 | moritz++ | tools/build/Makefile.in:
Merge pull request #21 from Benabik/master

use MKPATH for PARROT_LIBRARY_DIR
moritz benabik: I've now given you commit access to the nqp repo. Have fun! 20:11
20:13 preflex joined
benabik moritz: Thanks. Haven't been poking at nqp/rakudo much during GSoC, but I'll feel free to push the fixes I make. 20:17
moritz benabik: sure 20:20
benabik: I'm too lazy to merge pull requests, so I throw out commit bits instead :-) 20:21
benabik lazy++
Eclesia NotFound: is it possible to have a more compact syntaxe of : namespace ns1 { namespace ns2 { ... ? 20:25
namespace ns1.ns2.ns3 would be nice
whiteknight plobsing: if you don't care about the backtrace of an exception prior to a backtrace, you don't have to look at it. Each is stored separately in an array, and you only nedd to look at what you want 20:28
pmichaud: Don't worry, the whiteknight/frontend_parrot2 branch is sufficiently invasive. It won't merge silently 20:30
Eclesia: I've asked for the same thing before! I'll try to put together a patch 20:33
Eclesia whiteknight: I think you already have enough stuffs to do more important :D 20:34
whiteknight Eclesia: I like to play with winxed :) 20:35
20:35 lucian joined
Eclesia just navigate between 3 and 6 levels of namespace. a shorter syntax would be appreciate 20:38
20:40 logie joined
whiteknight this might actually be a very easy patch 20:45
20:49 mj41 joined
dalek nxed/dotted_namespace: 7583768 | Whiteknight++ | winxedst1.winxed:
Enable Foo.Bar.Baz syntax for nested namespaces
20:57
whiteknight Eclesia++ for the idea 20:58
Eclesia ^^ that was fast
whiteknight++ for the hard work :p
whiteknight I told you it was easy 21:00
Eclesia whiteknight: is the commit directly on parrot ? 21:01
Eclesia remember winxed has a separate repo, don't know if it's still the case 21:03
benabik Eclesia: That appeared to be a branch on whiteknight's fork of winxed.
Arg! I hate that packfiles aren't compatible across parrot versions. 21:06
whiteknight Yeah, thats in my fork. I need to talk to NotFound about merging it, and then he has to push it into Parrot repo
dalek nxed/dotted_namespace: 604cdd0 | Whiteknight++ | winxedst1.winxed:
Remove debugging statement
21:15
nxed/dotted_namespace: 5a0f4ec | Whiteknight++ | t/advanced/10namespace.t:
+tests for dotted namespace syntax
whiteknight msg NotFound I just opened a pull request to add a dotted namespace syntax "namespace Foo.Bar.Baz { }". It is a pretty small patch. Let me know if it needs to be changed 21:17
aloha OK. I'll deliver the message.
dalek rrot/nqp_pct: 03152fb | benabik++ | compilers/pct/src/POST/PBCCompiler.p (2 files):
POST::PBCCompiler - fix calling init subs

1) Since we're about to call main, we should only use init instead of init and load.
2) PackfileView.subs_by_flag is now called subs_by_tag
Eclesia whiteknight: while you are on it, think about declaring complex id namespace, like : namespace 'org:eria'.'paradygm','0.156-SNAPSHOT' { 21:18
whiteknight wowsers
benabik The fact that parrot namespaces and variables can be any string makes writing a language to get at all parrot features… interesting. 21:19
Eclesia whiteknight: winxed does not handle complex names in namespace. at least if we can declare then but still not use them is better then nothing ^^
whiteknight let me see what I can do 21:22
Eclesia getting nice : ftp://ftp-developpez.com/jsorel/temp2/target.png . 2months sumarize in 10 files :) 21:28
whiteknight nice 21:29
dalek nxed/complex_namespace: f350d3f | Whiteknight++ | winxedst1.winxed:
Allow strings as namespace identifiers. Can now parse the example namespace 'org:eria'.'paradygm'.'0.156-SNAPSHOT' from Eclesia++
21:32
benabik So, I get an odd error when compiling rakudo nom… When it's compiling perl6-grammar.pir to a .pbc, it says "Lossy conversion to single byte encoding". Anyone have any idea why Parrot would throw that? gist.github.com/1159684 21:33
Eclesia benabik: I seen this one when you write a string with utf characters but read it as ascii 21:34
whiteknight Eclesia: We can parse your example now, in this branch. No real way to use it
well, no pretty way to use it 21:37
benabik Eclesia: So the file is UTF-8 but IMCC is reading it as ASCII?
Eclesia benabik: just what I think. I have plenty of strange character in my langage so I encounter this error before 21:38
I think it's just a missing : filehandle.encoding("utf8"); 21:39
benabik Hm. It looks like everything's been escaped, but I be there's a string that hasn't been.
21:45 Psyche^ joined 21:46 Hunger joined
benabik I'm not finding any non-ASCII in the file. Grump. 21:51
Eclesia benabik: I'm no expert. it was just my thinking :x (I'm still a newbie : 2 month old) 21:52
benabik Eclesia: It was a good idea.
dalek rrot/nqp_pct: 9da949d | benabik++ | compilers/pct/src/POST/PBCCompiler.p (2 files):
POST::PBCCompiler - fix calling init subs

1) Since we're about to call main, we should only use init instead of init and load.
2) PackfileView.subs_by_flag is now called subs_by_tag
21:54
benabik (Pushed wrong version of commit…)
benabik--
21:55 Hunger joined
benabik Huh. The error went away when I switched off my branch. Curious. 22:03
22:37 soh_cah_toa joined
tadzik oh hi soh_cah_toa 22:44
soh_cah_toa tadzik: howdy 22:45
22:54 Psyche^ joined, jsut_ joined 23:02 bluescreen joined
dalek kudo/nom: c05ba3a | tadzik++ | src/Perl6/Actions.pm:
Fix MAIN regression
23:05
23:09 TiMBuS joined, theory joined
dalek rrot/nqp_pct: a613ae8 | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files):
PAST::Compiler - fix tempregs

1) I stored the "constant" TEMPREG_BASE in the tempreg frames. This meant that there was only one tempreg counter for all types that never decremented. Fix by cloning the Integer PMC.
2) The PIR code for tempreg() used the value before incrementing to generate the register value. Do this in NQP too, so that the generated PIR is identical.
23:15
23:21 TiMBuS joined 23:27 coke_ joined
coke_ anyone dealing with teh inode shortage on parrotvm? 23:28
whiteknight not I 23:30
benabik ARG. Stupid inline PIR eating % signs. 23:31
I need to find a better solution for this. 23:32
23:36 TiMBuS joined
whiteknight the solution is simple. we must kill the inline PIR 23:36
benabik That's a HUGE problem. And the fact that I can't get a literal % from the format argument to the final text indicates deeper problems. 23:37
I think StringBuilder has no way of escaping a %.
Huh. It seems that it's supposed to...
Nevermind... 23:38
grump grump grump. I thought I had tried %% already.
coke_ seen mpeters? 23:39
aloha Sorry, I haven't seen mpeters.
coke_ yah, no one has.
so smolder is supposed to be cleaning up and only saving 250 reports. (just bumped it to 256 in case it needed to be changed to fire off). looks like have 995 report.html's sitting around. 23:40
coke_ wonders if we can just delete the report directories, or if this will screw up the DB.
coke_ wonders how many of those reports are for other projects... 23:42
coke_ just rips the old reports out for now and sees what happens.
benabik Diffing generated PIR is fun because I have go change all the timestamp based subids and whatnot. 23:48
Now this is as simple as two quick :%s///g calls in Vim, but finding the new number after each little change to the file... 23:49
My branch dropped the unicode: prefix off some strings. Interesting. 23:51
Ah. There's a difference between > and >= 23:52
vim++ # gvimdiff 23:54
I have now gotten my branch to generate identical PIR as master again. benabik-- for not noticing the differences earlier. 23:56
whiteknight benabik++ for perseverance 23:58