Parrot 4.3.0 "In Which..." | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 25 April 2012.
00:04 whiteknight joined
whiteknight good evening, #parrot 00:19
01:32 alester joined
kid51 alester: ping 01:37
alester i'm here
kid51 In #770, what is the "this" you want to merge to master? 01:38
alester the diff
that you wrote
kid51 Actually, I thought of that as just a first draft. I thought you wanted to integrate it into headerizer more explicitly. 01:39
(In any event, we're in pre-release code freeze so I don't think we should do anything until after Tuesday.)
alester I do want to put it into the headerizer, AND I don't see any reason not to put your changes in the test. 01:40
kid51 I would probably want to refine it further to reflect what Whiteknight showed about PARROT_IS_NOT_NULL
alester So commit what you have.
And then add more later
kid51 I'm going to hold off committing until after release.
alester I can see that. I just wouldn't hold off based on "I want to make one big patch." 01:41
kid51 The patch won't be any bigger; it just needs a less crude regex.
alester and you can use is_deeply() 01:42
oh, and bump up the copyright to -2012 in the header 01:43
kid51 Will do.
alester And i"m not going to think about the headerizer 'til later 'cause I'm working on ack 2.0 01:44
kid51 Ooh, I remember working on ack back at the hackathon in Chicago in Nov 2006. 01:45
01:56 davidfetter joined
dalek rrot/770/order: 141ccab | jkeenan++ | t/codingstd/c_function_docs.t:
Refine regex to permit PARROT_CAN(NOT)?_RETURN_NULL to precede
02:26
kid51 Enough for tonight. 02:28
02:50 wagle joined 02:56 benabik joined 04:23 adu joined
dalek rrot: fc23c71 | petdance++ | src/gc/gc_inf.c:
removed unnecessary cast
05:03
rrot: c1882a7 | petdance++ | src/gc/fixed_allocator.c:
adding a const
05:20 travis-ci joined
travis-ci [travis-ci] parrot/parrot#358 (master - c1882a7 : Andy Lester): The build was broken. 05:20
[travis-ci] Change view : github.com/parrot/parrot/compare/0......c1882a7
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1324303
05:20 travis-ci left 05:53 alin joined 06:04 Khisanth joined 06:46 fperrad joined 07:07 brrt joined 07:36 lucian joined 07:49 bacek joined 08:18 alin joined 08:25 lucian joined
dalek kudo/nom: a144e29 | moritz++ | / (3 files):
implement chmod as a function

because a test file wants it that way :-). Run that test file
08:59
kudo/nom: 4ea6d60 | moritz++ | t/spectest.data:
run another test file
09:09
kudo/nom: 56e86dd | moritz++ | t/spectest.data:
run method lvalue tests
09:16
09:19 kj joined 09:24 wagle joined 09:28 schm00ster joined 09:46 brambles joined
dalek kudo/nom: abb8f3a | moritz++ | / (2 files):
basic implementation of &roundrobin; tests
10:19
10:26 wagle joined 10:40 bacek joined 10:58 bacek joined, JimmyZ joined 11:23 mtk joined 11:29 kid51 joined 12:35 arnsholt joined 12:44 kjs joined 12:49 PacoAir joined 13:01 whiteknight joined
whiteknight good morning, 3parrot 13:01
msg nine I think I found the problem with miniparrot on windows. It looks like interp->sleep_sleep mutex (and possibly other mutexes) aren't being MUTEX_INIT'd before use on the main thread 13:02
aloha OK. I'll deliver the message.
13:11 Psyche^ joined
brrt morning 13:29
noon, for me
whiteknight hello brrt
brrt how was this week? 13:31
whiteknight good. We've got a release tomorrow so we've been working on normal maintenance tasks 13:32
after that though, things are going to be a bit messy 13:35
brrt: We've got one week left until official coding starts. You feeling good about it? 13:44
13:46 hercynium joined
brrt yeah, have you heard about the -g option from apxs? 13:47
it ehm... generates code 13:48
pretty much exactly the code i was planning to write the first week
whiteknight ha!
brrt so instead, i was going to get the build system up and running and awesome
whiteknight yes, that would be good. Your timeline isn't set in stone, it's just an easy way to identify when people are getting behind 13:49
you can always go faster :)
brrt true 13:57
not something i have much experience with, though 13:58
Coke "faster. Faster! Faster would be better!"
brrt :-)
also... 13:59
apxs can actually build the module
and install it, as well
now, i'm actually wondering whether we should rely on it being there on machines that want to build it 14:00
whiteknight that seems like a good strategy to get started 14:04
if it's not as available as we need it, we can revisit later
brrt it is actually supplied with most 'apache-dev' modules or similar
anyway, its easy enough to check for its existance
whiteknight ok 14:05
brrt but yeah, fun
also, it occured to me that i was looking for 'apache module api documentation' but that it doesn't exist; i apparently need the 'apache protability runtime' documentation 14:16
whcih does exist
whiteknight ah, good to know 14:18
brrt :-)
whiteknight maybe the first thing you need to do is create a README file with these details 14:19
brrt and i wanted to ask, what does Parrot_api_load_compiler do?
whiteknight let me look at it
brrt not sure if that is its actual name
but i can supply it a pmc, an interpreter, and a string "winxed" and it does not fail
so i'm assuming i have a pmc for the compiler in my hand 14:20
whiteknight We have Parrot_api_load_language and Parrot_api_get_compiler
brrt last one
14:20 contingencyplan joined
whiteknight First you use Parrot_api_load_language to load in the compiler and runtime. Then you use Parrot_api_get_compiler. That returns the registered compiler if any 14:20
brrt i see
is there a standard way to use the compiler? 14:21
whiteknight github.com/parrot/parrot/blob/mast...31_hll.pod
not all compilers do this exactly the same, but almost all of them support a .compile() and .compile_string() method
dalek rrot: 1cb3e41 | Whiteknight++ | docs/pdds/pdd31_hll.pod:
PDD31 is not a draft anymore
14:22
whiteknight brrt: many of these tasks are possible with the embed API, but are easy in PIR/Winxed. You'd probably do better to jump into a small driver .pbc program first, and do things like loading languages and getting compilers there 14:24
look at frontend/parrot2/main.c and frontend/parrot2/prt0.winxed for an example of how the parrot executable does that
many command-line arguments, the compilers, .pbc output, program execution are all handled in prt0.winxecd 14:25
brrt ah, i see 14:29
brrt looks it up
14:34 travis-ci joined
travis-ci [travis-ci] parrot/parrot#359 (master - 1cb3e41 : Andrew Whitworth): The build was fixed. 14:34
[travis-ci] Change view : github.com/parrot/parrot/compare/c......1cb3e41
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1327387
14:34 travis-ci left
ttbot Parrot 1cb3e419 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/85188 14:43
14:45 fperrad_ joined 14:56 dmalcolm joined
Coke builds parrot with perl5.16.0-RC0 14:56
masak Coke++ 14:57
Coke seems fine. 15:00
Coke tries rakudo.
tadzik it doesn't bring too many changes, does it? 15:01
15:01 Justin joined
Justin good morning everyone 15:01
Coke used to keep helper scripts in the top level git checkout to facilitate building, but git clean -xdf is so nice, I have to convert these to aliases.
JimmyZ wonders how is coke/rm_pasm now 15:04
15:07 crab2313 joined
Coke needs more doc cleanup. needs to have PASM removed from IMCC. I hope to have more tuits for it this week. 15:08
moritz I don't think removing PASM from IMCC is critical for merging 15:09
Coke not critical, no. definitely nice to have.
getting rid of any remaining PASM refrences (except for historical purposes) is critical though, I think. 15:10
s/critical/major/, perhaps
whiteknight agreed 15:11
Coke++
If the coke/rm_pasm branch is passing tests again, I can try merging in my patch again and seeing what happens
A lot more work after that, for full removal from IMCC, but that's the first step 15:12
JimmyZ don't think removing PASM from IMCC is high priority 15:14
whiteknight it's not high priority, but it will make me very very very happy 15:18
15:18 isBEKaml joined
whiteknight and I like to do things that make me happy 15:18
JimmyZ I'm +1 to happy 15:19
whiteknight the whole time I'll be yelling "hulk smash!" and making my kid scared
Coke hopes whiteknight went to see hulk smashing in the theater! 15:22
isBEKaml hi, I was just looking #276 and it no longer behaves as said in that issue. close or reopen a new one if still a bug?
whiteknight I haven't yet!
isBEKaml: What is it doing now? Something better, worse, or just as bad?
JimmyZ will be very very happy if the dream of M0 comes true. :P
isBEKaml whiteknight: in all probability, method signatures might have changed. I'm not sure if that still is a bug. :| 15:23
paste in a bit
Coke the behavior has already changed once. if it is still not functioning as I asked for, then just update the current behavior.
still segfaults here. 15:24
isBEKaml gist.github.com/2694566 15:25
Coke isBEKaml: your heredoc is wrong. 15:26
isBEKaml Coke: ah, okay. Now it does nothing! 15:27
Coke heredoc terminators must be flush with the LHS
isBEKaml: try the sample further down in the ticket that is well formatted. the one copied over from trac got garbled.
isBEKaml Coke: yes, segfaulted. :/ 15:28
whiteknight What's the priority on that ticket? 15:29
isBEKaml whiteknight: mate, I'm new here. :)
whiteknight isBEKaml: I know! Welcome to Parrot
isBEKaml asking me about priorities don't make sense! :) 15:30
Coke whiteknight: pretty low, apparently. You can tell because I opened it. ;()
er, ;)
whiteknight isBEKaml: I'm asking Coke about the priority.
Coke isBEKaml: I think he just means literally.
whiteknight: segfaults are bad, mmkay?
is it stopping me from using parrot? no. A dozen other things are.
(most of which have tickets.)
whiteknight Coke: it was assigned to plobsing and he's not around. I can jam it into my queue if it's necessary 15:31
Coke <shrug> as you wish.
isBEKaml whiteknight: I was poking at the issue list to see which one of those is within my reach... rammed into #276. :)
Justin hello
whiteknight hello Justin 15:32
isBEKaml whiteknight: that's not to say it's _within_ my reach!
whiteknight isBEKaml: we have a few tickets tagged "Newbies". That might be a good place for you to start
although, some of those might be below you too
isBEKaml whiteknight: yeah, saw that. I was looking by "updated" queue - so thought, they may well have been taken. 15:33
or completed.
whiteknight okay
Coke ugh. now that I am using a terminal that colorizes gcc warnings, I really want to get the ones in parrot cleaned up. 15:34
whiteknight so many of those warnings from from generated code. src/ops/core_ops.c is the worst offender 15:35
Coke it is possible to disable warnings by file. 15:36
whiteknight is it? That kind of stuff is above my pay grade
somebody else tells me what warnings to use, I just do my best to fix them when I can 15:37
Coke yes, I hacked on the config warnings system some years ago to make that pretty easy to do.
isBEKaml I think some of those warnings stem from gcc attribute flags.
whiteknight a lot of them in src/ops/core_ops.c specifically are for unused parameters, I think
A couple hundred generated functions, all with the same few arguments, many of which don't need to be used in each case 15:38
isBEKaml whiteknight: what about that sysinfo_s issue? you mentioned in the ticket that it needs discussion 15:41
whiteknight: #280 15:42
whiteknight isBEKaml We have a sysinfo_s opcode, which is used to return some important information about the system. The problem is that opcode is a dynamic library that isn't included by default, and the information there is important enough to always be available
Coke heh. rereading config/auto/warnings.pm, I'm thinking I should pull this out into a JSON file... "It is tempting to put this into a config file, but..."
whiteknight We have another opcode, interpinfo, which also returns important system information but is built into Parrot core. 15:43
so my suggestion is to merge the options from sysinfo into interpinfo, and just make it always available
isBEKaml whiteknight: in effect making it a static call information?
whiteknight basically, yes 15:44
The use case I have is that I'm doing some numerical algorithms, and I need to know what the Parrot equivalent of INT_MAX is, but that information is only available through sysinfo_s 15:45
isBEKaml was there any reason it was made a dyncall when compiled/build information would configure it into parrot binaries?
whiteknight Probably no reason 15:46
moritz at that time everything was made a dynop to keep parrot "small"
whiteknight right, some things were done sort of quickly because some features didn't seem necessary
and for the most part, many of them are not
isBEKaml ah, I see
whiteknight but the sysinfo stuff does seem important to me, and trivial enough that we should be able to have it available. Either through that interface or through a new/better interface 15:47
isBEKaml whiteknight: Okay, what do _i and _ic suffixes stand for? 15:51
cotto ~~
kjs int and int_constant (isBEKaml 15:54
Tene isBEKaml: integer, and integer constant
isBEKaml whiteknight: nvm, I see they are int and const int reg.
kjs int=a register
isBEKaml Just as I figured out. :)
kjs ic is a constant value, like 42
isBEKaml kjs: thanks! 15:55
kjs np
and to refresh my own memory, and explain the implications: the actual value of the arguments either points to a register number (i) or the integer constant itself (ic), whereas in the case of a fc (floating point constant, like 3.14) the actual value of the argument in bytecode is the index of the constant table for floats. 15:57
aloha (parrot/parrot) Issues opened : 771 (Squaak return statement doesn't control flow) by portmanteaufu : github.com/parrot/parrot/issues/771
kjs so ics are "special", since they can be represented directly rather indirectly through the constant table. (not sure what you're working on isBEKaml, but just so you know :-)) 15:58
whiteknight isBEKaml: the actual op code is in src/ops/core.ops. The file src/ops/core_ops.c is the generated file that you shouldn't touch directly 16:03
isBEKaml whiteknight: Yes, I'm looking at these 2 files core.ops and sys.ops 16:04
whiteknight okay, just making sure :)
I suspect the interpinfo op falls back to something in src/interp/api.c. Parrot_interp_info or something like that 16:05
isBEKaml whiteknight: there are several under that. 16:06
whiteknight: Parrot_interp_info{,_p,_s}
whiteknight oh, right. I think they're separated by return value. right
isBEKaml :)
16:07 benabik joined
NotFound whiteknight: ping 16:09
whiteknight pong 16:11
NotFound whiteknight: fixed the bug you told me. Do you want a snapshot update? 16:12
whiteknight yes, if you are able 16:13
16:13 fperrad joined
whiteknight Was it a difficult bug? I didn't have a chance to look at it 16:14
NotFound whiteknight: no, it was a mistake, a recent change broke a bad assumption that shold have been already fixed but wasn't. 16:16
whiteknight okay, that's good. Fixing mistakes is always good before a release 16:17
This is the last "stable" release before GSOC and other big things happen, so I would like it to be a stable as possible 16:18
dalek nxed/version_1_8: 67ea88d | NotFound++ | winxedst2.winxed:
fixed variable access in multi assign
nxed/version_1_8: 0e78241 | NotFound++ | NEWS:
update news
16:21
nxed/version_1_8: f578f72 | NotFound++ | pir/winxed_compiler.pir:
update installable compiler
nxed/version_1_8: faada1f | NotFound++ | / (3 files):
Ooops, forgot to update version number in code
16:24
16:31 adu joined
NotFound whiteknight: I'm getting some test failures in Rosella with parrot master and the fix. Is this expected? 16:36
whiteknight I don't know. I will have to look tonight
nopaste "NotFound" at 213.96.228.50 pasted "Rosella test fail" (14 lines) at nopaste.snit.ch/140892 16:37
NotFound There
16:48 PacoAir joined
dalek rrot: d6dfa2e | NotFound++ | ext/winxed/ (2 files):
update winxed snapshot to 1.8.2 - Bug fixes
16:48
whiteknight hmmm...that test failure is weird 16:54
Coke aloha: tell alester bobby-tables.com/ru_RU/ is broken.
isBEKaml whiteknight: for now, I'm including sysinfo ops under *both* sysinfo and interpinfo. Can we deprecate them later or do you see any problems keeping them both now? 16:55
Coke aloha: msg alester bobby-tables.com/ru_RU/ is broken.
aloha Coke: OK. I'll deliver the message.
isBEKaml whiteknight: if so, I can delete sysinfo.
whiteknight isBEKaml: I see no problem with duplicate functionality. Some things are probably relying on sysinfo so best not to change it
isBEKaml whiteknight: right, I haven't fully searched to be sure, so asked for deprecation (if effective) 16:56
whiteknight isBEKaml++
dalek nxed: 11eca20 | NotFound++ | winxedst2.winxed:
fixed variable access in multi assign
17:07
nxed: e5dfca6 | NotFound++ | NEWS:
update news
ttbot Parrot d6dfa2e9 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/85216 17:14
isBEKaml whiteknight: okay, two files to modified as far as sources go: gc_api.h and api.c. the .ops files have doc changes. 17:20
whiteknight: how do I test these to make sure? (building right now)
whiteknight "make test" 17:21
isBEKaml whiteknight: sure, the specific test? sysinfo and interpinfo?
whiteknight I don't know what specific tests they would be, just run them all 17:22
isBEKaml nvm, interp.t
they need to be updated, I guess..
17:28 darbelo joined
dalek sella: f46feb9 | Whiteknight++ | src/path/Path.winxed:
[Path] Fix Path to account for changes to String.reverse_index() method in core
17:59
whiteknight NotFound++ for the report 18:06
18:14 crab23131 joined 18:21 fperrad joined
NotFound whiteknight: all test pass now 18:23
whiteknight awesome 18:27
dalek nxed/builtinexpr: 11eca20 | NotFound++ | winxedst2.winxed:
fixed variable access in multi assign
18:30
nxed/builtinexpr: e5dfca6 | NotFound++ | NEWS:
update news
nxed/builtinexpr: b8ad798 | NotFound++ | / (2 files):
Merge branch 'master' into builtinexpr
adu hey 18:44
someone told me about an attempt long ago to compile pbc => llvm, does anyone know about this?
whiteknight a little bit 18:45
hello adu, welcome to #parrot 18:46
adu hi whiteknight 18:50
I'm not exactly new
I used to hang out here like 3 years ago, but my interest was rekindled about a month ago
whiteknight oh good, we love rekindled interest
adu 3 years ago I was disappointed that you couldn't install parrot 18:51
but I see that's changed
whiteknight i'm not aware of a time when Parrot couldn't be installed. Must have been before me
adu well, there used to be an error message when you typed "make install"
it was a long time ago
anyways, I've been doing a lot of work with grammars 18:52
whiteknight aesome
or awesome
adu so this time (the rekindling) I'm more interested in perl6 than parrot (last time it was more interest in parrot) 18:53
dalek nxed/builtinexpr: e51a492 | NotFound++ | winxedst2.winxed:
re-enable special case for index and calls in string cast
18:54
adu but anyways, I would like to see if there is anything I can do for parrot, testing, contributing, and the like
whiteknight adu: Certainly! We aren't quite at the LLVM integration stage yet if that's what you're interested in, but we have plenty of other work to go arouned 18:55
adu I was also wondering how the whole installable_$LANG works 18:57
it looks like it just calls Parrot_api_run_bytecode() 18:58
do you think there would be any performance gain if the bytecode were translated into Parrot_$OPCODE(…)? then compiled with LLVM? 19:00
I was just trying to think of a way of using LLVM that doesn't involve too much work 19:01
which would essentially be pbc => c 19:02
NotFound adu: I think it will be complicated and the performance gain will not be great, because you'll need to create Sub-alike objects, Parrot contexts, and lots of argument passing between C and parrot. 19:09
19:12 crab23131 left
whiteknight well, performance isn't the only reason to play with such a thing 19:17
it could be a very valuable learning experience, especially for the M0 guys
adu what's M0?
whiteknight adu: It's re-design of the opcodes and bytecode to be simpler, more atomic, and easier for JIT 19:18
basically, making parrot's opcode set look much more like the LLVM opcode set
sorear
.oO( 50s parrot: our bytecode is atomic! )
19:19
adu interesting
PerlJam whiteknight: why's it called "m0" btw? Everytime I see that I think of "ring 0" in kernel design, so that kind of evokes the right ideas, but I don't know if the "m" has some significance. 19:20
adu PerlJam: Magic Level 0 i think
whiteknight PerlJam: I seem to remember it being short for "magic-level 0", that is, no magic
PerlJam thanks. 19:21
adu I seem to remember magic talk a few years ago 19:24
leto.net/dukeleto.pl/2011/05/what-is-m0.html 19:28
alright, I'll give it a try 19:32
whiteknight adu++ 19:42
adu :) 19:49
dalek p: 3ab8ab1 | jnthn++ | / (2 files):
Add an OwnedResizablePMCArray, along the same lines as OwnedHash.
20:23
p: 5308279 | jnthn++ | src/6model/serialization.c:
Deserialize RPAs with their object ownership. This seems to fix the leak that saw parametric roles and pre-comp sometimes interact badly.
adu there seems to be current work on the M0 branch 20:26
cotto a bit, yes 20:27
adu cotto! 20:28
your name is all over M0
cotto I need to find some free time that coincides with benabik's free time to hash out a thing
adu need help?
cotto that and a lack of cft are the only reason more hasn't happened in the last week
sure. what's your interest? 20:29
adu well
in general, grammars, Perl6, Python, and Scheme all running on the same VM
specifically, not sure yet 20:30
maybe continuations
cotto I've got a gist going with my current TODO list 20:32
gist.github.com/2581153
adu what is this spec? 20:33
where is it?
cotto the main spec is in the m0 branch, docs/pdds/draft/pdd32_m0.pod
dalek kudo/nom: d1f5db2 | jnthn++ | / (2 files):
Bump NQP_REVISION to get bs fixes; a small tweak in Rakudo to account for the change too.
20:34
adu ah thanks
looks like you need help with the disassembler 20:37
dalek kudo/nom: 570f2bb | jnthn++ | docs/ChangeLog:
Few ChangeLog updates.
cotto adu: that'll be needed but the debugger that nbrown++ is working on is also in a pretty immature state 20:38
seen benabik 20:40
aloha benabik was last seen in #parrot 4 hours 33 mins ago joining the channel.
dalek kudo/nom: 7d33ee1 | kboga++ | / (2 files):
Adds a slightly adjusted but mostly copy pasted version of ng's pack & unpack
20:42
kudo/nom: f2e5c38 | jonathan++ | / (2 files):
Merge pull request #66 from kboga/ng-pack-unpack

