Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: merge gc_massacre, remove deprecated items, close tickets.
Set by moderator on 15 June 2010.
00:00 ash_ joined
whiteknight purl link is <reply>I think Link is a pretty cool guy. eh kills Ganon and doesnt afraid of anything 00:01
purl OK, whiteknight.
cotto_work link? 00:04
purl I think Link is a pretty cool guy. eh kills Ganon and doesnt afraid of anything
bacek aloha, humans 00:12
cotto_work HELO BACEK
bacek ELHO cotto_work
seen pmichaud 00:13
purl pmichaud was last seen on #parrot 2 hours, 48 minutes and 15 seconds ago, saying: afk for a bit -- brb
bacek msg pmichaud What is "the best way" of implementing pir's ".include" in nqp?
purl Message for pmichaud stored.
whiteknight good morning bacek
bacek good localtime(), whiteknight 00:14
Any luck with gc_massacre pdd update?
whiteknight bacek: I was working on it and got sidetracked 00:15
bacek whiteknight, slacker! :)
00:15 Themeruta joined 00:17 tetragon joined
whiteknight bacek: I will work on it now 00:17
bacek whiteknight, ok :)
whiteknight bacek: I'm probably going to need input from you. You know more about the current architecture than I do 00:18
bacek whiteknight, it's almost same as on wiki
chromatic I'm still confused why sweep-free won't work. 00:19
00:20 snarkyboojum joined
chromatic At some point we do have to do a full collection, but we should be able to get by with smaller collections. 00:21
bacek chromatic, we need GenGC for it. 00:24
chromatic Why? 00:25
I can (eventually) write some pseudocode if that helps. 00:27
bacek List-manipulation adds a lot of overhead. 00:28
afaiu
chromatic Suppose we use a bitmap instead.
bacek and after marking objects we have to sweep dead and paint live 00:29
which is iteration over all allocated objects.
chromatic We don't though, that's my point. 00:30
Sweep-free can work like copying *even if we don't copy*.
dalek rrot: r47692 | NotFound++ | trunk/t/pmc/arrayiterator.t:
more shift out of bounds tests
00:32
bacek "copying" implies iteration over whole set. 00:33
chromatic It doesn't have to.
All we need is a mechanism to identify live objects in such a way that we don't have to iterate over all objects *themselves* to find dead ones.
Imagine we have 100 objects allocated. 00:34
We have a bitmap with 100 slots.
We mark all live objects by lighting up their slots in the bitmap.
We have to iterate the *bitmap* to find dead objects, but we don't have to iterate all of the memory space.
In one sense, that's iterating the whole set, but it's a lot friendlier to cache lines. 00:36
bacek Agreed. But. 00:39
purl agreed. but is there something easier?
bacek Linked list implementation is much simpler to turn into incremental version.
and generational version.
And with generational version we will win much more speed.
Especially because live/dead rate is something like 1/100. 00:40
(For young generation)
chromatic Probably true.
bacek it is true...
chromatic How do we get from where we are into incremental/generational? 00:41
bacek For generational - "VTABLE override" as per research.microsoft.com/en-us/um/peo.../index.htm 00:42
But we still need more sane triggering of GC than number of allocated objects... 00:43
chromatic How would we trigger it?
bacek Something like jvm hotspot's policy of allocated and used memory? 00:44
We now can cap used memory to any arbitrary size
chromatic We get rid of arenas? 00:45
A pool contains lists of objects of the same size?
bacek yes 00:46
chromatic Allocating a new object means a pointer bump in the free heap, unless there's already an object of the right size on the free list for a pool? 00:47
bacek s/of the right size/ 00:48
s/of the right size//
chromatic Allocating a new object means a pointer bump in the free heap, unless there's already an object on the free list of the appropriate pool? 00:49
bacek correct
chromatic I'm down.
bacek ?
It's same pool as PMC_Allocator. 00:50
But we track all allocated objects inside GC.
chromatic I like the idea.
That makes allocations much cheaper.
bacek It is how it's implemented 00:51
already
chromatic That means we can run the GC when we run out of space in the allocated free heap. 00:52
bacek it how current GC works. Almost.
chromatic What do we need to change now? 00:54
bacek In gc_massacre? 00:55
chromatic Yes.
00:56 JimmyZ joined
bacek gc_ms2.c, line 641 00:56
line 754
java.sun.com/j2se/1.5.0/docs/guide/...omics.html 00:58
00:59 tcurtis joined
dalek parrot: 3c8bbed | dukeleto++ | html/ (4 files):
Make a better stub website, still needs docs
01:01
bacek afk - bbl 01:02
dalek rrot: r47693 | NotFound++ | trunk/src/pmc/arrayiterator.pmc:
some cleanup in ArrayIterator, no functional changes
01:05
01:11 TiMBuS joined
dalek parrot: cfe1bd3 | dukeleto++ | html/community.html:
Add a link to the github repo on the website
01:24
r: e0d37e1 | bacek++ | (2 files):
Handle .local declarations
01:27
r: 09aa2c7 | bacek++ | (2 files):
Handle redeclaration of variables
r: e58e7c6 | bacek++ | (4 files):
Handle .const declarations
r: f6637c4 | bacek++ | src/PIR/ (2 files):
Handle more constants. Fix creating numbered registers
01:48 eternaleye joined
whiteknight bacek: ping 01:54
dalek rrot: r47694 | whiteknight++ | branches/gc_massacre/docs/pdds/pdd09_gc.pod:
[gc] Begin updating PDD09 for some of the recent changes we've made to that subsystem. Try and turn this document from less of a tutorial into more of a design document. Try to be more core-agnostic, don't assume that the only core we have is a tricolor MS. In fact, don't presume that we even have that.
rrot: r47695 | tcurtis++ | branches/gsoc_past_optimization (5 files):
Tests for :global, :p, and :pos args to PAST::Node.match. Rewrite its implementation in NQP to be trivial.
whiteknight purl msg bacek I think we can change allocate_pmc_header to take a size argument for the PMC attributes structure. We can save an indirect call to allocate_pmc_attributes, and maybe allocate the two together from the fixed-size pool for cache friendlyness. 02:04
purl Message for bacek stored.
whiteknight and now off to sleep. That's where I'm a viking 02:05
chromatic I like that idea. 02:06
NotFound_b I think morphing chokes with it. 02:07
With the last part. 02:08
dukeleto This is good motivation for GPG-signing and sha1sums: seclists.org/fulldisclosure/2010/Jun/277
chromatic Hm, morphing does. 02:10
dalek rrot: r47696 | whiteknight++ | branches/gc_massacre/docs/pdds/pdd09_gc.pod:
[gc] more rework on PDD09. Specifically, try to include some docs about the new GC_Subsystem structure. Some function pointers I don't quite understand yet, so I left docs for those blank
02:11
rrot: r47697 | NotFound++ | trunk/src/pmc/resizablepmcarray.pmc:
refactor RPA shift and unshift operations to extract common parts, no functional changes
rrot: r47698 | tcurtis++ | branches/gsoc_past_optimization/docs/pct/pattern (5 files):
Please codetest. Also fix a copy-paste fail in past_pattern_constant.pod.
chromatic Unless 1) we go from larger to smaller or equal (unlikely) or 2) in that case, we allocate new storage of the right size and set a flag to say "Free the allocated memory"
NotFound_b A bit complex, but doable. 02:13
chromatic Morph is rare enough that we still win. auto_attrs memory management is 3-5% of runtime. 02:14
Usually closer to 3%.
NotFound_b Ah, yes, the flag must be set for manual_attrs 02:15
02:25 plobsing joined, atrodo joined 03:07 janus joined
cotto dukeleto, that's what made me think about it. 03:17
03:38 atrodo joined 03:42 atrodo joined 03:44 atrodo joined 03:46 atrodo joined 04:08 atrodo joined 04:09 atrodo_ joined 04:24 atrodo joined 04:30 atrodo joined
kthakore atrodo: fix your irc man 04:54
./win 6
dalek rrot: r47699 | tcurtis++ | branches/gsoc_past_optimization (6 files):
Add PAST::Pattern::Any.
04:56
kthakore tcurtis: are you at YAPC ? 04:58
cotto kthakore, fix your win man ;) 05:06
tcurtis kthakore: No. 05:12
05:45 hercynium joined 05:49 eternaleye joined 06:00 TonyC joined
cotto bacek, ping 06:23
msg bacek It looks like src/POST/Value.pm is missing from PIRATE 06:40
purl Message for bacek stored.
bacek cotto, thanks! 06:54
cotto np 06:58
builds now
bacek++
dalek r: 73394f8 | bacek++ | src/POST/Value.pm:
Added POST::Value. cotto++ for reminder.
07:00
07:04 fperrad joined 07:36 janus joined
dalek r: fd422aa | bacek++ | src/POST/Compiler.pm:
Refactor POST::Compiler to support POST::Value.to_pbc
08:15
08:47 jsut joined
cotto bacek, should I be able to run t/01-parse/01-subs.t with parrot-nqp? It's a bit explodey atm. 08:47
bacek cotto, let me check
1..7 08:48
All test successful
purl duct tapes sawn off shotgun to foot
cotto no local changes?
maybe I need a newer nqp 08:49
bacek cotto, not it this files
nopaste with errors?
cotto sure
nopaste "cotto" at 192.168.1.3 pasted "PIRATE is SAD" (39 lines) at nopaste.snit.ch/21384 08:52
bacek cotto, erm... 08:53
cotto, which version of parrot? 08:54
cotto wfm with a more recent parrot
bacek error message is totally misleading... 08:55
cotto nice. all tests run by setup.pir test pass now
dalek r: e48b10f | bacek++ | src/P (2 files):
Small cleanups
bacek cotto, it's kind of expected :) 08:56
cotto Yeah. It should be something more like "Hey stupid, your installed Parrot is way too old."
or perhaps the Rude English translation thereof 08:57
bacek make_hello_pbc.pir is broken in trunk.
~/src/parrot (master)$ ./parrot examples/pir/make_hello_pbc.pir 08:58
Could not find sub hello
same error in PIRATE...
cotto on another topic, do you have any thoughts on GPG signed release tarballs? 09:00
bacek we should sign them. 09:01
Or at least provide sha1 sum of tgz files.
cotto a better-than-md5 checksum is a bare minimum 09:02
dalek rrot: r47700 | bacek++ | trunk/examples/pir/make_hello_pbc.pir:
Change fixup type in make_hello_pbc example.
purl dalek: that doesn't look right
cotto purl doesn't look right
purl cotto: sorry...
bacek I prefer debian way - sign "Packages" file which contains hashsums of files.
Especially if we are going to ship external packages (PLA, etc) 09:03
cotto That sounds like a good idea, though I should have been asleep an hour or two ago. 09:06
dalek r: 8ee6076 | bacek++ | t/ (2 files):
Move test post helper functions into t/post.nqp
bacek cotto, go to bed than! 09:08
cotto That also sounds like a good idea.
I'll get a bisect started on make_hello_world and let that run while I sleeeeeeep 09:09
svn-- 09:13
sleep++
'night
NotFound What's the reason for that change in fixup number? If we stop using a fixup type we can just stop using it, no need to renumber others. 09:50
dalek rrot: r47701 | NotFound++ | trunk/t/pmc/stringhandle.t:
more StringHandle tests
09:51
NotFound Well, I suppose is too late to undo that change. 09:53
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34491), fulltest) at r47700 - Ubuntu 10.04 amd64 (g++)
bacek NotFound, are you talking about make_hello_pbc? 09:54
NotFound bacek: yes, but referring to the pbc change that caused it. 09:55
bacek NotFound, I'm not sure when and why it was changed... 09:56
NotFound bacek: PBC_COMPAT 6.20
bacek I prefer to remove unused code. 09:57
So I agree with removal of fixup_label. 09:58
But I'm totally disagree with implicit enum values.
If enums are explicitly numbered it's much easy to keep backward compatibility.
NotFound bacek: remove unused code, yes. Change PBC compat to gain nothing, fully disagree. 10:00
'1' is not magical in any sense.
bacek "explicit enum numbering" 10:01
NotFound If we have just one type, having it labeled '2' doesn't harm anyone.
bacek If enum_fixup_sub had explicit value before removal of fixup_label PBC_COMPAT will be intact.
It's too late to change it back. 10:02
But we can set it to 1 now
I would like to see augment to coding standard which will ban implicit enum values.
NotFound bacek: the way to write the enum is an implementation detail. Surely it can send a signal to some people, but others just change it without a second look.
bacek I'm slightly disagree. 10:03
If we had enum { fixup_none = 0; fixup_label = 1; fixup_sub = 2 } than fixup_label can be just removed 10:04
NotFound bacek: I can scan the repository for examples, but is a boring task.
bacek (And statement in coding standard "You don't renumber enums. Nevar")
It should be codetest task. 10:05
NotFound bacek: I don't disagree with that proposal, just think is not enough.
bacek Of course it's not... 10:06
NotFound In fact, I'm going to do it.
bacek NotFound++ # make parrot better step-by-step 10:07
mikehh bacek: pir/pirate tests ok 10:09
bacek mikehh, there is just not enough tests :)
mikehh looks to add some tests 10:10
actually there are still tests to add all over the place :-} 10:11
bacek mikehh, I think many tests from t/compilers/imcc/syn/ can be easily copied across
NotFound mikehh: look at my recent changes. Most of it are adding tests. 10:12
We still can easily break lots of things without failing a single test. That's bad. 10:14
bacek NotFound, indeed... And TapTinder's coverage is really helpful. 10:20
NotFound Yeah
bacek Speaking of which...
purl Speaking of which... is there a date set yet?
dalek r: 0885bcc | bacek++ | (3 files):
Add stub for POST::Call node
r: caa4a9d | bacek++ | t/ (2 files):
Add first tests for PCC calls POSTing
r: 7fa5c0f | bacek++ | src/PIR/Actions.pm:
Handle simple pcc call
r: d2800d2 | bacek++ | (2 files):
Handle simple params in POST::Call
bacek mj41_, where is my dependant projects in TapTinder? :) 10:21
mikehh NotFound++ 10:23
bacek: is there an equivalent of make clean/make realclean with PIRATE or is it just not needed? 10:31
bacek mikehh, parrot setup.pir clean
mikehh 'k - just didn't see it in the source 10:32
bacek mikehh, it's part of distutils by fperrad++ 10:33
dalek r: 9963b06 | bacek++ | TODO:
Add more TODO items.
10:37
rrot: r47702 | NotFound++ | trunk/include/parrot/packfile.h:
use explicit numbers for enum_fixup values, put together enums for important pbc magic numbers and add some comments with the rationale
10:40
rrot: r47703 | NotFound++ | trunk/t/pmc/stringhandle.t:
codingstd: trailing space
rrot: r47704 | NotFound++ | trunk/include/parrot/namespace.h:
update headerizing
10:56
10:57 TiMBuS joined 10:59 mikehh_ joined
NotFound VTABLE_substr seems to be used only once in the repository, and is generated code for the Object PMC. What's the point of having it? 11:00
11:01 whiteknight joined
darbelo The String PMC doesn't use it? 11:01
NotFound darbelo: The String PMC implements it. 11:02
But no one *uses* it.
darbelo Ah, I misunderstood, then. I have no idea why we would want that VTABLE, really. 11:03
NotFound And not surprisingly, it has zero coverage.
darbelo gasps in unsurprise. 11:04
NotFound Ticketed. 11:09
purl: coverage? 11:10
purl somebody said coverage was cv.perl6.cz
NotFound purl: coverage is also tapir2.ro.vutbr.cz/cover/cover-results/
purl okay, NotFound.
NotFound purl: coverage? 11:11
purl somebody said coverage was cv.perl6.cz or tapir2.ro.vutbr.cz/cover/cover-results/
mikehh opbots, names 11:12
11:17 clinton joined
bacek msg tcurtis take a look at search.cpan.org/dist/Perl6-Pod/ 11:17
purl Message for tcurtis stored.
dalek TT #1682 created by NotFound++: VTABLE_substr is never used 11:19
TT #1682: trac.parrot.org/parrot/ticket/1682
whiteknight I didn't even know that there was a VTABLE_substr 11:26
you learn something new and disappointing every day
dalek rrot: r47705 | darbelo++ | branches/gsoc_nfg (4 files):
Improve iterator handling a bit more, add a support function and provisionally de-const a pointer.
11:29
r: fdacfa9 | bacek++ | (2 files):
Add validation of used registers in PCC call
11:34
r: f1e9b72 | bacek++ | (2 files):
Handle returns from PCC calls in POST
r: d089723 | bacek++ | src/POST/Value.pm:
Add POST::Value.flags to be used in PCC call.
r: 8a67fa8 | bacek++ | (2 files):
Handle multiple returns from PCC call
NotFound There is a VTABLE slice? I don't see it in vtables.h but there is one in the Hash PMC. 11:37
whiteknight yeah, that's a disappointment too 11:39
NotFound Parrot_ex_throw_from_c_args(interp, NULL, 1, "this is broken - see slice.pmc"); ---- See WHAT? 11:40
dalek rrot: r47706 | darbelo++ | branches/gsoc_nfg/src/string (2 files):
Add some function docs and ASSERT_ARGS()
11:45
darbelo That is from the damm stone age. 11:46
dalek rrot: r47707 | darbelo++ | failed to fetch changeset:
Sync with trunk
12:02
whiteknight deprecating and removing VTABLE_slice would be nice too 12:10
NotFound whiteknight: Deprecating something that doesn't exist? :o
whiteknight oh, did we get rid of it already?
I can't remember
NotFound It existed only in the source of hash.pmc, but the pmc processing ignore it. 12:11
"existed", I've deleted it right now.
Better way to improve coverage: delete unused code. 12:16
mikehh whiteknight: BTW liked your blog post on locks etc. 12:17
12:18 mmcleric joined
dalek rrot: r47708 | NotFound++ | trunk/src/pmc/hash.pmc:
there is no such thing as a VTABLE slice
12:19
rrot: r47709 | NotFound++ | trunk (2 files):
kill unused and unuseful function key_new_pmc
r: a69c981 | bacek++ | (2 files):
Get rid of PAST nodes. Broke couple of tests
12:27
r: c0ad9a5 | bacek++ | src/PIR/Actions.pm:
Fix type-of register in POST::Value initialization
12:38
kthakore atrodo: hi! so you are goin the gaming in perl talk at YAPC ? 12:40
dalek TT #1683 created by NotFound++: Key clone and set_pmc are broken 12:42
TT #1683: trac.parrot.org/parrot/ticket/1683
rrot: r47710 | NotFound++ | trunk (3 files):
kill unuseful function key_set_pmc and replaces its usage in key.pmc with an exception with an updated message, TT #1683
12:51
13:02 ambs joined
dalek r: 9763ef4 | bacek++ | t/post/call.txt:
Add test for PCC call by register.
13:03
r: 1bd7346 | bacek++ | src/POST/Call.pm:
Add POST.Call.invocant
r: b6c0cc0 | bacek++ | src/PIR/ (2 files):
Handle all cases of 'short' pcc calls in POST
whiteknight mikehh: thanks! 13:05
dalek r: 45d7658 | bacek++ | t/post/call.txt:
Add more tests.
13:09
13:27 atrodo_ joined
atrodo kthakore> Yea, I'm currently set to attend the gaming talk. 13:33
And sorry about all the joins/reconnects, I was playing with App::Bondage last night. Neat program, even if the documentation is a bit obtuse 13:34
kthakore atrodo: no prorblem
atrodo: the documentation for SDL_perl?
atrodo No, for App::Bondage
kthakore atrodo: Will you be taking videos or know anyone who does? 13:35
atrodo: I work ok SDL perl and this is the first YAPC talk about our work.
atrodo: we don't know the guy but we want a video 13:36
atrodo I'm not sure about videos. I know I won't be, but I heard talk on #yapc about some talks being videoed
dalek TT #1684 created by bacek++: examples/pir/*.t aren't executed during make fulltest. 13:47
TT #1684: trac.parrot.org/parrot/ticket/1684
13:51 khairul_ joined 13:52 lucian joined 14:33 mmcleric left 14:36 mmcleric joined 14:45 snarkyboojum joined
dalek rrot: r47711 | NotFound++ | trunk/t/pmc/stringhandle.t:
test StringHanlde get_fd method
14:45
14:45 mmcleric joined
dalek rrot: r47712 | whiteknight++ | branches/gc_massacre/docs/pdds/pdd09_gc.pod:
[gc] small tweaks to PDD09
15:01
15:12 theory joined
dalek rrot: r47713 | khairul++ | branches/gsoc_instrument (4 files):
fleshed out instrumentop.pmc.
15:18
cosimo hi all, 15:31
I'm trying to use parrot's JSON library from Perl6 with no success so far
can someone help me? pastebin.org/343753
moritz then use the pure Perl 6 JSON library :-)
cosimo moritz: :) 15:32
but where's the fun, then?
:)
moritz using the parrot variant isn't going to be easy
rakudo uses data types that parrot isn't aware of
for example ObjectRef PMCs 15:33
cosimo my goal is to understand how to call Parrot library functions
but it seems there's always something in my way that I don't understand
moritz I know that feeling very well 15:34
cosimo first the find_method('signature') and now this damn Null PMC in invoke()
for Digest/MD5.pbc I could get the "function PMC" with no problems except the find_method('signature') error 15:36
for JSON.pbc, that for my eyes is exactly the same thing, I can't even seem to get a valid PMC in the first palce
15:38 tetragon joined 15:56 snarkyboojum joined
moritz is there an autoflush property or so in parrot's IO? 16:05
I grepped for -i auto.*flush, without success 16:06
dalek rrot: r47714 | NotFound++ | trunk (2 files):
implement ByteBuffer set_integer_native vtable to do explicit resize and add some tests for it
16:07
rrot: r47715 | khairul++ | failed to fetch changeset:
sync with trunk
16:24
kthakore oh hi moritz 16:25
moritz: did you try clear? 16:26
$P0.'flush'()
moritz: docs.parrot.org/parrot/devel/html/d...o.pod.html
moritz kthakore: thanks
kthakore moritz: yay! I helped some one
kthakore goes for his rewards cake
moritz: perl6 SDL is taking time btw. I remember you asked me about it 16:27
moritz kthakore: you might be confusing me with somebody else (or I might be confusing me with soembody else :-)
kthakore moritz: ha
moritz: remember I told you I wnated to use grammers in perl6 16:28
moritz: for games
moritz: and how SDL is a library to provide multimedia for games
moritz was that more than a month ago?
kthakore moritz: and you asked me when is it coming to perl6 and I said July-ish
moritz: yeah
moritz ah
no wonder I forgot about it :-) 16:29
kthakore moritz: well it will be longer since parrot ppl broke my code
moritz: no worries
moritz now I remember... you're a gsoc mentor, right?
or at least potential mentor
kthakore moritz: github.com/kthakore/parrotSDL <--- worked as of feb 25th
moritz: yeah potential
we were yonder over at #perl6 freenode 16:30
moritz happens :-)
kthakore moritz: well until someone gives me C access to perl6 or parrot it will be slow going 16:31
moritz: as I am learning NCI/PIR as I go
moritz wonders how callbacks into parrot land and NCI work together, if at all 16:32
kthakore moritz: like building on sand is my metaphor 16:33
moritz: and I stick by it :P
moritz :-)
kthakore moritz: I had another rough night last night on it
moritz but it does work in some cases?
kthakore moritz: well it is all broken now so I am starting from scratch 16:34
moritz: and there seems to be a bug in namespace
so ... I have no clue what I am doing
moritz: but I rarely do anyway
moritz :-)
kthakore perl5 and XS was like this a lot at the starting 16:35
I just love learning new shit that breaks my brain
moritz: :)
moritz well, those interfaces only get better when people use it, and push the developers to make it better (or make it better themselves)
kthakore moritz: true. I hope I can generate a lot of noise in forms of tickets and emails to get it working 16:36
moritz: if I can understand why it don't work I will try and help parrot fix them
any way gtg for food
moritz great
ciao
kthakore moritz: good luck with flush
moritz thanks 16:37
kthakore moritz: the docs are for 2.4 btw
moritz flushes
kthakore moritz: so maybe run the html doc gen in svn head
I don't know how though sorry
NotFound moritz: What kind of autoflush are you looking for? Doing a flush after each write?
moritz NotFound: yes
NotFound I don't think we have that. 16:38
Well, there is one way to do that: setting the handle to unbuffered, but that doesn't flush the OS handle. 16:39
moritz NotFound: I'll try to do it on rakudo level
NotFound moritz: handle.'buffer_type'('unbuffered') 16:41
16:41 tcurtis joined
dalek kudo: f236549 | moritz++ | src/core/IO.pm:
IO.autoflush
16:49
17:21 khairul joined 17:41 lucian_ joined
dalek rrot: r47716 | NotFound++ | trunk/t/pmc/hash.t:
some more tests for Hash PMC
18:18
rrot: r47717 | NotFound++ | trunk/t/pmc/handle.t:
test Handle init_pmc
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34495), fulltest) at r47715 - Ubuntu 10.04 amd64 (g++) 18:36
18:37 mao joined
mao Hello 18:37
what's the best scheme implementation for parrot?
and is it worse/better than, plt-scheme, for example?
Tene There isn't a decent or useful scheme implementation for Parrot. 18:38
moritz I don't really know, but I'd be surprised if any was as feature-complete as plt-scheme
mao hmm that's sad :[
and what about partcl?
is it good? 18:39
Tene I'm not sure of the maintained-status of partcl right now. I hear that it has a lot of TCL implemented, though.
moritz let's higlight Coke, he's the main developer 18:40
18:41 eternaleye joined 18:44 LoganLK joined
mao man parrot looks nice 18:45
:O
is parrot better than jvm?
moritz jvm is better for running java 18:46
parrot is better for running Perl 6
moritz likes Perl 6 better than java
NotFound Java is better for coffee.
So have a cup of coffee and use Parrot. 18:47
mao i like jvm for closure
but some things like tail recurssion cant be don on jvm (idk why, im not a VM expert) 18:48
can this thing be done on Parrot?
darbelo Tene: Didn't you write a scheme some time ago? 18:49
moritz parrot natively supports tailcalls
begin CPS based and all
Tene darbelo: That's right. I think I dropped it in the middle of implementing macros, though.
mao cool 18:50
moritz but tail recursion is also something that a compiler can detect and optimize away at compile time; the underlying VM doesn't need to know about it at all
purl okay, moritz.
Tene I don't know what state it's in, and it has no libraries of its own, and still uses the old HLL interop stuff, so won't be able to load any other language's libraries.
github.com/tene/steme/
it would be a great starting point for anyone wanting to work on a useful scheme, though.
darbelo Ah. I thought it was further along than that. Maybe I have it confused with something else... 18:51
moritz lua maybe?
iirc lua is basically feature complete 18:52
Tene no, you were probably thinking of steme. I used to talk about it a lot in here.
tcurtis moritz: I think the reason clojure doesn't have have tailcalls(except for loop/recur and trampoline macros) is that the JVM doesn't support jumping to a function's address. 18:55
Also, lua appears to pass all of its tests(both "parrot setup.pir test" and "parrot setup.pir spectest"). Not sure how comprehensive those test suites are, although there's 3000 tests altogether. 18:58
On an unrelated note, would anyone care to help me with some problems I'm having build a dynpmc with distutils? 19:00
moritz tcurtis: on an unrelated note, I noticed that your optimization blog post was very cool, and still it made me feel uneasy... (more) 19:01
tcurtis: the reason is that it uses a custom evaluation scheme for the constant folder, ie a different code path than normal execution 19:02
which becomes a maintenance nightmare when done for more than one operation
I know it's only a first optimization, but I'd love to see one that uses the same code path for constant folding and normal operation, just one of them done at compile time 19:03
(end of rant) 19:06
darbelo tcurtis: What's your dynpmc problem? 19:08
Also, for building dynpmcs with distutils you can look at decnum-dynpmcs and dbm-dynpmcs. They are two examples of the two different approaches you can take to building a dynpmcs library wrapper. 19:11
nopaste "tcurtis" at 192.168.1.3 pasted "This is my error message (source is at gitorious.org/parrot-gtk/parrot-gtk )" (15 lines) at nopaste.snit.ch/21395 19:12
tcurtis moritz: True. That would be desirable. I'm not sure how I could do that. Is there a PCT::Compiler method to run all the stages after some stage on something? 19:13
s/PCT/HLL/ 19:14
darbelo tcurtis: The group should be an array, not a scalar. 19:16
Even if it has just one element. 19:17
19:18 davidfetter joined
tcurtis darbelo: same error. 19:18
darbelo Then, you should avoid making it a group. I'm not sure pmc2c can handle groups of just one PMC. 19:19
I did that for dbm-dynpmcs.
tcurtis For that, should the line in question be something like "%parrot_gtk<dynpmc><gtkhelper> := 'src/pmc/gtkhelper.pmc';"? Same error. That's what I had initially, I think(might have been <> instead of '', both produce the same error still). 19:22
darbelo Aha! 19:24
You forgot to declare your dynpmc as 'dyn' :) 19:25
pmclass GTKHelper dynpmc {
Otherwise, pmc2c will generate the wrong C for a dynamic extension. 19:26
That's why it's looking for the pmc_*.h files in include/
Your setup file is correct. 19:29
tcurtis Thanks.
darbelo No problem. I've done all of this beofore. 19:34
mao what's the best parrot tutorial for complete begginers?
darbelo mao: Probably the PIR book. Nowadays. 19:35
mao the pir book 19:36
purl i think the pir book is www.amazon.com/dp/0977920127
19:36 plobsing joined
mao :O 19:36
darbelo docs/book/pir/* in your neares parrot checkout.
moritz tcurtis: no idea, you'd have to ask pmichaud 19:37
darbelo mao: It's a volunteer effort, so it might not be completely up to date in all areas, but it should be good enough to get you started.
mao but its like
already on amazon
tcurtis mao: From what perspective? Are you planning to write HLL compilers, code targeting a Parrot compiler, libraries for Parrot, work on the actual VM core itself, etc.? 19:38
mao writing a language for parrot would be nice
but i assume basic knowledge of parrot structure wont harm
so, should I do PIR book? 19:45
nopaste "darbelo" at 192.168.1.3 pasted "This gets the build far enough to choke on GTK.nqp syntax errors." (26 lines) at nopaste.snit.ch/21397 19:46
darbelo tcurtis: See nopaste.snit.ch/21397
tcurtis mao: I don't think there are any tutorials for modern PCT+NQP-rx. Looking at partcl-nqp, rakudo, or NQP-rx(the compiler for which is written with PCT and NQP-rx) is probably the only way to start learning NQP-rx and PCT. Also the S05 section of the Perl 6 Synopses(since NQP is a subset-ish of Perl 6 and has similar regexes). I haven't looked at the PIR book in a while, so I don't know whether to recommend it. 19:47
darbelo: I'm getting there. Thanks for the help. darbelo++ 19:48
darbelo And the error in GTK.nqp is a missing ';' on line 5. After that it fails in the compilation of build/GTK/Widget.pbc 19:49
mao tcurtis: oh man
darbelo The opcode 'setattribute_p_s_p_p' (setattribute<4>) was not found. Check the type and number of the arguments in file 'build/GTK/Widget.pir' line 105
mao a lot of new words :)
tcurtis PCT? 19:50
purl PCT is the Parrot Compiler Toolkit
moritz darbelo: settattribute has only 3 args
object, attribute name and new value
return value void 19:51
mao www.parrotblog.org/2008/03/targetin...ot-vm.html
what about that tutorial?
(with PIR book ofc)
moritz mao: it's good, but out of date I fear 19:52
tcurtis darbelo: I've got the syntax errors fixed and it building. Now to get it actually working. :)
mao ok thanks
i should start reading now
19:52 hercynium joined
nopaste "darbelo" at 192.168.1.3 pasted "Aw. I almost had it..." (54 lines) at nopaste.snit.ch/21399 19:52
darbelo tcurtis: The nopaste get's the build to finish for me. 19:53
s/'//
NotFound What are you doing, a gtk wrapper for parrot? 19:55
mao Which should I get for emacs: parrot.el, pasm.el or pir-mode.el? 19:56
darbelo NotFound: That was my first guess too.
mao oh nvm
sorry
havent noticed readme
:(
20:01 ambs joined
tcurtis Hmm... now when I do "$__helper.gtk_init()" in GTK::init, I get "Method 'gtk_init' not found for non-object". --trace shows that the thing the method is being called on is indeed a GTKHelper PMC. 20:04
NotFound: hopefully.
purl hopefully is lightweight.
20:05 Psyche^ joined
NotFound tcurtis: that will be great, even with just minimal functionality. 20:05
dalek kudo: dd6bda0 | jonathan++ | src/ (3 files):
Some updates to parametric role parameter handling, bringing us in line with

types to bring us more in line with STD and fixing at least one RT ticket along the way.
20:10
purl i guess the way is to read the docs, or the FAQ..
ambs purl: forget the way. 20:11
purl ambs: I forgot way
20:27 Myhrlin_ joined
tcurtis the way? 20:30
purl i guess the way is closures, prototypes and subrefs
tcurtis way? 20:31
ambs some other way :)
nopaste "tcurtis" at 192.168.1.3 pasted "darbelo: can you help me with this?" (9 lines) at nopaste.snit.ch/21400 20:32
dalek kudo: 406d85f | jonathan++ | (2 files):
Apply patch from cognominal++ to implement Capture.perl.
20:33
darbelo tcurtis: I think you need to add the '_group' suffix to your loadlib call. 20:48
Other than that, I can't see why it shouldn't work... 20:49
Doing that changes the error to this: 20:51
nopaste "darbelo" at 192.168.1.3 pasted "This is after adding _group to the loadlib" (6 lines) at nopaste.snit.ch/21401 20:52
darbelo tcurtis: Nevermind. I had stale shared objects in my dynext/ 20:54
I have no Idea why it fails. I blame that on my weak grasp of NQP-rx 20:55
tcurtis I changed it to not use a group when I was trying to figure out the build problems earlier. --trace showed that the object the method was being called on was indeed a GTKHelper PMC.
darbelo Yeah. I was misled by a stale _group.so file I had from my earlier debug attempt.
The use of 'non object' makes me want to blame this all on PMC proxying and general weirdnesss whe it comes to method lookups. 20:57
20:59 lucian_ joined
darbelo Anyway. I have to go now. I hope you find a solution. 21:00
tcurtis Thanks for your earlier help. 21:01
bacek Good morning, humans 21:24
ambs good night, bacek 21:25
tcurtis Good afternoon, bacek.
21:26 mmcleric joined
ambs next timezone_ 21:31
?
;) night 21:37
21:43 kid51 joined 21:47 PacoLinux joined
bacek seen pmichaud 21:48
purl pmichaud was last seen on #parrot 1 days, 23 minutes and 50 seconds ago, saying: afk for a bit -- brb [Jun 18 21:24:47 2010]
bacek msg pmichaud gist.github.com/445309 - foo:bar<baz>() call support in nqp. Any objections for applying it? 21:49
purl Message for pmichaud stored.
sorear seen dukeleto 22:14
purl dukeleto was last seen on #parrot 20 hours, 6 minutes and 5 seconds ago, saying: This is good motivation for GPG-signing and sha1sums: seclists.org/fulldisclosure/2010/Jun/277
22:23 lucian joined 22:30 ash_ joined
dalek TT #1685 created by bacek++: Fix for #389 broke examples/pir/make_hello_pbc.pir 23:07
TT #1685: trac.parrot.org/parrot/ticket/1685
bacek msg cotto I bisect make_hello_pbc.pir failure... trac.parrot.org/parrot/ticket/1685
purl Message for cotto stored.
dalek r: f3e2d12 | bacek++ | (3 files):
Add POST::Call.calltype to use with .tailcall and .return
23:26
r: 0afecba | bacek++ | (2 files):
Implement .tailcall POSTing
cotto bacek, thanks 23:30
bacek cotto, its little bit a problem. I have no idea how it works and unlikely can fix it by myself. 23:31
NotFound bacek: I have the same problem with winxed-pirado 23:32
dalek r: fb6b5a4 | bacek++ | (3 files):
Implement .return and .yield POSTing
bacek NotFound, any luck with fixing it?
NotFound bacek: I have no idea.
bacek NotFound, :(
23:33 bubaflub joined
NotFound Looks like now to put a sub in a namespace some dark magic is needed. 23:33
bacek :nsentry 23:34
purl :nsentry is the pir modifier to put a method in the namespace
NotFound As purl said. 23:35
The black magic is whatever imcc does.
bacek But I have :nsentry flag in make_hello_pbc... 23:36
NotFound Looks like imcc does some more than setting the ns_entry_name 23:37
bacek Yeah... It works from generated_hello.pbc.
dalek r: a3b6aa2 | bacek++ | TODO:
Add more TODO
NotFound bacek: main, or automatic main for first sub, works. Any other sub doesn't 23:39
bacek NotFound, sigh...
23:54 jan joined
dalek kudo: edb8be9 | jonathan++ | (2 files):
Apply first cut of handles method generator. Patch courtesy of maard++.
23:55
kudo: 478bde3 | jonathan++ | src/ (4 files):
Get handles wired up and working. Patch mostly by maard++ with a few tweaks from
kudo: 884561f | jonathan++ | src/glue/handles.pm:
Fix a thinko and whitespace.
kudo: aa427c4 | jonathan++ | t/spectest.data:
Turn on S12-attributes/delegation.t.