|
Parrot 3.1.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Get GSoC ideas on wiki. Merge/review tewk/select. Evaluate attribute_defs, rip out in branch Set by moderator on 1 March 2011. |
|||
|
00:02
Andy left
|
|||
| Coke | we had that on the list last week, (2 weeks ago?) but nothing happened. | 00:03 | |
|
00:13
plobsing joined
00:23
kid51 is now known as kid51_at_dinner
|
|||
| bacek_at_work | Coke, ticket #2022 "Something borked with HLL mappings." | 00:24 | |
| It actually box strings to String. | |||
| And then PCC convert it to INTVAL | |||
| Looks like "mis-communication" between partcl and parrot. | 00:25 | ||
| Coke | bacek_at_work: yes, I know it boxes the string to String (didn't the ticket say that?) i'm at a loss for why, since if you check the HLL when that happens, it's Tcl. | 00:29 | |
| bacek_at_work | Coke, should it be TclString? | ||
| Coke | Yes. | ||
| bacek_at_work | "if I check the types of those boxes, they are going to Integer, not TclInt." (quote from ticket) | 00:30 | |
| Coke | src/pmc/tclstring.pmc - maps to String for Tcl HLL | ||
| bacek_at_work: yes, because String morphs to Integer, and TclString -> TclInt | |||
| sorry. perhaps there was a conversation on IRC with whiteknight that didn't get captured in the ticket. | 00:31 | ||
| bacek_at_work | aloha, partcl? | ||
| aloha | bacek_at_work: partcl is broken, so it's not clear your change breaks it more or github.com/partcl/partcl | ||
| bacek_at_work | Coke, what is expected behaviour? Cast 0.2 to 1? | 00:35 | |
|
00:35
cosimo joined
|
|||
| Coke | no. it should throw an exception. | 00:40 | |
| bacek_at_work | which one? | 00:41 | |
| Coke | (look at src/pmc/tclstring.pmc's VTABLE get_integer - calls the vtable override ... defined in src/class/tclstring.pir | 00:42 | |
| had to jump through hoops, there, but the vtable override uses toNumber, which tries to parse it according to the grammar, and checks to see if the result is a TclInt or a TclFloat - if it's not an int, throw an exception. ... all of that should JFW if the correct type is boxed in the first place. | 00:43 | ||
|
00:44
lucian_ joined
|
|||
| bacek_at_work | Coke, hll is correct. But there is no String to TclString mapping | 00:45 | |
| where is it defined? | 00:46 | ||
| (mapping) | 00:47 | ||
|
00:47
lucian left
|
|||
| bacek_at_work | src/pmc/tclstring.pmc "maps String"? | 00:47 | |
| Coke, meh... | 00:50 | ||
| Found it. | |||
| "tcl" HLL registered _after_ TclString.class_init. That's why there is no mapping from String to TclString created | 00:51 | ||
| whiteknight | that seems like it shouldn't happen | 00:52 | |
| did something in parrot change to cause that ordering to flip? or did partcl change? | |||
| bacek_at_work | Parrot::Pmc2c::PMC doesn't register new HLL. | 00:53 | |
| whiteknight | did it used to? | ||
| bacek_at_work | No idea. | 00:54 | |
| I can fix it by patching Pmc2c. | |||
| nopaste | "bacek" at 192.168.1.3 pasted "Fix for Pmc2c to register HLL." (23 lines) at nopaste.snit.ch/34865 | 00:55 | |
| whiteknight | oh, okay. so Pmc2c used to do that mapping | 00:57 | |
| it must have changed at some point | |||
| Coke | whiteknight: that was not a partcl change. | ||
| bacek_at_work | bacek@illusion:~/src/partcl$ ./tclsh error.tcl | ||
| expected integer but got "0.2" | |||
| whiteknight | oh, I know that now | ||
| bacek_at_work | this is with my patch | ||
| Coke | bacek_at_work: if it passes 'make test', ship it. that's a regression for some time now. | 00:58 | |
| bacek++ ! | |||
| (doing a parrot test run with that change.) | 00:59 | ||
| bacek_at_work | Coke, I don't now how to write test for it... | 01:00 | |
|
01:01
hercynium left
01:02
kid51_at_dinner is now known as kid51
|
|||
| Coke | bacek_at_work: me either. I'm not saying close the ticket... ;) | 01:02 | |
| whiteknight | just leave the ticket open forever, on the pile with the hundreds of other tickets | 01:03 | |
|
01:05
lucian_ left
|
|||
| Coke | "needs a test" is a fine temporary status. | 01:05 | |
| bacek_at_work: no tests in parrot fail. | 01:08 | ||
| bacek_at_work: ALL TEST IN PARTCL (old) PASS. | |||
| *tests | |||
| please ship it. ;) | |||
| cotto | ~~ | 01:10 | |
| Coke | (it may be an illusion, but the builds/tests on partcl* seem to be going faster these days.) | ||
| whiteknight | hopefully not an illusion | ||
| Coke | whiteknight: I didn't notice any particular speedup after the gc mergeback. | 01:11 | |
| may just be that I'm not running a taptinder at the moment. | 01:12 | ||
| no help to partcl-nqp, but that unbreaks partcl-old quite nicely. | |||
|
01:13
mtk left
|
|||
| dalek | rrot: 90b78cc | bacek++ | lib/Parrot/Pmc2c/PMC.pm: Fix regression with PMC HLL mapping. Register HLL uncoditionally before map |
01:16 | |
| Coke | also, bacek++ | 01:17 | |
| bacek_at_work | Do we have something like "test needed" status in trac? | 01:18 | |
| Coke | checking... | ||
| bacek_at_work | I don't want to close ticket without test. | ||
| Coke | I would just add "testneeded" as a keyword for now. | 01:19 | |
| bacek_at_work | Coke, done | ||
| All tests successful. | |||
|
01:19
mtk joined
|
|||
| bacek_at_work | Files=74, Tests=1382, 86 wallclock secs ( 0.32 usr 0.08 sys + 79.90 cusr 2.80 csys = 83.10 CPU) | 01:19 | |
| Result: PASS | |||
| bacek@illusion:~/src/partcl$ | |||
| Looks about all right :) | |||
| Coke, trac.parrot.org/parrot/ticket/1886 | 01:20 | ||
| It produces "0\\n1" after patch. Is it correct behaviour? | 01:21 | ||
| Coke | that particular one may have changed, but partcl-nqp still has at least one failure with that error msg. checking... | 01:22 | |
| bacek_at_work | "0\\n1\\n" actually | ||
| Coke | bacek_at_work: it still generates the stacktrace here. | 01:23 | |
| (after printing 0\\n1\\n) | |||
| bacek_at_work | Coke, hmmm... Not on my box. | ||
| Coke | bacek_at_work: are you using partcl or partcl-nqp? | ||
| bacek_at_work | old | ||
| Coke | no, that's -nqp. | 01:24 | |
| bacek_at_work | ah, bug is about -nqp. Soory | ||
| Sorry | |||
| Coke | it's confusing, I admit. :( | ||
| the segfault on trac.parrot.org/parrot/ticket/1811 is troubling. | 01:32 | ||
| bacek_at_work | Our trace runcore is severely broken | 01:33 | |
| nopaste | "coke" at 192.168.1.3 pasted "segfault with parrot -t5" (49 lines) at nopaste.snit.ch/34866 | 01:34 | |
| Coke | of course, we could just, iunno, revert the commit that caused the breakage. ;P | 01:36 | |
| could it be that class has a VTABLE init but not a VTABLE init_int? | 01:41 | ||
| bacek_at_work | Coke, quite possibly | 01:42 | |
| whiteknight | wtf is -t5? | 01:43 | |
| Coke | or that pmcproxy's init_int is soooo different from it's init. | ||
| whiteknight: -t4 AND -t1 | |||
| whiteknight | wtf are -t4 AND -t1? | ||
| bacek_at_work | t4 - sub names only | 01:44 | |
| Coke | though that particular example dies with -t1. no -4 needed. | ||
| bacek_at_work | -t1 pir ops | ||
| Coke | whiteknight: -t1 is a trace of opcodes. | ||
| Coke is stunned that someone working on parrot so long hasn't used those. | |||
| whiteknight | can't say I've ever had a need | 01:45 | |
| Coke | also, they're the same as "trace <x> | 01:46 | |
| (which you can turn on/off a little more judiciously. | |||
| Coke fires up "make spectest" in partcl old for the first time in ... years, probably. | 01:47 | ||
| bacek_at_work | Coke, quite few failed tests | 01:56 | |
| whiteknight | partcl-old makes heavy use of the IMCC compreg, right? | 01:57 | |
| bacek_at_work | whiteknight, of PIR macros actually. | ||
| whiteknight | ok | ||
| Coke | bacek_at_work: in "make spectest" ? | 02:10 | |
| whiteknight: in that "it's all written in PIR" ? sure. | 02:11 | ||
| (aside from some stuff written in PMC + Ops + C) | |||
| The fact that "make spectest" can even RUN is amazing. :) | |||
| (take a look at the size of library/tcltest/tcltest.tcl | 02:12 | ||
| cotto | Coke, I admire that you resisted the temptation for lame puns in that filename. | 02:13 | |
| Coke | cotto: that's tcl's test library, I just copied it from their repo (and tacked on 2 lines at the bottom) | 02:16 | |
| atrodo - "is parrot fast yet" - you can add "make spectest" from partcl (old) to the list if you want something really slow. | |||
| whiteknight: it does make heavy use of macros, yes. | 02:21 | ||
| whiteknight | yeah. ok | ||
| cotto | bacek_at_work, do you know what the fix is for avoiding duplicate curly braces in opsc output? | 02:40 | |
|
02:42
mikehh_ joined
|
|||
| shockwave | So, how do I pass a C void* to a Parrot sub? | 02:44 | |
| aloha: paste | |||
| !aloha: paste | |||
| aloha: !paste | 02:45 | ||
| aloha | shockwave: Admin commands in privmsg only, please. | ||
|
02:45
mikehh left,
whiteknight left
|
|||
| plobsing | shockwave: parrot doesn't work directly on pointers. the recommended mechanism is to make use of objects that wrap pointers. we have a number of different pointer types to handle different needs. | 02:47 | |
| dalek | rrot/infnan2: ee0f898 | plobsing++ | / (3 files): import commits r49425, r49427, r49428, r49430, and r49431 for further review and testing |
02:48 | |
| rrot/infnan2: e0da873 | plobsing++ | config/auto/infnan (2 files): forgot to add actual configure step |
|||
| rrot/infnan2: 6636ce7 | plobsing++ | MANIFEST: mk_manifest_and_skip |
|||
| rrot/infnan2: 6e49511 | plobsing++ | / (4 files): probe for isinf() and isnan() and wrap in macros these functions, where available, are the recommended way to test for infs and nans |
|||
| rrot/infnan2: b11cc2b | plobsing++ | config/auto/infnan/test_c.in: update coda |
|||
| nopaste | "shockwave" at 192.168.1.3 pasted "how to pass C void pointer to PIR sub?" (28 lines) at nopaste.snit.ch/34867 | ||
| shockwave | @plobsing: Cool. Do you happen to know where I can see an example? | 02:49 | |
| dalek | rrot: 4b42924 | (Gerd Pokorra)++ | NEWS: add more news |
||
| plobsing | I cannot find a non-internal usage of that pattern. | 02:50 | |
| I recommend you take a look at src/pmc/ptr.pmc, which is likely the wrapper you'll want to use. | 02:51 | ||
| shockwave | Thanks. | 02:52 | |
| plobsing | passing the pointer as an INTVAL may work, sometimes, but the NCI wrappers will not accept INTVALs when they expect pointers. | ||
| shockwave | I assume the embeeding doesn't yet have support for boxing an void*? | ||
| plobsing | it does not, but it may be a useful addition. | ||
| shockwave | I'm having a tricky time trying to get this doing with the current embedding way. I'll keep poking. | 02:54 | |
| atrodo | Coke> Can you quantify slow? | 02:59 | |
|
03:02
ShaneC left
03:20
ShaneC joined
|
|||
| bacek_at_work | cotto_work, somewhere in Actions.pm when we create Ops::Op. | 03:21 | |
| cotto, actually no. It's in Trans::C | 03:26 | ||
| cotto | ah | 03:27 | |
| dalek | rrot/opsc_full_parse: 1374d39 | bacek++ | compilers/opsc/src/Ops/Trans/C.pm: Don't wrap op body into {}. |
||
| cotto | I see it | 03:28 | |
| d'oh | |||
| dalek | rrot/opsc_full_parse: ade2764 | bacek++ | src/ (2 files): Rebootstrap ops |
03:29 | |
| cotto | bacek_at_work, what's that gc change? | 03:38 | |
| bacek_at_work | cotto, oops | ||
| cotto files a bacekbug | 03:39 | ||
| bacek_at_work | if was mean to go to master | 03:40 | |
|
03:47
shockwave left
|
|||
| dalek | rrot: f0e6396 | plobsing++ | include/parrot/thr (2 files): handle threadless parrot Either by platform or by choice parrot can be built without threads. Don't include posix thread macros in this case. |
04:01 | |
| rrot: d96059e | plobsing++ | MANIFEST: mk_manifest_and_skip |
|||
|
04:04
bacek left
|
|||
| dalek | rrot: 4ef9318 | plobsing++ | src/gc/gc_gms.c: handle null returns for 0-sized allocations in GMS NULL does not necessarily mean error for empty allocations. |
04:06 | |
|
04:42
treed joined
04:44
treed left
05:34
dngor left
05:38
kid51 left
06:08
Drossel joined
06:09
Kulag left
06:12
dngor joined
06:17
dngor_ joined
06:18
dngor left
06:19
rurban_ joined
06:22
rurban left,
rurban_ is now known as rurban
06:34
cosimo left
06:35
fperrad joined
06:42
Drossel left
06:43
Kulag joined
06:52
Kulag left
06:54
Kulag joined
|
|||
| ShaneC | are parrot's threads used for anything except gc? | 06:59 | |
| cotto | Are they used for gc? | 07:00 | |
| ShaneC | some gc stuff looks kinda stubbed out, dunno if it's actually used | ||
| either way -- are they actually used for anything? | |||
| cotto | nothing substantive at all | 07:01 | |
| we got pretty close to ripping it out but backed out for reasons I still don't entirely understand | 07:08 | ||
| ShaneC | why rip it ouf? | ||
| cotto | it's not useful | ||
| ShaneC | i assume some threading will be desired eventually | ||
| cotto | ShaneC, absolutely | 07:09 | |
| ShaneC | what's wrong with the current code? | ||
| cotto | have you tried using it? | ||
| ShaneC | no, just reading through it atm | ||
| seems like handling gc with it is a bit ugly | 07:11 | ||
|
07:11
Khisanth left
|
|||
| cotto | t/pmc/threads.t may be instructive | 07:11 | |
| ShaneC | thanks | 07:12 | |
|
07:14
Khisanth joined
|
|||
| cotto | tewk, are you around? | 07:31 | |
|
07:37
theory left
|
|||
| dalek | TT #1976 closed by cotto++: manifest-related files still reference Subversion | 07:58 | |
|
07:58
fperrad left
|
|||
| dalek | TT #1976: trac.parrot.org/parrot/ticket/1976 | 07:58 | |
|
08:03
bacek joined
08:07
fperrad joined,
lucian joined
08:08
bacek left,
lucian left
08:09
bacek joined,
lucian joined
08:11
clunker9_ joined
|
|||
| dalek | rrot/tewk/select: 66c741e | cotto++ | / (3 files): make FileHandle responsible for returning its handle |
08:19 | |
| rrot/tewk/select: 87e6e87 | cotto++ | src/pmc/select.pmc: git rid of the "max" macro |
|||
| rrot/tewk/select: 3c3901b | cotto++ | / (2 files): clean up method names |
|||
| rrot/tewk/select: 9ff0f1b | cotto++ | src/pmc/select.pmc: improve ATTR naming consistency |
|||
| rrot/tewk/select: 44f74e1 | cotto++ | api.yaml: add Select PMC to api.yaml |
|||
| cotto | I feel better now. | ||
| not great but better | 08:23 | ||
| 'night | 08:24 | ||
| dalek | rrot: 582eb0a | (Gerd Pokorra)++ | NEWS: fixed typo in NEWS file |
08:27 | |
| TT #2034 created by cotto++: Experimental Select PMC | 08:31 | ||
| TT #2034: trac.parrot.org/parrot/ticket/2034 | |||
|
08:37
lucian left
09:01
mtk left
09:08
mtk joined
09:26
clunker3 joined
|
|||
| dalek | rrot/opsc_full_parse: 7fe3828 | bacek++ | compilers/opsc/src/Ops/Op.pm: Change arg passing to .to_c methods to support more rich %context instead of single $trans. |
09:30 | |
| rrot/opsc_full_parse: de62a06 | bacek++ | compilers/opsc/src/Ops/Op.pm: First cut of "pretty printing" of generated C file. |
|||
|
09:30
clunker9_ left
|
|||
| rrot/opsc_full_parse: b3fdfae | bacek++ | compilers/opsc/src/Ops/Op.pm: Little bit more prettiness. |
|||
| rrot/opsc_full_parse: d7ab88d | bacek++ | compilers/opsc/src/Ops/Op.pm: More prettiness. |
|||
| rrot/opsc_full_parse: 2bf3bcd | bacek++ | compilers/opsc/src/Ops/Op.pm: Put newline before control statement. |
|||
| rrot/opsc_full_parse: 5a2f6b1 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm: Don't wrap GC_WRITE_BARRIER into Stmts |
|||
| rrot/opsc_full_parse: f3c752c | bacek++ | src/ops/core_ops.c: Rebootstrap pretty ops |
|||
|
09:43
contingencyplan left
10:45
jsut_ joined
10:50
jsut left
|
|||
| dalek | rrot/opsc_full_parse: 7cbd895 | bacek++ | compilers/opsc/src/Ops/Op.pm: Prettify "if" |
11:29 | |
| rrot/opsc_full_parse: 66fcfdd | bacek++ | compilers/opsc/src/Ops/ (2 files): Remove generating of redundant Stmts |
|||
| rrot/opsc_full_parse: 6e00eab | bacek++ | compilers/opsc/src/Ops/Op.pm: Put additional newline between variable declarations and code. |
|||
| rrot/opsc_full_parse: 2ea3b0f | bacek++ | / (3 files): Fix parsing single-statement if/for/while |
|||
| rrot/opsc_full_parse: b29d217 | bacek++ | compilers/opsc/src/Ops/Op.pm: Restore prettiness after last fix. |
|||
| rrot/opsc_full_parse: e613f2b | bacek++ | compilers/opsc/src/Ops/Op.pm: Little bit more stylish changes in generated C code. |
|||
| rrot/opsc_full_parse: bf11a89 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm: Wrap single statement into PAST::Block inside if/for/while for preserve semantic |
|||
| rrot/opsc_full_parse: cfab4e9 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm: Reorder rules to get blockoid chance |
|||
| rrot/opsc_full_parse: a57241f | bacek++ | compilers/opsc/src/Ops/Op.pm: Remove (now) useless handling of single statement in "if". We always have blockoid inside. |
11:30 | ||
| rrot/opsc_full_parse: 2cd4474 | bacek++ | compilers/opsc/src/Ops/Op.pm: Don't put useless semicolon. |
|||
| rrot/opsc_full_parse: fcb85f0 | bacek++ | compilers/opsc/src/Ops/Op.pm: Avoid newlines between var declarations and statement_controls. |
|||
| rrot/opsc_full_parse: b4e714d | bacek++ | compilers/opsc/src/Ops/Op.pm: Put newline after statement_control to simplify logic of separating of different chunks. |
|||
| rrot/opsc_full_parse: b29a213 | bacek++ | src/ops/core_ops.c: Rebootstrap most pretty ops ever |
|||
| rrot/opsc_full_parse: 708ed9e | bacek++ | compilers/opsc/src/Ops/Op.pm: Don't put spaces and () around "->" and ".". |
11:44 | ||
| rrot/opsc_full_parse: 012fbae | bacek++ | src/ops/core_ops.c: Rebootstrap ops again |
|||
|
11:55
clunker9 joined
|
|||
| ttbot | Parrot e613f2be i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/45598 | 12:01 | |
| bacek | mj41++ # ttbot rulez! | 12:02 | |
| ttbot | Parrot e613f2be i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/45702 | 12:10 | |
|
12:12
cognominal left
12:15
woosley joined
12:29
bluescreen joined
12:38
clunker9 is now known as clunker3
|
|||
| ttbot | Parrot e613f2be i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/45806 | 13:04 | |
| Coke | atrodo: I started it last night. it's still running. | 13:16 | |
| ... I think it's gotten slower. I wonder where my last timing runs are. | |||
|
13:24
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:24 | |
| dalek | sella: 55f2300 | Whiteknight++ | s (3 files): fixes so that the container library builds with winxed HEAD. Fails some tests |
13:25 | |
| sella: 7dd99ff | Whiteknight++ | src/container/Container.winxed: fix Rosella.Container.default_container. Implemented in a funky way to work around some issues in winxed |
|||
| sella: e7080dd | Whiteknight++ | src/container/Container. (2 files): Container.resolve_create now takes slurpy constructor args, instead of the mishmash it was taking before. Fix Container.winxed and reclaim one more test |
|||
| sella: 8ceb407 | Whiteknight++ | s (3 files): translate event library to winxed. Builds and passes all tests |
|||
| sella: 8e8e734 | Whiteknight++ | s (3 files): translate prototype library to winxed. All tests pass |
|||
| whiteknight | e src/test/*.nqp | 13:26 | |
| blarg | |||
| bacek | ~~ | 13:31 | |
| erm | |||
| whiteknight | good morning, bacek | ||
| bacek | Good night, humans | ||
| dalek | rrot/opsc_full_parse: 8391085 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm: Fix parsing of "do {} while" statements. |
||
| rrot/opsc_full_parse: 977b6b6 | bacek++ | compilers/opsc/src/Ops/Op.pm: More prettifications. |
|||
| whiteknight | ...and goodnight! | ||
| rrot/opsc_full_parse: c53aedf | bacek++ | compilers/opsc/src/Ops/ (2 files): Change pasing of "switch" to simplify emitting of C. |
|||
| rrot/opsc_full_parse: b5f4413 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm: Don't wrap "break" and "continue" into Stmts. It's unnessary. |
|||
| rrot/opsc_full_parse: aed22d0 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm: Change "label" parsing rule to exclude whitespace. |
|||
| rrot/opsc_full_parse: dc0b353 | bacek++ | compilers/opsc/src/Ops/Op.pm: Outdent label by 2 spaces |
|||
| rrot/opsc_full_parse: fb5e818 | bacek++ | compilers/opsc/src/Ops/Op.pm: Prettify output of labels of blockoids. |
13:32 | ||
| rrot/opsc_full_parse: 508750f | bacek++ | src/ops/core_ops.c: Reboostrap most pretty ops ever |
|||
| bacek | msg Util try new core_ops.c. It's pretty-printed now :) | 13:34 | |
| aloha | OK. I'll deliver the message. | ||
| atrodo | Coke> That's probably too slow | ||
|
13:41
dngor_ is now known as dngor
|
|||
| Coke | atrodo: :) | 13:49 | |
| could probably pick /one/ spec test. | 13:50 | ||
| atrodo | Coke> If you can pick me a good one, I'll add it. | 13:51 | |
| whiteknight | msg NotFound It would be awesome if we could provide libraries of PredefFunctions to the winxed compiler at runtime. That way we could provide librarys of new functions instead of having to build everything into the compiler | 14:03 | |
| aloha | OK. I'll deliver the message. | ||
|
14:04
woosley left
14:12
plobsing left
14:19
rurban_ joined
14:22
JimmyZ joined,
rurban left,
rurban_ is now known as rurban
14:25
bluescreen left
|
|||
| JimmyZ | good evening, parrot | 14:26 | |
| JimmyZ doesn't think winxed news should be in the NEWS file | 14:36 | ||
|
14:38
cogno joined
|
|||
| whiteknight | hello JimmyZ | 14:39 | |
| JimmyZ | hello | ||
| whiteknight :) | |||
| Coke | running tcl's spec test, I'm up to 3GIG of resident memory usage. | 14:40 | |
| dalek | rrot: 37e051c | jimmy++ | NEWS: removed news which is old |
||
| Coke | (13G virtual) | ||
|
14:45
cogno left
14:49
cogno joined
14:55
cogno left
14:57
dmalcolm joined
|
|||
| Coke | now that it's at 3G, it seems to be going verrrry slow, but not increasing. | 15:00 | |
| NotFound | whiteknight: the plan is to have some way to define inline functions, better than improve the current specialized machinery for predefs. | 15:10 | |
| whiteknight | NotFound: either way. It seems like a nice way to add functionality to the compiler. I would definitely put together libraries of new built-ins and inline functions for winxed | 15:14 | |
|
15:16
bluescreen joined
|
|||
| NotFound | I agree with JimmyZ, too detailed news for languages shouldn't be in parrot NEWS. | 15:16 | |
| Coke | should make distcheck be in there? | 15:18 | |
| sorry, release_check. | 15:19 | ||
| Seems like that could just be "Further automate release process." | 15:20 | ||
| ... and even that isn't really user-facing. | |||
| NotFound | I'll add 'and packagers', is not just for release managers, isn't it? | ||
| Coke | I also think that work-on-branches is probably not NEWS worthy as a top level item. | 15:21 | |
| " + A statement convert the '.param' PIR systax | |||
| ?? | |||
| I'd also put "things we deleted" into a small footnote section. no one cares that --cxx is gone. | 15:23 | ||
| NotFound | This grammatical no sentence. | ||
| Coke | we needs an editor. | 15:28 | |
| Coke goes back to $dayjob. | |||
| whiteknight | We're going to get to the point where nothing shows up in NEWS, no matter how much work we do | 15:31 | |
| Coke | that's one end of the spectrum. the other is a bunch of updates that are of no interest to parrot users. I'm sure there's a comfy middle ground. | 15:34 | |
|
15:38
contingencyplan joined
15:40
plobsing joined
|
|||
| moritz | don't we have the new GC as news item for the upcoming release? | 15:40 | |
|
15:58
JimmyZ left
|
|||
| cotto | ~~ | 16:01 | |
| whiteknight | hello cotto | 16:07 | |
| plobsing | o/ | 16:08 | |
| cotto | moritz, it's in there | 16:09 | |
| moritz | so much for "nothing shows up in NEWS" then :-) | 16:13 | |
| plobsing | no NEWS is good NEWS | ||
|
16:18
Patterner left,
Psyche^ joined,
Psyche^ is now known as Patterner
16:21
hercynium joined
|
|||
| Coke | why are the new pmcs called Ptr* instead of Pointer* ? | 16:32 | |
| whiteknight | I was wondering that myself, but didn't think it was worth arguing about | ||
| we do have a Pointer type, I think | 16:33 | ||
| plobsing | we already have a Pointer PMC type, which is now deprecated | ||
| also they're Peter PMCs :D | |||
| whiteknight | I would like to leave open the possibility that we can rename the new types to something less terse eventually | 16:34 | |
| Coke | (already one called Pointer) Unfortunate, but great reason. Danke. | ||
| sorear | question: why are we adding new functions as pmcs? | ||
| whiteknight | sorear: what do you mean? | ||
| sorear | select would make so much more sense as an op, IIUC | 16:35 | |
| plobsing | I somewhat concur. I'm more concerned that it is being added to core-as-in-always-loaded. | ||
| Coke | there is no real good distinction between what functionality goes in an op, a PMC, a pir lib... | ||
| (dynamic or otherwise) | |||
| whiteknight | PMC would typically be something that requires state. All things considered, I like dynpmcs much more than I like dynops, so my vote is to not make new dynops | 16:36 | |
| or new ops | |||
| sorear | PMCs are data, ops are operations | ||
| whiteknight | and if we could delete some existing ops and dynops, that would be great | ||
| Coke | ... a class.. | ||
| plobsing | whiteknight: why do you dislike dynops? | ||
| whiteknight | plobsing: I dislike most ops, dyn- or not | 16:37 | |
| plobsing | again, why? | ||
| whiteknight | dynops being a subtype of op which is both unnecessary and requires the extra complication of loading | ||
| Coke | it is not unnecessary - how would languages provide their own ops? | ||
| whiteknight | because there's too damn many of them, and they're all poorly designed and poorly thought-out | ||
| Coke: that assumes that languages should be providing their own ops. I don't think they should be | 16:38 | ||
| plobsing | I will grant that some are poorly thought out. I'm not certain that that shortcomming is limited to ops. | ||
| cotto_work | ~~ | ||
| whiteknight | plobsing: certainly not | ||
| plobsing | Conceptually, an op is just an interface that offers fast static calls to native functions with a significantly limited interface. | 16:39 | |
| Coke | whiteknight: Ok. here's a deal: I'll remove the dynops from partcl when calling into a pir sub is fast enough for me not to care. | ||
| (or when you provide an extensible set of control flow ops.) | |||
| plobsing | as opposed to a function or method, which for whatever reason seem doomed to be slow | 16:40 | |
| sorear | wearing my HLL hat, dynops are Parrot's #1 selling point | ||
|
16:40
mtk left
|
|||
| whiteknight | Coke: and if we got rid of dynops, all ops would be faster. op dispatch would be faster. op parsing in IMCC would be faster and more deterministic | 16:40 | |
| plobsing | IMCC is not a bottleneck in any benchmark I am aware of | ||
| whiteknight | This is why I like lorito so much. because we are getting rid of all our stupid bloated PIR ops | 16:41 | |
| sorear | plobsing: as long as get_returns, invokecc, etc are ops, it' | ||
| plobsing | how would op dispatch become faster without dynops? | ||
| whiteknight | plobsing: a bottleneck? no. Still, it can be faster | ||
| sorear | s implausible for calling pir subs to ever be faster than op dispatch | ||
| whiteknight | maybe not op dispatch. That might not get any faster | ||
| sorear | I am not opposed to requiring special syntax for dynops. dynopcall "lib", "opname", args | 16:42 | |
| whiteknight | although keeping all our ops in a huge table which probably doesn't fit neatly into cache is not ideal no matter how you slice it. Making that table bigger at runtime just exacerbates that problem | ||
| plobsing | that's an IMCC implementation detail that has leaked into the rest of parrot. | ||
| whiteknight | that's not an IMCC detail, that's a central part of op dispatch | 16:43 | |
| Coke | whiteknight: If you're looking for things to optimize, partcl-old's "./tclsh t_tcl/mathop.test" is a pretty good example of something really slow. | ||
| whiteknight | the fast core and the slow core are based on the idea that all ops are indices into a large op table | ||
| Coke: I'm not looking for things to optimize | |||
| plobsing | whiteknight: no it isn't. please provide source-file references to back up this claim. | ||
| dalek | TT #2035 created by plobsing++: [DEPRECATED] Pointer, UnManagedStruct, ManagedStruct | ||
| TT #2035: trac.parrot.org/parrot/ticket/2035 | |||
| Coke | whiteknight: if you're not trying to speed up "real-world" examples of using parrot, what are you doing? | 16:44 | |
| whiteknight | plobsing: src/runcores/cores.c:646 | ||
| Coke | bacek++ # again, partcl. thanks. | ||
| whiteknight | plobsing: I'm not sure how else you think DO_OP works, if not looking up op function bodies in a table | 16:45 | |
| plobsing | src/runcores/cores.c: ERROR: cannot open `src/runcores/cores.c' (No such file or directory) | ||
| whiteknight | src/runcore/cores.c | 16:46 | |
| # define DO_OP(PC, INTERP) ((PC) = (((INTERP)->code->op_func_table)[*(PC)])((PC), (INTERP))) | |||
| (from include/parrot/runcore_api.h) | |||
| notice the "->op_func_table" and "[*(PC)]" parts, which are table lookups | |||
| plobsing | I know DO_OP works by calling functions indirected through a table. Who do you think wrote that line of code? | ||
| It just happens to not be a particularly big table. | 16:47 | ||
| whiteknight | plobsing: then maybe we disagree on what "particularly big" means | ||
| plobsing | ~50 function pointers is not terribly large | ||
| whiteknight | 50 function pointers? We have ~1200 ops | 16:48 | |
| each with a long and short name char*, a function pointer, arrays of flags and options, etc | |||
| plobsing | inter->*code*->op_func_table | ||
|
16:49
mtk joined
|
|||
| plobsing | op_func_table only contains the func pointers required by the bytecode | 16:49 | |
| if you don't use it, you don't pay for it | |||
| whiteknight | maybe I missed that improvement. We're still talking about ~1200 op pointers | ||
| plobsing | when I set that up, I looked at how large those tables are. rakudo uses ~120 distinct ops. | ||
| most code uses less than that | 16:50 | ||
| whiteknight | does the table cut out unused ops? | ||
| cotto_work | whiteknight: that's part of the dynop mapping changes | ||
| whiteknight | fine. I recind that point. Still, I don't like ops and I sincerely don't like dynops | 16:51 | |
| tewk | A jit will completely git rid of op dispatch anyways, especially with the latest opsc work | 16:52 | |
| whiteknight | tewk: if the JIT knows how to compile the op body down to native code | ||
| plobsing | long name, short name, etc are kept in the op_lib_info struct for the library. this is const data, which the OS can map in and out at will. | 16:53 | |
| whiteknight | part of the reason why the old JIT was so unmaintainable was because it was trying to provide a secondary JIT-friendly definition for each op, and the two definitions got out of sync very easily | ||
|
16:53
cogno joined
|
|||
| tewk | thats why the opsc work is so cool. | 16:53 | |
| cotto_work | yes | 16:54 | |
| tewk | the same op definition can be used for the current generated c implementation, the jit, lorito, or what else | ||
|
16:54
cogno left
|
|||
| plobsing | I am concerned about a comment bacek made regarding reducing the number of types used. If op bodies get reduced to only INSPv variables, we will likely have many ops that simply call a C function defined elsewhere that uses the types the author *actually* wants to use, defeating the point. | 16:55 | |
| tewk | ops are really just inline functions. And inlining is one of the most bang for the buck compiler optimizations. | 16:56 | |
| cotto_work | plobsing: if opsc is to generate other kinds of code, it'll need to understand all the types that the ops use. That means either making opsc much smarter or shrinking the allowable types that opsc can use. | 16:57 | |
| or cheating | |||
| plobsing | why does opsc have to understand the types? why can't we create a decoupled backend? | 16:58 | |
| any worthwhile JIT system will support the types | |||
| cotto_work | but opsc will need to know that foo_t maps to INTVAL to generate correct code for the jit system | 17:01 | |
| tewk | somehting like 6models low-level description of type/struct layout should be part of opsc/jit | 17:02 | |
| plobsing | and we can't parse 'typedef INTVAL foo_t'? isn't superior parsing technology supposed to be a selling point of parrot? | 17:03 | |
| cotto_work | It's a surprisingly hairy yak. | 17:04 | |
| well, probably not surprising to you | |||
| sorear | For large and infrequently used ops, the JIT could just compile a call to a known address | ||
| plobsing | I understand C type declarations can get quite confusing. But in practice, we seldom use terribly complicated signatures. | 17:05 | |
| NotFound | C types aren't just a parsing business, it may also need knowledge about how the current platform implements them. | ||
| plobsing | It wouldn't be completely unacceptable for opsc to bail on "unparseable" declarations. | 17:06 | |
| cotto_work | In principle I like the approach of parsing headers and typedefs properly. I suspect that it's a deep problem though. | 17:07 | |
| plobsing | NotFound: I can see that. How about "C89 + Parrot_X-types". That covers at least 80% of the types used in average C. | ||
| sorear | Is there any reason why opsc has to parse C89? | 17:10 | |
|
17:10
theory joined
|
|||
| NotFound | Probably in a lot of cases just knowing that the type a pointer to something will be enough. | 17:11 | |
| sorear | C types are widely regarded as a lot harder to parse than they need to be | ||
| cotto_work | sorear: extracting types from headers | ||
| sorear | We could invent a simpler syntax | ||
| cotto_work: general system header? | |||
| NotFound | C was born many moons ago, when memory was shorter and processors slower. | 17:12 | |
| plobsing | (1) we want to expose as much of Parrot to the JIT as possible (2) we want to expose as much of the system to Parrot as possible | 17:13 | |
|
17:13
Andy joined
|
|||
| sorear | if opsc is going to parse all vendor system headers, it needs to support all extensions in vendor C compilers | 17:13 | |
| plobsing | 1 & 2 mean we need to use the system's language (C89), or have a very good declaration translator to our language of choice | ||
| sorear | my /usr/include is quite full of __attribute__ and __asm__ and ({ }) and similar nonsense | 17:14 | |
| NotFound | Parsing system headers isn't enough. The preprocesor in some cases expands to implementation private symbols. | ||
| plobsing | I agree its a hard problem. | 17:15 | |
| whiteknight | we are best off ignoring all of that crap and telling the compiler that any given type is either system-word-size-integer-alike, float-alike, or pointer-alike | 17:16 | |
| NotFound | But we aren't trying to write a full C compiler, aren't we? | ||
| cotto_work | whiteknight: you mean having a hard-coded list | ||
| whiteknight | after all, ops2c isn't compiling down to native code, it's compiling down to something that's smarter and more special-purposed | ||
| cotto_work | ? | ||
| whiteknight | cotto_work: yes. I, N, S, P | 17:17 | |
| cotto_work | which one of those does char map to? | ||
| whiteknight | maybe v | ||
| NotFound | Don't forget that we use a bunch of enums. | ||
| whiteknight | cotto: do we need char? I mean, do we need it inside op bodies? | 17:18 | |
| NotFound: enums are int. | |||
| plobsing | not in C++ | ||
| whiteknight | Parrot isn't written in C++ | ||
| plobsing | oh how I wish that were true | ||
| cotto_work | whiteknight: char* then | ||
| whiteknight | cotto_work: char* is just a pointer. Anything * is just a pointer | 17:19 | |
| and opsc doesn't need to give a crap about the differences between pointers | |||
| NotFound | The back type shouldn't be a problem, but the compiler/whatever must know its values. | ||
| whiteknight | remember, we're only talking about ops2c here, not a generalized C compiler | ||
| cotto_work | whiteknight: sure. Which of INSP does it map to? | ||
| whiteknight | cotto_work: I did say we could have a v type | 17:20 | |
| map any dumb pointers to v | |||
| S and P are the same except with GCable behavior | |||
| NotFound | For pointers, knowing the name of the pointee type should be enough for most checks and usages. | ||
| plobsing | opsc doesn't have to worry about pointer type? how do you dereference stuff out of the ctx? | ||
| whiteknight | is opsc doing that, or the underlying compiler mechanism? Again, opsc is *not* a generalized C compiler | 17:21 | |
| opsc converts our weird opish-c into something a "real" compiler can use | |||
| at that moment, that's "real" C. opsc doesn't need to semantically understand all of C, it needs to be able to transform input into output | |||
| plobsing | the whole point of deep parsing is making this available to a JIT system which is not a C compiler. | 17:22 | |
| if opsc cannot understand dereference operations that nearly every op needs, those operations get hidden to the JIT, being equivalent of a lower-level subroutine-threaded code. | |||
| at that point, you might as well just subroutine-thread the ops | 17:23 | ||
| whiteknight | we can make a handful of exceptions for performance reason. Handling context pointers is a perfect example of something that we should maybe include as a special case | ||
| but the number of ops which do dereferences on char* or all manner of other weird types is much smaller | 17:24 | ||
| and I would suggest we move any logic like that out of the op bodies and into a function somewhere | 17:25 | ||
| NotFound | Such dereferences, can be function/macro alikes specially treated by opsc. That way it will be also possible to do better checks than C macros. | ||
| whiteknight | Parrot doesn't operate internally on char*. It operates on STRING*. If you have a char*, treat it like any other void*, and pass it to Parrot_str_new so you get something you know how to deal with | 17:26 | |
| as far as a Parrot op body is concerned, char* is just another opaque pointer type | |||
| plobsing | Maybe an opsc black-box-block-syntax, where contents get passed through, and compiled to C subs which the JIT calls into without any knowledge of what it does. | ||
| no parsing in these blocks is required | 17:27 | ||
| cotto_work | Q:C< ... > | ||
| whiteknight | for some of our current menagerie of ops, that's a far better solution | ||
| plobsing | (var_x, var_y) {{{ C code goes here }}} | 17:28 | |
| whiteknight | look at, for instance, fetch and vivify. Much of that code can (and, according to at least one ticket) should be factored out into a shared function. | ||
| plobsing | black-box-block needs arguments | ||
| whiteknight | for ops like add_i_i_i, no separate function call is needed | 17:29 | |
| most of the common, simple ops will be fine. it's the bloated, convenience, magical ops that won't see a huge benefit | |||
| and that's to be expected | |||
| most of the string ops are thin wrappers around functions in src/string/api.c. Most of the PMC-related ops are thin wrappers around VTABLEs | 17:30 | ||
| NotFound | For ops that do a lot of function calls, each doing a lot of work, one more call will not be a big difference. | ||
| whiteknight | where we see a big benefit to inlining and semantic analysis are the ops for integer and float operations. also branch/jump ops too | ||
| plobsing | I think it will take a very smart JIT to properly handle the branch/jump ops. | 17:32 | |
| NotFound | Note that some of that calls might be expanded inline by the C compiler. | ||
| sorear | whiteknight: do you want to restrictm Parrot to platforms with boring pointers? | ||
| whiteknight | sorear: Parrot already is restricted to platforms with boring pointers | 17:33 | |
| sorear | whiteknight: in general, X* has a different size depending on the nature of X | ||
| whiteknight | if not by policy than certainly by implementation | ||
| anything smaller than an intval will be zero-extended, and anything larger will be truncated. | |||
| dalek | rrot: d89856a | plobsing++ | api.yaml: deprecate old pointer-ish types |
17:36 | |
|
17:37
NotFound_b joined
|
|||
| cotto_work | bacek++ for the aggressive pretty-printing | 17:47 | |
|
17:58
NotFound_b left
18:06
bluescreen left
18:09
lucian joined
18:10
bluescreen joined
18:11
bluescreen left
18:16
ShaneC left
|
|||
| atrodo | I go to lunch, and miss good discussions, like always | 18:22 | |
| sorear | Why does NEWS talk about winxed and cardinal? | 18:23 | |
| cotto_work | sorear: it hasn't been pruned | ||
|
18:26
bluescreen joined
|
|||
| whiteknight | there has been a lot of argument recently about what belongs in NEWS and what does | 18:26 | |
| doesn't | |||
| I tend to be pretty inclusive, but some people want less | |||
|
18:27
davidfetter joined
18:29
ShaneC joined
|
|||
| dukeleto | i like being inclusive. It is hard for people outside of the community to see what is happening, unless it is in NEWS or a blog post | 18:29 | |
| the NEWS file is our primary way of telling people about new features and improvements | 18:30 | ||
| sorear: our NEWS file contains news about the parrot community, as well as core | |||
| sorear: NEWS shouldn't go into extreme detail, but mentioning new HLL's or large improvements in HLL's are fine | |||
| NotFound | News about languages are good, but without excessive detail, I think. | 18:31 | |
| dukeleto | sorear: it shows people that there really is a community, and parrot is not working in isolation | ||
| NotFound: yep | |||
|
18:31
plobsing left
|
|||
| cotto_work | I think about NEWS in terms of what'd be interesting to someone who's curious about Parrot but doesn't know or care much about its internals. | 18:34 | |
| davidfetter waves to dukeleto | 18:38 | ||
| dukeleto, you planning to come to PGCon this year? | 18:39 | ||
| dukeleto | davidfetter: my talk about PL/Perl6 was not accepted | 18:40 | |
| davidfetter: yet they are having a PL summit. Go figure. | |||
| davidfetter | same w/mine on view triggers, but i'm probably going anyhow | ||
| btw, that wCTE thing got in | |||
|
18:41
bluescreen left
|
|||
| tadzik | how to easily check if the file exists in PIR/Nqp? | 18:44 | |
|
18:45
lucian_ joined
18:48
lucian left
|
|||
| dukeleto | tadzik: plumage probably has code for that | 18:56 | |
| davidfetter: what is wCTE ? | |||
| cxreg | writable common table expressions, presumably | 19:00 | |
| good stuff | |||
| davidfetter | dukeleto, it's an extension to SQL that i invented. others wrote the code | ||
| yep | |||
| "others" being marko (johto) tiikkaja | 19:01 | ||
| cxreg | i havent been watching the commitfests | ||
| davidfetter | this went in in the past week | ||
| cxreg | heh, wasnt cf4 over a few weeks ago? | ||
| davidfetter | nope | ||
| and besides, CF should really be "RF" | 19:02 | ||
| cxreg | ok i guess the schedule changed | ||
| davidfetter | it's not about committing. it's about reviewing | ||
| cxreg | true. lately it's probably a merge-fest | ||
| heh | |||
| i havent noticed how well Pg devs have embraced git | |||
| davidfetter | it's going to be a multi-year process. the whole "pull request" thing may never catch on | 19:03 | |
| cotto_work | I <3 pull requests. | ||
| ShaneC | i'm gonna take a look at implementing this: trac.parrot.org/parrot/ticket/955 | 19:04 | |
| any particular path that should be taken for implementing this? the most straightforward approach looks like it would be adding an extra 't' open mode to the filehandle pmc and deleting the file when the pmc is destroyed | |||
| cotto_work | ShaneC: that seems like a reasonable interface | 19:05 | |
| NotFound | Please don't overcharge the FileHandle PMC with logic for very specific cases. | 19:06 | |
| cotto_work | other people may disagree | ||
| NotFound | It already has too much, IMO. | ||
| cotto_work | ;) | ||
| ShaneC | i agree i'm not a huge fan of adding that right to the filehandle pmc, but not sure if there is a better way | 19:07 | |
| cotto_work | NotFound: what about subclassing FileHandle? | ||
| NotFound | We have ineritance, we don't need lots of 'if' for special casing. | ||
| cotto_work: aye | 19:08 | ||
| cotto_work | You could almost do it from pir. | ||
| it might be possible with plobsing++'s self-named pmcs | 19:09 | ||
| ShaneC | self-named pmc? | 19:10 | |
| cotto_work | Ptr* | ||
| (to be fair, there's a PMC already named "Pointer", so he couldn't take that one) | 19:11 | ||
| ShaneC | looking at ptr.pmc -- what makes this 'self-named'? | 19:15 | |
|
19:18
lucian joined
|
|||
| cotto_work | "Ptr" | 19:20 | |
| written by Peter Lobsinger | |||
| atrodo suspects that's not by accident | |||
| NotFound | Using SMSs | ||
|
19:21
lucian_ left
|
|||
| nopaste | "tadzik" at 192.168.1.3 pasted "> parrot-nqp > pir::stat_isi('" (9 lines) at nopaste.snit.ch/34966 | 19:21 | |
| tadzik | what am I doing wrong here? | 19:22 | |
| NotFound | Nest crazy project: a big and complex IDE with a user interface driven by SMSs. | ||
| s/Nest/Next | |||
| tadzik: stat is a dynop | 19:24 | ||
|
19:25
plobsing joined
|
|||
| tadzik | NotFound: what does that mean? | 19:25 | |
| cotto_work | tadzik: you have to load it first. It's not available by default. | 19:26 | |
| NotFound | tadzik: you need to load io_ops to use it. | ||
| tadzik | thanks | 19:28 | |
| is pir::load_bytecode("io_ops.pbc"); ok? | 19:29 | ||
| cotto_work | s/.pbc// | ||
| tadzik | thank you | ||
| whiteknight | I think it's pir:loadlib("io_ops") | 19:30 | |
| unless there is a .pbc wrapper library somewhere for it | |||
| NotFound | tadzik: To be able to use the opcode, it must be loaded before runtime. Don't know what's the recommended nqp way to do that. | ||
| whiteknight | oh right, you need to include the ops file as a directive, so IMCC can find and parse the op before parsing starts | 19:31 | |
| Q:PIR{ | |||
| .loadlib "io_ops" | |||
| } | |||
| I think | |||
| tadzik | syntax error ... somewhere | 19:32 | |
| OH MY WHO INVITED IT | |||
| hrm | 19:35 | ||
| plobsing | .loadlib directives are dissallowed inside subs | 19:38 | |
| I've had luck in the past with Q:PIR{ .end \\n .loadlib 'io_ops' \\n .sub '' :anon } | 19:39 | ||
| cotto_work | headdesk | ||
| moritz | that is a kinda "ouch" approach | ||
| tadzik | ouch | 19:40 | |
| cotto_work | That kind of hackery should never be needed to get normal work done. | ||
| plobsing | hey, it works... | 19:41 | |
| cotto_work | yes. I'm sad that it's needed. | ||
| plobsing | you could try to get a Q:TOPLEVEL-PIR {} into NQP. | 19:42 | |
| whiteknight says something about winxed. the way, the truth, the light, etc | |||
| NotFound | In Winxed we trust X-) | 19:43 | |
| plobsing | or hack IMCC to allow these statements inside subs (figuring out why they disallowed it in the first place along the way) | ||
| whiteknight | I think what Kakapo did was have a small PIR header file which included those kinds of things, and then use pbc_merge in the build to jam that in with all your NQP code | 19:44 | |
| or something, I can't really remember | |||
| NotFound | I'll suugest to ask of file a ticket with the nqp guys better than developing too hacky tricks. | 19:46 | |
| s/of/or | 19:47 | ||
| whiteknight | I'm sure it would not be too hard to add a "using parrot::op 'io_ops';" kind of statement to NQP | 19:49 | |
| I don't know what the preferred syntax would be | |||
| plobsing | only one way to find out - ask #p6 | 19:50 | |
| whiteknight | whoa whoa whoa. Let's not start doing the right thing all of a sudden | 19:51 | |
| davidfetter | heh | ||
| NotFound | Boys, don't do that at home. | 19:52 | |
| dalek | nxed: r840 | NotFound++ | trunk/winxedst1.winxed: some minor cleanup and refactoring |
19:56 | |
| bacek | Good morning, humans. | 19:58 | |
| whiteknight, INIT { Q:PIR{ .loadlib 'io_ops' } } | 19:59 | ||
| whiteknight | does that work? | ||
| bacek | I think it should work. | ||
| tadzik | I think it does not | ||
| whiteknight | INIT creates a .sub. | ||
| you can't .loadlib in a .sub | |||
|
20:00
lucian_ joined
|
|||
| bacek | why you can't use just "loadlib"? | 20:00 | |
| ah... Understood... | |||
| plobsing | Q:PIR { } creates a sub | ||
| tadzik | for it does not work :) | ||
| wklej.org/id/485789/ -- teh codes | 20:01 | ||
| line 46 | |||
|
20:03
jjore left,
lucian left
|
|||
| whiteknight | tadzik: that works? | 20:03 | |
| tadzik | whiteknight: no | 20:05 | |
| whiteknight | awesome | ||
| tadzik | the commented line causes a compilation fail | ||
| no, it's not :) | |||
| well, what is pasted works | |||
| but the existance of the $apiyaml is not checked | 20:06 | ||
|
20:06
jjore joined
|
|||
| davidfetter waves to jjore | 20:08 | ||
| nopaste | "whiteknight" at 192.168.1.3 pasted "idea for a driver program for tadzik++" (14 lines) at nopaste.snit.ch/34974 | 20:09 | |
| whiteknight | tadzik: something like that is...not ideal, but with some small tweaks it should work | ||
| I haven't tested it | 20:10 | ||
| plobsing | that will work, but shouldn't | ||
| whiteknight | why shouldn't it? | ||
| I can understand that it shouldn't be necessary, but it should work if we were stupid enough to try it | |||
| plobsing | oplibs should only be available if they have been loaded within the compilation or passed explicitly to the compiler | ||
| right now, it *will* look at all loaded oplibs, but that is a little on the broken behaviour side of things | 20:11 | ||
| whiteknight | plobsing: is there a way to pass it to the compiler? I don't know HLLCompiler very well | ||
| plobsing | not at the current time. but I'm refering to the PIR compiler | ||
| whiteknight | in the future I can see that this wouldn't work, but in the short period of time between now and when we get a fix into NQP, it should | 20:12 | |
| all we need is to get tadzik moving, not future-proof it | |||
| tadzik: alternatively, you could do a little build script that does "parrot-nqp --target=parse -o mycode.pir mycode.nqp", then take the raw PIR code, prepend the .loadlib directive to the file, and compile it that way | 20:13 | ||
| tadzik: there are no *good* options, but there are options | 20:14 | ||
| tadzik | whiteknight: oh, I've just got rid of a driver program, not again ;) | ||
| I wonder what slurp will do to a nonexistant file | 20:15 | ||
| cotto_work | bacek: good morning. Nice job with pretty-printing generated ops code. | ||
| bacek | cotto_work, yes, I actually found couple of bugs in parser during it :) | 20:17 | |
| dalek | rrot/opsc_full_parse: 10e3f3b | cotto++ | compilers/opsc/src/Ops/Op.pm: simplify pretty-printing code a bit |
20:18 | |
| bacek | cotto, any objections to merge it now? | ||
| cotto_work | nope | ||
| bacek | testing merged master now | 20:20 | |
| tadzik | no need for loadlib, try {} around slurp() is just fine | 20:26 | |
| dalek | rrot: 10e3f3b | cotto++ | compilers/opsc/src/Ops/Op.pm: simplify pretty-printing code a bit |
20:27 | |
| rrot: a0c67a1 | bacek++ | / (16 files): Merge branch 'opsc_full_parse' |
|||
| bacek | cotto, done | ||
| cotto_work | awesome and awesomer | 20:28 | |
| bacek: mind if I nuke the branch? | 20:33 | ||
| bacek | cotto_work, go for it | ||
| dalek | nxed: r841 | NotFound++ | trunk/winxedst1.winxed: refactor a bit initialization and handling of PredefFunction objects |
20:34 | |
|
20:35
fperrad left
|
|||
| NotFound | tadzik: is probably better that way, checking the possibility od doing something and doing it after is subject to race conditions. | 20:36 | |
|
20:36
fperrad joined
|
|||
| dalek | rrot: cc17e85 | bacek++ | compilers/opsc/src/Ops/Op.pm: Factor out .join_children method for commonly used pattern. |
20:41 | |
| rrot: be19a45 | bacek++ | compilers/opsc/src/Ops/Op.pm: Stylish changes for consistency. |
20:51 | ||
|
20:55
plobsing left
|
|||
| dalek | nxed: r842 | NotFound++ | trunk/winxedst1.winxed: fix use of exists in void context |
20:56 | |
| tadzik | writing Nqp is fun. A pure language, almost nothing provided, yet fun | 20:57 | |
| jnthn has found it pleasant for hacking grammar/actions/meta-objects in. :) | 20:58 | ||
| whiteknight | I've enjoyed the NQP I've written too. It is nice | ||
| tadzik | I wonder how winxed is | 20:59 | |
| whiteknight | I very much enjoy it too. It's similar, but a little lower-level | 21:00 | |
| tadzik | I tended to look at it as a dog at a hedgehog, but many people like it, and I like their effects | ||
| whiteknight | it's more parrotish | ||
| tadzik | oh, even more tempting | ||
| Coke | that mathop test is STILL running. | 21:01 | |
| tadzik | ah, that's probably nqp is "not Parrot-only, so bad"? :) | ||
| whiteknight | imagine if we had never designed PIR, but instead were programming Parrot inspired by javascript. That's winxed | ||
| Coke | (parrot now up to 4223M ...) | ||
| tadzik | I never really used JavaScript | ||
| cotto_work | tadzik: it's delightful if you have something to abstract away browser insanities | 21:02 | |
| NotFound | tadzik: don't worry, it looks familiar enough for anyone with some experience with javascript, java, C++ or C# | 21:04 | |
| tadzik | any catchy name for a deprecations detector? | ||
| NotFound: none, none, little, none, but I see your point :) | |||
| whiteknight | winxed doesn't have Q:PIR or anything like it, so when the abstraction breaks, it really really breaks | ||
| tadzik | I'm not worried about the syntax, it looks sane | ||
| whiteknight | in NQP, you can always fall back to PIR if you're desperate | ||
| and then you end up with mish-mash half and half code. | 21:05 | ||
| tadzik | any catchy name for a deprecations detector? | ||
| . o O ( dedeprecator ) | |||
| NotFound | tadzik: obsolescentkerberos | 21:06 | |
| tadzik | or maybe I'll just dedicate it to someone. How do you like "Natalie"? :) | 21:07 | |
| dedeprecator sounds good to me | 21:08 | ||
| NotFound | Given that is tool to help killing old things, "Natal" doesn't look appropiate. | ||
|
21:09
plobsing joined
|
|||
| Coke | 4441M # zzz | 21:11 | |
| whiteknight | Coke: methinks you have some kind of infinite loop | ||
| Coke: but if you want to keep watching that, I may have some drying paint around here you might also like to watch | 21:12 | ||
| tadzik | NotFound: aye, after finding out the meaning of the name I don't think that actually makes sense | ||
| NotFound | For a more productive approach, you can write a opengl fish tank simulator and watch it. | 21:16 | |
| dalek | rrot: 8c03bce | mikehh++ | compilers/opsc/src/Ops/Compiler/Grammar.pm: fix codetest failure - trailing whitespace |
21:17 | |
| tadzik | cotto_work: github.com/tadzik/parrot-deprecati...ter/README if you want to take a look | ||
|
21:20
mikehh_ is now known as mikehh
21:21
perlite_ joined
|
|||
| mikehh | opbots, names | 21:22 | |
| tadzik | do I need to load something to use the OS pmc? | 21:23 | |
| I get "Class 'OS' not found" in my nqp | |||
| plobsing | OS is a dynpmc | ||
| whiteknight | tadzik: pir::loadlib("os"); | ||
| that one is easy to use, unlike io_ops | 21:24 | ||
| Coke | OS, no? | ||
| tadzik | os seems ok | ||
| whiteknight | tadzik: github.com/Whiteknight/Rosella/blo...der.nqp#L6 | ||
| plobsing | we use alllowercasenames for pmc filenames | 21:25 | |
|
21:25
perlite left,
perlite_ is now known as perlite
|
|||
| plobsing | not entirely sure why | 21:25 | |
| whiteknight | easier for lazy unix programmers | ||
| Coke | ah, right, we lcase all our pmc filenames. | ||
| ... and now I'm caught up. ;) | |||
| tadzik | whiteknight: pir::new__PS('OS'); -- couldn't __PS be ommited? | ||
| whiteknight | tadzik: I don't know. I didn't try | 21:26 | |
| tadzik | wfm | ||
| whiteknight | I don't know the rules for when the __PS can be omitted or not | ||
| I just always put it in so I'm not surprised | 21:28 | ||
|
21:30
whiteknight left
|
|||
| tadzik | anyone familiar with Parrot's stat()? | 21:39 | |
| I see stat[2] returns 16877 for directories, but is it always 16877? | |||
| plobsing | tadzik: you can use stat.pasm to assign names to stat return value indices | 21:43 | |
| in this case, you are referring to STAT_ISDIR | |||
| which should be a non-zero value for dirs, but not necessarily 16877 | 21:44 | ||
| Util | tadzik: It is just like Perl 5's stat: | ||
| perl -wle 'print ( (stat ".")[2] );' | |||
| 16877 | |||
| NotFound | tadzik: take it as a boolen: 0 or non zero | ||
| Util | bacek++ # for perfect prettification of core_ops.c | 21:45 | |
| tadzik: It helps to view it in octal: perl -wle 'printf "%o\\n", 16877' | 21:46 | ||
| 40755 | |||
| the 755 part is rwxr-xr-x | |||
| tadzik | well, it's always non-0 | ||
| that's the problem :) | 21:47 | ||
| Rakudo checks for zeroness too | |||
| NotFound | Util: Do you think that really helps people that doesn't already know its meaning? | ||
| tadzik | the octal form makes sense | ||
| nqp for, why are you so stupid? :( | 21:48 | ||
| Util | NotFound: Hmmm. If you think in binary, then yes. Otherwise, perhaps it would be a leap too far :) | 21:49 | |
| NotFound | chmod 007 Bond | 21:50 | |
| Util | Sometimes I just default to "listener will understand" until I see confusion on their face, then fill in the gap. Non-optimal over IRC :) | 21:51 | |
| NotFound | This is my confused smile: %-\\ | 21:52 | |
| Util | To strangers, he acts open, but to those closest to him, he is inscrutable and defensive. # chmod 007 Bond | 21:53 | |
| NotFound: I am unclear if you were asking for an explaination of 755, or just pointing out that my one-line summary was insufficient for others. | 21:55 | ||
| NotFound | Util: I've been administering Unix systems for more than 10 years. 10 decimal ;) | 21:56 | |
| Or maybe hex | |||
| Util | Thanks for the clarification. | 21:57 | |
| tadzik | 2222 cotto_work | tadzik: I'm looking forward to being able to tell users "run this script in your project's root dir and it'll detect most of the | 21:58 | |
| | deprecations that you'll run into" | |||
| cotto_work: now you can. Let me just push it :0 | |||
| NotFound | I suppose you know why programmers confuses christmas and halloween. | ||
|
21:58
plobsing left
|
|||
| tadzik | done | 22:01 | |
| cotto_work | tadzik: I'm busy with $dayjob, but I look forward to looking at it tonight | 22:03 | |
| tadzik | no hurry | 22:05 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (PASS but would not upload) fulltest) at 3_1_0-685-g8c03bce - Ubuntu 10.10 i386 (g++-4.5) | ||
| Coke | msg whiteknight it's not an infinite loop. partcl on parrot is just godawful slow running several thousand lines of tcl. | 22:07 | |
| aloha | OK. I'll deliver the message. | ||
| tadzik | heh, it actually found deprecations in Parrot source tree :) | ||
| Coke | absolutely does not surprise me. | 22:08 | |
| tadzik | mostly :init flag, as that's one of the two deprecations I have regexes for :) | 22:09 | |
| Coke | hurm. partcl (old) is even MORE godawful slow than it used to be, it would seem. | ||
| shame. | 22:10 | ||
|
22:19
rurban_ joined
22:22
rurban left,
rurban_ is now known as rurban
|
|||
| nopaste | "tadzik" at 192.168.1.3 pasted "dedeprecator in action" (146 lines) at nopaste.snit.ch/35033 | 22:25 | |
|
22:25
dmalcolm left
|
|||
| bacek_at_work | ~~ | 22:28 | |
| tadzik | o/ | 22:29 | |
| cotto_work | tadzik: lookin' good | 22:30 | |
| tadzik | the ascii errors are from YAML::Tiny I believe | 22:32 | |
| bacek_at_work | tadzik, try binary encoding in slurp | 22:35 | |
| tadzik, open($file, :r, :bin) in nqp setting. | 22:36 | ||
| tadzik | oh wait, it's not YAML that fails | 22:41 | |
| and FileHandles are utf8 by default, so I don't know why this complains about ASCII | 22:42 | ||
| and if I go for binary, it says "Invalid operation on binary string" | 22:43 | ||
| looks like utf8 wasn't the default after all | |||
| bacek_at_work | tadzik, dedeprecator, line 53 | 22:44 | |
| it's nqp-setting slurp. So it's utf8 | |||
| But string_cs_43 isn't utf8. It's iso-8859-1 | |||
|
22:44
whiteknight joined
|
|||
| NotFound | Isn't PIR wonderful? | 22:48 | |
| Maybe is time to talk again about the mixed encoding PIR files. | 22:49 | ||
| tadzik | bacek_at_work: got it | 22:51 | |
| if I add a script to tools, will it get automagically installed or something? | |||
| I think about moving dedeprecator to the Parrot repo, so api.yaml can be updated and results will be visible | 22:53 | ||
|
22:56
dalek left
23:01
sorear left,
TimToady left
|
|||
| bacek_at_work | tadzik, looks like at least some of tools installed | 23:05 | |
| bacek@illusion:~/src/parrot (master) $ ls /usr/local/lib/parrot/3.1.0-devel/tools/dev/ | |||
| create_language.pl gen_makefile.pl mk_language_shell.pl pbc_to_exe.pir pprof2cg.pl reconfigure.pl | |||
| tadzik | depends on some Makefile I suppose | ||
| any reasons not to merge it? | |||
| bacek_at_work | merge what? | 23:06 | |
| tadzik | the deprecations detector into parrot | 23:07 | |
| s/merge/copy files and commit/ | |||
| bacek_at_work | (installed tools) lib/Parrot/Manifest.pm, _get_special | ||
| tadzik, +1 from me to copy it | |||
|
23:13
fperrad left
|
|||
| tadzik | where's dalek? | 23:24 | |
| mikehh | dalek is missing | ||
| tadzik | oh | 23:25 | |
| mikehh | left the server about 30 minutes ago, has not come back yet | 23:26 | |
| dunno how to call him back | |||
| aloha dalek? | 23:29 | ||
| aloha | mikehh: dalek is being slow tonight, methinks | ||
| tadzik | dalek is also gone | ||
| bacek_at_work | seen Coke | 23:30 | |
| clunker3 | Coke was last seen on #parrot 1 hour, 20 minutes and 14 seconds ago, saying: shame. | ||
| aloha | Coke was last seen in #parrot 1 hours 20 mins ago saying "shame.". | ||
| clunker3 | coke was last seen on #parrot 2 years, 6 months, 9 days, 20 hours, 9 minutes and 25 seconds ago, saying: I'll get you an answer on that one by Friday. | ||
| Coke | bacek++ # clunker violence. | 23:31 | |
| I have a few moments before daughter kicks me off computer. what's up? | |||
| bacek_at_work | Coke, #1811 (int divide) | ||
| Coke | aye? | ||
| bacek_at_work | We dispatch it to div_p_p_p | 23:32 | |
| which calls VTABLE_divide | |||
| which call Integer.divide ignoring MULTI divide in TclInt | |||
| It's probably related to #452 | 23:33 | ||
| It's definitely #452 sideeffect | 23:34 | ||
| Coke | gotta run. Let me know if I need to change tcl. (I shouldn't, but it's been broken so long, a patch to partcl would be welcome to) | 23:35 | |
| bacek++ # tracking parrot breakage down. | |||
| bacek_at_work | Coke, hmm. It's dispatched to mmd. Don't know why it doesn't work | 23:38 | |
| Coke, hey. It's in "infix:/" | |||
| In partcl | 23:39 | ||
| mikehh | tadzik: just re-generated MANIFEST, you need to run perl tools/dev/mk_manifest_and_skip.pl to re-gen MANIFEST when you add a file | ||
| and also of course if you want to ignore a file (MANIFEST.SKIP) | 23:40 | ||
| but of course dalek not being here it is not reportin' | 23:42 | ||
| tadzik | mikehh: on it | ||
| mikehh | tadzik: I've done it for now | ||
| tadzik | bah, ok | 23:43 | |
| so, what can I do with my git repo if I alredy commited? | |||
| is there any git undo? | |||
|
23:46
plobsing joined
23:47
hercynium left
|
|||
| tadzik | ok, got it. git reset --hard 'HEAD^' | 23:47 | |
| sleep & | 23:48 | ||
|
23:56
Hunger left,
athomason joined
23:57
Hunger joined
|
|||