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