Adds a slightly adjusted but mostly copy pasted version of ng's pack & unpack.
20:43 mdupont joined
dalek kudo/nom: eb05804 | jnthn++ | docs/ChangeLog:
Note pack and unpack in ChangeLog.
20:51
21:14 lucian joined 21:40 alvis joined 21:45 perlite_ joined
benabik ~~ 21:51
cotto hio benabik 22:21
benabik o/ cotto 22:47
22:56 whiteknight joined
whiteknight good evening, #parrot 23:01
cotto benabik: you had some concerns about untyped registers making life harder for the gc. 23:07
benabik: what'd be necessary and sufficient for m0 to have a nice modern gc? 23:08
benabik cotto: Yup. If you just have blank unorganized memory space, you have to make the GC guess which bits of it are pointers. It's not impossible, but it definitely makes for more work.
Coke suggestion: make the gc live in m1 and write it in m0 23:12
we want as little in C as possible, neh? 23:13
benabik I don't see that as the point.
I see the point as "get into the VM as soon as possible".
Coke That actually sounds like the same point. 23:15
benabik If M0 shrinks down to a thin wrapper on top of x86, I don't see a point.
Coke: We can write a "VM" that gives no features on top of the standard processor and then write Parrot on top of that... We'd have basically no C, but don't really gain much. 23:18
cotto: Really the question is having a sane root set. I'd imagine that for a "no magic" VM, we'd want to say "these things here are pointers". Untyped register space gives use "these things here might be pointers, go and see if they are and if so then start sweeping them" 23:22
cotto if gc-able things are allocated with a different op, it's easy for the interp to keep a list of pointers to them 23:23
whiteknight We want a clear set of registers set aside for GCable pointers. We're fighting to get to a precise GC, and throwing that all away is not a good idea 23:24
benabik The GC is probably going to have a global list of objects yes. But having to iterate over that list for every _possible_ pointer is not going to be the bastion of efficency. 23:25
whiteknight stack walking or walking blocks of memory to find pointers is bad and we shouldn't plan to do more of it
cotto Is a copying/compacting gc too magical for m0? 23:34
benabik Possibly not but is even more difficult if we're not sure what is and isn't a pointer. 23:35
cotto agreed. The tradeoffs need lots of thought.