Parrot 3.0.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Fix ipv6-related failures | Test imcc_interfaces and annotations-tree branches
Set by moderator on 31 January 2011.
00:06 shockwave left 00:20 lucian left
dukeleto plobsing: thanks for the heads up about that 00:20
shockwave: i agree with you 00:33
shockwave: i think you are the first person to create an app that calls into Parrot so often 00:34
shockwave: so perhaps the GC defaults are not in your favor
shockwave: which version of parrot are you using?
00:38 lucian joined
dukeleto one OSCON proposal down. Two more to go. 00:51
00:54 lucian left
whiteknight plobsing++ on the ohm-eta release 00:55
00:55 lucian joined
whiteknight really needs to get cracking on PLA and ParrotSharp releases soon 00:56
01:01 Coke left 01:24 lucian left
dalek TT #165 closed by pmichaud++: Disable perl6-internals@perl.org mailing list. 02:04
TT #165: trac.parrot.org/parrot/ticket/165
sorear if calling a method 30 times per second is bogging down Parrot, something is seriously wrong, or he's trying to run it on a PC/XT 02:27
02:28 kid51 joined
dalek rrotsharp: 060ae04 | Whiteknight++ | src/P (9 files):
cleanups, region/endregion organizations, some TODO notes
02:32
rrotsharp: bbd7d5c | Whiteknight++ | / (9 files):
fix everything so we build again
02:33 whiteknight left
dalek rrot/tt1988_pmcemitter: 6a4fdb9 | jkeenan++ | / (6 files):
Update copyright date on files with revisions.
02:44
website: jkeenan++ | Feedback on Jan 29 2011 Parrot Developers Summit: Were Users' Needs Served? 03:15
website: www.parrot.org/content/feedback-jan...eds-served
03:22 shockwave joined
dalek rrot: 24a57a3 | jkeenan++ | docs/project/release_manager_guide.pod:
Clarify: perl6-internals list is inactive; do not mail release notice there.
03:27
shockwave I'm trying to make use of some VTABLE functions. I have to hack their usage a little because I'm making use of the new Parrot_api_* functions, which unfortunately is still young and thus lacking many functions. 03:55
I'm getting a link error: unresolved external symbol _PMCNULL
I've searched for this _PMCNULL in the parrot codebase, but have not been able to find it. 03:56
Does anyone know what this is?
sorear try looking for PMCNULL instead
(are you on some version of windows?) 03:57
03:57 kid51 left
shockwave Yes, I'm on Windows 7. 03:58
I've found PMCNULL all over the place.
cotto kid51++ for deleting unneeded code 04:19
05:10 allison left 05:11 allison joined 05:54 particle joined 05:57 theory left 06:00 rurban_ joined 06:05 rurban left, rurban_ is now known as rurban
bacek_at_work msg kid51 Can you look at Pmc2c::Method and ::MethodEmitter? It's same problem as PMC/PMCEmitter. 06:10
aloha OK. I'll deliver the message.
bacek_at_work cotto, can you make "architectural decision" on trac.parrot.org/parrot/ticket/774 ? 06:14
cotto looking 06:17
bacek_at_work, if there's on hll that depends on it, I'll rip it out with great glee 06:18
I don't like that misfeature.
bacek_at_work thinking about resurrecting 2 years old branch :)
cotto bacek_at_work, which one? 06:19
bacek_at_work cotto, actually we can reintroduce it on top of 6model (I think). But with role composition.
Tene regularly thinks about resurrecting 1.5 years old branch
bacek_at_work cotto, pmc_pct :)
cotto bacek_at_work, yes. That's a proper way to do it.
I hate it because it's not even clear that it's an intended feature. 06:20
A proper implementation is fine.
The only condition I have for # 774 is that Lua work without it. I know that partcl was already fixed. 06:24
bacek_at_work cotto, in Lua only single pmc uses multiple inheritance.
LuaFunction
cotto How easy is it update?
bacek_at_work no idea...
cotto ok
let me take a quick look
bacek_at_work "copy paste" according to fperrad. 06:25
cotto It's times like this that the old static vtables were nice. 06:33
bacek_at_work somethink like this 06:34
plobsing luaany feels very role-ish. no attributes and vtables that provide default implementations unless they are overriden in concrete instances. 06:36
06:56 fperrad joined
cotto speaking of lua 06:57
fperrad, how much copy/pasting would be required to make LuaFunction not depend on pmc multiple inheritance? 07:03
I see 15 functions that it inherits from Sub, but I don't know how necessary they are. 07:04
nopaste "cotto" at 192.168.1.3 pasted "list of VTABLE functions in LuaFunction that are inherited from Sub" (16 lines) at nopaste.snit.ch/30744 07:09
bacek_at_work cotto, for PCC it needed only .invoke afaik. 07:10
So, can be changed from is-a to has-a
afk # going home 07:12
plobsing need freeze/thaw/visit for serialization to bytecode 07:21
fperrad cotto, the current implementation of LuaFunction is always synchro with Parrot (without effort), 07:37
so, I don't like the idea of copy/paste
the bacek's idea (ie. delegation) is better
cotto fperrad, something like calling Parrot_Sub_invoke in LuaFunction.invoke? 07:44
bacek cotto, ATTR PMC *sub; LuaFunction.invoke() { GET_ATTR_sub(sub); VTABLE_invoke(sub) } 07:47
cotto ok
It
It's up to fperrad what he'd like to do, of course. 07:48
07:50 mikehh left 08:38 cosimo left
dalek rrot/generational_gc: f57f392 | bacek++ | include/parrot/pobj.h:
Add need_write_barrier_flag and standard flags setters
09:54
rrot/generational_gc: 63c685d | bacek++ | src/gc/gc_gms.c:
Use PObj flag 'accessors'
rrot/generational_gc: 15641e4 | bacek++ | include/parrot/gc_api.h:
Add GC_WRITE_BARRIER macro.
rrot/generational_gc: 30c2e12 | bacek++ | / (3 files):
Use GC_WRITE_BARRIER macro and set need_write_barrier flag in GMS.
rrot/generational_gc: 1959d92 | bacek++ | src/ (4 files):
Use GC_WRITE_BARRIER macro
rrot/generational_gc: be32682 | bacek++ | lib/Parrot/Pmc2c/ (3 files):
Always generate write_barrier for VTABLE.

Reason for it next: 1. Aggregate PMC in Gen0. 2. We invoke write_barrier(PMC). Which is ignored. 3. VTABLE_foo() allocate new PMC. 4. Aggregate PMC moved into Gen1. 5. Content of PMC gets updated without triggering write barrier.
To avoid it we store result of original VTABLE and invoke write_barrier after.
rrot/generational_gc: e54611c | bacek++ | src/ (2 files):
Switch GMS to use 'always-write-barriered-vtables' logic without WB variant vtable
09:56 lucian joined
bacek rakudo; my @arr; say @arr[-1] 09:58
rakudo: my @arr; say @arr[-1]
p6eval rakudo 989883: ( no output )
bacek erm...
rakudo: my @arr = <foo bar baz>; say @arr[-1]
p6eval rakudo 989883: ( no output )
bacek seen moritz
aloha moritz was last seen in #parrot 2 days 13 hours ago saying "5! in math would be factorial of 5".
moritz . 09:59
bacek or here :)
moritz, should @arr[-1] dies?
moritz yes
bacek eval_dies_ok '@arr[-1]', "readonly accessing [-1] of normal array is compile-time error";
tadzik rakudo: my @a = 1, 2, 3; say @a[*-1]
p6eval rakudo 989883: OUTPUT«3␤»
bacek (from S02/array) 10:00
rakudo: my @arr = <foo bar baz>; my $i = -1; say @arr[$i]
p6eval rakudo 989883: ( no output )
bacek hmmm...
moritz it probably fail()s
tadzik bacek: what's the problem?
bacek tadzik, testing Rakudo on gen_gc
tadzik I see
bacek not ok 72 - readonly accessing [-1] of normal array is compile-time error
moritz rakudo: try { <foo bar>[-1]; CATCH { say "OH NOEZ!" } } 10:01
p6eval rakudo 989883: ( no output )
bacek it's what I'm trying to find out..
rakudo: try { <foo bar>[-1]; CATCH { say "OH NOEZ!" } }; say "Bang-bang"
p6eval rakudo 989883: OUTPUT«Bang-bang␤»
bacek it's just fail silently...
moritz that's another long standing bug in rakudo 10:02
bacek but test isn't fudged....
moritz it certainly isn't compile time as it should
std: <a b>[-1]
p6eval std 625303c: OUTPUTĀ«[31m===[0mSORRY![31m===[0m␤Unsupported use of [-1] subscript to access from end of array; in Perl 6 please use [*-1] at /tmp/0R_nN13ZNe line 1:␤------> [32m<a b>[-1][33mā[31m<EOL>[0m␤Parse failed␤FAILED 00:01 119m␤»
bacek Looks like exception handling is broken in recent parrot. 10:03
rakudo: try { die "horribly"; CATCH { say "NOOOOO" } } 10:05
p6eval rakudo 989883: OUTPUT«NOOOOO␤»
bacek hmm...
Something _is_ broken
rakudo: try { my $i = -1; <foo bar>[$i]; CATCH { say "NOOOOO" } } 10:06
p6eval rakudo 989883: ( no output )
bacek indeed.
This should emit runtime error
rakudo: my @arr[8]; 10:07
p6eval rakudo 989883: ( no output )
bacek rakudo: my @arr.[8];
p6eval rakudo 989883: OUTPUT«===SORRY!===␤Confused at line 22, near "my @arr.[8"␤»
bacek oookey
10:07 Kulag left
bacek rakudo: use Test; plan *; eval_dies_ok('my @arr.[8];'); done_testing 10:07
p6eval rakudo 989883: OUTPUT«ok 1 - ␤done_testing() has been renamed to done(), please change your test code␤ in 'Test::done_testing' at line 243:Test.pm␤ in main program body at line 22:/tmp/TCwLh87d4B␤»
bacek rakudo: use Test; plan *; eval_dies_ok('my @arr.[8];'); done; 10:08
p6eval rakudo 989883: OUTPUT«ok 1 - ␤1..1␤»
10:09 Kulag joined 10:10 mikehh joined 10:11 dip joined 10:18 Kulag left, Kulag joined
dalek rrot/generational_gc: 6c5b416 | bacek++ | src/ (10 files):
Use more GC_WRITE_BARRIER macros
10:19
10:31 lucian left
dalek rrot/generational_gc: c885727 | bacek++ | include/parrot/gc_api.h:
Change mark macros to master version. We don't need these hacks anymore.
10:33
rrot/generational_gc: ff2b207 | bacek++ | lib/Parrot/Pmc2c/PCCMETHOD.pm:
Drop write_barrier before PCCMETHOD.

If object is in GenN where N is greater than 0 it's write-barriered already.
rrot/generational_gc: 7a577bc | bacek++ | src/gc/api.c:
Undisable old shortcut.
rrot/generational_gc: 0af820b | bacek++ | src/call/args.c:
Restore master version of pcc_merge_signature_for_tailcall
10:35 fperrad left 10:38 fperrad joined
bacek seen jnthn 10:40
aloha jnthn was last seen in #perl6 11 hours 17 mins ago saying "sleep &".
10:46 Themeruta joined, NotFound left
mikehh bacek: how's generational_gc goin' 10:53
bacek mikehh, pretty good actually.
will probably call for help from rakudo land. 10:54
mikehh bacek: ready for testin'
bacek And testing on something different from linux/i386 always welcome :)
mikehh I can test on amd64 later
bacek mikehh, excellent! 10:56
dalek rrot/generational_gc: b57cc9e | bacek++ | src/gc/gc_gms.c:
Remove now unused swap_vtable function.
rrot/generational_gc: e9da989 | bacek++ | lib/Parrot/Pmc2c/PMC/WB.pm:
Don't touch wb_variant_vtable. It's not used anymore
rrot/generational_gc: 3da3aa9 | bacek++ | src/pmc (2 files):
Don't touch wb_variant_vtable. It's not used anymore
rrot/generational_gc: 1b7e332 | bacek++ | lib/Parrot/ (4 files):
Get rid of generating wb_variant_vtable
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#7977) fulltest) at 3_0_0-475-g24a57a3 - Ubuntu 10.10 i386 (g++-4.5) 10:59
dalek rrot/generational_gc: f2d574b | bacek++ | t/pmc/namespace.t:
Fix test after removing wb_variant_vtable
11:00
rrot/generational_gc: ae60ed4 | bacek++ | src/ (2 files):
Remove old hacks for wb vtables
rrot/generational_gc: 2ad2e10 | bacek++ | src/pmc/scheduler.pmc:
Align with master
bacek mikehh, fixing c++ build will also help
(If it's broken)
dalek rrot/generational_gc: 9f8e952 | bacek++ | config/gen/makefiles/root.in:
Fix gc_gms dependencies.
11:04
rrot/generational_gc: 7cbe8a2 | bacek++ | src/pmc/class.pmc:
Align with master.
11:10
bacek aloha, (30-26)/30*100 11:19
aloha bacek: 13.3333333333333
bacek hmm... Only 13% faster... 11:20
moritz what is 13% faster?
bacek gen_gc
moritz yes, but on what benchmark?
bacek make test in rakudo
And I will loose some performance after implementing "STRING" part properly. 11:21
Sigh.
nopaste "bacek" at 192.168.1.3 pasted "gc test in rakudo. Looks about all right :)" (38 lines) at nopaste.snit.ch/30745 11:26
bacek moritz, check nopaste :)
tadzik not bad! 11:38
11:44 Drossel joined 11:46 Kulag left
bacek aloha, log10(100) 11:51
bah... stupid girl...
moritz, ping 12:27
dalek rrot/generational_gc: 5b175bb | bacek++ | src/vtable.tbl:
Mark .init* functions with :write.

During initilization of PMC we can trigger GC. In this case we have to put freshly allocated PMC into dirty_list to preserve old-to-young pointers.
12:30
moritz bacek: pong 12:32
bacek moritz, I'm trying to find TimToady's "Turtle test" which shows GC pauses. 12:33
One on rosettacode doesn't work.
moritz it should
bacek It fails with "Method 'invert' not found for invocant of class '' 12:34
On line my @num-to-dir = Dir.invert.sortĀ».value;
(On rakudo HEAD + parrot master HEAD)
rakudo: enum Dir < north northeast east southeast south southwest west northwest >; my @num-to-dir = Dir.invert.sortĀ».value; say @num-to-dir; 12:35
p6eval rakudo 989883: OUTPUT«Method 'invert' not found for invocant of class ''␤ in main program body at line 22:/tmp/m4exPkeLUA␤»
bacek yes
this one
Any ideas why it's broken? 12:36
moritz because it's not being tested
12:36 bluescreen joined
bacek fair enough :) 12:36
moritz rakudo: enum Dir < north northeast east>; say Dir ~~ EnumMap
p6eval rakudo 989883: OUTPUT«Bool::False␤»
moritz that's why, it seems
bacek erm... I don't quite understand 12:37
Especially I don't understand how to fix it... 12:38
moritz might be an easy fix in src/glue/enum.pm 12:39
lemme try (now compiling for 20 minutes... )
bacek moritz, ok, thanks
moritz rakudo: enum Dir < north northeast east>; say Dir.values.invert 12:40
p6eval rakudo 989883: OUTPUT«Method 'invert' not found for invocant of class 'List'␤ in main program body at line 22:/tmp/Rna4q0T900␤» 12:41
moritz rakudo: enum Dir < north northeast east>; say Dir.values.hash.invert
p6eval rakudo 989883: OUTPUT«Odd number of elements found where hash expected␤ in '!STORE' at line 5254:CORE.setting␤ in 'List::hash' at line 2937:CORE.setting␤ in main program body at line 22:/tmp/awkX5G1Ske␤»
bacek rakudo: enum Dir < north northeast east>; say hash(Dir.values Z Dir.keys) 12:44
p6eval rakudo 989883: OUTPUT«() 0␤»
bacek rakudo: enum Dir < north northeast east>; say Dir.values
p6eval rakudo 989883: OUTPUT«()␤»
bacek rakudo: enum Dir < north northeast east>; say Dir.keys
p6eval rakudo 989883: OUTPUT«0␤»
moritz rakudo: enum Dir < north northeast east>; say Dir.values.perl
p6eval rakudo 989883: OUTPUT«()␤»
moritz huh.
bacek whoot? 12:45
moritz anyway, fix pushed 12:49
bacek thanks!
12:55 Coke joined
Coke . 12:59
13:16 PacoLinux joined, cognominal left 13:20 cognominal joined
dalek rrot/generational_gc: 56e58b1 | bacek++ | src/gc/gc_gms.c:
Update GC stats during sweep
13:22
rrot/generational_gc: 6df3be9 | bacek++ | src/gc/gc_gms.c:
Fix output of stats after Pointer_Array updates.
rrot/generational_gc: cbb4ca1 | bacek++ | src/gc/gc_gms.c:
Implement STRING generations.
rrot/generational_gc: 0bcfe06 | bacek++ | src/gc/gc_gms.c:
Implement string part of GMS.
13:24 whiteknight joined
whiteknight good morning, #parrot 13:27
13:28 bluescreen left
dalek rrot: 3dce212 | (Gerd Pokorra)++ | compilers/data_json/data_json.pir:
make the example easier to appreciate
13:37
13:42 bluescreen joined 13:54 jsut_ joined
Hackbinary good afternoon whitenight 13:54
;)
whiteknight Hello Hackbinary, how are you today? 13:57
Hackbinary I'm alright, how are you?
13:58 jsut left
Hackbinary although it's a little cold here ... brrrr 13:58
whiteknight I'm doing well. tired and not looking forward to the work week, but good otherwise
where are you at?
Hackbinary I'm looking for work :S I have to go down to a charity and do some work on a PHP app this afternoon 13:59
I'm in Scotland
14:00 rurban_ joined
whiteknight oh, stinks you're looking. If you know C# and are willing to relocate to the US my company is hiring 14:00
Hackbinary you?
don't really know c#
where are you in the US? 14:01
moritz loves Scotland, and had a late Burns Supper on Saturday :-)
whiteknight I;m in US, PA, Philadelphia. It's cold here too. Lots of snow
actually, the snow is covered with ice now
Hackbinary It's not really that cold here, it is just the buildings here are really old, and very poorly weather proofed. And heating/Energy is expensiv 14:02
whiteknight Yes, same here. Very old, very shoddy brick building. 14:03
Hackbinary bleck ... I hate energy inefficient buildings, even if they look perty 14:05
14:05 rurban left, rurban_ is now known as rurban
whiteknight yeah, same 14:05
14:16 plobsing left 14:22 mtk joined 14:26 bluescreen left
nopaste "bacek" at 192.168.1.3 pasted "gen_gc performance" (37 lines) at nopaste.snit.ch/30749 14:39
dalek rrot/generational_gc: c70a78f | bacek++ | src/gc/gc_gms.c:
Add more stats to GMS.get_info
14:40
bacek kind of slow...
rrot/generational_gc: 0307643 | bacek++ | src/gc/gc_gms.c:
Fix debug build.
rrot/generational_gc: c69344f | bacek++ | src/gc/gc_gms.c:
Fix is_string_ptr copy-paste bug.
rrot/generational_gc: 525f42d | bacek++ | src/gc/gc_gms.c:
Add more validations.
bacek Good night, humans
whiteknight that's that environment variable that I can set to keep around the temporary test-generated files? 14:50
apparently it's POSTMORTEM, but that didn't seem to be working well for me 14:59
dalek rrot/whiteknight/callcontext_reset: f0c28dc | Whiteknight++ | / (2 files):
Add in an API function so that we can reset and reuse an existing CallContext for multiple repeated calls without needing to reallocate
15:00
rrot/whiteknight/callcontext_reset: 731602b | Whiteknight++ | t/src/embed/api.t:
Add in a test for Parrot_api_reset_call_signature
whiteknight mikehh: ping 15:01
jnthn whiteknight: I guess once needs to be sure that a continuation or closure using that context won't be taken, ir you're going to re-use it?
s/once/one/
whiteknight jnthn: it's from a thread on the mailing list. shockwave wants to be able to call a method repeatedly in a loop without having to reallocate a new CallContext for each call 15:02
a reset method clears state in the CallContext and allows it to be reused again for a new call
mikehh whiteknight: pong 15:11
Coke don't you need a context to invoke a method? 15:13
15:15 theory joined
mikehh whiteknight: got to go out for a bit - bbl 15:19
mikehh be back in an hour or so
15:20 Themeruta is now known as NotFound 15:27 plobsing joined 15:28 mtk left 15:31 dngor left 15:32 dngor joined 15:34 plobsing left 15:39 Andy joined 15:43 vmspb joined
whiteknight Coke: yes. you need the method PMC and the Context PMC 15:48
15:53 dmalcolm joined 16:03 eternaleye left 16:06 vmspb left 16:16 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner
dukeleto ~~ 16:24
16:25 Andy left 16:28 benabik_away is now known as benabik
Coke whiteknight: so we need a Context Pmc to reset a context pmc? ;) 16:37
whiteknight the reset thingy isn't a method. It's an API function 16:39
16:39 plobsing joined
cotto_work ~~ 16:40
dukeleto cotto_work: mornin' 16:43
cotto_work hio dukeleto
16:46 contingencyplan joined
benabik o/ 16:50
dalek nxed: r800 | NotFound++ | trunk/winxedst0.cpp:
message for $include_const unsupported in stage 0
Coke whiteknight: ok. you had said method earlier, just making sure. Danke. 16:51
16:52 plobsing left 16:55 lucian joined
dukeleto cotto_work: trac.parrot.org/parrot/ticket/1999 <-- care to answer this? 16:57
16:58 plobsing joined
cotto_work dukeleto: did you see the documentation of that VTABLE function in docs/pdds/pdd17_pmc.pod ? 17:01
dukeleto cotto_work: sadly, i didn't read that, but since you are mentioning it, I probably should have 17:02
cotto_work: yes read the docs in there, but my question still stands 17:03
cotto_work Before you asked, I didn't realize we had that VTABLE function. 17:06
dukeleto cotto_work: yeah, i didn't either. This TPF grant is actually forcing me to understand how every single VTABLE function works, which is quite a lesson. 17:07
cotto_work I bet.
dalek TT #1999 created by dukeleto++: Parrot_PMC_get_pmc : Does it work correctly?
TT #1999: trac.parrot.org/parrot/ticket/1999
cotto_work That slot looks ill-defined to me. I don't know if there is a single reliable correct behavior. 17:08
allison: ping
allison cotto_work: pong
cotto_work allison: what's the intent of the get_pmc VTABLE function? 17:09
The docs seem to say it either returns a SELF.
dukeleto allison: if you could comment on trac.parrot.org/parrot/ticket/1999 , that would be much appreciated
allison it's the same as get_integer, get_number, etc, just a PMC format
that is, it's general-purpose, and can return whatever the PMC wants to return 17:10
cotto_work allison: ok. That's the impression I got. Thanks.
cotto_work sees a new Yapsi release and looks forward to reading the announcement 17:11
dukeleto allison: currently, the fact that calling get_pmc on an RPA iterator returns the totaly number of elements is undocumented, and in my opinion, not intuitive 17:14
s/totaly/total/
where can we document that? 17:15
17:15 plobsing left
cotto_work dukeleto: from code it looks like ArrayIterator should return the underlying array PMC on get_pmc. 17:16
dukeleto cotto_work: yeah, the current behavior doesn't even seem very useful 17:17
whiteknight nuke it 17:21
dukeleto FROM SPACE 17:22
cotto_work Tracing what Parrot_printf does is fun. 17:28
17:29 benabik left, benabik joined
mikehh ~~ 17:29
dukeleto our NEWS file is pretty empty right now 17:30
mikehh whiteknight: you still around?
dukeleto: yeah - please add to it
dukeleto mikehh: will try
mikehh: you might want to send an email to parrot-dev reminding people to add to it
mikehh dukeleto: will do 17:31
whiteknight mikehh: yessir
17:32 mtk joined
whiteknight mikehh: What's the deadline for merging branches? I would like to merge whiteknight/callcontext_reset 17:32
mikehh whiteknight: you pinged me earlier, but I had to go out for a bit
whiteknight: probably Saturday, as long as we have a nice bugfest 17:33
whiteknight okay
dukeleto whiteknight: i agree with your most recent reply on parrot-dev about embed/extend stuff, but I wanted to clarify to people what the current situation was : 17:35
:) , rather
whiteknight right. At the same time, I don't want to tell people that the old, bad way is still the accepted ok way 17:36
We really need to get users in the habit of "follow the docs, and if you don't see something you need, ask"
NotFound whiteknight: BTW, I think Parrot_api_pmc_clone might be neccessary. 17:37
whiteknight NotFound: it might be. Do you have a particular use in mind?
NotFound whiteknight: the same discussion that lead to callcontext_reset 17:38
dukeleto whiteknight: can you add something about Parrot_ext_try to NEWS ? 17:46
NotFound: ^^^
dukeleto got confused
NotFound Going.. 17:48
What's the appropiate section? API Changes ? 17:49
dukeleto NotFound: Core, i guess. Whatever you think is best 17:50
Coke (merging, bugfest) - it would be super awesome if we had no smoke before then. 17:53
17:55 plobsing joined
dalek rrot: 125ee38 | NotFound++ | NEWS:
NEWS note for Parrot_ext_try
17:57
cotto_work get_pmc gets the array, which seems sensible to me 18:10
dukeleto: It looks like what you're actually seeing is the result of VTABLE_get_string being called on the result of ArrayIterator.get_pmc, which returns the array that's being iterated over.
If you look at the type I'm sure the test will make more sense. 18:12
benabik Hm. Trying to test generational_gc... Configure.pl fails at init::manifest: "No such file: lib/Parrot/Pmc2c/PMC/WB.pm" 18:15
cotto_work benabik: just a sec 18:16
NotFound Then will be better to use elements, to make the intention clear.
benabik knows only enough about the build system to run it, not fix it when it goes wrong. ~.~ 18:17
dalek rrot/generational_gc: bb5dedd | cotto++ | MANIFEST:
manifix
cotto_work benabik: all better now (I hope)
benabik cotto_work: Yup! Thanks. 18:19
cotto_work dukeleto: does that answer your question? 18:26
benabik gen_gc failed a few tests on Darwin/i386... Smolder 8045. 3 GC tests, 2 checkdepend, and 1 in dynpmc/rotest.t 18:34
Trying rakudo build anyway. :-D 18:35
dalek rrot: 089c0b4 | dukeleto++ | NEWS:
Update NEWS a bit
18:36
benabik Ew. Segfault compiling Perl6::Grammar.
dukeleto cotto_work: i think i see what is going on now. thanks! 18:37
18:42 zby_home joined
benabik msg bacek You wanted more tests of gen_gc. Tried it on Darwin/i386: failed some tests (smolder #8045), and then segfaulted on src/Perl6/Grammar.pm in Rakudo. 18:46
aloha OK. I'll deliver the message.
cotto_work dukeleto: explanation added to the ticket 18:57
19:04 pyrimidine joined
dukeleto othanks! 19:07
cotto_work: thanks! i meant.
cotto_work oyourewelcome
dukeleto otay 19:09
dalek rrot: 4c0e404 | jkeenan++ | / (14 files):
Merge branch 'tt1988_pmcemitter'
19:22
19:23 plobsing left 19:29 plobsing joined 19:37 jsut_ is now known as jsut
dalek TT #2000 created by jkeenan++: lib/Parrot/Pmc2c/MethodEmitter.pm: make file match package 19:38
TT #2000: trac.parrot.org/parrot/ticket/2000
Coke jkeenan++ # our 2000th customer. 19:39
dukeleto darn, he beat me to it. 19:40
benabik dukeleto, thanks for playing though. :-D
20:01 benabik left, benabik joined
whiteknight the spam emails we're getting on parrot-dev have become so heart-wrenching as to be comical 20:09
"I am Mrs. Cynthia kouema devoted Christian and now ageing widow suffering from long time illness. I have a blood cancer and right now I am admitted in a hospital "
I was not concerned about the poor widow until I saw she had a blood cancer 20:10
benabik "But I'll get better if you give me your bank account information"?
whiteknight "...for the glory of god" 20:11
that phrase was in the email3 separate times
tadzik spam emails on parrot-dev?
tadzik strokes spamassassin 20:12
NotFound msg bacek with generational_gc winxed example fly works much better without its explicit sweep than never before. The gc related pauses are still clearly viewable, though.
aloha OK. I'll deliver the message.
atrodo You know, first thing I do when I'm admitted to a hospital is write emails to complete strangers asking for help
cotto_work I think that everyone on parrot-dev needs to hear about that. It's completely relevant to the ongoing technical discussion on how to improve Parrot. 20:13
whiteknight++ for filtering out that garbage
nopaste "fperrad" at 192.168.1.3 pasted "bacek, cotto, my current work on LuaFunction" (159 lines) at nopaste.snit.ch/30777 20:14
NotFound atrodo: at least your are admitted.
whiteknight she said she wanted to donate her fortune to charity, minus my 15% cut of course. I'm thinking maybe I can convince her to donate do PaFo
atrodo What could possibly go wrong? 20:15
20:15 NotFound is now known as charity
whiteknight all I need to do is fly to Nigeria, wear a clown outfit with a signed blank check taped to my forehead 20:15
charity Please do
dukeleto whiteknight: that would be a great PR campaign for PaFo
charity Oldes irc joke ever
20:15 charity is now known as NotFound
NotFound Widows of the world, PaFo wants yo! 20:16
cotto_work fperrad: thanks for working on that. I'll take a look when I get home. I like the idea of getting away from PMC MI.\\ 20:18
aloha: coverage?
aloha cotto_work: coverage is cv.perl6.cz or tapir2.ro.vutbr.cz/cover/cover-results/
plobsing dukeleto: code.google.com/p/es-lab/ does cool stuff with ecmascript5 and OMeta
whiteknight PMC MI? 20:19
cotto_work multiple inheritance 20:20
whiteknight ah yes
cotto_work known by many, loved by few
whiteknight worst. inheritance. ever.
lucian meh, i often like MI 20:21
whiteknight no, MI is a good thing 20:22
Parrot's implementation of it for built-in PMCs is not
cotto_work whiteknight: exactly
whiteknight our implementation of it for Object PMCs is a little clunky and fragile, but not bad or unusable
lucian whiteknight: i see 20:24
NotFound "Because you have a father and a mother"
Quoted in some Stroustrup book, don't remember now...
20:30 benabik is now known as benabik_away 20:31 fperrad left
whiteknight NotFound: And some classes have a father, a mother, and an IDataContextQueryable 20:33
TimToady moritz: a working turtle is on wall.org/~larry/turtle 20:36
though the GC seems improved from the standpoint of visual pauses 20:38
tadzik what kind of a turtle is that?
TimToady some combo of chromatic++'s GC improvements and rakudo putting less pressure on GC
ascii turtle graphics 20:39
does zigzag and spiral arrays currently
whiteknight nwellnhof recently merged a nice branch that helped with long GC pauses
I think this is his work
TimToady nwellnhoff++ then 20:40
nwellnhof++ even
tadzik I'm still waiting for ForestFire to become watchable :) 20:41
whiteknight ForestFire? 20:43
nopaste "tadzik" at 192.168.1.3 pasted "Forest Fire" (74 lines) at nopaste.snit.ch/30780 20:44
tadzik from Rosetta Code
PerlJam It's certainly watchable already. Perhaps in the manner that wind erosion of a mountain is watchable, but still .... :) 20:45
tadzik :)
Rakudo: See the grass growing! 20:46
20:50 ilia joined 20:53 plobsing left 21:02 plobsing joined 21:13 zby_home left
moritz ... from below! 21:24
21:25 ttbot left, whiteknight left, ttbot joined
dalek rrotsharp: 7659136 | Whiteknight++ | / (5 files):
fixes and cleanups, especially to tests
21:27
rrotsharp: 19ae906 | Whiteknight++ | / (4 files):
Add some new test files
rrotsharp: ee9d944 | Whiteknight++ | / (4 files):
an interface for Integer-like PMCs, and add in a property on Integer to retrieve the primitive value
rrotsharp: 408a38b | Whiteknight++ | / (3 files):
cleanup Parrot constructors
rrotsharp: beef018 | Whiteknight++ | src/Parrot.cs:
more small cleanups
rrotsharp: 74aa8ca | Whiteknight++ | / (12 files):
changes and fixes.
rrotsharp: 359b93e | Whiteknight++ | ParrotSharpTest/Parrot_Test.cs:
fix some test brokenness. We still can't create multiple top-level interpreters yet.
rrotsharp: 20f131a | Whiteknight++ | src/Pmc/ (2 files):
fixes to the interface for IPMCFactory. We now have Instance to create an instance with an optional initializer, and Cast, to take an existing pointer and wrap it up into the correct PMC wrapper type
rrotsharp: ecf9b92 | Whiteknight++ | src/Pmc/ (2 files):
more tweaks to PMCFactory
rrotsharp: aeed240 | Whiteknight++ | / (6 files):
Add in a String role and use that in CallContext. Expose String.replace and add a test for it
rrotsharp: 17f3bd0 | Whiteknight++ | / (10 files):
+some test files I forgot to git add. Add in a Sub PMC wrapper type. Cleanup Sub invocation logic to use the new type
rrotsharp: 31f60a1 | Whiteknight++ | / (2 files):
fixes
rrotsharp: d021d06 | Whiteknight++ | src/ (4 files):
fixes to the way methods are invoked. Run everything through the new Sub PMC
rrot/generational_gc: 5fdd2b3 | bacek++ | src/gc/gc_gms.c:
Enable GC validations in debug builds
21:30
21:30 ilia left 21:32 allison left
cotto_work That forest appears to be fire-proof. 21:42
21:46 plobsing left, plobsing joined
Hackbinary what's parrot sharp? 21:50
21:50 ryan joined
Hackbinary nevermind 21:51
21:53 silug joined 21:59 allison joined 22:00 rurban_ joined 22:05 rurban left, rurban_ is now known as rurban 22:08 minusnine joined 22:15 benabik joined
minusnine allison (or others): is the current pynie repo in google code or yours on bitbucket? the bitbucket repo has a few more (seemingly minor) commits than google code, and the former is referenced on the parrot wiki 22:15
tadzik I think lucian was working on Python on Parrot recently, not sure if that was Pynie 22:16
allison minusnine: the google code repository is the old one, and the bitbucket repository is the new one
lucian tadzik: more precisely, i was *thinking* of working on it :)
minusnine: and get the bb one
tadzik lucian: gotcha :)
lucian minusnine: i got it to build, but i think eval is still broken 22:17
minusnine allison, lucian: thanks
tadzik lucian: besides eval everything works?
lucian tadzik: not really. recent parrot deprecation broke stuff 22:18
allison tadzik: it's a fairly minimal implementation, too, so only a small set of features
tadzik lucian: is your code available somewhere?
lucian tadzik: it's in that bb repo
tadzik allison: are you planning to continue working on that?
lucian just a couple of patches
i think the plan was to rewrite it in python
at least the compiler, anyway 22:19
allison tadzik: I don't plan on continuing with that implementation. I would like to keep working on Python on Parrot, as I have time, but lucian and I have some shared ideas on a better way to do it.
tadzik: Basically what he said, depend only on Parrot and not on NQP, integrate with PyPy as much as possible (with one of various alternative ways to go about that). 22:20
tadzik I see
lucian the latter bit is where we don't entirely agree :) 22:21
allison lucian: aye, and that's part of why I leave it as a big question mark with "as much as possible"
lucian: I think it's best to focus on the immediately practical, even if I might have hopes for more in the future 22:22
lucian: and any modestly complete implementation of Python 3 on Parrot would be a huge advantage
lucian i think that's getting objects to work
allison yes, agreed that's the key 22:23
lucian ideally, rewriting as much as possible in python(3).
but for that to really work, i think parrot needs better reflection 22:24
allison reflection is built into the object model
lucian which one? PMC or Object?
allison part of implementing Python's object model is implementing the reflection features that go with it
22:25 pyrimidine left
allison lucian (re "which one?") neither, I mean Python's (which is built on top of PMC/Object) 22:25
lucian well, thankfully python only has one or two kinds of reflection
yeah, i got that
there's basically just attribute lookup 22:26
22:26 benabik left
allison I'd be interested to see/do some work on implementing Python's basic objects for Parrot as either a pure PMC or as a subclass of Parrot's Class/Object 22:27
minusnine (I'm happy to have stimulated such discussion with my simple question! :-P)
allison minusnine: :)
NotFound minusnine: there are no simple question in parrot land 22:28
lucian minusnine: in fact, i think it's a bit sad
NotFound (even if they have simple answers)
allison lucian: I wish I had more time for pynie over the past year
lucian too
now i'm stuck writing some fun games :) 22:29
(uni coursework)
allison minusnine: I started experimenting with starting over at bitbucket.org/allison/pygmy, but you can see I didn't check in much 22:30
minusnine allison: cool, will check it out. 22:31
allison minusnine: (pygmy, as in a very small python core for bootstrapping)
minusnine alison: I'm meeting with JimK tomorrow to talk about pynie... I'm interested in helping out, but am starting a new (python-based) job next week, so I'm not sure what my time commitment can be like in the short-term 22:32
allison: (typo)
lucian allison: what i'd love to see is a pure-python compiler that compiles a subset of python sufficient for implementing the rest (this would mean a parrot module that links into PIR-like stuff)
allison minusnine: understandable, and thanks for the interest :)
lucian allison: is that the CPython 3 grammar, unchanged? 22:33
allison lucian: yes, it's the CPython grammar unchanged
tadzik FYI, I managed to make pynie compile
lucian tadzik: try running it
tadzik lucian: hello world fails 22:34
allison lucian: the idea at the time was to generate a parrot compiler from the CPython grammar
lucian: made decent progress on that
tadzik >>> print("Hello world")
Method 'item' not found for invocant of class 'Pynie;Grammar'
allison brb
lucian tadzik: yep
allison: nice. i kinda liked bitbucket.org/pypy/pypy/src/84883d.../pyparser/ 22:35
allison back
lucian i was thinking of retargeting the codegen on pypy's compiler 22:36
that would get the first bit done (pure python compiler)
but it would compile to unexisting types
inexistant
allison lucian: as in use pypy's parser, and codegen for Parrot?
NotFound Talking about bootstrapping ideas, I'm thinking about writing a C++ backend for a subset of winxed with enough features to compile the stage 1 compiler, that will alow to get rid of the hand written C++ stage 0.
lucian allison: yep
allison lucian: makes sense, there's no point in reinventing the wheel
lucian comes with bonuses: continuous development by pypy guys and it's pure-python 22:37
allison lucian: types can be implemented
lucian: yes, definite advantages
lucian allison: yes, but i'd rather implement them in something close to python
like, say, minipynie 22:38
allison lucian: there's a bit of overhead in implementing in a high-level language
lucian with dicts, lists, tuples, functions and structs
allison: perhaps
allison lucian: CPython implements them in C, what does Pypy do?
lucian but it should be faster to write
allison: RPython
not very helpful
the thing is, dicts, lists tuples, functions, strings, structs and numbers are already in parrot 22:39
they just need a little renaming
allison lucian: (re "not helpful") that depends, is there any chance we could reuse Pypy's implementations of the core types?
lucian: they do exist in Parrot, but what's there isn't a very good match for Python semantics
lucian allison: not really. RPython manipulates interpreter-level objects
allison lucian: there's a lot of hidden Perl-ish assumptions buried in there
lucian so to do 1 + 2 at the application level, you'd have to write in RPython something like space.W_add(1, 2) 22:40
allison: yes, there are some annoying perlisms
allison lucian: as in, RPython depends on a fully-working CPython implementation of objects?
lucian however, this minipynie could be used to implement the real deal
RPython is translated using an existing full python interpreter, yes 22:41
allison doesn't minipynie need objects?
NotFound Why do you want a fast bootstrap? You can compile with other python until there is one version complete enough.
lucian allison: they can just be PMCs
NotFound: it still requires writing the core types in PIR or similar
allison lucian: yes, at some level we need the base for the bootstrap
lucian allison: codespeak.net/pypy/dist/pypy/doc/tr...ation.html will be enlightening, albeit long 22:42
allison lucian: and depending on how good the core types for minipynie are, we might use them for macropynie too
NotFound lucian: that's why I ask, there is enough work even without the urgence for bootstraping.,
lucian allison: yes, pynie could inherit minipynie types
NotFound: the compiler part is easy, there already are good pure-python python compilers 22:43
NotFound: but writing python core types is still annoying, i was thinking of making it easier
NotFound I think I don't know enough python to appreciate the problems. 22:44
lucian NotFound: python needs full objects to even work at all
allison: so this minipynie would be closer to old pynie, but with a good mapping to PIR 22:45
if this fails, core types can just be written in winxed or something
this all might be silly, though 22:46
bacek_at_work msg behabik Thanks! gc failures in make test are "eligible"
aloha OK. I'll deliver the message.
allison lucian: thanks for the link, that's useful 22:47
lucian: yes, closer to old pynie, but without any dependency on NQP
lucian: and more of a compiler (to PIR) than an interpreter 22:48
lucian yep, certainly a compiler 22:49
i'd like full pynie to be a compiler too, not an interpreter
22:49 benabik joined
lucian otherwise, we might as well write a parrot backend for PyPy. which would be very slow 22:49
allison lucian: yes, I suspect you're right there 22:50
NotFound lucian: winxed has an almost untested mininal support for HLLed namespaces, waiting mosty for a use case.
lucian NotFound: heh
22:51 benabik left
lucian NotFound: winxed is indeed close to what this minipynie i'm thinking of 22:51
s/what//
NotFound lucian: one more tool to write HLLs will also be nice. 22:53
lucian NotFound: i'm of the opinion that one more tool to write HLLs is the worst solution
NotFound Maybe not, but variety may be good to attract new people. 22:54
Tene Someone was in here recently wanting to write HLLs in Java/XML.
minusnine allison, lucian: then, what are the short-term goals of pynie as it stands?
lucian Tene: i think java may be a easier. it's actually not very OO at all. gnu classpath might not be that hard to bootstrap 22:55
NotFound Tene: I hope that winxed/ohm-eta will be a better way to people liking java-like syntax.
lucian minusnine: run, at all
Tene lucian: The part that was weird to me was they wanted the grammar and actions class to be in XML.
I'm very curious about what that would look like, but not very hopeful about it as something I'd like.
lucian they're probably used to antlr 22:56
NotFound I predict that some day someone will write a compiler in schematron 22:57
22:57 plobsing left
lucian NotFound: that thing looks ugly 22:57
minusnine lucian: heh. okay. but that requires objects, so i hear. so what is the strategy for implementing objects in the short-term? 22:58
allison minusnine: the goal of pynie is to get a working implementation of Python 3 on Parrot
NotFound lucian: all xml things looks ugly to me, but xml oriented people loves it, it seems.
lucian minusnine: probably writing them in PIR/winxed
NotFound I love much better the simplicity of json. 22:59
lucian NotFound: i tend to prefer the even more spartan s-expressions
or yaml
lucian would like to see a fusion between yaml, lisp and python
23:01 cosimo joined
lucian minusnine: if i had more time, i'd play around with PyPy's compiler to create minipynie 23:01
and go from there
NotFound yamlispy sounds funny :)
23:02 whiteknight joined
lucian heh 23:02
allison minusnine: and I'd be happy to help you break that (minipynie using PyPy's compiler) into smaller tasks, if you'd like to work on it 23:04
minusnine lucian: understood, thanks
allison lucian: one catch, PyPy is Python 2.x, not Python 3.x
lucian allison: meh, it can be ported after it works 23:05
allison lucian: but either one working on Parrot would be a step in the right direction
lucian there was another pure-python parser
minusnine allison: that would be useful, even if it's just to see how *you* would approach it
NotFound Prototypying objects in winxed, even if you plan to later reimplement them in pir or a PMCs can be a time saver.
lucian NotFound: yes. i'm trying to write an ad-hoc spec for minipynie
allison minusnine: I see it as more of an interactive thing, as in not "how I'd do it" but, "let's work out a good way to do it"
minusnine allison: heh, yes, agreed, I just meant that y'all have more experience with language implementation on parrot than I do, so you may have a better pattern 23:06
lucian minusnine: not really, i'm just a noob 23:07
allison minusnine: ah, yeah, makes sense. I figure the way I'd go about it might not necessarily be approachable for general developers, so that's why I'd really appreciate your input on breaking it down into steps that any contributor could step up and help with. 23:08
NotFound And you might found that winxed is not slower than hand-written pir ;)
Tene I really should consider trying to prototype cardinal's ideal object model on nqp-nom
lucian NotFound: i never really assumed that. winxed is very thin
allison minusnine: like link it in with pointers to how various things work, for "learning by doing" 23:09
minusnine allison: certainly, as I'll probably be doing exactly that myself 23:10
23:10 mtk left
lucian bah, minipynie might be totally unfeasible 23:11
allison lucian: well, it's feasible in one way or another, it's just a question of which way :) 23:12
lucian this looks horribly high-level gist.github.com/815487
lucian has lisp boostrap envy right now 23:13
NotFound BTW while doing some experiments that in order to implement some objects models a way to tell the class to not use the method cache might be neccessary.
I found that
allison lucian: is that adding "parrot" as an output formatter to PyPy?
lucian allison: sort of, yes 23:14
i'm just thinking of what it might look like
23:16 mtk joined
lucian i'm realising that i'm basically imagining winxed with a bit more pythonic syntax 23:18
NotFound: mind if i try to mutilate winxed to be indentation-sensitive? 23:19
actually, i think it'll be easier (and less susceptible to bitrot) to generate winxed from a subset of python 23:21
23:27 lucian_ joined 23:31 lucian left
dalek rrot/generational_gc: 856ff16 | bacek++ | config/gen/makefiles/root.in:
Fix GMS dependencies.
23:47
23:48 kid51 joined 23:57 minusnine left