Parrot 4.4.0 "Banana Fanna Fo Ferret" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 3 June 2012.
00:26 kjs joined 00:29 lucian_ joined 00:34 whiteknight joined
dalek : e766c53 | kjs++ | src/ (2 files):
fix types of arrays.
00:59
: cf985f6 | kjs++ | t/string.m1:
add a new nice string test file.
01:03
: adeefee | kjs++ | src/gencode.c:
various improvements; fix if statement.
01:11
01:14 woosley joined 01:21 justin joined 01:22 justin joined 01:35 kid51 joined 02:20 crab2313 joined 02:24 scrottie8 joined
scrottie8 Coke, you suck. 02:24
benabik WTF? 02:25
sorear blinks 02:26
sri prefers pepsi too 02:29
dalek p/qrpa: fad75ad | pmichaud++ | src/pmc/qrpa.pmc:
QRPA: Update comment in QRPA.set_integer_native to be a little more accurate.
02:35
03:34 crab2313 joined
dalek kudo/map: 6941eb1 | pmichaud++ | src/core/List.pm:
Temporarily revert the use of qlist in this branch until I make

back to their horribly slow state, but future commits will definitely get us the performance back.
03:53
kudo/map: 916c59a | pmichaud++ | src/core/ (2 files):
Remove (basically unused) :$sink option to .reify(); sinks will be
04:24 myhrlin joined 05:24 myhrlin left
dalek : b84315f | jimmy++ | Makefile:
improved Makefile a bit.
06:05
06:29 fperrad joined
dalek kudo/nom: d351efc | moritz++ | src/core/ (2 files):
typed exception for Set coercion
06:34
aloha (parrot/parrot) Issues opened : 779 (Silence failing auto::va_ptr probes) by rurban : github.com/parrot/parrot/issues/779
06:57 brrt joined
dalek kudo/nom: cad7b6c | moritz++ | src/core/ (2 files):
another typed exception for DateTime
07:01
aloha (parrot/parrot) Issues opened : 780 (This contains a test to prove that Parrot_api_get_compiler is unreliable) by bdw : github.com/parrot/parrot/issues/780 07:09
08:20 crab2313 joined 08:55 kjs joined 10:08 crab2313 joined
dalek : 52faf9a | kjs++ | / (4 files):
few cleanups.
10:43
10:48 JimmyZ joined 11:42 brrt1 joined 11:46 eternaleye_ joined, perlite joined
kjs JimmyZ: thanks for your contributions to M1! 12:29
JimmyZ++
JimmyZ kjs: hopes you will like the new script :P 12:30
kjs it's great yes
12:31 bluescreen joined
kjs JimmyZ: is it possible to silence all output from the assembler as well, so we can have "make test" output only "ok..1" "ok..2" etc. ? 12:31
12:35 PacoAir joined
Coke weird. that is the only instance of that user "Coke, you suck." in the logs. 12:36
If anyone knows what I did to upset him, please let me know. 12:37
12:37 PacoAir joined
kjs Coke: :-) you expected more? 12:37
dalek : 8442914 | jimmy++ | run_m1.sh:
silence all output from the assembler
Coke ah. this looks likely: www.youtube.com/user/scrottie?gl=CO...;hl=es-419 12:38
since there's a reference to .pl and kthakore.
also twitter.com/#!/scrottie 12:40
12:48 KonkeyDong joined
KonkeyDong can someone explain the difference between $/ and ~$/ in the following code? 12:50
method identifier($/) { \tmake PAST::Var.new( :name(~$/), :scope('package'), :node($/) ); }
I understand that $/ is the match object for the regex
but what does the tilde do in ~$/ ?
(google isn't helping) 12:51
JimmyZ KonkeyDong: perlcabal.org/syn/S03.html 12:54
KonkeyDong: see perlcabal.org/syn/S03.html#Symbolic...precedence 12:55
KonkeyDong oh ok
so :name is a string and :node is a match object yes? 12:56
JimmyZ KonkeyDong: yes, see github.com/perl6/nqp/blob/toqast/s...ST/Var.nqp 12:58
KonkeyDong thanks
JimmyZ KonkeyDong: know that there is a trait 'is' 12:59
maybe it's not trait, just inherit 13:00
KonkeyDong I am reading docs/pct/past_building_blocks.pod and it says that :node is for annotating the source file. What's up with that? Typo? 13:04
quote: " Sets this node's "source" and "pos" attributes. "
"These indicate which part of the source code generated this node."
JimmyZ KonkeyDong: I don't know, you may want ask it in #perl6 13:06
KonkeyDong ok
thanks for your help
bye
13:07 KonkeyDong left 13:08 Psyche^ joined 13:17 kjs joined
JimmyZ doesn't know how to fix Segfault in m0 :( 13:31
kjs JimmyZ: I commented out the free() calls
try that, worked form e. 13:32
for me*
JimmyZ kjs: or add a exit op to every m0 file end
kjs does that help?
can do...
but i thought it wasnt necessary 13:33
JimmyZ kjs: yes. exit 0 means exit immediately.
kjs ok, but if there's an issue in M0, it should be fixed, not hidden ;-) 13:34
JimmyZ kjs: yes, it wasn't neccessary, but avoids m0 segfault :P
kjs JimmyZ: there's one more thing I'd like to add to the build process
sometimes I'm making small chagnes to the m1.y parser spec
JimmyZ kjs: aye. 13:35
kjs: I meant +1
kjs but it's really easy to oversee if that introduced shift/reduce or reduce/reduce conflicts
so, i'd like to stop the build process immediately once that happens
JimmyZ kjs: +1. 13:36
kjs not sure if that's possible; is it possible to redirect the output of bison to a file and see if it contains the word "conflict"?
s/oversee/overlook*
JimmyZ I don't know. and seems I can't find a way to use 'bison -o' 13:37
kjs can you redirect its stdout or stderr? 13:38
JimmyZ I didn't try that 13:39
kjs i'm not sure if that message comes on stderr or stdout
but if it's overlooked for too long, and too many changes are made, it's really painful to recover from it.
JimmyZ maybe whitenight++ knows about it 13:41
kjs is it possible to do that in the shell script? 13:42
Coke change the thing that compiles it to scrape the output and die if it finds it? (no way to force bison to die on that?)
--warnings=error 13:43
(that way you can just keep using make as expected. 13:44
kjs ah found it 13:46
%expect 0 13:47
(conflicts)
in the bison spec
dalek : 4be5473 | kjs++ | / (2 files):
ensure that any conflicts in the .y file result in errors. update todo.
13:53 whiteknight joined
crab2313 How to use m1's test suit? Should I put it into a specific directory? 13:57
kjs crab2313: make test
if you have an M1 file, just store it in the t file
the script will pick it up.
it's overdue a refactoring. Need to clean it up a bit, and test for specific features
but for now it gives me a quick indication whether I broke something signficiantly while i'm editing. 13:58
you can run individual files with the ./run_m1.sh script (thanks jimmy++)
crab2313 I mean, m0 and m0_assembler.pl 13:59
kjs oh sorry, don't know about that. I've just moved those files into my working M1 directory and use them there.
14:04 jashwanth joined, isBEKaml joined
isBEKaml ~.~ 14:04
14:05 jashwanth joined
jashwanth whiteknight:Hello 14:06
whiteknight hello jashwanth
jashwanth Done with exams now 14:07
whiteknight awesome! How did you do?
jashwanth not that great but good 14:08
whiteknight that's good
isBEKaml I just updated clang/llvm to 3.1 and it still throws SIGILL when I try running config/auto/va_ptr/test_c.in. Looks like rurban++ reported the same issue in #779. 14:09
whiteknight isBEKaml: when did this start appearing? I don't remember it ever being an issue before
can be bisect it and find a cause?
crab2313 kjs: It works. Thank you.
jashwanth whiteknight:now I am confused where do I start from 14:10
isBEKaml If anyone can reproduce this on a 32 bit x86 machine, maybe I can try contacting llvm folks.
whiteknight: I'm not at all sure. When I came across it, I had just thought of using clang for compiling instead of gcc.
compiling *parrot* 14:11
whiteknight I use clang as my only compiler and use it on several linux platforms. I've never seen this issue
but I haven't built master in about two weeks, so I'm wondering if we can bisect
isBEKaml whiteknight: 32 bit? I'm not sure config changed at all.
whiteknight I'm on 64-bit most of the time
isBEKaml from what not_gerd says, the issue was fixed for PPC and 64 bit machines. 14:12
Here's another bit of info to pinpoint the cause - it works when I try emit-llvm and use it to generate the executable. 14:13
dalek rrot/m0: 739fa60 | jimmy++ | src/m0/c/m0_ (2 files):
implement print_n op
14:16
: 5202866 | jimmy++ | / (3 files):
add small fixs
14:29
isBEKaml whiteknight: gist.github.com/2868739 14:33
whiteknight: I had gisted something similar a couple of days ago. That showed the difference in generated assembly code between clang and gcc.
whiteknight ok 14:34
14:36 jsut joined
isBEKaml gist.github.com/2853291 #the difference in assembly code. 14:45
dalek : 27611c9 | jimmy++ | / (3 files):
a little refactor to Makefile
14:46
14:46 JimmyZ joined 15:08 dmalcolm joined
brrt1 whiteknight, you here? 15:33
whiteknight yessir
brrt1 well, i fixed up compiling winxed as you might have seen 15:34
so starting from /now/ you can actually run applications 15:35
as long as they do something simple
whiteknight okay, that's great progress!
brrt1 what i wanted to know was
i want to pass a (pointer to) the contents of a string to ap_rwrite via nci 15:36
thing is, this string does not have to be null-terminated, and as far as encoding is concerned, i can worry about that
so afaik, i could do with a raw pointer to a string
(as in, the internal pointer)
whiteknight so basically you need a pointer to the raw buffer underlying the STRING, and the length of it?
brrt1 yes, that would do extremely well 15:37
whiteknight Long ago there was a 't' character for nci that did this, but that was removed for a variety of reasons
brrt1 but i don't know if it s guarranteed or should be guaranteed that the raw buffer is contiguous
whiteknight okay 15:38
brrt1 if it was, it'd save me copying
rest of the week, i'm planning to spend on getting a non-hacky building and testing system 15:39
whiteknight to take the old 't' element from NCI signatures there was an NCI::Utils library added to do the conversion. 15:40
github.com/parrot/parrot/blob/mast.../Utils.pir
you probably want the call_with_cstring function 15:42
brrt1 i'll see
15:44 not_gerd joined
benabik ~~ 15:44
not_gerd isBEKaml: did you try to compile the va_ptr test on -O0? 15:45
15:45 alester joined
benabik wants gcc to recognize -Ono 15:45
isBEKaml not_gerd: no. I tried it with -O3
benabik: gcc is probably smirking at clang now.. ;) 15:47
benabik isBEKaml: Howso? 15:48
isBEKaml benabik: well, for this particular issue in question, it works fine when compiling with gcc, but not with clang.
brrt1 ok, so as far as I see it, I can use nci-utils to load a function, call it with a string, and have it work
fun
benabik isBEKaml: Oh. I hadn't paid attention to the actual issue under discussion. I just though -Ono was amusing. 15:49
isBEKaml not_gerd: -O0 failed with the same error. Can you look over the two gists I pasted above, if anything's off? 15:50
(backscroll)
not_gerd isBEKaml: I saw it in the logs, but didn't see anything obvious 15:51
isBEKaml benabik: that would be amusing when I'm compiling C++ templates on. :)
not_gerd I also can't reproduce on clang 3.0/Cygwin and clang 3.1/MinGW-w64
whiteknight does this issue only appear when optimizing? 15:53
isBEKaml whiteknight: no, from the configure script, it doesn't even optimize.
whiteknight ok 15:54
15:54 rurban joined
isBEKaml not_gerd: well, we just have to wait until we hear from someone with 32bit x86 machine. rurban apparently hit this issue enough to send a pull request. 15:56
rurban you mean pull request #779? 15:57
isBEKaml rurban: \\o/
rurban: can you say what was the error you got when running auto::va_ptr?
rurban A page full of ADDRESS_SANITIZER debug traces 15:58
isBEKaml boo, I don't have address sanitizer on. :( 15:59
rurban Maybe only capture it when ccflags contains -faddresss-sanitizer 16:00
isBEKaml rurban: maybe I didn't compile it into llvm/clang.
rurban Since 3.1 only
I use always the latest version from llvm svn 16:01
isBEKaml yes, this is 3.1
16:02 brrt1 left
Coke isBEKaml, not_gerd: I have a 32bit x86 machine. need me to run something? 16:22
not_gerd Coke: clang -o test -DVA_TYPE_STACK -x c test_c.in && ./test 16:25
in config/auto/va_ptr
rurban There might be some stderr noise which could conflict with /^ok/. Maybe /^ok/m is better 16:26
not_gerd rurban: the noise should only be present on x86 in case of -DVA_TYPE_REGISTER 16:27
rurban register was clean for me, only stack failed 16:28
not_gerd 32-bit or 64-bit architecture?
rurban 64bit
but I can test 32 also 16:29
I just need to setup my smokers to do parrrot again
not_gerd rurban: that's expected behaviour 16:31
16:31 NotFound joined
not_gerd x86 uses a simple pointer as va_list, whereas it's more complex on x86-64 (and PPC32) 16:31
Coke not_gerd: ENOCLANG 16:32
(This is win7.)
NotFound whiteknight: getting a pointer to the string content is easier with ByteBuffer 16:33
not_gerd rurban: if you're interested, check out getVAListDeclaration() in lib/Basic/Targets.cpp from the Clang source tree ;)
whiteknight ah yes, that might be true
not_gerd Coke: :(
16:42 crab2313 joined
dalek : 0b104c9 | kjs++ | src/ (4 files):
a few fixes to parsing/lexing usertypes. fix a comment. fix some layout.
16:49
: a79f51a | kjs++ | src/gencode.c:
implement gencode for booleans.
16:54
jashwanth why is slavorg inactive 17:01
Coke opbots, names? 17:03
dalek : f0e7ac5 | kjs++ | src/gencode.c:
reorder expr in switch alphabetically. easier to know if something's missing.
17:08
Coke looks like there is no slavorg connected. was there not another opbot? 17:10
also, shouldn't we have our bots like p6eval and ttbot locked down a bit more?
moritz Coke: what do you mean by "locked down"? 17:12
Coke moritz: no clue. let me ask a different question: why nopaste" show 17:15
bah.
* why "+nopaste", but "ttbot"
?
moritz Coke: we just use the 'voice' flag to show that it's a bot; but at the current channel setting there's no real difference 17:16
Coke: you can say /voice dalek p6eval ttbot 17:17
Coke: or you can op me, and I'll do it :-)
NotFound That discrimination against bots should end someday. All users are connected equal, humans and bots. 17:18
moritz the internet: a place where "humanist" can be a swear word :-)
NotFound whiteknight: io_cleanup1: ASSERT_ARGS uses shouldn't have a semicolon at end 17:21
whiteknight: src/io/api.c io_setup vtables and src/io/buffer.c io_buffer_find_string_marker 17:23
whiteknight thanks
I haven't run any codetests yet
NotFound whiteknight: I've not commited fixes myself because I'm having different result in different machines 17:24
whiteknight you're welcome to commit any fixes you think are good
NotFound whiteknight: other one: UNUSED shouldn't be placed before declarations.
(did I said some time that I hate convoluted C macros?) 17:25
whiteknight I forget sometimes because PARROT_ASSERT is so weird
it goes before declarations and doesn't have a semicolon
NotFound src/io/pipe.c io_pipe_seek
whiteknight I haven't implemented any seek, peek or tell operations yet 17:26
so those all are going to change
NotFound src/io/socket.c io_socket_seek
whiteknight: then use if (a == a) throw instead of UNUSED(a) 17:27
whiteknight: didn't clang have an option to force old C strictness? 17:29
whiteknight I have no idea 17:31
NotFound Maybe the time has come to drop that requirement and use a not vintage C. If you want to use Visual Studio, compile as C++. Even Microsoft people says that!
Propably even vintage hobbyist Z80 C compilers accept more modern C that that. 17:33
17:40 lucian_ joined 18:00 PacoAir joined
dalek rrot: cd78d9b | rurban++ | config/auto/va_ptr.pm:
Silence failing auto::va_ptr probes

clang -faddress-sanitizer prints a log to stderr on the failing stack test. Use cc_run_capture instead.
18:04
rrot: a640473 | dukeleto++ | config/auto/va_ptr.pm:
Merge pull request #779 from rurban/master

Silence failing auto::va_ptr probes
18:06 brrt joined
aloha (parrot/parrot) Issues closed : 779 (Silence failing auto::va_ptr probes) by rurban : github.com/parrot/parrot/issues/779 18:08
18:30 kjs joined 18:48 not_gerd left
dalek rrot/m0: 863e308 | kjs++ | src/m0/c/m0_ops.c:
fix print_n op. stole details from add_n op.
18:48
cotto that's a bit more accurate 18:50
rurban Could someone reopen issue 765? interp->exit_handler_list = NULL is still not safe
benabik Reopened. 18:52
aloha (parrot/parrot) Issues reopened : 765 (With --leak-test at the final interp->exit_handler_list = NULL; interp is already freed ) by rurban : github.com/parrot/parrot/issues/765 18:53
benabik It was odd. The page said "Closed", but the history was patch, closed, reopened, comment.
rurban I'm adding a patch for that 18:54
benabik rurban++ 18:55
rurban But Whiteknight should reconsider the already freed interp somewhen
aloha (parrot/parrot) Issues opened : 781 (Mark --leak-test to be skipped with AddressSanitizer) by rurban : github.com/parrot/parrot/issues/781 18:58
rurban benabik++ thanks. 18:59
dalek : 80e6f91 | kjs++ | src/ (7 files):
add "char" type. Not sure if we want this but seems useful when reimplementing M1's lexer in M1. This commit also demonstrates which chnages would have to be made for adding a built-in type.
19:08
kjs cotto: hi there. would you be able to write some documentation of what is involved in calling a chunk, and returning from it? Basically, a document describing the various steps involved (setting args, receiving return values, setting up a new call frame, doing the invocation, doing the returning from a function, and setting return values). Once that's available I would have a much easier time implementing M1's function calls. Once /that's/ done, then 19:16
90% there I think (for what I've got in mind now).
cotto some parts of that have yet to be figured out, namely dealing with arguments and return values 19:17
kjs ok, those things can be ignored for now then. I think updating or changing an existing implementation would not be a big problem. 19:18
19:25 brrt joined 19:34 zby_home joined 19:52 brrt joined 20:02 kjs_ joined 20:10 perlite joined 20:13 kjs_ joined 20:19 kjs_ joined 20:54 kjs joined 20:56 brrt joined 21:04 estrabd joined 21:06 bluescreen joined 21:23 kurahaupo joined
dalek : 49bf2dd | kjs++ | caller.m1:
add translated version of poke_caller test of M0. This is to get an understanding what's happening. This will not run though.
21:38
rurban Why does install_files.pl have to copy symlinks as symlinks? 21:54
Forget it. Found a workaround 21:58
dalek rrot: 7bf8f07 | alvis++ | docs/compiler_faq.pod:
Removed url to 'www.parrotblog.org/2008/03/targetin...t-vm.html' and replaced it with 'parrot.github.com/html/examples/lan...pod.html'. I noticed this last week, but forgot about it 'til dukeleto++'s post to parrot-dev.
22:08
22:18 whiteknight joined
dalek : de044cc | kjs++ | src/gencode.c:
code generation for function calls part 1 of many probably. That's a lot of instructions for a fun call.
22:22
whiteknight good afternoon, #parrot 22:23
rurban Hi whiteknight: I reopened the --leak-test issue as interp can be already freed in the new function GH #765 22:29
whiteknight rurban: okay, thanks 22:30
rurban I suggest to ignore it
see my patch in GH #781
whiteknight ok 22:31
rurban Or maybe you can really fix it, marking interp as being already freed somehow.
e.g. by writing deadbeef into the ptr and comparing it before setting it to NULL 22:32
dalek : c7548f1 | kjs++ | src/gencode.c:
code for returning from chunks. should not always be generated. figure out a way to do this.
22:34
rurban Newer libc have a env MALLOC_POISON feature which does about the same as address sanitizer with its use-after-free detection
whiteknight rurban: That sounds reasonable. I'll look at it 22:38
dalek : 31ac4b2 | kjs++ | src/gencode.c:
put in more instructions that need to be generated. fix generation of a parent cf reg.
22:47
22:53 rurban_mobile joined
dalek : 4b0ddde | kjs++ | / (4 files):
generated pretty much all instructions from poke_caller example. no luck yet. (segfault)
23:01
: b575423 | kjs++ | / (4 files):
delete generated files that were accidentaly commited. and move a test file to t/
23:06
: 98934a0 | kjs++ | src/gencode.c:
a few more lines to generate. Function calls need serious debugging. (takers welcome ;-)
23:13
kjs thinks he has chunk calls figured out 23:27
that warrants another half an hour hacking :-) 23:28
dalek : de327cd | kjs++ | src/gencode.c:
function calls almost done. However, not sure if this will work. called function needs to have different return sequence of instructions for each caller, not to whomever called it. (also cleaned up layout a bit of generated instr)
23:40