Camelia, the Perl 6 bug

IRC log for #parrot, 2011-01-29

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 Hackbinary okay cool ... I think I need to read up a little more on nqp
00:04 dukeleto Hackbinary: https://github.com/perl6/nqp-rx
00:05 dukeleto Hackbinary: basically, it is a subset of Perl 6 that Rakudo Perl 6 is written in :)
00:07 nwellnhof https://github.com/perl6/nqp-rx/tree/master/t/nqp is still the best documentation afaik.
00:09 jnthn For details on the grammar syntax, there's many examples in the Perl 6 book.
00:09 jnthn nqp supports most of what Rakudo does in terms of grammars.
00:17 dukeleto Hackbinary: nqp-rx is basically just Perl 6 with much less syntax sugar
00:18 jnthn And also more optimizable.
00:18 Hackbinary cool
00:35 bacek ~~
00:37 bacek rakudo: say "  # comment" ~~ /^^ \s* \# .* $/
00:37 p6eval rakudo 549d2a: OUTPUT«  # comment␤»
00:37 bacek rakudo: say "  # comment" !~ /^^ \s* \# .* $/
00:37 p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Unsupported use of !~ to do negated pattern matching; in Perl 6 please use !~~ at line 22, near "/^^ \\s* \\#"␤»
00:37 bacek rakudo: say "  # comment" !~~  /^^ \s* \# .* $/
00:37 p6eval rakudo 549d2a: OUTPUT«Bool::False␤»
00:38 kid51 joined #parrot
00:46 Hackbinary so logical_not is no longer a vtable function?
00:50 bacek rakudo: say "--- foo" ~~ /^^ ---/
00:50 p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Confused at line 22, near "say \"--- f"␤»
00:51 bacek rakudo: say "--- foo" ~~ /^^ \-\-\-/
00:51 p6eval rakudo 549d2a: OUTPUT«---␤»
00:51 jnthn rakudo: say "--- foo" ~~ /^^ '---'/ # neater ;)
00:51 p6eval rakudo 549d2a: OUTPUT«---␤»
00:52 whiteknight joined #parrot
00:52 Hackbinary hello
00:56 Eclesia left #parrot
00:57 Hackbinary I've tried to build cardinal, and I just got this error:
00:57 Hackbinary error:imcc:'logical_not' is not a vtable, but was used with :vtable.
00:58 Hackbinary and it looks like logical_not has been taken out of the vtables on parrot 3
00:58 Tene yes, that's right
00:58 whiteknight yeah, it was deprecated and removed
00:59 Hackbinary so this is the method it's complaining about:
00:59 Hackbinary .sub '_not' :vtable('logical_not') :method
00:59 Hackbinary .param pmc wtf
00:59 Hackbinary $P0 = get_hll_global 'true'
00:59 Hackbinary .return ($P0)
00:59 Hackbinary .end
00:59 tadzik Hackbinary: you are trying the wrong cardinal
00:59 Hackbinary oh
00:59 tadzik I fixed that some time ago
00:59 Hackbinary there's 2 cardinals?
00:59 Tene You want http://github.com/parrot/cardinal/
00:59 tadzik use parrot/cardinal on github, notcardinal/cardinal
01:00 Tene Hackbinary: Cardinal was adopted into the parrot github organization.
01:00 Hackbinary =)
01:00 Tene Sorry for the confusion. :(
01:00 Hackbinary no worries
01:00 Hackbinary or as they here, nay bother
01:02 Hackbinary that works alot better :)
01:03 Hackbinary so logical_not became neg?
01:04 tadzik yeah
01:04 tadzik iirc
01:13 kid51 nwellnhof:  Will add some debugging output to auto::ipv6 in a few minutes.
01:14 sorear Who has the authority to delete the 'cardinal' user on github?
01:14 Tene sorear: I could do it, as could treed.
01:14 Tene sorear: pmichaud also knows the password for that account, iirc.
01:15 sorear Tene: What's the argument against doing so now?
01:16 Tene sorear: I remember there was some concern about migrating the issues on the issue tracker
01:16 Tene treed wanted to preserve the information on the issue tracker and on the wiki.
01:17 Tene He wasn't much concerned with *where* that data was, so if it can be easily imported to the parrot copy, that's fine.
01:17 nwellnhof kid51: great
01:19 dalek parrot: 17f46f5 | jkeenan++ | config/auto/ipv6.pm:
01:19 dalek parrot: Allow for some debugging output with --verbose or --verbose-step=auto::ipv6.
01:19 dalek parrot: review: https://github.com/parrot/parrot/commit/17f46f56f1
01:19 kid51 See if that helps on Solaris
01:19 kid51 I don't know exactly what the output will look like 'cause I detect ipv6 on linux and darwin.
01:20 kid51 Feel free to tweak that added line for better results.
01:37 mtk left #parrot
01:38 bacek rakudo: say '' ~~ /^\'(.*)\'[\s*\#.*]?$/
01:38 p6eval rakudo 549d2a: OUTPUT«␤»
01:38 bacek rakudo: say '' !~~ /^\'(.*)\'[\s*\#.*]?$/
01:38 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:38 bacek rakudo: say '' ~~ /^\'(.*)\'$/
01:38 p6eval rakudo 549d2a: OUTPUT«␤»
01:38 bacek rakudo: say '' !~~ /^\'(.*)\'$/
01:39 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:39 bacek rakudo: say '' ~~ /^'(.*)'$/
01:39 p6eval rakudo 549d2a: OUTPUT«␤»
01:39 bacek rakudo: say '' ~~ /^''$/
01:39 p6eval rakudo 549d2a: OUTPUT«␤»
01:39 bacek rakudo: say '' !~~ /^''$/
01:39 p6eval rakudo 549d2a: OUTPUT«Bool::False␤»
01:39 bacek rakudo: say '' !~~ /^'.*'$/
01:39 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:40 bacek rakudo: say '' !~~ /^\'.*\'$/
01:40 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:40 bacek rakudo: say '' !~~ /^\'.*\'/
01:40 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:40 bacek rakudo: say '' !~~ /'.*'/
01:40 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:40 bacek rakudo: say '' !~~ /' .* '/
01:40 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:40 bacek erm...
01:40 sorear ?
01:41 bacek seen moritz
01:41 clunker3 moritz was last seen on #parrot 7 hours, 21 minutes and 48 seconds ago, saying: ok, thanks
01:41 aloha moritz was last seen in #parrot 7 hours 21 mins ago saying "ok, thanks".
01:41 bacek aloha, clunker3?
01:41 aloha bacek: Search me, bub.
01:41 sorear I know p6regex too
01:41 bacek sorear, hooray! :)
01:42 bacek what's wrong with my regex? I'm trying to port /^\'(.*?)\'(?:\s+\#.*)?\z/ from Perl5
01:42 sorear What's \z do?
01:42 bacek \z is EOL. Should be $ in Perl6.
01:42 bacek Something like /^\'(.*?)\'[\s+\#.*]?$/
01:43 bacek Doesn't work apparently
01:43 sorear ^ \' (.*?) \' [\s+\#.*]? $$ / maybe
01:43 bacek rakudo: say 'foo' ~~ /^ \' (.*?) \' [\s+\#.*]? $$ /
01:43 p6eval rakudo 549d2a: OUTPUT«␤»
01:43 bacek rakudo: say 'foo' ~~ /^ \' (.*?) \' [\s+\#.*]? $/
01:43 p6eval rakudo 549d2a: OUTPUT«␤»
01:44 bacek rakudo: say 'foo' ~~ /^ ' (.*?) ' [\s+\#.*]? $/
01:44 p6eval rakudo 549d2a: OUTPUT«␤»
01:44 bacek rakudo: say 'foo' ~~ /^ ' (.*) ' [\s+\#.*]? $/
01:44 p6eval rakudo 549d2a: OUTPUT«␤»
01:44 bacek rakudo: say 'foo' ~~ /^ \' .* \' [\s+\#.*]? $/
01:44 p6eval rakudo 549d2a: OUTPUT«␤»
01:44 bacek nope
01:44 bacek rakudo: say 'foo' ~~ /^ \' (.*) \' $/
01:44 p6eval rakudo 549d2a: OUTPUT«␤»
01:44 bacek rakudo: say 'foo' ~~ /^\'(.*)\'$/
01:44 p6eval rakudo 549d2a: OUTPUT«␤»
01:45 mtk joined #parrot
01:45 sorear bacek: what do you want to see?
01:45 bacek sorear, matched string?
01:45 bacek rakudo: say ?('foo' ~~ /^\'(.*)\'$/)
01:45 p6eval rakudo 549d2a: OUTPUT«Bool::False␤»
01:46 sorear bacek: 'foo' doesn't contain any single quote characters
01:46 bacek Or Bool::True :)
01:46 bacek rakudo: say ?("'foo'" ~~ /^\'(.*)\'$/)
01:46 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:46 bacek ah...
01:46 bacek Shame on me...
01:47 bacek rakudo: say ?("''" ~~ /^\'(.*?)\'[\s+\#.*]?$/)
01:47 p6eval rakudo 549d2a: OUTPUT«Bool::True␤»
01:47 bacek nqp: say ?("''" ~~ /^\'(.*?)\'[\s+\#.*]?$/)
01:47 p6eval nqp: OUTPUT«Confused at line 1, near "say ?(\"''\""␤current instr.: 'parrot;HLL;Grammar;panic' pc 635 (src/cheats/hll-compiler.pir:206)␤»
01:47 bacek nqp: say ("'foo'" ~~ /^\'(.*?)\'[\s+\#.*]?$/)
01:47 p6eval nqp: OUTPUT«Confused at line 1, near "say (\"'foo"␤current instr.: 'parrot;HLL;Grammar;panic' pc 635 (src/cheats/hll-compiler.pir:206)␤»
01:47 bacek nqp: say("'foo'" ~~ /^\'(.*?)\'[\s+\#.*]?$/)
01:47 p6eval nqp: OUTPUT«'foo'␤»
01:47 bacek nqp: say("''" ~~ /^\'(.*?)\'[\s+\#.*]?$/)
01:47 p6eval nqp: OUTPUT«''␤»
01:48 sorear you want to use $$
01:48 sorear $ matches end of string
01:49 bacek sorear, I need end of string :)
01:50 sorear What was \z for?
01:50 sorear ah
01:50 sorear found it
02:08 plobsing joined #parrot
02:18 whiteknight left #parrot
02:33 nwellnhof left #parrot
02:38 bacek sorear, ping?
02:40 KaeseEs bacek: is it impossible or merely impractical to use copying in a collector for parrot?  bacon advocates an approach where sweeping is normally used and copying is used when there's significant fragmentation
02:41 bacek KaeseEs, implementing copying GC within current parrot is... challenging.
02:43 KaeseEs can you give me the elevator explanation of the challenges?  (i've been reading papers more than parrot docs, and am beginning to think that maybe i should have gone the other way around)
02:43 sorear KaeseEs: there is no write barrier API in Parrot.
02:43 sorear this is the crux of the problem
02:43 KaeseEs ah.
02:43 sorear bacek: pong.
02:44 bacek sorear, Is /:i 'abc'/ syntax in NQP borrowed from Perl6? Or it's kind of hack?
02:59 sorear borrowed from Perl6.
03:00 dalek parrot: 655eb87 | jkeenan++ | src/platform/ (2 files):
03:00 dalek parrot: [codingstd] c_function_docs: correct 'item='.
03:00 dalek parrot: review: https://github.com/parrot/parrot/commit/655eb87686
03:05 contingencyplan left #parrot
03:07 luben sorear, write barriers are needed for gernerational collector, compacting collector needs read barriers. But in current state we do not have neither of them
03:08 luben KaeseEs, also PMCs are not easily realocatable for compacting to work
03:08 sorear ah, misread
03:08 KaeseEs ty luben
03:08 sorear however the essential issue is the same
03:08 sorear lack of APIs
03:08 luben yes
03:08 sorear the Parrot garbage collector doesn't actually know where the pointers are
03:09 sorear it can ask PMCs, "what objects do you point to?"
03:09 sorear this is part of the public API, subject to deprecation
03:23 plobsing PMCs being pointers is part of the public API? I thought that only uses of Parrot_PMC (much more abstract) were under the policy.
03:26 sorear plobsing: extending API, not embedding
03:26 sorear extenders are allowed to write VTABLE mark() and expect it to work
03:29 plobsing VTABLE mark could be reasonably co-opted by a copying collector if Parrot_gc_mark_PMC_alive() was pass-by-ref in stead of pass-by-val (and could potentially update).
03:31 plobsing that's just one strategy for a copying collector. there may be other, better ones,
03:40 kid51 left #parrot
03:52 nwellnhof joined #parrot
04:00 theory left #parrot
04:00 plobsing msg whiteknight imcc_compreg_pmc now builds corevm fully. not sure if the 'add' parameters to some of the pf segment creation routines are a good idea. I don't think one would ever *not* want to add a segment to the directory that it claims to be under. sounds like asking for trouble to me.
04:00 aloha OK. I'll deliver the message.
04:03 dalek parrot/whiteknight/imcc_compreg_pmc: 7f37f95 | plobsing++ | compilers/imcc/ (4 files):
04:03 dalek parrot/whiteknight/imcc_compreg_pmc: use 'add' argument when creating default segments to add them to the pf
04:03 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/7f37f95688
04:12 sorear How much support is there for creating subs at runtime without IMCC?
04:14 plobsing sorear: examples/pir/make_hello_pbc.pir
04:14 plobsing that's about as far as anyone has gotten.
04:15 plobsing the disk-storage intermediary step could probably be cut out without too much effort
04:30 dalek TT #1990 created by nwellnhof++: GC bug with new embedding API
04:30 dalek TT #1990: http://trac.parrot.org/parrot/ticket/1990
05:02 sorear plobsing: PIRATE?
05:08 * sorear icks at some hacks in PIRATE
05:11 nwellnhof_ joined #parrot
05:15 nwellnhof left #parrot
05:15 nwellnhof_ is now known as nwellnhof
05:19 nwellnhof left #parrot
05:46 * sorear wonders whether to
05:46 sorear 1. use the Packfile PMC API directly
05:46 sorear 2. import PIRATE
05:46 sorear 3. use IMCC
05:55 rurban_ joined #parrot
05:57 plobsing sorear: what do you aim to do?
05:58 plobsing and in what time frame?
05:58 rurban left #parrot
05:58 rurban_ is now known as rurban
06:41 sorear plobsing: write a backend for my self-hosted Perl 6 compiler; 2-3 months
06:55 plobsing that's a tricky time frame. I'm hoping IMCC will be at least partially obsoleted by that time
06:55 plobsing but packfile PMC API is shaky and possibly a tad inconvenient
06:55 plobsing on the other hand, PIR is very poor at expressing some key concepts
06:57 plobsing packfile API is cleaner long term, with short to mid term difficulty
07:02 sorear can you put numbers on "short to mid term"?
07:16 plobsing if I could, I wouldn't have used the terms :^)
07:17 plobsing the tricky part is, the break point is right around your time frame. if you said 6 months or later, I'd go with packfiles, if you said 1.5 months or sooner, I'd go with PIR.
07:17 plobsing in between, it is iffy.
07:19 sorear I haven't committed to a timeframe yet.  Maybe I'll make it happen when packfiles are nicer.
07:46 fperrad joined #parrot
08:21 moritz good morning
08:22 dalek parrot: 139ce22 | dukeleto++ | RESPONSIBLE_PARTIES:
08:22 dalek parrot: Fix my name in RESPONSIBLE_PARTIES
08:22 dalek parrot: review: https://github.com/parrot/parrot/commit/139ce229ed
08:31 dukeleto cotto_work: ping
08:34 dalek parrot/leto/deprecations_as_data: 56207d3 | tadzik++ | DEPRECATED. (2 files):
08:34 dalek parrot/leto/deprecations_as_data: DEPRECATED.pod is now DEPRECATED.json, adjusted rest of the files due to the change
08:34 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/56207d3237
08:34 dalek parrot/leto/deprecations_as_data: ff6a5bc | tadzik++ | / (5 files):
08:34 dalek parrot/leto/deprecations_as_data: s/DEPRECATED.pod/DEPRECATED.json
08:34 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/ff6a5bcaa0
08:34 dalek parrot/leto/deprecations_as_data: 2512fe6 | tadzik++ | DEPRECATED.yaml:
08:34 dalek parrot/leto/deprecations_as_data: Added DEPRECATED.yaml, a direct translation of DEPRECATED.json
08:34 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/2512fe63fd
08:34 dalek parrot/leto/deprecations_as_data: 7f1d5ca | dukeleto++ | / (10 files):
08:34 dalek parrot/leto/deprecations_as_data: [doc] DEPRECATED.pod is now called docs/changes/api.yaml
08:34 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/7f1d5cad44
08:48 dalek parrot/leto/deprecations_as_data: 669bd1a | dukeleto++ | docs/changes/api.yaml:
08:48 dalek parrot/leto/deprecations_as_data: Remove redundant experimental/eligble junk in api.yaml titles
08:48 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/669bd1a9db
09:04 dukeleto we have so many old deprecations that have not been done
09:04 dalek parrot/leto/deprecations_as_data: f3c1f02 | dukeleto++ | docs/changes/api.yaml:
09:04 dalek parrot/leto/deprecations_as_data: Regularize the tags used in api.yaml
09:04 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/f3c1f02ab0
09:13 perlite left #parrot
09:13 perlite joined #parrot
09:25 mtk left #parrot
09:32 mtk joined #parrot
09:57 dalek parrot: 404b8f2 | bacek++ | ext/nqp-rx/src/stage0/nqp-setting.nqp:
09:57 dalek parrot: Update nqp-setting with RPA.grep
09:57 dalek parrot: review: https://github.com/parrot/parrot/commit/404b8f27c2
09:57 dalek parrot: a3f6638 | bacek++ | DEPRECATED.yaml:
09:57 dalek parrot: Remove finished items from DEPRECATED.yaml
09:57 dalek parrot: review: https://github.com/parrot/parrot/commit/a3f6638ef3
10:01 dalek TT #1561 closed by bacek++: Auto-vivification of nested aggregates is deprecated.
10:01 dalek TT #1561: http://trac.parrot.org/parrot/ticket/1561
10:02 dalek parrot: e0194ad | bacek++ | DEPRECATED.yaml:
10:02 dalek parrot: Remove implemented deprecation from DEPRECATED.yaml.
10:02 dalek parrot: review: https://github.com/parrot/parrot/commit/e0194ad652
10:06 dalek parrot/leto/deprecations_as_data: 79c9444 | dukeleto++ | / (3 files):
10:06 dalek parrot/leto/deprecations_as_data: [tools] show_experimental.pl shows currently experimental features listed in api.yaml
10:06 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/79c9444393
10:07 dukeleto bacek: i didn't realize that DEPRECATED.yaml was in master
10:07 dukeleto bacek: i am cleaning it up in a branch, see above
10:08 bacek dukeleto, ok :)
10:10 dalek parrot/leto/deprecations_as_data: b677bc4 | dukeleto++ | docs/changes/api.yaml:
10:10 dalek parrot/leto/deprecations_as_data: Add IPv6 as experimental in api.yaml
10:10 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/b677bc46ea
10:10 dukeleto bacek: i will deal with it, just letting you know
10:10 dukeleto bacek: are you goint to be at PDS tomorrow?
10:11 bacek dukeleto, yes.
10:11 dukeleto bacek: awesome!
10:17 contingencyplan joined #parrot
10:21 dalek parrot/leto/deprecations_as_data: 42c4347 | dukeleto++ | t (2 files):
10:21 dalek parrot/leto/deprecations_as_data: [tools] show_deprecated.pl shows currently deprecated features listed in api.yaml with ticket info and eligible version
10:21 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/42c434762b
10:21 dalek parrot/leto/deprecations_as_data: 3e163b9 | dukeleto++ | docs/changes/api.yaml:
10:21 dalek parrot/leto/deprecations_as_data: Give all non-experimental items in api.yaml a deprecated tag
10:21 dalek parrot/leto/deprecations_as_data: review: https://github.com/parrot/parrot/commit/3e163b9a24
10:26 dalek parrot: 46b9ad7 | bacek++ | DEPRECATED.yaml:
10:26 dalek parrot: Remove implemented deprecation from DEPRECATED.yaml.
10:27 dalek parrot: review: https://github.com/parrot/parrot/commit/46b9ad7aa0
10:27 dalek parrot: d71095f | bacek++ | t/compilers/pct/pct_hllcompiler.t:
10:27 dalek parrot: Convert test to use P6Object instead of Protoobject.
10:27 dalek parrot: review: https://github.com/parrot/parrot/commit/d71095f893
10:27 dalek parrot: 0f269b9 | bacek++ | / (5 files):
10:27 dalek parrot: Remove deprecated Protoobject. Closes #1337.
10:27 dalek parrot: review: https://github.com/parrot/parrot/commit/0f269b944d
10:31 dukeleto bacek++
10:31 bacek dukeleto, I can't resist to fixing ticket with such number
10:31 bacek :)
10:34 dalek TT #1337 closed by bacek++: deprecate runtime/parrot/library/Protoobject.pir
10:34 dalek TT #1337: http://trac.parrot.org/parrot/ticket/1337
10:34 dukeleto bacek: indeed, that seems too good for coincidence ;)
10:37 * bacek just did a typo in Pm's name...
10:37 bacek sigh
10:43 dalek parrot: 0e4fd2a | bacek++ | DEPRECATED.yaml:
10:43 dalek parrot: Remove finished deprecated item.
10:43 dalek parrot: review: https://github.com/parrot/parrot/commit/0e4fd2a2f9
10:47 bacek NotFound, ping
10:49 bacek NotFound, unping. Found one more load_bytecode.
10:49 dalek parrot: 4970e66 | bacek++ | t/compilers/pct/pct_hllcompiler.t:
10:49 dalek parrot: Remove one more reference to Protoobject.pbc from test. NotFound++. Closes #1337.
10:49 dalek parrot: review: https://github.com/parrot/parrot/commit/4970e666f5
10:50 dalek TT #1103 closed by bacek++: Optional named parameters must be explicit
10:50 dalek TT #1103: http://trac.parrot.org/parrot/ticket/1103
10:50 dalek TT #1337 reopened by NotFound++: deprecate runtime/parrot/library/Protoobject.pir
10:50 dalek TT #1337: http://trac.parrot.org/parrot/ticket/1337
11:50 cxreg left #parrot
12:12 whiteknight joined #parrot
12:16 whiteknight good morning, #parrot
12:20 whiteknight msg plobsing plobsing++! I knew that it was going to be a relatively small problem. It would have taken me a very long time to figure that out.
12:20 aloha OK. I'll deliver the message.
12:48 janus left #parrot
12:48 janus joined #parrot
13:00 bacek msg cotto http://trac.parrot.org/par​rot/ticket/1337#comment:5 - git id wasn't handled properly.
13:00 aloha OK. I'll deliver the message.
13:03 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#6078) fulltest) at 3_0_0-313-g4970e66 - Ubuntu 10.10 i386 (g++-4.5)
13:05 * mikehh switching to 64 bit to do some tests there - bbiab
13:05 mikehh left #parrot
13:12 dalek TT #1337 closed by bacek++: deprecate runtime/parrot/library/Protoobject.pir
13:12 dalek TT #1337: http://trac.parrot.org/parrot/ticket/1337
13:17 mikehh joined #parrot
13:24 kid51 joined #parrot
13:29 dalek nqp-rx/nom: 481de03 | moritz++ | src/cheats/nqp-builtins.pir:
13:29 dalek nqp-rx/nom: return 0 from failed ok()
13:29 dalek nqp-rx/nom: review: https://github.com/perl6/nqp-rx/commit/481de03afb
13:29 dalek nqp-rx/nom: d26843d | moritz++ | src/stage0/ (4 files):
13:29 dalek nqp-rx/nom: update bootstrap
13:29 dalek nqp-rx/nom: review: https://github.com/perl6/nqp-rx/commit/d26843d520
13:29 dalek nqp-rx/nom: a82ee69 | moritz++ | src/metamodel/how/NQPMu.pm:
13:29 dalek nqp-rx/nom: port .Str and .isa from 6model to NQPMu
13:29 dalek nqp-rx/nom: review: https://github.com/perl6/nqp-rx/commit/a82ee698ad
13:34 mikehh opbots, names
13:34 dalek parrot/whiteknight/imcc_compreg_pmc: e0e4c18 | Whiteknight++ | src/packfile/api.c:
13:34 dalek parrot/whiteknight/imcc_compreg_pmc: imcc is clobbering interp->code in load_bytecode.
13:34 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/e0e4c189d3
13:55 rurban_ joined #parrot
13:58 rurban left #parrot
13:58 rurban_ is now known as rurban
14:15 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#6093) fulltest) at 3_0_0-313-g4970e66 - Kubuntu 10.10 amd64 (g++-4.5)
14:29 JimmyZ joined #parrot
14:29 JimmyZ good evening
14:30 JimmyZ Does anyone know parrot's new_callback op?
14:37 Eclesia joined #parrot
14:37 Eclesia h
14:37 Eclesia hi*
14:38 tadzik hi
14:51 kid51 left #parrot
14:52 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#6099) fulltest) at 3_0_0-313-g4970e66 - Kubuntu 10.10 amd64 (g++-4.5 with --optimize)
15:12 whiteknight left #parrot
15:20 ambs joined #parrot
15:29 Patterner left #parrot
15:30 Psyche^ joined #parrot
15:30 Psyche^ is now known as Patterner
15:38 mikehh rakudo (549d2a9) - builds on parrot (3_0_0-313-g4970e66)- make test, make spectest_smolder[(#6108), roast (510d9d2)] PASS - Kubuntu 10.10 amd64 (g++-4.5 with --optimize)
15:38 mikehh 27,599 ok, 0 failed, 611 todo, 1,837 skipped and 0 unexpectedly succeeded
15:48 mtk left #parrot
16:20 ambs left #parrot
16:58 Eclesia left #parrot
17:00 zby_home joined #parrot
17:06 cotto left #parrot
17:14 dalek TT #1991 created by jimmy++: simplify 'new_callback' op
17:14 dalek TT #1991: http://trac.parrot.org/parrot/ticket/1991
17:44 dukeleto ~~
17:45 dukeleto JimmyZ: the change to new_callback seems reasonable
17:46 dukeleto JimmyZ: email parrot-dev and get some feedback
17:47 JimmyZ dukeleto: I would like to unify the callback function's args too. :)
17:47 dukeleto JimmyZ: can you provide patches?
17:48 JimmyZ dukeleto: I couldn't, it's  complicated, only removing it makes parrot segfault.
17:50 * JimmyZ doesn't know how to patch nci.pmc to make it work correctly :)
17:53 dukeleto JimmyZ: i am not sure either :)
17:57 plobsing JimmyZ: read the implementation of new_callback. what you are asking for cannot be accomplished.
17:59 dukeleto well, that makes for less work
17:59 mikehh left #parrot
18:06 JimmyZ plobsing: and another one, the callback parameter seems to be opposite to what defined in the C code.
18:07 * dukeleto sends some emails to parrot-dev
18:08 JimmyZ that is, the test itself is wrong too.
18:09 mikehh joined #parrot
18:10 whiteknight joined #parrot
18:11 plobsing JimmyZ: read resolution comment on TT. it provides the details of why what you ask is infeasible.
18:13 plobsing JimmyZ: backwards? seems to be invoked the same way as src/nci_test.c:nci_cb_C1 is defined.
18:16 whiteknight plobsing: Thanks for the fix on imcc_compreg_pmc. I made another fix and now it almost finishes the build. segfaults inside IMCC building PGE I think
18:17 dalek TT #1991 closed by plobsing++: simplify 'new_callback' op
18:17 dalek TT #1991: http://trac.parrot.org/parrot/ticket/1991
18:20 JimmyZ plobsing: nci_test.c is 'typedef void (*cb_C1_func)(const char*, void*);' and nci.t's ".param pmc u \n .param string s". why it's not ".param string s \n .param pmc u"?
18:22 * JimmyZ wonders whether he understand it wrongly or not.
18:33 plobsing JimmyZ: you've got 13:08 <@JimmyZ> that is, the test itself is wrong too.
18:33 plobsing oops
18:34 plobsing JimmyZ: you've got Parrot_callback_C between the invokation in C and the invokation of parrot
18:34 plobsing the signature in C is correct for the C callback
18:36 plobsing If you're confused about how callbacks are supposed to work, read src/interp/inter_cb.c. You will either get confused and give up, or
18:36 dukeleto we are getting close to 14000 tests in our test suite
18:36 plobsing be disgusted, or understand the constraints we're under.
18:36 dukeleto plobsing: perhaps we need better dev docs?
18:36 JimmyZ what's  about nci.t? I think the parameter is reversed
18:37 plobsing dukeleto: I find it completely reasonable to expect a parrot-dev to RTFS
18:38 dukeleto plobsing: sure, RTFS'ing is always required to reach enlightment. But we should provide easy on-ramps for those that are just getting their feet wet, you know what I mean?
18:38 dukeleto enlightenment, even
18:39 JimmyZ plobsing: according  to PDD16, I'm sure one of them is wrong.
18:40 JimmyZ plobsing: and I think PDD16 is right :)
18:40 plobsing JimmyZ: the parameters are not reversed. the callback is invoked as 'vtU', which is "void (char *, PMC *)"
18:42 plobsing JimmyZ: PDDs are written by armchair designers who don't actually implement things
18:42 plobsing "this is the way things should be. now, somebody, go out and do that." yeah, right.
18:43 JimmyZ plobsing: but .sub _call_back in the test file is  not ".param string s \n .param pmc u"
18:45 JimmyZ plobsing: now it's ".param pmc u \n .param string s"
18:47 JimmyZ that is, the callback sub was defined as 'vUt'
18:50 dalek parrot: 7603711 | jimmy++ | docs/pdds/draft/pdd16_native_call.pod:
18:50 dalek parrot: fixed code example
18:50 dalek parrot: review: https://github.com/parrot/parrot/commit/7603711a90
18:50 dalek parrot: ed5bca7 | jimmy++ | src/pmc/nci.pmc:
18:50 dalek parrot: removed unused code from nci.pmc
18:50 dalek parrot: review: https://github.com/parrot/parrot/commit/ed5bca7752
18:50 dalek parrot: 397c69d | jimmy++ | / (16 files):
18:50 dalek parrot: Merge branch 'master' of github.com:parrot/parrot
18:50 dalek parrot: review: https://github.com/parrot/parrot/commit/397c69d779
18:54 JimmyZ left #parrot
18:55 whiteknight left #parrot
18:55 whiteknight joined #parrot
19:08 * dukeleto smokes parrot on darwin
19:12 dukeleto looks like we have some ipv6 failures on darwin
19:18 gt joined #parrot
19:34 whiteknight left #parrot
19:47 mikehh left #parrot
19:49 lucian joined #parrot
19:50 GodFather joined #parrot
20:02 mikehh joined #parrot
20:03 gt left #parrot
20:16 gerd joined #parrot
20:18 bacek Good morning, humans
20:18 tadzik good evening bacek
20:19 bacek tadzik, aloha
20:26 Themeruta joined #parrot
20:27 NotFound left #parrot
20:27 cxreg joined #parrot
20:27 Themeruta is now known as NotFound
20:32 kid51 joined #parrot
20:38 cotto joined #parrot
20:38 gerd left #parrot
20:41 cotto ~~
20:41 kid51 cotto, hello
20:43 bacek cotto, aloha
20:56 cotto hi kid51, bacek
20:57 kid51 dukeleto:  What were you seeing re ipv6 on Darwin?
20:58 chromatic joined #parrot
21:05 gt joined #parrot
21:07 gt left #parrot
21:12 kid51 I notice that on Darwin, because of dynamic linking, the t/dynpmc/ and t/dynoplibs/ tests cannot run under 'prove'.
21:12 kid51 And that is what I observe with t/pmc/socket_ipv6.t on that platform as well.
21:13 kid51 If I run 'prove t/pmc/socket_ipv6.t', I get failures.
21:13 kid51 If I run 'make pmc_tests', I get PASS.
21:13 kid51 Feature or bug?
21:26 fperrad left #parrot
21:30 kid51 Parrot Developer Summit in #parrotsketch in 30 minutes
21:34 he I'm trying to figure out why t/tools/mk_language_shell.t seems to fail, and trying to decipher what it's trying to do so as to reproduce the failure to find the root cause.
21:34 he Not having too much success, I'm afraid.
21:35 allison joined #parrot
21:35 kid51 he: can you paste the failure you are getting?
21:35 he kid51: Dubious, test returned 1 (wstat 256, 0x100)
21:36 he Not too informative.
21:36 he and ... Failed 2/7 subtests
21:36 kid51 prove -v  t/tools/mk_language_shell.t
21:37 kid51 OS? Platform?
21:37 he Unable to execute setup.pir at t/tools/mk_language_shell.t line 68
21:37 he NetBSD/i386 4.0
21:38 he Reading the test I can't figure out where setup.pir is supposed to come from.
21:40 he Preferring to use an installed parrot seems wrong to me; tests are (at least in my case) usually executed before the installed parrot has been upgraded.
21:40 he So one might be testing the previous version.
21:40 dukeleto kid51: i submitted a failing darwin smoke report for the ipv6 failure, but don't have the URL handy
21:41 kid51 he: What happens when you simply run: perl tools/dev/mk_language_shell.pl Xyz ?
21:42 he kid51: nothing much, it spits out a bunch of "creating", says "no doc:" twice, "no dynext" once, "no pmc" and "no ops".
21:44 kid51 dukeleto: http://smolder.parrot.org/app​/projects/tap_stream/6143/229 ; I have no clue
21:44 kid51 he: Does it appear to complete successfully?
21:44 dukeleto kid51: i responded to your email just now, as well
21:45 dukeleto kid51: interesting. could be that the port is already in use, and those tests should try a different port and/or skip
21:46 he kid51: seems so; it leaves a setup.pir behind in xyz/
21:49 nwellnhof joined #parrot
21:50 kid51 he: that suggests you should be able to get at least as far as line 40 in t/tools/mk_language_shell.t
21:50 kid51 I suggest running it through Perl debugger.
21:51 he inspecting the results of "ktrace -i prove -v ..."
21:51 kid51 PDS in 10 minutes
21:52 kid51 he: Example: run it thru the perl debugger to line 57, and there examine content of $setup, $installed_parrot, $build_parrot, $parrot_exe, etc.
21:53 kid51 At that point, examine line 65 of the test.  Perhaps NetBSD needs the same restriction there as Darwin.
21:55 rurban_ joined #parrot
21:58 rurban left #parrot
21:58 rurban_ is now known as rurban
22:00 kid51 PDS starting now in #parrotsketch
22:04 he Ah, it's getting all the way to the C compiler as part of pbc_to_exe.  There the C compiler is spewing "test_parrot_language_28464.c:3:24: error: parrot/api.h: No such file or directory
22:05 kid51 he:  We're starting our online meeting now, so I'll have to get back to you later.
22:05 he kid51: sure, np.
22:05 pmichaud_ is now known as pmichaud
22:06 dukeleto PDS is now, if anybody forgot
22:12 bubaflub joined #parrot
22:22 theory joined #parrot
22:31 cotto atrodo, ping
22:35 theory left #parrot
22:35 theory joined #parrot
23:05 allison lucian: I could chatter on for ages, but will end up completely derailing the conversation in PDS :)
23:05 lucian allison: yes, good point
23:05 lucian but really, they're not very similar at all
23:06 allison lucian: my main point is that NQP doesn't provide any value for getting PyPy running on Parrot
23:06 allison lucian: however similar or different they are, PyPy doesn't need NQP
23:06 lucian allison: yeah, that is a good point
23:07 lucian what might be interesting is a Lorito interpreter written with PyPy's framework
23:07 lucian free JIT, GC and pluggable object model
23:07 allison that would be interesting
23:07 allison I also want to see what we can get with Parrot as a replacement for CPython/compiled PyPy
23:08 allison can we offer them any technological advantages?
23:08 cotto lucian, That's the kind of think I'm hoping to see once the M0 spec is complete.
23:08 lucian left #parrot
23:10 lucian joined #parrot
23:10 lucian allison: not really
23:11 lucian pynie-on-parrot-on-pypy would have a JIT, as opposed to CPython which doesn't
23:11 allison lucian: then that's where our focus should be
23:11 allison lucian: and as opposed to Parrot, which has no JIT
23:11 lucian but even that's not worth much, PyPy's python vm is awesome
23:11 lucian the only reason a python user would ever want parrot is interoperability
23:11 allison interoperability isn't a huge selling point
23:12 lucian that's parrot's only selling point
23:12 allison unless it was interoperability between Python 2 and Python 3 code
23:12 allison that's just not enough
23:12 allison we used to have a speed advantage, we need to get that back
23:12 lucian python developers wouldn't mind to be able to use some ruby libs, and vice-versa
23:12 lucian python2 <-> python3 is an interesting idea
23:13 lucian that would be a good selling point
23:13 lucian some people are playing with implementing python2 on python3, but it's not going great
23:13 allison using ruby libs requires 100% compatibility with existing Python and Ruby code, which is a really, really, really tough problem
23:13 lucian allison: yep, but that will come eventually
23:14 allison if we have to wait until we get 100% interoperability before people start using Parrot, we'll starve to death waiting for attention
23:14 lucian there's really no other selling point
23:14 allison then we need to change that
23:14 lucian it's extremely unlikely you'll beat PyPy in speed or memory usage
23:14 allison <shrug> we were faster than PyPy a few years ago.
23:15 allison we're not now, but that's fixable
23:15 lucian were you? i was never convinced
23:15 lucian beating PyPy and hotspot is hard
23:15 allison PyPy benchmarked slower than CPython, Parrot benchmarked faster than CPython
23:15 * kid51 always welcomes allison's suggestions on fixing that :-)
23:15 lucian allison: on? do you have a link?
23:16 allison kid51: Lorito is the path, both to speed and to lower memory usage
23:16 particle sometimes it seems parrot is starving to death now
23:16 allison lucian: AFAIK, no one ever benchmarked PyPy directly to Parrot
23:17 particle allison, are you speaking of alioth benchmarks?
23:17 allison lucian: I mainly rely on the alioth benchmarks
23:17 allison particle: yes :)
23:17 bacek aloha, 6model?
23:17 aloha bacek: 6model is basically intended to be used from a HLL
23:17 allison I don't immediately see a way to get old alioth results
23:18 bacek meh...
23:18 Coke allison: If we were faster than native on python, we were never even close on perl or tcl.
23:18 lucian allison: beating PyPy on alioth would be an achievement, although not that relevant
23:18 bacek pmichaud, what is best link to read about 6model?
23:18 Coke (and those python results must be post-dan.)
23:18 allison Coke: those are VM-to-VM comparisons
23:18 pmichaud bacek: best is to contact jnthn for that, at least at the moment
23:19 dalek tracwiki: v1 | mikehh++ | GSoc2011
23:19 dalek tracwiki: http://trac.parrot.org/parrot/wiki/​GSoc2011?version=1&amp;action=diff
23:19 dalek tracwiki: v185 | mikehh++ | WikiStart
23:19 dalek tracwiki: http://trac.parrot.org/parrot/wiki/W​ikiStart?version=185&amp;action=diff
23:19 allison Coke: at the time, our language implementation strategy was "translate the language to raw bytecode" which gave us huge speed advantages
23:19 allison Coke: also, at the time we had a JIT
23:19 allison Coke: and all the benchmarks that could be were JIT-ed
23:20 allison (Coke: er, I mean, just running with -j)
23:20 particle which was basically anything with math ops
23:21 lucian anyway, beating hotspot or even PyPy will be very, very hard
23:21 allison lucian: sure, but a couple of years ago everyone said the same thing about PyPy
23:21 jnthn o/
23:21 allison lucian: "it's slow, it'll never be as fast as CPython"
23:21 lucian allison: and it was very, very hard to get where it is
23:22 jnthn Sorry I"m a bit late to things
23:22 allison lucian: yah, but "very, very hard" is not the same as "impossible"
23:22 lucian parrot may have a higher potential for speed than PyPy
23:22 kid51 jnthn: PDS in #parrotsketch ongoing
23:22 allison lucian: it's a simple matter of programming
23:22 lucian no, of course
23:23 lucian but it's still hard
23:23 allison (I'm over trivializing it, but generally just want to make the point that effort is possible, it just needs to be focused in the right direction)
23:23 lucian and you need motivation for it
23:23 lucian and for motivation, you need language implementations
23:23 allison I think the motivation is relevance
23:23 particle $$$
23:23 allison lucian: there's a bit of a chicken-and-egg problem there
23:24 particle without someone's backing, i'm convinced there won't be enough velocity to keep up
23:24 allison lucian: for language implementations we need relevance
23:24 lucian particle: exactly. if parrot can run perl6, python and ruby at least as fast as the mainstream C VMs, it'll be great
23:24 lucian allison: not necessarily. i think the approach was very wrong so far
23:24 allison lucian: that is, why would anyone spend a lot of time working on a language implementation for an inferior VM?
23:24 lucian languages were implemented from scratch, instead of forking the existing implementations
23:25 lucian for example, python has an ast module
23:25 allison lucian: we did try forking the existing implementation for Perl5, and it was a nightmare
23:25 Coke allison: that is an excellent question that has bugged me for coming up on a decade. ;)
23:25 lucian allison: is that perl5's fault?
23:25 allison lucian: yeah, I tried using Python's AST module too
23:25 allison lucian: and it was also a nightmare
23:25 allison I asked Guido about it
23:26 allison and he said "of course, it wasn't written to be portable"
23:26 lucian portable to what?
23:26 allison Perl 5 is the same way
23:26 allison portable to anything
23:26 lucian there's a pure python version
23:26 allison it's very incestuous between the parsing and the VM implementation
23:27 allison lucian: sure, but you need to bootstrap a large amount of Python to use a pure python parser
23:27 lucian anyway, an existing python compiler. PyPy has one too
23:27 lucian allison: and that's what parrot needs to help with. parsing, codegen are easy
23:27 lucian the data types are hard to boostrap
23:27 allison yes, PyPy had to implement theirs from scratch, and I still have high hopes that we could use it (almost) directly
23:27 lucian (of course, this only applies for languages with existing mature implementations)
23:28 lucian allison: i'd advise you to forget those high hopes
23:28 lucian pypy implements them in RPython
23:28 lucian which is an implementation detail of the pypy vm framework
23:28 lucian other than porting the whole of pypy, it wouldn't help
23:28 allison (when I say Perl 5 is the same way on implementations, I mean it's also very deeply entwined between parser, ast, and vm implementation)
23:28 lucian allison: well, cpython isn't that bad
23:29 allison lucian: yah, that's why I'm curious about implementing another backend for PyPy, instead of trying to reinvent everything PyPy already provides
23:29 allison lucian: it isn't "bad", it just isn't portable
23:29 lucian that wouldn't be useful at all
23:29 allison lucian: you can't cut one chunk out of CPython carry it over to a completely different implementation
23:30 lucian a parrot backend for PyPy would generate a VM that runs on top of parrot
23:30 lucian it would be doubly interpreted
23:30 allison lucian: it just doesn't make any sense
23:30 lucian i'm not suggesting that
23:30 allison lucan: a VM that runs on top of Parrot is exactly what NQP/Perl6 is implementing
23:30 lucian allison: then it'll be excruciatingly slow
23:30 allison lucian: I'm just suggesting embracing Parrot's key value and pushing it to an extreme
23:31 allison lucian: why slow?
23:31 lucian because it's doubly interpreted
23:31 lucian try running PyPy's py.py without translating
23:31 allison lucian: no, no, PyPy would have to run native in Parrot
23:31 lucian it's a python interpreter written in pure python
23:31 lucian allison: it can't "run native"
23:31 allison lucian: sure it can, translate RPython to Parrot bytecode
23:32 lucian PyPy generates interpreters
23:32 lucian allison: and what does that achieve?
23:32 allison PyPy generates interpreters, yah, so it can generate interpreters running on Parrot
23:32 lucian and that'll be very, very slow
23:32 GodFather left #parrot
23:33 allison lucian: if it's successful, it gives an avenue for PyPy to run faster, on more platforms
23:33 lucian double interpretation is slow, you can't get around that
23:33 allison lucian: if it doesn't provide any advantages at all, then it's a waste of time :)
23:34 allison lucian: and, I accept the point that right now it doesn't provide any advantages
23:34 lucian and when will it?
23:34 lucian writing a parrot backend for PyPy is a worse idea than finishing PyPy's jvm backend
23:34 lucian if you treat parrot like the jvm/.net, there's no advantage to its existance
23:35 allison lucian: I just don't think "true right now" means "will always be true"
23:35 lucian the only nice parrot might fill is a higher level vm than the jvm
23:35 lucian the only way to get around the double interpretation is for PyPy to JIT to parrot bytecode
23:36 lucian and then for parrot to JIT that to something native
23:36 allison lucian: see, the biggest problem is that right now Parrot is competing with the very communities it needs to succeed
23:36 allison lucian: that doesn't make any sense
23:36 allison lucian: we shouldn't be competing with PyPy, we should be helping them
23:36 lucian and that's as bad as what happens with PyPy's .NET JIT backend
23:36 lucian allison: but you can't
23:36 lucian at least I don't see how
23:36 lucian forget PyPy, think the entire python community
23:37 lucian the roadblock to writing a good pynie is bootstrapping data types
23:37 lucian once you have objects and functions (which implies dicts, lists and tuples), you can bootstrap the rest of python
23:38 allison why is bootstrapping datatypes hard?
23:38 allison it's a bunch of PMCs
23:38 lucian because you don't get to do it in python
23:38 allison so, it's hard because our PMC definition language is a pain?
23:38 lucian parsing & codegen you can do in python, and it's the best way
23:39 allison (and agreed that it is a pain)
23:39 lucian allison: partly. it's weird
23:39 lucian mostly because most of the tools parrot offers to implement languages focus on parsing & codegen
23:39 allison yeah, it's a strange mixture of C and a funky macro language
23:39 allison what if you could define PMCs in RPython
23:39 lucian that's the easy bit for mature languages
23:39 allison would that help?
23:40 allison (that is, a subset of RPython, without the Python core types)
23:40 lucian not RPython, but something similar, perhaps
23:40 lucian i'm not sure
23:40 lucian the thing is, python isn't lisp
23:40 lucian you need more than lists and 7 functions to bootstrap it
23:41 lucian there are cyclic dependencies that get annoying
23:41 lucian what really is needed is an object implementation
23:41 lucian that's the only thing that's hard to bootstrap really
23:41 allison parrot has an object implementation
23:41 lucian and it really sucks
23:41 allison a simple one, but enough to bootstrap
23:41 lucian at least for python
23:42 allison sucks as in "too complex"
23:42 lucian i mean python objects
23:42 allison ?
23:42 lucian sucks as in it's too static
23:42 bubaflub left #parrot
23:42 allison and too heavyweight
23:42 allison yeah, I can see that...
23:42 lucian once you have python-level objects and a way to inherit from PMCs, you can bootstrap the rest of python
23:43 lucian but implementing python objects requires dicts and lists and tuples and functions and a few other things
23:43 allison so, it needs tools to easily implement an object model, instead of one "universal" object model
23:43 lucian allison: yes, that would be more accurate
23:43 allison dicts, lists, tuples, and functions are easy
23:43 allison like, core parrot has them
23:43 lucian i know
23:44 lucian you'd first need to get them to behave like python's
23:44 lucian but i agree, they're mostly there
23:44 lucian it's just a but mind-bending
23:44 bacek left #parrot
23:44 lucian since functions and lists and so on are objects
23:44 lucian and in fact functions are just objects with a __call__ attribute
23:44 allison which brings us around to the fact that we really need an easier syntax to implement core data types
23:44 allison (PMCs)
23:45 lucian allison: sort of, yes
23:45 allison which probably isn't RPython, or any variation of any HLL
23:45 lucian i don't really know
23:45 lucian maybe it's lorito
23:45 allison but a simple, lightweight definition language
23:45 lucian pir isn't too bad, really
23:45 lucian but it doesn't have to be assembly at all
23:45 allison that's one of the ideas for Lorito, I don't know if it'll make it into the final cut
23:46 allison yes, probably shouldn't be quite like assembly
23:46 allison at least to the point that it would be really nice to have blocks and control structures
23:46 lucian but the main point is that people who love a language want to use it
23:46 lucian and if it's a mature language, PCT is useless
23:47 allison "useless" as in "makes too many assumptions to do a good job of morphing to other HLL styles"?
23:47 lucian allison: useless as in it's not the language they love at all
23:47 allison ("other completely different HLL styles, where you have to fit in with that behavior")
23:47 lucian if it's a sane language, it's possible to write a compiler in it
23:48 lucian so python developers will want to write parrot's python implementations in python as much as possible
23:48 lucian same for ruby, etc.
23:49 lucian and when you're re-implementing an existing, mature language, there are other hard bits
23:49 lucian like bootstrapping the object model
23:52 allison yes, cross-implementation compatibility is a bear
23:52 allison on the plus-side for Python, the core developers are really committed to supporting multiple implementations
23:53 lucian that too, but that's fiddly bits later
23:53 allison it's a big value for Guido
23:53 lucian it has to run first
23:53 allison (he did the first implementation of what became Jython)
23:53 lucian i thought that was someone else
23:53 lucian doesn't matter much, anyway
23:54 lucian what matters is that python doesn't run without objects
23:54 allison lucian: good point, and very true
23:54 allison (about objects)
23:55 lucian and while it needs much more than lisps, it doesn't need that much
23:55 lucian implementing 'object' in pir and a way to inherit from PMCs would (i think) would be enough
23:55 lucian the rest could be pure-python
23:57 allison (lucian: on who started it, Frank Wierzbicki and Guido both told me Guido did, but I never did research to prove it, just took their word)
23:58 allison lucian: yah, but it really needs a declaration language for PMCs in PIR, instead of the weird "create the data-types on the fly at runtime" object system we have now
23:58 lucian ok, it was just my impression that it was the IronPython guy
23:58 allison lucian: in PIR, or some other language
23:58 lucian yeah, that is silly
23:58 lucian w/e
23:58 lucian it doesn't matter much
23:58 allison lucian: IronPython is .NET, and he did start from scratch on his own
23:59 lucian i know, i read something like he did it to prove it's possible to do jython in .net, after having written jython
23:59 lucian he probably just maintained jython, or something
23:59 lucian doesn't matter

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced