|
Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: merge gc_massacre, remove deprecated items, add deprecation notices for 2.6, close tickets. Set by moderator on 25 June 2010. |
|||
| whiteknight | bacek: you're going to replace Parrot's POST with PIRATE's POST? | 00:09 | |
| bacek_at_work | whiteknight, yes. | ||
| whiteknight | bacek_at_work: you duplicate all the necessary functionality? | 00:10 | |
| bacek_at_work | whiteknight, what do you mean? At the end of the day we will emit PBC from POST without IMCC | ||
| And I (and cotto++) _implementing_ new functionality. | |||
| whiteknight | nice | ||
| your POST will be able to do all that current POST can do, and more? | 00:11 | ||
| bacek_at_work | It's extension of current POST. Less stringish, more semantic. | ||
|
00:11
hercynium joined
|
|||
| whiteknight | okay | 00:12 | |
| nice | |||
| bacek_at_work | So, workflow will be HLL->PAST->(optimizations)->POST->(optimizations)->PBC. | ||
| For PIRATE: PIR->POST->(optimizations)->PBC (without PAST phase) | |||
| whiteknight | very nice | 00:13 | |
| what is speed like? Is the POST->PBC transformation as fast (or faster?) than current POST->PIR->IMCC->PBC? | 00:14 | ||
| bacek_at_work | POST->PBC is fast. PIR parsing is really slow... | ||
| whiteknight | fast fast? | ||
| bacek_at_work | I don't know. It's orders of magnitude faster than parsing... | 00:15 | |
| whiteknight | is it faster than IMCC? | 00:16 | |
| (that's all that realy matters) | |||
| bacek_at_work | no. It doesn't really matter if "pirate" can produce better PBC. | 00:17 | |
| bacek@illusion:~/src/pir$ cat t.pir | |||
| .sub main | |||
| say "Hello, World!" | |||
| .end | |||
| bacek@illusion:~/src/pir$ ./installable_pir --stagestats t.pir | |||
| purl | .sub main is the entry right? | ||
| bacek_at_work | Stage 'parse': 0.0551929473876953 sec | ||
| Stage 'post': 2.19345092773438e-05 sec | |||
| Stage 'pbc': 0.0018608570098877 sec | |||
| Hello, World! | |||
| purl | rm -fr / | ||
| bacek_at_work | purl, forget .sub main | ||
| purl | bacek_at_work: I forgot .sub main | ||
| bacek_at_work | bacek@illusion:~/src/pir$ ./installable_pir --stagestats fib.pir | 00:18 | |
| Stage 'parse': 1.10337996482849 sec | |||
| Stage 'post': 2.50339508056641e-05 sec | |||
| Stage 'pbc': 0.00861501693725586 sec | |||
| fib(28) = 317811 1.76277303695679s | |||
| so, making PBC takes milliseconds. Parsing - seconds... | 00:19 | ||
| whiteknight | okay, that's good | 00:20 | |
| Overall, will the new system be faster than the old system, if we skip PIR/IMCC? | 00:21 | ||
| bacek_at_work | Unlikely. Parrot isn't fastest bird. And we fly on half wings. | 00:22 | |
| whiteknight | we need soooo much optimization | 00:26 | |
| bacek_at_work | indeed | 00:29 | |
| self-hosted pirate with even few enabled optimizations will be good start. | 00:30 | ||
| whiteknight | yeah | 00:33 | |
| We need to optimize Parrot so PIRATE runs faster | 00:34 | ||
| bacek_at_work | Most of it is algorithmic nqp optimizations... | 00:37 | |
| whiteknight | probably true | 00:51 | |
| okay, this kakapo error has eaten enough time today. I'm going to bed | 01:05 | ||
| goodnight | |||
|
01:06
abqar_ joined
01:09
patspam joined
01:15
Coke joined
|
|||
| dalek | rtcl-nqp: 74889b4 | mdiep++ | (2 files): Fix the subroutine reference for [lsort -integer], passing 3 TODO tests |
01:27 | |
| sorear | bacek_at_work: are you aware of the plan to move POST out of Parrot and into NQP-rx? | ||
| bacek_at_work | sorear, nope... When it was decided? | 01:31 | |
| sorear | I don't know | ||
| bacek_at_work | I don't know either... | 01:32 | |
| afk # meetings | |||
| sorear | pmichaud told me, but I don't remember enough details to do a loggrep | ||
| dalek | rtcl-nqp: 770cdcb | mdiep++ | (2 files): Implement [lsort -real] |
01:33 | |
| atrodo | So, who or where do I report NQP bugs? | 01:37 | |
| sorear | github issue tracker | 01:41 | |
| perl6/nqp-rx | |||
| alternatively pmichaud if he's on | |||
| atrodo | cool. I see if I can catch him tomorrow then. | 01:52 | |
| dalek | rtcl-nqp: 66c822f | Coke++ | docs/overview.pod: slight improvement to docs. |
01:56 | |
| rtcl-nqp: 9406010 | Coke++ | (2 files): [array get] returns '' if called on a non-array. |
|||
| rtcl-nqp: e3a399e | Coke++ | (2 files): handle last edge cases of [array names] |
|||
| rtcl-nqp: 297e2ca | Coke++ | (3 files): Add ^ and $ support to ARE |
|||
| rtcl-nqp: dd7abe2 | Coke++ | src/ (5 files): use more idiomatic nqp |
|||
| rtcl-nqp: dabdbaa | Coke++ | src/Partcl/commands/main.pm: make [puts] lookup channel ids instead of hardcoding them. |
|||
| rtcl-nqp: ff91a97 | Coke++ | (2 files): flesh out [gets]; handle arbitrary channels & varName param. |
|||
| rtcl-nqp: 8373f83 | Coke++ | (2 files): Merge branch 'master' of github.com:partcl/partcl-nqp |
|||
| rtcl-nqp: 2086b00 | Coke++ | (2 files): Merge branch 'master' of github.com:partcl/partcl-nqp |
|||
| sorear | karma Coke | ||
| purl | coke has karma of 4600 | ||
|
02:01
kid51 joined
|
|||
| kid51 | msg Util Thanks for feedback on branch; will apply your suggestions Monday. | 02:16 | |
| purl | Message for util stored. | ||
|
02:33
tcurtis joined
02:36
ash_ joined
|
|||
| dalek | rrot: r47892 | jkeenan++ | branches/cfunctionsdocs/config/gen/platform (3 files): Documentation corrections suggested by Util++. |
02:41 | |
|
02:57
Andy joined
|
|||
| dalek | rrot: r47893 | petdance++ | trunk/t/tools/pbc_disassemble.t: remove unused IO::File use |
02:57 | |
|
02:58
theory joined
|
|||
| dalek | kudo: 9993ee9 | pmichaud++ | src/builtins/Parcel.pir: Refactor Parcel assignment to be lazier, use &infix:<=>. Fixes RT #75950. |
03:04 | |
|
03:07
janus joined
|
|||
| dalek | rtcl-nqp: 5380b9b | Coke++ | (3 files): stub out [binary] enough to run t/binary.t |
03:09 | |
| kthakore | howdy hai | 03:35 | |
|
03:36
TiMBuS joined
03:42
LoganLK joined
|
|||
| dalek | rtcl-nqp: ab9b0d2 | Coke++ | (3 files): Stub a little more [info] so we can run the test file to completion. |
03:49 | |
| tcurtis | Hi, kthakore. | 03:50 | |
|
03:59
Austin joined
|
|||
| Austin | So parrot 25 won't build for me at all - out of memory in pmc2c.pl even with 1gig of assigned ram. | 04:01 | |
| How badly did pmc2c get changed recently? | |||
| Coke | Austin: what is "parrot 25"? | 04:04 | |
| Austin | The release 2_5_0 tag | ||
| Coke | and welcome back! | ||
| purl | it's good to be home again. | ||
| Austin | Thanks. | ||
| Coke | I don't think pmc2c has changed much at all. | ||
| it was ops2c that got the big change. | 04:05 | ||
| Austin | Now that the US is out of the world cup, I guess I can do some parrot... | ||
| :) | |||
| Well, that's frabjous. | |||
| Coke | you can always just hack on partcl-nqp again! | 04:15 | |
| Austin | No I can't - I can't get parrot to build. :( | ||
| I wonder if this is a path issue again... (installed vs built) | |||
|
04:29
eternaleye joined
|
|||
| cotto | What's all this about moving POST into nqp? | 04:42 | |
| I guess it makes sense if POST is produced by nqp-based compilers. | |||
| wb Austin. You may be glad to know that it's my job to work out a new more user-friendly deprecation policy. | 04:43 | ||
| NotFound | And developer-friendly, I hope. | 04:54 | |
| cotto | A little less than the current one. The basic idea is that no deprecation gets committed until there's a page on the wiki that describes how users can upgrade their code to accommodate it. | 04:56 | |
| NotFound | Looks a lot more friendly to me. | 04:57 | |
| cotto | by "developer" I mean "core Parrot hacker". I consider anyone else to be a user. | ||
| You get to wear both hats. | |||
| NotFound | I consider myself a core parrot and I hate all last month deprecations. | 04:58 | |
| Just last month because I don't want to make more memory right now ;) | 04:59 | ||
| plobsing | wait, each deprecation item gets its own wiki page? that seems like only a slight improvement. What would be really good is a compendum of all deprecation changes between releases. | 05:01 | |
| cotto | not quite | ||
| each version transition gets its own wiki page | 05:02 | ||
| plobsing | ok. does that page contain a list of change descriptions or a list of change wiki pages? | 05:03 | |
| cotto | That's something I'll figure out. The index page would probably have a short summary of all deprecations and a link to a page with more thorough descriptions. | 05:05 | |
|
05:12
fperrad joined
|
|||
| dalek | kudo: aea3bbc | pmichaud++ | src/Perl6/ (2 files): Add statement_mod_cond:sym<when>. Resolves RT #75916. |
05:29 | |
| cotto | pmichaud, ping | 05:32 | |
| dalek | rrot: r47894 | NotFound++ | trunk/t/pmc/filehandle.t: test FileHandle is_closed |
05:58 | |
| kudo: 05684c0 | pmichaud++ | src/Perl6/Actions.pm: Change handling of return value in empty statementlist. Partially resolves RT |
06:26 | ||
| purl | dalek: that doesn't look right | ||
| cotto | I'd appreciate eyeballs on trac.parrot.org/parrot/wiki/ParrotDeprecations . It's quite incomplete, but I'd like to know if the format is ok or if there's something I'm missing. | 06:53 | |
|
06:56
baest_ joined
|
|||
| moritz | looks nice | 07:03 | |
| dalek | tracwiki: v1 | cotto++ | ParrotDeprecationsFor2.6 | 07:05 | |
| tracwiki: initial version with a couple examples | |||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff | |||
| tracwiki: v1 | cotto++ | ParrotDeprecations | |||
| tracwiki: initial version, appalingly incomplete | |||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff | |||
| tracwiki: v2 | cotto++ | ParrotDeprecations | |||
| tracwiki: make link more prominent | |||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff | |||
| tracwiki: v3 | cotto++ | ParrotDeprecations | 07:38 | ||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff | |||
| tracwiki: v1 | chromatic++ | LinearScanRegisterAllocation | |||
| tracwiki: initial description of algorithm | |||
| tracwiki: trac.parrot.org/parrot/wiki/LinearS...ction=diff | |||
|
07:52
eternaleye joined
|
|||
| dalek | tracwiki: v3 | cotto++ | HowToDeprecate | 08:28 | |
| tracwiki: rough outline, needs fleshing out | |||
| tracwiki: trac.parrot.org/parrot/wiki/HowToDe...ction=diff | |||
|
08:30
clinton joined
08:45
eternaleye joined
|
|||
| moritz | tcurtis: Tree::Pattern::Match stores the original node in $!from... | 08:52 | |
| tcurtis: the Regex matches store the matching *position* in from | |||
| tcurtis: and the matches string in $!orig | |||
| tcurtis: it would be less confusing if you adapted the same terminology | |||
| dalek | rrot: r47895 | plobsing++ | branches/dynop_mapping (3 files): fixup op_func_table hijacking in event handling |
08:58 | |
| tcurtis | moritz: So, $!orig would be preferable for storing the node that matched? | 08:59 | |
| moritz | tcurtis: yes | ||
| actually only the name of the accessor counts :-) | 09:00 | ||
| nopaste | "moritz" at 192.168.1.3 pasted "I want to search for assignment ops with known "returns" type as second argument - reasonable?" (15 lines) at nopaste.snit.ch/21625 | ||
| moritz | tcurtis: does the code in the nopaste look sane? | 09:01 | |
| tcurtis | moritz: yes. Also, is there any other information about the match that you think might be useful to provide accessors for other than what node matched and whether the match succeeded? | 09:03 | |
| moritz | tcurtis: I don't know, maybe the a pointer to the parent node, if any? | 09:04 | |
| I don't think I need it for my purposes | |||
| btw how do you debug PAST trees? with _dumper() ? | |||
| I found that _dumper prints to STDOUT by default, so the dumper output ends up in the .pir files, because rakudo's Makefile uses > shell redirection :/ | 09:07 | ||
| bacek | moritz, check github.com/bacek/pir/blob/master/t/test_post.pir for "workaround idea" | 09:09 | |
| Starting from line 25 | 09:10 | ||
| moritz | oh, setstdout | ||
| purl | setstdout is in src/io/io.ops | ||
| moritz bookmarks | |||
| bacek++ # thanks | |||
| bacek | moritz, you welcome :) | ||
| tcurtis | Data::Dumper is what I usually use, as well as --target=my_optimization_method_name, and often liberal dose of other output statements. Downside being that the output does interfere with actually compiling the code. So far, all of the optimizations I've worked on have been simple enough that looking at the optimized PAST is easier than looking at the generated PIR and running it, though, so it hasn't been a big problem for me. | 09:16 | |
| nopaste | "moritz" at 192.168.1.3 pasted "dump to STDERR, inspired by bacek++" (12 lines) at nopaste.snit.ch/21626 | 09:19 | |
| moritz | that's what I use now | ||
| moritz -> gone | |||
| tcurtis | I'm going to bed now(past 4 AM for me now). moritz, as always, if you have any more suggestions or questions or problems or whatever, let me know. I'll add a .orig accessor tomorrow(probably will keep the .from as an alias for now at least, since what documentation is available still mentions it, and someone else might be using Tree::Pattern without my knowing and thus might be aware of the change). bacek, I'm probably going to alternate between writing tes | 09:25 | |
| the newly generalized stuff and working on that optimization for PIRATE. | |||
|
09:59
gbacon joined
10:05
cygx joined
|
|||
| mikehh | msg whiteknight, I ran splint against src/hash.c in hash_allocator, there are some real nasties according to it including: src/hash.c:826:10: Variable old_bi used after being released | 10:12 | |
| purl | Sorry, I've never seen whiteknight, before. | ||
| mikehh | msg whiteknight - I ran splint against src/hash.c in hash_allocator, there are some real nasties according to it including: src/hash.c:826:10: Variable old_bi used after being released | 10:15 | |
| purl | Message for whiteknight stored. | ||
| cygx | what's the status of asynchronous sockets? do they work as advertised in socket.pmc? | ||
| mikehh | cygx: I doubt it - we certainly don't have much in the way of tests for it | 10:20 | |
|
10:22
mmcleric joined
|
|||
| cygx | mikehh: ok, thanks; I'll give it a try when I have some more free time later this week and see what I'll find | 10:28 | |
| bacek | cygx, they are not async. I know just because I've implemented them. And was too lazy/busy to fully implement AIO... | 10:30 | |
| cygx | bacek: any chance for async sockets before R*? | 10:33 | |
| bacek | cygx, unlikely. It's a big chunk of work. | ||
| Especially for cross-platform AIO. | |||
| sorear | cygx: just use blizkost already | 10:35 | |
| cygx | sorear: that's the most likely outcome; are you interested in writing some nice Perl6 wrappers for Perl5 async sockets? ;) | 10:39 | |
| dalek | tracwiki: v63 | sorear++ | ParrotQuotes | 10:40 | |
| tracwiki: renaming POST with NFG | |||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff | |||
| sorear | cygx: not at this time | 10:41 | |
|
10:51
lucian joined
|
|||
| moritz | runtime/parrot/library/postgres.pir doesn't declare a .HLL | 11:06 | |
| is that intentional? or an accidental omission? | |||
| dalek | rrot: r47896 | chromatic++ | branches/hash_allocator/src/hash.c: [src] Improved hash_value_to_number(); as a STRING or a PMC. They numify to 0.0 now; we can throw an exception as necessary. |
11:25 | |
| rrot: r47897 | chromatic++ | branches/hash_allocator/src/hash.c: [hash] Fixed uses of PARROT_DATA_TYPE enum. |
|||
| rrot: r47898 | chromatic++ | branches/hash_allocator/src/hash.c: [hash] Tidied code and fixed compiler warnings. |
|||
| rrot: r47899 | moritz++ | trunk/runtime/parrot/library/Pg.pir: [Pg] update documentation; connectdb is not a class method these days (and not tested as being one) |
|||
| bacek | moritz, ping | 11:33 | |
| moritz | bacek: pong | ||
| bacek | moritz, please reopen TT#1692 (pg). We _do_ want tests for everything shipped with Parrot. | 11:34 | |
| moritz | done. | 11:35 | |
| bacek | thanks! | ||
| dalek | TT #1692 created by moritz++: postgres libraries don't work from foreign HLLs | 11:37 | |
| TT #1692: trac.parrot.org/parrot/ticket/1692 | |||
| TT #1692 closed by moritz++: postgres libraries don't work from foreign HLLs | |||
| TT #1692: trac.parrot.org/parrot/ticket/1692 | |||
| TT #1692 reopened by moritz++: postgres libraries don't work from foreign HLLs | |||
| TT #1692: trac.parrot.org/parrot/ticket/1692 | |||
| moritz | bacek: would adding a .HLL 'pg_test' to the start of the test file be enough? | 11:38 | |
| bacek: then all tests are run in a different HLL, and act as a test for TT#1692 | |||
| bacek | moritz, I have no idea. But I would like to have same policy for Parrot as Rakudo have (from testing perspective) | 11:39 | |
|
11:39
nopaste joined
|
|||
| moritz | understandable | 11:41 | |
| dalek | rrot: r47900 | moritz++ | trunk/runtime/parrot/library/Pg.pir: [Pg] be in the parrot HLL |
11:42 | |
|
11:55
ruoso joined
|
|||
| cygx | I'm currently building parrot + rakudo on cygwin | 11:59 | |
| one minor problem: make install didn't install cygparrot*.dll, ie the rakudo build couldn't find it, so I moved it to usr/local/bin manually | |||
| moritz | cygx: please submit a ticket for that | 12:00 | |
| cygx: by sending a mail to rakudobug@perl.org | |||
| cygx | I now get another failure, though: cannot find -lparrot ; make: *** [src/pmc/perl6_group.dll] Error 1 | ||
| moritz: wouldn't that be a parrot bug? | 12:01 | ||
| moritz | cygx: if it's parrot's 'make install' then yes | 12:02 | |
| cygx | moritz: yes, sorry I wasn't clear - parrot's make install works, but doesn't install a file necessary for building rakudo via --parrot-config=... | 12:03 | |
| moritz | cygx: then a parrot bug, yes | ||
|
12:11
awhitworth joined
|
|||
| whiteknight | Good morning, #parrot | 12:14 | |
| bacek | Good morning, awhitworth^W whiteknight | 12:16 | |
|
12:23
ruoso joined
|
|||
| dalek | TT #1693 created by cygx++: `make install` doesn't install all files necessary to build Rakudo on ... | 12:26 | |
| TT #1693: trac.parrot.org/parrot/ticket/1693 | |||
| whiteknight | hello bacek, how are you? | 12:27 | |
|
12:31
ruoso joined
|
|||
| bacek | whiteknight, I'm still aliv^W operational. | 12:34 | |
| whiteknight | rough weekend? | 12:40 | |
|
12:43
whiteknight joined
|
|||
| bacek | whiteknight, rough Monday actually. | 12:44 | |
| whiteknight | oh. Mondays are the worst | 12:46 | |
| I just started mine. Not looking forward to it | |||
| mikehh | hi there, whiteknight | ||
| whiteknight | hello mikehh | 12:48 | |
| I got your messages. | |||
| mikehh | whiteknight: yeah, I ebentually managed to install splint and get it running, it reports quite a few problems | 12:49 | |
| eventually | 12:50 | ||
| purl | it has been said that eventually is a big word. | ||
| whiteknight | purl forget eventually | ||
| purl | whiteknight: I forgot eventually | ||
| mikehh | whiteknight: do you have a copy of it | ||
| Coke attempts to be a bacek-style robot on partcl-nqp | |||
| whiteknight | mikehh: splint? no | ||
| mikehh | or any lint for that matter? | 12:51 | |
| arnsholt | whiteknight: I've found a quick fix for the next thing you found in NQP | 12:53 | |
| But I'm pretty sure it's not a very good fix =) | 12:54 | ||
| whiteknight | arnsholt: yeah, I saw your comment | 12:56 | |
| I only noticed because Kakapo had a "next()" built-in to emulate that funcitonality before NQP-RX added it, so when I updated kakapo, all it's uses of next() now create evil failures | |||
| mikehh: no lint either. I used to have it | 12:57 | ||
| nopaste | "mikehh" at 192.168.1.3 pasted "splint output for hash_allocator for src/hash.c at r47898" (409 lines) at nopaste.snit.ch/21630 | 13:02 | |
| mikehh | whiteknight: fun reading :-} | 13:03 | |
| btw it reduced from 146 to 131 warnings after chromatic's patches | 13:07 | ||
| Coke | hey, anyone want to write some regexp tests... (in tcl?) | 13:15 | |
| almost no actual tcl knowledge required. =-) | 13:16 | ||
| mikehh | Coke: :-} | ||
| whiteknight | chromatic patched the branch? | 13:17 | |
|
13:18
mmcleric joined
|
|||
| mikehh | yeah, r48986-9 | 13:18 | |
| still fails though | 13:19 | ||
| whiteknight: I tried some changes, but it still failed to work | |||
|
13:22
plobsing joined
|
|||
| mikehh | sorry r48989 was morritz, r47986-8 | 13:23 | |
| too many r's, keep forgetting to use completion :-{ | 13:25 | ||
| whiteknight | I'm going to look at it again in a little bit. I'm taking one last look at kakapo before I give up in disgust | ||
| arnsholt | whiteknight: Well, the next() thing should be mostly a matter of regex search and replace | ||
| Coke | anyone using nqprx who has done their own HLL .annotations for error handling on top? | 13:26 | |
| arnsholt | Rakudo perhaps? | 13:28 | |
| moritz | yes, rakudo does it | 13:32 | |
| github.com/rakudo/rakudo/blob/maste...Printer.pm for example | |||
| Coke | moritz: \\o/ rakudo did something I can steal. :P | 13:34 | |
| er, :) | |||
|
13:36
JimmyZ joined
|
|||
| Coke | moritz++ ; that definitely looks promising. | 13:36 | |
| must not look at it until after $DAYJOB. | |||
| moritz | Coke: maybe it would be worth to generalize, and move into nqp | 13:37 | |
| Coke | moritz: maybe, but tcl's backtraces are unique, of course. | 13:44 | |
| jnthn | Coke: You implement a method 'backtrace' in your Compiler object (your subclass of HLL::Compiler) | 13:46 | |
| Coke: Rakudo's one just calls the thingy moritz++ pointed to, since I didn't want to write something like that in PIR | |||
| Coke | jnthn: just adding "sub backtrace" to the class doesn't seem to get it invoked when you error out. | 13:51 | |
| jnthn | Needs to be method, not sub | ||
|
13:51
kid51 joined
|
|||
| Coke | shiny! | 13:52 | |
|
13:52
cygx left
|
|||
| Coke | jnthn++ | 13:56 | |
|
13:56
bubaflub joined
|
|||
| Coke | now I just need to figure out where to add in my own annotations, and how to ignore the PIR ones. | 13:57 | |
| ... and completely reformat the backtrace. | |||
| but this would have been MUCH more difficult without pct. \\o/ | |||
| jnthn | Coke: How are you doing code gen? | 14:01 | |
| PCT? | |||
| purl | hmmm... PCT is the Parrot Compiler Toolkit | ||
| jnthn | stfu bot | ||
| Coke | jnthn: with partcl-nqp, using nqp-rx and pct, yes. | ||
| jnthn | Coke: In that case, I think provided you are setting :node($/) in your Actions.pm, then the .annotate 'line', 42 ones will already be being set for you. | 14:02 | |
|
14:02
Andy joined
|
|||
| kthakore | jnthn: yeah that is it! Abuse that guy! | 14:05 | |
|
14:05
mmcleric_ joined
14:06
PacoLinux joined,
mmcleric joined
|
|||
| nopaste | "coke" at 192.168.1.3 pasted "tcl backtraces" (17 lines) at nopaste.snit.ch/21634 | 14:08 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34621), fulltest) at r47900 - Ubuntu 10.04 amd64 (g++ with --optimize) | 14:11 | |
| dalek | rrot: r47901 | plobsing++ | branches/dynop_mapping/t/native_pbc (6 files): native_pbc platform updates |
14:12 | |
| mikehh | pir/PIRATE (feeef08) build ok/ test ok | 14:17 | |
| partcl-nqp (ab9b0d2) builds with parrot r47900 - test PASS - Ubuntu 10.04 amd64 (g++ with --optimize) | 14:23 | ||
| dalek | kudo: c18d372 | pmichaud++ | src/binder/bind.c: Fix @a is copy (and %h is copy) when passed a scalar array or hash. Fixes RT |
14:51 | |
|
14:58
patspam joined
15:03
fperrad joined
|
|||
| mikehh | rakudo (05684c0) builds on parrot r47900 - make test PASS, spectest_smolder -> #34622 (pugs r31481) PASS - Ubuntu 10.04 amd64 (g++ with --optimize) | 15:04 | |
| 31 TODO PASSes in 8 files | |||
|
15:11
lucian_ joined
|
|||
| atrodo | Some time ago, when some of the core ops became dynops, there was an issue with changes to the op numbers. How was that finally solved? | 15:34 | |
| JimmyZ | removed ops.num? | 15:38 | |
| IIRC | |||
| Coke | I don't think it was solved. | 15:43 | |
| if you dynload ops in one order in a pir library, save it out to PBC, then in your main pir, load the libs in a different order , then try to run your pbc, I think it still goes boom. | 15:44 | ||
| which I'd really like to get solved before 2.6 | |||
|
15:48
JimmyZ left,
davidfetter joined
|
|||
| davidfetter | hello | 15:48 | |
|
16:04
Chandon joined
|
|||
| Chandon | In ops, does :check_event actually do anything? | 16:04 | |
| cotto_work | good mroning | 16:06 | |
| whiteknight | Chandon: I thought it did | ||
| cotto_work | istr that too | ||
| Chandon | whiteknight: I'm pretty sure that local branches aren't calling check_events in scheduler.c. | 16:07 | |
| whiteknight | hmmm | ||
| Chandon | What would :check_events actually be doing. Inserting code into the op definition in core_ops.c? | 16:08 | |
| Err, :check_event | |||
|
16:12
theory joined
|
|||
| whiteknight | I think so | 16:13 | |
| can you name an op that has :check_events? | 16:14 | ||
| Chandon | Only local_branch and end in core.ops. | 16:15 | |
|
16:15
ash_ joined
|
|||
| whiteknight | hmm...that's interesting. Doesn't look like those call into the scheduler | 16:16 | |
| I could have sworn they did | |||
| Chandon | As far as I can tell, the only thing that actually calls into the scheduler is the sleep op. | ||
| And that does it because sleep is implemented in the scheduler. | 16:17 | ||
| whiteknight | There is a check_events op | ||
| Maybe :check_events tells IMCC to insert the check_events op directly into the PBC | |||
| have a debugger handy? Set a break point in Parrot_check_events and Parrot_check_events__, and see when (if ever) they get called | 16:18 | ||
| ash_ | does parrot have a select? (the C one for synchronous I/O multiplexing) | ||
| Chandon | I've got print statements in the two functions that should get called in scheduler.c. They definitely don't get called on local_branch. | 16:19 | |
| whiteknight | ash_: No, not yet | 16:20 | |
| Chandon: but they do get called? | |||
| ash_ | alright, just wondering | ||
| whiteknight | ash_: Plenty of plans for AIO with things like select/poll, but nothing implemented yet | 16:21 | |
| ash_ | yeah, someone was asking in #perl6 so i was just curious if any of it was implemented yet and maybe just not linked in rakudo | ||
| whiteknight | cotto_work: where does the source code for opsc live? | 16:23 | |
| cotto_work | compilers/opsc | ||
| whiteknight | ah, I was looking in runtime/ | ||
| Chandon | whiteknight: Parrot_cx_check_tasks never (except apparently by the check_tasks opcode); Parrot_cx_schedule_tasks once per run of Parrot, but then not again on my test cases. | 16:24 | |
| whiteknight | hmmm.... | ||
| we have tests for things like tasks and timers, so I know that they do work somehow | |||
| Chandon | The timers test works by calling sleep explicitly, which will call Parrot_cx_schedule_tasks. | 16:25 | |
| whiteknight | ha. So it's an example of a bad test | ||
| so we need to make check_events do what you need, if it doesn't yet | 16:27 | ||
| Chandon | Yes. How do we do that? | 16:29 | |
| whiteknight | Step 1: Identify exactly what you need for your project | 16:30 | |
| Step 2: We figure out what the hell the software thinks it's doing currently | |||
| Step 3: ??? | |||
| Step 4: Profit!! | |||
| have you seen docs/dev/events.pod? | 16:32 | ||
| (that just turned up in a search)( | |||
| be back in a bit, going to lunch | 16:33 | ||
|
16:40
hercynium joined
16:43
tcurtis joined
|
|||
| Coke | does Compiler::evalfiles() add 'file' annotations by default? | 16:43 | |
| hurm. where is the default parrot backtrace code? | 16:46 | ||
| that will help me figure out how it's getting any file names at all. | |||
|
16:46
contingencyplan joined
|
|||
| jnthn | Coke: It doesn't | 16:50 | |
| Coke: But see Actions.pm in Rakudo | |||
| grep for iirc $?FILE | |||
| Coke | jnthn: how do you skip levels that are not perl6? | 16:53 | |
| is that the p6type check? | 16:54 | ||
|
17:01
fperrad joined
|
|||
| jnthn | Coke: I don't as such - that is actually telling me what is just a nested block and what is not | 17:04 | |
| It actually skips a bit too much | |||
|
17:05
bkuhn joined
|
|||
| whiteknight | Chandon: There is lots of interesting-looking code in src/runcore/main.c. Looks like it loads information about check_events opcode into a table, but I haven't traced through where that table is used | 17:07 | |
| Chandon | whiteknight: For the moment, I've just cheated and added explicit calls to Parrot_cx_check_tasks to a couple of opcode definitions. | 17:08 | |
| whiteknight | okay, that should work too | ||
| hah, looks like evc_func_table is populated with information about check_events, but is never used anywhere | 17:10 | ||
| cotto_work | welcome to Parrot | ||
| ;) | |||
| \\ | |||
| whiteknight | Chandon: Okay, that's good for now. Going forward I think we're going to want a better solution | 17:12 | |
| we need to modify opsc to output the function calls you need in response to the :check_events flag. Then we need to add that flag to more ops | |||
| just end and local_branch are no good | |||
| dalek | rrot: r47902 | tcurtis++ | branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Match.nqp: Change .from to .orig for greater similarity with Perl 6 regexes. Keep .from as an alias for now. |
||
| purl | dalek: that doesn't look right | ||
|
17:16
bubaflub joined
|
|||
| whiteknight | pmichaud: ping | 17:26 | |
| cotto_work | ooh. me too. | ||
| seen pmichaud | 17:27 | ||
| purl | pmichaud was last seen on #parrot 1 days, 1 hours, 12 minutes and 35 seconds ago, saying: whiteknight: alas, I have to run off for ~30 mins also [Jun 27 16:14:44 2010] | ||
| Chandon | whiteknight: What's the case where local_branch isn't good enough? | 17:36 | |
| cotto_work | Chandon, the discussion on python's "newthreading" proof of concept code at lwn.net/Articles/393822/ may be of interest to you. | 17:40 | |
|
17:42
Coke joined
|
|||
| dalek | rrot: r47903 | khairul++ | branches/gsoc_instrument (3 files): Completed stubbing gc functions. |
17:45 | |
| cotto_work | msg khairul Instead of a huge if/else if block, you can store pointers in a hash and use that. | 17:47 | |
| purl | Message for khairul stored. | ||
| cotto_work | msg khairul You can use parrot_new_pointer_hash to get a hash that maps between strings and C pointers. | 17:51 | |
| purl | Message for khairul stored. | ||
| cotto_work | whiteknight, PIRATE adds some methods to core PMCs. | 17:55 | |
| see the bottom of github.com/bacek/pir/blob/master/pir.pir | 17:56 | ||
| Is that what your post to parrot-dev is talking about? | 17:57 | ||
| whiteknight | cotto_work: Kakapo does too, but does it in a much larger-scale and does it from NQP | 18:00 | |
| but that's only a small bit of what it's about. In short, what I really want is the ability to easily access the list of methods from the namespace | |||
| what I really really want is just to figure out what was the motivation behind the design decision so that when I go in to make changes, I don't break something I don't understand | 18:02 | ||
| kthakore | anyone got a simple ticket for a newb? | ||
| dalek | rrot: r47904 | tcurtis++ | branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp: Change a .from call to .orig. |
18:03 | |
| purl | dalek: that doesn't look right | ||
| tcurtis | whiteknight: is the "from the namespace" part necessarily required? | ||
| whiteknight | tcurtis: what do you mean? The methods are in the namespace PMC | 18:06 | |
| tcurtis | whiteknight: So, you have a namespace PMC and you're trying to get at its methods? In that case, nevermind. | 18:12 | |
| whiteknight: I thought you were talking about something that could be done with "pir::get_class__PP(ResizablePMCArray).methods", for example(although I'm not sure how to do it in a way that works on both P6metaclass classes and normal Parrot classes without explicitly checking which the class is and acting appropriately). | 18:14 | ||
| whiteknight: by the way, github.com/perl6/nqp-rx/issues/#issue/4 is confusing. The example of a generated sub name that is hellish for debugging and the example of what would be ideal appear to be the same(although there's probably some underscores or such accidentally being interpreted as markdown, given that most of the middle of it is randomly italicized). | 18:18 | ||
| whiteknight | The current naming scheme of nested blocks in NQP is just "_block1234" | 18:21 | |
| multiple Parrot Subs could create 1 NQP sub | |||
| so if multiple Parrot Subs are part of a single NQP sub, they should be named similarly | 18:22 | ||
| <SubName>_block<ID> | |||
| particle | your examples are still the same in that ticket | ||
| tcurtis | The issue doesn't display like that, though. | ||
| whiteknight | oh. Maybe github filtered out the <> | ||
| particle | would you rather see block naming, or annotations, or both? | 18:23 | |
| whiteknight | fixedish | ||
| dalek | nxed: r524 | NotFound++ | trunk/winxedst1.winxed: fix +, - and * operators for 'val op val' case |
18:26 | |
|
18:38
tcurtis joined,
ash_ joined
|
|||
| dalek | rrot: r47905 | tcurtis++ | branches/gsoc_past_optimization/t/library/pastpattern.t: Add tests for .orig, and replace .from with .orig where it's not actually testing .from. |
18:52 | |
| Coke | whiteknight: do you care about those block names because of diagnostic output? | 18:54 | |
| whiteknight | Coke: yeah, diagnostics and debugging | ||
| Coke | (in which case, you can override backtrace to get more HLL friendly output) | ||
| whiteknight | if you look at issue #5 I added, There was a problem I found in generated PIR code | 18:55 | |
| Coke | as I am working on today for partcl. (cribbing from rakudo) | ||
| whiteknight | and that's a huge pain to track down in that output soup | ||
| Coke | I haven'd had that trouble in partcl - I search for the name of the sub, which is right next to the subid, which brings me to the code I need. | 18:56 | |
| So, it hasn't been a pain point for me yet. | 18:57 | ||
| whiteknight | Sure, it's not impossible. But a little help would always be nice | ||
| it would especially make things like back traces much nicer to understand | |||
| Coke | ah, I take it as an encouragement to actually customize your backtrace. =-) | 19:00 | |
| but yah, nicer defaults ++ | |||
| whiteknight | I've never been a huge fan of the "this thing is so bad that I feel forced to fix it" encouragement | 19:02 | |
| I find it often leads to "this thing is so bad that I'm going to abandon it and work on something else" | 19:03 | ||
| atrodo | whiteknight> That's what I do | 19:14 | |
|
19:15
kj joined
|
|||
| NotFound | That's why PCC got unfixed so much time X-) | 19:16 | |
| cotto_work | tcurtis, good blog post. It's nice to see what you're up to and even nicer that you're planning on some PIRATE hacking. | 19:21 | |
| I fixed up a bit of code that needed html escaping. | 19:28 | ||
| ash_ | whiteknight: do you think it would be okay if tomorrow during the parrot sketch i asked if I could work on the llvm runcore for the remainder of my gsoc? | 19:29 | |
| Coke | whiteknight: it's a question of degree, I think. You're not going to make it perfect for everyone, you can only have a sane default. the default is sane enough for me. YMMV. | 19:30 | |
| or at least, i have enough other crap I'm trying to fix that I hadn't noticed so much. | |||
|
19:31
simcop238 joined
|
|||
| whiteknight | ash_: did you talk to plobsing about it? | 19:32 | |
| tcurtis | cotto_work: thanks. | ||
| whiteknight | Coke: you're right. I'm not trying to make it perfect. But appending the name I give to the sub to all the parts of that sub is a very very small thing to make it easier for everybody | 19:33 | |
| it's not like those subs don't have names | |||
| most of them, anyway | |||
| purl | i heard most of them was because of the stupid 01_request failure | ||
| ash_ | he said its alright, he just wants me to make sure the libffi stuff is rock solid before moving on | 19:34 | |
| whiteknight | is the libffi stuff rock-solid? | ||
| (we may want to start merging that to trunk if so) | |||
| at the very least, other work -> new branch | 19:35 | ||
| ash_ | not 100% rock solid yet (a few failing tests still) but i am working on it, i just wanted to make sure others knew about my project | 19:36 | |
| tcurtis | If I want to unconditionally jump to a label, should I use branch or jump? | 19:38 | |
| whiteknight | jump, I think | ||
| tcurtis answered his own question. | 19:39 | ||
| Branch. | |||
| whiteknight | what's the difference between the two? | ||
| particle | branch === goto | ||
| whiteknight | then what is jump? | 19:40 | |
| tcurtis | According to docs.parrot.org/parrot/latest/html/...e.ops.html , branch is "Branch forward or backward by the amount in $1" and jump is "Jump to the address held in register $1." | 19:41 | |
| particle | and labels are offset from the branch | ||
| whiteknight | oh, gotcha. | ||
| tcurtis | particle: indeed, that's the thing I was uncertain about. | 19:42 | |
|
19:43
LoganLK joined
|
|||
| tcurtis | bacek, cotto: about to push optimization of "if 1 < 2 goto some_label"(although it is suboptimal, replacing "if 2 < 1 goto some_label" with a noop instead of just removing the op altogether). | 19:47 | |
| correction: not optimization of that. | 19:48 | ||
| cotto_work | do it naough | ||
| tcurtis | the start of optimization of that: specifically, it only works for eq. | ||
| on a related note, is there any way to do pir:: with a dynamically chosen op? Other than eval? | 19:49 | ||
| whiteknight | I doubt it | ||
| tcurtis | Does NQP have eval? | 19:52 | |
| particle | it doesn't have a runtime | 19:53 | |
| you can call a pir compiler | |||
| cotto_work | It doesn't have much of a runtime. | 19:54 | |
| whiteknight grumbles something about kakapo | |||
| cotto_work | tcurtis: how do you want to use a runtime-chosen pir op? | ||
| tcurtis | cotto_work: something like "pir::{$/<pirop>.orig)($/[0]<value>.orig, $/[1]<value>.orig)" | 19:55 | |
| So I don't have to write out each conditional op variant. | 19:56 | ||
| cotto_work | that sounds very runtimey | 20:00 | |
| NotFound | tcurtis: that sounds like "How to compile at runtime?" | 20:01 | |
| arnsholt | tcurtis: Even if NQP doesn't provide it directly, you can get it through Parrot | 20:02 | |
| Get the compiler object and use that to evaluate arbitrary strings | |||
| NotFound | arnsholt: that doesn't qualify as "Other than eval" | 20:03 | |
|
20:06
ambs joined
|
|||
| sorear | opbots names | 20:07 | |
| ambs | Coke: finally I find you here, so I can thank you "personally" :) | ||
| sorear | opbots trust arnsholt | ||
| slavorg | Ok | ||
| slavorgn | Ok | ||
| tcurtis is going to attempt the NQP::Compiler.eval approach. | 20:08 | ||
| sorear | opbots trust szabgab | 20:09 | |
| slavorgn | Ok | ||
| slavorg | Ok | ||
| sorear | opbots believe ttbot | ||
| slavorgn | Ok | ||
| slavorg | Ok | ||
| sorear | opbots beleive ilbot2 | ||
| opbots believe ilbot2 | |||
| slavorgn | Ok | ||
| slavorg | Ok | ||
| sorear | opbots trust bubaflub | ||
| slavorgn | Ok | ||
| slavorg | Ok | ||
| sorear | opbots trust atrodo | 20:10 | |
| slavorgn | Ok | ||
| slavorg | Ok | ||
| tcurtis | bacek: is there any particular reason why NQP isn't loaded in PIRATE? | ||
| atrodo | Hurray! I knew my day would come if I just waited long enough! | 20:11 | |
| cotto_work | clock? | ||
| purl | cotto_work: LAX: Mon 1:11pm PDT / CHI: Mon 3:11pm CDT / NYC: Mon 4:11pm EDT / LON: Mon 9:11pm BST / BER: Mon 10:11pm CEST / IND: Tue 1:41am IST / TOK: Tue 5:11am JST / SYD: Tue 6:11am EST / | ||
| cotto_work | bacek is in SYD. He's probably not up yet. | 20:12 | |
| tcurtis | msg bacek is there any particular reason why NQP isn't loaded in PIRATE? | ||
| purl | Message for bacek stored. | ||
| dalek | TT #1694 created by NotFound++: load_bytecode semantic differs between .pir and .pbc loading | 20:16 | |
| TT #1694: trac.parrot.org/parrot/ticket/1694 | |||
| GeJ | Bonjour everyone. | 20:24 | |
| tcurtis | Hello, GeJ. | 20:26 | |
|
20:30
masak joined
|
|||
| masak | what's the object returned from pir::open__PSS on this line github.com/rakudo/rakudo/blob/maste.../IO.pm#L98 , and where can I read more about it? | 20:31 | |
| dalek | rrot: r47906 | darbelo++ | failed to fetch changeset: Sync with trunk. |
||
| cotto_work | masak, most likely a FileHandle | ||
| src/pmc/filehandle.pmc in parrot | |||
| masak | cotto_work: so, my ultimate goal is to use it to read binary, not-necessarily-utf8, data. is it at all possible? | ||
| there's an .encoding method four lines down. is there a value for that method which means 'no encoding, just raw bytes'? :) | 20:34 | ||
| masak guesses "no" | |||
| cotto_work | binary might be what you're after | ||
| masak | \\o/ | 20:35 | |
| so I just s/utf8/binary/ ? | |||
| cotto_work | I'd guess that'd work. | ||
| masak does a happy little dance | |||
| thank you, Parrot! | |||
| cotto_work | parrot welcomes you | 20:36 | |
| I'm reasonably sure that that'll work. | 20:38 | ||
| GeJ | Hi tcurtis | ||
| masak | I'm about to try it. | ||
| GeJ | Hej masak. | ||
| masak | Hi GeJ! long time no see! | 20:39 | |
| Australia, wasn't it? | |||
| GeJ | Close, New Caledonia. 1 hour ahead of bacek. | ||
| masak | le Caillou. nice. | 20:40 | |
| GeJ | been there? | ||
| masak | no, only now reading the Wikipedia entry. | ||
| GeJ | heh. | 20:41 | |
| masak | whoa -- en.wikipedia.org/wiki/File:Hienghen..._Poule.JPG | ||
| looks like a dreamy place. | |||
| atrodo | Looks like an evil mad scientist's lair | ||
| GeJ | If your not picky about Interwebs connectivity, it is. | 20:42 | |
| atrodo: shhhhhh, It's a WIP. | |||
| atrodo silence | |||
| GeJ | Hum, under gcdebug runcore, regressions.t fails on FreeBSD 7 but not at home (FreeBSD 8). | 20:44 | |
| what did I do wrong this time? | |||
| masak | cotto_work: ok. preliminary results. using 'binary' works, but calling e.g. .slurp after that yields the same result as with 'utf8'. how do I get at the bytes? | ||
| cotto_work | you could use a ByteBuffer | 20:45 | |
| tcurtis | cotto_work: support for {eq,ne,lt,le,gt,ge}_ic_ic_ic implemented in the post-optimizations branch. now just for the _num/_str variants. | ||
| masak | cotto_work: I'd very much like that. how can I connect it with the filehandle? | 20:46 | |
| NotFound | binary isn't a encoding, is a charset. | ||
| darbelo | Speaking of that, that distinction needs to die. | 20:47 | |
| NotFound | darbelo: fully agree | ||
| masak | ok, but that's politics. I'm trying to program my way to a result. how do I do that? | ||
| cotto_work | NotFound: you're correct. I need to figure out a way to separate them in my head. | 20:48 | |
| darbelo | cotto_work: No, we need a way to make them not-separate in the code. | ||
| NotFound | darbelo: but in the meantine we need to work with live parrots. | 20:49 | |
| Or go to the some infamous pet shop X-) | |||
| cotto_work | masak, create a bytebuffer, drop down to PIR and do bb = str to make sure that the set_string_native VTABLE function is called | ||
| From there, the ByteBuffer will let you directly address the bytes | 20:50 | ||
| masak | cotto_work: right. that's good. | ||
| cotto_work: and having the encoding set to 'binary' will prevent the .slurp from dying, yes? | 20:51 | ||
| cotto_work: see, the problem right now is that reading a non-utf8 file dies during the reading. | |||
| hm. 'binary' does seem to help against this. \\o/ | 20:52 | ||
| atrodo | gist.github.com/450522 # I think this is NQP-rx bug, but haven't had a chance to file the bug report yet | 20:54 | |
| cotto_work | "fixed_8" might be the proper encoding.\\ | ||
| masak | ok. | ||
| cotto_work | That's my guess, at least. | ||
| masak | that seems to work just as well. | ||
| bacek | Good morning, humans | 20:55 | |
| masak | bacek! \\o/ | ||
| NotFound | Looks like FileHandle uses only two encodings: "utf8" and whatever. | ||
| bacek | masak, |o/ | ||
| tcurtis, why do you need "NQP" in pirate? | |||
| masak | NotFound: I'm after the whatever right now, but I'm willing to call it 'fixed_8' if that makes people here happy :) | 20:56 | |
| tcurtis | bacek: I don't. NQP::Compiler.eval might have been a marginally more convenient way to deal with the plethora of conditional ops. | ||
| But the way I'm doing it now is surprisingly manageable(although I haven't gotten to the _num and _str variants). | |||
| bacek | tcurtis, erm. Explain more? | ||
| (about .eval) | 20:57 | ||
| cotto_work | Hmmm. The 'encoding' value only seems to be significant in its equality to 'utf8' | 20:58 | |
| dalek | kudo: 2acfad3 | moritz++ | src/Perl6/Grammar.pm: complain about infix:<!%>. Closes RT #76170 |
||
| kudo: cccc121 | moritz++ | (2 files): re-enable Cool.rindex parrot String. Also enable rindex.t |
|||
| kudo: 1734e43 | moritz++ | src/core/Signature.pm: properly reflect capture/parcel binding in signature introspection |
|||
| darbelo | In my experience, parrot's string and io subsystems alternate between knowing too much and too little about each other. | ||
| NotFound | darbelo: given that until recently even the string subsystem doesn't knew much about itself, no wonder. | 21:00 | |
| cotto_work | That seems to be the case here. | ||
| tcurtis | bacek: There are 18 different conditional comparison ops, each with an appropriate INTVAL-returning comparison op(with some overlap). | ||
| cotto_work | $fh.encoding('asdfasdfsda') should fail more noisily than it does. | ||
| tcurtis | When optimizing away constant conditionals, in determining whether to replace gt_ic_ic_ic, for example, with noop or a branch, one should use isgt. | 21:01 | |
| bacek | tcurtis, yes. | ||
| tcurtis, no. Why "isgt"? | 21:02 | ||
| bacek need coffee... | |||
| purl | clowns'll eat me | ||
| tcurtis | Because gt is the branching operator. You just want to whether the condition is true or not. | ||
| s/want to/want to know/ | 21:03 | ||
| NotFound | Note that such conditionals can have secondary effects, as in: if ((i = j) > x) ... | ||
| bacek | tcurtis, ah, "isgt" for folding. Yes. | ||
| NotFound, there is no such op in pir. | |||
| tcurtis | NotFound: even if there were, it wouldn't be a constant conditional(or at least not in the sense of having constant arguments.. | 21:04 | |
| bacek | tcurtis, you can use POST::Constant.type for select proper comparison op. | 21:05 | |
| NotFound | I hope so, but pir sugar sometimes gives unexpected results. | ||
| tcurtis | bacek: there's three way I know of to execute a pir:: op selected at runtime: if-elsif chain, a hash of subs, and eval. | 21:06 | |
| bacek | NotFound, POST is desugared already :) | ||
| NotFound | Too much syntactic sugar gives to semantic cavities X-) | 21:07 | |
| bacek | tcurtis, choose from is-else of hash :) | ||
| s/of/or/ | |||
| GeJ | G'Day bacek | ||
| tcurtis | I've been using a hash. I thought it would be more unpleasant than it is. | ||
| bacek | tcurtis, we can ask pmichaud for given/when in NQP :) | 21:08 | |
| dalek | kudo: d18b5e7 | masak++ | src/core/Buf.pm: [Buf] now does Positional and .[] |
21:09 | |
| tcurtis | One question, though: is it possible for pir::isgt__IPP to differ from pir::isgt__ISS, pir::isgt__III, or pir::isgt__INN when the arguments are already of the appropriate type? | 21:11 | |
| bacek | tcurtis, erm. All variables in nqp are pmcs. You have to explicitly "cast" them to proper type. | 21:14 | |
| Or I totally misunderstood question. | |||
| Yes, I am... | |||
| tcurtis | bacek: if you have PMCs that you know are Integers, and no HLL mapping is involved, isgt__IPP($a, $b) should be the same as isgt__III($a, $b), right? | 21:15 | |
| bacek | Yes, it should. | ||
| tcurtis has just realized he doesn't have to worry about _str and _num variants of ops since they take PMC arguments. | 21:16 | ||
| dalek | nxed: r525 | NotFound++ | trunk/examples/Mysql.winxed: read options from json file in example Mysql |
||
| bacek | cotto_work, what about implementing LinearScanRegisterAllocator for pirate? It shouldn't be too hard. | 21:17 | |
| cotto_work | I was thinking about that. It seems natural. | 21:18 | |
| Were you suggesting I do it or asking whether it seems like a good idea? | |||
| bacek | cotto_work, look at POST::Compiler. line 24. | 21:22 | |
| We just need different allocator there :) | |||
| cotto_work | sounds like fun | 21:25 | |
| bacek | cotto_work, -Ofun ftw! :) | 21:26 | |
| cotto_work | imma maka a new alligator | 21:27 | |
| s/ka/ke/ | 21:28 | ||
| bacek | tcurtis, (minor style rant) can you use .orig.value instead of .orig().value()? It's less noisy :) | ||
| tcurtis | bacek: yes. I only recently realized NQP supports .foo | 21:29 | |
|
21:29
kid51 joined
|
|||
| masak | cotto_work: I just put out a blog post. you're in it :) use.perl.org/~masak/journal/40422 | 21:30 | |
| bacek | tcurtis, otherwise it looks pretty cool! | 21:32 | |
| cotto_work plans on using his newfound fame for profit | |||
|
21:32
whiteknight joined
|
|||
| cotto_work | speaking of fame, hi whiteknight | 21:33 | |
| tcurtis | whiteknight: Why not just declare your method as a normal sub and use ".param pmc self"? | 21:34 | |
| dalek | r: c20b371 | bacek++ | src/POST/Compiler.pm: Minor cleanups. |
21:37 | |
|
21:40
wagle joined
|
|||
| GeJ | Hi whiteknight. | 21:43 | |
| whiteknight | hello GeJ | ||
| tcurtis: that's just part of the problem | 21:44 | ||
| cotto_work | I'd appreciate feedback on HowToDeprecate and ParrotDeprecations on the wiki. | 21:48 | |
| tcurtis | bacek: How should I go about writing tests for it? Modify the POST testing to target my stage instead? Or create a copy of the POST testing stuff that targets my stage instead? | 21:49 | |
| bacek | tcurtis, I think separate set of tests will be better. | ||
| tcurtis, you can pass optional "stages" parameter to sub test_post (in t/test_post.pir) to avoid code duplication. | 21:50 | ||
| tcurtis | bacek: okay. Also, should I add my stage to the stages list in the PBC tests? | 21:51 | |
| bacek | tcurtis, hmm... Interesting question. | 21:52 | |
| I think so. Just because without optimizations we'll generate broken PBC. | |||
| Or will not able to generate it at all. | 21:53 | ||
| whiteknight | it bugs me that chromatic (and now allison) keep misreading my emails with an error bias towards me being more of a goober | ||
| last time I got in an argument with those two on the list none of my problems were addressed, I eventually gave up in despair, and I still have the problems I had | 21:54 | ||
| A little bit of "Andrew is not completely incompetent and might just be having a real problem" medicine would be nice, every once in a while | 21:56 | ||
|
21:57
allison joined
|
|||
| darbelo | whiteknight: You are not completely incompetent and might just be having a real problem. | 21:57 | |
| allison is going to knock some heads together | |||
| are chromatic and whiteknight here? | |||
| whiteknight | i am | ||
| darbelo | whiteknight is. | ||
| chromatic isn't | |||
| allison | I'll knock him later | ||
| whiteknight | I have to go actually. baby emergency | 21:58 | |
| allison | you two are at logger heads, pause and listen to eachother | ||
| (quick answer) | |||
| sorear | bacek: how will --target=pir work after PCT's POST is replaced with PIRATE? | ||
|
21:58
chromatic joined
|
|||
| bacek | sorear, not yet. But I can add it. | 21:58 | |
| chromatic | I'm read for my head knocking. | ||
| darbelo | sorear: EVEN BETAR! | 21:59 | |
| sorear | chromatic++ tireless notes backlogging | ||
| NotFound | cotto_work: HowToDeprecate: In "if possible, maintain backwards-compatibility" I'd change "If possible" to "Unless absolutely impossible" | ||
| cotto_work | bacek: it seems that turning PIRATE's POST into PIR will be relatively simple. | ||
| NotFound: wfm | 22:00 | ||
| bacek | cotto_work, it is. Just not current priority. | ||
| cotto_work | so post->pir will just be an alternative to post->pbc | ||
| oic | |||
| darbelo | Nice and roundtrippy. | 22:01 | |
| NotFound | allison: Can you take a quick look at TT #1689 ? | 22:02 | |
| allison | NotFound: sure | 22:06 | |
| tcurtis | bacek: I don't think the test_post method does support a stages parameter. | 22:15 | |
| bacek | tcurtis, why? | 22:16 | |
| Ah, yes. It's hardcoded atm. But you can add it. ".param string stages :optional" | |||
| tcurtis | Will do. | 22:17 | |
| darbelo | allison: I also have some questions I want to run past you, if you have the time. | 22:18 | |
| allison | NotFound: +1 on deprecating is_tty | ||
| darbelo: sure | |||
| darbelo | I'm having some issues with the charset-encoding distinction and NFG. Mostly because I have to add new behaviour at both levels, but I'm starting to doubt the distinction is gaining us much. | 22:20 | |
| bacek | cotto_work, do you have "Remember the Milk" account? | ||
| darbelo, +1 to have only "unicode" charset. | |||
| cotto_work | no, but I can get one on the quickfast | ||
| allison | darbelo: the best work there is Simon Cozen's unicode chapter in Advanced Perl Programming | 22:21 | |
| cotto_work | why? | ||
| allison | darbelo: it is an important distinction, though, that doesn't necessarily mean that parrot's particular implementation of the distinction is the best way to handle it | ||
| bacek | cotto_work, I want to try it for pirate's todo list. | ||
| NotFound | cotto_work: HowToDeprecate should document how to choose the 'eligible' release. | 22:24 | |
| darbelo | My problem is that transcoding stuff into NFG is easy, but I can't really find a clean way to transcode it back to other formats, since part of the logic is hidden away in the chrset layer. | 22:25 | |
| allison | darbelo: transcoding it back should be a simple substitution | ||
| darbelo: that is, you should be able to use NFG on *any* variable-width encoding, not just unicode | 22:26 | ||
| NotFound | On any unicode that is unicode? | 22:27 | |
| darbelo | Yes, but in order for NFG to deliver on it's promise of indexability it's iterators have to return negative codepoints, which confuses the hell out of all of the other encodings. | ||
| cotto_work | bacek, cotto.rtm | 22:29 | |
| allison | darbelo: that's true, but then codepoints don't have any meaning across encodings anyway | ||
| darbelo | Our various unicode encodings assume that iteration over a string will give them valid unicode codepoints for them to re-encode. | 22:30 | |
| allison | darbelo: so the transcoding will have to refer to the original encoding, which will refer back to the string for the actual meaning of the fake codepoint | ||
| cotto_work | there you are | ||
| allison | the fake codepoint is valid, but only in the context of the original string | 22:31 | |
| bacek | cotto_work, check it. Do you see "parrot" shared list? | ||
| allison | and, because of various normalization forms, we should already have the expectation that a codepoint in one encoding may transcode to multiple codepoints in another | ||
| (if we don't, then that certainly is broken) | 22:32 | ||
| darbelo | I'm looking at utf8.c's to_encoding() implementation right now, and I don't think it does. | ||
| cotto_work | bacek: not so far | 22:33 | |
| NotFound | Looks like you are looking for the slower strings ever. | ||
| bacek | cotto_work, it's "pending" on my side... | 22:34 | |
| darbelo | NotFound: Not what I was looking for, but what I found... | ||
| allison: our utf8 transcodeing simply calls "src_iter.get_and_advance(interp, &src_iter);" and utf8_encode()'s the result. | 22:35 | ||
| NotFound | If string codepoint length can be changed by reencoding it, will be better to use StringBuilder or ByteBuffer for *any* string operation. | 22:36 | |
| darbelo | NotFound: With inmutable string reencoding is a 'copy'ish operation. | 22:37 | |
| allison | darbelo: it's not the string iteration that needs to change, we are dealing with only one fake codepoint | ||
| darbelo: it's the utf8_encode process that needs to respect the multiple real codepoints packed within that fake codepoint | |||
| darbelo | My problem is, really, with the utf8_encode() call. | ||
| allison | darbelo: aye | 22:38 | |
| darbelo | That's kind of the point I was trying to make, though I think I mis-stated it. | 22:39 | |
| NotFound | utf8 functions operates with codepoints. If you provide a encoding-normalization-whatever that doesn't use real codepoints, the iterators for that things should take care, IMO | 22:41 | |
|
22:42
japhb joined
|
|||
| darbelo | NotFound: I have to return the 'faked' codepoint. In a way, what I'm doing here is extend the Unicode charset. | 22:43 | |
| whiteknight | back | ||
| NotFound | darbelo: Universal is not wide enough? | 22:44 | |
| darbelo | Universal is not regular enough. | ||
| kid51 | whiteknight: Did you see that the Philadelphia perlmongers are planning a hackfest? | ||
| whiteknight | kid5: yes | ||
| kid51 | Would you be interested in attending? | 22:45 | |
| darbelo | NFG makes sure you can have 'random-access' strings with really weird symbols in them. | ||
| NotFound | darbelo: At the cost of complicating and slowing down 99.999% of usages? | 22:46 | |
| darbelo | I surely hope not. | ||
| kid51 | grrrr: Major verizon.net outage: Can't get to my email. www.verizon.net gets 503 error | 22:48 | |
| NotFound | If you need to change utf8_encode, that already is complicating a frequent usage. | ||
| darbelo | Well... That's why I'm trying to avoid it. | 22:49 | |
| allison: The way I see it, the underlying issue is that the various Unicode-related encodings assume they are getting something that's already unicode. | 22:50 | ||
| If we tried to support, say, GBK. We'd run into the same issues. | 22:51 | ||
| whiteknight | kid51: not likely. I'm not much of a perl guy | ||
| kid51 | whiteknight: However, this group is pretty language-agnostic: hackadelphia.org/ | 22:52 | |
| darbelo | Which, incidentally, is what JimmyZ's problems wiht paths are all about. | ||
| whiteknight | oh, I thought it was PHL | ||
| kid51 | Well, I read about it first on the phl.pm mailing list. | ||
| NotFound | darbelo: that's because all our charsets are unicode subsets, even if we ignore that fact. | ||
| kid51 | But I just subscribed to the list which Chris Nehren described in the course of that thread. | 22:53 | |
| So this may be capable of evolution :-) | |||
| NotFound | ascii is an unicode subset. Latin-1 is an unicode subset. Binary, we don't transcode it. | ||
| darbelo | NotFound: We'll have to stop assuming that at some point. | 22:54 | |
| NotFound | darbelo: fine, write an ebcdic charset for example. | ||
| whiteknight | kid51: I'll see about it, but it's not likely I'll go | ||
| darbelo | No need to, NFG is a Unicode superset. That's why I'm in trouble now ;) | 22:55 | |
| NotFound | darbelo: no wonder you are in trouble if you try to create an infinite charset in finite machines. | 22:56 | |
| darbelo | ;) | 22:57 | |
| allison: Re-stating my case: "Our strings are less than graceful when we encounter anything that's not a unicode subset, and I think the way we split charsets and encodings is partly to blame there." | |||
| sorear | on the plus side, it's countable | ||
| NotFound | sorear: good point :D | 22:58 | |
| pdd28 says: "Parrot will provide both grapheme-aware and codepoint-aware string operations, such as iterators for string traversal and calculations of string length." | 23:02 | ||
| darbelo | NotFound: The pdd lies. | 23:03 | |
| NotFound | Then kill it. | ||
| We have enough problems with misdocumented current features, no need to add misdocumenting of inexistent ones. | 23:04 | ||
| darbelo | allison: What do you think of, once I get NFG feature-complete, re-evaluating the boudaries of our charset-encoding split and see if we can make it better? | 23:05 | |
| allison | darbelo: sounds like a worthy task | 23:06 | |
| darbelo | I think it'll be a better stretch goal than what I originally planned. | ||
| allison | darbelo: and yes, I do think there's some unicode bias in the current implementation | 23:07 | |
| NotFound | I think there is not enough unicode bias. | ||
| allison | darbelo: that may be a task for after GSoC | ||
| NotFound: are you more of the "all and only unicode" perspective? | 23:08 | ||
| NotFound | allison: yeah | ||
| tcurtis | NotFound: what about things that aren't in Unicode? | 23:09 | |
| darbelo | That approach has to pay the 'Transcode on the way in.' tax, but is easier to implement. | ||
| Tene | whiteknight: I'm having mail issues today... not sure if my mail is going to make it to the list or not. | ||
| NotFound | darbelo: not at all. | ||
| darbelo | tcurtis: As we were just discussing, we already suck at those ;) | ||
| allison | the problem with is is that unicode can't actually represent all character sets | ||
| so, it's a lossy transcoding | |||
| losing data when handling strings is not good | 23:10 | ||
| Tene | whiteknight: summary of my mail: why can't you just set :nsentry on the methods? Isn't that flag designed specifically for that purpose, and added to provide a way to get the old semantics as part of the TT #389 work? | ||
| darbelo | NotFound: Really? Then how do you manipulate them? | 23:11 | |
| chromatic | A canonical internal representation, enforced at the system boundaries, doesn't require a lossy representation. | ||
| NotFound | darbelo: we do it right now. | ||
| allison | chromatic: no existing encoding can represent all character sets | ||
| chromatic: so, we would have to invent our own, which is... excessive | 23:12 | ||
| NFG is just an optimization on an existing encoding | |||
| darbelo | NotFound: No we don't. We fake it with the binary charset, which has limitations. | ||
| NotFound | darbelo: binary data isn't a charset and isn't an encoding,. | 23:13 | |
| chromatic | Is it tractable to use the canonical representation wherever possible, and check for conversions where it isn't? | ||
| darbelo | NotFound: I agree, but that's what we are doing with JimmyZ's GBK paths. We call it binary and hope nothing breaks. | 23:14 | |
| allison | Tene: yes, though I don't think we currently have a way to set :nsentry at runtime, which may be the complete solution to his problem | ||
| chromatic | How often will we have to deal with unrepresentable encodings? | ||
| allison | chromatic: never if Parrot is never used in the real world | ||
| NotFound | darbelo: that is just working around the current filesystem names and env vars poor implementation. | 23:15 | |
| allison | chromatic: it's not a matter of unrepresentable encodings, but character sets that can't be transcoded to whatever encoding we pick as the one true encoding | 23:16 | |
| chromatic | How many character sets are these? CJKV? Hangul? Pinyin? | ||
| NotFound | What we have now are things called "ascii":"fixed_8" and "iso-..." that are perfectly workable as unicode encodings. | ||
| No need to transode, they are already unicode based. | |||
| darbelo | NotFound: parrot has to take GBK from the system and give GBK abck to the system, how do we do that without transcoding? | 23:17 | |
| allison | chromatic: good support for multiple character sets is one of the original founding principles of Parrot, one of those competitive advantages | ||
| NotFound | darbelo: adding encodings if needed, as we already do. | ||
| allison | chromatic: and besides, the abstraction that makes multiple character sets possible is just plain good design | 23:18 | |
| chromatic | I favor good support for multiple character sets. | 23:19 | |
| allison | chromatic: (not necessarily saying that what we have now is the best possible implementation of the abstraction) | ||
| chromatic | Our current abstraction is fairly lousy design. | ||
| allison | it has definite weak points | ||
| chromatic | Even so, variable width encodings are painful. | ||
| allison | and, Simon wanted to completely replace it with NFG | 23:20 | |
| or, at least completely replace it | |||
| it was too huge of a refactor step, though | |||
| so we took the strategy of adding NFG and then gradually refactoring | |||
|
23:22
bluescreen joined
|
|||
| allison | on the whole, weighing priorities, our character set refactors need to respond to customer needs | 23:23 | |
| NotFound | I think that using the phrase "character set" is a problem by itself. | ||
| allison | NFG is a priority for speed in NQP | ||
| NotFound: again, I like Simon's terminology | 23:24 | ||
| books.google.com/books?id=WMmlodYkd...mp;f=false | |||
| ack, awful link | |||
| darbelo | purl: shorten that | ||
| purl | That URL is at xrl.us/bhp8af [books.google.com] | ||
| darbelo | allison: I do worry that NFG won't really deliver that much speed until chrsets and encodings get some refactoring. | 23:25 | |
| allison | darbelo: the key thing is reducing combining characters to single entities | 23:26 | |
| chromatic | Remember when Infinoid sped up PGE's parsing speed some 40% by rearranging some code between charsets and encodings? | 23:27 | |
| darbelo | I've had to add quite a few charset-level special cases for the new encodings. | ||
| allison | darbelo: that's all NFG provides, it won't give any other speed gains | ||
| NotFound | allison: there is a lot of literature about that, but in spite of it people keeps talking and thinking about particular encodings when someone says "unicode" | 23:28 | |
| allison | darbelo: keep a list of those special cases, because they're going to be the biggest candidates for generalizations | ||
| darbelo | allison: Exactly, I think we can gain more by adjusting the boundaries in a few places than by special-casing NFG all over. | ||
| Tene | Oh, my mail did go through. :) | 23:29 | |
| allison | darbelo: sounds like a good next step after we have the first working NFG implementation (even though it does require some intermediate special casing for NFG) | 23:31 | |
|
23:35
davidfetter joined
|
|||
| kid51 observes his verizon.net email has come back to life. | 23:36 | ||
| chromatic | I'm still waiting for the head knocking before I respond to Austin's message. | ||
| darbelo | allison: In a way, my future plan can be thought of as "Replace conditional with delegation." See if we can shift the places where NFG needs special handling onto the encoding, and shift the places where we duplicate code across encodings back to the charset. | 23:37 | |
| NotFound | I don't have a codepoint for a knocked head smiley- | ||
| darbelo | NotFound: Use a regular smiley and add a 'COMPOSING KNOCK' char. | 23:38 | |
| You can add more than one if you think it's needed :) | |||
| NotFound | That reminds me the times of impact printers. a - backspace - apostrophe... | 23:39 | |
| chromatic | Is there a "PLEASE LET US SOLVE THE REAL PROBLEM" grapheme? | 23:40 | |
| cotto_work | darbelo knows all kinds of secret unicode characters | ||
| NotFound | At least that thing was for real world usages. | ||
| Tene | chromatic: head knocking? | 23:41 | |
| chromatic | Apparently "I will revert any commit which adds such a feature" sounds more aggressive than I intended. | ||
| darbelo | Tene: irclog.perlgeek.de/parrot/2010-06-28#i_2491436 | ||
| Tene | darbelo: thanks | 23:42 | |
| NotFound | chromatic: I tought the chainsaw-commiting role was adjudicated to cotto. | ||
| chromatic | Sometimes you shouldn't delegate matters of principle. | 23:43 | |
| cotto_work | That's only for deprecation policy violations. | ||
| Though in those cases it will be enforced, once the policy is not-disagreed upon. | |||
| darbelo not-disagrees with people who wield chainsaws. | 23:46 | ||
| NotFound enters next room, looking for the rocket launcher | 23:47 | ||
| A parrot scriptable Doom engine will be great. | 23:49 | ||
| cotto_work | fast nqp-generated parsers would be great | 23:50 | |
|
23:52
ruoso joined
23:53
Psyche^ joined
23:57
hercynium joined
|
|||