|
Parrot 2.7.0 "Australian King" Released! | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets; merge branches; review Git conversion plan Set by moderator on 7 September 2010. |
|||
| dukeleto | Paul_the_Greek: awesome, will keep that in mind | 00:00 | |
| Paul_the_Greek | Burn, baby, burn. | ||
|
00:00
Psyche^ joined
|
|||
| dalek | TT #1200 closed by Paul_the_Greek++: sprintf formatting for exponents needs to be standardized | 00:00 | |
| TT #1200: trac.parrot.org/parrot/ticket/1200 | |||
|
00:01
Patterner left,
Psyche^ is now known as Patterner
|
|||
| Paul_the_Greek | If I add a benchmark, do I need to register it in any file? | 00:06 | |
|
00:07
theory left
00:11
Paul_the_Greek left
|
|||
| Coke | 00:18 | ||
| cd sandbox | |||
| ww | |||
| cotto_work | error: sandbox not found | ||
| I was sure you'd left it somewhere around here. | 00:19 | ||
|
00:25
plobsing joined
|
|||
| dukeleto | aloha, msg Paul_the_Greek when you add a file, you need to run perl tools/dev/mk_manifest_and_skip.pl, which will update the MANIFEST with your new file | 00:26 | |
| aloha | dukeleto: OK. I'll deliver the message. | ||
| dukeleto | for now, anyway. | ||
| cotto_work | I'm starting a branch to rip it out when I get home. If it ends up being useful, I can always not merge. | ||
|
00:28
davidfetter left
|
|||
| dukeleto | cotto_work: best of luck. let me know how it goes | 00:28 | |
|
00:30
cognominal left
|
|||
| darbelo | Hm, I think MANIFEST is used by our install scripts to determine what they should install. | 00:35 | |
|
00:35
ascent left,
ascent joined
|
|||
| darbelo | Although it might be less relevant now that we don't care about install vs install-dev. | 00:35 | |
|
00:37
kid51 joined
|
|||
| dukeleto | kid51: how goes it? | 00:42 | |
|
00:45
cognominal joined
|
|||
| dukeleto | Finaly Summary of GSoC 2010: leto.net/dukeleto.pl/2010/09/google...mmary.html | 00:48 | |
| kid51 | dukeleto hello | 00:52 | |
| dukeleto | kid51: howdy | 00:53 | |
| dalek | rrot: r48874 | coke++ | trunk/t/op/calling.t: avoid use of deprecated method to test this feature |
00:56 | |
| Coke | I'm getting failures in 'make test' | 00:58 | |
| (and I'm not on amd64!) | |||
| MANIFEST.generated is used for the installs. | 00:59 | ||
| cotto | ~~ | ||
| Coke | (no?) | ||
| dalek | rrot-linear-algebra: 297a02f | Whiteknight++ | t/pir-subclass/nummatrix2d.t: add a stub test file for testing subclasses in NumMatrix2D. Can't use Test::More here for some reason, so brewing my own |
01:00 | |
| rrot-linear-algebra: 2c8ae58 | Whiteknight++ | t/pir-subclass/nummatrix2d.t: flesh out the nummatrix2d subclass tests. This appears to cover all VTABLEs that use mapped types |
|||
| Coke | I forgot about the use of MANIFEST for /making/ the tarball. | ||
| dalek | rrot-linear-algebra: ac8772b | Whiteknight++ | /: teh mergz |
||
|
01:01
tcurtis joined
|
|||
| cotto | Looks like allison saved me from an unnecessary branch, for now at least. | 01:03 | |
| whiteknight | how? | 01:04 | |
| cotto | gave a good reason why we keep MANIFEST around | 01:05 | |
| (et al) | |||
|
01:06
kid51 is now known as kid51_at_dinner
|
|||
| dukeleto | cotto_work: we need MANIFEST, it is just how we go about generating it and maintaining it | 01:07 | |
| Coke | so much for hacking on parrot tonight. (TT #1779) | 01:12 | |
| dalek | TT #1779 created by coke++: test failures on OSX | 01:25 | |
| TT #1779: trac.parrot.org/parrot/ticket/1779 | |||
|
01:27
nwellnhof left
|
|||
| nopaste | "Whiteknight" at 192.168.1.3 pasted "Why I hate GDB sometimes" (7 lines) at nopaste.snit.ch/23274 | 01:36 | |
| whiteknight | seriously. There's a segfault happening, and GDB doesn't stop at all for it | 01:38 | |
| blargle. I'll deal with all of this crap tomorrow. Goodnight | 01:59 | ||
|
02:00
kid51_at_dinner is now known as kid51
|
|||
| dalek | rrot-linear-algebra: 73ed80c | Whiteknight++ | / (3 files): Add in a test class for subclassing behavior in ComplexMatrix2D. Also, I made a change to the init_from_pmc_array function, which I thought was necessary but turns out to not be (though I do prefer a solution of this form, for future reference). This is causing some test failures, so I need to debug that later |
02:01 | |
| kid51 | Oh, how we need our smolder server back! | 02:05 | |
| dalek | kudo: 859f2d9 | colomon++ | src/core/Iterable.pm: Add Iterable.Numeric so that Arrays (and other Iterable types) numify to Int rather than to Num. |
||
| kid51 | That's the only way we can keep track of which configuration variants result in which build/test failures. | ||
|
02:09
whiteknight left
02:14
darbelo left
02:15
darbelo joined
|
|||
| dukeleto | hola | 02:17 | |
| darbelo | aloha: msg whiteknight (Re: nopaste.snit.ch/23274) Are you sure you are attaching gdb to the same process that is segfaulting? It seems to me you probably are spawning something that dies but attaching gdb to the 'spawner' who exits normally. | 02:26 | |
| purl | Message for whiteknight stored. | ||
| aloha | darbelo: OK. I'll deliver the message. | ||
| kid51 | msg mikehh src/spf_render.c is failing c_function_docs.t, even after my fix (commit coming up). I believe you know the magic invocation. Thanks. | 02:28 | |
| purl | Message for mikehh stored. | ||
| aloha | OK. I'll deliver the message. | ||
| kid51 | dukeleto++ for GSOC blog post: leto.net/dukeleto.pl/2010/09/google...mmary.html | 02:29 | |
| dukeleto is listening to chromatic++ talk about modern perl philosophy at PDX.pm | |||
| kid51: thanks | |||
| darbelo | dukeleto: Audio or it didn't happen :) | 02:30 | |
|
02:30
theory joined
|
|||
| kid51 | FWIW: at r48874 I got PASS for 'make test' on both Linux/i386 (--optimize) and Darwin/PPC. | 02:32 | |
| Are these test failures all in the 64-world? | |||
| (And on Linux/i386 'make fulltest' PASS except for 3 codingstd fails, 2 of which I've fixed) | 02:33 | ||
| dukeleto | there is a podcast being made and someone is livestreaming it, i think | 02:34 | |
| live stream: ustre.am/p0 | |||
| darbelo | Nice. | ||
|
02:35
janus left
|
|||
| kid51 | merlyn is the streamer | 02:35 | |
| dalek | rrot: r48875 | jkeenan++ | trunk/ext/nqp-rx/src/stage0/HLL-s0.pir: Correct 2 pod formatting errors. |
02:36 | |
| rrot: r48876 | jkeenan++ | trunk/src/spf_render.c: [codingstd] Correct c_parens error -- but c_function_docs error remains. |
|||
|
02:42
Andy joined
02:47
janus joined
|
|||
| dalek | rrot: r48877 | mikehh++ | trunk/src/spf_render.c: sort out documentation to pass c_function_docs.t |
02:53 | |
| nopaste | "kid51" at 192.168.1.3 pasted "hash_inlined_func branch: t/pmc/hash.t continued failures" (182 lines) at nopaste.snit.ch/23275 | ||
|
03:01
kid51 left
03:45
arnsholt left
03:46
hercynium left
03:52
arnsholt joined
04:13
arnsholt left
04:14
plobsing left
04:33
arnsholt joined
04:51
jsut joined
04:55
jsut_ left
05:26
Andy left
06:07
darbelo left
06:23
uniejo joined
06:27
esskar left
|
|||
| dalek | rrot: r48878 | chromatic++ | branches/hash_inlined_func/src/hash.c: [hash] Optimized parrot_hash_mark(). effects for any GC-heavy code. |
06:47 | |
| rrot: r48879 | chromatic++ | branches/hash_inlined_func/src/hash.c: [hash] Fixed key annotation for key_hash(). have to catch undesired NULLness. |
|||
|
06:50
fperrad joined
07:10
theory left,
theory joined,
theory left
|
|||
| dalek | rrot: r48880 | chromatic++ | trunk/src/gc/mark_sweep.c: [GC] Sprinkled consts in Parrot_gc_sweep_pool(). hot path. |
07:20 | |
|
08:23
cotto_work left
08:24
cotto_work joined
09:12
ttbot left
09:22
ttbot joined
09:44
tcurtis left
10:14
PerlJam left,
PerlJam joined,
Util left,
Util joined,
dukeleto left,
dukeleto joined
10:23
dukeleto left,
pmichaud left,
Util left
10:24
PerlJam left,
PerlJam joined,
dalek left
10:29
dukeleto joined,
dalek joined
10:34
Util joined
10:39
pmichaud joined
11:23
luben_work joined
11:34
GodFather joined
11:55
contingencyplan left
11:59
contingencyplan joined
|
|||
| smash | hello everyone | 11:59 | |
|
12:12
whiteknight joined
12:14
plobsing joined
|
|||
| whiteknight | good morning, #parrot | 12:29 | |
| smash | whiteknight: mornin' | ||
| whiteknight | hello smash, how are you today? | 12:31 | |
| smash | whiteknight: fine thank you, and you ? | 12:33 | |
| whiteknight | fine as well. Could always use more sleep, but can't complain otherwise | 12:34 | |
|
12:35
bluescreen joined
|
|||
| smash | nice, could use some mre sleep as well | 12:38 | |
|
12:50
ash_ left
13:10
ash_ joined
13:14
fperrad left
13:17
uniejo left,
Patterner left
13:23
uniejo joined
|
|||
| dalek | rrot: r48881 | mikehh++ | trunk/src/namespace.c: fix g++ build - namespace is a reserved word in C++ |
13:33 | |
| rrot: r48882 | whiteknight++ | trunk/src/pmc/complex.pmc: Complex pmc now provides 'complex' role, to help ease working with it and various subclasses |
|||
|
13:43
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
| dalek | rrot: r48883 | whiteknight++ | trunk (2 files): add a does scalar to Complex as well, which is needed for some reason. Add tests for the new 'complex' role I added |
13:50 | |
|
13:50
uniejo left
|
|||
| ash_ | so... macruby has a new feature, that's rather nifty IMO, you can now pass a ruby closure to a C library, it under the hood converts the ruby closure into a C block (the C blocks apple added to gcc and clang) | 13:58 | |
| macruby is almost to the point where it could be an alternative syntax for obj-c | 14:00 | ||
|
14:09
ash_ left
|
|||
| atrodo | Hmmm. Looks like Apple has relaxed a few restrictions on iOS, and at first glance, it looks like apps can now be written in parrot | 14:09 | |
|
14:11
fperrad joined
14:22
ash_ joined
|
|||
| ash_ | just have to figure out how to cross compile parrot using XCode... | 14:24 | |
| i tried once already, but i was not very familiar with the parrot configuration system, but i am more familiar with it now, it should be possible | |||
|
14:45
particle left,
particle joined
14:50
theory joined
14:59
shockwave left
15:07
patspam joined
|
|||
| pmichaud | good morning, #parrot | 15:09 | |
| (streq_at) chromatic and I worked up several patches to switch nqp-rx to use streq_at instead of substr, and there was no appreciable improvement in performance | 15:10 | ||
|
15:10
GodFather left
|
|||
| pmichaud | thinking about it now, I'm not too surprised. Doing the substrs does increase the number of string headers created, but they're very quickly collected. | 15:12 | |
| (and reused) | |||
| particle | cotto_work, pmichaud, others interested in git migration: see the bottom of `perldoc Config` for how p5 handles git info | 15:17 | |
| moritz | .oO( in retrospect you're never surprised :-) |
||
| pmichaud | moritz: yeah. I was thinking that avoiding the substrs would relieve pressure on the GC, but the GC seems to suffer more from long-lived items than from short-lived ones. | 15:18 | |
| it still may be worth adding streq_at to our permanent set | 15:19 | ||
| moritz | once we have a generational GC, the long lived objects shouldn't matter that much | 15:20 | |
| pmichaud | right | ||
| moritz | then avoiding GCables makes sense again | ||
| pmichaud | I keep wondering when "once" will be. :-) | ||
| moritz | christmas! | ||
| purl | hmmm... christmas is all jolly goofy shit. weee! or o/~ we wish you a spendy christmas o/~ x3; o/~ and a 'spensive new year o/~ or not yet or next year or when Perl6 is released. | ||
|
15:20
mikegrb left
15:22
mikegrb joined
|
|||
| pmichaud | 21:01 <sorear> darbelo: I was going to recommend removing src/PAST/Compiler-Regex.pir 137-153 and dealing with ripple effects and rebenchmarking | 15:22 | |
| I think that only becomes helpful when we can have a fixed-width encoding for unicode strings. Otherwise the cost of indexing into variable width strings overloads everything else. | 15:23 | ||
| NotFound | pmichaud: On the positive side, that means we can stop using shared buffers for substr if we need/want, without penalizing nqp. | ||
| pmichaud | NotFound: as long as NQP also gets rid of its other needs for substr, yes. | 15:24 | |
| based on past experience, the cost of indexing into variable width encodings is a significant cost. | |||
| especially as source code gets longer. | |||
|
15:24
fperrad_ joined
|
|||
| pmichaud | we ran into this problem a couple of years ago with PGE, where Perl 6 source files containing unicode characters ended up taking forever to parse because every comparison operation required an index (that always had to be counted from the beginning of the string) | 15:25 | |
| I fully plan to take out the substring operation from NQP when we have efficient unicode strings. :) | 15:27 | ||
| however, parrot's opcode set is going to require that we still do the equivalent of $S0 = $P0. I don't know if that will still be able to share a buffer. | 15:28 | ||
|
15:28
fperrad left,
fperrad_ is now known as fperrad
|
|||
| NotFound | I think we have efficient unicode strings... as long as they are utf32 | 15:28 | |
| pmichaud | I think utf32 doesn't work on systems that don't have ICU present. | ||
| NotFound | You were not requiring icu for rakudo? | 15:29 | |
| pmichaud | ICU is required if you want to do unicode-specific operations, but not for basic running of Rakudo. | ||
| NotFound | Oh, nqp, sorry. | ||
| pmichaud | or nqp, for that matter. | ||
| NotFound | It will be relatively easy to add uff decoding and encondig operations without external libs. If that is useful enough for nqp and others, we can give it a try. | 15:33 | |
| s/uff/utf | |||
| pmichaud | I think that anytime we can avoid variable width encoding internally that's likely to be a nice win. | 15:34 | |
| oh, there's another possibility | |||
| (not a great one, but it exists) | |||
| NotFound | In fact, we already have utf operations, for iterator advance et al. | 15:35 | |
| pmichaud | nqp-rx could switch to using a ResizableIntegerArray (or other packed equivalent) and reformulate its operations in terms of those. | ||
| We'd still end up switching things back into strings to be able to do case conversions and property checks, though. | 15:36 | ||
| (or we'd have to develop opcodes that know how to do those kinds of things for RIA instead of strings) | |||
| I'm guessing that would also have its own set of inefficiencies, but it could be done. | 15:37 | ||
| NotFound | Do you think a method or something to create a integer array from the codepoints of a string, and viceversa, will be helpful? | ||
| pmichaud | maybe, but that's probably the easiest part of that switch | 15:38 | |
| NotFound | Is the easier to test, at least. | ||
| pmichaud | doing a literal comparison between two integer arrays doesn't strike me as being nearly as efficient as saying iseq $S0, $S1 | ||
| NotFound | Thinking about it, is at less the same as work as recoding to utf32 and less useful. | 15:40 | |
| pmichaud | anyway, (fixed-width unicode representation)++ | ||
| NotFound | Technically utf32 is not fixed widh, but there are no plans to add several hundres of thousands of characters in the near future. | 15:42 | |
| So we can take it as fixed width safely, | |||
| pmichaud | as long as I can get directly to offset $n without having to scan from the start of the string :-) | ||
| s/I/Parrot/ | 15:43 | ||
| NotFound | Reamining CodeString usages, checked with ack, are in compilers/tge compilers/pge and compilers/data_json | 15:50 | |
| If someone get rid of that, I bet that debugging the amd64 problems will be easier. | 15:51 | ||
| pmichaud | does anything use those? | 16:00 | |
| I mean, does anything use tge/pge/data_json | |||
| rakudo doesn't use them. | |||
| put another way, I don't think that tge/pge/data_json are at all involved in the amd64 problems. | 16:01 | ||
| NotFound | data_json is heavily used | 16:02 | |
| pmichaud | it's used by... ? | ||
| NotFound | mime_base64, for example, wich is mentioned in several reports about the mad64 problems. | 16:03 | |
| tools/dev/nci_thunk_gen.pir also uses it | 16:04 | ||
| And is also related with the problems of gargbage in generated code. | |||
| pmichaud | generated code from... ? | ||
| NotFound | from nci_thin_gen | ||
| nci_thunk_gen | 16:05 | ||
| pmichaud | ah | ||
| well, I don't have any plans to try to rewrite pge to avoid codestring, as it's being deprecated. | |||
| better would be to rewrite data_json to not use tge/pge | |||
| NotFound | I've tried, but don't know how to get 'unique' from, for example. | ||
| Tried to avoid CodeString, that is. | 16:06 | ||
| pmichaud | oh, PCT::HLLCompiler provides a replacement 'unique' | ||
| NotFound | pmichaud: yeah, but I don't know what object I can use in the data_json usages of CodeString I've looked | 16:07 | |
| I'm tempted to write a json parser in C. | |||
| pmichaud | $P0 = get_hll_global ['PCT'], 'HLLCompiler' | ||
| something = $P0.'unique'() | |||
| json_data returns a Sub? | 16:08 | ||
| interesting. | |||
| NotFound | pmichaud: yes, that is part of I'd like to get rid of. | ||
| pmichaud | you want it to return the data structure directly? | 16:09 | |
| NotFound | Yes | ||
| pmichaud | jeepers, I bet I could write this in NQP very quickly. | ||
| it's just a compiler. | |||
| NotFound | Generating code for such thing is a waste and serves no useful purpose. | ||
| pmichaud | oh, I disagree. Currently the only good way we have to serialize data structures for libraries is as Parrot subs. | 16:10 | |
|
16:10
patspam left
|
|||
| NotFound | Generating pir from the data when requeired will be easier than the other way, and faster when you don't need the sub. | 16:11 | |
| pmichaud | anyway, I can write a replacement for data_json, if that will help the amd64 efforts. | 16:12 | |
| I can have it generate either a sub or a data structure. | 16:13 | ||
| making other components work with the new data_json.... not something I'm likely to do :) | |||
| NotFound | Mmm... you mean using a compreg object that has keeps the compile method for generating a sub, and other method called compile_to_data or something like that? | 16:14 | |
|
16:16
nwellnhof joined
|
|||
| luben_work | I maight have an idea about amd64 optimized build | 16:16 | |
| pmichaud | a compreg object that has different targets | ||
| luben_work | why they are broken | ||
| whiteknight | ah crap. I forgot to test the optimized build last night when I was home | ||
| pmichaud | basically, the other target would switch out the action methods to return the data structure directly instead of PAST nodes | ||
| NotFound | pmichaud: 'target' the named argument of the compile method, you mean? | 16:17 | |
| pmichaud | NotFound: currently one can do target=pir, target=past, target=parse, etc. | ||
| I can just add a target=data | |||
| NotFound | Works for me. | 16:18 | |
| pmichaud | and have it do the steps needed to return the data structure directly rather than go through the code/compile/generation phase | ||
| NotFound | luben_work: please explain | ||
|
16:19
ruoso joined
|
|||
| luben_work | does our GC check for pointers in "args passing registers" - and "saved register" on AMD64 | 16:19 | |
| on AMD64 some of the function args (first 6 integer args) are not passed on the stack | |||
| additionally, some register are saved between function calls | 16:20 | ||
| whiteknight | luben_work: Good question. All that code is in src/gc/system.c, I think | ||
| luben_work | so, I clever compiler could avoid allocation of vars on the stack and work only with registers | 16:21 | |
| NotFound | luben_work: the assumption someone told me some time ago is that all relevant info is saved in the stack, becuse the gc is always invoked via function calls. | ||
| nwellnhof | the code is here: trac.parrot.org/parrot/browser/trun...tem.c#L122 | ||
| luben_work | and so if the only pointer to GC-able object is in register, we get a boom.... | ||
| dalek | TT #1780 created by whiteknight++: Using StringHandle for STDERR can cause segfaults | ||
| TT #1780: trac.parrot.org/parrot/ticket/1780 | |||
| nwellnhof | it seems that we use a setjmp to get the register contents on the stack. | 16:22 | |
| whiteknight | right, I don't know what all that copies | ||
| NotFound | luben_work: if the only pointer is in a register and should survive a function call, the C compiler should take care to stack it or save it. | 16:24 | |
| (Unless we lie to the compiler, as we sometimes do) | |||
| luben_work | NotFound, but if it does not have to survive... | ||
| NotFound | luben_work: if it does not have to survive, it can be collected | 16:25 | |
| whiteknight | Do we know which PMC is getting recycled? If we find that exact PMC we can take care to ensure it is anchored somewhere | ||
| NotFound | whiteknight: we don't know if the problem is something being recycled | ||
| luben_work | imagine: in function a: return b(reg o); in function b(void *i): trigger GC run; (here where i point may be reallocated to another object)) | 16:27 | |
| NotFound | luben_work: i should be allocated somewhere. It can't be left in a register used for passing arguments to functions while calling other functions. | 16:28 | |
| whiteknight | NotFound: if an item isn't getting prematurely collected/recycled, what is the problem? | 16:29 | |
| NotFound | whiteknight: the visible problems I have seen is wrongly generated code. | ||
| That may means a pmc being premturely collected, ot misused strings, or who knows. | 16:30 | ||
| nopaste | "nwellnhof" at 192.168.1.3 pasted "bits/setjmp.h" (5 lines) at nopaste.snit.ch/23277 | 16:31 | |
| nwellnhof | it seems that the jump buffer contains only 8 words on amd64. so we might really be missing some registers. | 16:32 | |
|
16:32
baest left
|
|||
| ash_ | is it not using the defined jmp_buf type? From setjmp.h? | 16:32 | |
| NotFound | ash_: I suppose that bits/setjmp.h is the system header internally used by setjmp.h | 16:34 | |
| The file /usr/include/bits/setjmp.h in linux systems | 16:35 | ||
| Coke | ~~ | ||
| luben_work | here is a scenario I have in mind: pastebin.com/hs62XbkP | ||
| ash_ | on OS X, the 64 bit jmp_buff is int jmp_buf[37]; and the i386 is int jmp_buf[18] | 16:37 | |
| but that is architecture dependent | |||
| NotFound | luben_work: x can't be in a temporary register overwritable by function calls if it is used later. | ||
| luben_work | NotFound, its not used in the function more | 16:38 | |
| NotFound | No sane C compiler can do that. | ||
| luben_work: I see it in the return line | |||
| luben_work | it is returned, may be in different register or memory | ||
| NotFound | Sorry? | 16:39 | |
| purl | It's okay, NotFound. | ||
| luben_work | I don't know, this is just a suggestion... | 16:40 | |
| NotFound | To be able to return it later, it must be in a safe place while calling other functions. It can't be in an unsafe temporary. | ||
| And the gc is triggered only via function calls. | 16:41 | ||
| nwellnhof | if there are callee-saved registers that are not put on the stack in trace_system_areas on AMD64, we definitely have a problem. | ||
| NotFound | We definitely have problems, but usually are cause by ourselves, not by the C compiler. | 16:42 | |
|
16:42
tcurtis joined
16:52
nwellnhof left
|
|||
| dalek | rrot: r48884 | NotFound++ | trunk/src/string/api.c: avoid segfaulting in string_rep_compatible is a string has null encoding for some reason, TT #1779 |
16:55 | |
| luben_work | on amd64 if we compile with -fno-inline everithing goes OK | 17:00 | |
| Coke | so add that to the config defaults for that platform? | 17:01 | |
| NotFound | Given that the problem is in optimized builds, no wonder that avoiding some optimizations it goes well. | 17:02 | |
| luben_work | yes | 17:03 | |
| Coke | (i imagine ideally we need more compiler annotations on some subs.) | ||
| cotto_work | ~~ | 17:04 | |
| NotFound | IMO we should not have subs that require annotations, except maybe in some very low level access functions. | ||
| And surely packfile reading level is not that low, | 17:05 | ||
| However, if the problem is a bug in the compiler we can make an exception only for that compiler and version. | 17:06 | ||
| Disabling an important optimizations for all gcc or all amd64 looks excesive to me. | 17:08 | ||
| I'll give a try to the patch in TT #1777 | 17:09 | ||
| Coke | yes, limit it only specific combo. | ||
| luben_work | NotFound, I agree | ||
| NotFound | Looks like gcc 4.3.2 is the culprit. Someone is having problems with other version? | 17:10 | |
| luben_work | What versions of GCC you use? | 17:11 | |
| NotFound | In amd64? 4.3.2 | ||
| luben_work | here I have problems with gcc-4.4 -O2 also | ||
| NotFound | 4.3.2 (Debian 4.3.2-1.1) | ||
| luben_work | gcc-4.5 -O2 is fine, but gcc-4.5 -O3 is broken in the same way | ||
| NotFound | Not so easy, then. | 17:12 | |
|
17:15
davidfetter joined
|
|||
| NotFound | The __attribute__ ((__noinline__)) makes no difference to me. | 17:17 | |
|
17:24
PerlPilot joined,
PerlPilot left
17:26
PerlJam left
17:27
PerlJam joined,
nwellnhof joined
|
|||
| dukeleto | hola | 17:37 | |
| cotto_work | holla | ||
| davidfetter | hollla | 17:38 | |
| dalek | rrot: r48885 | NotFound++ | trunk/src/exceptions.c: avoid redying from unhandled exceptions while dying from unhandled exception, TT #1780 |
17:45 | |
|
17:48
estrabd left
17:49
estrabd joined
|
|||
| dukeleto | davidfetter: i would like to make a .deb for the next release of PL/Parrot. It opens a lot of options and I think will make it much more likely for people to try it | 17:52 | |
| davidfetter | agreed | ||
|
17:59
luben_work left
18:05
patspam joined
18:19
patspam1 joined,
patspam left
|
|||
| dalek | TT #857 closed by Paul_the_Greek++: Parrot_floatval_time() and Parrot_intval_time() do not match up on Win32 | 18:20 | |
| TT #857: trac.parrot.org/parrot/ticket/857 | |||
|
18:27
Paul_the_Greek joined
|
|||
| Paul_the_Greek | Okay, I need a little enlightening. | 18:28 | |
| PerlJam | Paul_the_Greek: 42 | ||
| Paul_the_Greek | Thank you, sir. | ||
| NotFound | 666 | ||
| Paul_the_Greek | Also good. | 18:29 | |
| PerlJam shines a light on Paul_the_Greek | |||
| Paul_the_Greek | So here's what I get when I make headerizer ... | ||
| cotto_work | There is no spoon? | ||
| purl | But there is a spork. | ||
| Paul_the_Greek | can't find HEADERIZER HFILE directive in "src/ops/core_ops.c" at tools/dev/headerizer.pl line 355 | ||
| Indeed, no headerizer directive in that generated file. | |||
| NotFound | Paul_the_Greek: windows? | ||
| purl | windows is one hell of an event! or crashing on someone | ||
| Paul_the_Greek | But it's listed in makefile as a file to be headerized. | 18:30 | |
| Yes, Windows XP. | |||
| Why doesn't everyone get this error? | |||
| cotto_work | trying to reproduce now | ||
| NotFound | Paul_the_Greek: maybe no one has ever used make headerizer in windows | ||
| Paul_the_Greek | But it's listed as a file to be headerized, in makefile, unconditionally. | ||
| I should be getting that error. | 18:31 | ||
|
18:31
patspam1 left
|
|||
| Paul_the_Greek | Oh wait, is that part of makefile created by the configurer? | 18:31 | |
| cotto_work | yes | ||
| Paul_the_Greek | Ah. | 18:32 | |
| cotto_work | wfm on linux | ||
| Paul_the_Greek | Must investigate Configure.pl, then. | ||
| NotFound | Paul_the_Greek: Is a svn build? | 18:33 | |
| Paul_the_Greek | cotto_work: Check your makefile and search for INTERP_O_FILES. core_ops is not listed there, right? | ||
| Yes, svn. | |||
| cotto_work | yup | 18:34 | |
| it is listed there | |||
| Paul_the_Greek | Second file in the list? | ||
| Then please search for O_FILES and tell me if INTERP_O_FILES is in its list. | 18:35 | ||
| cotto_work | it is | ||
| Paul_the_Greek | Then please search for HEADERIZER_O_FILES and tell me if O_FILES is in its list. | 18:36 | |
| cotto_work | It looks like we should be trying to headerize it. | ||
| Paul_the_Greek: config/gen/makefiles/root.in is what much of Makefile is generated from | |||
| NotFound | Where do you see it listed? | ||
|
18:36
contingencyplan left
|
|||
| Paul_the_Greek | NotFound: What do you mean by "it"? | 18:37 | |
| NotFound | core_ops.c in the Makefile | ||
| cotto_work | For some reason, .o files are passed to headerizer, not .c | ||
| afk for a bit | 18:38 | ||
| Paul_the_Greek | It's included in INTERP_O_FILES, which are some of the files that are headerized. | ||
| It's right there in root.in, so no surprise it's in makefile. | |||
| Why the heck isn't it headerized on non-Windows systems? | 18:39 | ||
| NotFound: Can you check your copy of core_ops.c to see if it has a headerizer tag? | 18:41 | ||
| NotFound adding a few print STDERR to headerizer.pl | 18:43 | ||
| This line seems to be related: next if $ofile =~ m/^\\Qsrc$PConfig{slash}ops\\E/; | 18:45 | ||
| Maybe $PConfig[slahs} is not as expected? | 18:46 | ||
| Paul_the_Greek | A highly perspicuous Perl line, as always. | ||
| NotFound | This will be better? next if $ofile =~ m/^\\Qsrc[/$PConfig{slash}]ops\\E/; | 18:47 | |
| Paul_the_Greek | Can you translate for me? | ||
| Oh ... | |||
| NotFound | Do nothing if the file is in /src/ops | ||
| Paul_the_Greek | Right, a question of slash vs. backslash. | ||
| Where are the PConfig values? | 18:48 | ||
|
18:48
contingencyplan joined
|
|||
| NotFound | From perl, I think. | 18:49 | |
| Paul_the_Greek | There is a slash entry in config_lib.pir | ||
| NotFound | That code seems to assume that paths always have the usual slash of the platform, and that assumption is invalid. | 18:50 | |
| Paul_the_Greek | Mine is set to "\\\\". | ||
| Yes, it is. | |||
| Let me try your fix ... | |||
| NotFound | I'm not fluent with perl regexes, not sure if that fix is valid. | ||
| Paul_the_Greek | No, it's not. Hang on ... | 18:51 | |
| NotFound | Uh.... the / probably need to be escaped. | 18:52 | |
| Paul_the_Greek | Yes, it does. What is \\Q and \\E ? | 18:53 | |
| atrodo | They say "don't listen to any other escapes until you see a \\E" | 18:54 | |
| NotFound | Q quote (disable) pattern metacharacters till \\E | ||
| Oh, nice... | |||
| Paul_the_Greek | Oh, well then that explains why it doesn't work. | ||
|
18:54
Andy joined
|
|||
| NotFound | Going the easy way: duplicate the line. | 18:54 | |
| Paul_the_Greek | All fixed. | ||
| No let me do it the right way. | 18:55 | ||
| NotFound | Sure | ||
| Please add a comment explaining the purpose of that skip | 18:56 | ||
| Paul_the_Greek | Will do. | ||
| What does $PConfig(slash) mean? Is that interpolated when the pattern is scanned? | 18:57 | ||
| NotFound | I told you I'm not fluent with perl regexes ;) | 18:58 | |
| Paul_the_Greek | Yeah, you and me both, baby. | ||
| plobsing | Paul_the_Greek: (did you mean $PConfig{slash} ?) yes, it is interpolated. It is just a hash lookup. | 19:00 | |
| Paul_the_Greek | Yeah, you and me both, baby. | ||
| All righty, this is working much better. I'll add a big fat comment and commit it. | 19:02 | ||
| Any test I should run other than make headerizer? | |||
| nopaste | "nwellnhof" at 192.168.1.3 pasted "This patch might fix the amd64/optimized problems" (14 lines) at nopaste.snit.ch/23278 | 19:03 | |
| luben | nwellnhof, trying now | ||
| nwellnhof | i have a good feeling this time... | ||
| NotFound | Paul_the_Greek: Commit it and let's see what happens on linux, unless you have a linux box at hand and can easily copy to it. | ||
| Paul_the_Greek | Sorry, no linux box. It's checking for the local directory separator and for slash, so I think we're good. | 19:05 | |
| NotFound | Paul_the_Greek: commit it, we can quicky revert if break something | 19:06 | |
| luben | nwellnhof, no, it does not help here | 19:08 | |
| nwellnhof | luben: which gcc version? | ||
| luben | 4.5 | 19:09 | |
| nwellnhof | with -O3? | ||
| luben | I could try also with 4.4 | ||
| yes | |||
| dalek | rrot: r48886 | plobsing++ | branches/oplib_handling_cleanup: creating branch to clean up the handling of ops and oplibs |
||
| rrot: r48887 | Paul C. Anagnostopoulos++ | trunk/tools/dev/headerizer.pl: fix headerizer to correctly skip src/ops/ files |
|||
| luben | nwellnhof, recompiling now with gcc-4.4 | 19:10 | |
| nwellnhof | luben: can you check if trace_system_stack really doesn't get inlined in trace_system_areas | ||
| luben | how could I check this | 19:11 | |
| NotFound | nwellnhof: don't fix for me in gcc 4.3.2 | ||
| cotto_work | Paul_the_Greek: it works but I'm not entirely sure that's the right place to fix that problem. | ||
| luben | nwellnhof, it fixes gcc-4.4 -O2 | ||
| but does not fixes gcc-4.4 -O3 | 19:12 | ||
| cotto_work | We should probably be using @slash@ much more often than we do in the makefile template. | ||
| nopaste | "nwellnhof" at 192.168.1.3 pasted "check if function is inlined" (45 lines) at nopaste.snit.ch/23279 | ||
| Paul_the_Greek | I'm committed it, but I agree that it makes more sense to eliminate core_ops from the headerizer list. | ||
| Bit of a trick, though. | 19:13 | ||
| NotFound | cotto_work: or much less often. All windows versions understand / | ||
|
19:13
jan left
|
|||
| Paul_the_Greek | If we don't eliminate core_ops from the headerizer list, we have to check for it somewhere. | 19:14 | |
| dalek | parrot: 2b0aabf | leto++ | / (2 files): Allow Perl 6 Grammars as return values of stored procedures When defining a global grammar for later use, the return value of the stored procedure was a Grammar object, which PL/Perl6 did not know how to convert to a Postgres datatype, so the sausage machine came to a grinding halt. We catch these and just return a true value instead. There is currently a bug in Rakudo where Grammar.WHAT is "Code", and somehow that gets turned into a "Sub", so that was worked around as well. |
19:15 | |
| cotto_work | Sure. I'm just saying that we shouldn't need to check the path against two regexes. | ||
| luben | nwellnhof, it's not inlined here | ||
| NotFound | Paul_the_Greek: fill a ticket about that, to give our perl fluent friends something to do. | 19:16 | |
| Paul_the_Greek | Will do. | ||
| nopaste | "luben" at 192.168.1.3 pasted "disassemble trace_system_areas" (20 lines) at nopaste.snit.ch/23280 | 19:17 | |
| nwellnhof | luben: which gcc version and optimization level? | ||
| ash_ | Paul_the_Greek: where are you having problems with perl? | ||
| luben | gcc-4.5 -O3 | ||
| Paul_the_Greek | It's not a problem with Perl. It's a problem with the headerizer having to skip some files explicitly. | 19:18 | |
| luben | with gcc-4.5 -O2 , the bug does not shows | ||
| NotFound | Having to skip some files that are explicitly passed to it. | ||
| nopaste | "nwellnhof" at 192.168.1.3 pasted "Another try at disabling inlining" (25 lines) at nopaste.snit.ch/23281 | 19:19 | |
| NotFound | Will be easier to pass the full tree and let it choose ;) | ||
| nwellnhof | luben: but the first patch fixed gcc 4.4 for you which didn't work before? | 19:20 | |
| luben | yes | ||
| Paul_the_Greek | It could simply skip files with headerizer markers, but that seems dangerous. | ||
| luben | let me check again | ||
| Paul_the_Greek | s/with/without/ | ||
| nwellnhof | can you also try the second patch? | ||
| luben | yes, now I am compiling stock version with gcc-4.4 -O2 | 19:21 | |
| cotto_work | Talk about fighting the compiler. | 19:22 | |
| luben | hmm, strange, gcc-4.4 -O2 works fine on base64 test. Running the test suite | ||
| there were more tests failing | 19:23 | ||
| NotFound | Paul_the_Greek: Headerization complete. | ||
| Works fine in linux | |||
| nwellnhof | luben: the mime base64 test might be a different issue. | ||
| NotFound | Hey, you closed the ticket before hearing my report ;) | 19:24 | |
| luben | there are some failing test - t/pmc/packfile.t | ||
| oo, no. it is ok | |||
| make test passes | |||
| compiling now with gcc-4.3 | 19:26 | ||
| mime64 test fails with gcc-4.3 -O2 | 19:27 | ||
| dalek | TT #1773 closed by Paul_the_Greek++: make headerizer fails on Windows XP | ||
| TT #1773: trac.parrot.org/parrot/ticket/1773 | |||
| Paul_the_Greek | NotFound: Oops, sorry. What report? | 19:28 | |
| luben | with the second patch the build does not finish (gcc-4.3 -O2) | 19:29 | |
| NotFound | Paul_the_Greek: Verifying that works in linux | ||
|
19:30
jan joined
|
|||
| Paul_the_Greek | I'm sorry, when you said "commit it and we can quickly revert" I got carried away. | 19:31 | |
| NotFound | With the current urge to close tickets, I understand ;) | 19:32 | |
| cotto_work | I also verified that it worked. | ||
| NotFound | NM | 19:33 | |
| Paul_the_Greek | New Mexico? | ||
| purl | There's a NEW Mexico now! | ||
| cotto_work | Nocturnal Monkeys | 19:34 | |
| also, never mind | |||
| nwellnhof | luben: when does gcc 4.3 fail? can it build libparrot? | 19:35 | |
| luben | let me check | ||
| NotFound | I don't understand that comments about need to regenerate pbc. packfile test shouldn't be using native_pbc since some time. | 19:36 | |
| luben | nwellnhof, yes it is built, fails on parrot-nqp call | 19:37 | |
| nwellnhof | luben: can you check if trace_system_stack gets inlined? | 19:38 | |
| luben | yes | ||
| nwellnhof | it gets inlined with gcc 4.3 although we have the noinline attribute? | 19:40 | |
| luben | hmm... | ||
| nopaste | "luben" at 192.168.1.3 pasted "disassemble trace_system_areas" (17 lines) at nopaste.snit.ch/23282 | ||
| nwellnhof | can you show a dump of trace_system_areas? | 19:41 | |
| luben | how to do that? | ||
| nwellnhof | just disas trace_system_areas instead of trace_system_stack | 19:42 | |
| luben | aha.. ok | ||
| nopaste | "luben" at 192.168.1.3 pasted "disassemble trace_system_areas" (16 lines) at nopaste.snit.ch/23283 | 19:43 | |
| nwellnhof | that seems ok. so, no progress on gcc 4.3 | 19:44 | |
| Coke | in general, don't use config{slash} when a plain ole / will do. We were overusing the heck out of it and I ripped it out of several locations. | ||
| (there are only a very few places on win32 where it's really needed) | 19:46 | ||
| NotFound | Is nolinline or __noinline__ ? | 19:47 | |
| GeJ | Bonjour everyone. | 19:48 | |
| Coke | moshi moshi | 19:52 | |
| purl | moshi moshi is what Japanese people say when they pick the phone up | ||
|
20:01
whiteknight left
|
|||
| dalek | rrot-linear-algebra: 673cca5 | Whiteknight++ | src/ (4 files): ComplexMatrix2D now extracts a complex value from PMCs using role-based rules instead of checking equality on vtable->base_type. As of Parrot r48883 this allows using subclasses of Complex for most operations. All tests pass again |
20:02 | |
| rrot-linear-algebra: 973d65c | Whiteknight++ | t/ (2 files): make the test harness a little bit more tolerant of tests which abort early. This whole thing is becoming ripe for a complete refactor |
|||
| rrot-linear-algebra: 7e0058d | Whiteknight++ | t/harness: complete rewrite of t/harness. Break it up into classes and simplify a few things. Might not cover all cases that the old one has, I've done limited testing of it. |
|||
|
20:02
ash_ left
20:07
davidfetter left
20:08
fperrad left
|
|||
| Paul_the_Greek | ping cotto_work | 20:15 | |
|
20:16
patspam joined
|
|||
| cotto_work | pong | 20:16 | |
| dalek | rrot: r48888 | NotFound++ | trunk/t/pmc/hashiteratorkey.t: rearrange HashIteratorKey tests and add a few more |
||
| Paul_the_Greek | cotto_work: Would you like me to work on this ticket: trac.parrot.org/parrot/ticket/650 | 20:19 | |
| It would be a good excuse to suck it up and learn Perl. | |||
| dukeleto | Paul_the_Greek++ | 20:21 | |
| Paul_the_Greek: which languages are you most familiar with? | |||
| NotFound | Paul_the_Greek: please don't learn how to comment perl code from some of our sources %-) | 20:22 | |
| cotto_work | It's fine if you need an excuse to learn Perl. That's one of the systems that'll go away when Lorito arrives at some indeterminate point in the future. | ||
| Paul_the_Greek | Perl and I are ... how to put this ... not entirely compatible. But that is no excuse. | ||
| cotto_work | There are many ways to write Perl 5. | 20:23 | |
| Paul_the_Greek | I will write it trying to avoid lots of _* thingies and other things that seem like chicken scratching. | 20:24 | |
| In other words, in a simple manner. | |||
| cotto_work | There are pleny of people around who can review anything you're not entirely confident about. | 20:25 | |
| Paul_the_Greek | cotto_work: If pmc2c is not really broken, perhaps there are better things for me to do. | ||
| Such as thing one: trac.parrot.org/parrot/ticket/1041 | |||
|
20:25
contingencyplan left
|
|||
| Paul_the_Greek | But again, if it's going away sometime ... | 20:26 | |
| cotto_work | I personally wouldn't take on a pmc2c task unless it were causing immediate pain or likely to do so. | 20:27 | |
| Paul_the_Greek | That seems like a good philosophy. I shall continue my search for a good ticket. | ||
| dukeleto | Paul_the_Greek: I have something for you | ||
| Paul_the_Greek | Uh oh. | 20:28 | |
| Coke | is it ... a knuckle sandwich!?! | ||
| NotFound | A pony? | ||
| purl | a pony is multi-functional or www.angryflower.com/pony.html or svn.rcbowen.com/svn/public/mod_pony/mod_pony.c | ||
| sorear | has pmc2c been rewritten in nqp-rx yet? | ||
| dukeleto | Paul_the_Greek: trac.parrot.org/parrot/ticket/370 | ||
| Paul_the_Greek: that ticket has lots of tests already. You just need to make them pass. | |||
| Paul_the_Greek: there are some edge cases in our VTABLES, where Inf/NaN gets converted to a machine value | 20:29 | ||
| Paul_the_Greek | Yes, I've seen those in my recent travels. | ||
| dukeleto | Paul_the_Greek: i've played with it a bit, but maybe both of us together can make it work | ||
| cotto_work | sorear: nope. The current plan is to have the next (and hopefully last) major PMC refactor be to rewrite them in Lorito. | 20:30 | |
| Coke | what does "in lorito" mean? ;) | ||
| cotto_work | Something that gets translated to L1 ops. | ||
| Coke is just trolling | |||
| atrodo | I would guess that you would want to rewrite PMCs in NQP | ||
| Paul_the_Greek | dukeleto: Okay, I'm game. I'll grab that ticket and start looking at it. | ||
| NotFound | loritops? | ||
| cotto_work | er, M1 | 20:31 | |
| dukeleto | Paul_the_Greek++ while(1); | ||
| atrodo | LM1? | ||
| Paul_the_Greek | cotto_work: So let's just write a C-to-L1 compiler and Bob's your uncle. | ||
| cotto_work | That's two of the things we're explicitly trying to avoid. | ||
| (nothing against Bob) | 20:32 | ||
| dukeleto | Paul_the_Greek: if you finish that one or need something else to work on, trac.parrot.org/parrot/ticket/987 may be fun for you. I can help with parrot_debugger questions | ||
| NotFound | While you are at it, write also a C++ compiler | ||
| dukeleto | Paul_the_Greek: fixing that ticket would actually make the parrot_debugger useful, and that would be pretty awesome. | ||
| Paul_the_Greek | dukeleto: I'll take that one, too. Should be mighty amusing. | 20:33 | |
| dalek | rrot: r48889 | NotFound++ | trunk/src/pmc/bytebuffer.pmc: drop a no longer needed call to STRING_validate in ByteBuffer, the tests will avoid regressions |
||
| Paul_the_Greek | But don't we have the world's best compiler writing tools? Compiling C should be a piece of cake. | 20:34 | |
| Well, a large piece, I suppose. | |||
| NotFound | Paul_the_Greek: sure, but other C compilers have decades of advantage. | 20:35 | |
| Paul_the_Greek | Right, but unless we code directly in L1, we're relying on a good compiler anyway. | ||
| Wait, are you talking about coding the PMCs in L1? | |||
| NotFound | Paul_the_Greek: the idea is that coding the PMC and the ops in something that gets compiled to loritops is the way to avoid the need to use inner loops in vtable and method calls | 20:38 | |
| Ideally, to avoid inner loops at all. | |||
| Paul_the_Greek | Fill me in on these inner loops. | ||
| sorear | Do you mean inferior runloops? | 20:39 | |
| atrodo | Inner loops are when the run core calls C, which calls the runloop | ||
| cotto_work | sorear: same thing | ||
| NotFound | I don't like the word "inferior" ;) | 20:40 | |
| atrodo | I do | ||
| cotto_work | think of it as a technical term | ||
|
20:40
bluescreen left
|
|||
| cotto_work | meaning "not as good" | 20:41 | |
| NotFound | Technically inferior? | ||
| Paul_the_Greek | What's a common example of when an inferior loop occurs? | ||
| atrodo | Inferior, as in subjugated to another? | 20:42 | |
| NotFound | Paul_the_Greek: when a vtable function is overriden on a pir class | ||
| sorear | Any time a vtable needs to call pir/nqp code | ||
| or a pccmethod | |||
| purl | a pccmethod is the thing that will eventually be renamed after the deprecated METHOD, it is for pmc method that don't fit in the pmc table | ||
| cotto_work | forget a pccmethod | ||
| purl | cotto_work: I forgot pccmethod | ||
| sorear | inferior runloops are unavoidable if we're binding to a C library with callbacks | 20:43 | |
| Paul_the_Greek | So some C-implemented operation needs to have pir code executed ... | ||
| sorear | e.g. most GUI stuff | ||
| Paul_the_Greek | Why can't it just futz the stack and then return to the current runloop? | 20:44 | |
| Ah, because it needs to execute again afterward? | |||
| NotFound | sorear: some people said there may be ways to avoid it in such cases, but I doubt it. | ||
|
20:44
bluescreen joined
|
|||
| NotFound | Paul_the_Greek: because the caller usually don't expect to be discarded | 20:45 | |
| nwellnhof | have two separate stacks? | ||
| sorear | Paul_the_Greek: C code expects to store return frames in a contiguous block of memory indexed off the stack pointer | ||
| Parrot code expects to store them in the heap | |||
| Paul_the_Greek | Right. | 20:46 | |
| sorear | the inferior runloop system is essentially just impedance matching for return paths | ||
| NotFound | If some day we have a wonderful threads impelementation, it may be ways... in some platforms. | ||
| nopaste | "bluescreen" at 192.168.1.3 pasted "adding methods using vtable's 'add_method' generates problems with methods's parameters" (15 lines) at nopaste.snit.ch/23284 | ||
| Paul_the_Greek | But no amount of cleverness would avoid inner loops for, say, callbacks. | 20:47 | |
| So the problem with inner loops is ... there's overhead to start them up and shut them down? | 20:48 | ||
| NotFound | Paul_the_Greek: the main problem is that passing arguments from parrot to C to parrot.... is expensive | 20:49 | |
| One of the main problems, at least. | |||
| Paul_the_Greek | Ah, indeed. Too much enboxification. | ||
| cotto_work | bluescreen: the method needs to have .param pmc self as its first param | 20:50 | |
| bluescreen | really... | ||
| that make sense | |||
| Paul_the_Greek | But again, you can't avoid that when calling external libraries. | ||
| bluescreen | let me try that | ||
| cotto_work | also, you don't want :init there | ||
| :main or nothing would be better | |||
| bluescreen | ok | ||
| thanks cotto_work++ | 20:51 | ||
| cotto_work | np | ||
| :init means it'll execute twice, since the first sub has an implicit :main | 20:52 | ||
| rather, the first sub has an implicit :main if nothing else has an explicit :main | |||
| NotFound | But better be explicit, implicit main may be deprecated some day... | 20:53 | |
| cotto_work | If nothing else, explicit :main is less magical. | ||
| bluescreen | is :init in pir as BEGIN is for perl ? | ||
| Paul_the_Greek | Boo! implicit :main | 20:54 | |
| ping dukeleto | 20:55 | ||
| cotto_work | bluescreen: no. It's more like :immediate | ||
| tcurtis | Paul_the_Greek: fun side-effect of implicit main: nullary subs can't really be checked for the right number of parameters (IIUC), since the main sub can either have a slurpy args parameter or no parameters. | ||
| Paul_the_Greek | What about other subs? | 20:56 | |
| Wait a minute, why does that matter? It's either defined with no params or with a slurpy one. | 20:57 | ||
| tcurtis | Paul_the_Greek: Because the main sub gets called with the command-line arguments whether or not it's defined with parameters. | ||
| I think. | 20:58 | ||
| Paul_the_Greek | That doesn't seem right. | ||
| Don't pass the arguments if it's not defined to take them. | |||
| Whose idea was it to pass command-line arguments to main functions, anyway? | 20:59 | ||
| tcurtis | Paul_the_Greek: both implicit :main and lack of checking of arguments to :main subs are deprecated. trac.parrot.org/parrot/browser/trun...D.pod#L318 | ||
| I'm not sure if that means :main subs will be required to have a slurpy param or if Parrot will detect whether or not it does. | 21:00 | ||
| NotFound | tcurtis: they are, but AFAIK no one has even started to think about fixing the test suite. | ||
| Paul_the_Greek | There you go. | ||
| I'd vote for detecting whether it has one. | 21:01 | ||
| Not really a big deal either way, I suppose. | 21:02 | ||
| NotFound | I noticed a problem with the installed winxed compiler: there is no way to look for the :main flag in a Eval | ||
| I used the dirty trick of looking for the name 'main' for a now. | 21:03 | ||
|
21:03
whiteknight joined
|
|||
| Paul_the_Greek | .sub not_main :main | 21:04 | |
| NotFound | Maybe the good solution is to run the compiled code in a child interpreter | 21:05 | |
| dalek | rrot: r48890 | nwellnhof++ | trunk (4 files): [gc] Make sure that trace_system_stack is not inlined |
21:07 | |
|
21:20
bluescreen left
21:21
tcurtis left
|
|||
| whiteknight is thinking about writing up an ncurses wrapper for Parrot | 21:23 | ||
| dukeleto | Paul_the_Greek: pong | ||
| NotFound | whiteknight: I think we already have one. | 21:24 | |
| whiteknight | do we? I wasn't aware of any | ||
| sorear | Curses in the libraries, no? | ||
| NotFound | runtime/parrot/library/ncurses.pir | 21:25 | |
| dukeleto | whiteknight: that sounds useful | ||
| does anything actually use the ncurses library, tho? | |||
| sorear | Tene has a Rakudo rebinding of it | ||
| I think there are a couple users on that side | |||
| Paul_the_Greek | dukeleto: The NaN rounding problem is more complicated than it first appears. | 21:26 | |
| dukeleto: $I0 = 1e20 doesn't throw an exception, either. | |||
| whiteknight | ah yes, I think we do have an ncurses interface here | ||
| runtime/parrot/library/ncurses.pir | |||
| Tene | i do remember doing something ncurses before... | 21:28 | |
| dalek | nxed: r618 | NotFound++ | trunk/winxedst1.winxed: update to parrot encoding/charset massacre |
||
| Tene | Yeah, I've used that from rakudo, iirc. | ||
| NotFound | Talking about wrappers, I'm making progress with Gtk2 via blizkost | 21:32 | |
| dalek | nxed: r619 | NotFound++ | trunk/pir/winxed_compiler.pir: update pir installable files |
21:33 | |
| dukeleto | Paul_the_Greek: yes, there are some layers to the onion :) I have been unraveling them slowly | ||
| Paul_the_Greek: $I0 = 1e20 works like it should | 21:34 | ||
| Paul_the_Greek: Inf and -Inf can't be stored in an integer register | 21:35 | ||
| Paul_the_Greek: so $I0 stores the smallest machine value | |||
| Paul_the_Greek: that issue is different that floor(NaN) returning the smallest machine integer | 21:36 | ||
| iirc, +-Inf and NaN can only be stored in $P* and $N* registers | 21:37 | ||
|
21:37
ruoso left
|
|||
| nwellnhof thinks about a bitmask for the attrs of a PMC that need to be marked. | 21:38 | ||
| NotFound | We don't have invented NaI yet, | ||
| (Not a Integer) | 21:39 | ||
| dalek | rrot: r48891 | nwellnhof++ | trunk/src/pmc/packfileannotations.pmc: [pmc] Mark gr_byte and gr_entries in PackfileAnnotations PMC |
21:40 | |
| nwellnhof thinks that such a bitmask could be easily generated by pmc2c | 21:41 | ||
|
21:45
patspam left
|
|||
| dukeleto | NotFound: Gtk2 via blizkost sounds promising, what kind of stuff are you running into? | 21:55 | |
| NotFound | dukeleto: I'm workarounding blizkost limitations. I inherit from Sub in a class that overrides invoke, and use that class to pass data to callbacks. | 21:56 | |
| I'm wondering about changing the check isa Sub to does invokable in blizkost | 21:57 | ||
| dalek | rrot: r48892 | plobsing++ | branches/oplib_handling_cleanup (6 files): add interp.op_hash to map op names to op info |
||
| NotFound | Inheriting from Sub is a ugly hack. | 21:58 | |
| nopaste | "NotFound" at 192.168.1.3 pasted "Work in progress - using Gtk2 via blizkost with winxed" (277 lines) at nopaste.snit.ch/23286 | 22:01 | |
| NotFound | Here is what I have. | ||
| dukeleto | NotFound: very cool. | 22:03 | |
| NotFound | I need to improve some things in winxed to make it better. | 22:04 | |
| dukeleto | NotFound: i can apply changes to Blizkost if you need them. We need to make sure we don't break the few things that use blizkost now | ||
| NotFound | dukeleto: What do you think about the switch from isa Sub to does invokable? | 22:05 | |
|
22:10
sjn left
|
|||
| jnthn | isa Sub => does invokable doesn't sound immediately problematic to me, fwiw. | 22:15 | |
| NotFound | I'll try it and do a pull request if sucessful, then. | 22:16 | |
| dalek | tracwiki: v23 | cotto++ | GitMigration | 22:21 | |
| tracwiki: trac.parrot.org/parrot/wiki/GitMigr...ction=diff | |||
| sorear | if you can figure out how to make blizkost not stupid, it doesn't really mater how much you break | 22:23 | |
| everything that uses it now is just kludges on top of kludges | |||
| dukeleto | NotFound: i say go for it | 22:24 | |
| sorear | in particular, I gave up on making arrays and hashes work through blizkost out of frustration and confusion | ||
| dukeleto | sorear: what problems did you run into? | 22:27 | |
| sorear | dukeleto: iterator and container semantics are confusing, inconsistant, and not very compatible with Perl5 | ||
| dukeleto | sorear: what is the fallout from that? i.e. what is not possible because arrays/hashes don't work through blizkost? | 22:30 | |
| cotto_work: there you go, adding to the yak pile .... ;) | 22:31 | ||
| cotto_work hands dukeleto a handful of yak hair | 22:36 | ||
| I've got plenty more where that came from. | |||
|
22:37
tcurtis joined
|
|||
| Paul_the_Greek | dukeleto: $i0 = 1e20 sets the register to the minimum integer. That doesn't seem right. | 22:39 | |
| cotto_work | I can't think of anything smaller than 1e20. | 22:40 | |
| Paul_the_Greek | Huh? | 22:41 | |
| 1e20 - 1 ? | 22:42 | ||
| cotto_work | Woah. | 22:44 | |
| Paul_the_Greek | Horses about? | 22:46 | |
| dukeleto | Paul_the_Greek: so you are saying that it should be the max integer? | 22:51 | |
| Paul_the_Greek | I have no idea what any of these should be. They are all undefined in C. | ||
| I think we should throw an exception. | |||
| Coke | msg chromatic - how does r48878 get any improvement? | ||
| purl | Message for chromatic stored. | ||
| aloha | OK. I'll deliver the message. | ||
| Paul_the_Greek | "Unable to convert real to integer." | 22:52 | |
| Or else specify that they are undefined. | |||
| dukeleto | Paul_the_Greek: hmmm | ||
| plobsing | Paul_the_Greek: handling the constant gets done in the PIR compiler. IMCC is pretty much high-priority bugfix only at this point. If *you* want to fix it, go ahead. | ||
| dukeleto | Paul_the_Greek: it may be that $I0 = 1e20 is just wrapping around to a negative #, not necessarily setting it to the min integer | 22:53 | |
| Paul_the_Greek | dukeleto: Or we could conditionalize the exception like it is for integer overflow. | ||
| Let me check ... | |||
| NotFound | I think I've discovered the difference between build from git and from svn | 22:54 | |
| Paul_the_Greek | dukeleto: What a coincidence. Yes, some sort of bizarre wrapping is going on. | ||
| NotFound | A $Id in nci_thun_gen.pir | ||
| dukeleto | Paul_the_Greek: in C, floor() and ceil() are defined to return +-MAXINT if the values are too big | 22:55 | |
| Paul_the_Greek: iirc, ansi89 says that, or some relative of it | |||
| Paul_the_Greek | Ah, okay, but they are undefined for Inf and NaN. | ||
| Let me check that ... | |||
| dukeleto | Paul_the_Greek: i think that is normal "C" wrapping behavior. if you do "int i = HUGENUM" in C, you will get +- HUGENUM % MAXINT | 22:56 | |
| Paul_the_Greek: where % is the modulus operator | |||
| Paul_the_Greek | dukeleto: There is no floor() => int in C. | 22:57 | |
| dukeleto | C doesn't throw an exception when assiging too-large a number to an int, and Parrot inherited that behavior, for better or worse | ||
| Paul_the_Greek: maybe i am thinking of the cmod function | |||
| Paul_the_Greek | Let's see what it says about assignment conversion ... | ||
| "The behavior ... is undefined if the floating-point value cannot be represented even approximately in the new type" | 22:58 | ||
| sorear | dukeleto: that's for unsigned integer overflow | ||
| Paul_the_Greek | So we leave it undefined or we throw an exception. I would not start defining all these conversion combinations. | 22:59 | |
| dukeleto | Paul_the_Greek: i tend to agree | 23:00 | |
| sorear | dukeleto: if $arr is a Perl ARRAY ref, you'll want to do my &arget = eval('sub { $_[0][$_[1]] }', :lang<perl5>); say arget($arr, 5); | ||
| Paul_the_Greek | Let's document it as undefined. If there is a compelling reason to throw an exception in the future, we can always do that. | 23:01 | |
| sorear | Undefined behavior or undefined result? | ||
| Paul_the_Greek | Undefined result. | 23:02 | |
| I'll find the correct place to document this. | |||
| dukeleto | Paul_the_Greek: you can't store an Undef in an integer register | 23:03 | |
| Paul_the_Greek | Right, so it will come out as some random integer. | ||
| That's what we mean by "undefined result." | 23:04 | ||
| I will word it as "the result is an arbitrary integer" or something like that. | |||
| Making sure not to imply that we have some special integer that indicates "undefined." | 23:05 | ||
| dalek | rrot-linear-algebra: a1189e5 | Whiteknight++ | t/harness: uncomment extra directories and run all tests. All tests pass |
||
| rrot-linear-algebra: 06e853d | Whiteknight++ | .gitignore: add generated html files to .gitignore |
|||
| dukeleto | whiteknight++ # getting all your tests passing | 23:06 | |
| whiteknight | dukeleto: and there are a LOT of tests in PLA now | 23:07 | |
| I don't know if you've played with it lately, but it's getting to be quite an impressive little library | |||
| dukeleto | whiteknight: it is definitely on my (ever-growing) list of parrot stuff to play with | 23:08 | |
| cotto_work | I wish I had the background to care about PLA. | ||
| dukeleto | whiteknight: it would be interested to benchmark PLA vs Math::MatrixReal from perl 5 | 23:09 | |
| s/interested/interesting/ | |||
| whiteknight | dukeleto: yes, that would be nice. I bet the perl5 version would win just because of Parrot method call overhead | ||
| though if you stuck to vtable calls, it would probably be quite competitive | |||
| dukeleto | cotto_work: yeah, it takes a special kind of nerd to get excited about linear algebra. i am one of those nerds :) | ||
| whiteknight: you don't know unless you benchmark it :) | 23:10 | ||
| whiteknight: PLA's memory footprint is probably better, but who knows | |||
| cotto_work | and a special type of nerd to get excited about Parrot, so the intersection is special indeed | ||
| dukeleto | cotto_work: mmmm, venn diagrams, .... | ||
| tcurtis | mmmm, set operations, .... | 23:11 | |
| cotto_work | mmmm. nerds. | 23:13 | |
| dukeleto | whiteknight: now that PLA is passing it's test suite, does that mean you will be hacking on matrixy now? | 23:14 | |
| plobsing: does your recent commit help with this TT? trac.parrot.org/parrot/ticket/1500 | 23:15 | ||
| whiteknight | dukeleto: entirely possible. I am at a good stopping point for now. I am trying to get a release out for PLA first | ||
| dukeleto | whiteknight: cool. i am gonna check out the repo and run the test suite right now :) | 23:17 | |
| plobsing | dukeleto: not really yet. it makes getting at op_info easier. unfortunately, AFAIK, opcode group information is not available at runtime. | ||
| but if and when it becomes available, it will most likely be accessible via op_info | |||
| dukeleto | plobsing: so it helps in the journey. that is good to hear | 23:19 | |
| whiteknight: have you thought of making PLA come with Kakapo? | 23:22 | ||
| whiteknight: i compiled pla successfully on 64bit linux, let's see if I can run your tests | 23:23 | ||
| whiteknight: the debian packages you list in the README seemed to have changed names | 23:26 | ||
| whiteknight: you could just ship a kakapo pbc file, it looks like. | 23:28 | ||
| wow. kakapo has a lot of stuff | 23:33 | ||
| whiteknight: gist.github.com/572779 <-- kakapo seems to be blowing up on the PLA test suite, for me | 23:36 | ||
| whiteknight: that is with parrot r48772 | |||
| whiteknight: when i run kakapo's test suite, it runs 0 files. that seems funky | 23:37 | ||
| Coke | msg kid51 r48875 - Please fork nqp-rx on github and patch that in the source. There's no point in updating the generated code in parrot. | 23:40 | |
| purl | Message for kid51 stored. | ||
| aloha | OK. I'll deliver the message. | ||
| dukeleto | www.bioperl.org/wiki/Using_Git <-- useful guide to crimp from for the parrot git docs | 23:41 | |
| Coke | msg Paul_the_Greek r48887 - why is that 2 regexes and not just {src/ops} !? | 23:42 | |
| purl | Message for paul_the_greek stored. | ||
| aloha | OK. I'll deliver the message. | ||
| Paul_the_Greek | Coke: It has to match slash and also the local directory separator. | ||
| I'm sure you can do that in one regex, but I couldn't figure out how. | 23:43 | ||
| Coke | Paul_the_Greek: it was matching the local directory separator. you added a hardcoded forward slash. | 23:46 | |
| so presumably, you (on windows!) needed the hardcoded forward slash. yes? | |||
| Paul_the_Greek | The idea was that forward slash always works, and then the local separator also works. | 23:47 | |
| They may be the same, or not. | |||
| Coke | but the local separator DID NOT work for you. yes? | ||
| in the case where local separator was \\ | |||
| Paul_the_Greek | On Windows, both / and \\ work. | ||
| Coke | then how were you getting the failure on \\ ? | 23:48 | |
| scratch that. | |||
| Paul_the_Greek | makefile uses /, but that wasn't being matched on Windows. | 23:49 | |
| Coke | so if / and \\ work for you, (and you added / even though theoretically (but not practically) working with \\), and / works everywhere else we care about... why not just kill the original regex and leave yours? | ||
| Paul_the_Greek | In case a path with \\ shows up in the headerizer. | 23:50 | |
| on Windows. | |||
| Coke | ... but you just said it's using / | ||
| Paul_the_Greek | makefile is using /. I could invoke the headerizer directly. | ||
| Or, in the future, configure could generate a makefile with \\. | 23:51 | ||
| Coke | no, it won't | ||
| Paul_the_Greek | Since both / and \\ work, shouldn't the headerizer handle that? | ||
| It's not an efficiency issue or anything. | |||
| Coke | as I specifically ripped all that out and used / everywhere, even on windows, because it works with far less code. | 23:52 | |
| Paul_the_Greek | (Note that this was not a unilateral decision.) | ||
| Coke | the "because I might run it from the command line" is the best reason I've heard, but I don't know anyone who does that, even on linux. | ||
| Paul_the_Greek | So you're saying we should just ignore config(slash)? | ||
| Coke | ... in the cases where it is a waste of time, yes. | 23:53 | |
| Paul_the_Greek | But surely you're not suggesting that extra test matters in the headerizer? | ||
| Coke | technical debt? | 23:54 | |
| purl | technical debt is the debt you build up of stuff you have to do later. c2.com/cgi/wiki?TechnicalDebt or www.media-landscape.com/yapc/2006-0...ndyLester/ | ||
| Paul_the_Greek | I'm not sure why it is, but I'm not trying to make some big case here. | ||
| We all just figured both separators should work. | 23:55 | ||
| I'm happy to remove the use of config(slash). | 23:56 | ||
| Coke | no, you gave a perfectly good reason to need it. | 23:57 | |
| I just committed a small change to document that so you don't get some jerk like me giving you a hard time. | 23:58 | ||
| also, note the one-character smaller regexp. | |||
| Paul_the_Greek | The slash configuration item is used in four *.pl files. | 23:59 | |
| Let me check ... | |||