|
Parrot 2.1.1 Released! | parrot.org/ | Tasks: PCC deprecations branch, HLL subclassing and MMD branch Set by moderator on 19 February 2010. |
|||
| Coke | Whiteknight: yes? | 00:00 | |
| plobsing_: IANACP. | |||
| darbelo | My brief passage through Solaris was mostly uneventful, back then when they weren't trying to dress it up as a linux distribituion. | ||
| Coke | (I am not a c programmer) | ||
| I'm just trying to straighten up the build. =-) | |||
| darbelo | Coke: And we love you for it ;) | ||
| 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/~ | ||
| Coke | Whiteknight: some linux variant on feather. | 00:04 | |
| Whiteknight | Coke: compiler? GCC? | ||
| Coke | yes. | ||
| why? | 00:05 | ||
| NotFound | char *(* func_t)()' to be 'char *(* func_t)(void)' aren't the same. | ||
| (In C) | |||
| dalek | rrot: r44482 | coke++ | branches/rm_cflags (4 files): make compilers/imcc/Rules.mak a generated file. add -Wno-unused back to the default gcc warnings; this is how it was with trunk. |
00:06 | |
| rrot: r44483 | coke++ | branches/rm_cflags (3 files): Ignore this new generated makefile file and remove it on realclean. |
|||
| NotFound | (void) takes no arguments, () takes any number of parameters. | ||
| Whiteknight | NotFound: that's not true. (...) takes any number of arguments | 00:07 | |
| () is the same as (void) | |||
| NotFound | Whiteknight: In C++ | ||
| Whiteknight | NotFound: I would love to see an example of that | 00:08 | |
| otherwise I declare BS | |||
| NotFound | Whiteknight: int main() | 00:09 | |
| purl | int main() is probably especially K&R-ish, since they were working on Unix. | ||
| plobsing_ | NotFound: r44484 should either fix parrot_nci_thunk_gen or at least cause an assertion to fail much earlier | ||
| darbelo | Whiteknight: it's a leftover from K&R C | ||
| Whiteknight | NotFound: int main() is a special case for compatibility. Doesn't work for other functions | ||
| NotFound | plobsing_: going to try | ||
| kurahaupo1 | Before C89, function params weren't declared between the brackets (so you used empty params regardless of the params). | ||
| Coke | note that this with gcc's -strict-prototypes. | 00:11 | |
| er, -Wstrict-prototypes | |||
| 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. | ||
| Whiteknight | japhb: the question could inform us later | ||
| plobsing_ | japhb: the intent is no arguments. it's in the generated nci thunks code | 00:12 | |
| darbelo | Whiteknight: nopaste.snit.ch/19785 | 00:13 | |
| That works, and won't even warn unless you pass gcc an option. | 00:14 | ||
| Whiteknight | well, I'll be damned | 00:16 | |
| plobsing_ | C tries but fails to stfu and dwim. it's nice when it works though. | 00:17 | |
| Whiteknight just lost a little bit more respect for C | 00:18 | ||
| what the hell good does it do to have a static type system in the first place? | |||
| darbelo | It's a backwards-compatibility thing. | ||
| And you bitch about *our* deprecation policy ;) | |||
| NotFound | Whiteknight: a nicely designed and written compiler will never fit the machines it was developed for. | 00:19 | |
| Whiteknight | darbelo: I'm seeing that most deprecation policies are shittackular | 00:20 | |
| NotFound | plobsing_: still fails with r44484 | ||
| plobsing_ | same way? | 00:21 | |
| NotFound | plobsing_: yeah | ||
| dalek | rrot: r44484 | plobsing++ | trunk (5 files): add PF_size_strlen() function to get the storage size of a string without having allocated the string |
00:22 | |
| plobsing_ | hmmm | ||
| rrot: r44485 | jkeenan++ | branches/rm_cflags/t/steps/auto/warnings-01.t: Delete tests which pertained to internal methods deleted within past two days. |
|||
| plobsing_ | NotFound: do files prior to pmc_nci_thunk_gen throw warnings about PackFile_unpack? | 00:23 | |
| NotFound | plobsing_: no | 00:24 | |
|
00:25
particle joined
|
|||
| NotFound | plobsing_: packfile.winxed parrot_nci_thunk_gen_pbc gives me exactly the same error. The pbc just fails to be loaded. | 00:25 | |
| 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:26 | |
| NotFound | pbc_disassemble shows some thing good, then segfaults. | 00:27 | |
| darbelo | NotFound: pbc_dissasemble often segfaults on prefectly good pbcs. | 00:28 | |
| NotFound | But it seems fully to dump the const table. | ||
| 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. | ||
| Same for pbc_dump | 00:30 | ||
| All tools agree that the pbc has some problem. | |||
| plobsing_: I don't know if there is other tool that loads bytecode inside an immediate | 00:32 | ||
| (talking about unusual) | 00:33 | ||
| plobsing_ | NotFound: I do that because it complains about data_json.pbc not being found after installation | ||
| and I don't actually need it at runtime | |||
| dalek | tracwiki: v5 | cotto++ | LoritoPrimitives | 00:34 | |
| tracwiki: add min: and max: | |||
| tracwiki: trac.parrot.org/parrot/wiki/LoritoP...ction=diff | |||
| NotFound | plobsing_: I don't discuss his usefulnes, just don't know if is a well proven way. | ||
| plobsing_ | hmmm... not sure. wfm, but maybe I should consult an imcc guru. | 00:35 | |
| Whiteknight | cotto: min and max? I doth protest | 00:36 | |
| NotFound | plobsing_: my intuition is that the packfile segments aren't merging well, and thus the wtitten pbc gets wrong values. | 00:37 | |
| The pbc_dump results looks like that. | 00:38 | ||
| plobsing_ | merging? | ||
| purl | merging is slow | ||
| dalek | rrot: r44486 | coke++ | branches/rm_cflags (19 files): merge latest changes from trunk. |
00:39 | |
| NotFound | plobsing_: the load_bytecode merging the loaded bytecode with the one being compiled. | ||
| rrot: r44487 | plobsing++ | trunk (2 files): make function prototypes default to (void) not () |
|||
| 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? | ||
| japhb | And actually, they are primitives on some processors. | ||
| 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, | ||
| plobsing_ | why don't we have a separate PF for every independantly loaded/generated piece of code? | 00:42 | |
| NotFound | plobsing_: I have wondered that sometimes. | 00:43 | |
| 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. | ||
| but that can't be all of it | 00:45 | ||
| NotFound | plobsing_: if that is the only problem, can be easily solved. | ||
| plobsing_ | NotFound: please explain how to fix that. It might fix TT 1142. | 00:46 | |
| NotFound | plobsing_: adding a list, a vector or whatever or loaded modules in the interpreter and marking it. | 00:47 | |
| Well, and the not easy part of changing imcc way o work. | |||
| And probably the packfile loader. | 00:48 | ||
| 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 | ||
| NotFound | Looking again at the dump... the pbc directory has 13 segments. | 00:50 | |
| 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' | ||
| Looks very odd. | |||
| My provisional conclusion is that loading bytecode while imcc is working mess a lot of things, | 00:53 | ||
| plobsing_ | So to get it working, I guess I'll have to refactor to do that parsing at runtime. | 00:55 | |
| NotFound | plobsing_: I think that will be faster way to get the thing working, yes. | 00:56 | |
| 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 | ||
| at least for now | |||
| Whiteknight: that's how I understand it | |||
| NotFound | Whiteknight: not very sure about what it exactly does, but when I looked at some parts looks like that. | 00:58 | |
| Maybe it just merge the directory, but that's enough to interfere with imcc already working on it. | 01:01 | ||
| 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 | ||
| chromatic | Maybe we can do the merge only after we close the packfile for further modification. | ||
| Whiteknight | chromatic: yeah, like an optimization pass that compresses the packfile | 01:06 | |
| ... among other optimizations | |||
| dalek | rrot: r44488 | plobsing++ | trunk/tools/dev/nci_thunk_gen.pir: change :anon :immediate back to global variable. imcc-- |
01:12 | |
| purl | dalek: that doesn't look right | ||
| nopaste | "coke" at 72.228.52.192 pasted "remaining warnings in rm_cflags" (16 lines) at nopaste.snit.ch/19786 | ||
| plobsing_ | NotFound: does that fix it? | 01:13 | |
| Whiteknight | I feel like there is such an amazing dearth of discussion and design information from the earlier days of Parrot | 01:25 | |
| of course, unless somebody goes digging through IRC logs, the same will probably said about this time from people later | |||
| cotto_work | There's Squaks of the Parrot. | ||
| Whiteknight | cotto_work: yes, and I've read every single one of those posts | ||
| but that was a rare gem | |||
| 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? | ||
| Whiteknight | Austin: because it knows better than you | ||
| Austin | Hmm.. I want to believe that, I really do. But now I have no methods.. :( | ||
| Hmm.. I want to believe that, I really do. But now I have no methods.. :( | 01:27 | ||
| ww | |||
| Huh! It really is a different namespace. | 01:28 | ||
| Whiteknight | Austin: what do you mean, "replacing my namespace"? | ||
| Austin | I do P6metaclass.register('Key'); | ||
| The address of the namespace object returned by get_hll_namespace 'Key' is ...96 before I call register, and ...60 after. | |||
| After the register, dumping the namespace shows no methods. Before the register, there were like 20. | 01:29 | ||
| pmichaud | afaik p6object doesn't do any replacing of namespaces | 01:30 | |
| it must be something happening beneath p6object | |||
| Austin | Sure, blame the internals... | 01:31 | |
| pmichaud | sure, why not? ;-) | ||
| Austin | I think the big effect is causing a proxy to be created, or something, yes? | ||
| cxreg tries to build parrot for webos | |||
| 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. | ||
| 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. | ||
| Austin | Well, there was something there - I put a bunch of methods into it. | ||
| pmichaud | via .namespace ['Key'] and :method ? | 01:36 | |
| Austin | via module Key; our method new ... | ||
| pmichaud | oh, from nqp? | ||
| Austin | Natch. Almost everything I'm doing (for Kakapo, at least) is in NQP. | 01:37 | |
| Except for a couple of dozen lines of pir to get :main and friends. | |||
| pmichaud | guess I'd need to see the code | 01:38 | |
| nopaste | "Austin" at 68.37.46.53 pasted "output showing namespace change" (54 lines) at nopaste.snit.ch/19787 | 01:42 | |
| "Austin" at 68.37.46.53 pasted "code registering Key" (25 lines) at nopaste.snit.ch/19788 | |||
| 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:43 | |
| pmichaud | okay, testing. | 01:45 | |
| purl | testing is the best thing ever ZOMG | ||
| Coke | does src/main.c:480 /need/ a cast? if I remove the cast, warning goes away. does that look right? | 01:46 | |
| cxreg: ... trouble building parrot? | 01:47 | ||
| pmichaud | Austin: how/where is Parrot::get_hll_namespace defined? | ||
| chromatic | Coke, if that's the anonymous enum warning, the C++ build needs it. | ||
| particle | coke: it may ... chromatic++ | 01:48 | |
| Austin | gitorious.org/kakapo/kakapo/blobs/m...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 nopaste.snit.ch/19789 | ||
| Coke | chromatic: it is. wonder if I can shut up gcc. | 01:50 | |
| chromatic | Without a switch statement? I doubt it. | 01:51 | |
| 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 ... | ||
| pmichaud | (which makes me suspicious of key_(), fwiw) | ||
| my nopaste shows that register isn't having any effect | 01:54 | ||
| Austin | Yeah. | ||
| pmichaud | try the form of dump that I used via Q:PIR | ||
| Austin | I'm doing that now. | ||
| nopaste | "Austin" at 68.37.46.53 pasted "Things got worse." (58 lines) at nopaste.snit.ch/19790 | 01:57 | |
| Coke is annoyed that the build isn't going to be warnings clean. :P | |||
| Whiteknight | Coke: We'll fix those warnings over time | 02:00 | |
| Coke: what warnings specifically? I can probably get them to shut up | |||
| pmichaud | Austin: "VAR1" => null | 02:04 | |
| where is that coming from? | |||
| Austin | That's the second pir -based dump | ||
| (get_hll_namespace ['Key'] | |||
| ) | 02:05 | ||
| pmichaud | what type is $pmc_type ? | ||
| Austin | string | ||
| pmichaud | ...are you sure? ;-) | ||
| Whiteknight | Coke: warning fixed | ||
| Austin | No. | ||
| How do I use sprintf opcode? | |||
| $S0 = sprintf "%X", $P1 | 02:06 | ||
| doesn't seem to work | |||
| pmichaud | just try say(pir::typeof__SP($pmc_type)); | ||
| or even say(pir::typeof__PP($pmc_type)); | |||
| Austin | I'm running that now. | 02:07 | |
| Whiteknight | r44489 | ||
| Austin | Okay. | ||
| How do I use sprintf opcode? | |||
| pmichaud | it wants a format and an aggregate (like an array) | ||
| Austin | Ahh. | ||
| Aggregate. | |||
| purl | aggregate is array or hash. | ||
| pmichaud | in nqp, I suspect one can do pir::sprintf__SSP($fmt, [$values, $to, $print]); | ||
| Austin | Aggregate. | ||
| purl | aggregate is array or hash. | ||
| Austin | ww | 02:08 | |
| pmichaud | you might also try forcing $pmc_type to a string: P6metaclass.register(~$pmc_type); | ||
| Whiteknight | the cyclomatic complexity of that parseflags function is mind-bogglingly high | ||
| Austin | Yeah, I was just looking at that. | ||
| chromatic | Welcome to Getoptsville, population The Damned. | ||
| Austin | It's saying String. | 02:09 | |
| But now I don't believe it. | |||
| Whiteknight | I don't even know of any good programs to calculate the complexity of C source | ||
| Austin | Because I had a hash problem with this thing earlier. | ||
| pmichaud | it might be that .register(...) has trouble if passed a String PMC | ||
| pmichaud tries that | 02:10 | ||
| japhb | Whiteknight, what complexity measure are you looking for? | ||
| pmichaud | no, works for me with a String PMC | ||
| Whiteknight | japhb: cyclomatic complexity, mostly | ||
| but any complexity measuring tool would be nice | |||
| Austin | No change when I '' ~ $pmc_type | ||
| pmichaud | Austin: very strange. it's working just fine here. | 02:11 | |
| Austin | :-$ | ||
| Coke | Whiteknight: thanks for that fix. | 02:12 | |
| however. now it's complaining under g++: | |||
| Whiteknight | really? damnit | ||
| pmichaud | oh, don't do '' ~ $pmctype | ||
| Whiteknight | let me take a gander | ||
| pmichaud | just ~$pmc_type | ||
| Austin | Why not? | ||
| 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*)': | ||
| Austin | Okay. | ||
| Coke | src/main.c:440: warning: cast from type 'char**' to type 'const char**' casts away constness | ||
| Austin | I tried that, too, but neither one changed anything. | ||
| :( | |||
| Whiteknight | Coke: okay, that's a different line. I'll fix that too | ||
| pmichaud | Austin: I'm stumped, then. | ||
| Austin: is it only Key where it's losing the namespace? | 02:14 | ||
| Austin | It seems that way. | ||
| 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. | ||
| Aha! | 02:16 | ||
| I'm registering it twice. | |||
| pmichaud | hmmm, maybe .register should detect that :-S | 02:17 | |
| Austin | It does for normal classes. | ||
| Maybe not for PMC types? | |||
| dalek | rrot: r44489 | whiteknight++ | trunk/src/main.c: 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. |
||
| Austin | Yeah, it's upgefucht after the second register. | 02:19 | |
| brb | |||
| Whiteknight | Coke: fixed. r44490 | 02:21 | |
| like a goddamned sniper | 02:22 | ||
| japhb | Whiteknight, www.chris-lott.org/resources/cmetrics/ | 02:23 | |
| Austin | pmichaud++ Thanks for the help. (Ticket coming.) | 02:24 | |
| Coke | Whiteknight++ | ||
| pmichaud | Austin: sure thing -- glad to "help" :) | 02:25 | |
| Austin | TT#1481 | ||
| Now to go rip all that diagnostic code out. | 02:26 | ||
| Whiteknight | Coke: any other warnings you need to have killed? | ||
| 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
|
|||
| dalek | tracwiki: v48 | cotto++ | ParrotQuotes | 02:31 | |
| tracwiki: whiteknight takes things a bit too far | |||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff | |||
| TT #1481 created by Austin_Hastings++: P6metaclass.register does not catch second registration of PMC Class | 02:33 | ||
| rrot: r44490 | whiteknight++ | trunk/src/main.c: 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 | ||
| 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 | ||
| cotto | They do seem a little odd. | 02:38 | |
| Whiteknight | now, I don't know how squeak uses them, maybe they are an integral part of their internal algorithms | 02:39 | |
| but they aren't important for Parrot | |||
| Anyway, I'm out for the night. Later. | 02:40 | ||
| cotto | The squeak VM ops seem strangely bloated for a minimal set. | 02:52 | |
| cotto wanders off to the next thing | |||
| 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:53 | |
| 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. | ||
| Wow. Here's me trying to get back to the one trivial test case I started this whole adventure with... | 02:55 | ||
| japhb | Sometimes it can be hard to push through the crowd of newly shaved yaks .... | 02:57 | |
| Austin | heh | ||
| dalek | tracwiki: v6 | cotto++ | LoritoPrimitives | 03:04 | |
| tracwiki: fill in some more descriptions, remove Lorito name field | |||
| tracwiki: trac.parrot.org/parrot/wiki/LoritoP...ction=diff | |||
|
03:35
janus joined
|
|||
| cxreg | Coke: yeah, i tried both setting CC and --cc but it still defaults to /usr/bin/cc | 03:49 | |
| it might be scratchbox's fault, but i'm not sure | |||
| dalek | kudo/master: 8df8ad7 | (Solomon Foster)++ | src/core/Any-str.pm: Try to handle the .substr cases where $start is outside the length of the string. |
03:55 | |
| kudo/master: 403afe0 | (Solomon Foster)++ | t/spectest.data: Turn on substr.t. |
|||
| rrot: r44491 | plobsing++ | branches/tt1477: creating branch to attempt solution to TT 1477 |
|||
|
04:02
estrabd joined
05:22
silug_ joined
05:25
kthakore joined
06:07
Khisanth joined
06:29
iblechbot joined
|
|||
| cotto | bacek_at_work, it looks like some files are missing from opsc | 06:44 | |
|
06:57
uniejo joined
|
|||
| cotto | Interesting. The fifth entry when searching for git-svn is one of our Trac wiki pages. | 07:10 | |
| must be because it's awesome | 07:12 | ||
|
07:16
parthm joined
07:37
chromatic joined
07:53
parthm left
08:21
mikehh joined
08:35
fperrad joined
08:39
jan joined
|
|||
| fperrad | ttbot ? | 09:10 | |
| purl | ttbot is TapTinder build bot owned by mj41 and reporting tt.ro.vutbr.cz/buildstatus/pr-Parrot/rp-trunk build errors. or a master of timing. | ||
|
09:12
AndyA joined
|
|||
| dalek | rrot: r44492 | mikehh++ | trunk/src/packfile/pf_items.c: correct C function docs |
09:23 | |
|
09:47
kthakore_mp joined
|
|||
| kthakore_mp | hi | 09:47 | |
| purl | hey, kthakore_mp. | ||
|
09:51
kthakore_mp left
09:53
bacek joined
10:03
lucian joined
10:22
barney joined
|
|||
| dalek | rrot: r44493 | bacek++ | branches/ops_pct/compilers/opsc/t/02-parse-all-ops.t: Update test |
10:28 | |
| rrot: r44494 | bacek++ | branches/ops_pct/compilers/opsc/compiler/compiler.pm: Add missing compiler.pm. cotto++ |
|||
|
10:35
lucian joined
11:56
ruoso joined
|
|||
| 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 | |
| forgot to post that | |||
|
12:07
PacoLinux joined
12:10
parthm joined
12:20
Whiteknight joined
|
|||
| Whiteknight | good morning #parrot | 12:29 | |
|
12:36
ruoso joined
|
|||
| Austin | Mmm...xkcd.org | 12:37 | |
| lorito? | |||
| purl | it has been said that lorito is "little parrot" in spanish or examples/embed/lorito.c | ||
|
12:38
darbelo joined
|
|||
| Austin | purl, lorito is also xkcd.org/707/ | 12:38 | |
| purl | okay, Austin. | ||
| Austin | botsnack | ||
| purl | :) | ||
| Austin | lorito? | ||
| purl | lorito is "little parrot" in spanish or examples/embed/lorito.c or xkcd.org/707/ | ||
|
12:40
parthm left
12:45
parthm joined
|
|||
| 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:03 | |
|
13:13
payload joined
|
|||
| Coke wonders where everyone is today. | 13:25 | ||
|
13:27
bacek joined
|
|||
| 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 | |
|
13:30
lichtkind joined
|
|||
| Whiteknight | Coke: we're all here | 13:33 | |
| darbelo | Except me, I'm over there. | 13:35 | |
| bacek | And me. I'm in other hemisphere. | 13:36 | |
| 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? ) |
||
| bacek | Coke, nope. It's Saturday already. | 13:40 | |
| clock | |||
| darbelo | Lucky bastard. | ||
|
13:41
parthm left
|
|||
| darbelo | It's not even *noon* here. | 13:41 | |
| bacek | Hey! Your Friday night ahead! And mine is passed already... | 13:42 | |
.oO( Where is our annoying girl? ) |
|||
| darbelo | purl: You alive? | ||
| purl | darbelo: wish i knew | ||
| 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 / | ||
| bacek | ah... missed '?' | ||
|
13:43
tetragon joined
|
|||
| darbelo | Yeah, purl is smart like that. | 13:43 | |
| bacek | purl, are you smart? | 13:44 | |
| purl | bacek: bugger all, i dunno | ||
| bacek | nope, she isn't | ||
| darbelo | Maybe she's trying to be modest... | ||
| But I doubt it. | |||
| bacek | purl, are you modest? | 13:46 | |
| purl | wish i knew, bacek | ||
|
13:59
uniejo joined
14:19
AndyA joined
|
|||
| Coke | purl, modesty? | 14:23 | |
| purl | modesty is, like, actually something I'm not very good at | ||
| nopaste | "coke" at 65.91.151.194 pasted "this code generates a warning. Help?" (18 lines) at nopaste.snit.ch/19793 | 14:24 | |
| dalek | kudo/master: d588cd2 | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 215 files, 24575 (68.7% of 35754) pass, 1 fail S02-whitespace_and_comments/one-pass-parsing.t 1 - can parse non-backslashed curly and right bracket in cclass |
14:25 | |
| kudo/master: 4fc3af7 | (Solomon Foster)++ | src/core/Any-str.pm: Add protos for uc, lc, ucfirst, and lcfirst. |
|||
| bacek | Coke, is it on trunk or your branch? | ||
| Coke | it's the same code. warning is probably hidden on branch. | 14:26 | |
| but you can see the warning on branch easily. | |||
| ah. wonder if it's the function prototypes. | |||
| bacek | gcc probably want explicit cast from NULL | ||
| Coke | also some void/char mismatches going on. | 14:27 | |
| bacek | may be | ||
| But NULLs are definitely causing useless warnings. | 14:28 | ||
| Coke | bacek - note that the second warning there has no nulls in it. | ||
| bacek | second one is () vs (void) | 14:29 | |
| (afaiu) | |||
| Coke | are you hacking or just diagnosing? | ||
| bacek | hang on, | ||
| purl | hang on, is BOFHcam Ben the same as the PFY stories Ben? | ||
| bacek | second can't be () vs (void) | 14:30 | |
| (just diagnosing, I can't hack at 1:30am) | 14:31 | ||
|
14:32
cognominal joined
|
|||
| Coke | should I have to cast the NULL? really? | 14:33 | |
| bacek | Coke, can you try to remove SHIM around args and rerun headerizer? | ||
| (NULL) "But NULLs are definitely causing useless warnings." | |||
| Coke | yes, I know you said that, I'm merely incredulous. | 14:34 | |
| if I remove the shim, I'll get a warning about unused parameters. =-) | 14:35 | ||
| bacek | you can put UNUSED(arg) inside function body :) | ||
| Coke | fair enough. I'm at DAYJOB so cannot devote too much brainpower here. =-) | 14:37 | |
| dalek | rrot: r44495 | coke++ | branches/rm_cflags (15 files): merge latest changes from trunk |
14:51 | |
| Coke | bacek: why would removing the SHIM() help? | 14:52 | |
| (because it seems to.) | 14:53 | ||
| nopaste | "pmichaud" at 66.25.31.29 pasted "odd bug with index op" (12 lines) at nopaste.snit.ch/19794 | 14:54 | |
| Coke | pmichaud: which encoding is unicode? utf8? 16? | 14:57 | |
| pmichaud | utf8, I believe. | 15:02 | |
| oh dear, it gets worse... | |||
| Coke | hurm. trying to strip that down more, but can't. | ||
| nopaste | "pmichaud" at 66.25.31.29 pasted "odd bug with index op #2, simplified" (11 lines) at nopaste.snit.ch/19795 | 15:03 | |
| Coke | if you change the last buc to bu or bub, it works. | 15:05 | |
| pmichaud | ? | ||
| well, yes | |||
| because then it finds it immediately | 15:06 | ||
| pmichaud files TT | |||
| Coke | I'm wondering if the Parrot_str_byte_length in Parrot_str_find_index is to blame. | 15:07 | |
|
15:08
iblechbot joined
|
|||
| Coke | (nope) | 15:09 | |
| real work done in mixed_cs_index... | 15:10 | ||
| dalek | TT #1482 created by pmichaud++: index op failure | 15:13 | |
| Coke | pmichaud: I think I found the thinko. | 15:22 | |
| the bubuc vs buc - the buc gets us to the second b... but then the next match attempted is against 'uc', not 'ubuc'. | 15:23 | ||
| (the search function doesn't properly reset the position in $S1.) | 15:26 | ||
|
15:26
bubaflub joined
|
|||
| PerlJam | Coke++ | 15:31 | |
| Coke | woot, fixed locally. | 15:38 | |
| ripping out debug output, retsting... | |||
| ... fencepost.. | |||
|
15:40
cognominal joined
|
|||
| 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:44 | |
| Coke | something like that. | 15:45 | |
|
15:45
Psyche^ joined
|
|||
| Coke | (I actually used another variable to track it.) | 15:45 | |
| PerlJam | Seems like mixed_cs_index could use some Boyer Moore goodness too :) | ||
| Coke | no doubt. | 15:46 | |
| pmichaud: fixed. Thanks for the report. | 15:48 | ||
| PerlJam | Coke++ again! | ||
| Coke | this also fixes the original bug that had real unicode in it. | 15:49 | |
| (it now reports '2' here.) | |||
| pmichaud | 2 is correct. | 15:50 | |
| Coke | then woot. | 15:51 | |
| dukeleto | 'ello | 15:53 | |
| Coke | 'i 'ukeleto. 'ow 're 'ou? | ||
| (mine are actually glottal stops.) | 15:54 | ||
| dukeleto attempts to make a klicking noise | |||
| Coke: doing well | 15:55 | ||
| Coke | pmichaud: was that driven by RT#73122 ? | ||
| pmichaud | Coke: yes. | 15:56 | |
| dalek | rrot: r44496 | coke++ | trunk (2 files): Fix TT #1482 string's iterator, causing a potential match further down the string to be ignored. pmichaud++ for the test. |
||
|
16:00
ruoso joined
16:02
theory joined
|
|||
| dalek | TT #1482 closed by coke++: index op failure | 16:03 | |
|
16:07
cotto joined
|
|||
| cotto | good morning non-purl | 16:07 | |
| Austin | Hmm.. | 16:11 | |
| 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:12 | ||
|
16:14
mls joined
|
|||
| mls | Coke, your mixed_cs_index patch calls set_position for every char not matched, isn't that very expensive? | 16:14 | |
| It seems to me that doing it only when found_at != -1 would be cheaper | |||
| dukeleto | Austin: does your test pass by itself but fail in the full suite, or vice versa? | 16:17 | |
| Austin: you can mark it as todo, and it will occasionally pass, which won't break your build | 16:18 | ||
| Austin: but if you don't mark it as todo, it occasionally will break your build | |||
| Austin | I thought that todo tests broke when they passed? | ||
| dukeleto | Austin: i would go for marking todo until you figure out what is going on | ||
| Austin: not in perl-land | |||
|
16:18
Andy joined
|
|||
| dukeleto | Austin: a passing todo test usually generates a small message like "TODO passed" or somesuch | 16:19 | |
| Austin | And in pir land? | ||
| dukeleto | Austin: for testing purposes, parrot-land =~ perl-land | ||
| Austin | The tests are a set of chi-square analyses of the randomness of the pir random range generator. | ||
| Sometimes, thanks to whiteknight++, they now pass. Frequently, even. | |||
| But the underlying RNG code is insufficiently random, it seems. And so they often fail, due to a lack of randomness. | 16:20 | ||
| 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? | ||
| Austin | See file attached to TT# 1479 | ||
| Okay, I marked them all as todo. | 16:24 | ||
| NotFound | Austin: maybe just the test is too strict for the quality of the generator? | 16:25 | |
| Austin | NotFound: obviously true. | ||
| NotFound | Austin: I mean, it hasn't an adjustable parameter that can be relaxed? | 16:26 | |
| dalek | kudo/master: fad9447 | pmichaud++ | src/Perl6/Actions.pm: Fix bug where < a > would improperly produce ' a ' instead of 'a' (RT #73136). |
||
| Austin | Yes. | 16:27 | |
| NotFound | Then relax ;) | ||
| Austin | Which is to say, "the random number generator is not very random." | 16:28 | |
| NotFound | Then we need to fix it instead of worrying about to hide the test failures. | 16:29 | |
| dalek | rrot: r44497 | Austin_Hastings++ | trunk/t/dynoplibs/random-range.t: See TT#1479 |
||
| Austin | Sure. Hence "todo" | ||
| cotto | Austin++ #nice test | 16:33 | |
| Austin | Time to go shovel the global warming off my driveway.. | 16:34 | |
| dukeleto | msg Austin you might want to take a look at en.wikipedia.org/wiki/Diehard_tests | 16:36 | |
| purl | Message for austin stored. | ||
| dalek | p-rx: 0d1e1b5 | pmichaud++ | (2 files): Better handling of single-angle items with spaces (e.g., < a > becomes 'a' |
16:37 | |
| Coke | mls quite possibly. I'll check. | 16:38 | |
| dukeleto | Austin++ # very nice RNG tests | 16:40 | |
| nopaste | "coke" at 65.91.151.194 pasted "mls, how about this?" (21 lines) at nopaste.snit.ch/19796 | 16:43 | |
|
16:44
lucian joined
|
|||
| mls | coke: yes, looks good to me. Thanks. | 16:50 | |
| pmichaud | mls++ # thanks for catching that, rakudo, nqp, and pge all make heavy use of the index op | 16:51 | |
| 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. | ||
| but it is a frequent operation | |||
| particle | but premature optimization is *fun*! | 16:56 | |
| dukeleto slaps particle on the wrist | 16:57 | ||
|
17:01
whiteknight joined
|
|||
| cotto_work | good morning whiteknight | 17:01 | |
| whiteknight | top o' the mornin cotto_workl | ||
| dalek | rrot: r44498 | coke++ | trunk/src/string/charset/ascii.c: Only reset the iterator when we have to. |
17:02 | |
| mls | Btw, shouldn't index return 0 instead of -1 if the search string is empty? | ||
| 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 | ||
| The "strstr" manpage seems to agree (at least on linux) | 17:05 | ||
|
17:06
patspam joined
|
|||
| 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 | ||
| mls | strstr("foo", "") should IMHO return the beginning of "foo" | 17:08 | |
| darbelo | strstr(string, "") returns string, yes. | ||
| mls | Parrot_str_find_index contains: if (!Parrot_str_byte_length(interp, s2)) return -1; | ||
| cotto_work | how often is the randomness test expected to fail? | 17:10 | |
| 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 | ||
| darbelo | cotto_work: would a better RNG 'fix' the test? | 17:12 | |
| cotto_work | afaict untotoding would "fix" it | 17:13 | |
|
17:14
ruoso joined
17:15
jan joined
|
|||
| darbelo | Hm. Maybe Austin's system lacks sufficient entropy. | 17:15 | |
| cotto_work | That's quite possible. | ||
| darbelo | I think he was running some sort of pseudovirtualized linux-on-windows thing. | 17:16 | |
| whiteknight | cotto_work: which randomness test? | ||
| cotto_work | the recently added one, t/dynoplibs/random-range.t | ||
| darbelo | whiteknight: A different one on every run. It's random, you see. | 17:17 | |
| ;) | |||
| whiteknight | cotto_work: let me look at it. | ||
| dukeleto | cotto_work: the way/frequency that the RNG tests fail are probably OS/architecture dependent | ||
| cotto_work: run it a 1000 times | |||
|
17:22
lichtkind joined
|
|||
| lichtkind | Coke: ping | 17:23 | |
| cotto_work | odd | 17:24 | |
| bash: t/dynoplibs/random-range.t: Permission denied | |||
|
17:28
mikehh joined
17:31
davidfetter joined
|
|||
| dalek | rrot: r44499 | pmichaud++ | failed to fetch changeset: [nqp-rx]: Update nqp-rx with < ... > and root_new fixes. |
17:35 | |
| nopaste | "mls" at 195.135.221.2 pasted "optimized mixed_cs_index code" (36 lines) at nopaste.snit.ch/19797 | 17:40 | |
|
17:41
riffraff joined
|
|||
| 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:42 | |
| dukeleto | mls: are there any benchmarks that show it is faster? | 17:43 | |
|
17:44
Hunger joined
|
|||
| dukeleto sudddenly has a bout of hunger | 17:44 | ||
| lichtkind | dukeleto: i deleted your second page | ||
| hope you dont mind that | 17:45 | ||
| 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:46 | |
| 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? | ||
| 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 | ||
| lichtkind: could you maybe provide a "go here instead" ? | 17:49 | ||
| lichtkind: it isn't that big of a deal | |||
| lichtkind | dukeleto: allright there /wasare severeal such pages | ||
|
18:03
payload joined
|
|||
| nopaste | "mls" at 195.135.221.2 pasted "mixed_cs_index optimization as patch" (70 lines) at nopaste.snit.ch/19798 | 18:10 | |
|
18:12
bubaflub left,
bubaflub joined
|
|||
| nopaste | "mls" at 195.135.221.2 pasted "optimized mixed_cs_index function" (39 lines) at nopaste.snit.ch/19799 | 18:13 | |
|
18:13
chromatic joined
|
|||
| mls | (Please ignore the nopaste.snit.ch/19797 version) | 18:16 | |
| cotto_work | dukeleto, how many times out of 1000 would you expect the test to fail? | 18:17 | |
| darbelo | A random amount ;) | ||
| cotto_work | shuts up yuo | ||
| chromatic | msg Whiteknight we need to add a core Ļ opcode, can you get on that? | 18:19 | |
| purl | Message for whiteknight stored. | ||
| whiteknight | we need a what now? | ||
| chromatic | For doing the statistical analysis of the rand op. | ||
| Coke | lichtkind: pong. | ||
| darbelo | 'GREEK SMALL LETTER CHI' | 18:20 | |
| Coke | 'INDIAN HOT TEA CHAI' | ||
| 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 | ||
| NotFound | It wasn't SMALL? | ||
| 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 | ||
| darbelo | 'GREEK CAPITAL LETTER CHI' is \\u03A7 | ||
| Mostly the same, just a bit diffrent. | 18:23 | ||
| NotFound | Greek Capital isn't Athens? | 18:24 | |
| cotto_work | You could make a Ļ method on FIA. | ||
| darbelo | NotFound: Not in unicode, AFAICT. | 18:26 | |
| Maybe it is if you build with ICU or something. | |||
| dukeleto | cotto_work: i don't know, but running something 1000 times is good if you think you have an intermitten test failure | ||
| 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? | ||
| NotFound | Krypton? | ||
| Coruscant? | |||
| bubaflub | knowing our luck, probably a super-massive black hole | 18:29 | |
| NotFound | Eventually. | 18:30 | |
| The ideal for some politicians: no one can see what the government does from the outside. | 18:31 | ||
| cotto_work | looks like MANIFEST needs regeneration | 18:32 | |
| dalek | TT #1483 created by mls++: optimization for mixed_cs_index | ||
| NotFound | cotto_work: done | 18:34 | |
| cotto_work | NotFound++ | ||
| Coke | msg mls Thanks! | 18:40 | |
| purl | Message for mls stored. | ||
| dalek | rrot: r44500 | plobsing++ | trunk/src/pmc_freeze.c: remove debugging code |
18:41 | |
| rrot: r44501 | NotFound++ | trunk/MANIFEST: update MANIFEST |
|||
| 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 | |
| otherwise I'm sure mikehh will get them | |||
| Coke | lichtkind: no, haven't heard about that. | 18:52 | |
| lichtkind: I can tell you that I don't think I'm on the language design team. =-) | 18:54 | ||
|
18:55
shockwave joined
18:57
TiMBuS joined
|
|||
| 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 | |
| What is a method to compare if two objects are the same object? | |||
| Austin_away | Ask java. | ||
| Austin | Use a rudimentary is_equal, and let others override it. | 18:58 | |
| 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. | 18:59 | |
| Austin, your method would not work. | 19:01 | ||
| bubaflub | cotto_work: i can fix some of those failures real quick | ||
| Austin | okay | ||
| lichtkind | Coke: its also about implementors, writers, all the stuff that helps | ||
| Coke | the short version that's there is substantially accurate. | 19:04 | |
| 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:06 | |
|
19:07
riffraff joined
|
|||
| whiteknight | that's a good question. Can we do static variables? | 19:07 | |
| I suspect the answer is "no", but I think it may be possible through some kind of trickery | |||
| Coke | No. there are globals, though. | 19:08 | |
| shockwave | Coke, are those globals thread safe? | ||
| dalek | kudo/master: 459e001 | pmichaud++ | src/builtins/Parcel.pir: Remove a flatten property fossil. |
19:09 | |
| Coke | shockwave: I'm not sure anything in parrot is thread safe. | ||
| shockwave | lol, alright. | ||
|
19:09
spinclad joined
|
|||
| 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. | ||
| shockwave | Thanks, all. | 19:11 | |
| pmichaud | how about the issame opcode? | 19:12 | |
| that's the common mechanism for deciding if two PMCs are in fact the same. | |||
| shockwave | pmichaud, that sounds like what I'm looking for. | ||
| I'll give it a try. | |||
| dalek | rrot: r44502 | bubaflub++ | trunk/t/dynoplibs/random-range.t: [codingstd] trailing white space fix |
19:14 | |
| rrot: r44503 | bubaflub++ | trunk/t/dynoplibs/random-range.t: [codingstd] pir coda |
|||
| rrot: r44504 | bubaflub++ | trunk/t/dynoplibs/random-range.t: [codingstd] set svn properties |
|||
| shockwave | pmichaud, You da man! | ||
| That worked wonderfully. | 19:15 | ||
|
19:17
iblechbot joined
|
|||
| lichtkind | Coke: what did you on parrot? | 19:20 | |
| dalek | kudo/master: 06437e6 | pmichaud++ | t/spectest.data: Comment out one-pass-parsing.t from t/spectest.data until we pass its test. |
||
| kudo/master: 8faa503 | pmichaud++ | src/core/operators.pm: Remove some unneeded pir::boxing. |
|||
| kudo/master: 0b8098e | (Solomon Foster)++ | t/spectest.data: Turn on capitalize.t. |
19:37 | ||
| kudo/master: b9b14f9 | (Solomon Foster)++ | src/core/Any-str.pm: Slightly awkward but functional implementation of capitalize. |
19:38 | ||
|
19:43
lucian_ joined,
hercynium joined,
lucian__ joined
|
|||
| Coke | just ran out of memory trying to build rakudo. | 19:44 | |
| davidfetter | i know those APPLE ][s are fun to work with, but maybe a different machine is in order... | 19:47 | |
| 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 ? | ||
| s/plan/planned | |||
| chromatic | isnull | ||
| shockwave | I know isnull exist. Thanks, though. | 19:49 | |
| I'm asking specifically for the version mentioned above. | |||
| lichtkind | Coke: did you write on parrot? | ||
| NotFound | shockwave: do you mean pir sugar or something else? | 19:50 | |
| shockwave | sugar | ||
|
19:50
riffraff joined
|
|||
| NotFound | shockwave: some of us think imcc actually has too much sugar. | 19:51 | |
| 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 | |
| cotto_work: /the/ GC bug? | |||
| oh, no, this is trunk. | |||
| shockwave: yes, that is NOT planned. | |||
| NotFound | Coke: 2001? You wrote the HAL-9000 port? | ||
| 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. | ||
| lichtkind | allright | 19:54 | |
| Coke | src/core/gen.pm is 3125 lines of perl6... no wonder it choked. =-) | 19:55 | |
|
19:58
ruoso joined
20:03
payload joined
20:07
joeri joined
|
|||
| shockwave | I noticed there are operators like: istrue, isfalse, issame, isntsame. But there is no isntnull. One of those would be helpful. | 20:21 | |
|
20:27
hercynium joined
|
|||
| lichtkind | dukeleto: still there? | 20:31 | |
| purl | there is a bug | ||
| pmichaud | shockwave: there's if_null and unless_null, I believe. | 20:36 | |
| but yes, I don't recall a isntnull | 20:37 | ||
| dalek | kudo/master: c495888 | pmichaud++ | src/builtins/ (2 files): Switch untyped variables to default to Any instead of Mu. |
20:40 | |
| kudo/master: 94a6c44 | pmichaud++ | (2 files): Merge branch 'master' of git@github.com:rakudo/rakudo |
|||
| particle | isnull | 20:41 | |
| isn't there? | |||
| purl | isn't there is probably a failing test though? | ||
| cotto_work | forget isn't there | 20:42 | |
| purl | cotto_work: I forgot isn't there | ||
|
20:42
lucian joined
|
|||
| cotto_work | now isn't there isn't there | 20:42 | |
| Austin | heh | 20:43 | |
| shockwave | pmichaud, the benefit of having a isntnull is that code like this doesn't create a special case (HLL): someObj != nil | 20:50 | |
| This version: someObj == nil -- maps to one opcode. | |||
| The != version maps to many. | |||
| 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? | ||
| NotFound | cotto_work: I'm not sure about what will be that place. | 20:55 | |
| 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:56 | |
| 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
|
|||
| 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:58 | |
| cotto_work | The idea is that pbc would contain Lorito ops and PIR would be translated to Lorito. | 20:59 | |
| (and nqp and close and winxed and ...) | |||
| afk | |||
| NotFound | cotto_work: in that case I don't care much about pir, if the ideas about direct code generation land. | 21:00 | |
| In such sceneario pir becomes an imcc detail. | |||
| Unless, of course, code generation helpers keep using the current opcode system. | 21:02 | ||
| In short: everything is still open. | |||
| shockwave | I don't get it. pbc's will contain Lorito code? | ||
| But, then, PBCs would not be portable. | |||
| Where is the 'Just In Time'? | 21:03 | ||
| I thought that PBCs would contain whatever they contain now, and they would be translated prior to execution. | |||
| plobsing_ | shockwave: my understanding of the model is "Lorito Code" => "JIT" => "native code" | ||
| NotFound | shockwave: no need to be less portable than the current way. | ||
| shockwave | ah | 21:04 | |
| NotFound | Is not inconceivable a mixed way, where pbc can contain bytecode segments and loritocode segments. | ||
| shockwave | So, for someone like myself (a Parrot user), Lorito code may as well be PIR opcodes? | 21:05 | |
| I mean, would I have to do something different to make use of Lorito, or is it all transparent? | |||
|
21:05
riffraff joined
|
|||
| shockwave | NVM. I got lost for a second, but I'm found again. | 21:06 | |
| 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:07 | |
| But the way through pir must remain open anyway. | 21:08 | ||
| shockwave | I see. | ||
|
21:09
japhb joined
|
|||
| dalek | rrot: r44505 | plobsing++ | trunk/src (2 files): move nci thunk loading into global_setup |
21:11 | |
| kapo: 2c8599f | austin++ | : review: gitorious.org/kakapo/kakapo/commit/...de98beaadf |
21:20 | ||
| kapo: 4bb7a2e | austin++ | (18 files): Refactored Program->Library |
|||
| 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:21 | |
| NotFound | shockwave: that depends, the parser can broke it an send only simple expressions to the next steps. | 21:28 | |
| shockwave | NotFound, but the time of code generation, the parsing phase is long over, and so is the semantic analysis phase. | 21:29 | |
| NotFound | shockwave: yes, but you work with the results the parser gives. | 21:30 | |
| shockwave | The AST, yes. | ||
| 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. | |||
| darbelo | You might want to do an intermediate transform on your AST. Lower it to a more 'PIR friendly' representation. | 21:32 | |
| 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 | |
| I'm going to look into it. Thanks. | |||
| darbelo | The parrot compiler tools do just that, PAST is made of 'syntaxy' stuff and POST is a more 'opcody' representation. | 21:34 | |
| 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:35 | |
| 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. | ||
| 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
|
|||
| NotFound | What's about the plan of writing a draft version via dynops? | 21:39 | |
| Coke | chromatic: what is the current state of the art lorito proposal that I can review ? | 21:40 | |
| trac.parrot.org/parrot/wiki/Lorito ? | |||
| darbelo | NotFound: That should be easy enough. Most of the smalltalk primitives are a single line of c code. | ||
| 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? | ||
| 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 irclog.perlgeek.de/parrot/2009-04-21#i_1083550 or rt.perl.org/rt3/Ticket/Display.html...txn-471982 or magical unicorns and flying puppies. | ||
| 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. | ||
| Coke | chromatic: ... don't we already have a way to integrate dynops into the current runloop? | ||
| (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.... | ||
| NotFound | Coke: I think that now magical unicorns are called iPads. | ||
| Coke | chromatic: trac.parrot.org/parrot/wiki/L1Recap ?? | 21:44 | |
| chromatic | That looks right, Coke. | 21:46 | |
| Coke | so, "next steps" ? | 21:47 | |
| (also, having that under l1recap if we're now calling it lorito is confusing. =-) | |||
| chromatic | Next step: revive the PCT-based ops compiler. | 21:48 | |
| Rewrite to NQP. Whichever | |||
| Coke | ok. what is the pct based ops compiler? | ||
| cotto_work | That | 21:49 | |
| s the ops_pct branch, which will be rewritten using nqp-rx in the very near future. | |||
| Coke | ... EBOOTSTRAPRECURSION. | ||
| cotto_work | We can check in generated code to deal with that. | 21:50 | |
| 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:51 | |
| cotto_work | True. The plan on the wiki doesn't mention that. | 21:52 | |
| The page needs some love. | |||
|
21:54
bacek joined
|
|||
| cotto_work | Coke, can you rename a wiki page? | 21:58 | |
|
21:58
shockwave left
|
|||
| Coke | no clue. | 21:59 | |
| cotto_work | I can't see anything, but trac is goofy sometimes. | ||
| Coke | looks like the trac project is working on this as of 2-3 days ago. | 22:00 | |
| trac.edgewall.org/ticket/1106 | |||
|
22:04
lucian joined
22:10
mikehh joined
|
|||
| dalek | rrot: r44506 | NotFound++ | trunk/src/pmc/oplib.pmc: method oplib.ops_by_shortname |
22:17 | |
|
22:22
Whiteknight joined
|
|||
| NotFound | Whiteknight: just in time. Please take a look at trac.parrot.org/parrot/changeset/44506/ | 22:22 | |
| cotto_work | why not just return an empty array and simplify your code a bit? | 22:25 | |
| NotFound | cotto_work: just a habit, I suppose. | 22:26 | |
| 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 | ||
| inefficient implementation however. I think the oplib is setup as a skip list, so should be able to traverse it in log n time | |||
| NotFound | cotto_work: In winxed. I was waiting opnions about the name before translating to pit and commiting. | ||
| Whiteknight: yes, but while in experimental stage I don't care. | 22:33 | ||
| Whiteknight | fair enough | ||
| cotto_work | Hopefully it becomes worth optimizing soon. | ||
| NotFound | Opinions about the name? | 22:34 | |
| Whiteknight | "op_family" | 22:35 | |
| but, not a strong opinion | |||
| 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? | ||
| Whiteknight | cotto_work, yeah, I've pondered it | 22:37 | |
| not sure how we would make it work though | 22:38 | ||
| would they be PIR-based "ops"? | |||
| or NCI-based "ops"? | |||
| or both, maybe? | |||
| we could certainly have a method that does the same job that loadlib does | |||
| 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 | ||
| NotFound | Wow, 73 set variants | 22:40 | |
| Whiteknight | oi! | 22:42 | |
| cotto_work | does that exclude set_returns_* and friends? | ||
| NotFound | cotto_work: yes, just plain set | ||
| cotto_work | One question about Lorito is how to handle INSP types. | 22:50 | |
| NotFound | cotto_work: with care | 22:53 | |
| 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 | ||
| 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? | ||
| cotto_work | I was just thinking about that. | ||
| PMCs may be above what Lorito cares about. | 22:57 | ||
| 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 | ||
| plobsing_: great idea | 22:59 | ||
| load_constant_i, *_s, *_p, and *_n would be great | |||
| cotto_work | Would that be worth the extra expense needed to work with constant though? | ||
| chromatic | I can't imagine Lorito level one caring about const/non-const arguments. | 23:03 | |
| dalek | rrot: r44507 | NotFound++ | trunk (2 files): rename oplib method ops_by_shortname to op_family and add some tests |
23:06 | |
|
23:09
kid51 joined
|
|||
| Whiteknight | chromatic: if we're needing to fetch them from the packfile stream, we will need to care | 23:13 | |
|
23:13
lucian joined
|
|||
| Whiteknight | unless we take pointers and just do pointer arithmetic | 23:13 | |
| plobsing_ | does Lorito have raw pointers? | 23:14 | |
| chromatic | Exactly. | ||
| Whiteknight | A language with all the capabilties of C will be able to be translated into machine language very easily | 23:19 | |
|
23:20
paco joined
|
|||
| NotFound | We may need to have a pointer to the constant segment in the context to do that. | 23:21 | |
|
23:25
bacek joined
23:31
paco left
|
|||
| bacek | aloha | 23:35 | |
| cotto, watch out! | 23:36 | ||
| dalek | rrot: r44508 | bacek++ | branches/ops_pct/compilers/opsc/ops/oplib.pm: Update OpLib to load num and skip file from proper location. |
23:39 | |
| rrot: r44509 | bacek++ | branches/ops_pct/compilers/opsc/t/04-oplib_BUILD.t: Update test |
|||
| rrot: r44510 | bacek++ | branches/ops_pct/compilers/opsc/t/04-oplib_parse_ops.t: Update test |
|||
| rrot: r44511 | bacek++ | branches/ops_pct/compilers/opsc/ops/oplib.pm: Change load_num_file to use grammar. |
23:40 | ||
| purl | dalek: that doesn't look right | ||
| rrot: r44512 | bacek++ | branches/ops_pct/compilers/opsc/ops/oplib.pm: Switch load_skip_file to use grammar |
|||
| rrot: r44513 | bacek++ | branches/ops_pct/compilers/opsc/t/03-past.t: Update test |
|||
| rrot: r44514 | bacek++ | branches/ops_pct/compilers/opsc/builtins.pir: Add "say" builtin |
|||
| kudo/master: 4ab4b82 | pmichaud++ | src/Perl6/Actions.pm: Fix subroutine lookup for &-sigiled barewords to use 'find_sub_not_null'. |
|||
|
23:43
snarkyboojum joined
23:44
ruoso joined
|
|||
| dalek | kudo/master: 7680ab4 | pmichaud++ | src/core/Seq.pm: Since we can now refer to &infix:<cmp> directly, do that instead |
23:46 | |
| bacek | pmichaud, ping | 23:54 | |