Parrot 4.4.0 "Banana Fanna Fo Ferret" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 3 June 2012.
01:12 particle joined
dalek kudo/nom: 6ab416b | pmichaud++ | src/ (4 files):
Get binder to recognize QRPAs; let nqp::istype and nqp::islsit inherit from nqp.
01:54
: 80ebf9c | jimmy++ | t/while.m1:
fixed t/while.m1 test
02:09
rrot/m0: 78d1d89 | jimmy++ | src/m0/perl5/m0_interp.pl:
fixed Sha-Bang
02:26
: e9b889d | jimmy++ | / (2 files):
fixed run_m1.sh, so it won't ouput warning, also removed unneeded hello.m1
02:46
: a7248e6 | jimmy++ | / (3 files):
add small fix to make test output
03:08
p: 6be8ad9 | pmichaud++ | / (2 files):
Fix count overrun bug in QRPA.splice.
04:43
05:26 dalek joined 06:07 dngor joined 06:28 fperrad joined 06:54 he joined 07:31 brrt joined 08:11 lucian joined 08:51 kjs joined 09:59 kjs joined 10:09 brrt1 joined 10:22 JimmyZ joined
JimmyZ good morning, ksj 10:25
err, kjs
kjs hi JimmyZ 10:29
JimmyZ hello
kjs how are things? 10:30
JimmyZ kjs: not good, don't know how to fix the segfault of m0/c :P 10:33
kjs perhaps there should be some assertions added to M0 10:36
I'm doing that a lot to M1, and they've caught several mistakes of mine
JimmyZ kjs: I know where/why is segfault. just don't know to fix ;) 10:37
kjs where is it?
JimmyZ kjs: for obj.m1: github.com/parrot/parrot/blob/m0/s...erp.c#L149 10:38
kjs: for func.m1: github.com/parrot/parrot/blob/m0/s...ps.c#L267, because of frame->registers[ops[1]] = "" 10:39
kjs obj.m1 runs fine on my machine (mac)
on C-M0
it's knwon that func won't work on C-M0 10:40
since M0 is not as complete yet. See the mailing list
JimmyZ kjs: obj.m1 runs fine, because you comment that line ?
kjs which line?
JimmyZ github.com/parrot/parrot/blob/m0/s...erp.c#L149 10:41
kjs oh i might have. cant remember now
i thought you put in a fix for that
JimmyZ didn't :P
kjs I don't have time to look into this now unfortunately 10:43
but I think in general we should add more assert()s and set pointers to NULL after being free()d
JimmyZ kjs: I heard Nathan Brown will fix it this weekend in the email 10:44
kjs: aye
kjs i dont think promises were made ;-)
I hope that a "complete" M1 implementation will motivate others to keep working on M0. 10:45
JimmyZ kjs: me too. 10:46
kjs++ :) 10:48
11:18 brrt1 left
dalek rrot/m0: 2f4959f | jimmy++ | src/m0/c/ (3 files):
fixed the test t/obj.m1 and t/string.m1 in m1 repository
11:30
11:30 JimmyZ joined
JimmyZ yeah, I fixed two sefault finally 11:32
kjs how did you find out how to fix it? 11:34
JimmyZ: I wonder whether the fix in gc_alloc op is correct 11:37
JimmyZ kjs: yeah 11:38
kjs: that's the problem
kjs the spec says it's a number of bytes (sizeof(char)) that is allocated
now it wiill allocate 8 times as much
JimmyZ kjs: but I don't know whether it's correct or not. I'd like to make it work first 11:39
kjs but if it's not correct, then it's hiding the real cause...
JimmyZ kjs: hmm, I need add comment 'XXX' again :P 11:40
JimmyZ dinner&
kjs because now it's "working" just because there's a whole bunch of memory around (allocated)
o
ok
11:43 plobsing joined 12:12 whiteknight joined
whiteknight good morning, #parrot 12:13
12:22 lucian joined 12:30 kjs joined 12:37 dngor joined 12:53 not_gerd joined
not_gerd hello, #parrot 12:53
whiteknight hello not_gerd. How are you doing today? 12:54
not_gerd fine - the weather's unexpctedly good, so I might not stay around for much longer
cotto: ping
whiteknight cotto is probably not awake yet 12:55
it's probably 6AM there 12:56
not_gerd 6am - best time of the day to do some m0 design ;) 12:57
msg cotto currently, m0 string have 2 32-bit header fields (size and encoding) - I'm pondering adding a third for a hash code 12:58
aloha OK. I'll deliver the message.
kjs not_gerd: hi there.
not_gerd kjs: hello 12:59
kjs did i remember correclty you were interested in doing a jit for M0?
not_gerd kjs: a pseudo-jit - translation to a different in-memory representation for faster interpretation 13:00
kjs not something like libjit?
not_gerd C is not the best target for writing interpreters, which is the reason why the luajit2 one is written in assembler
however, LLVM IR is powerful enough so you can do the same thing, but portable
that's what I'm planning to do
(luajit2 in interpreter mode used to outperform the V8 jit) 13:01
kjs does that mean you'd reimplement M0 interpreter?
not_gerd yes 13:02
but I first want the C implementation to stanilize
kjs which language would that be?
not_gerd ^stabilize
kjs I thought using existing components such as libjit for jit, and libffi for ffi would be quite handy.
the perl implementation is more stable :-) 13:03
not_gerd kjs: $any-language - one just needs to generate LLVM IR at compile-time
kjs as in, working.
not_gerd kjs: not all issues have been solved
btw, I'mworking on the C implementation right now: github.com/parrot/parrot/pull/784
kjs ok, well obviously you're more knowledgable about those details than me :-) 13:05
I think we should try to include things that have proven to be difficult in Parrot, such as threads, at an early stage 13:06
13:08 Psyche^ joined
not_gerd the current design has some unresolved issue (memory model/gc probably the most important one) and I'd like to have a working prototype before I start working on 'my' implementation 13:08
kjs sounds like a sound idea. as for the GC, i would expect that's just a subsystem that could be implemented instead of using malloc(). 13:09
what do you need for M0 to stabilize? Are those the things on the list you sent the link for 13:13
not_gerd sure, but you need to figure out how to flag PMC registers, how object metadata is stored, etc
I want to know what I need to optimize for before creating an optimized implementation ;)
kjs it seems that these problems have been solved many times by existing VMs 13:15
not_gerd kjs: but never exactly the same way
kjs lua for instance, python, ruby
not_gerd the design of luajit and pypy is quite different 13:16
just to name two prominent implementations
kjs and both are quite fast i believe 13:17
maybe i'm ignorant, but arent we trying to reinvent the wheel?
not_gerd kjs: nothing wrong with that as long as the perfect wheel hasn't been found... 13:24
kjs not_gerd: that sounds as if you're confident you can find a faster wheel :-)
not_gerd kjs: not really, but how would I know if I don't try 13:25
alternatively, find some money and hire the guys who've been working on dynamic language vms for several decades 13:26
don't know how happy they are right now at Google ;)
kjs ah but there's no fun in that!
not_gerd msg cotto I'd also like to add CFG_SEED to CONFIG 13:32
aloha OK. I'll deliver the message.
not_gerd ans with github.com/gerdr/parrot/commit/f5d...3d66a876e0 , I'm off for now 13:51
^and
13:52 not_gerd left 13:53 brambles joined
JimmyZ luajit2 is not portable? 13:54
13:58 brambles_ joined
dalek rrot/m0: c74de6b | jimmy++ | src/m0/c/ops.c:
add a comment so we're not hiding the real cause
14:04
14:13 jashwanth joined 14:17 PacoAir joined 14:51 JimmyZ joined
dalek kudo/nom: 8bb2fad | pmichaud++ | src/core/MapIter.pm:
Use QRPA for ListIter's $!rest in MapIter.
15:06
15:22 jashwanth joined
alvis not_gerd++ # +1 on github.com/parrot/parrot/pull/784 15:26
15:34 dmalcolm joined 16:25 bluescreen joined 16:42 not_gerd joined
not_gerd msg JimmyZ luajit2 is portable insofar as Mike makes mone porting it 16:48
aloha OK. I'll deliver the message.
alvis aloha: help 16:52
aloha alvis: Ask me for help about: status, insult, auth, chanop, seen, github::announce, infobot, xkcd, convert, msg, vars, karma, maths, translate, github::pullrequests, clock, loader (say 'help <modulename>').
alvis dalek: help
dalek is, me thinks, dead. Don't know how to check on it. :( 16:54
Coke they're working on it. 16:55
your commit to CREDITS borked it a bit.
16:57 kjs joined 17:01 alvis left
Coke sorear++ has likely fixed it. momentito. 17:01
17:02 alvis joined
dalek : e1bebdf | kjs++ | src/ (5 files):
work in progress. small code refactoring. plan for macro for generationg instructions. abstract away scope opening and closing.
17:08
: 4dc64a2 | kjs++ | src/ (3 files):
improve symbol handling
17:22
17:31 zby_home joined 17:34 alvis_ joined 17:35 contingencyplan joined
not_gerd msg cotto any thoughts on github.com/parrot/parrot/pull/784#...nt-6208779 ? 17:45
aloha OK. I'll deliver the message. 17:46
moritz anybody wants to make rakudo happy and implement foldcase? it's already in icu: icu-project.org/apiref/icu4c/ustrin...4934d9acce 17:50
whiteknight moritz: Create a ticket. You can assign it to me initially 17:54
moritz whiteknight: will do, thanks
whiteknight moritz: What is case-folding? 17:55
moritz whiteknight: it's an operation that canonicalizes the case of a string so that you can compare two strings independently of case 17:57
you can't use upper-caseing for that because then titlecase characters won't compare correctly
and you can't use lower-casing, because the German 'ß' should compare equal to 'SS', but if you lower-case 'SS', then 'ss' is not equal to 'ß' 17:58
whiteknight ... 17:59
languages and encodings are lolfail
If we're going to implement case-folding, we're going to have to do the same thing for ASCII, utf8, utf16, ucs2 and all the other formats we're supposed to supoort 18:00
support
moritz huh? can't we delegate that to ICU? 18:01
whiteknight I don't know. Maybe? I don't know a lot about encodings
dalek kudo/nom: 5a415c9 | moritz++ | src/core/Cool.pm:
return Int type object from failed Str.index
18:07
aloha (parrot/parrot) Issues opened : 786 (Expose icu's FoldCase operation to user space) by moritz : github.com/parrot/parrot/issues/786
18:08 mtk joined 18:22 mtk joined 18:24 NotFound joined
NotFound ~~ 18:24
whiteknight hello NotFound
NotFound Hi 18:25
18:28 rindolf joined
rindolf Hi all. Should I package parrot-4.4.0 for Mageia Linux or parrot-4.3.0? This page is a little confusing - www.parrot.org/download . 18:29
whiteknight 4.3.0, I think
That's the supported one
NotFound (case-folding): don't need to do it for all encodings, just one. User can recode if they need to.
whiteknight NotFound: So what happens if somebody calls the casefold op on an ASCII string? 18:30
NotFound whiteknight: one result.
source, any. 18:31
moritz fc($ascii) does the same as lc($ascii) 18:32
whiteknight but still, somewhere we need to make that mapping
rindolf whiteknight: Gentoo have already packaged 4.4.0. :-( 18:33
So I'll have a false positive here - check.mageia.org/cauldron/shlomif/updates.html .
NotFound Yes, but you just need source conevrsion, it will be simpler.
whiteknight rindolf: They're both good releases. Well-tested and good quality 18:34
rindolf whiteknight: OK. 18:35
whiteknight: I'll go with 4.3.0 for the time being.
whiteknight rindolf: Thanks. Sorry about the confusion 18:36
rindolf whiteknight: no problem. 18:37
whiteknight rindolf: Out of curiosity, is there any documentation we could update to have cleared this up sooner?
rindolf whiteknight: well, maybe the page there. 18:38
whiteknight link?
rindolf whiteknight: www.parrot.org/download 18:46
whiteknight Okay, I'll look at it and make sure it is up to date with information for packagers 18:47
rindolf++
not_gerd bye, #parrot 19:08
19:08 not_gerd left
rindolf whiteknight: thanks. :-) 19:20
19:22 lucian joined 19:30 TonyC joined 19:38 nopaste joined 19:50 brrt joined 19:57 dmalcolm joined 20:08 preflex joined 20:14 preflex_ joined
dalek nxed: 82ab077 | NotFound++ | t/medium/0 (3 files):
update style and improve check in some tests
20:16
brrt i'm getting a segfault in winxed upon compreg('nqp'); 20:23
NotFound brrt: the compreg builtin just generates a compreg op, it must be a parrot initialization problem. 20:31
brrt i've loaded up gdb, but i'm not getting much wises
wiser
happens in Parrot_oo_find_vtable_override 20:32
benabik brrt: Does $P0 = compreg 'nqp' also segfault?
In a PIr file.
moritz it does not 20:35
at least not here
20:39 brrt joined
brrt benabik: i'm checking it out 20:40
20:41 fperrad joined
brrt nope, no segfault 20:42
compreg is not the problem, load_language is 20:43
oh, whats more 20:44
it doesn't happen with pir
NotFound brrt --verbose 20:47
brrt :-)... loading 'verbose' module
when I create a file that contains: function main[main]() { load_language("nqp"); } it segfaults in the aformentioned function 20:48
function main[main]() { compreg("nqp") } does not crash 20:49
NotFound brrt: ugly. It can be a winxed driver problem. What happens if you compile it to pir and run the pir?
brrt thats what i'm going to try out
no crash
NULL PMC access
but thats ok
NotFound I need to talk with whiteknight, the winxed driver may need a change, or perhaps the pbc_to_exe generated startup code. 20:51
brrt yes, probably
and if so I'd probably want to know too
a propos.. do you know if nqp even registers a HLL compiler? 20:52
NotFound brrt: the nqp bundled with parrot does not work with load_language, because it does not follow the rules about names an location. 20:54
brrt what about the nqp not bundled with parrot
or for that matter, rakudo
NotFound brrt: I don't know its current state in that matter. 20:55
brrt hmm, it is of no great importance right now
rurban brrt: Can you add a testcase for this bug? 20:56
NotFound For the bundled one, examples/nqp.winxed in the winxed source tree works.
rurban brrt: sorry, forget it. 21:00
brrt oh, thats weird
NotFound: yes, that one works 21:01
rurban: why forget it?
rurban When it's not supported and known not to work, why add a testcase
NotFound brrt: I can't reproduce the problem in parrot master. It just throws "couldn't find a compiler..." for me. 21:02
brrt .. its really weird, and somewhat embarassing
but i can't reproduce it either anymore
NotFound This was in a non optimized build, going to try again optimized. 21:03
brrt this is very frustrating indeed
NotFound rurban: "not to work" can be fine, segfaulting is never fine. 21:04
brrt i'm wondering if my build was just corrupt now
NotFound brrt: probably a missing dependency in the Makefile 21:05
It happens sometimes.
brrt yes, but rather stupid, still
strange as well, as I haven't been able... oh wait
i know
i've just cleaned my parrot directory, and parrot happens to look in the build_dir for its search path 21:06
which is now clean, and thus does not contain problematic files anymore
NotFound brrt: Installed parrot looks in the build dir? 21:07
brrt i do believe so
src/library.c, Parrot_lib_update_paths_from_config_hash, line 245 21:09
add $build_dir/runtime/parrot/include to include, library, lang, dynext 21:10
well, not include, but you get my point
NotFound Looks like we have 4 config keys with references to the build tree; build_dir, coveragedir, libparrot_likflags and rpath_blib 21:11
brrt build_dir is the one that is used 21:12
rurban Installed parrot has a config logic to ignore build_dir 21:16
brrt .. that can't be it, then? 21:21
... i'll see if i can ever repeat it
but I'm going to sleep now
bye 21:22
rurban I wrote it long ago, but cannot remember exactly
I looked, only prefix is changed on is_install. libparrot_linkflags should not be used, inst_libparrot_linkflags instead. rpath_blib is also not used, rpath_lib instead 21:26
In doubt check the config key installed
NotFound rurban: yes, there is a check for the "installed" key, src/library.c:240 21:27
rurban So builddir should be empty 21:28
I forgot which parts of my make_install patches #3 were never applied. There was something on the wiki 21:29
Some stat optimizations if I remember
NotFound Not empty, but is not inserted into the default search paths.
rurban Well builddir=NULL is empty 21:30
NotFound No, is NULL ;) 21:31
rurban oki 21:32
NotFound It doesn't matter in that case, no difference between skipping when NULL and inserting an empty.
Uh, no, it does not insert, it adds paths. 21:33
Now I understand better the conflicts when rebuilding with the same prefix as one already installed. 21:34
rurban You set manually --prefix to `pwd`? That should be forbidden 21:35
NotFound No, that must be even worse. 21:36
rurban in Configure.pl
dalek : e859453 | dukeleto++ | README.md:
Add note to the readme about running tests
p: dceb34b | jnthn++ | src/QRegex/Cursor.nqp:
Simplify and improve performance of !alt a bit; creates less junk. ~4% improvement on CORE.setting parse time.
21:39
p: d738608 | jnthn++ | src/QRegex/Cursor.nqp:
Similar simplification to !protoregex as just done to !alt; much less noticable difference, probably because we just pick the first answer much of the time and it works out.
21:59
rrot: 2c97f1c | NotFound++ | config/gen/makefiles/root.in:
delete generated pbc_to_exe.pir in prog-clean target
22:03
p: ac5f5fc | jnthn++ | src/ops/nqp.ops:
Re-use state arrays in NFA runner, saving roughly a million PMC allocations during CORE.setting parse. Another couple of percent off.
22:31
22:32 kjs joined
kjs make 23:08
woops :-) 23:09
rurban BTW: I use alias m=make 23:15
kjs saving your fingers to type the 3 letters eh ;-) 23:19
23:24 kjs joined
dalek : 69f03a5 | kjs++ | src/ (3 files):
fix a bug in symbol declaration.
23:40
: 49e72cc | kjs++ | src/ (5 files):
finish scopes the cheap way.
23:45 whiteknight joined
whiteknight good evening, #parrot 23:46
dalek p: f60f402 | jnthn++ | src/ops/nqp.ops:
Refactor to pull much of the NFA runner out of the op body.
p: ba8bf93 | jnthn++ | src/ (3 files):
Refactor the NFA ops; we needn't get the ordering back and then push it onto the bstack in a loop, we can just do it right in an op; we've a few other ops that manipulate the bstack after all. Another little win.
p: 35db044 | jnthn++ | src/stage0/ (8 files):
Update bootstrap.
p: 7176d14 | jnthn++ | src/ops/nqp.ops:
Toss now-unused op.
kudo/nom: 0fde4a1 | jnthn++ | tools/build/NQP_REVISION:
Use latest NQP for some parsing performance improvements (roughly 8% improvement for CORE.setting).
23:53
23:56 kid51 joined