Camelia, the Perl 6 bug

IRC log for #parrot, 2011-05-19

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 lucian_ left #parrot
00:07 dukeleto ENOLAURELS
00:13 jevin joined #parrot
00:15 dukeleto jevin: welcome
00:26 kid51 Are there any branches that will need testing over the next four days?
00:29 whiteknight none that I know of
00:29 whiteknight maybe bacek's gc_tuning branch
00:29 whiteknight but I don't know the status of thta
00:33 kid51 is now known as kid51_at_dinner
00:34 kid51_at_dinner is now known as kid51
00:34 whiteknight valgrind. takes. forever.
00:35 nopaste "kid51" at 192.168.1.3 pasted "Two new failures on master on linux/i386." (158 lines) at http://nopaste.snit.ch/46344
00:35 kid51 is now known as kid51_at_dinner
00:42 bacek_at_work whiteknight, not yet. I know that branch is kind of broken.
00:43 whiteknight okay, I wasn't sure
00:43 whiteknight you need more eyes on it?
00:45 bacek_at_work more eyes are always welcome :)
00:48 whiteknight I've got three or four in my closet
00:50 * cotto_work starts singing Harvester of Eyes
01:03 bacek_at_work whiteknight, wanna something useful for gc_tune branch?
01:03 whiteknight bacek_at_work: sure. I like pretending to be useful
01:04 pmichaud I'm currently testing kiwi with ~3GB memory
01:04 pmichaud (and orange with somewhat more than that)
01:04 bacek_at_work There is gc_gms_sweep_pools function. And is has 2 POINTER_ARRAY_ITER instances. If you can extract bodies of this iterators into static functions it will help with debug.
01:08 whiteknight ko
01:08 whiteknight ok
01:08 whiteknight Valgrind is still running, so I cant' do anything yet
01:29 cotto ~~
01:37 kid51_at_dinner is now known as kid51
01:38 kid51 Does anyone know at which commit those failures started?
01:38 kid51 (The fact that we no longer have a git commit number available at end of configuration has screwed up my local test scripts.)
01:44 theory left #parrot
01:46 kid51 At commit b7811d7ec, 'make' was not completing successfully.
01:48 whiteknight alester was doing some headerizer stuff earlier today that was causing breakages
01:48 kid51 The commit just cited was actually in the middle of various commits.
01:49 kid51 commits by alester.
01:49 cotto master is working fine for me
01:49 kid51 commit d8520877: make completes and those two tests PASS
01:49 kid51 not for me
01:49 kid51 See http://trac.parrot.org/par​rot/ticket/2115#comment:1
01:54 dalek TT #2115 created by jkeenan++: t/tools/dump_pbc.t and pbc_disassemble.t: new test failures
01:54 dalek TT #2115: http://trac.parrot.org/parrot/ticket/2115
01:55 whiteknight left #parrot
01:57 cotto no luck duplicating on my laptop.  attempting on my ppc mv
01:57 cotto *vm
02:00 cotto somehow Configure.pl segfaulted qemu
02:00 cotto impressive
02:02 kid51 According to taptinder, early today there were 3 consecutive commits that were causing build failures on all machines *except* Win32.  http://tt.taptinder.org/buildstatus/parrot/master
02:03 kid51 Reconfirm that at HEAD (commit a115d7cd) 'make' completes but I get the two test failures cited.
02:11 cotto Awesome.  After 30m of running core.pm under valgrind, it segfaults.
02:12 cotto er, building core.pm
02:13 kid51 dukeleto, you want TT #2115?  (I just reassigned to petdance before I saw you had taken it.)
02:13 cotto seems to be quite segfaulty
02:14 kid51 I'll give it back to dukeleto and cc petdance.
02:21 NotFound_b joined #parrot
02:25 kid51 left #parrot
02:33 NotFound_b No one ever read the gcc warnings?
02:33 pmichaud I read them and thought "gee, look at the pretty warnings"
02:33 pmichaud I didn't think they were serious.  :-) :-)
02:34 NotFound_b It's telling now the exact cause of the problem.
02:36 cotto and that's why we want to eliminate the superfluous ones
02:37 NotFound_b To hide the problems?
02:38 cotto NotFound_b, yup.  If we ignore them, they can't effect us.
02:38 pmichaud if we ignore them... it's like they don't exist.  :-)
02:39 pmichaud "if we ignore our customers long enough, pretty soon they'll start leaving us alone."
02:39 pmichaud :-)
02:39 pmichaud (was just reminded of the despair.com poster, that's all)
02:40 NotFound_b You worked for sco?
02:40 pmichaud no, but sco didn't ignore their customers
02:40 pmichaud in fact, they made sure their customers knew that they were save from any IP violations
02:40 pmichaud *safe
02:40 pmichaud they wanted to turn every other linux user into a customer :)
02:41 dalek parrot: 610bb7a | NotFound++ | / (2 files):
02:41 dalek parrot: don't declare as non-null parameter which we are calling with explicit NULL
02:41 dalek parrot: review: https://github.com/parrot/parrot/commit/610bb7a59b
02:42 NotFound_b That will probably fix TT #2115
02:42 cotto looks like my ppc vm can reproduce the failures kid51 say
02:42 cotto *saw
02:43 cotto stupid core.pm build keeps segfaulting
02:43 NotFound_b Looking at the code, it should be failing in all system in non optimized builds.
02:44 pmichaud please tell me the failures are post-3.4.0
02:44 pmichaud *all post-3.4.0
02:44 NotFound_b No idea, but I think the changes in signatures are from today or yesterday
02:45 cotto pmichaud, I'm pretty sure gerd would have said something.  I don't remember seeing the failures earlier this week.
02:46 pmichaud yeah, the ticket reports 0004e42 as being the culprit, and that was after the release
02:46 NotFound_b Looks like recent gcc are finally capable of doing something useful with that nonnull decorations.
02:47 NotFound_b I'm using 4.5.2 here
02:48 cotto NotFound_b, nice.
02:49 NotFound_b I already located the problem before seeing the warning, but still... ;)
02:52 pmichaud afk, kids to bed and stuff like that
02:52 NotFound_b The NCI changes are not so bad, I've been able to use a mysql connection utf8 encoded working fine... but with libffi, without it the needed signatures aren't available.
02:53 NotFound_b BTW the last parameter of mysql_real_connect is wrong, should be long, not int.
02:53 NotFound_b unsigned long
02:54 NotFound_b It works in most system with i, but...
02:55 dukeleto NotFound_b: the demons await to tickle that bug
03:01 dalek parrot/m0-prototype: b6959a7 | cotto++ | src/m0/m0_interp.pl:
03:01 dalek parrot/m0-prototype: remove some unneeded constants from the m0 interp
03:01 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/b6959a75c6
03:01 dalek parrot/m0-prototype: 7e1c13f | cotto++ | src/m0/m0_interp.pl:
03:01 dalek parrot/m0-prototype: make m0 interp debugging output optional
03:01 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/7e1c13f3c7
03:04 arnsholt joined #parrot
03:04 arnsholt_ left #parrot
03:34 dalek parrot: adb2073 | NotFound++ | t (2 files):
03:34 dalek parrot: add a --help option to create_language and unTODO the related tests
03:34 dalek parrot: review: https://github.com/parrot/parrot/commit/adb2073a73
03:35 benabik joined #parrot
03:35 mtk left #parrot
03:44 mtk joined #parrot
04:24 theory joined #parrot
04:25 theory_ joined #parrot
04:25 theory left #parrot
04:25 theory_ is now known as theory
04:40 dalek website: soh_cah_toa++ | I Think It's Time for a Break
04:40 dalek website: http://www.parrot.org/cont​ent/i-think-its-time-break
04:48 dukeleto ~~
04:48 dukeleto NotFound_b: i knew if i wrote those tests, someone would fix it someday :)
04:49 dukeleto soh_cah_toa++ # nice blog post
04:50 NotFound_b dukeleto: good trick ;)
04:51 cotto dukeleto, does that mean that some day the M0 interpreter tests will pass?
04:52 cotto The word "debuggee" isn't used nearly enough these days.
04:54 tadzik debuggee, as in calee or trainee?
05:07 theory left #parrot
05:14 NotFound_b left #parrot
05:39 davidfetter left #parrot
05:40 pmichaud https://github.com/pmichaud/rpbench-results/bl​ob/master/orange-x86_64-3521m-201105182219.txt # latest benchmarks for orange
05:53 cotto pmichaud, from a Rakudo perspective, is the tied-cstring branch still worth pursuing?
06:03 NotFound Now that I think about it, there is a simple way to simplify passing char*: add a vtable get_pointer a ByteBuffer, and modify set_string_native to add a zero terminator (or use a method specific).
06:03 NotFound That way the memory will be easily garbage collected.
06:04 bacek_at_work NotFound, ByteBuffer store bytes in words :)
06:05 NotFound bacek_at_work: ATTR unsigned char *content;
06:05 bacek_at_work NotFound, ah, sorry... My mistake
06:05 NotFound I wrote it, I should know ;)
06:19 dalek tracwiki: v34 | cotto++ | CottoTasklist
06:19 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Cot​toTasklist?version=34&action=diff
06:19 dalek tracwiki: v35 | cotto++ | CottoTasklist
06:19 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Cot​toTasklist?version=35&action=diff
06:23 soh_cah_toa left #parrot
06:32 cotto msg whiteknight I'm thinking that one improvement to the profiling runcore would be to treat it as a separate frontend with its own arguments on top of what the parrot executable already knows about.  Thoughts?
06:32 aloha OK. I'll deliver the message.
06:33 sorear -0.5
06:33 sorear a lot of our stuff is dependant on pbc2exe
06:34 cotto sorear, this would be in addition to what we have now.
06:35 cotto I should clarify that.
06:35 cotto msg whiteknight To clarify, I'm think about profiling as a separate frontend in addition to keeping -Rprofiling et al.
06:35 aloha OK. I'll deliver the message.
06:45 * cotto sleeps
06:50 UltraDM joined #parrot
07:00 ShaneC joined #parrot
07:09 mikehh got a failure in t/tools/dev/headerizer/01_functions.t - Failed test:  51 - at the end of fulltest :-{
07:09 mikehh never looked at that test before
07:12 fperrad joined #parrot
07:25 mj41 joined #parrot
07:50 rurban_ joined #parrot
07:52 rurban left #parrot
07:52 rurban_ is now known as rurban
08:52 dod joined #parrot
08:59 contingencyplan left #parrot
09:19 jjore left #parrot
09:22 jjore joined #parrot
09:50 ShaneC left #parrot
09:55 ShaneC joined #parrot
10:11 bacek joined #parrot
10:14 mikehh seems the change in the re on line 455 of lib/Parrot/Headerizer/Functions.pm is responsible for the error in perl build/tools/build_html.pl
10:15 mikehh bah wrong paste - s{t/tools/dev/headerizer/01_functions.t}{perl build/tools/build_html.pl}
10:16 * mikehh was building Modern Perl Book in another window :-}
10:21 mikehh anyway t/tools/dev/headerizer/01_functions.t gets 'PARROT_ASSERT_ARG(( _abcDEF123 )' wants 'PARROT_ASSERT_ARG(_abcDEF123)' from 'ARGFREE_NOTNULL(( _abcDEF123 )())'
10:23 mikehh line 460, fails line 471 of t/tools/dev/headerizer/01_functions.t
10:24 mikehh s wrong way round :-}
10:32 whiteknight joined #parrot
10:34 whiteknight left #parrot
10:39 whiteknight joined #parrot
10:43 dalek parrot: d3c36f1 | fperrad++ | t/tools/mk_language_shell.t:
10:43 dalek parrot: [t] fix on Windows
10:43 dalek parrot: review: https://github.com/parrot/parrot/commit/d3c36f1c29
10:55 whiteknight good morning, #parrot
11:00 mikehh hi whiteknight
11:00 bacek aloha, whiteknight
11:02 whiteknight hello mikehh, bacek
11:02 Psyche^ joined #parrot
11:05 jsut_ joined #parrot
11:07 Patterner left #parrot
11:07 Psyche^ is now known as Patterner
11:10 jsut left #parrot
11:25 mtk left #parrot
11:25 lucian joined #parrot
11:31 mtk joined #parrot
12:01 dalek parrot/gc_tuning: 0df0d56 | bacek++ | src/gc/gc_gms.c:
12:01 dalek parrot/gc_tuning: Factor put sweep_pmc and sweep_string functions to simplify debug
12:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/0df0d56708
12:01 * whiteknight has to run valgrind again. last night I forgot --tool=callgrind
12:02 whiteknight that makes me a sad panda
12:06 * moritz churns through 2.6GB of profiling data generated by Devel::NYTProf
12:18 theory joined #parrot
12:19 davidfetter joined #parrot
12:33 theory left #parrot
12:38 lucian left #parrot
12:40 davidfetter left #parrot
12:44 bubaflub joined #parrot
13:02 davidfetter joined #parrot
13:11 theory joined #parrot
13:33 dalek parrot: 806568b | (Gerd Pokorra)++ | / (4 files):
13:33 dalek parrot: remove pkg-config rests, which is now longer supported, see TT #1853
13:33 dalek parrot: review: https://github.com/parrot/parrot/commit/806568bbe5
13:33 plobsing left #parrot
13:33 plobsing joined #parrot
13:37 contingencyplan joined #parrot
14:17 whiteknight cotto ping
14:18 whiteknight Tene ping
14:29 UltraDM left #parrot
14:43 hercynium joined #parrot
14:52 whiteknight NotFound: ping
14:52 moritz whiteknight: tring ping -b :-)
14:52 whiteknight :)
14:53 bubaflub ~~
14:59 NotFound whiteknight: pong
15:00 whiteknight NotFound: has that namespace lookup logic made it into the installable version yet?
15:00 NotFound whiteknight: yeah
15:01 NotFound The revision titled ".... cross your fingers" ;)
15:01 whiteknight ok
15:01 whiteknight I just cleaned and installed with plumage, and I'm not sure if I have it
15:01 whiteknight or maybe I don't understand it
15:02 whiteknight I need to read more :)
15:02 NotFound whiteknight: is not reasy, that is the reason for the complicated test.
15:03 NotFound Is something like C++... except when is not.
15:04 NotFound whiteknight: just ask any doubt
15:18 pmichaud good morning, #parrot
15:22 dukeleto bubaflub: mornin'
15:24 bubaflub morning dukeleto
15:31 whiteknight yay! callgrind finally completd
15:31 whiteknight several hours later
15:33 whiteknight core.pm generates 73.47 million PMC headers
15:34 whiteknight Sub.invoke is called 22 million times
15:37 whiteknight github.com/Whiteknight/data
15:38 atrodo Yep, that nearly locked firefox up
15:40 pmichaud those numbers seem to not fit
15:40 whiteknight yeah, best not to look at it in the browser
15:40 whiteknight pmichaud: what do you mean?
15:40 mj41 left #parrot
15:40 pmichaud how many pmcs get created per sub invocation?
15:41 pmichaud unless "PMC header"  != "PMC"
15:41 whiteknight 2ish?
15:41 whiteknight 3-4 if we have slurpy params, more if we have autoboxing
15:41 pmichaud right
15:42 pmichaud it seems like 22 million Sub.invoke would result in a lot of PMCs... perhaps more than the 73m figure
15:43 atrodo hopefully that's m for million, not m for thousands
15:43 whiteknight the fixed-size allocator is used a whopping 130m times
15:44 whiteknight that's one per PMC, for attribute stores, plus whatever 6model uses, plus other locations like register sets
15:44 pmichaud we aren't running on 6model yet
15:44 whiteknight oh
15:44 whiteknight so that's just vanilla parrot using it that much
15:45 pmichaud yes
15:45 whiteknight numbers I saw showed the fixed-sized allocator was about 20% faster than malloc for normal loads, so that's a good thing
15:47 whiteknight whether that still holds or not, I have no idea. I can only imagine malloc would be worse
15:50 rurban_ joined #parrot
15:52 rurban left #parrot
15:52 rurban_ is now known as rurban
15:56 dukeleto bubaflub: how was graduation?
15:57 bubaflub dukeleto: great.
15:57 bubaflub dukeleto: both parents came into town so spent some time with them
16:00 dukeleto bubaflub: good to hear
16:02 whiteknight CallContext.destroy takes up 2.10% of execution time. CallContext.push_pmc takes up another ~2%
16:06 whiteknight all things considered, CallContext.push_pmc looks pretty smart.
16:06 dukeleto bubaflub: so are you still recovering from graduation-induced libations, or are you ready to dig into some code?
16:08 cotto ~~
16:08 cotto whiteknight, poing
16:08 whiteknight cotto: I like the idea about a separate frontend for profiling, what do you think it should do?
16:09 cotto whiteknight, I'm thinking it's basically the same as parrot (the executable), except that it runs the profiling runcore by default and knows about profiling-specific options.  Apart from making parrot reusable, it shouldn't be that much code.
16:10 whiteknight oaky
16:10 whiteknight okay
16:10 whiteknight so profiling runcore plus some options, minus some other options?
16:11 cotto s/, minus.*//
16:14 whiteknight not remove any options?
16:14 cotto I don't see any reason to, and it'd probably simplify the code.
16:15 cotto any thoughts on how to make the code in frontend/parrot amenable to reuse?
16:15 dukeleto cotto: have you read http://www.parrot.org/cont​ent/i-think-its-time-break yet ?
16:16 whiteknight cotto: my big future-looking idea is to write much of the frontend code in PIR eventually and bootstrap
16:16 whiteknight that would be extremely amenable to reuse
16:16 dukeleto bubaflub: also, eagerly awaiting your bonding period blog post :)
16:17 cotto dukeleto, yes.  I'm not sure if I have a good approach, but I'll be re-reading, writing down questions/answers and thinking.
16:17 cotto whiteknight, shiny
16:19 cotto whiteknight, it sounds like that'd slow down the transition though.  What about making the C code reusable?
16:21 mj41 joined #parrot
16:22 bubaflub dukeleto: that'll be forth-coming tonight
16:24 dodathome joined #parrot
16:25 * cotto goes to job
16:29 dukeleto cotto++ # adding hand-assembled m0b
16:30 theory left #parrot
16:31 JimmyZ joined #parrot
16:40 whiteknight left #parrot
16:48 cotto_work ~~
16:59 cotto_work dukeleto: I guess that makes me the prototype M0 assembler.
17:02 JimmyZ left #parrot
17:09 Tene whiteknight: pong
17:20 dukeleto cotto_work: i will probably move it to a different filename, since where you put it, it will get overridden by my tests
17:21 dukeleto cotto_work: do we want some type of special behavior in the assembler if a m0b file already exists, or should it always just overwrite it ?
17:21 cotto_work dukeleto: that's probably not optimal.
17:21 cotto_work good idea
17:21 cotto_work dukeleto: I'm fine with clobbering any existing file.
17:21 theory joined #parrot
17:21 theory left #parrot
17:22 theory joined #parrot
17:22 cotto_work dukeleto: In the typical case, m0b will be much more ephemeral than it is now and clobbering it won't be a big deal.
17:22 cotto_work Nobody gets sad when a .o object file gets clobbered.
17:23 dukeleto cotto_work: yep, just figured I should ask. It is very much like an .o file
17:28 theory left #parrot
17:28 cotto_work there goes that theory
17:34 dalek TT #2116 created by dukeleto++: t/library/nciutils.t fails on a plain parrot
17:34 dalek TT #2116: http://trac.parrot.org/parrot/ticket/2116
17:34 dalek TT #2117 created by dukeleto++: t/pmc/nci.t fails when extra nci thunks are disabled
17:34 dalek TT #2117: http://trac.parrot.org/parrot/ticket/2117
17:34 dalek TT #2118 created by dukeleto++: t/src/checkdepend.t fails when extra nci tthunks are disabled
17:34 dalek TT #2118: http://trac.parrot.org/parrot/ticket/2118
17:37 theory joined #parrot
17:42 pmichaud trac won't let me log in
17:43 pmichaud it accepts my password, but doesn't actually log me in
17:43 pmichaud (if I put in an incorrect password, it tells me I have an incorrect password -- so the password isn't the issue)
17:45 dukeleto pmichaud: interesting
17:45 dukeleto pmichaud: what happens? do you have access to firebug?
17:45 pmichaud what is firebug?
17:45 cotto_work pmichaud: I can't duplicate that.  Is it possible there's some kind of wacky caching proxy in the way?
17:45 pmichaud oh, caching proxy is possible from here
17:46 pmichaud (medical center with diabolical firewall and access policies)
17:46 pmichaud I'll wait until I get home and try it again.
17:46 dukeleto pmichaud: https://github.com/apenwarr/sshuttle
17:46 dukeleto pmichaud: that is an easy way to get around that
17:47 dukeleto pmichaud: it basically makes a VPN through ssh for you to a remote host, so all your TCP traffic goes through ssh
17:48 pmichaud I do dns tunneling for a lot of my other stuff, but haven't tried it for web yet.  hasn't really been an issue until now
17:48 pmichaud does trac support https: connections?
17:48 pmichaud looks like "no"
17:48 pmichaud that would've solved it also :)
17:48 dukeleto trac--
17:48 * dukeleto goes on a 2 digit TT warpath
17:49 PerlJam Um ... I just had a student worker install trac on one of our systems and it uses https
17:49 pmichaud I meant trac.parrot.org, specifically
17:49 pmichaud not the software, necessarily
17:49 pmichaud when I use https://trac.parrot.org, it's forwarding me to the non-https url
17:49 pmichaud huh, the login is https:/
17:50 pmichaud maybe there's a cache that has grabbed the trac.parrot.org login page and keeps serving it back
17:50 dalek TT #2040 closed by dukeleto++: load_ bytecode with a unicode string fails
17:50 dalek TT #2040: http://trac.parrot.org/parrot/ticket/2040
17:50 dalek TT #13 closed by dukeleto++: set up documentation translation infrastructure
17:50 dalek TT #13: http://trac.parrot.org/parrot/ticket/13
18:00 mj41 left #parrot
18:04 hercynium left #parrot
18:05 hercynium joined #parrot
18:39 dmalcolm joined #parrot
18:48 theory left #parrot
18:48 ShaneC left #parrot
18:49 bubaflub left #parrot
18:51 alester joined #parrot
19:04 ShaneC joined #parrot
19:13 mtk left #parrot
19:13 mtk joined #parrot
19:24 bubaflub joined #parrot
19:37 silug joined #parrot
19:39 ambs joined #parrot
20:02 lucian joined #parrot
20:07 davidfetter left #parrot
20:08 davidfetter joined #parrot
20:15 tewk_ joined #parrot
20:15 tewk left #parrot
20:21 tewk joined #parrot
20:21 tewk_ left #parrot
20:24 theory joined #parrot
20:34 theory left #parrot
20:44 theory joined #parrot
20:44 dodathome left #parrot
21:06 soh_cah_toa joined #parrot
21:16 soh_cah_toa so i've been looking at some nqp code and i was wondering...what are these really ugly statements like pir::getinterp__P() and pir::defined__IP()?
21:16 benabik soh_cah_toa: Those are parrot opcodes.
21:16 soh_cah_toa right, i know that
21:16 benabik soh_cah_toa: NQP lets you use PIR more or less directly.  The __P and __IP are type information.
21:17 soh_cah_toa yeah, that's what i mean
21:17 soh_cah_toa the __*
21:17 benabik You need type information to use an opcode.  getinterp__P takes nothing and returns a PMC and defined__IP takes a PMC and returns an int
21:18 soh_cah_toa so the first letter indicates the return type and the rest are the argument types?
21:18 benabik soh_cah_toa: Basically.
21:18 soh_cah_toa hmm...alright
21:19 benabik I think there are more types, but the basic four are I N S P for Int, Num, String, and PMC
21:20 soh_cah_toa right
21:21 soh_cah_toa that's a really weird notation. i'll get used to it i suppose...
21:22 soh_cah_toa another thing...i can't seem to figure out what the // operator does
21:22 benabik NQP is fairly loosely typed, so the additional information is needed.  Not the prettiest, but it does work.
21:22 benabik It's like ||, but is based on being defined instead of true.
21:22 cotto_work soh_cah_toa: another gotcha is that numbers are N, not I.
21:22 benabik So  $b // 5 evaluates to 5 if $b is undefined.
21:23 soh_cah_toa alright
21:23 benabik Whereas $0 || 5 evaluates to 5 if $b is 0 or false or undefined.
21:23 ambs left #parrot
21:24 soh_cah_toa ok, what's the advantage of using // over || though? is it true that you could place || anywhere you see //?
21:25 soh_cah_toa cotto_work: right
21:25 ShaneC left #parrot
21:26 benabik soh_cah_toa: $b // 5 only uses 5 if $b is undefined.  $b || 5 uses 5 if $b is false in some way, either boolean false, numeric 0, empty string (IIRC), or undefined.  // is useful for when you want one of those "false" values to be a possible result.
21:27 * benabik actually isn't sure there is a boolean false separate from 0.
21:27 benabik / is also really handy for confusing C++ programmers.
21:27 cotto_work It's nice to have a language that knows that the semipredicate problem is a thing.
21:27 soh_cah_toa benabik: yeah, no kidding :)
21:28 theory left #parrot
21:29 dmalcolm left #parrot
21:30 soh_cah_toa so '$foo // $bar' is like 'defined $foo || defined $bar'?
21:31 benabik More like:  defined $foo ?? $foo :: $bar
21:31 Tene soh_cah_toa: no, it's: (defined($foo) ? $foo : $bar)
21:32 theory joined #parrot
21:32 benabik Having written a lot of Java code that uses (objA != null ? objA : default), I really appreciate //.
21:32 soh_cah_toa so it actually evaluates to one of the values being tested, not a boolean value
21:32 benabik Exactly.
21:32 soh_cah_toa interesting...
21:33 soh_cah_toa i suppose it would make those nested ternary tests a whole lot cleaner looking
21:34 davidfetter left #parrot
21:36 soh_cah_toa wow, i was looking up more info on the short-circuit default operator and i found this bad boy:
21:36 soh_cah_toa http://glyphic.s3.amazonaws.com/ozone​/mark/periodic/Periodic%20Table%20of%​20the%20Operators%20A4%20300dpi.jpg
21:36 benabik I showed that to my compiler teacher and he sputtered a bit.
21:36 soh_cah_toa ha
22:01 fperrad left #parrot
22:08 bacek_at_work ~~
22:12 bacek_at_work soh_cah_toa, (various __* suffixes) you can get full list from compilers/pct/src/PAST/Compiler.pir
22:30 alester left #parrot
22:33 bubaflub left #parrot
22:38 theory left #parrot
22:44 kid51 joined #parrot
22:45 theory joined #parrot
22:52 theory left #parrot
22:55 hercynium left #parrot
22:56 bubaflub joined #parrot
23:00 * kid51 backscrolls
23:01 kid51 msg pmichaud We eventually recovered Trac passwords lost around May 5, so if you reset your password then, try the password you originally had.  (Or bite bullet and request new password.)
23:01 aloha OK. I'll deliver the message.
23:05 cotto_work kid51: it's more likely that a caching proxy is to blame
23:16 janus left #parrot
23:16 janus joined #parrot
23:20 dalek TT #2115 closed by jkeenan++: t/tools/dump_pbc.t and pbc_disassemble.t: new test failures
23:20 dalek TT #2115: http://trac.parrot.org/parrot/ticket/2115
23:50 rurban_ joined #parrot
23:52 rurban left #parrot
23:53 rurban_ is now known as rurban
23:59 hercynium joined #parrot

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

Parrot | source cross referenced