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