Camelia, the Perl 6 bug

IRC log for #parrot, 2010-02-26

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:00 Coke Whiteknight: yes?
00:00 Coke plobsing_: IANACP.
00:00 darbelo My brief passage through Solaris was mostly uneventful, back then when they weren't trying to dress it up as a linux distribituion.
00:00 Coke (I am not a c programmer)
00:00 Coke I'm just trying to straighten up the build. =-)
00:00 darbelo Coke: And we love you for it ;)
00:01 Whiteknight Coke: which platform are you on?
00:01 chromatic o/~ Call Mr. Clean / yes, that's my name / that name again / is Mr. Clean. o/~
00:04 Coke Whiteknight: some linux variant on feather.
00:04 Whiteknight Coke: compiler? GCC?
00:04 Coke yes.
00:05 Coke why?
00:05 NotFound char *(* func_t)()' to be 'char *(* func_t)(void)'  aren't the same.
00:05 NotFound (In C)
00:06 dalek parrot: r44482 | coke++ | branches/rm_cflags (4 files):
00:06 dalek parrot: make compilers/imcc/Rules.mak a generated file.
00:06 dalek parrot: use some per-file warnings overrides to quiet imcc.
00:06 dalek parrot: add -Wno-unused back to the default gcc warnings;
00:06 dalek parrot:   this is how it was with trunk.
00:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44482/
00:06 dalek parrot: r44483 | coke++ | branches/rm_cflags (3 files):
00:06 dalek parrot: Ignore this new generated makefile file and remove it on realclean.
00:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44483/
00:06 NotFound (void) takes no arguments, () takes any number of parameters.
00:07 Whiteknight NotFound: that's not true. (...) takes any number of arguments
00:07 Whiteknight () is the same as (void)
00:07 NotFound Whiteknight: In C++
00:08 Whiteknight NotFound: I would love to see an example of that
00:08 Whiteknight otherwise I declare BS
00:09 NotFound Whiteknight: int main()
00:09 purl int main() is probably especially K&R-ish, since they were working on Unix.
00:09 plobsing_ NotFound: r44484 should either fix parrot_nci_thunk_gen or at least cause an assertion to fail much earlier
00:09 darbelo Whiteknight: it's a leftover from K&R C
00:09 Whiteknight NotFound: int main() is a special case  for compatibility. Doesn't work for other functions
00:09 NotFound plobsing_: going to try
00:09 kurahaupo1 Before C89, function params weren't declared between the brackets (so you used empty params regardless of the params).
00:11 Coke note that this with gcc's -strict-prototypes.
00:11 Coke er, -Wstrict-prototypes
00:11 japhb Not looking having it in front of my at the moment ... what is the actual *intent* of the code in question?  Because if the intent is that there be no arguments, this is all moot.
00:11 Whiteknight japhb: the question could inform us later
00:12 plobsing_ japhb: the intent is no arguments. it's in the generated nci thunks code
00:13 darbelo Whiteknight: http://nopaste.snit.ch/19785
00:14 darbelo That works, and won't even warn unless you pass gcc an option.
00:16 Whiteknight well, I'll be damned
00:17 plobsing_ C tries but fails to stfu and dwim. it's nice when it works though.
00:18 * Whiteknight just lost a little bit more respect for C
00:18 Whiteknight what the hell good does it do to have a static type system in the first place?
00:18 darbelo It's a backwards-compatibility thing.
00:18 darbelo And you bitch about *our* deprecation policy ;)
00:19 NotFound Whiteknight: a nicely designed and written compiler will never fit the machines it was developed for.
00:20 Whiteknight darbelo: I'm seeing that most deprecation policies are shittackular
00:20 NotFound plobsing_: still fails with r44484
00:21 plobsing_ same way?
00:21 NotFound plobsing_: yeah
00:22 dalek parrot: r44484 | plobsing++ | trunk (5 files):
00:22 dalek parrot: add PF_size_strlen() function to get the storage size of a string without having allocated the string
00:22 plobsing_ hmmm
00:22 dalek parrot: add assertion the ImageIOSize derived size is identical to ImageIO size
00:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44484/
00:22 dalek parrot: r44485 | jkeenan++ | branches/rm_cflags/t/steps/auto/warnings-01.t:
00:22 dalek parrot: Delete tests which pertained to internal methods deleted within past two days.
00:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44485/
00:23 plobsing_ NotFound: do files prior to pmc_nci_thunk_gen throw warnings about PackFile_unpack?
00:24 NotFound plobsing_: no
00:25 particle joined #parrot
00:25 NotFound plobsing_: packfile.winxed parrot_nci_thunk_gen_pbc gives me exactly the same error. The pbc just fails to be loaded.
00:26 plobsing_ hmmm... maybe the constant storing code is messing up somehow. AFAIK, this is the first attempt to put a large, nested aggregate into a constant.
00:27 NotFound pbc_disassemble shows some thing good, then segfaults.
00:28 darbelo NotFound: pbc_dissasemble often segfaults on prefectly good pbcs.
00:28 NotFound But it seems fully to dump the const table.
00:29 plobsing_ that's the only unusual thing that tools/dev/nci_thunk_gen.pir does that I can think of
00:29 NotFound Oh, and it also shows the error messages before starting to dump.
00:30 NotFound Same for pbc_dump
00:30 NotFound All tools agree that the pbc has some problem.
00:32 NotFound plobsing_: I don't know if there is other tool that loads bytecode inside an immediate
00:33 NotFound (talking about unusual)
00:33 plobsing_ NotFound: I do that because it complains about data_json.pbc not being found after installation
00:33 plobsing_ and I don't actually need it at runtime
00:34 dalek tracwiki: v5 | cotto++ | LoritoPrimitives
00:34 dalek tracwiki: add min: and max:
00:34 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Lori​toPrimitives?version=5&action=diff
00:34 NotFound plobsing_: I don't discuss his usefulnes, just don't know if is a well proven way.
00:35 plobsing_ hmmm... not sure. wfm, but maybe I should consult an imcc guru.
00:36 Whiteknight cotto: min and max? I doth protest
00:37 NotFound plobsing_: my intuition is that the packfile segments aren't merging well, and thus the wtitten pbc gets wrong values.
00:38 NotFound The pbc_dump results looks like that.
00:38 plobsing_ merging?
00:38 purl merging is slow
00:39 dalek parrot: r44486 | coke++ | branches/rm_cflags (19 files):
00:39 dalek parrot: merge latest changes from trunk.
00:39 NotFound plobsing_: the load_bytecode merging the loaded bytecode with the one being compiled.
00:39 dalek parrot: (don't merge generated files, just remake them with --maintainer)
00:39 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44486/
00:39 dalek parrot: r44487 | plobsing++ | trunk (2 files):
00:39 dalek parrot: make function prototypes default to (void) not ()
00:39 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44487/
00:40 japhb Whiteknight, well, min: and max: are indeed Squeak prims, as the header of that page says
00:40 plobsing_ NotFound: that has to do with imcc making use of interp->initial_pf right?
00:40 japhb And actually, they are primitives on some processors.
00:41 Whiteknight japhb: Okay, I didn't realize that was the list of squeak ops. That said, let me register my official protest against "min" and "max" ops for when the time comes
00:41 NotFound plobsing_: something like that, the packfile code isn't very clear,
00:42 plobsing_ why don't we have a separate PF for every independantly loaded/generated piece of code?
00:43 NotFound plobsing_: I have wondered that sometimes.
00:44 NotFound Maybe is just an imcc peculiarity, don't know.
00:44 plobsing_ NotFound: part of the answer is that all PF's after the first will have their constant's rudely garbage collected from under them.
00:45 plobsing_ but that can't be all of it
00:45 NotFound plobsing_: if that is the only problem, can be easily solved.
00:46 plobsing_ NotFound: please explain how to fix that. It might fix TT 1142.
00:47 NotFound plobsing_: adding a list, a vector or whatever or loaded modules in the interpreter and marking it.
00:47 NotFound Well, and the not easy part of changing imcc way o work.
00:48 NotFound And probably the packfile loader.
00:49 NotFound The "easily" was just for that part of the answer.
00:49 Whiteknight plobsing_: If that's the case, it should be trivial to add a mark routine to keep those constants viable
00:50 NotFound Looking again at the dump... the pbc directory has 13 segments.
00:51 Whiteknight If we get rid of the raw Packfile structures, and use PMCs for everything, and if each PMC type has a working mark routine, this all becomes trivial
00:51 NotFound And several of them have type 'DIRECTORY'
00:51 NotFound Looks very odd.
00:53 NotFound My provisional conclusion is that loading bytecode while imcc is working mess a lot of things,
00:55 plobsing_ So to get it working, I guess I'll have to refactor to do that parsing at runtime.
00:56 NotFound plobsing_: I think that will be faster way to get the thing working, yes.
00:57 Whiteknight So when Parrot loads a new .pbc file, it merges the two packfiles?
00:57 plobsing_ I'm willing to cede correctness for expedience
00:57 plobsing_ at least for now
00:57 plobsing_ Whiteknight: that's how I understand it
00:58 NotFound Whiteknight: not very sure about what it exactly does, but when I looked at some parts looks like that.
01:01 NotFound Maybe it just merge the directory, but that's enough to interfere with imcc already working on it.
01:05 Whiteknight now, if we had just one Packfile, but it could contain any arbitrary number of segments, including segments of multiple types, that would be fine too
01:05 plobsing_ Whiteknight: that's fine, but then we shouldn't expose them as part of the interface
01:05 chromatic Maybe we can do the merge only after we close the packfile for further modification.
01:06 Whiteknight chromatic: yeah, like an optimization pass that compresses the packfile
01:06 Whiteknight ... among other optimizations
01:12 dalek parrot: r44488 | plobsing++ | trunk/tools/dev/nci_thunk_gen.pir:
01:12 dalek parrot: change :anon :immediate back to global variable. imcc--
01:12 purl dalek: that doesn't look right
01:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44488/
01:12 nopaste "coke" at 72.228.52.192 pasted "remaining warnings in rm_cflags" (16 lines) at http://nopaste.snit.ch/19786
01:13 plobsing_ NotFound: does that fix it?
01:25 Whiteknight I feel like there is such an amazing dearth of discussion and design information from the earlier days of Parrot
01:25 Whiteknight of course, unless somebody goes digging through IRC logs, the same will probably said about this time from people later
01:25 cotto_work There's Squaks of the Parrot.
01:25 Whiteknight cotto_work: yes, and I've read every single one of those posts
01:25 Whiteknight but that was a rare gem
01:26 cotto_work but you're right that that's the exception
01:26 Austin Why is the P6metaclass.register operation replacing my namespace with an empty one?
01:26 Whiteknight Austin: because it knows better than you
01:26 Austin Hmm.. I want to believe that, I really do. But now I have no methods.. :(
01:27 Austin Hmm.. I want to believe that, I really do. But now I have no methods.. :(
01:27 Austin ww
01:28 Austin Huh! It really is a different namespace.
01:28 Whiteknight Austin: what do you mean, "replacing my namespace"?
01:28 Austin I do P6metaclass.register('Key');
01:28 Austin The address of the namespace object returned by get_hll_namespace 'Key' is ...96 before I call register, and ...60 after.
01:29 Austin After the register, dumping the namespace shows no methods. Before the register, there were like 20.
01:30 pmichaud afaik p6object doesn't do any replacing of namespaces
01:30 pmichaud it must be something happening beneath p6object
01:31 Austin Sure, blame the internals...
01:31 pmichaud sure, why not?  ;-)
01:31 Austin I think the big effect is causing a proxy to be created, or something, yes?
01:31 * cxreg tries to build parrot for webos
01:32 pmichaud well, yes, anytime you call 'get_class' on a PMC type a proxy ends up getting created
01:32 cxreg d'oh: Can't exec "cc": No such file or directory at lib/Parrot/Configure/Utils.pm line 86.
01:35 pmichaud Austin: afaict, there's no 'Key' namespace to begin with.
01:35 chromatic The good news is we need to build proxies to store methods anyway and we can cache them this way.
01:35 Austin Well, there was something there - I put a bunch of methods into it.
01:36 pmichaud via   .namespace ['Key']  and :method ?
01:36 Austin via module Key; our method new ...
01:36 pmichaud oh, from nqp?
01:37 Austin Natch. Almost everything I'm doing (for Kakapo, at least) is in NQP.
01:37 Austin Except for a couple of dozen lines of pir to get :main and friends.
01:38 pmichaud guess I'd need to see the code
01:42 nopaste "Austin" at 68.37.46.53 pasted "output showing namespace change" (54 lines) at http://nopaste.snit.ch/19787
01:42 nopaste "Austin" at 68.37.46.53 pasted "code registering Key" (25 lines) at http://nopaste.snit.ch/19788
01:43 Austin That code is in the middle of a setup routine, but the call to register is right there at the top of the loop, and its effect is immediate.
01:45 pmichaud okay, testing.
01:45 purl testing is the best thing ever ZOMG
01:46 Coke does src/main.c:480 /need/ a cast? if I remove the cast, warning goes away. does that look right?
01:47 Coke cxreg: ... trouble building parrot?
01:47 pmichaud Austin: how/where is Parrot::get_hll_namespace defined?
01:47 chromatic Coke,  if that's the anonymous enum warning, the C++ build needs it.
01:48 particle coke: it may ... chromatic++
01:49 Austin http://gitorious.org/kakapo/kakapo/​blobs/master/src/Parrot/Parrot.nqp line 195
01:49 nopaste "pmichaud" at 66.25.31.29 pasted "P6metaclass.register('Key') doesn't affect namespaces for me (for Austin++)" (31 lines) at http://nopaste.snit.ch/19789
01:50 Coke chromatic: it is. wonder if I can shut up gcc.
01:51 chromatic Without a switch statement?  I doubt it.
01:53 pmichaud Austin: I'm guessing that $pmc_type isn't a string, or Parrot::get_hll_namespace is somehow grabbing the wrong namespace
01:53 Austin If it weren't producing exactly the right output above register, and the wrong output below it ...
01:53 pmichaud (which makes me suspicious of key_(), fwiw)
01:54 pmichaud my nopaste shows that register isn't having any effect
01:54 Austin Yeah.
01:54 pmichaud try the form of dump that I used via Q:PIR
01:54 Austin I'm doing that now.
01:57 nopaste "Austin" at 68.37.46.53 pasted "Things got worse." (58 lines) at http://nopaste.snit.ch/19790
01:57 * Coke is annoyed that the build isn't going to be warnings clean. :P
02:00 Whiteknight Coke: We'll fix those warnings over time
02:00 Whiteknight Coke: what warnings specifically? I can probably get them to shut up
02:04 pmichaud Austin:  "VAR1" => null
02:04 pmichaud where is that coming from?
02:04 Austin That's the second pir -based dump
02:04 Austin (get_hll_namespace ['Key']
02:05 Austin )
02:05 pmichaud what type is $pmc_type ?
02:05 Austin string
02:05 pmichaud ...are you sure?  ;-)
02:05 Whiteknight Coke: warning fixed
02:05 Austin No.
02:05 Austin How do I use sprintf opcode?
02:06 Austin $S0 = sprintf "%X", $P1
02:06 Austin doesn't seem to work
02:06 pmichaud just try   say(pir::typeof__SP($pmc_type));
02:06 pmichaud or even   say(pir::typeof__PP($pmc_type));
02:07 Austin I'm running that now.
02:07 Whiteknight r44489
02:07 Austin Okay.
02:07 Austin How do I use sprintf opcode?
02:07 pmichaud it wants a format and an aggregate (like an array)
02:07 Austin Ahh.
02:07 Austin Aggregate.
02:07 purl aggregate is array or hash.
02:07 pmichaud in nqp, I suspect one can do     pir::sprintf__SSP($fmt, [$values, $to, $print]);
02:07 Austin Aggregate.
02:07 purl aggregate is array or hash.
02:08 Austin ww
02:08 pmichaud you might also try forcing $pmc_type to a string:  P6metaclass.register(~$pmc_type);
02:08 Whiteknight the cyclomatic complexity of that parseflags function is mind-bogglingly high
02:08 Austin Yeah, I was just looking at that.
02:08 chromatic Welcome to Getoptsville, population The Damned.
02:09 Austin It's saying String.
02:09 Austin But now I don't believe it.
02:09 Whiteknight I don't even know of any good programs to calculate the complexity of C source
02:09 Austin Because I had a hash problem with this thing earlier.
02:09 pmichaud it might be that .register(...)  has trouble if passed a String PMC
02:10 * pmichaud tries that
02:10 japhb Whiteknight, what complexity measure are you looking for?
02:10 pmichaud no, works for me with a String PMC
02:10 Whiteknight japhb: cyclomatic complexity, mostly
02:10 Whiteknight but any complexity measuring tool would be nice
02:10 Austin No change when I '' ~ $pmc_type
02:11 pmichaud Austin: very strange.  it's working just fine here.
02:11 Austin :-$
02:12 Coke Whiteknight: thanks for that fix.
02:12 Coke however. now it's complaining under g++:
02:12 Whiteknight really? damnit
02:12 pmichaud oh, don't do  '' ~ $pmctype
02:12 Whiteknight let me take a gander
02:12 pmichaud just  ~$pmc_type
02:12 Austin Why not?
02:13 pmichaud (shouldn't matter, but ~$pmc_type results in a string register, definitely)
02:13 Coke src/main.c: In function 'const char* parseflags(parrot_interp_t*, int*, char***, Parrot_Run_core_t*, Parrot_trace_flags*)':
02:13 Austin Okay.
02:13 Coke src/main.c:440: warning: cast from type 'char**' to type 'const char**' casts away constness
02:13 Austin I tried that, too, but neither one changed anything.
02:13 Austin :(
02:13 Whiteknight Coke: okay, that's a different line. I'll fix that too
02:13 pmichaud Austin:  I'm stumped, then.
02:14 pmichaud Austin: is it only Key where it's losing the namespace?
02:14 Austin It seems that way.
02:15 pmichaud I'm stumped.
02:15 Austin Me too. I'm calling register('Key') now, moving the whole code block up and up and up.
02:16 Austin Aha!
02:16 Austin I'm registering it twice.
02:17 pmichaud hmmm, maybe .register should detect that :-S
02:17 Austin It does for normal classes.
02:17 Austin Maybe not for PMC types?
02:17 dalek parrot: r44489 | whiteknight++ | trunk/src/main.c:
02:17 dalek parrot: fix a build warning in src/main.c pointed out by Coke++. GCC doesn't like directly casting the output of a function. Instead, we break it up onto multiple lines, storing the return value THEN casting it.
02:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44489/
02:19 Austin Yeah, it's upgefucht after the second register.
02:19 Austin brb
02:21 Whiteknight Coke: fixed. r44490
02:22 Whiteknight like a goddamned sniper
02:23 japhb Whiteknight, http://www.chris-lott.org/resources/cmetrics/
02:24 Austin pmichaud++ Thanks for the help. (Ticket coming.)
02:24 Coke Whiteknight++
02:25 pmichaud Austin: sure thing -- glad to "help"  :)
02:25 Austin TT#1481
02:26 Austin Now to go rip all that diagnostic code out.
02:26 Whiteknight Coke: any other warnings you need to have killed?
02:27 Coke I think the rest of the warnings are in generated code from imcc that I can hide.
02:27 cotto has dalek stopped watching the wiki?
02:28 eternaleye joined #parrot
02:31 dalek tracwiki: v48 | cotto++ | ParrotQuotes
02:31 dalek tracwiki: whiteknight takes things a bit too far
02:31 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Pa​rrotQuotes?version=48&action=diff
02:33 dalek TT #1481 created by Austin_Hastings++: P6metaclass.register does not catch second registration of PMC Class
02:34 dalek parrot: r44490 | whiteknight++ | trunk/src/main.c:
02:34 dalek parrot: fix another warning that appears in g++ because we cast directly from char** to const char**. If we explicitly break type-safety for a bit, we can shut up the warning. Plus, argv here is highly unlikely to be affected by even the most aggressive optimizers, so we don't need to worry about this breaking anything.
02:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44490/
02:37 cotto Whiteknight, what about min and max do you protest?  The Smalltalk operations are just a starting point.
02:37 Whiteknight cotto: they're operations that are infrequently used and unnecessary for the operation of the VM
02:38 cotto They do seem a little odd.
02:39 Whiteknight now, I don't know how squeak uses them, maybe they are an integral part of their internal algorithms
02:39 Whiteknight but they aren't important for Parrot
02:40 Whiteknight Anyway, I'm out for the night. Later.
02:52 cotto The squeak VM ops seem strangely bloated for a minimal set.
02:52 * cotto wanders off to the next thing
02:53 japhb cotto, the surrounding text explains that they are bloated up in a few places either to expose hardware or to improve efficiency of really common operations
02:54 japhb parrot would probably have different bloat for the same reasons.  :-)
02:54 Austin Also, keep in mind that there's a big graphics primitive they need to implement.
02:55 Austin Wow. Here's me trying to get back to the one trivial test case I started this whole adventure with...
02:57 japhb Sometimes it can be hard to push through the crowd of newly shaved yaks ....
02:57 Austin heh
03:04 dalek tracwiki: v6 | cotto++ | LoritoPrimitives
03:04 dalek tracwiki: fill in some more descriptions, remove Lorito name field
03:04 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Lori​toPrimitives?version=6&action=diff
03:35 janus joined #parrot
03:49 cxreg Coke: yeah, i tried both setting CC and --cc but it still defaults to /usr/bin/cc
03:49 cxreg it might be scratchbox's fault, but i'm not sure
03:55 dalek rakudo/master: 8df8ad7 | (Solomon Foster)++ | src/core/Any-str.pm:
03:56 dalek rakudo/master: Try to handle the .substr cases where $start is outside the length of the string.
03:56 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/8​df8ad79b8c953f8d0ba2e9561835e18a2fb5690
03:56 dalek rakudo/master: 403afe0 | (Solomon Foster)++ | t/spectest.data:
03:56 dalek rakudo/master: Turn on substr.t.
03:56 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/4​03afe0ac715920a7cceb4694968028763ef759c
03:56 dalek parrot: r44491 | plobsing++ | branches/tt1477:
03:56 dalek parrot: creating branch to attempt solution to TT 1477
03:56 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44491/
04:02 estrabd joined #parrot
05:22 silug_ joined #parrot
05:25 kthakore joined #parrot
06:07 Khisanth joined #parrot
06:29 iblechbot joined #parrot
06:44 cotto bacek_at_work, it looks like some files are missing from opsc
06:57 uniejo joined #parrot
07:10 cotto Interesting.  The fifth entry when searching for git-svn is one of our Trac wiki pages.
07:12 cotto must be because it's awesome
07:16 parthm joined #parrot
07:37 chromatic joined #parrot
07:53 parthm left #parrot
08:21 mikehh joined #parrot
08:35 fperrad joined #parrot
08:39 jan joined #parrot
09:10 fperrad ttbot ?
09:10 purl ttbot is TapTinder build bot owned by mj41 and reporting http://tt.ro.vutbr.cz/buil​dstatus/pr-Parrot/rp-trunk build errors. or a master of timing.
09:12 AndyA joined #parrot
09:23 dalek parrot: r44492 | mikehh++ | trunk/src/packfile/pf_items.c:
09:23 dalek parrot: correct C function docs
09:23 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44492/
09:47 kthakore_mp joined #parrot
09:47 kthakore_mp hi
09:47 purl hey, kthakore_mp.
09:51 kthakore_mp left #parrot
09:53 bacek joined #parrot
10:03 lucian joined #parrot
10:22 barney joined #parrot
10:28 dalek parrot: r44493 | bacek++ | branches/ops_pct/compilers/​opsc/t/02-parse-all-ops.t:
10:28 dalek parrot: Update test
10:28 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44493/
10:28 dalek parrot: r44494 | bacek++ | branches/ops_pct/compilers/​opsc/compiler/compiler.pm:
10:28 dalek parrot: Add missing compiler.pm. cotto++
10:28 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44494/
10:35 lucian joined #parrot
11:56 ruoso joined #parrot
12:01 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32399), fulltest) at r44492 - Ubuntu 9.10 amd64 (gcc with --optimize)
12:01 mikehh forgot to post that
12:07 PacoLinux joined #parrot
12:10 parthm joined #parrot
12:20 Whiteknight joined #parrot
12:29 Whiteknight good morning #parrot
12:36 ruoso joined #parrot
12:37 Austin Mmm...xkcd.org
12:37 Austin lorito?
12:37 purl it has been said that lorito is "little parrot" in spanish or examples/embed/lorito.c
12:38 darbelo joined #parrot
12:38 Austin purl, lorito is also http://xkcd.org/707/
12:38 purl okay, Austin.
12:38 Austin botsnack
12:38 purl :)
12:38 Austin lorito?
12:38 purl lorito is "little parrot" in spanish or examples/embed/lorito.c or http://xkcd.org/707/
12:40 parthm left #parrot
12:45 parthm joined #parrot
13:03 Coke cxreg: if you specify --cc=/path/to/other/cc, it should never use /usr/bin/cc - can you file a bug report via trac? if possible, run Configure.pl with the --verbose option.
13:13 payload joined #parrot
13:25 * Coke wonders where everyone is today.
13:27 bacek joined #parrot
13:30 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32403), fulltest) at r44494 - Ubuntu 9.10 amd64 (g++ with --optimize)
13:30 lichtkind joined #parrot
13:33 Whiteknight Coke: we're all here
13:35 darbelo Except me, I'm over there.
13:36 bacek And me. I'm in other hemisphere.
13:38 Coke It's not just quiet here. also on other chats, at work. it is /friday/, right? =-)
13:38 darbelo .oO( Why is everyone else upside down? )
13:40 bacek Coke, nope. It's Saturday already.
13:40 bacek clock
13:40 darbelo Lucky bastard.
13:41 parthm left #parrot
13:41 darbelo It's not even *noon* here.
13:42 bacek Hey! Your Friday night ahead! And mine is passed already...
13:42 bacek .oO( Where is our annoying girl? )
13:42 darbelo purl: You alive?
13:42 purl darbelo: wish i knew
13:43 darbelo clock?
13:43 purl darbelo: LAX: Fri 5:43am PST / CHI: Fri 7:43am CST / NYC: Fri 8:43am EST / LON: Fri 1:43pm GMT / BER: Fri 2:43pm CET / IND: Fri 7:13pm IST / TOK: Fri 10:43pm JST / SYD: Sat 12:43am EST /
13:43 bacek ah... missed '?'
13:43 tetragon joined #parrot
13:43 darbelo Yeah, purl is smart like that.
13:44 bacek purl, are you smart?
13:44 purl bacek: bugger all, i dunno
13:44 bacek nope, she isn't
13:44 darbelo Maybe she's trying to be modest...
13:44 darbelo But I doubt it.
13:46 bacek purl, are you modest?
13:46 purl wish i knew, bacek
13:59 uniejo joined #parrot
14:19 AndyA joined #parrot
14:23 Coke purl, modesty?
14:23 purl modesty is, like, actually something I'm not very good at
14:24 nopaste "coke" at 65.91.151.194 pasted "this code generates a warning. Help?" (18 lines) at http://nopaste.snit.ch/19793
14:25 dalek rakudo/master: d588cd2 | pmichaud++ | docs/spectest-progress.csv:
14:25 dalek rakudo/master: spectest-progress.csv update: 215 files, 24575 (68.7% of 35754) pass, 1 fail
14:25 dalek rakudo/master: Failure summary:
14:25 dalek rakudo/master: S02-whitespace_and_comments/one-pass-parsing.t 1 - can parse non-backslashed curly and right bracket in cclass
14:25 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/d​588cd2b66f14ab7ae1d2188ef7194b9f5b3eb12
14:25 dalek rakudo/master: 4fc3af7 | (Solomon Foster)++ | src/core/Any-str.pm:
14:25 dalek rakudo/master: Add protos for uc, lc, ucfirst, and lcfirst.
14:25 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/4​fc3af77c3b70042dc8ad7ef6960c190f6d41f1c
14:25 bacek Coke, is it on trunk or your branch?
14:26 Coke it's the same code. warning is probably hidden on branch.
14:26 Coke but you can see the warning on branch easily.
14:26 Coke ah. wonder if it's the function prototypes.
14:26 bacek gcc probably want explicit cast from NULL
14:27 Coke also some void/char mismatches going on.
14:27 bacek may be
14:28 bacek But NULLs are definitely causing useless warnings.
14:28 Coke bacek - note that the second warning there has no nulls in it.
14:29 bacek second one is () vs (void)
14:29 bacek (afaiu)
14:29 Coke are you hacking or just diagnosing?
14:29 bacek hang on,
14:29 purl hang on, is BOFHcam Ben the same as the PFY stories Ben?
14:30 bacek second can't be () vs (void)
14:31 bacek (just diagnosing, I can't hack at 1:30am)
14:32 cognominal joined #parrot
14:33 Coke should I have to cast the NULL? really?
14:33 bacek Coke, can you try to remove SHIM around args and rerun headerizer?
14:33 bacek (NULL) "But NULLs are definitely causing useless warnings."
14:34 Coke yes, I know you said that, I'm merely incredulous.
14:35 Coke if I remove the shim, I'll get a warning about unused parameters. =-)
14:35 bacek you can put UNUSED(arg) inside function body :)
14:37 Coke fair enough. I'm at DAYJOB so cannot devote too much brainpower here. =-)
14:51 dalek parrot: r44495 | coke++ | branches/rm_cflags (15 files):
14:51 dalek parrot: merge latest changes from trunk
14:51 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44495/
14:52 Coke bacek: why would removing the SHIM() help?
14:53 Coke (because it seems to.)
14:54 nopaste "pmichaud" at 66.25.31.29 pasted "odd bug with index op" (12 lines) at http://nopaste.snit.ch/19794
14:57 Coke pmichaud: which encoding is unicode? utf8? 16?
15:02 pmichaud utf8, I believe.
15:02 pmichaud oh dear, it gets worse...
15:02 Coke hurm. trying to strip that down more, but can't.
15:03 nopaste "pmichaud" at 66.25.31.29 pasted "odd bug with index op #2, simplified" (11 lines) at http://nopaste.snit.ch/19795
15:05 Coke if you change the last buc to bu or bub, it works.
15:05 pmichaud ?
15:05 pmichaud well, yes
15:06 pmichaud because then it finds it immediately
15:06 * pmichaud files TT
15:07 Coke I'm wondering if the Parrot_str_byte_length in Parrot_str_find_index is to blame.
15:08 iblechbot joined #parrot
15:09 Coke (nope)
15:10 Coke real work done in mixed_cs_index...
15:13 dalek TT #1482 created by pmichaud++: index op failure
15:22 Coke pmichaud: I think I found the thinko.
15:23 Coke the bubuc vs buc - the buc gets us to the second b... but then the next match attempted is against 'uc', not 'ubuc'.
15:26 Coke (the search function doesn't properly reset the position in $S1.)
15:26 bubaflub joined #parrot
15:31 PerlJam Coke++
15:38 Coke woot, fixed locally.
15:38 Coke ripping out debug output, retsting...
15:38 Coke ... fencepost..
15:40 cognominal joined #parrot
15:44 PerlJam Coke: I just looked at mixed_cs_index.   Did you do something like src_iter.set_position(interp, &src_iter, start+1) before resetting start = -1 ?
15:45 Coke something like that.
15:45 Psyche^ joined #parrot
15:45 Coke (I actually used another variable to track it.)
15:45 PerlJam Seems like mixed_cs_index could use some Boyer Moore goodness too  :)
15:46 Coke no doubt.
15:48 Coke pmichaud: fixed. Thanks for the report.
15:48 PerlJam Coke++ again!
15:49 Coke this also fixes the original bug that had real unicode in it.
15:49 Coke (it now reports '2' here.)
15:50 pmichaud 2 is correct.
15:51 Coke then woot.
15:53 dukeleto 'ello
15:53 Coke 'i 'ukeleto. 'ow 're 'ou?
15:54 Coke (mine are actually glottal stops.)
15:54 * dukeleto attempts to make a klicking noise
15:55 dukeleto Coke: doing well
15:55 Coke pmichaud: was that driven by RT#73122 ?
15:56 pmichaud Coke: yes.
15:56 dalek parrot: r44496 | coke++ | trunk (2 files):
15:56 dalek parrot: Fix TT #1482
15:56 dalek parrot: a partial match on the search string would not properly reset the source
15:56 dalek parrot: string's iterator, causing a potential match further down the string to
15:56 dalek parrot: be ignored.
15:56 dalek parrot: pmichaud++ for the test.
15:56 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44496/
16:00 ruoso joined #parrot
16:02 theory joined #parrot
16:03 dalek TT #1482 closed by coke++: index op failure
16:07 cotto joined #parrot
16:07 cotto good morning non-purl
16:11 Austin Hmm..
16:12 Austin Suppose I have a test that sometimes fails, sometimes passes. I can't mark it todo, I can't mark it ok. What do I do?
16:14 mls joined #parrot
16:14 mls Coke, your mixed_cs_index patch calls set_position for every char not matched, isn't that very expensive?
16:14 mls It seems to me that doing it only when found_at != -1 would be cheaper
16:17 dukeleto Austin: does your test pass by itself but fail in the full suite, or vice versa?
16:18 dukeleto Austin: you can mark it as todo, and it will occasionally pass, which won't break your build
16:18 dukeleto Austin: but if you don't mark it as todo, it occasionally will break your build
16:18 Austin I thought that todo tests broke when they passed?
16:18 dukeleto Austin: i would go for marking todo until you figure out what is going on
16:18 dukeleto Austin: not in perl-land
16:18 Andy joined #parrot
16:19 dukeleto Austin: a passing todo test usually generates a small message like "TODO passed" or somesuch
16:19 Austin And in pir land?
16:19 dukeleto Austin: for testing purposes, parrot-land =~ perl-land
16:19 Austin The tests are a set of chi-square analyses of the randomness of the pir random range generator.
16:19 Austin Sometimes, thanks to whiteknight++, they now pass. Frequently, even.
16:20 Austin But the underlying RNG code is insufficiently random, it seems. And so they often fail, due to a lack of randomness.
16:21 Austin When I run a series of ranges, probably 10% of the tests fail. But it's not always the same 10%.
16:21 dukeleto Austin: where are these tests?
16:21 Austin See file attached to TT# 1479
16:24 Austin Okay, I marked them all as todo.
16:25 NotFound Austin: maybe just the test is too strict for the quality of the generator?
16:25 Austin NotFound: obviously true.
16:26 NotFound Austin: I mean, it hasn't an adjustable parameter that can be relaxed?
16:26 dalek rakudo/master: fad9447 | pmichaud++ | src/Perl6/Actions.pm:
16:26 dalek rakudo/master: Fix bug where < a > would improperly produce ' a ' instead of 'a' (RT #73136).
16:26 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/f​ad944704402597267790990dd343fb65e0c5e35
16:27 Austin Yes.
16:27 NotFound Then relax ;)
16:28 Austin Which is to say, "the random number generator is not very random."
16:29 NotFound Then we need to fix it instead of worrying about to hide the test failures.
16:29 dalek parrot: r44497 | Austin_Hastings++ | trunk/t/dynoplibs/random-range.t:
16:29 dalek parrot: See TT#1479
16:29 dalek parrot: Test random range generator for randomness.
16:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44497/
16:29 Austin Sure. Hence "todo"
16:33 cotto Austin++ #nice test
16:34 Austin Time to go shovel the global warming off my driveway..
16:36 dukeleto msg Austin you might want to take a look at http://en.wikipedia.org/wiki/Diehard_tests
16:36 purl Message for austin stored.
16:37 dalek nqp-rx: 0d1e1b5 | pmichaud++ |  (2 files):
16:37 dalek nqp-rx: Better handling of single-angle items with spaces (e.g., < a > becomes 'a'
16:37 dalek nqp-rx: and not ' a ').
16:37 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/0​d1e1b5f8e5ec0ee8476e82ff02e1507b47db268
16:38 Coke mls quite possibly. I'll check.
16:40 dukeleto Austin++ # very nice RNG tests
16:43 nopaste "coke" at 65.91.151.194 pasted "mls, how about this?" (21 lines) at http://nopaste.snit.ch/19796
16:44 lucian joined #parrot
16:50 mls coke: yes, looks good to me. Thanks.
16:51 pmichaud mls++  # thanks for catching that, rakudo, nqp, and pge all make heavy use of the index op
16:55 mls If it's really that time critical it would make sense to change the code so that the first character of the search string (c2) is not always fetched
16:55 pmichaud I don't think it's quite that critical.
16:55 pmichaud but it is a frequent operation
16:56 particle but premature optimization is *fun*!
16:57 * dukeleto slaps particle on the wrist
17:01 whiteknight joined #parrot
17:01 cotto_work good morning whiteknight
17:01 whiteknight top o' the mornin cotto_workl
17:02 dalek parrot: r44498 | coke++ | trunk/src/string/charset/ascii.c:
17:02 dalek parrot: Only reset the iterator when we have to.
17:02 dalek parrot: mls++ for the gedankenpatch.
17:02 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44498/
17:02 mls Btw, shouldn't index return 0 instead of -1 if the search string is empty?
17:04 whiteknight mls: no, if zero the index would be the start of the string
17:04 mls But "" is at the start of every string
17:05 mls The "strstr" manpage seems to agree (at least on linux)
17:06 patspam joined #parrot
17:07 mls (maybe a should have written "the string to be searched for is empty)
17:07 darbelo mls: strstr on the empty string should return the begining of the other string
17:08 mls strstr("foo", "") should IMHO return the beginning of "foo"
17:08 darbelo strstr(string, "") returns string, yes.
17:08 mls Parrot_str_find_index contains: if (!Parrot_str_byte_length(interp, s2)) return -1;
17:10 cotto_work how often is the randomness test expected to fail?
17:11 darbelo I wonder what would break if we removed that check...
17:11 cotto_work I'm running it a bunch and haven't seen a failure
17:12 darbelo cotto_work: would a better RNG 'fix' the test?
17:13 cotto_work afaict untotoding would "fix" it
17:14 ruoso joined #parrot
17:15 jan joined #parrot
17:15 darbelo Hm. Maybe Austin's system lacks sufficient entropy.
17:15 cotto_work That's quite possible.
17:16 darbelo I think he was running some sort of pseudovirtualized linux-on-windows thing.
17:16 whiteknight cotto_work: which randomness test?
17:16 cotto_work the recently added one, t/dynoplibs/random-range.t
17:17 darbelo whiteknight: A different one on every run. It's random, you see.
17:17 darbelo ;)
17:17 whiteknight cotto_work: let me look at it.
17:17 dukeleto cotto_work: the way/frequency that the RNG tests fail are probably OS/architecture dependent
17:17 dukeleto cotto_work: run it a 1000 times
17:22 lichtkind joined #parrot
17:23 lichtkind Coke: ping
17:24 cotto_work odd
17:24 cotto_work bash: t/dynoplibs/random-range.t: Permission denied
17:28 mikehh joined #parrot
17:31 davidfetter joined #parrot
17:35 dalek parrot: r44499 | pmichaud++ | failed to fetch changeset:
17:35 dalek parrot: [nqp-rx]:  Update nqp-rx with < ... > and root_new fixes.
17:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44499/
17:40 nopaste "mls" at 195.135.221.2 pasted "optimized mixed_cs_index code" (36 lines) at http://nopaste.snit.ch/19797
17:41 riffraff joined #parrot
17:42 mls coke: I couldn't resist and optimized index a bit. The main difference is that it calculates c2first only once. I also think it's more readable (at least to me ;-) )
17:43 dukeleto mls: are there any benchmarks that show it is faster?
17:44 Hunger joined #parrot
17:44 * dukeleto sudddenly has a bout of hunger
17:44 lichtkind dukeleto: i deleted your second page
17:45 lichtkind hope you dont mind that
17:46 mls no, I didn't benchmark it. But it should be twice as fast for complex utf-8 strings, as it decodes only one char instead of two for earch search position
17:47 NotFound I fail to understand that string pseudo-iterator design. What's the point in using a iterator and checking the length of the iterated-on things at the same time?
17:47 cotto_work mls, can you post in the form of a patch?
17:48 NotFound And worse, mixing the byte lengths and the character lengths in several functions.
17:48 dukeleto lichtkind: some use.perl person was linking to that instead
17:49 dukeleto lichtkind: could you maybe provide a "go here instead" ?
17:49 dukeleto lichtkind: it isn't that big of a deal
17:49 lichtkind dukeleto: allright there /wasare severeal such pages
18:03 payload joined #parrot
18:10 nopaste "mls" at 195.135.221.2 pasted "mixed_cs_index optimization as patch" (70 lines) at http://nopaste.snit.ch/19798
18:12 bubaflub left #parrot
18:12 bubaflub joined #parrot
18:13 nopaste "mls" at 195.135.221.2 pasted "optimized mixed_cs_index function" (39 lines) at http://nopaste.snit.ch/19799
18:13 chromatic joined #parrot
18:16 mls (Please ignore the http://nopaste.snit.ch/19797 version)
18:17 cotto_work dukeleto, how many times out of 1000 would you expect the test to fail?
18:17 darbelo A random amount ;)
18:17 cotto_work shuts up yuo
18:19 chromatic msg Whiteknight we need to add a core χ opcode, can you get on that?
18:19 purl Message for whiteknight stored.
18:19 whiteknight we need a what now?
18:19 chromatic For doing the statistical analysis of the rand op.
18:19 Coke lichtkind: pong.
18:20 darbelo 'GREEK SMALL LETTER CHI'
18:20 Coke 'INDIAN HOT TEA CHAI'
18:21 whiteknight chromatic: Sure thing, I'll just add it all...the...way...down...at...the​...end...of...my...todo...list...
18:21 lichtkind Coke: great
18:21 NotFound It wasn't SMALL?
18:22 Coke mls: that looks reasonable to me, but  my brain is at $DAYJOB right now, can you submit a patch via trac or convince someone else here? =-)
18:22 lichtkind Coke: as you may read im collecting infos what who has done for the tpf wiki, please just write me about your evolvement in most details as possible
18:22 darbelo 'GREEK CAPITAL LETTER CHI' is \u03A7
18:23 darbelo Mostly the same, just a bit diffrent.
18:24 NotFound Greek Capital isn't Athens?
18:24 cotto_work You could make a χ method on FIA.
18:26 darbelo NotFound: Not in unicode, AFAICT.
18:26 darbelo Maybe it is if you build with ICU or something.
18:26 dukeleto cotto_work: i don't know, but running something 1000 times is good if you think you have an intermitten test failure
18:27 NotFound darbelo: well, unicode is universal so maybe it doesn't care about state capitals.
18:27 cotto_work What's the capital of the universe?
18:27 NotFound Krypton?
18:27 NotFound Coruscant?
18:29 bubaflub knowing our luck, probably a super-massive black hole
18:30 NotFound Eventually.
18:31 NotFound The ideal for some politicians: no one can see what the government does from the outside.
18:32 cotto_work looks like MANIFEST needs regeneration
18:32 dalek TT #1483 created by mls++: optimization for mixed_cs_index
18:34 NotFound cotto_work: done
18:34 cotto_work NotFound++
18:40 Coke msg mls Thanks!
18:40 purl Message for mls stored.
18:41 dalek parrot: r44500 | plobsing++ | trunk/src/pmc_freeze.c:
18:41 dalek parrot: remove debugging code
18:41 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44500/
18:41 dalek parrot: r44501 | NotFound++ | trunk/MANIFEST:
18:41 dalek parrot: update MANIFEST
18:41 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44501/
18:42 cotto_work there are also some t/codingstd/trailing_space.t t/codingstd/pir_code_coda.t and t/distro/file_metadata.t failures if you're bored
18:42 cotto_work otherwise I'm sure mikehh will get them
18:52 Coke lichtkind: no, haven't heard about that.
18:54 Coke lichtkind: I can tell you that I don't think I'm on the language design team. =-)
18:55 shockwave joined #parrot
18:57 TiMBuS joined #parrot
18:57 shockwave In my programming language, I'm trying to code: object() == object() -- In this case, object() is analogous to Java's or C#'s object. My object class is a custom class. I'm overriding the is_equal vtable method. But I'm stuck at that.
18:57 shockwave What is a method to compare if two objects are the same object?
18:57 Austin_away Ask java.
18:58 Austin Use a rudimentary is_equal, and let others override it.
18:59 shockwave At first, I added a method to my object class, '%get_self', which returns the 'self' object. Then, i called the '%get_self' from the passed in object, and compared it the self of the object that is overriding is_equal. That causes infinite recursion.
19:01 shockwave Austin, your method would not work.
19:01 bubaflub cotto_work: i can fix some of those failures real quick
19:01 Austin okay
19:01 lichtkind Coke: its also about implementors, writers, all the stuff that helps
19:04 Coke the short version that's there is substantially accurate.
19:06 shockwave I suppose the way I'll have to implement that is to create an internal unique id for each object created, and compare those ids. Is it possible to have static variables in PIR?
19:07 riffraff joined #parrot
19:07 whiteknight that's a good question. Can we do static variables?
19:07 whiteknight I suspect the answer is "no", but I think it may be possible through some kind of trickery
19:08 Coke No. there are globals, though.
19:08 shockwave Coke, are those globals thread safe?
19:09 dalek rakudo/master: 459e001 | pmichaud++ | src/builtins/Parcel.pir:
19:09 dalek rakudo/master: Remove a flatten property fossil.
19:09 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/4​59e0012451e7217731e85af945f4d3bc33e98f9
19:09 Coke shockwave: I'm not sure anything in parrot is thread safe.
19:09 shockwave lol, alright.
19:09 spinclad joined #parrot
19:09 Coke (note: not a real technical answer, only a snarky one.)
19:09 Austin A global variable in a particular namespace will do what you want, static-wise.
19:11 shockwave Thanks, all.
19:12 pmichaud how about the issame opcode?
19:12 pmichaud that's the common mechanism for deciding if two PMCs are in fact the same.
19:12 shockwave pmichaud, that sounds like what I'm looking for.
19:12 shockwave I'll give it a try.
19:14 dalek parrot: r44502 | bubaflub++ | trunk/t/dynoplibs/random-range.t:
19:14 dalek parrot: [codingstd] trailing white space fix
19:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44502/
19:14 dalek parrot: r44503 | bubaflub++ | trunk/t/dynoplibs/random-range.t:
19:14 dalek parrot: [codingstd] pir coda
19:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44503/
19:14 dalek parrot: r44504 | bubaflub++ | trunk/t/dynoplibs/random-range.t:
19:14 dalek parrot: [codingstd] set svn properties
19:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44504/
19:14 shockwave pmichaud, You da man!
19:15 shockwave That worked wonderfully.
19:17 iblechbot joined #parrot
19:20 lichtkind Coke: what did you on parrot?
19:20 dalek rakudo/master: 06437e6 | pmichaud++ | t/spectest.data:
19:20 dalek rakudo/master: Comment out one-pass-parsing.t from t/spectest.data until we pass its test.
19:20 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/0​6437e64a85711ef4e32ef54640491e1f88ba621
19:20 dalek rakudo/master: 8faa503 | pmichaud++ | src/core/operators.pm:
19:20 dalek rakudo/master: Remove some unneeded pir::boxing.
19:20 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/8​faa503b2f9b7074e7c5744d37f1b6eebe9ee513
19:37 dalek rakudo/master: 0b8098e | (Solomon Foster)++ | t/spectest.data:
19:37 dalek rakudo/master: Turn on capitalize.t.
19:37 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/0​b8098e9c2328a397f478daec137f64ec16bad6a
19:38 dalek rakudo/master: b9b14f9 | (Solomon Foster)++ | src/core/Any-str.pm:
19:38 dalek rakudo/master: Slightly awkward but functional implementation of capitalize.
19:38 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/b​9b14f9d1c60c5b0dfa57e1fc15c6d6ee3d9cca3
19:43 lucian_ joined #parrot
19:43 hercynium joined #parrot
19:43 lucian__ joined #parrot
19:44 Coke just ran out of memory trying to build rakudo.
19:47 davidfetter i know those APPLE ][s are fun to work with, but maybe a different machine is in order...
19:48 cotto_work Coke, using a Parrot with the GC bug?
19:48 shockwave is object comparison agains null plan for a future release? as in: $I0 = $P1 == null ?
19:48 shockwave s/plan/planned
19:48 chromatic isnull
19:49 shockwave I know isnull exist. Thanks, though.
19:49 shockwave I'm asking specifically for the version mentioned above.
19:49 lichtkind Coke: did you write on parrot?
19:50 NotFound shockwave: do you mean pir sugar or something else?
19:50 shockwave sugar
19:50 riffraff joined #parrot
19:51 NotFound shockwave: some of us think imcc actually has too much sugar.
19:52 Coke lichtkind: yes. I've been with parrot since 2001. I don't have time now to write up a mini CV on this, but will add it to my stack for when I update my resume.
19:52 Coke cotto_work: /the/ GC bug?
19:52 Coke oh, no, this is trunk.
19:52 Coke shockwave: yes, that is NOT planned.
19:52 NotFound Coke: 2001? You wrote the HAL-9000 port?
19:53 lichtkind Coke: thanks telling would be enough i can make formating, but later is fine too
19:53 Coke lichtkind: again, "VP of parrot foundation." is fine.
19:54 lichtkind allright
19:55 Coke src/core/gen.pm is 3125 lines of perl6... no wonder it choked. =-)
19:58 ruoso joined #parrot
20:03 payload joined #parrot
20:07 joeri joined #parrot
20:21 shockwave I noticed there are operators like: istrue, isfalse, issame, isntsame. But there is no isntnull. One of those would be helpful.
20:27 hercynium joined #parrot
20:31 lichtkind dukeleto: still there?
20:31 purl there is a bug
20:36 pmichaud shockwave: there's if_null and unless_null, I believe.
20:37 pmichaud but yes, I don't recall a isntnull
20:40 dalek rakudo/master: c495888 | pmichaud++ | src/builtins/ (2 files):
20:40 dalek rakudo/master: Switch untyped variables to default to Any instead of Mu.
20:40 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/c​4958885b2591caf4bfd976f3635245d7b8d0c9f
20:40 dalek rakudo/master: 94a6c44 | pmichaud++ |  (2 files):
20:40 dalek rakudo/master: Merge branch 'master' of git@github.com:rakudo/rakudo
20:40 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/9​4a6c44df03adcdea91ea829446cb8445d32cfdd
20:41 particle isnull
20:41 particle isn't there?
20:41 purl isn't there is probably a failing test though?
20:42 cotto_work forget isn't there
20:42 purl cotto_work: I forgot isn't there
20:42 lucian joined #parrot
20:42 cotto_work now isn't there isn't there
20:43 Austin heh
20:50 shockwave pmichaud, the benefit of having a isntnull is that code like this doesn't create a special case (HLL): someObj != nil
20:50 shockwave This version: someObj == nil -- maps to one opcode.
20:50 shockwave The != version maps to many.
20:54 NotFound I was thinking about the same some days ago. isntnull may be helpful
20:54 cotto_work question: once Lorito is in place, will PIR op bloat become a non-issue?
20:55 NotFound cotto_work: I'm not sure about what will be that place.
20:56 shockwave cotto_work, I know this may be difficult to answer, but do you think there could be a Lorito version within the next 6 months?
20:57 cotto_work That really depends on how many people feel like working on the definition and implementation.
20:57 shockwave true
20:57 kurahaupo joined #parrot
20:58 NotFound cotto_work: if pbc are supposed to contain current style opcodes, is a big issue. If they will contain lorito opcodes, may become irrelevant.
20:59 cotto_work The idea is that pbc would contain Lorito ops and PIR would be translated to Lorito.
20:59 cotto_work (and nqp and close and winxed and ...)
20:59 cotto_work afk
21:00 NotFound cotto_work: in that case I don't care much about pir, if the ideas about direct code generation land.
21:00 NotFound In such sceneario pir becomes an imcc detail.
21:02 NotFound Unless, of course, code generation helpers keep using the current opcode system.
21:02 NotFound In short: everything is still open.
21:02 shockwave I don't get it. pbc's will contain Lorito code?
21:02 shockwave But, then, PBCs would not be portable.
21:03 shockwave Where is the 'Just In Time'?
21:03 shockwave I thought that PBCs would contain whatever they contain now, and they would be translated prior to execution.
21:03 plobsing_ shockwave: my understanding of the model is "Lorito Code" => "JIT" => "native code"
21:03 NotFound shockwave: no need to be less portable than the current way.
21:04 shockwave ah
21:04 NotFound Is not inconceivable a mixed way, where pbc can contain bytecode segments and loritocode segments.
21:05 shockwave So, for someone like myself (a Parrot user), Lorito code may as well be PIR opcodes?
21:05 shockwave I mean, would I have to do something different to make use of Lorito, or is it all transparent?
21:05 riffraff joined #parrot
21:06 shockwave NVM. I got lost for a second, but I'm found again.
21:07 NotFound shockwave: I think the initial idea is that you generate pir code, wich is compiled/translated in some way, but the current ideas about direct code generation can change that plan.
21:08 NotFound But the way through pir must remain open anyway.
21:08 shockwave I see.
21:09 japhb joined #parrot
21:11 dalek parrot: r44505 | plobsing++ | trunk/src (2 files):
21:11 dalek parrot: move nci thunk loading into global_setup
21:11 dalek parrot: this is necessitated by dynext nci thunk libraries (and also possibly by runtime-loadable frame builders once we get them)
21:11 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44505/
21:20 dalek kakapo: 2c8599f | austin++ | :
21:20 dalek kakapo: review: http://gitorious.org/kakapo/kakapo/commit​/2c8599ff6c845944c31582d4afb2f3de98beaadf
21:20 dalek kakapo: 4bb7a2e | austin++ |  (18 files):
21:20 dalek kakapo: Refactored Program->Library
21:20 dalek kakapo: Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
21:20 dalek kakapo: review: http://gitorious.org/kakapo/kakapo/commit​/4bb7a2e9e7af748fa8341bcf43c0628570ef3e43
21:21 shockwave Although I'm only about 10-15 percent through code generation, it seems like, by far, the most difficult aspect of it is breaking complex expressions into the proper sequence.
21:28 NotFound shockwave: that depends, the parser can broke it an send only simple expressions to the next steps.
21:29 shockwave NotFound, but the time of code generation, the parsing phase is long over, and so is the semantic analysis phase.
21:30 NotFound shockwave: yes, but you work with the results the parser gives.
21:30 shockwave The AST, yes.
21:30 shockwave That's what I'm refering to. Breaking up the AST of complex expressions into the proper PIR sequence is, as of now, my most challenging part.
21:32 darbelo You might want to do an intermediate transform on your AST. Lower it to a more 'PIR friendly' representation.
21:33 shockwave darbelo, that is true. It didn't occur to me to transform the AST. Currently, I'm iterating over it and spitting out code.
21:33 shockwave I'm going to look into it. Thanks.
21:34 darbelo The parrot compiler tools do just that, PAST is made of 'syntaxy' stuff and POST is a more 'opcody' representation.
21:35 shockwave darbelo, I'm gonna have to come up with my own version, because I'm using a custom lexer/parser/analyser/ast, written in C++.
21:37 shockwave Damn. Just the thought of it makes me sad. I already have a bunch of code written generating PIR. But, I know it's the right thing to do :(
21:37 darbelo Comparing the output of "--target=past" and "--target=post" in Parrot compiler might still prove useful.
21:38 Coke (lorito) I still have yet to see a lorito plan that isn't handwaving. but it may just be that I don't understand any of it.
21:38 chromatic Which parts sound handwavey to you?
21:39 japhb joined #parrot
21:39 NotFound What's about the plan of writing a draft version via dynops?
21:40 Coke chromatic: what is the current state of the art lorito proposal that I can review ?
21:40 Coke http://trac.parrot.org/parrot/wiki/Lorito ?
21:40 darbelo NotFound: That should be easy enough. Most of the smalltalk primitives are a single line of c code.
21:41 chromatic I wrote something somewhere about a five-step plan where we use PCT/NQP to translate ops, for example, to Lorito.
21:41 cotto_work L1?
21:41 purl i heard L1 was a hypothetical language that would be used to implement PMCs and PIR-visible ops so that they could all be easily jitted. or http://irclog.perlgeek.de/p​arrot/2009-04-21#i_1083550 or http://rt.perl.org/rt3/Ticket/D​isplay.html?id=39313#txn-471982 or magical unicorns and flying puppies.
21:41 chromatic I'm also interested in working on the dynops.  I'm just not quite sure how to integrate them into the current runloop system.
21:41 Coke chromatic: ... don't we already have a way to integrate dynops into the current runloop?
21:42 Coke (magical unicorns) see, that's the lorito I remember. =-)
21:42 chromatic We do, but if we start re-implementing existing ops in terms of dynops....
21:42 NotFound Coke: I think that now magical unicorns are called iPads.
21:44 Coke chromatic: http://trac.parrot.org/parrot/wiki/L1Recap ??
21:46 chromatic That looks right, Coke.
21:47 Coke so, "next steps" ?
21:47 Coke (also, having that under l1recap if we're now calling it lorito is confusing. =-)
21:48 chromatic Next step: revive the PCT-based ops compiler.
21:48 chromatic Rewrite to NQP.  Whichever
21:48 Coke ok. what is the pct based ops compiler?
21:49 cotto_work That
21:49 cotto_work s the ops_pct branch, which will be rewritten using nqp-rx in the very near future.
21:49 Coke ... EBOOTSTRAPRECURSION.
21:50 cotto_work We can check in generated code to deal with that.
21:51 Coke ok. if reviving the PCT-based ops compiler is part of the plan, it would be nice to see a plan of which it was a part.
21:52 cotto_work True.  The plan on the wiki doesn't mention that.
21:52 cotto_work The page needs some love.
21:54 bacek joined #parrot
21:58 cotto_work Coke, can you rename a wiki page?
21:58 shockwave left #parrot
21:59 Coke no clue.
21:59 cotto_work I can't see anything, but trac is goofy sometimes.
22:00 Coke looks like the trac project is working on this as of 2-3 days ago.
22:00 Coke http://trac.edgewall.org/ticket/1106
22:04 lucian joined #parrot
22:10 mikehh joined #parrot
22:17 dalek parrot: r44506 | NotFound++ | trunk/src/pmc/oplib.pmc:
22:17 dalek parrot: method oplib.ops_by_shortname
22:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44506/
22:22 Whiteknight joined #parrot
22:22 NotFound Whiteknight: just in time. Please take a look at http://trac.parrot.org/parrot/changeset/44506/
22:25 cotto_work why not just return an empty array and simplify your code a bit?
22:26 NotFound cotto_work: just a habit, I suppose.
22:32 cotto_work NotFound, do you have some code testing that method?
22:32 Whiteknight NotFound: very nice. I contemplated something very similar to that in the past
22:32 Whiteknight inefficient implementation however. I think the oplib is setup as a skip list, so should be able to traverse it in log n time
22:32 NotFound cotto_work: In winxed. I was waiting opnions about the name before translating to pit and commiting.
22:33 NotFound Whiteknight: yes, but while in experimental stage I don't care.
22:33 Whiteknight fair enough
22:33 cotto_work Hopefully it becomes worth optimizing soon.
22:34 NotFound Opinions about the name?
22:35 Whiteknight "op_family"
22:35 Whiteknight but, not a strong opinion
22:36 NotFound I like that
22:36 cotto_work Whiteknight, have you thought about adding an API to oplib to allow new ops to be added?
22:37 Whiteknight cotto_work, yeah, I've pondered it
22:38 Whiteknight not sure how we would make it work though
22:38 Whiteknight would they be PIR-based "ops"?
22:38 Whiteknight or NCI-based "ops"?
22:38 Whiteknight or both, maybe?
22:38 Whiteknight we could certainly have a method that does the same job that loadlib does
22:39 cotto_work I was thinking in terms of Lorito, i.e. define new ops in terms of Lorito ops (but that's some time away).
22:39 Whiteknight actually, an ability to add an op with a PIR backend is quite intriguing
22:40 NotFound Wow, 73 set variants
22:42 Whiteknight oi!
22:42 cotto_work does that exclude set_returns_* and friends?
22:42 NotFound cotto_work: yes, just plain set
22:50 cotto_work One question about Lorito is how to handle INSP types.
22:53 NotFound cotto_work: with care
22:54 cotto_work I'll definitely be editing that L1Recap page tonight.
22:54 Whiteknight cotto_work: I think we're obviously going to want to provide those types preferential treatment, since most of our computations will involve them
22:56 cotto_work For a given Lorito 3-arg op foo, do we want separate code for all permutations of args similar to what we have now with PIR?
22:56 plobsing_ does a P type make sense in Lorito given that we can't treat PMCs as opaque?
22:56 cotto_work I was just thinking about that.
22:57 cotto_work PMCs may be above what Lorito cares about.
22:58 plobsing_ If we're looking to cut down on the number of ops, can we have a separate 'load-constant' op and ditch all the constant/non-constant permutations?
22:58 Whiteknight cotto_work: we don't need all permutations. Optimize for the common cases
22:59 Whiteknight plobsing_: great idea
22:59 Whiteknight load_constant_i, *_s, *_p, and *_n would be great
22:59 cotto_work Would that be worth the extra expense needed to work with constant though?
23:03 chromatic I can't imagine Lorito level one caring about const/non-const arguments.
23:06 dalek parrot: r44507 | NotFound++ | trunk (2 files):
23:06 dalek parrot: rename oplib method ops_by_shortname to op_family and add some tests
23:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44507/
23:09 kid51 joined #parrot
23:13 Whiteknight chromatic: if we're needing to fetch them from the packfile stream, we will need to care
23:13 lucian joined #parrot
23:13 Whiteknight unless we take pointers and just do pointer arithmetic
23:14 plobsing_ does Lorito have raw pointers?
23:14 chromatic Exactly.
23:19 Whiteknight A language with all the capabilties of C will be able to be translated into machine language very easily
23:20 paco joined #parrot
23:21 NotFound We may need to have a pointer to the constant segment in the context to do that.
23:25 bacek joined #parrot
23:31 paco left #parrot
23:35 bacek aloha
23:36 bacek cotto, watch out!
23:39 dalek parrot: r44508 | bacek++ | branches/ops_pct/compilers/opsc/ops/oplib.pm:
23:39 dalek parrot: Update OpLib to load num and skip file from proper location.
23:39 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44508/
23:39 dalek parrot: r44509 | bacek++ | branches/ops_pct/compilers​/opsc/t/04-oplib_BUILD.t:
23:39 dalek parrot: Update test
23:39 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44509/
23:39 dalek parrot: r44510 | bacek++ | branches/ops_pct/compilers/o​psc/t/04-oplib_parse_ops.t:
23:39 dalek parrot: Update test
23:39 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44510/
23:40 dalek parrot: r44511 | bacek++ | branches/ops_pct/compilers/opsc/ops/oplib.pm:
23:40 dalek parrot: Change load_num_file to use grammar.
23:40 purl dalek: that doesn't look right
23:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44511/
23:40 dalek parrot: r44512 | bacek++ | branches/ops_pct/compilers/opsc/ops/oplib.pm:
23:40 dalek parrot: Switch load_skip_file to use grammar
23:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44512/
23:40 dalek parrot: r44513 | bacek++ | branches/ops_pct/compilers/opsc/t/03-past.t:
23:40 dalek parrot: Update test
23:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44513/
23:40 dalek parrot: r44514 | bacek++ | branches/ops_pct/compilers/opsc/builtins.pir:
23:40 dalek parrot: Add "say" builtin
23:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/44514/
23:40 dalek rakudo/master: 4ab4b82 | pmichaud++ | src/Perl6/Actions.pm:
23:40 dalek rakudo/master: Fix subroutine lookup for &-sigiled barewords to use 'find_sub_not_null'.
23:40 dalek rakudo/master: This also means we can now refer to operators directly, as in &infix:<+>.
23:40 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/4​ab4b8240e2dd2e2c479076d173ae72515647c0e
23:43 snarkyboojum joined #parrot
23:44 ruoso joined #parrot
23:46 dalek rakudo/master: 7680ab4 | pmichaud++ | src/core/Seq.pm:
23:46 dalek rakudo/master: Since we can now refer to &infix:<cmp> directly, do that instead
23:46 dalek rakudo/master: of going through PIR to access it.
23:46 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/7​680ab459d28b13e893cf2cef8008c8a7a3e6ff0
23:54 bacek pmichaud, ping

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

Parrot | source cross referenced