Camelia, the Perl 6 bug

IRC log for #parrot, 2011-03-02

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 Andy left #parrot
00:03 Coke we had that on the list last week, (2 weeks ago?) but nothing happened.
00:13 plobsing joined #parrot
00:23 kid51 is now known as kid51_at_dinner
00:24 bacek_at_work Coke, ticket #2022 "Something borked with HLL mappings."
00:24 bacek_at_work It actually box strings to String.
00:24 bacek_at_work And then PCC convert it to INTVAL
00:25 bacek_at_work Looks like "mis-communication" between partcl and parrot.
00:29 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?
00:29 Coke Yes.
00:30 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
00:30 Coke bacek_at_work: yes, because String morphs to Integer, and TclString -> TclInt
00:31 Coke 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?
00:31 aloha bacek_at_work: partcl is broken, so it's not clear your change breaks it more or https://github.com/partcl/partcl
00:35 bacek_at_work Coke, what is expected behaviour? Cast 0.2 to 1?
00:35 cosimo joined #parrot
00:40 Coke no. it should throw an exception.
00:41 bacek_at_work which one?
00:42 Coke (look at src/pmc/tclstring.pmc's VTABLE get_integer - calls the vtable override ... defined in src/class/tclstring.pir
00:43 Coke 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:44 lucian_ joined #parrot
00:45 bacek_at_work Coke, hll is correct. But there is no String to TclString mapping
00:46 bacek_at_work where is it defined?
00:47 bacek_at_work (mapping)
00:47 lucian left #parrot
00:47 bacek_at_work src/pmc/tclstring.pmc "maps String"?
00:50 bacek_at_work Coke, meh...
00:50 bacek_at_work Found it.
00:51 bacek_at_work "tcl" HLL registered _after_ TclString.class_init. That's why there is no mapping from String to TclString created
00:52 whiteknight that seems like it shouldn't happen
00:52 whiteknight did something in parrot change to cause that ordering to flip? or did partcl change?
00:53 bacek_at_work Parrot::Pmc2c::PMC doesn't register new HLL.
00:53 whiteknight did it used to?
00:54 bacek_at_work No idea.
00:54 bacek_at_work I can fix it by patching Pmc2c.
00:55 nopaste "bacek" at 192.168.1.3 pasted "Fix for Pmc2c to register HLL." (23 lines) at http://nopaste.snit.ch/34865
00:57 whiteknight oh, okay. so Pmc2c used to do that mapping
00:57 whiteknight it must have changed at some point
00:57 Coke whiteknight: that was not a partcl change.
00:57 bacek_at_work bacek@illusion:~/src/partcl$ ./tclsh error.tcl
00:57 bacek_at_work expected integer but got "0.2"
00:57 whiteknight oh, I know that now
00:57 bacek_at_work this is with my patch
00:58 Coke bacek_at_work: if it passes 'make test', ship it. that's a regression for some time now.
00:58 Coke bacek++ !
00:58 Coke bacek++ !
00:58 Coke bacek++ !
00:59 Coke (doing a parrot test run with that change.)
01:00 bacek_at_work Coke, I don't now how to write test for it...
01:01 hercynium left #parrot
01:02 kid51_at_dinner is now known as kid51
01:02 Coke bacek_at_work: me either. I'm not saying close the ticket... ;)
01:03 whiteknight just leave the ticket open forever, on the pile with the hundreds of other tickets
01:05 lucian_ left #parrot
01:05 Coke "needs a test" is a fine temporary status.
01:08 Coke bacek_at_work: no tests in parrot fail.
01:08 Coke bacek_at_work: ALL TEST IN PARTCL (old) PASS.
01:08 Coke *tests
01:08 Coke please ship it. ;)
01:10 cotto ~~
01:10 Coke (it may be an illusion, but the builds/tests on partcl* seem to be going faster these days.)
01:10 whiteknight hopefully not an illusion
01:11 Coke whiteknight: I didn't notice any particular speedup after the gc mergeback.
01:12 Coke may just be that I'm not running a taptinder at the moment.
01:12 Coke no help to partcl-nqp, but that unbreaks partcl-old quite nicely.
01:13 mtk left #parrot
01:16 dalek parrot: 90b78cc | bacek++ | lib/Parrot/Pmc2c/PMC.pm:
01:16 dalek parrot: Fix regression with PMC HLL mapping. Register HLL uncoditionally before map
01:16 dalek parrot: review: https://github.com/parrot/parrot/commit/90b78cc458
01:17 Coke also, bacek++
01:18 bacek_at_work Do we have something like "test needed" status in trac?
01:18 Coke checking...
01:18 bacek_at_work I don't want to close ticket without test.
01:19 Coke I would just add "testneeded" as a keyword for now.
01:19 bacek_at_work Coke, done
01:19 bacek_at_work All tests successful.
01:19 mtk joined #parrot
01:19 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 bacek_at_work Result: PASS
01:19 bacek_at_work bacek@illusion:~/src/partcl$
01:19 bacek_at_work Looks about all right :)
01:20 bacek_at_work Coke, http://trac.parrot.org/parrot/ticket/1886
01:21 bacek_at_work It produces "0\n1" after patch. Is it correct behaviour?
01:22 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
01:23 Coke bacek_at_work: it still generates the stacktrace here.
01:23 Coke (after printing 0\n1\n)
01:23 bacek_at_work Coke, hmmm... Not on my box.
01:23 Coke bacek_at_work: are you using partcl or partcl-nqp?
01:23 bacek_at_work old
01:24 Coke no, that's -nqp.
01:24 bacek_at_work ah, bug is about -nqp. Soory
01:24 bacek_at_work Sorry
01:24 Coke it's confusing, I admit. :(
01:32 Coke the segfault on http://trac.parrot.org/parrot/ticket/1811 is troubling.
01:33 bacek_at_work Our trace runcore is severely broken
01:34 nopaste "coke" at 192.168.1.3 pasted "segfault with parrot -t5" (49 lines) at http://nopaste.snit.ch/34866
01:36 Coke of course, we could just, iunno, revert the commit that caused the breakage. ;P
01:41 Coke could it be that class has a VTABLE init but not a VTABLE init_int?
01:42 bacek_at_work Coke, quite possibly
01:43 whiteknight wtf is -t5?
01:43 Coke or that pmcproxy's init_int is soooo different from it's init.
01:43 Coke whiteknight: -t4 AND -t1
01:43 whiteknight wtf are -t4 AND -t1?
01:44 bacek_at_work t4 - sub names only
01:44 Coke though that particular example dies with -t1. no -4 needed.
01:44 bacek_at_work -t1 pir ops
01:44 Coke whiteknight: -t1 is a trace of opcodes.
01:44 * Coke is stunned that someone working on parrot so long hasn't used those.
01:45 whiteknight can't say I've ever had a need
01:46 Coke also, they're the same as "trace <x>
01:46 Coke (which you can turn on/off a little more judiciously.
01:47 * Coke fires up "make spectest" in partcl old for the first time in ... years, probably.
01:56 bacek_at_work Coke, quite few failed tests
01:57 whiteknight partcl-old makes heavy use of the IMCC compreg, right?
01:57 bacek_at_work whiteknight, of PIR macros actually.
01:57 whiteknight ok
02:10 Coke bacek_at_work: in "make spectest" ?
02:11 Coke whiteknight: in that "it's all written in PIR" ? sure.
02:11 Coke (aside from some stuff written in PMC + Ops + C)
02:11 Coke The fact that "make spectest" can even RUN is amazing. :)
02:12 Coke (take a look at the size of library/tcltest/tcltest.tcl
02:13 cotto Coke, I admire that you resisted the temptation for lame puns in that filename.
02:16 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 Coke atrodo - "is parrot fast yet" - you can add "make spectest" from partcl (old) to the list if you want something really slow.
02:21 Coke whiteknight: it does make heavy use of macros, yes.
02:21 whiteknight yeah. ok
02:40 cotto bacek_at_work, do you know what the fix is for avoiding duplicate curly braces in opsc output?
02:42 mikehh_ joined #parrot
02:44 shockwave So, how do I pass a C void* to a Parrot sub?
02:44 shockwave aloha: paste
02:44 shockwave !aloha: paste
02:45 shockwave aloha: !paste
02:45 aloha shockwave: Admin commands in privmsg only, please.
02:45 mikehh left #parrot
02:45 whiteknight left #parrot
02:47 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:48 dalek parrot/infnan2: ee0f898 | plobsing++ | / (3 files):
02:48 dalek parrot/infnan2: import commits r49425, r49427, r49428, r49430, and r49431 for further review and testing
02:48 dalek parrot/infnan2: review: https://github.com/parrot/parrot/commit/ee0f898b70
02:48 dalek parrot/infnan2: e0da873 | plobsing++ | config/auto/infnan (2 files):
02:48 dalek parrot/infnan2: forgot to add actual configure step
02:48 dalek parrot/infnan2: review: https://github.com/parrot/parrot/commit/e0da873841
02:48 dalek parrot/infnan2: 6636ce7 | plobsing++ | MANIFEST:
02:48 dalek parrot/infnan2: mk_manifest_and_skip
02:48 dalek parrot/infnan2: review: https://github.com/parrot/parrot/commit/6636ce7635
02:48 dalek parrot/infnan2: 6e49511 | plobsing++ | / (4 files):
02:48 dalek parrot/infnan2: probe for isinf() and isnan() and wrap in macros
02:48 dalek parrot/infnan2:
02:48 dalek parrot/infnan2: these functions, where available, are the recommended way to test for infs and nans
02:48 dalek parrot/infnan2: review: https://github.com/parrot/parrot/commit/6e49511078
02:48 dalek parrot/infnan2: b11cc2b | plobsing++ | config/auto/infnan/test_c.in:
02:48 dalek parrot/infnan2: update coda
02:48 dalek parrot/infnan2: review: https://github.com/parrot/parrot/commit/b11cc2b828
02:48 nopaste "shockwave" at 192.168.1.3 pasted "how to pass C void pointer to PIR sub?" (28 lines) at http://nopaste.snit.ch/34867
02:49 shockwave @plobsing: Cool. Do you happen to know where I can see an example?
02:49 dalek parrot: 4b42924 | (Gerd Pokorra)++ | NEWS:
02:49 dalek parrot: add more news
02:49 dalek parrot: review: https://github.com/parrot/parrot/commit/4b4292408b
02:50 plobsing I cannot find a non-internal usage of that pattern.
02:51 plobsing I recommend you take a look at src/pmc/ptr.pmc, which is likely the wrapper you'll want to use.
02:52 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.
02:52 shockwave I assume the embeeding doesn't yet have support for boxing an void*?
02:52 plobsing it does not, but it may be a useful addition.
02:54 shockwave I'm having a tricky time trying to get this doing with the current embedding way. I'll keep poking.
02:59 atrodo Coke> Can you quantify slow?
03:02 ShaneC left #parrot
03:20 ShaneC joined #parrot
03:21 bacek_at_work cotto_work, somewhere in Actions.pm when we create Ops::Op.
03:26 bacek_at_work cotto, actually no. It's in Trans::C
03:27 cotto ah
03:27 dalek parrot/opsc_full_parse: 1374d39 | bacek++ | compilers/opsc/src/Ops/Trans/C.pm:
03:27 dalek parrot/opsc_full_parse: Don't wrap op body into {}.
03:27 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/1374d398fc
03:28 cotto I see it
03:28 cotto d'oh
03:29 dalek parrot/opsc_full_parse: ade2764 | bacek++ | src/ (2 files):
03:29 dalek parrot/opsc_full_parse: Rebootstrap ops
03:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/ade2764564
03:38 cotto bacek_at_work, what's that gc change?
03:38 bacek_at_work cotto, oops
03:39 * cotto files a bacekbug
03:40 bacek_at_work if was mean to go to master
03:47 shockwave left #parrot
04:01 dalek parrot: f0e6396 | plobsing++ | include/parrot/thr (2 files):
04:01 dalek parrot: handle threadless parrot
04:01 dalek parrot:
04:01 dalek parrot: Either by platform or by choice parrot can be built without threads.  Don't
04:01 dalek parrot: include posix thread macros in this case.
04:01 dalek parrot: review: https://github.com/parrot/parrot/commit/f0e6396f8d
04:01 dalek parrot: d96059e | plobsing++ | MANIFEST:
04:01 dalek parrot: mk_manifest_and_skip
04:01 dalek parrot: review: https://github.com/parrot/parrot/commit/d96059e099
04:04 bacek left #parrot
04:06 dalek parrot: 4ef9318 | plobsing++ | src/gc/gc_gms.c:
04:06 dalek parrot: handle null returns for 0-sized allocations in GMS
04:06 dalek parrot:
04:06 dalek parrot: NULL does not necessarily mean error for empty allocations.
04:06 dalek parrot: review: https://github.com/parrot/parrot/commit/4ef93181ca
04:42 treed joined #parrot
04:44 treed left #parrot
05:34 dngor left #parrot
05:38 kid51 left #parrot
06:08 Drossel joined #parrot
06:09 Kulag left #parrot
06:12 dngor joined #parrot
06:17 dngor_ joined #parrot
06:18 dngor left #parrot
06:19 rurban_ joined #parrot
06:22 rurban left #parrot
06:22 rurban_ is now known as rurban
06:34 cosimo left #parrot
06:35 fperrad joined #parrot
06:42 Drossel left #parrot
06:43 Kulag joined #parrot
06:52 Kulag left #parrot
06:54 Kulag joined #parrot
06:59 ShaneC are parrot's threads used for anything except gc?
07:00 cotto Are they used for gc?
07:00 ShaneC some gc stuff looks kinda stubbed out, dunno if it's actually used
07:00 ShaneC either way -- are they actually used for anything?
07:01 cotto nothing substantive at all
07:08 cotto 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?
07:08 cotto it's not useful
07:08 ShaneC i assume some threading will be desired eventually
07:09 cotto ShaneC, absolutely
07:09 ShaneC what's wrong with the current code?
07:09 cotto have you tried using it?
07:09 ShaneC no, just reading through it atm
07:11 ShaneC seems like handling gc with it is a bit ugly
07:11 Khisanth left #parrot
07:11 cotto t/pmc/threads.t may be instructive
07:12 ShaneC thanks
07:14 Khisanth joined #parrot
07:31 cotto tewk, are you around?
07:37 theory left #parrot
07:58 dalek TT #1976 closed by cotto++: manifest-related files still reference Subversion
07:58 fperrad left #parrot
07:58 dalek TT #1976: http://trac.parrot.org/parrot/ticket/1976
08:03 bacek joined #parrot
08:07 fperrad joined #parrot
08:07 lucian joined #parrot
08:08 bacek left #parrot
08:08 lucian left #parrot
08:09 bacek joined #parrot
08:09 lucian joined #parrot
08:11 clunker9_ joined #parrot
08:19 dalek parrot/tewk/select: 66c741e | cotto++ | / (3 files):
08:19 dalek parrot/tewk/select: make FileHandle responsible for returning its handle
08:19 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/66c741e95f
08:19 dalek parrot/tewk/select: 87e6e87 | cotto++ | src/pmc/select.pmc:
08:19 dalek parrot/tewk/select: git rid of the "max" macro
08:19 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/87e6e8781a
08:19 dalek parrot/tewk/select: 3c3901b | cotto++ | / (2 files):
08:19 dalek parrot/tewk/select: clean up method names
08:19 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/3c3901b852
08:19 dalek parrot/tewk/select: 9ff0f1b | cotto++ | src/pmc/select.pmc:
08:19 dalek parrot/tewk/select: improve ATTR naming consistency
08:19 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/9ff0f1b8f9
08:19 dalek parrot/tewk/select: 44f74e1 | cotto++ | api.yaml:
08:19 dalek parrot/tewk/select: add Select PMC to api.yaml
08:19 dalek parrot/tewk/select: review: https://github.com/parrot/parrot/commit/44f74e1efb
08:19 cotto I feel better now.
08:23 cotto not great but better
08:24 cotto 'night
08:27 dalek parrot: 582eb0a | (Gerd Pokorra)++ | NEWS:
08:27 dalek parrot: fixed typo in NEWS file
08:27 dalek parrot: review: https://github.com/parrot/parrot/commit/582eb0ad72
08:31 dalek TT #2034 created by cotto++: Experimental Select PMC
08:31 dalek TT #2034: http://trac.parrot.org/parrot/ticket/2034
08:37 lucian left #parrot
09:01 mtk left #parrot
09:08 mtk joined #parrot
09:26 clunker3 joined #parrot
09:29 clunker3 was kicked by bacek: clunker3
09:30 dalek parrot/opsc_full_parse: 7fe3828 | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:30 dalek parrot/opsc_full_parse: Change arg passing to .to_c methods to support more rich %context instead of single $trans.
09:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/7fe38283eb
09:30 dalek parrot/opsc_full_parse: de62a06 | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:30 clunker9_ left #parrot
09:30 dalek parrot/opsc_full_parse: First cut of "pretty printing" of generated C file.
09:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/de62a065bb
09:30 dalek parrot/opsc_full_parse: b3fdfae | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:30 dalek parrot/opsc_full_parse: Little bit more prettiness.
09:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/b3fdfae358
09:30 dalek parrot/opsc_full_parse: d7ab88d | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:30 dalek parrot/opsc_full_parse: More prettiness.
09:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/d7ab88dd87
09:30 dalek parrot/opsc_full_parse: 2bf3bcd | bacek++ | compilers/opsc/src/Ops/Op.pm:
09:30 dalek parrot/opsc_full_parse: Put newline before control statement.
09:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/2bf3bcd6a5
09:30 dalek parrot/opsc_full_parse: 5a2f6b1 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
09:30 dalek parrot/opsc_full_parse: Don't wrap GC_WRITE_BARRIER into Stmts
09:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/5a2f6b16f9
09:30 dalek parrot/opsc_full_parse: f3c752c | bacek++ | src/ops/core_ops.c:
09:30 dalek parrot/opsc_full_parse: Rebootstrap pretty ops
09:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/f3c752c4bf
09:43 contingencyplan left #parrot
10:45 jsut_ joined #parrot
10:50 jsut left #parrot
11:29 dalek parrot/opsc_full_parse: 7cbd895 | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:29 dalek parrot/opsc_full_parse: Prettify "if"
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/7cbd895b77
11:29 dalek parrot/opsc_full_parse: 66fcfdd | bacek++ | compilers/opsc/src/Ops/ (2 files):
11:29 dalek parrot/opsc_full_parse: Remove generating of redundant Stmts
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/66fcfddab3
11:29 dalek parrot/opsc_full_parse: 6e00eab | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:29 dalek parrot/opsc_full_parse: Put additional newline between variable declarations and code.
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/6e00eab885
11:29 dalek parrot/opsc_full_parse: 2ea3b0f | bacek++ | / (3 files):
11:29 dalek parrot/opsc_full_parse: Fix parsing single-statement if/for/while
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/2ea3b0f6e5
11:29 dalek parrot/opsc_full_parse: b29d217 | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:29 dalek parrot/opsc_full_parse: Restore prettiness after last fix.
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/b29d2173f5
11:29 dalek parrot/opsc_full_parse: e613f2b | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:29 dalek parrot/opsc_full_parse: Little bit more stylish changes in generated C code.
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/e613f2be84
11:29 dalek parrot/opsc_full_parse: bf11a89 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
11:29 dalek parrot/opsc_full_parse: Wrap single statement into PAST::Block inside if/for/while for preserve semantic
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/bf11a895ce
11:29 dalek parrot/opsc_full_parse: cfab4e9 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
11:29 dalek parrot/opsc_full_parse: Reorder rules to get blockoid chance
11:29 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/cfab4e9e73
11:30 dalek parrot/opsc_full_parse: a57241f | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:30 dalek parrot/opsc_full_parse: Remove (now) useless handling of single statement in "if". We always have blockoid inside.
11:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/a57241fb55
11:30 dalek parrot/opsc_full_parse: 2cd4474 | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:30 dalek parrot/opsc_full_parse: Don't put useless semicolon.
11:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/2cd44746c2
11:30 dalek parrot/opsc_full_parse: fcb85f0 | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:30 dalek parrot/opsc_full_parse: Avoid newlines between var declarations and statement_controls.
11:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/fcb85f0de3
11:30 dalek parrot/opsc_full_parse: b4e714d | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:30 dalek parrot/opsc_full_parse: Put newline after statement_control to simplify logic of separating of different chunks.
11:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/b4e714db29
11:30 dalek parrot/opsc_full_parse: b29a213 | bacek++ | src/ops/core_ops.c:
11:30 dalek parrot/opsc_full_parse: Rebootstrap most pretty ops ever
11:30 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/b29a213c84
11:44 dalek parrot/opsc_full_parse: 708ed9e | bacek++ | compilers/opsc/src/Ops/Op.pm:
11:44 dalek parrot/opsc_full_parse: Don't put spaces and () around "->" and ".".
11:44 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/708ed9e161
11:44 dalek parrot/opsc_full_parse: 012fbae | bacek++ | src/ops/core_ops.c:
11:45 dalek parrot/opsc_full_parse: Rebootstrap ops again
11:45 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/012fbaee48
11:55 clunker9 joined #parrot
12:01 ttbot Parrot e613f2be i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/45598
12:02 bacek mj41++ # ttbot rulez!
12:10 ttbot Parrot e613f2be i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/45702
12:12 cognominal left #parrot
12:15 woosley joined #parrot
12:29 bluescreen joined #parrot
12:38 clunker9 is now known as clunker3
13:04 ttbot Parrot e613f2be i386-linux-thread-multi make error http://tt.taptinder.org/cmdinfo/45806
13:16 Coke atrodo: I started it last night. it's still running.
13:16 Coke ... I think it's gotten slower. I wonder where my last timing runs are.
13:24 whiteknight joined #parrot
13:24 whiteknight good morning, #parrot
13:25 dalek Rosella: 55f2300 | Whiteknight++ | s (3 files):
13:25 dalek Rosella: fixes so that the container library builds with winxed HEAD. Fails some tests
13:25 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/55f2300281
13:25 dalek Rosella: 7dd99ff | Whiteknight++ | src/container/Container.winxed:
13:25 dalek Rosella: fix Rosella.Container.default_container. Implemented in a funky way to work around some issues in winxed
13:25 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/7dd99fff9b
13:25 dalek Rosella: e7080dd | Whiteknight++ | src/container/Container. (2 files):
13:25 dalek Rosella: Container.resolve_create now takes slurpy constructor args, instead of the mishmash it was taking before. Fix Container.winxed and reclaim one more test
13:25 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/e7080dd8c1
13:25 dalek Rosella: 8ceb407 | Whiteknight++ | s (3 files):
13:25 dalek Rosella: translate event library to winxed. Builds and passes all tests
13:25 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/8ceb40736a
13:25 dalek Rosella: 8e8e734 | Whiteknight++ | s (3 files):
13:25 dalek Rosella: translate prototype library to winxed. All tests pass
13:25 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/8e8e734bec
13:26 whiteknight e src/test/*.nqp
13:26 whiteknight blarg
13:31 bacek ~~
13:31 bacek erm
13:31 whiteknight good morning, bacek
13:31 bacek Good night, humans
13:31 dalek parrot/opsc_full_parse: 8391085 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
13:31 dalek parrot/opsc_full_parse: Fix parsing of "do {} while" statements.
13:31 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/8391085999
13:31 dalek parrot/opsc_full_parse: 977b6b6 | bacek++ | compilers/opsc/src/Ops/Op.pm:
13:31 dalek parrot/opsc_full_parse: More prettifications.
13:31 whiteknight ...and goodnight!
13:31 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/977b6b6ce5
13:31 dalek parrot/opsc_full_parse: c53aedf | bacek++ | compilers/opsc/src/Ops/ (2 files):
13:31 dalek parrot/opsc_full_parse: Change pasing of "switch" to simplify emitting of C.
13:31 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/c53aedf2ce
13:31 dalek parrot/opsc_full_parse: b5f4413 | bacek++ | compilers/opsc/src/Ops/Compiler/Actions.pm:
13:31 dalek parrot/opsc_full_parse: Don't wrap "break" and "continue" into Stmts. It's unnessary.
13:31 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/b5f4413f35
13:31 dalek parrot/opsc_full_parse: aed22d0 | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
13:31 dalek parrot/opsc_full_parse: Change "label" parsing rule to exclude whitespace.
13:31 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/aed22d0490
13:31 dalek parrot/opsc_full_parse: dc0b353 | bacek++ | compilers/opsc/src/Ops/Op.pm:
13:31 dalek parrot/opsc_full_parse: Outdent label by 2 spaces
13:31 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/dc0b353927
13:32 dalek parrot/opsc_full_parse: fb5e818 | bacek++ | compilers/opsc/src/Ops/Op.pm:
13:32 dalek parrot/opsc_full_parse: Prettify output of labels of blockoids.
13:32 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/fb5e818f4a
13:32 dalek parrot/opsc_full_parse: 508750f | bacek++ | src/ops/core_ops.c:
13:32 dalek parrot/opsc_full_parse: Reboostrap most pretty ops ever
13:32 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/508750f8ed
13:34 bacek msg Util try new core_ops.c. It's pretty-printed now :)
13:34 aloha OK. I'll deliver the message.
13:34 atrodo Coke> That's probably too slow
13:41 dngor_ is now known as dngor
13:49 Coke atrodo: :)
13:50 Coke could probably pick /one/ spec test.
13:51 atrodo Coke> If you can pick me a good one, I'll add it.
14:03 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 #parrot
14:12 plobsing left #parrot
14:19 rurban_ joined #parrot
14:22 JimmyZ joined #parrot
14:22 rurban left #parrot
14:22 rurban_ is now known as rurban
14:25 bluescreen left #parrot
14:26 JimmyZ good evening, parrot
14:36 * JimmyZ doesn't think winxed news should be in the NEWS file
14:38 cogno joined #parrot
14:39 whiteknight hello JimmyZ
14:39 JimmyZ hello
14:39 JimmyZ whiteknight :)
14:40 Coke running tcl's spec test, I'm up to 3GIG of resident memory  usage.
14:40 dalek parrot: 37e051c | jimmy++ | NEWS:
14:40 dalek parrot: removed news which is old
14:40 dalek parrot: review: https://github.com/parrot/parrot/commit/37e051c19a
14:40 Coke (13G virtual)
14:45 cogno left #parrot
14:49 cogno joined #parrot
14:55 cogno left #parrot
14:57 dmalcolm joined #parrot
15:00 Coke now that it's at 3G, it seems to be going verrrry slow, but not increasing.
15:10 NotFound whiteknight: the plan is to have some way to define inline functions, better than improve the current specialized machinery for predefs.
15:14 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:16 bluescreen joined #parrot
15:16 NotFound I agree with JimmyZ, too detailed news for languages shouldn't be in parrot NEWS.
15:18 Coke should make distcheck be in there?
15:19 Coke sorry, release_check.
15:20 Coke Seems like that could just be "Further automate release process."
15:20 Coke ... and even that isn't really user-facing.
15:20 NotFound I'll add 'and packagers', is not just for release managers, isn't it?
15:21 Coke I also think that work-on-branches is probably not NEWS worthy as a top level item.
15:21 Coke "  + A statement convert the '.param' PIR systax
15:21 Coke ??
15:23 Coke 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.
15:28 Coke we needs an editor.
15:28 * Coke goes back to $dayjob.
15:31 whiteknight We're going to get to the point where nothing shows up in NEWS, no matter how much work we do
15:34 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:38 contingencyplan joined #parrot
15:40 plobsing joined #parrot
15:40 moritz don't we have the new GC as news item for the upcoming release?
15:58 JimmyZ left #parrot
16:01 cotto ~~
16:07 whiteknight hello cotto
16:08 plobsing o/
16:09 cotto moritz, it's in there
16:13 moritz so much for "nothing shows up in NEWS" then :-)
16:13 plobsing no NEWS is good NEWS
16:18 Patterner left #parrot
16:18 Psyche^ joined #parrot
16:18 Psyche^ is now known as Patterner
16:21 hercynium joined #parrot
16:32 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
16:33 whiteknight we do have a Pointer type, I think
16:33 plobsing we already have a Pointer PMC type, which is now deprecated
16:33 plobsing also they're Peter PMCs :D
16:34 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.
16:34 sorear question: why are we adding new functions as pmcs?
16:34 whiteknight sorear: what do you mean?
16:35 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.
16:35 Coke there is no real good distinction between what functionality goes in an op, a PMC, a pir lib...
16:35 Coke (dynamic or otherwise)
16:36 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 whiteknight or new ops
16:36 sorear PMCs are data, ops are operations
16:36 whiteknight and if we could delete some existing ops and dynops, that would be great
16:36 Coke ... a class..
16:36 plobsing whiteknight: why do you dislike dynops?
16:37 whiteknight plobsing: I dislike most ops, dyn- or not
16:37 plobsing again, why?
16:37 whiteknight dynops being a subtype of op which is both unnecessary and requires the extra complication of loading
16:37 Coke it is not unnecessary - how would languages provide their own ops?
16:37 whiteknight because there's too damn many of them, and they're all poorly designed and poorly thought-out
16:38 whiteknight 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.
16:38 cotto_work ~~
16:38 whiteknight plobsing: certainly not
16:39 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.
16:39 Coke (or when you provide an extensible set of control flow ops.)
16:40 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 #parrot
16:40 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
16:41 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'
16:41 plobsing how would op dispatch become faster without dynops?
16:41 whiteknight plobsing: a bottleneck? no. Still, it can be faster
16:41 sorear s implausible for calling pir subs to ever be faster than op dispatch
16:41 whiteknight maybe not op dispatch. That might not get any faster
16:42 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
16:42 plobsing that's an IMCC implementation detail that has leaked into the rest of parrot.
16:43 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.
16:43 whiteknight the fast core and the slow core are based on the idea that all ops are indices into a large op table
16:43 whiteknight Coke: I'm not looking for things to optimize
16:43 plobsing whiteknight: no it isn't. please provide source-file references to back up this claim.
16:43 dalek TT #2035 created by plobsing++: [DEPRECATED] Pointer, UnManagedStruct, ManagedStruct
16:43 dalek TT #2035: http://trac.parrot.org/parrot/ticket/2035
16:44 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
16:44 Coke bacek++ # again, partcl. thanks.
16:45 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)
16:46 whiteknight src/runcore/cores.c
16:46 whiteknight #  define DO_OP(PC, INTERP) ((PC) = (((INTERP)->code->op_func_table)[*(PC)])((PC), (INTERP)))
16:46 whiteknight (from include/parrot/runcore_api.h)
16:46 whiteknight notice the "->op_func_table" and "[*(PC)]" parts, which are table lookups
16:46 plobsing I know DO_OP works by calling functions indirected through a table. Who do you think wrote that line of code?
16:47 plobsing It just happens to not be a particularly big table.
16:47 whiteknight plobsing: then maybe we disagree on what "particularly big" means
16:47 plobsing ~50 function pointers is not terribly large
16:48 whiteknight 50 function pointers? We have ~1200 ops
16:48 whiteknight each with a long and short name char*, a function pointer, arrays of flags and options, etc
16:48 plobsing inter->*code*->op_func_table
16:49 mtk joined #parrot
16:49 plobsing op_func_table only contains the func pointers required by the bytecode
16:49 plobsing if you don't use it, you don't pay for it
16:49 whiteknight maybe I missed that improvement. We're still talking about ~1200 op pointers
16:49 plobsing when I set that up, I looked at how large those tables are. rakudo uses ~120 distinct ops.
16:50 plobsing most code uses less than that
16:50 whiteknight does the table cut out unused ops?
16:50 cotto_work whiteknight: that's part of the dynop mapping changes
16:51 whiteknight fine. I recind that point. Still, I don't like ops and I sincerely don't like dynops
16:52 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
16:53 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 #parrot
16:53 tewk thats why the opsc work is so cool.
16:54 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 #parrot
16:55 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:56 tewk ops are really just inline functions.  And inlining is one of the most bang for the buck compiler optimizations.
16:57 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 cotto_work or cheating
16:58 plobsing why does opsc have to understand the types? why can't we create a decoupled backend?
16:58 plobsing any worthwhile JIT system will support the types
17:01 cotto_work but opsc will need to know that foo_t maps to INTVAL to generate correct code for the jit system
17:02 tewk somehting like 6models low-level description of type/struct layout should be part of opsc/jit
17:03 plobsing and we can't parse 'typedef INTVAL foo_t'? isn't superior parsing technology supposed to be a selling point of parrot?
17:04 cotto_work It's a surprisingly hairy yak.
17:04 cotto_work well, probably not surprising to you
17:04 sorear For large and infrequently used ops, the JIT could just compile a call to a known address
17:05 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.
17:06 plobsing It wouldn't be completely unacceptable for opsc to bail on "unparseable" declarations.
17:07 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.
17:10 sorear Is there any reason why opsc has to parse C89?
17:10 theory joined #parrot
17:11 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
17:11 cotto_work sorear: extracting types from headers
17:11 sorear We could invent a simpler syntax
17:11 sorear cotto_work: general system header?
17:12 NotFound C was born many moons ago, when memory was shorter and processors slower.
17:13 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 Andy joined #parrot
17:13 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
17:14 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.
17:15 plobsing I agree its a hard problem.
17:16 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?
17:16 cotto_work whiteknight: you mean having a hard-coded list
17:16 whiteknight after all, ops2c isn't compiling down to native code, it's compiling down to something that's smarter and more special-purposed
17:16 cotto_work ?
17:17 whiteknight cotto_work: yes. I, N, S, P
17:17 cotto_work which one of those does char map to?
17:17 whiteknight maybe v
17:17 NotFound Don't forget that we use a bunch of enums.
17:18 whiteknight cotto: do we need char? I mean, do we need it inside op bodies?
17:18 whiteknight NotFound: enums are int.
17:18 plobsing not in C++
17:18 whiteknight Parrot isn't written in C++
17:18 plobsing oh how I wish that were true
17:18 cotto_work whiteknight: char* then
17:19 whiteknight cotto_work: char* is just a pointer. Anything * is just a pointer
17:19 whiteknight and opsc doesn't need to give a crap about the differences between pointers
17:19 NotFound The back type shouldn't be a problem, but the compiler/whatever must know its values.
17:19 whiteknight remember, we're only talking about ops2c here, not a generalized C compiler
17:19 cotto_work whiteknight: sure.  Which of INSP does it map to?
17:20 whiteknight cotto_work: I did say we could have a v type
17:20 whiteknight map any dumb pointers to v
17:20 whiteknight S and P are the same except with GCable behavior
17:20 NotFound For pointers, knowing the name of the pointee type should be enough for most checks and usages.
17:20 plobsing opsc doesn't have to worry about pointer type? how do you dereference stuff out of the ctx?
17:21 whiteknight is opsc doing that, or the underlying compiler mechanism? Again, opsc is *not* a generalized C compiler
17:21 whiteknight opsc converts our weird opish-c into something a "real" compiler can use
17:21 whiteknight 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
17:22 plobsing the whole point of deep parsing is making this available to a JIT system which is not a C compiler.
17:22 plobsing 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.
17:23 plobsing 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
17:24 whiteknight but the number of ops which do dereferences on char* or all manner of other weird types is much smaller
17:25 whiteknight 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.
17:26 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 whiteknight as far as a Parrot op body is concerned, char* is just another opaque pointer type
17:26 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.
17:27 plobsing no parsing in these blocks is required
17:27 cotto_work Q:C< ... >
17:27 whiteknight for some of our current menagerie of ops, that's a far better solution
17:28 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.
17:28 plobsing black-box-block needs arguments
17:29 whiteknight for ops like add_i_i_i, no separate function call is needed
17:29 whiteknight most of the common, simple ops will be fine. it's the bloated, convenience, magical ops that won't see a huge benefit
17:29 whiteknight and that's to be expected
17:30 whiteknight 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.
17:30 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
17:32 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.
17:32 sorear whiteknight: do you want to restrictm Parrot to platforms with boring pointers?
17:33 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
17:33 whiteknight if not by policy than certainly by implementation
17:33 whiteknight anything smaller than an intval will be zero-extended, and anything larger will be truncated.
17:36 dalek parrot: d89856a | plobsing++ | api.yaml:
17:36 dalek parrot: deprecate old pointer-ish types
17:36 dalek parrot: review: https://github.com/parrot/parrot/commit/d89856a1ce
17:37 NotFound_b joined #parrot
17:47 cotto_work bacek++ for the aggressive pretty-printing
17:58 NotFound_b left #parrot
18:06 bluescreen left #parrot
18:09 lucian joined #parrot
18:10 bluescreen joined #parrot
18:11 bluescreen left #parrot
18:16 ShaneC left #parrot
18:22 atrodo I go to lunch, and miss good discussions, like always
18:23 sorear Why does NEWS talk about winxed and cardinal?
18:23 cotto_work sorear: it hasn't been pruned
18:26 bluescreen joined #parrot
18:26 whiteknight there has been a lot of argument recently about what belongs in NEWS and what does
18:26 whiteknight doesn't
18:26 whiteknight I tend to be pretty inclusive, but some people want less
18:27 davidfetter joined #parrot
18:29 ShaneC joined #parrot
18:29 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:30 dukeleto the NEWS file is our primary way of telling people about new features and improvements
18:30 dukeleto sorear: our NEWS file contains news about the parrot community, as well as core
18:30 dukeleto sorear: NEWS shouldn't go into extreme detail, but mentioning new HLL's or large improvements in HLL's are fine
18:31 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
18:31 dukeleto NotFound: yep
18:31 plobsing left #parrot
18:34 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:38 * davidfetter waves to dukeleto
18:39 davidfetter dukeleto, you planning to come to PGCon this year?
18:40 dukeleto davidfetter: my talk about PL/Perl6 was not accepted
18:40 dukeleto davidfetter: yet they are having a PL summit. Go figure.
18:40 davidfetter same w/mine on view triggers, but i'm probably going anyhow
18:40 davidfetter btw, that wCTE thing got in
18:41 bluescreen left #parrot
18:44 tadzik how to easily check if the file exists in PIR/Nqp?
18:45 lucian_ joined #parrot
18:48 lucian left #parrot
18:56 dukeleto tadzik: plumage probably has code for that
18:56 dukeleto davidfetter: what is wCTE ?
19:00 cxreg writable common table expressions, presumably
19:00 cxreg good stuff
19:00 davidfetter dukeleto, it's an extension to SQL that i invented. others wrote the code
19:00 davidfetter yep
19:01 davidfetter "others" being marko (johto) tiikkaja
19:01 cxreg i havent been watching the commitfests
19:01 davidfetter this went in in the past week
19:01 cxreg heh, wasnt cf4 over a few weeks ago?
19:01 davidfetter nope
19:02 davidfetter and  besides, CF should really be "RF"
19:02 cxreg ok i guess the schedule changed
19:02 davidfetter it's not about committing. it's about reviewing
19:02 cxreg true.  lately it's probably a merge-fest
19:02 cxreg heh
19:02 cxreg i havent noticed how well Pg devs have embraced git
19:03 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.
19:04 ShaneC i'm gonna take a look at implementing this: http://trac.parrot.org/parrot/ticket/955
19:04 ShaneC 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
19:05 cotto_work ShaneC: that seems like a reasonable interface
19:06 NotFound Please don't overcharge the FileHandle PMC with logic for very specific cases.
19:06 cotto_work other people may disagree
19:06 NotFound It already has too much, IMO.
19:06 cotto_work ;)
19:07 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?
19:07 NotFound We have ineritance, we don't need lots of 'if' for special casing.
19:08 NotFound cotto_work: aye
19:08 cotto_work You could almost do it from pir.
19:09 cotto_work it might be possible with plobsing++'s self-named pmcs
19:10 ShaneC self-named pmc?
19:10 cotto_work Ptr*
19:11 cotto_work (to be fair, there's a PMC already named "Pointer", so he couldn't take that one)
19:15 ShaneC looking at ptr.pmc -- what makes this 'self-named'?
19:18 lucian joined #parrot
19:20 cotto_work "Ptr"
19:20 cotto_work written by Peter Lobsinger
19:20 * atrodo suspects that's not by accident
19:20 NotFound Using SMSs
19:21 lucian_ left #parrot
19:21 nopaste "tadzik" at 192.168.1.3 pasted "> parrot-nqp > pir::stat_isi('" (9 lines) at http://nopaste.snit.ch/34966
19:22 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.
19:22 NotFound s/Nest/Next
19:24 NotFound tadzik: stat is a dynop
19:25 plobsing joined #parrot
19:25 tadzik NotFound: what does that mean?
19:26 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.
19:28 tadzik thanks
19:29 tadzik is pir::load_bytecode("io_ops.pbc"); ok?
19:29 cotto_work s/.pbc//
19:29 tadzik thank you
19:30 whiteknight I think it's pir:loadlib("io_ops")
19:30 whiteknight unless there is a .pbc wrapper library somewhere for it
19:30 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.
19:31 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 whiteknight Q:PIR{
19:31 whiteknight .loadlib "io_ops"
19:31 whiteknight }
19:31 whiteknight I think
19:32 tadzik syntax error ... somewhere
19:32 tadzik OH MY WHO INVITED IT
19:35 tadzik hrm
19:38 plobsing .loadlib directives are dissallowed inside subs
19:39 plobsing I've had luck in the past with Q:PIR{ .end \n .loadlib 'io_ops' \n .sub '' :anon }
19:39 cotto_work headdesk
19:39 moritz that is a kinda "ouch" approach
19:40 tadzik ouch
19:40 cotto_work That kind of hackery should never be needed to get normal work done.
19:41 plobsing hey, it works...
19:41 cotto_work yes.  I'm sad that it's needed.
19:42 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
19:43 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)
19:44 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 whiteknight or something, I can't really remember
19:46 NotFound I'll suugest to ask of file a ticket with the nqp guys better than developing too hacky tricks.
19:47 NotFound s/of/or
19:49 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 whiteknight I don't know what the preferred syntax would be
19:50 plobsing only one way to find out - ask #p6
19:51 whiteknight whoa whoa whoa. Let's not start doing the right thing all of a sudden
19:51 davidfetter heh
19:52 NotFound Boys, don't do that at home.
19:56 dalek winxed: r840 | NotFound++ | trunk/winxedst1.winxed:
19:56 dalek winxed: some minor cleanup and refactoring
19:56 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=840
19:58 bacek Good morning, humans.
19:59 bacek whiteknight, INIT { Q:PIR{ .loadlib 'io_ops' } }
19:59 whiteknight does that work?
19:59 bacek I think it should work.
19:59 tadzik I think it does not
19:59 whiteknight INIT creates a .sub.
19:59 whiteknight you can't .loadlib in a .sub
20:00 lucian_ joined #parrot
20:00 bacek why you can't use just "loadlib"?
20:00 bacek ah... Understood...
20:00 plobsing Q:PIR { } creates a sub
20:00 tadzik for it does not work :)
20:01 tadzik http://wklej.org/id/485789/ -- teh codes
20:01 tadzik line 46
20:03 jjore left #parrot
20:03 lucian left #parrot
20:03 whiteknight tadzik: that works?
20:05 tadzik whiteknight: no
20:05 whiteknight awesome
20:05 tadzik the commented line causes a compilation fail
20:05 tadzik no, it's not :)
20:05 tadzik well, what is pasted works
20:06 tadzik but the existance of the $apiyaml is not checked
20:06 jjore joined #parrot
20:08 * davidfetter waves to jjore
20:09 nopaste "whiteknight" at 192.168.1.3 pasted "idea for a driver program for tadzik++" (14 lines) at http://nopaste.snit.ch/34974
20:09 whiteknight tadzik: something like that is...not ideal, but with some small tweaks it should work
20:10 whiteknight I haven't tested it
20:10 plobsing that will work, but shouldn't
20:10 whiteknight why shouldn't it?
20:10 whiteknight I can understand that it shouldn't be necessary, but it should work if we were stupid enough to try it
20:10 plobsing oplibs should only be available if they have been loaded within the compilation or passed explicitly to the compiler
20:11 plobsing 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
20:11 plobsing not at the current time. but I'm refering to the PIR compiler
20:12 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 whiteknight all we need is to get tadzik moving, not future-proof it
20:13 whiteknight 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:14 whiteknight 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 ;)
20:15 tadzik 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.
20:17 bacek cotto_work, yes, I actually found couple of bugs in parser during it :)
20:18 dalek parrot/opsc_full_parse: 10e3f3b | cotto++ | compilers/opsc/src/Ops/Op.pm:
20:18 dalek parrot/opsc_full_parse: simplify pretty-printing code a bit
20:18 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/10e3f3b43c
20:18 bacek cotto, any objections to merge it now?
20:18 cotto_work nope
20:20 bacek testing merged master now
20:26 tadzik no need for loadlib, try {} around slurp() is just fine
20:27 dalek parrot: 10e3f3b | cotto++ | compilers/opsc/src/Ops/Op.pm:
20:27 dalek parrot: simplify pretty-printing code a bit
20:27 dalek parrot: review: https://github.com/parrot/parrot/commit/10e3f3b43c
20:27 dalek parrot: a0c67a1 | bacek++ | / (16 files):
20:27 dalek parrot: Merge branch 'opsc_full_parse'
20:27 dalek parrot: review: https://github.com/parrot/parrot/commit/a0c67a1e53
20:27 bacek cotto, done
20:28 cotto_work awesome and awesomer
20:33 cotto_work bacek: mind if I nuke the branch?
20:33 bacek cotto_work, go for it
20:34 dalek winxed: r841 | NotFound++ | trunk/winxedst1.winxed:
20:34 dalek winxed: refactor a bit initialization and handling of PredefFunction objects
20:34 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=841
20:35 fperrad left #parrot
20:36 NotFound tadzik: is probably better that way, checking the possibility od doing something and doing it after is subject to race conditions.
20:36 fperrad joined #parrot
20:41 dalek parrot: cc17e85 | bacek++ | compilers/opsc/src/Ops/Op.pm:
20:41 dalek parrot: Factor out .join_children method for commonly used pattern.
20:41 dalek parrot: review: https://github.com/parrot/parrot/commit/cc17e85b18
20:51 dalek parrot: be19a45 | bacek++ | compilers/opsc/src/Ops/Op.pm:
20:51 dalek parrot: Stylish changes for consistency.
20:51 dalek parrot: review: https://github.com/parrot/parrot/commit/be19a459e3
20:55 plobsing left #parrot
20:56 dalek winxed: r842 | NotFound++ | trunk/winxedst1.winxed:
20:56 dalek winxed: fix use of exists in void context
20:56 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=842
20:57 tadzik writing Nqp is fun. A pure language, almost nothing provided, yet fun
20:58 * 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
20:59 tadzik I wonder how winxed is
21:00 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
21:00 whiteknight it's more parrotish
21:00 tadzik oh, even more tempting
21:01 Coke that mathop test is STILL running.
21:01 tadzik ah, that's probably nqp is "not Parrot-only, so bad"? :)
21:01 whiteknight imagine if we had never designed PIR, but instead were programming Parrot inspired by javascript. That's winxed
21:01 Coke (parrot now up to 4223M ...)
21:01 tadzik I never really used JavaScript
21:02 cotto_work tadzik: it's delightful if you have something to abstract away browser insanities
21:04 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?
21:04 tadzik NotFound: none, none, little, none, but I see your point :)
21:04 whiteknight winxed doesn't have Q:PIR or anything like it, so when the abstraction breaks, it really really breaks
21:04 tadzik I'm not worried about the syntax, it looks sane
21:04 whiteknight in NQP, you can always fall back to PIR if you're desperate
21:05 whiteknight and then you end up with mish-mash half and half code.
21:05 tadzik any catchy name for a deprecations detector?
21:05 tadzik . o O ( dedeprecator )
21:06 NotFound tadzik: obsolescentkerberos
21:07 tadzik or maybe I'll just dedicate it to someone. How do you like "Natalie"? :)
21:08 tadzik 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 #parrot
21:11 Coke 4441M # zzz
21:11 whiteknight Coke: methinks you have some kind of infinite loop
21:12 whiteknight 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
21:16 NotFound For a more productive approach, you can write a opengl fish tank simulator and watch it.
21:17 dalek parrot: 8c03bce | mikehh++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
21:17 dalek parrot: fix codetest failure - trailing whitespace
21:17 dalek parrot: review: https://github.com/parrot/parrot/commit/8c03bceefd
21:17 tadzik cotto_work: https://github.com/tadzik/parrot-dep​recation-detector/blob/master/README if you want to take a look
21:20 mikehh_ is now known as mikehh
21:21 perlite_ joined #parrot
21:22 mikehh opbots, names
21:23 tadzik do I need to load something to use the OS pmc?
21:23 tadzik I get "Class 'OS' not found" in my nqp
21:23 plobsing OS is a dynpmc
21:23 whiteknight tadzik: pir::loadlib("os");
21:24 whiteknight that one is easy to use, unlike io_ops
21:24 Coke OS, no?
21:24 tadzik os seems ok
21:24 whiteknight tadzik: https://github.com/Whiteknight/Rosella/b​lob/master/src/tap_harness/Loader.nqp#L6
21:25 plobsing we use alllowercasenames for pmc filenames
21:25 perlite left #parrot
21:25 perlite_ is now known as perlite
21:25 plobsing not entirely sure why
21:25 whiteknight easier for lazy unix programmers
21:25 Coke ah, right, we lcase all our pmc filenames.
21:25 Coke ... and now I'm caught up. ;)
21:25 tadzik whiteknight: pir::new__PS('OS'); -- couldn't __PS be ommited?
21:26 whiteknight tadzik: I don't know. I didn't try
21:26 tadzik wfm
21:26 whiteknight I don't know the rules for when the __PS can be omitted or not
21:28 whiteknight I just always put it in so I'm not surprised
21:30 whiteknight left #parrot
21:39 tadzik anyone familiar with Parrot's stat()?
21:39 tadzik I see stat[2] returns 16877 for directories, but is it always 16877?
21:43 plobsing tadzik: you can use stat.pasm to assign names to stat return value indices
21:43 plobsing in this case, you are referring to STAT_ISDIR
21:44 plobsing 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:
21:44 Util perl -wle 'print ( (stat ".")[2] );'
21:44 Util 16877
21:44 NotFound tadzik: take it as a boolen: 0 or non zero
21:45 Util bacek++ # for perfect prettification of core_ops.c
21:46 Util tadzik: It helps to view it in octal: perl -wle 'printf "%o\n", 16877'
21:46 Util 40755
21:46 Util the 755 part is rwxr-xr-x
21:46 tadzik well, it's always non-0
21:47 tadzik that's the problem :)
21:47 tadzik Rakudo checks for zeroness too
21:47 NotFound Util: Do you think that really helps people that doesn't already know its meaning?
21:47 tadzik the octal form makes sense
21:48 tadzik nqp for, why are you so stupid? :(
21:49 Util NotFound: Hmmm. If you think in binary, then yes. Otherwise, perhaps it would be a leap too far :)
21:50 NotFound chmod 007 Bond
21:51 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:52 NotFound This is my confused smile: %-\
21:53 Util To strangers, he acts open, but to those closest to him, he is inscrutable and defensive. # chmod 007 Bond
21:55 Util 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:56 NotFound Util: I've been administering Unix systems for more than 10 years. 10 decimal ;)
21:56 NotFound Or maybe hex
21:57 Util Thanks for the clarification.
21:58 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 tadzik | deprecations that you'll run into"
21:58 tadzik cotto_work: now you can. Let me just push it :0
21:58 NotFound I suppose you know why programmers confuses christmas and halloween.
21:58 plobsing left #parrot
22:01 tadzik done
22:03 cotto_work tadzik: I'm busy with $dayjob, but I look forward to looking at it tonight
22:05 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)
22:07 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.
22:07 tadzik heh, it actually found deprecations in Parrot source tree :)
22:08 Coke absolutely does not surprise me.
22:09 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.
22:10 Coke shame.
22:19 rurban_ joined #parrot
22:22 rurban left #parrot
22:22 rurban_ is now known as rurban
22:25 nopaste "tadzik" at 192.168.1.3 pasted "dedeprecator in action" (146 lines) at http://nopaste.snit.ch/35033
22:25 dmalcolm left #parrot
22:28 bacek_at_work ~~
22:29 tadzik o/
22:30 cotto_work tadzik: lookin' good
22:32 tadzik the ascii errors are from YAML::Tiny I believe
22:35 bacek_at_work tadzik, try binary encoding in slurp
22:36 bacek_at_work tadzik, open($file, :r, :bin) in nqp setting.
22:41 tadzik oh wait, it's not YAML that fails
22:42 tadzik and FileHandles are utf8 by default, so I don't know why this complains about ASCII
22:43 tadzik and if I go for binary, it says "Invalid operation on binary string"
22:43 tadzik looks like utf8 wasn't the default after all
22:44 bacek_at_work tadzik, dedeprecator, line 53
22:44 bacek_at_work it's nqp-setting slurp. So it's utf8
22:44 bacek_at_work But string_cs_43 isn't utf8. It's iso-8859-1
22:44 whiteknight joined #parrot
22:48 NotFound Isn't PIR wonderful?
22:49 NotFound Maybe is time to talk again about the mixed encoding PIR files.
22:51 tadzik bacek_at_work: got it
22:51 tadzik if I add a script to tools, will it get automagically installed or something?
22:53 tadzik I think about moving dedeprecator to the Parrot repo, so api.yaml can be updated and results will be visible
22:56 dalek left #parrot
23:01 sorear left #parrot
23:01 TimToady left #parrot
23:05 bacek_at_work tadzik, looks like at least some of tools installed
23:05 bacek_at_work bacek@illusion:~/src/parrot (master) $ ls /usr/local/lib/parrot/3.1.0-devel/tools/dev/
23:05 bacek_at_work create_language.pl  gen_makefile.pl  mk_language_shell.pl  pbc_to_exe.pir  pprof2cg.pl  reconfigure.pl
23:05 tadzik depends on some Makefile I suppose
23:05 tadzik any reasons not to merge it?
23:06 bacek_at_work merge what?
23:07 tadzik the deprecations detector into parrot
23:07 tadzik s/merge/copy files and commit/
23:07 bacek_at_work (installed tools) lib/Parrot/Manifest.pm, _get_special
23:07 bacek_at_work tadzik, +1 from me to copy it
23:13 fperrad left #parrot
23:24 tadzik where's dalek?
23:24 mikehh dalek is missing
23:25 tadzik oh
23:26 mikehh left the server about 30 minutes ago, has not come back yet
23:26 mikehh dunno how to call him back
23:29 mikehh aloha dalek?
23:29 aloha mikehh: dalek is being slow tonight, methinks
23:29 tadzik dalek is also gone
23:30 bacek_at_work seen Coke
23:30 clunker3 Coke was last seen on #parrot 1 hour, 20 minutes and 14 seconds ago, saying: shame.
23:30 aloha Coke was last seen in #parrot 1 hours 20 mins ago saying "shame.".
23:30 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.
23:30 clunker3 was kicked by bacek_at_work: clunker3
23:31 Coke bacek++ # clunker violence.
23:31 Coke I have a few moments before daughter kicks me off computer. what's up?
23:31 bacek_at_work Coke, #1811 (int divide)
23:31 Coke aye?
23:32 bacek_at_work We dispatch it to div_p_p_p
23:32 bacek_at_work which calls VTABLE_divide
23:32 bacek_at_work which call Integer.divide ignoring MULTI divide in TclInt
23:33 bacek_at_work It's probably related to #452
23:34 bacek_at_work It's definitely #452 sideeffect
23:35 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 Coke bacek++ # tracking parrot breakage down.
23:38 bacek_at_work Coke, hmm. It's dispatched to mmd. Don't know why it doesn't work
23:38 bacek_at_work Coke, hey. It's in "infix:/"
23:39 bacek_at_work 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
23:40 mikehh and also of course if you want to ignore a file (MANIFEST.SKIP)
23:42 mikehh but of course dalek not being here it is not reportin'
23:42 tadzik mikehh: on it
23:42 mikehh tadzik: I've done it for now
23:43 tadzik bah, ok
23:43 tadzik so, what can I do with my git repo if I alredy commited?
23:43 tadzik is there any git undo?
23:46 plobsing joined #parrot
23:47 hercynium left #parrot
23:47 tadzik ok, got it. git reset --hard 'HEAD^'
23:48 tadzik sleep &
23:56 Hunger left #parrot
23:56 athomason joined #parrot
23:57 Hunger joined #parrot

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced