--- Log opened Wed Dec 23 00:00:35 2009 00:03 -!- oal [n=olav@5.79-160-122.customer.lyse.net] has quit [Read error: 54 (Connection reset by peer)] 00:06 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has quit [] 00:07 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has joined #go-nuts 00:10 -!- callidus [n=callidus@cpc2-newc1-0-0-cust1524.gate.cable.virginmedia.com] has quit [Remote closed the connection] 00:11 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has quit [Client Quit] 00:12 -!- pvandusen [n=pdusen@crob4-55.flint.umich.edu] has joined #go-nuts 00:17 -!- jhh [n=jhh@f048174027.adsl.alicedsl.de] has quit [] 00:17 -!- decriptor [n=decripto@174-27-183-117.slkc.qwest.net] has joined #go-nuts 00:18 -!- zaker__ [n=zaker@18.19.202.84.customer.cdi.no] has quit ["Ex-Chat"] 00:28 -!- DerHorst_ [n=Horst@e176111048.adsl.alicedsl.de] has joined #go-nuts 00:30 -!- pdusen [n=pdusen@crob4-55.flint.umich.edu] has quit [Read error: 110 (Connection timed out)] 00:30 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 00:32 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Remote closed the connection] 00:32 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 00:35 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 00:36 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 00:38 -!- omykron__ [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 00:41 -!- iant [n=iant@nat/google/x-mdwzvwhdnwelbihp] has quit [Read error: 110 (Connection timed out)] 00:44 -!- omykr956 [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 00:45 -!- DerHorst [n=Horst@e176115129.adsl.alicedsl.de] has quit [Read error: 110 (Connection timed out)] 00:50 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Connection timed out] 00:50 -!- omykr956 [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Remote closed the connection] 00:51 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 00:52 -!- iant [n=iant@67.218.110.145] has joined #go-nuts 00:52 -!- mode/#go-nuts [+v iant] by ChanServ 00:53 -!- Xera^ [n=brit@87-194-208-246.bethere.co.uk] has joined #go-nuts 00:56 -!- omykron__ [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Connection timed out] 00:57 < drhodes> I'm porting a C program that #includes <setjmp.h>, is there a parallel in the go stdlib, or would that open a gate to hell? 00:57 -!- omykron__ [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 00:57 <+iant> drhodes: there is no parallel 00:57 <+iant> one approach might be to use a goroutine which reports back on a channel 00:57 < drhodes> ok, thanks iant. 01:02 -!- kanru [n=kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts 01:02 -!- aaront [n=aaront@unaffiliated/aaront] has quit [Remote closed the connection] 01:03 -!- omykr3 [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:05 -!- RolaBlade [n=eddw@78-28-65-193.cdma.dyn.kou.ee] has quit ["Leaving"] 01:05 -!- Xera^ [n=brit@87-194-208-246.bethere.co.uk] has quit [Read error: 54 (Connection reset by peer)] 01:06 -!- DerHorst_ [n=Horst@e176111048.adsl.alicedsl.de] has quit ["Verlassend"] 01:08 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Success] 01:08 -!- tps_ [n=eddw@78-28-65-193.cdma.dyn.kou.ee] has joined #go-nuts 01:09 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:11 -!- iammisc [n=travfar@pool-173-51-244-73.lsanca.dsl-w.verizon.net] has joined #go-nuts 01:13 -!- pvanduse [n=pdusen@crob4-55.flint.umich.edu] has joined #go-nuts 01:14 -!- omykron__ [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Connection timed out] 01:14 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Remote closed the connection] 01:15 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:19 -!- pvandusen [n=pdusen@crob4-55.flint.umich.edu] has quit [Read error: 60 (Operation timed out)] 01:19 -!- Xera^ [n=brit@87-194-208-246.bethere.co.uk] has joined #go-nuts 01:20 -!- omykr3 [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Connection timed out] 01:20 -!- amuck_ [n=amuck_@rrcs-76-79-44-2.west.biz.rr.com] has quit [] 01:21 -!- omykron__ [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:26 < iammisc> how is go different 01:27 -!- omykr256 [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:27 < jessta> that is a good plan 01:27 < jessta> iammisc: to what? 01:27 < iammisc> huh? 01:27 -!- Sungem [i=ss@118-160-171-222.dynamic.hinet.net] has quit [Client Quit] 01:27 < iammisc> from current languages 01:28 < iammisc> what else would I compare it to? 01:28 < jessta> compared to all other languages it's not different at all 01:29 < iammisc> Okay, then, C, Python, Perl, Java, Javascript, and Haskell 01:30 < jessta> go has channels and goroutines 01:30 < iammisc> okay 01:31 < jessta> if you compared it to java, I could say, it's natively compiled and doesn't allow inheritance 01:32 < Gracenotes> differentness is not the ultimate virtue. I'd rather have no inheritance than class-based inheritance being the only means of dynamic dispatch. ugggh, that caused a freaking mess in Java. 01:33 -!- omykr256 [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Read error: 54 (Connection reset by peer)] 01:33 < iammisc> Gracenotes, that would be a difference 01:33 -!- omykr923 [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:33 < Gracenotes> yes, it is. the two points were a bit separate I suppose. 01:33 -!- triplez [n=triplez@cm52.sigma225.maxonline.com.sg] has quit [] 01:33 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Connection timed out] 01:34 < jessta> and now it's time to go outside in this ridiculous heat and drink hot coffee 01:37 * Boggy-B has a foot of snow outside his window 01:37 < Boggy-B> and it's.. 2am lol 01:38 -!- carllerche [n=carllerc@enginey-9.border1.sfo002.pnap.net] has quit [] 01:38 -!- omykron__ [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Connection timed out] 01:38 < Soak> where do you from Boggy-B? 01:39 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:39 < Boggy-B> Soak: UK 01:39 < Soak> Boggy-B: ok France me 01:39 < Soak> It's 2.41am 01:40 < Boggy-B> i need to be up early, i should be in bed, i have a whole bunch of stuff garentted delivery before christmas eve 01:40 < Boggy-B> which means it's in the morning, or never :p 01:40 -!- aaront [n=aaront@d226-110-84.home.cgocable.net] has joined #go-nuts 01:40 < Soak> x) 01:41 -!- Xera^ [n=brit@87-194-208-246.bethere.co.uk] has quit ["( www.nnscript.com :: NoNameScript 4.21 :: www.esnation.com )"] 01:42 -!- aaront [n=aaront@unaffiliated/aaront] has quit [Remote closed the connection] 01:43 < Boggy-B> while we're barely off topic, ive only just got a chance to start using Go 01:43 < Boggy-B> and it's seriously making life easier lol 01:43 -!- stalled_ [n=411@unaffiliated/stalled] has joined #go-nuts 01:44 -!- lux` [n=lux@151.95.189.174] has quit [Remote closed the connection] 01:45 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 01:45 -!- Sungem [i=ss@220-136-226-135.dynamic.hinet.net] has joined #go-nuts 01:46 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has joined #go-nuts 01:47 -!- stalled [n=411@unaffiliated/stalled] has quit [Read error: 60 (Operation timed out)] 01:47 < iammisc> Boggy-B: could you tell me how Go is making life easier? I want to know if I should try it or not? 01:48 < Boggy-B> well, i have a backgound in Java, and OCCAM-PI. 01:48 < Boggy-B> concurrancy in java makes me cry, and occam is SO safe you can't actually.. do anything with it 01:50 < Boggy-B> so this thing is like a dream come true for me, no need to mess with JCSP, and loose the whole fat end of Java while im at it, yet get the power and simple syntax im after 01:50 -!- omykr923 [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Connection timed out] 01:51 -!- triplez [n=triplez@bb116-14-64-38.singnet.com.sg] has joined #go-nuts 01:51 < iammisc> I definitely agree with you over java 01:52 < iammisc> don't know about occam-pi 01:52 -!- stalled [n=411@unaffiliated/stalled] has joined #go-nuts 01:53 -!- triplez_ [n=triplez@bb116-14-64-38.singnet.com.sg] has joined #go-nuts 01:53 < Boggy-B> well it's a process based language, so you're more writing threads, than objects 01:53 -!- Ortzinator [n=ortzinat@unaffiliated/ortzinator] has quit [Read error: 60 (Operation timed out)] 01:53 < Boggy-B> and you just set them off in parralel 01:53 -!- iant [n=iant@67.218.110.145] has quit [Read error: 60 (Operation timed out)] 01:54 < iammisc> yeah, I looked it up 01:54 < Boggy-B> GO allows something very similar :) 01:54 < Boggy-B> the people i know who work with occam say 'Go is ugly occam' but after so long with java, it looks plenty pretty to me :P 01:55 < iammisc> Uggh, Java code makes my eyes burn in their sockets 01:55 < Boggy-B> haha, what do you use? 01:56 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Remote closed the connection] 01:56 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has joined #go-nuts 01:57 -!- triplez__ [n=triplez@bb116-14-64-38.singnet.com.sg] has joined #go-nuts 01:57 < iammisc> I' 01:57 < iammisc> I'm a C/C++ guy 01:57 < iammisc> python for anything quick 01:57 < Boggy-B> i did a little c++, but ive never used c 01:57 < Boggy-B> and i dont enjoy python :p 01:58 < iammisc> Haskell for prototyping and utilities 01:58 -!- triplez [n=triplez@bb116-14-64-38.singnet.com.sg] has quit [Read error: 60 (Operation timed out)] 01:58 < Boggy-B> wow, i did some haskell, that language owns me 01:58 < iammisc> haha 01:58 < iammisc> yeah it's interesting 01:59 -!- rrr [i=rrr@gateway/gpg-tor/key-0x9230E18F] has quit [Remote closed the connection] 01:59 < iammisc> but once you get it, you can write valid code pretty quickly 01:59 < iammisc> its very expressive 01:59 < Boggy-B> any programing language that calls a 'good program' something that's 5 lines long and uses a lot of recursion is really beyond me 01:59 < iammisc> haha 02:01 -!- Ortzinator [n=ortzinat@cpe-065-191-006-129.nc.res.rr.com] has joined #go-nuts 02:01 -!- Tuller [n=Tuller@pool-72-84-246-12.rcmdva.fios.verizon.net] has joined #go-nuts 02:01 -!- dwery [n=dwery@nslu2-linux/dwery] has joined #go-nuts 02:01 -!- stalled_ [n=411@unaffiliated/stalled] has quit [Connection timed out] 02:01 -!- iammisc [n=travfar@pool-173-51-244-73.lsanca.dsl-w.verizon.net] has left #go-nuts [] 02:01 < dwery> hello. do we have compile time directives (like #ifdef) in go ? 02:01 < Boggy-B> at the moment im trying to re-write some of my occam code into Go, and it seems really straightforward 02:01 < Boggy-B> and lots more readable 02:02 < goplexian> do we have any kind of testing library for doing tdd in go? 02:04 -!- tps_ [n=eddw@78-28-65-193.cdma.dyn.kou.ee] has quit ["Leaving"] 02:05 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has quit [] 02:05 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has quit [Read error: 104 (Connection reset by peer)] 02:06 -!- amuck [n=amuck@h196.105.117.75.dynamic.ip.windstream.net] has joined #go-nuts 02:06 -!- Soak [n=Soak@mst45-1-82-231-239-194.fbx.proxad.net] has quit [] 02:06 < Gracenotes> dwery: hm.. for what purpose? architecture/OS-specific things? 02:07 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 02:07 < dwery> Gracenotes: that's an option. another would be a debug version of the same program. 02:08 < dwery> sometimes is handy to generate multiple binaries from the same source code 02:09 < Gracenotes> you just made me realize how similar preprocessing and inclusion systems are to DNA transcription 02:10 < dwery> let's hope my code does not modify itself as sometimes the DNA does :D 02:10 < Boggy-B> lol that'd be an interesting bug 02:10 < Boggy-B> from hello world to skynet in 24 hours 02:10 < Gracenotes> polymorphic code is fun still. I'd like to learn how to make that. 02:11 < Gracenotes> well, it seems easy enough to hook C into Go. there seem to be plenty of #s in the Go source, but all in c files 02:12 < Gracenotes> available through cgo 02:12 < dwery> well, I think I can preprocess the source code with some preprocessor 02:12 < Gracenotes> but, yeah, you want to preprocess Go, not C 02:12 < dwery> cpp will probably do the trick 02:15 < dwery> see you 02:15 -!- triplez_ [n=triplez@bb116-14-64-38.singnet.com.sg] has quit [Read error: 113 (No route to host)] 02:15 < Gracenotes> sure. maybe it'll be added as a feature. but doesn't seem to be one now. 02:15 < Gracenotes> at least there is a sane module system that's not based in preprocessing 02:15 < dwery> maybe I'll open a bug.. 02:16 < dwery> time to call it a day.. 02:16 < dwery> ty 02:16 < Gracenotes> used only with debugging it should be harmless. Still, there is a logging library included 02:16 < Gracenotes> with logging levels which can be set to e.g. silent 02:16 < Gracenotes> okay. see ya 02:16 -!- dwery [n=dwery@nslu2-linux/dwery] has left #go-nuts ["Leaving."] 02:18 -!- aaront [n=aaront@d226-110-84.home.cgocable.net] has joined #go-nuts 02:21 -!- Tuller [n=Tuller@pool-72-84-246-12.rcmdva.fios.verizon.net] has quit ["to the batcave?"] 02:22 -!- aaront [n=aaront@unaffiliated/aaront] has quit [Remote closed the connection] 02:24 < plexdev> http://is.gd/5y1EL by [Robert Griesemer] in 3 subdirs of go/src/pkg/ -- Replace container/vector with exp/vector (faster). 02:28 < drhodes> I saw something neat in someone's code... type A struct { errorlog string; b int; c float; } so the errors are stored locally - haven't had a chance to explore programming with that yet. 02:30 -!- Alkavan_ [n=alkavan@87.68.244.60.adsl.012.net.il] has quit ["Leaving"] 02:30 -!- StDan [n=danielb@124-197-59-227.callplus.net.nz] has joined #go-nuts 02:32 -!- rbohn [n=chatzill@d103.digis.net] has joined #go-nuts 02:37 -!- hmmmm [n=asdf@pool-72-79-133-142.sctnpa.east.verizon.net] has joined #go-nuts 02:37 < hmmmm> woohoo i'm going! 02:38 < Boggy-B> grats! 02:39 -!- stalled_ [n=411@unaffiliated/stalled] has joined #go-nuts 02:39 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 02:40 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 02:42 -!- skelterjohn [n=jasmuth@c-76-99-92-193.hsd1.nj.comcast.net] has joined #go-nuts 02:44 -!- carllerche [n=carllerc@c-69-181-129-204.hsd1.ca.comcast.net] has joined #go-nuts 02:44 -!- Kniht [n=kniht@c-68-58-17-177.hsd1.in.comcast.net] has joined #go-nuts 02:51 -!- omykron [n=omykron@217.216.191.19.dyn.user.ono.com] has quit [Remote closed the connection] 02:53 -!- stalled [n=411@unaffiliated/stalled] has quit [Read error: 110 (Connection timed out)] 02:54 -!- raichoo [n=raichoo@i577B98BA.versanet.de] has quit ["http://raichoo.blogspot.com"] 02:56 < plexdev> http://is.gd/5y3zC by [Robert Griesemer] in go/src/pkg/container/vector/ -- Cleanup: remove Exp ending in identifiers 02:56 < plexdev> http://is.gd/5y3zE by [Rob Pike] in go/doc/ -- fix documentation bug in example 02:58 < exitstate> hmm, weird 02:58 < exitstate> the sites search engine kind of sucks 02:59 < exitstate> search for exact syntax or results of said syntax and it just sys illegal query syntax 03:01 -!- Kniht [n=kniht@c-68-58-17-177.hsd1.in.comcast.net] has quit ["Leaving"] 03:05 -!- Ortzinator [n=ortzinat@unaffiliated/ortzinator] has quit [Read error: 104 (Connection reset by peer)] 03:09 -!- webbpa [n=chatzill@c-69-243-169-178.hsd1.in.comcast.net] has quit ["ChatZilla 0.9.86 [Firefox 3.5.6/20091215231754]"] 03:19 -!- ekidd [n=ekidd@pool-70-109-187-227.cncdnh.east.myfairpoint.net] has joined #go-nuts 03:20 -!- Kibiz0r [n=kibiyama@99-48-204-31.lightspeed.brhmmi.sbcglobal.net] has quit ["Leaving."] 03:23 -!- scarabx_ [n=scarabx@c-24-147-239-120.hsd1.ma.comcast.net] has joined #go-nuts 03:27 -!- path[l] [n=path@115.240.94.55] has joined #go-nuts 03:31 -!- Sungem [i=ss@220-136-226-135.dynamic.hinet.net] has quit [Client Quit] 03:33 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 03:34 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 03:35 -!- Ryan_ [n=ryan@cpe-98-27-166-221.neo.res.rr.com] has quit ["Colloquy for iPhone - http://colloquy.mobi"] 03:36 -!- scarabx [n=scarabx@c-24-147-239-120.hsd1.ma.comcast.net] has quit [Read error: 110 (Connection timed out)] 03:37 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined #go-nuts 03:38 -!- binaryjohn_ [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined #go-nuts 03:38 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit [Read error: 54 (Connection reset by peer)] 03:40 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit [Client Quit] 03:41 -!- stevenyvr [n=schan@76-10-184-108.dsl.teksavvy.com] has quit ["Computer has gone to sleep"] 03:45 -!- stalled_ [n=411@unaffiliated/stalled] has joined #go-nuts 03:45 -!- giasone [n=giasone@adsl-ull-132-23.49-151.net24.it] has joined #go-nuts 03:45 < giasone> hi 03:45 < giasone> i'm in a trouble somebody could help me pls 03:46 < amuck> giasone, What's the problem? 03:46 -!- Ortzinator [n=ortzinat@cpe-065-191-006-129.nc.res.rr.com] has joined #go-nuts 03:47 < giasone> i just update my source but i try to compile and got some error 03:47 < giasone> i'm on a mac platform 03:48 < giasone> $GOBIN $ GOROOT etc are setted 03:48 < Boggy-B> what's the error? 03:49 < giasone> i check on google if somebody report this error, look in the project issue but nothing 03:49 < giasone> during compiling when arrive at 03:49 < giasone> %%%% making pkg %%%% 03:49 < giasone> make: *** [sort.install] Error 127 03:50 < giasone> are 4 error in 4 different file 03:54 < giasone> -/bin/sh: gomake: command not found 03:55 -!- [[sroracle]] [n=sroracle@unaffiliated/sroracle] has quit ["<sresp.co.cc>"] 03:58 < giasone> somebody have some good news for me? 03:59 < giasone> if i retry to compile i got the same error but not in the same order 03:59 -!- Amaranth [n=travis@ubuntu/member/Amaranth] has quit ["Ex-Chat"] 03:59 < giasone> of course gomake is in the bin file 03:59 -!- Amaranth [n=travis@ubuntu/member/Amaranth] has joined #go-nuts 04:00 < giasone> sorry, folder 04:00 < Gracenotes> you're sure the go bin is visible in PATH? 04:00 < giasone> yes is the last one in $PATH var 04:00 -!- stalled [n=411@unaffiliated/stalled] has quit [Read error: 110 (Connection timed out)] 04:00 < Gracenotes> so echo $PATH shows Go, and it's exported 04:01 < giasone> only the bin folder 04:02 < giasone> but it works for some file and for something else no? 04:02 < anticw> giasone: you can ignore that 04:02 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined #go-nuts 04:02 < giasone> what? 04:03 < anticw> gomake missing on a clean build 04:03 < giasone> no 04:03 < anticw> make -k 04:04 < giasone> i retry 04:04 < anticw> i see the same issue here 04:05 < giasone> i got 300 errors now with -k param 04:05 < anticw> doing what? 04:05 < anticw> make clean gives me them ... make should be ok 04:05 < giasone> make -k 04:06 < giasone> i retry 04:06 < anticw> worse case do 'ln -f /bin/true $GOBIN/gomake' 04:06 < anticw> worse case do 'ln -s /bin/true $GOBIN/gomake' 04:06 < anticw> sorry 04:08 -!- iant [n=iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts 04:08 -!- mode/#go-nuts [+v iant] by ChanServ 04:08 < giasone> but i have gomake in bin folder 04:13 -!- amuck [n=amuck@h196.105.117.75.dynamic.ip.windstream.net] has quit ["Leaving"] 04:13 -!- amuck [n=amuck@h196.105.117.75.dynamic.ip.windstream.net] has joined #go-nuts 04:14 -!- amuck [n=amuck@h196.105.117.75.dynamic.ip.windstream.net] has quit [Client Quit] 04:19 -!- ekidd [n=ekidd@pool-70-109-187-227.cncdnh.east.myfairpoint.net] has quit [] 04:20 -!- ekidd [n=ekidd@pool-70-109-187-227.cncdnh.east.myfairpoint.net] has joined #go-nuts 04:22 -!- stalled [n=411@unaffiliated/stalled] has joined #go-nuts 04:28 -!- aaront [n=aaront@d226-110-84.home.cgocable.net] has joined #go-nuts 04:30 < anticw> giasone: back now ... still not working? 04:30 < giasone> nothing 04:30 < anticw> what platform/cpu? 04:30 < giasone> darwin 386 04:31 < anticw> ok, let me find one 04:33 -!- ekidd [n=ekidd@pool-70-109-187-227.cncdnh.east.myfairpoint.net] has quit [] 04:35 -!- stalled_ [n=411@unaffiliated/stalled] has quit [Read error: 110 (Connection timed out)] 04:38 -!- Netsplit kornbluth.freenode.net <-> irc.freenode.net quits: Yappo__, soul9, shasbot, plexdev 04:40 -!- nullpo [n=nullpo@221x252x46x83.ap221.ftth.ucom.ne.jp] has joined #go-nuts 04:40 -!- shasbot [n=shasbot@ip70-171-218-55.tc.ph.cox.net] has joined #go-nuts 04:40 -!- stalled_ [n=411@unaffiliated/stalled] has joined #go-nuts 04:41 < giasone> did you find something? 04:43 -!- rrr [i=rrr@gateway/gpg-tor/key-0x9230E18F] has joined #go-nuts 04:45 < anticw> sorry, children demanding my attention .... i have it building here on darwin 386 04:45 -!- stalled [n=411@unaffiliated/stalled] has quit [Read error: 60 (Operation timed out)] 04:45 < anticw> actually, no :-) 04:45 < anticw> it see something now 04:47 -!- soul9 [n=none@unaffiliated/johnnybuoy] has joined #go-nuts 04:47 -!- plexdev [n=plexdev@arthur.espians.com] has joined #go-nuts 04:47 -!- Yappo__ [n=yappo@221x243x122x124.ap221.ftth.ucom.ne.jp] has joined #go-nuts 04:47 < giasone> i try to update my src in cases something going vrong during download but nothing 04:47 < anticw> giasone: is $HOME/bin in your path? i suspect it's not 04:47 < anticw> export PATH=$PATH:$HOME/bin 04:48 < giasone> i merrie you if i resolve with this ;-P 04:49 < anticw> $HOME/bin is missing from your path, fix that and it will work 04:49 < anticw> do what i suggested above 04:49 < anticw> i just did a full build darwin 386 w/ tests and it worked fine 04:50 < giasone> doh! 04:50 < giasone> it's doesn't work 04:50 < anticw> paste the errors somewhere 04:51 < giasone> but $HOME/bin is $GOBIN? 04:51 < giasone> it's the same 04:51 < giasone> %%%% making pkg %%%% 04:51 < giasone> cd runtime && gomake install 04:51 < giasone> cd unicode && gomake install 04:51 < giasone> cd math && gomake install 04:51 < giasone> cd sort && gomake install 04:51 < giasone> make[1]: *** [unicode.install] Error 127 04:51 < giasone> make[1]: *** Waiting for unfinished jobs.... 04:51 < giasone> make[1]: *** [runtime.install] Error 127 04:51 < giasone> make[1]: *** [math.install] Error 127 04:51 < giasone> make[1]: *** [sort.install] Error 127 04:51 < giasone> make: *** [build] Error 1 04:52 <+iant> giasone: are you really really really sure that $GOBIN is in PATH? 04:52 < giasone> Because now in my $PATH have $HOME/bin but i don't have that folder 04:52 < giasone> i have to create an empty one? 04:52 < giasone> yes 04:52 <+iant> did you set the GOBIN environment variable? 04:52 < giasone> i'm pretty sure 04:52 < anticw> ls $GOBIN/. 04:53 < giasone> macbook-di-giasone:src giasone$ env | grep '^GO' 04:53 < giasone> GOBIN=/Users/giasone/svn/go/bin 04:53 < giasone> GOARCH=386 04:53 < giasone> GOROOT=/Users/giasone/svn/go 04:53 < giasone> GOOS=darwin 04:53 <+iant> what is PATH? 04:53 < anticw> export PATH=$PATH:/Users/giasone/svn/go/bin 04:53 < giasone> macbook-di-giasone:src giasone$ echo $PATH 04:54 < giasone> - /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/PalmSDK/Current/bin:/usr/texbin:/usr/X11/bin:/usr/local/git/bin:/Users/giasone/Android-SDK-Mac_x86-1.5_r1/tools:/User/giasone/svn/go/bin:/Users/giasone/bin 04:54 < anticw> typo 04:54 <+iant> it should be /Users 04:54 < giasone> damn 04:55 < anticw> iant: i should time this ... i guess i will, but i want to pull apart a large number of udp frames ... the dns code using offsets + reflection for this 04:55 < giasone> 8( 04:55 < anticw> iant: is that reasonable where i care about performance? i seems like it should be slow 04:56 <+iant> it's certainly reasonable to find out how slow it is 04:58 -!- rbohn [n=chatzill@d103.digis.net] has quit ["see you later"] 04:59 < anticw> iant: it seems we could even hoist that code the resolver uses into it's own package 05:01 < giasone> seems like it's works 05:01 < giasone> not finish to compile yet 05:01 < anticw> well, better hope it fails or else you have to marry iant 05:01 < giasone> i know 05:01 < giasone> :-( 05:02 < giasone> --- cd ../test 05:02 < giasone> 1 known bugs; 0 unexpected bugs 05:02 < giasone> i have to do ... 05:03 -!- triplez [n=triplez@bb116-14-64-38.singnet.com.sg] has quit [] 05:04 < giasone> it works for sure i try to compile something and works 05:04 < giasone> thank to all and apologize for the really stupid error 05:05 -!- robot12 [n=root@robot12.kgts.ru] has joined #go-nuts 05:05 < giasone> probably because here in italy are the 6 am and i need to sleep 05:05 < giasone> in 2 hours i have to go to the office 05:05 -!- eno_ [n=eno@adsl-70-137-159-64.dsl.snfc21.sbcglobal.net] has joined #go-nuts 05:06 -!- triplez [n=triplez@bb116-14-64-38.singnet.com.sg] has joined #go-nuts 05:07 < giasone> thanks a lot iant 05:08 -!- iwikiwi [n=iwikiwi@202.3.77.160] has joined #go-nuts 05:13 < goplexian> hmm so go files require a newline at end of file now, is that somehow due to the ; change? 05:14 < anticw> it was always required but not enforced before 05:15 < goplexian> gotcha, yeah my file wouldn't compile and said `missing newline at end of file` as the error message, was kinda ??? for a second there 05:17 -!- eno [n=eno@nslu2-linux/eno] has quit [Read error: 110 (Connection timed out)] 05:21 -!- giasone [n=giasone@adsl-ull-132-23.49-151.net24.it] has quit [] 05:28 -!- keeto [n=keeto@120.28.73.183] has joined #go-nuts 05:30 -!- hmmmm [n=asdf@pool-72-79-133-142.sctnpa.east.verizon.net] has quit [Read error: 104 (Connection reset by peer)] 05:30 -!- hmmmmm [n=asdf@pool-72-79-133-142.sctnpa.east.verizon.net] has joined #go-nuts 05:35 -!- aaront [n=aaront@unaffiliated/aaront] has quit ["And that's all he wrote..."] 05:36 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 05:38 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 05:40 < skelterjohn> not sure what "required but not enforced" means 05:41 < goplexian> how would you make a multidimensional slice? []int[]int ? I cant find any examples 05:43 < goplexian> or more like []slice :) 05:45 < goplexian> or [[]int]int 05:45 -!- iammisc [n=travfar@pool-173-51-244-73.lsanca.dsl-w.verizon.net] has joined #go-nuts 05:46 -!- keeto [n=keeto@120.28.73.183] has quit ["http://keetology.com/"] 05:46 <+iant> goplexian: [][]int 05:47 < iammisc> When was Go first released? 05:47 < goplexian> iant, ah, sensible, thx 05:49 < goplexian> hmm no examples of [][] in effective_go 05:49 < drhodes> @eval [2][2]int{[2]int{1,2}, [2]int{3,4}}[0:1][0][0:1] 05:49 < rndbot> [1] 05:50 <+iant> iammisc: Go was released in November 05:50 < goplexian> drhodes, thx :) 05:51 < drhodes> goplexian: there's a #go-run channel where the bot is also available to try stuff out 05:52 < goplexian> cool 05:54 -!- decriptor [n=decripto@174-27-183-117.slkc.qwest.net] has quit [Read error: 60 (Operation timed out)] 05:54 < goplexian> I dont quite understand [0:1][0][0:1] particularly the [0] 05:59 -!- jA_cOp_ [n=yakobu@unaffiliated/ja-cop/x-9478493] has joined #go-nuts 06:01 -!- jA_cOp__ [n=yakobu@p7007-ipngn100106osakakita.osaka.ocn.ne.jp] has joined #go-nuts 06:06 -!- codedread [i=180dd699@gateway/web/freenode/x-cqiejycioonklyxe] has joined #go-nuts 06:06 -!- codedread [i=180dd699@gateway/web/freenode/x-cqiejycioonklyxe] has left #go-nuts [] 06:07 -!- slashus2_ [n=slashus2@74-137-26-8.dhcp.insightbb.com] has joined #go-nuts 06:07 -!- dizm [n=dizm@121.98.168.127] has quit ["Leaving."] 06:17 -!- jA_cOp [n=yakobu@unaffiliated/ja-cop/x-9478493] has quit [Read error: 110 (Connection timed out)] 06:17 -!- kcj1993 [n=kcj1993@ip-118-90-104-120.xdsl.xnet.co.nz] has joined #go-nuts 06:17 < kcj1993> is go a good first language? 06:18 < anticw> not really 06:18 < iammisc> kcj1993: I would say no only because it doesn't have the resources of other languages 06:18 < skelterjohn> not because of itself 06:18 < iammisc> Like sample code, tutorials, etc. 06:18 < kcj1993> ok 06:18 < skelterjohn> just because it is immature 06:18 < skelterjohn> it will be a good first language eventually 06:18 < anticw> no, it has concepts which beginners might be best to avoid 06:18 < kcj1993> ok 06:18 < skelterjohn> i began with C *shrug* 06:18 < anticw> for it's 'age' it has excellent documentation already actually 06:19 < kcj1993> back to C++ 06:19 -!- jA_cOp_ [n=yakobu@unaffiliated/ja-cop/x-9478493] has quit [Connection timed out] 06:19 < anticw> and it does have quite a bit of code and examples and some reasonable support vs some other stuff 06:19 < iammisc> anticw: incomparable to the amount of free c, c++, java, and python code available 06:20 < skelterjohn> C++ isn't really a good first language either, but not because it's immature 06:20 < anticw> iammisc: sure, and how much of that is decent? 06:20 < anticw> what is the S/N ? 06:20 < iammisc> skelterjohn: I never said c++ was a good first language 06:20 < iammisc> anticw: a lot of code is quite decent 06:20 < skelterjohn> "kcj1993: back to C++" 06:21 < anticw> iammisc: and a lot isn't ... and it's not easy for someone w/o experience to tell the differnce 06:21 < iammisc> anticw: if you type c++ game tutorial, or python web server tutorial, you'll find a lot more code than if you typed the equivalent for go 06:22 < anticw> iammisc: that's orthogonal to whether go is a good first language 06:22 < iammisc> you asked for decent code, I'm giving you decent code 06:22 < anticw> no, you just claimed there is a lot out there 06:22 -!- scarabx_ [n=scarabx@c-24-147-239-120.hsd1.ma.comcast.net] has quit [Remote closed the connection] 06:23 < skelterjohn> the argument over whether or not it is "decent" is uninteresting 06:24 < gnuvince> Has there been a recent change in the language syntax? I did an hg fetch earlier tonight and now I can't compile any of my code, I get syntax errors everywhere 06:24 < anticw> yes 06:24 < anticw> gofmt can fix for you 06:24 < skelterjohn> do "gofmt -w thecode" 06:26 < gnuvince> What changed? 06:27 < gnuvince> Oh wait 06:27 < gnuvince> I'm dumb 06:27 < gnuvince> I put parens in a for loop 06:27 < anticw> the big change is in the way semi-colons are no longer lexically required, but you can still get away with them 06:28 -!- kcj1993 [n=kcj1993@ip-118-90-104-120.xdsl.xnet.co.nz] has left #go-nuts ["Leaving"] 06:28 < iammisc> more than go, more easily available, and a lot is understandable. This shouldn't be a point of argument 06:29 < anticw> iammisc: none of those make something a good first language necessairly 06:29 < iammisc> whatever, I'm not going to start an argument 06:30 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has quit [Read error: 110 (Connection timed out)] 06:38 -!- iammisc [n=travfar@pool-173-51-244-73.lsanca.dsl-w.verizon.net] has left #go-nuts [] 06:40 -!- JSharpe2 [n=jamie@5ad93950.bb.sky.com] has joined #go-nuts 06:55 -!- JSharpe [n=jamie@5ad673c3.bb.sky.com] has quit [Read error: 110 (Connection timed out)] 06:56 -!- b4|hraban [n=b4@a83-163-41-120.adsl.xs4all.nl] has joined #go-nuts 07:04 -!- Sungem [i=ss@220-136-225-121.dynamic.hinet.net] has joined #go-nuts 07:07 -!- GoNoGo_ [n=penalva@pc115.pallas.cines.fr] has joined #go-nuts 07:08 -!- Sungem [i=ss@220-136-225-121.dynamic.hinet.net] has quit [Client Quit] 07:10 < b4|hraban> Hello, I have a question regarding 5g. My arch is reported by uname as armv5tel but it seems that it is not entirely supported. 07:11 < b4|hraban> I pretty much always get "illegal instruction" errors (hello world does that, for example), only a few of the tests succeed. it's a QNAP TS-110 07:12 < b4|hraban> furthermore, I have no idea of how to properly debug this... gdb says that there are no debugging symbols in the binary and I do not know how to see which instruction caused the exception 07:12 < b4|hraban> to be very honestl; I am not even sure that I built go right.. I just executed "./all-arm.bash" in the /src/ dir, it seemed the most logical choice, but documentation here is lacking. 07:13 <+iant> b4|hraban: kaib is the guy working on ARM, but he is not here right now 07:13 < b4|hraban> ah, you must be the ian from the mailing lists and so forth :) 07:13 <+iant> yes 07:13 < b4|hraban> read your posts, great work ^^ thanks. 07:13 <+iant> you may do better sending e-mail to the list about this 07:13 <+iant> thanks 07:14 < b4|hraban> are there any clues you could give me to help me compose a more meaningful bug report / question? 07:14 < b4|hraban> like... 5g's equivalent to GCC's -g switch? 07:14 < b4|hraban> (or something similar?) 07:14 -!- General13372 [n=support@71-84-247-187.dhcp.gldl.ca.charter.com] has joined #go-nuts 07:14 <+iant> unfortunately the gc compilers don't generate useful debug info at the moment 07:15 < b4|hraban> fair enough 07:15 <+iant> there is an experimental debugger, ogle, but I don't know that it has any ARM support 07:15 < b4|hraban> ouch 07:15 <+iant> you should at least be able to disassemble using objdump 07:15 < b4|hraban> I tried that, indeed, it worked nicely, but I have no idea what the point of entry is 07:16 <+iant> you can get that from readelf -h, though I don't know if it will help 07:16 < b4|hraban> ah, thanks 07:16 <+iant> you don't get a PC or backtrace from the crash, I guess 07:16 < b4|hraban> only an address 07:16 < b4|hraban> (in GDB) 07:16 < b4|hraban> but that address in objdump does not seem illegal at all... 07:17 < b4|hraban> *the instruction at that address 07:17 <+iant> it's not an instruction only supported on newer architectures or anything like that? 07:17 <+iant> and it's correctly aligned? 07:17 < b4|hraban> there are some "invalid instruction" parts, but they seem more like data 07:17 < b4|hraban> correctly aligned: well, it's mod 4, not sure what you mean by correctly aligned, though..? 07:17 <+iant> yes, mod 4 07:18 <+iant> that's about all I can think of off the top of my head 07:18 < b4|hraban> not supported: iirc it was a very basic instruction, but I will have a look once 5g is done compiling (hg pull -u) 07:18 -!- General1337 [n=support@71-84-247-187.dhcp.gldl.ca.charter.com] has quit [Read error: 60 (Operation timed out)] 07:18 < b4|hraban> thanks for the help. I will try the mailing list. 07:22 < exitstate> hmm 07:22 < exitstate> dir.IsRegular does not apply to files as well does it? 07:23 < exitstate> Just trying to stat a file to make sure it does not exist. 07:34 -!- chickamade [n=chickama@123.16.73.41] has joined #go-nuts 07:47 -!- path[l]_ [i=UPP@120.138.102.34] has joined #go-nuts 07:52 < exitstate> This NewFile thing is a tad bit confusing 07:53 -!- path[l]__ [i=UPP@120.138.102.34] has joined #go-nuts 07:53 -!- path[l] [n=path@115.240.94.55] has quit [Read error: 60 (Operation timed out)] 08:01 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit [] 08:04 -!- AmirMohammad [n=amir@unaffiliated/gluegadget] has joined #go-nuts 08:05 -!- melba [n=blee@unaffiliated/lazz0] has joined #go-nuts 08:13 -!- path[l]_ [i=UPP@120.138.102.34] has quit [Read error: 110 (Connection timed out)] 08:19 -!- Meowtimer [n=meowtime@vpn-ce242015.extern.uni-duisburg-essen.de] has joined #go-nuts 08:21 -!- iwikiwi [n=iwikiwi@202.3.77.160] has quit ["Computer has gone to sleep"] 08:22 < b4|hraban> alrighty, I did some more digging and it seems you were right about the unsupported instruction :s 08:22 < b4|hraban> what a shame. 08:24 -!- path[l] [i=UPP@120.138.102.34] has quit [] 08:25 -!- keeto [n=keeto@120.28.73.183] has joined #go-nuts 08:26 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has joined #go-nuts 08:28 -!- melba [n=blee@unaffiliated/lazz0] has quit [Read error: 54 (Connection reset by peer)] 08:30 -!- hmmmmm [n=asdf@pool-72-79-133-142.sctnpa.east.verizon.net] has quit ["Leaving"] 08:31 -!- Meowtimer [n=meowtime@vpn-ce242015.extern.uni-duisburg-essen.de] has quit [Remote closed the connection] 08:37 -!- Guest80446 [i=fusion@193.104.228.25] has quit [Remote closed the connection] 08:39 -!- Meowtimer [n=meowtime@vpn-ce242015.extern.uni-duisburg-essen.de] has joined #go-nuts 08:39 -!- Guest80446 [i=fusion@193.104.228.25] has joined #go-nuts 08:40 -!- Meowtimer [n=meowtime@vpn-ce242015.extern.uni-duisburg-essen.de] has quit [Client Quit] 08:41 -!- scriptdevil [n=scriptde@122.174.91.7] has joined #go-nuts 08:42 -!- p0g0__ [n=pogo@unaffiliated/p0g0] has quit [Read error: 60 (Operation timed out)] 08:53 -!- p0g0__ [n=pogo@unaffiliated/p0g0] has joined #go-nuts 08:55 -!- scriptdevil [n=scriptde@122.174.91.7] has quit ["leaving"] 08:56 -!- keeto [n=keeto@120.28.73.183] has quit ["http://keetology.com/"] 09:10 -!- iwikiwi [n=iwikiwi@202.3.77.160] has joined #go-nuts 09:14 -!- GeoBSD [n=geocalc@lns-bzn-59-82-252-173-194.adsl.proxad.net] has joined #go-nuts 09:14 -!- skelterjohn [n=jasmuth@c-76-99-92-193.hsd1.nj.comcast.net] has quit [] 09:14 -!- ShadowIce [i=shadowic@unaffiliated/shadowice-x841044] has joined #go-nuts 09:30 -!- lux` [n=lux@151.95.189.174] has joined #go-nuts 09:30 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has quit [] 09:31 -!- Sungem [i=ss@118-160-174-149.dynamic.hinet.net] has joined #go-nuts 09:32 -!- carllerche [n=carllerc@c-69-181-129-204.hsd1.ca.comcast.net] has quit [] 09:37 -!- lotrpy [n=lotrpy@202.38.97.230] has joined #go-nuts 09:38 -!- trickie [n=trickie@94.100.112.225] has joined #go-nuts 09:43 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #go-nuts 09:48 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 09:49 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 09:49 -!- carllerche [n=carllerc@c-69-181-129-204.hsd1.ca.comcast.net] has joined #go-nuts 09:49 -!- elmar [n=elmar@dslb-188-097-000-035.pools.arcor-ip.net] has joined #go-nuts 09:57 -!- djm [n=djm@paludis/slacker/djm] has quit [Remote closed the connection] 09:57 -!- djm [n=djm@paludis/slacker/djm] has joined #go-nuts 09:58 -!- drhodes [n=none@209-20-72-61.slicehost.net] has quit [Remote closed the connection] 09:58 -!- drhodes [n=none@209-20-72-61.slicehost.net] has joined #go-nuts 09:58 -!- oal [n=olav@5.79-160-122.customer.lyse.net] has joined #go-nuts 10:01 -!- iant [n=iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Read error: 54 (Connection reset by peer)] 10:02 -!- iant [n=iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts 10:02 -!- mode/#go-nuts [+v iant] by ChanServ 10:03 -!- lux` [n=lux@151.95.189.174] has quit ["Sto andando via"] 10:03 -!- lux` [n=lux@151.95.189.174] has joined #go-nuts 10:05 -!- iant [n=iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Read error: 104 (Connection reset by peer)] 10:06 -!- iant [n=iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts 10:06 -!- mode/#go-nuts [+v iant] by ChanServ 10:08 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 10:08 -!- triplez [n=triplez@bb116-14-64-38.singnet.com.sg] has quit [] 10:10 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 10:23 -!- Sungem [i=ss@118-160-174-149.dynamic.hinet.net] has quit [Client Quit] 10:24 -!- tomestla [n=tom@87.100.115.221] has joined #go-nuts 10:28 -!- carllerche [n=carllerc@c-69-181-129-204.hsd1.ca.comcast.net] has quit [] 10:36 -!- Sungem [i=ss@118-160-163-74.dynamic.hinet.net] has joined #go-nuts 10:37 -!- afurlan [n=afurlan@scorpion.mps.com.br] has joined #go-nuts 10:38 -!- giasone [n=giasone@adsl-ull-219-39.49-151.net24.it] has joined #go-nuts 10:38 -!- giasone [n=giasone@adsl-ull-219-39.49-151.net24.it] has left #go-nuts [] 10:39 -!- nanoo [n=nano@95-89-198-45-dynip.superkabel.de] has joined #go-nuts 10:41 -!- pvandusen [n=pdusen@crob4-55.flint.umich.edu] has joined #go-nuts 10:44 -!- chickamade [n=chickama@123.16.73.41] has quit ["Leaving"] 10:44 -!- plainhao [n=plainhao@mail.xbiotica.com] has quit [] 10:46 -!- kanru [n=kanru@61-30-10-70.static.tfn.net.tw] has quit ["WeeChat 0.3.1-dev"] 10:48 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 10:49 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 10:51 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has joined #go-nuts 10:53 -!- tomestla1 [n=tom@87.100.115.221] has joined #go-nuts 10:53 -!- tomestla [n=tom@87.100.115.221] has quit ["Leaving."] 10:58 -!- pvanduse [n=pdusen@crob4-55.flint.umich.edu] has quit [Read error: 110 (Connection timed out)] 11:00 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has quit [Remote closed the connection] 11:01 -!- rakd [n=rakd@219.117.252.7.static.zoot.jp] has joined #go-nuts 11:06 -!- tor5_ [n=tor@h38n1fls305o968.telia.com] has joined #go-nuts 11:06 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has quit [Read error: 104 (Connection reset by peer)] 11:10 -!- Raziel2p [n=Raziel2p@ti0032a380-dhcp0316.bb.online.no] has quit ["Leaving"] 11:11 -!- john6 [n=john6@210.107.195.141] has quit ["Leaving"] 11:17 -!- iwikiwi [n=iwikiwi@202.3.77.160] has quit ["I ascend to reality!"] 11:18 -!- chickamade [n=chickama@123.16.73.41] has joined #go-nuts 11:24 -!- tumdum [n=tumdum@unaffiliated/tumdum] has joined #go-nuts 11:24 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 11:25 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 11:29 -!- lotrpy [n=lotrpy@202.38.97.230] has quit [] 11:31 -!- nanoo [n=nano@95-89-198-45-dynip.superkabel.de] has quit ["Leaving"] 11:50 -!- path[l] [n=path@59.162.86.164] has joined #go-nuts 11:56 -!- Oejet [n=s022018@glint10.gbar.dtu.dk] has joined #go-nuts 11:57 -!- path[l] [n=path@59.162.86.164] has quit [] 11:57 -!- lux` [n=lux@151.95.189.174] has quit [Read error: 54 (Connection reset by peer)] 11:58 -!- lux` [n=lux@151.95.189.174] has joined #go-nuts 11:58 -!- chickamade [n=chickama@123.16.73.41] has quit ["Leaving"] 12:00 -!- ekidd [n=ekidd@72.95.94.171] has joined #go-nuts 12:06 -!- murodes1 [n=James@203-206-70-192.dyn.iinet.net.au] has joined #go-nuts 12:15 -!- murodese [n=James@203-206-70-192.dyn.iinet.net.au] has quit [Read error: 60 (Operation timed out)] 12:20 -!- snearch [n=olaf@92.225.50.115] has joined #go-nuts 12:20 -!- plexdev [n=plexdev@arthur.espians.com] has quit [Read error: 110 (Connection timed out)] 12:23 -!- path[l] [n=path@122.182.0.38] has joined #go-nuts 12:24 -!- cmarcelo [n=cmarcelo@200.184.118.130] has joined #go-nuts 12:30 -!- nanoo [n=nano@95-89-198-45-dynip.superkabel.de] has joined #go-nuts 12:32 -!- Der_Kleene [n=hodel@p5B3AAD3C.dip.t-dialin.net] has joined #go-nuts 12:33 -!- Der_Kleene [n=hodel@p5B3AAD3C.dip.t-dialin.net] has quit [] 12:42 -!- [thyko] [i=c4c9daea@gateway/web/freenode/x-xlmnnesfxduasrqf] has joined #go-nuts 12:42 < [thyko]> hello 12:43 -!- quelqun_dautre [i=unautre@server0.tonbnc.fr] has joined #go-nuts 12:43 < ekidd> Programming with goroutines and channels is quite nice. But there's definitely a lot of error-handling boilerplate weighing down the code. 12:43 -!- quelqun_dautre [i=unautre@server0.tonbnc.fr] has left #go-nuts [] 12:44 < ekidd> Go feels like it's slightly higher-level than C, but much lower-level than modern C++. That's not necessarily bad, but I think it would be a very beautiful and high-level language with some kind of systematic error handling. 12:45 < ekidd> The interface system is really good, too. 12:48 -!- snearch [n=olaf@92.225.50.115] has quit ["Ex-Chat"] 12:48 -!- josemoreira [n=jgm@bl9-70-73.dsl.telepac.pt] has joined #go-nuts 12:49 < [thyko]> are there plans for a release of a win32 compiler? 12:50 -!- _scavenger_ [n=info@cc922341-b.groni1.gr.home.nl] has joined #go-nuts 12:53 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 104 (Connection reset by peer)] 12:55 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has joined #go-nuts 12:56 -!- b00m_chef [n=watr@80.187.147.44] has joined #go-nuts 13:02 -!- kanru [n=kanru@61-228-151-201.dynamic.hinet.net] has joined #go-nuts 13:03 -!- randomiser [n=james@78-105-103-158.zone3.bethere.co.uk] has joined #go-nuts 13:05 -!- plainhao [n=plainhao@mail.xbiotica.com] has joined #go-nuts 13:05 -!- _scavenger_ [n=info@cc922341-b.groni1.gr.home.nl] has left #go-nuts [] 13:06 -!- path[l] [n=path@122.182.0.38] has quit [] 13:08 < ekidd> Am I completely nuts for wanting the following program to be valid? 13:08 < ekidd> https://gist.github.com/29d8394c602fba07a06f 13:09 < ekidd> Whoops, there's an error. 13:09 < ekidd> One sec. 13:09 < [thyko]> guess that's a no ... 13:10 < ekidd> OK, fixed. 13:11 < ekidd> [thyko]: If you Google around a bit, I think there's a Cygwin port. I don't think it's hugely high priority for the Google folks right now. 13:11 < ekidd> But they're willing to take patches. 13:12 < kleinchris> yes there is a cygwin port... 13:20 -!- Netsplit kornbluth.freenode.net <-> irc.freenode.net quits: alexsuraci, mat_, KiNgMaR, zum, smcq, yiyus, Guest79191, jdp 13:21 -!- Netsplit over, joins: yiyus, smcq, KiNgMaR, alexsuraci, mat_, zum, jdp, Guest79191 13:22 < ekidd> Hmm. The GC doesn't seem to be able to clean up goroutines until they shut down, even if there are no outstanding references to them. 13:23 < ekidd> This makes it pretty awkward to write something like an Fibonacci series generator, and take the first 1000 numbers it generates, because you need to set up a second channel to shut down the infinite loop cleanly. 13:33 -!- chickamade [n=chickama@123.16.73.41] has joined #go-nuts 13:34 -!- b00m_chef [n=watr@80.187.147.44] has quit [Connection timed out] 13:36 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has quit [] 13:40 < ekidd> OK, here are three versions of an infinite goroutine: 13:40 < ekidd> https://gist.github.com/29d8394c602fba07a06f 13:42 < ekidd> It definitely looks like the GC is unable to clean up unused goroutines. So if you want to take only some of the results generated by a goroutine, you need to build some sort of shutdown protocol for each goroutine. 13:44 < chickamade> or just generate upto n then quit :p 13:44 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has quit [Read error: 104 (Connection reset by peer)] 13:46 < chickamade> ekidd: what's wrong w the first version anyway 13:46 < ekidd> chickamade: Basically, it leaves a single stale goroutine that can't be cleaned up until the program exits. 13:47 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 13:47 -!- scm [i=justme@d019037.adsl.hansenet.de] has quit [Read error: 60 (Operation timed out)] 13:48 < ekidd> chickamade: This is no problem in a short program with one goroutine. But in the second case, the exact same approach ate about 2GB of core before I killed the process. 13:48 < ekidd> chickamade: In general, an 'upto 13:49 < ekidd> 'upto' approach won't work, because I may not necessarily know how many items I want to consume from a stream. 13:49 -!- scm [i=justme@c133223.adsl.hansenet.de] has joined #go-nuts 13:50 -!- path[l] [n=path@122.182.0.38] has joined #go-nuts 13:54 -!- ekidd [n=ekidd@72.95.94.171] has quit [] 14:03 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has joined #go-nuts 14:04 -!- GoNoGo_ [n=penalva@pc115.pallas.cines.fr] has quit [Read error: 104 (Connection reset by peer)] 14:14 -!- iwikiwi [n=iwikiwi@202.3.77.128] has joined #go-nuts 14:18 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined #go-nuts 14:21 -!- cmarcelo [n=cmarcelo@enlightenment/developer/cmarcelo] has quit [Read error: 60 (Operation timed out)] 14:23 -!- ShadowIce [i=shadowic@unaffiliated/shadowice-x841044] has quit ["Leaving"] 14:24 -!- [thyko] [i=c4c9daea@gateway/web/freenode/x-xlmnnesfxduasrqf] has quit [Ping timeout: 180 seconds] 14:25 -!- ziyu4huang [n=ziyu_hua@220-133-3-82.HINET-IP.hinet.net] has joined #go-nuts 14:27 -!- ShadowIce [n=pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 14:27 -!- omar [n=omar@78.239.18.67] has joined #go-nuts 14:27 -!- omar [n=omar@78.239.18.67] has quit [SendQ exceeded] 14:28 -!- omar [n=omar@78.239.18.67] has joined #go-nuts 14:31 -!- ekidd [n=ekidd@71.169.189.158] has joined #go-nuts 14:35 -!- ekidd [n=ekidd@71.169.189.158] has quit [Client Quit] 14:36 -!- omar [n=omar@78.239.18.67] has quit ["Leaving"] 14:37 -!- gnuvince [n=vince@72.0.221.9] has quit [Read error: 60 (Operation timed out)] 14:37 -!- iant [n=iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Read error: 60 (Operation timed out)] 14:38 -!- gnuvince [n=vince@64.235.202.24] has joined #go-nuts 14:41 -!- p4p4 [n=P4p4@24.106.113.82.net.de.o2.com] has joined #go-nuts 14:43 -!- codedread [i=180dd699@gateway/web/freenode/x-ajttqmaeltshhigl] has joined #go-nuts 14:43 -!- codedread [i=180dd699@gateway/web/freenode/x-ajttqmaeltshhigl] has left #go-nuts [] 14:47 < dho> morning. 14:53 -!- vizzord [n=exn@195.49.206.202] has joined #go-nuts 14:54 -!- vigith [n=vigith@122.167.199.160] has joined #go-nuts 14:57 -!- path[l] [n=path@122.182.0.38] has quit [Read error: 54 (Connection reset by peer)] 14:57 -!- path[l] [n=path@59.162.86.164] has joined #go-nuts 14:58 -!- tumdum [n=tumdum@unaffiliated/tumdum] has quit [Read error: 60 (Operation timed out)] 15:02 -!- ekidd [n=ekidd@71.169.189.158] has joined #go-nuts 15:02 -!- rakd [n=rakd@219.117.252.7.static.zoot.jp] has quit ["See you..."] 15:03 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 15:04 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 15:06 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has quit [] 15:07 -!- jA_cOp__ [n=yakobu@p7007-ipngn100106osakakita.osaka.ocn.ne.jp] has quit ["Leaving"] 15:07 -!- lux_ [n=lux@151.95.189.174] has joined #go-nuts 15:07 -!- lux_ [n=lux@151.95.189.174] has quit [Read error: 54 (Connection reset by peer)] 15:09 -!- murodese [n=James@203-206-70-192.dyn.iinet.net.au] has joined #go-nuts 15:09 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has joined #go-nuts 15:16 -!- murodes1 [n=James@203-206-70-192.dyn.iinet.net.au] has quit [Read error: 60 (Operation timed out)] 15:16 < josemoreira> (sorry for spam) any1 with some strong html/css skills that would like to join me on a commercial project development ? mailme at josemoreira@maybeitworks.com for details :) 15:16 < poucet> josemoreira: Wrong channel. 15:16 < josemoreira> sorry wc 15:18 -!- tumdum [n=tumdum@unaffiliated/tumdum] has joined #go-nuts 15:20 -!- nanoo [n=nano@95-89-198-45-dynip.superkabel.de] has quit ["Leaving"] 15:22 < vegai> "Complex features won't make languages more complex, they make them 15:22 < vegai> simpler." 15:22 < vegai> --qtvali 15:22 < vegai> hmm 15:23 < dho> i found that amusing. 15:24 -!- kanru [n=kanru@61-228-151-201.dynamic.hinet.net] has quit [Read error: 60 (Operation timed out)] 15:25 < dagle> Well, it depends on what you mean. The code or the idea. 15:25 < ekidd> vegai: I rather doubt it, unless perhaps you're speaking of implementation complexity behind a simple, well-chosen feature. 15:26 < dho> His posts are almost always with thoughts of the end-user developer in mind. 15:26 < dho> complex features make it easier to do complex tasks for someone using the language is what he means there. 15:27 < ekidd> dho: The usual problem is that complex features interact in poorly-understood ways, and nothing composes cleanly. 15:27 < josemoreira> complex features mas you work simple, after some complex thoughts learning them 15:27 < dho> ekidd: As a result of their complexity noless. They become poorly specified and are thus never well understood. 15:27 < josemoreira> ... make ... 15:28 -!- iwikiwi [n=iwikiwi@202.3.77.128] has quit ["I ascend to reality!"] 15:28 < ekidd> dho: Witness, for example, any advanced book on generic programming in C++. Every chapter starts with a simple, clever idea, but you can't actually get it to work without 40 pages of "Yes, but what about this corner case?" 15:29 < dho> heh. 15:29 < dho> Also, most of his argument was for `complex features' that could be added as a result of packages written in the language. 15:29 < dho> Ignoring the fact that most of his examples can already be implemented on top of or as a result of existing packages. 15:30 < dho> This is the difference between someone who knows how to program and someone who knows how to program in language X. 15:30 -!- rhatta [n=rhatta@TE0039lan1.rev.em-net.ne.jp] has quit [] 15:30 < ekidd> dho: Now, sometimes a conceptually simple feature can be a real beast to implement. 15:31 < dho> The former is about understanding how problems are solved. You have to understand current data structures and algorithms, your problem, and make proper pairings. The latter is `oh, I need arraylist. hm, there's nothing called arraylist in go, i must need to make one' 15:31 < ekidd> A really good garbage collector, for example, is hard to implement but simple to use. 15:31 < dho> The former would say `Hm. Maps. Lists. Vectors. Something exists here to do this for me already.' 15:31 < dho> indeed 15:32 < ekidd> Similarly, closures are a mathematically simple idea that make 10,000 other things simple. But implementing them well does require a certain amount of work... 15:33 < ekidd> A well-designed language should contain a small number of simple, powerful tools that interact very cleanly and which compose well. 15:33 < dho> here here. 15:34 < dho> or is it Hear, hear. 15:34 * dho shrugs and decides not to care. 15:34 < ekidd> It's OK if some of them are hard to implement. :-) 15:34 -!- p4p4 [n=P4p4@24.106.113.82.net.de.o2.com] has quit [Remote closed the connection] 15:35 < ekidd> Go is _so_ close to being a really expressive, powerful, high-level language with high performance and good string handling. 15:35 < chickamade> what's missing? 15:36 < dho> stability :) 15:37 < ekidd> If I could fix only three things, they would be: (a) some way to handle errors without having to spend two lines out of every three messing with 'err' variables, (b) just enough support for generics to allow me to write parameterized functions, and (c) garbage collection of goroutines that are blocked on channels that nobody's listening to. 15:37 < chickamade> hmm, (c) is not really possible though 15:38 < ekidd> Grr. (b) just enough support for generics to allow me to write higher-order functions. Implementing generics entirely in the type-checker would be fine, if support for primitive types was somehow included. 15:38 < chickamade> idk, maybe 15:39 < chickamade> yeah higher-order functions are nice 15:39 < ekidd> chickamade: Why is GCing unneeded goroutines impossible? 15:39 < vegai> how do you detect they're unneeded? 15:40 < ekidd> Fixing (b) is on the roadmap. Fixing (a) is supposedly a goal, but I don't think anybody's actually planning to work on it soon. 15:41 -!- skelterjohn [n=jasmuth@c-76-99-92-193.hsd1.nj.comcast.net] has joined #go-nuts 15:41 < ekidd> vegai: Well, if a goroutine is blocked writing on channels c_1...c_n, and you can prove that no external reference to those channels exists, then the goroutine can never wake up. 15:42 < ekidd> vegai: Or to put if differently, don't include blocked goroutines in the root set for your garbage collector. If the GC can't find a way to reach the blocked goroutines, shut them down. 15:43 < ekidd> Solving (c) would make the following example much nicer: 15:43 < ekidd> https://gist.github.com/29d8394c602fba07a06f 15:44 < ekidd> The first two versions of the code are clean, but they leak uncollectable goroutines. The third version is much uglier, but it works. 15:45 < chickamade> don't they get shut down when main() exit? 15:45 < vegai> right 15:45 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 104 (Connection reset by peer)] 15:45 < chickamade> main holds the reference to the channels, it has got to exit before the GC declare the channel unreachable 15:46 < ekidd> This has real-world implications, too: Let's say you have a goroutine A which relies on another goroutine B, and B generates a series of complex results for A. But an error occurs in A, rendering B useless. So A needs to somehow shut down B, which can only be done using some kind a 'quit' channel threaded throughout every channel operation in B. 15:46 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 15:47 < chickamade> ekidd: I think the scheduler+GC already does what you want, (but not when you think it would happen) 15:48 < ekidd> chickamade: In the second and third examples, I generate about a million goroutines and then ignore them. On each pass through the 'for' loop in 'main', it becomes possible to collect the old value of 'series', and hence one of the goroutines. 15:48 < ekidd> chickamade: But the runtime doesn't do this, so the second example soon takes up >2GB of core. 15:48 < ekidd> chickamade: The third example is well-behaved. 15:49 < ekidd> chickamade: Well, it's certainly not collecting unreachable goroutines in the second example. If it doesn't collect them once they're unreachable, when would it collect them? 15:50 < chickamade> ic 15:50 < ekidd> chickamade: Yeah, if only Go could collect the dead goroutines, I could write some really awesome libraries. 15:50 < chickamade> I suppose they are improving the GC 15:50 < ekidd> It's _so_ close to letting me do some really sweet, useful stuff. 15:51 < chickamade> but the dead goroutines are shut down when main quit, correct? 15:52 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has quit [] 15:53 < ekidd> chickamade: Yeah, but that's useless in a longer-running program. 15:53 < chickamade> ekidd: perhaps this has been discussed in the mailing-list? 15:54 < chickamade> ekidd: say you spawn the goroutines not from main but from another function, do the dead ones get shut down when that function exits? 15:55 < ekidd> chickamade: It would be pretty bizarre and broken if that were the case. 15:55 < ekidd> Conceptually, there's no hierarchical connection between goroutines. 15:55 -!- path[l] [n=path@59.162.86.164] has quit [] 15:59 < chickamade> yeah I don't expect that behavior 15:59 < chickamade> but that maybe why it is hard to tell whether a channel is reachable 16:00 < chickamade> a "dead" channel is certainly reachable from the blocking coroutine 16:00 < chickamade> maybe what they are doing right now is counting root objects from main() 16:01 -!- omar [n=omar@78.239.18.67] has joined #go-nuts 16:01 -!- omar [n=omar@78.239.18.67] has quit [SendQ exceeded] 16:01 -!- omar [n=omar@78.239.18.67] has joined #go-nuts 16:01 < ekidd> chickamade: Yeah, but the blocking coroutine isn't reachable from anywhere but the channels it's blocked on. 16:02 < ekidd> chickamade: So theoretically speaking, it's the same as collecting any other loop of references. 16:02 -!- iant [n=iant@nat/google/x-lefbfzomrkicxuhh] has joined #go-nuts 16:02 -!- mode/#go-nuts [+v iant] by ChanServ 16:04 < ekidd> Hmm. I wonder how hard it would be to just patch the GC and fix this? 16:04 < chickamade> ekidd: the problem is the GC and the scheduler are separate entities, the GC can garbage collect channels, the scheduler can shut down goroutine -- but can only do so if it can prove the blocking goroutine is blocking on a non-reachable channel 16:05 < chickamade> it maybe possible for the GC to decect that 16:06 < ekidd> chickamade: That might make things slightly hairy, but it doesn't impose _that_ substantial a barrier. Obviously, in a language so heavily dependent on goroutines and channels, it's going to be necessary for the GC to know a little bit about the runtime. 16:06 < chickamade> yeah there need to be some sort of cooperation there 16:16 < ekidd> Is there some way to create goroutine-specific variables? Sort of like thread-specific variables in most OSs? 16:16 <+iant> ekidd: not currently 16:16 -!- omar [n=omar@78.239.18.67] has quit ["Leaving"] 16:17 < ekidd> Hrm. With goroutine-local variables, it would be possible to use exp.exception without threading a 'throw' function through every function I call. 16:18 <+iant> yes 16:18 < Ycros> ekidd: if only we had monads... 16:19 < ekidd> Ycros: Well, since the language is parseable via recursive descent, it would be really easy to hack primitive monads into a preprocessor. 16:20 < ekidd> Ycros: I've been idly thinking about porting some of my probability monads library in my Copious Free Time. 16:20 < ekidd> http://www.randomhacks.net/articles/2007/10/02/probability-monads-at-hac-07-ii 16:20 -!- nanoo [n=nano@95-89-198-45-dynip.superkabel.de] has joined #go-nuts 16:21 < Ycros> ekidd: 404s on the links in that post 16:21 < ekidd> Drat. The darcs server is broken. Once second. 16:25 < ekidd> Ycros: OK, the links should more-or-less work again. 16:26 < ekidd> I want to do some large scale text munging using a distributed, Erlang-like model. But Erlang isn't fast enough for serious text processing. 16:26 < ekidd> Go would get me most of the benefits of Erlang, and it would scale. 16:27 < ekidd> ...at least once it matures a bit. 16:27 < ekidd> And the text processing is much nicer, coming from a Unix/Plan 9 background. 16:27 -!- scyth [n=scyth@zeljko.eunet.rs] has quit ["."] 16:28 < ekidd> Erlang text processing actually underperforms Ruby in most benchmarks. And although I adore Ruby, it's _slow_. 16:28 -!- deso [n=deso@77-21-80-251-dynip.superkabel.de] has joined #go-nuts 16:29 < ekidd> Haskell would give me monads and my choice of 5 flavors of concurrency, but the last time I looked, the HTTP client was a depressing mess and it didn't know about ByteStrings. 16:32 < ekidd> Ycros: Go is a (theoretically) efficient systems programming language with Erlang-style concurrency. And it's because it has channels, lambdas and an easy-to-parse syntax, it's possible to graft on many simple monads using a preprocessor. 16:32 -!- clip9 [n=tj@12.81-166-62.customer.lyse.net] has quit ["leaving"] 16:32 -!- snearch [n=olaf@g225051059.adsl.alicedsl.de] has joined #go-nuts 16:33 -!- path[l] [i=UPP@120.138.102.34] has joined #go-nuts 16:33 < Ycros> ekidd: yeah. I think it'd be neat to do just that 16:33 < Guest26185> Is there a way to represent associative arrays (like maps for arbitrary types, or structs with dynamic fields) in order to build tree-like data? Did anyone write something similar? 16:34 < ekidd> Guest26185: Associative arrays are built in. 16:34 < Guest26185> you mean maps? 16:34 < Ycros> same difference 16:37 -!- Soak [n=Soak@mst45-1-82-231-239-194.fbx.proxad.net] has joined #go-nuts 16:40 -!- Venom_X [n=pjacobs@adsl-99-3-159-249.dsl.hstntx.sbcglobal.net] has joined #go-nuts 16:40 -!- amorpisseur [n=analogue@toulouse.jfg-networks.net] has quit [] 16:42 -!- clip9 [i=tj@12.81-166-62.customer.lyse.net] has joined #go-nuts 16:46 -!- Venom_X [n=pjacobs@adsl-99-3-159-249.dsl.hstntx.sbcglobal.net] has quit [Read error: 60 (Operation timed out)] 16:46 -!- Venom_X [n=pjacobs@66.54.185.131] has joined #go-nuts 16:46 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has joined #go-nuts 16:50 -!- webbpa [n=chatzill@c-69-243-169-178.hsd1.in.comcast.net] has joined #go-nuts 16:52 < webbpa> I have two lines of go p := x + 8 * y; q := 1 << p; where x and y are ints. I get a compilation error: "shift count type int". What's up? 16:53 < webbpa> invalid operation: 1 << p (shift count type int32) 16:53 < webbpa> to be exact. 16:54 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 16:54 <+iant> webbpa: the right operand of a shift operator must be be an unsigned integer 16:54 < webbpa> ah. thanks. 16:54 <+iant> webbpa: e.g., q := 1 << uint(p) should work 16:54 -!- triplez [n=triplez@cm52.sigma225.maxonline.com.sg] has joined #go-nuts 16:55 < webbpa> cool. will give it a try. 16:55 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 16:55 < webbpa> Is that the case in C? I don't recall. 16:59 -!- eno [n=eno@nslu2-linux/eno] has joined #go-nuts 17:00 -!- Oejet [n=s022018@glint10.gbar.dtu.dk] has quit ["Leaving."] 17:01 -!- tor5 [n=tor@h38n1fls305o968.telia.com] has quit [] 17:03 -!- trickie [n=trickie@94.100.112.225] has quit [Read error: 113 (No route to host)] 17:11 -!- eno_ [n=eno@adsl-70-137-159-64.dsl.snfc21.sbcglobal.net] has quit [Read error: 110 (Connection timed out)] 17:17 -!- carllerche [n=carllerc@c-69-181-129-204.hsd1.ca.comcast.net] has joined #go-nuts 17:18 < Soak> anyone have installed go on ubuntu please? 17:19 < Soak> for the "make all" I haven't the permission... 17:19 < webbpa> Have you tried "sudo make all"? 17:19 < webbpa> Can you log in as root on the machine? 17:19 -!- skelterjohn [n=jasmuth@c-76-99-92-193.hsd1.nj.comcast.net] has quit [] 17:20 < Soak> sudo make all don't run 17:20 < Soak> No how I can do that? 17:20 < Soak> I have test "root, root" for nick and pass. 17:20 < Soak> Or "root" and blank. 17:21 < Soak> That don't run. 17:21 < webbpa> Are you following the instructions at http://golang.org/doc/install.html? 17:21 -!- vizzord [n=exn@195.49.206.202] has quit [Remote closed the connection] 17:22 < Soak> $ cd $GOROOT/src 17:22 < Soak> $ make all 17:22 < Soak> It's here. 17:23 < webbpa> What is $GOROOT set to? 17:23 < Soak> 2 minutes I will reboot on Linux. =p 17:23 -!- Soak [n=Soak@mst45-1-82-231-239-194.fbx.proxad.net] has quit [] 17:24 -!- webbpa [n=chatzill@c-69-243-169-178.hsd1.in.comcast.net] has quit ["ChatZilla 0.9.86 [Firefox 3.5.6/20091215231754]"] 17:26 -!- carllerche [n=carllerc@c-69-181-129-204.hsd1.ca.comcast.net] has quit [] 17:27 -!- ekidd [n=ekidd@71.169.189.158] has quit [] 17:40 -!- chickamade [n=chickama@123.16.73.41] has quit ["Leaving"] 17:41 -!- ekidd [n=ekidd@71.169.189.158] has joined #go-nuts 17:42 -!- pvanduse [n=pdusen@crob4-55.flint.umich.edu] has joined #go-nuts 17:46 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 17:48 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 17:48 < ekidd> Hmm. It might actually be possible to GC permanently blocked goroutines without too much work... 17:53 < Ycros> that would be neat 17:56 < ekidd> Ycros: It would make it possible to work with infinite goroutines, and with nested pipelines, all without having to thread shutdown logic everywhere. 17:56 < Ycros> mmm, yeah. 17:56 < ekidd> Actually, I suspect it's very hard to write correct Go programs if goroutines blocked on unreferenced channels can't be GC'd. 17:57 < Ycros> ekidd: I'm pretty sure it's on a TODO list somewhere 17:57 < Ycros> ekidd: it's been talked about before 17:58 < ekidd> Because if you encounter an error, you need to shut down all the goroutines that you "own", but goroutines aren't first class, and shutting them down requires threading a 'quit' channel through every channel operation in each of your goroutines. 17:58 < ekidd> Ycros: Off the top of your head, do you know where? 17:58 < dho> I remember seeing it as well. 17:58 < Ycros> ekidd: in here 17:58 < ekidd> I don't think the hard part is actually the GC; it's shutting down a goroutine in Gwaiting state. 17:58 < Ycros> ekidd: but possibly also on the mailing list 17:58 -!- Ryan_ [n=ryan@cpe-98-27-166-221.neo.res.rr.com] has joined #go-nuts 17:58 < dho> I'm pretty sure it was on the ml 17:58 < ekidd> Anyway, lunch time. More later. 17:59 < dho> ekidd: why is that hard? 18:00 -!- pvandusen [n=pdusen@crob4-55.flint.umich.edu] has quit [Read error: 110 (Connection timed out)] 18:03 -!- carllerche [n=carllerc@enginey-9.border1.sfo002.pnap.net] has joined #go-nuts 18:09 -!- tav [n=tav@89.243.205.194] has quit ["Hakuna Matata"] 18:10 -!- mfoemmel [n=mfoemmel@76.8.89.6] has joined #go-nuts 18:11 < ekidd> dho: I don 18:12 < ekidd> I don't think that's actually all that hard, either. But the GC stuff looks pretty simple. 18:12 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 18:12 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has joined #go-nuts 18:13 -!- skelterjohn [n=jasmuth@nat02-nbpwireless-ext.rutgers.edu] has joined #go-nuts 18:14 < dho> ekidd: What part in particular did you think would be difficult? 18:15 < skelterjohn> morning 18:15 < dho> hey john 18:15 < ekidd> dho: I'm going to need to hack for an hour or so before I'm sure this will work. 18:15 < ekidd> dho: It's always a bit hard to modify a language runtime without a good understanding of the overall system. 18:15 < dho> ok, lemme know if you have questions 18:16 < ekidd> Will do. Thanks. 18:17 < dho> skelterjohn: see russ's comments? 18:17 < skelterjohn> i did, yes 18:18 < skelterjohn> I feel like he wants it to be more like a general building system rather than a utility to build go source 18:18 -!- Soak [n=root@mst45-1-82-231-239-194.fbx.proxad.net] has joined #go-nuts 18:18 < dho> Right; go isn't all written in go. 18:18 < Soak> Ok fine. 18:18 < skelterjohn> building in the ability to figure out how to compile C code is going to be a pain 18:18 < skelterjohn> i don't think we should do it 18:18 < Soak> I am in root and Go run. =) 18:18 < dho> skelterjohn: I don't see why 18:19 < skelterjohn> there are lots of utilities out there that do this kind of thing well 18:19 < skelterjohn> because it's complicated 18:19 -!- Ryan_ [n=ryan@cpe-98-27-166-221.neo.res.rr.com] has quit [Remote closed the connection] 18:19 < dho> what about it is complicated? 18:19 < skelterjohn> that step makes it go from a teeny project to a humungous project 18:20 < skelterjohn> we'd basically have to reimplement make or scons 18:20 < dho> I don't think it's that hard. 18:20 < skelterjohn> I think it's hard :) 18:21 < skelterjohn> in any case, the ability to run external commands is something that any builder will need 18:21 < skelterjohn> so it's reasonable to, as a first iteration, not worry about non .go files, and spin them off with an external command 18:21 < skelterjohn> and later if people really want to, add the ability to understand C 18:22 < ekidd> dho: My proposed fix for GCing blocked goroutines: Don't add goroutines in the Gwaiting state to the GC's root set until we mark one of the channels they're blocked on. For goroutines that never get added to the root set, detach them from the channels they're waiting on and simulate a call to Goexit. 18:22 < dho> If this is the utility that we want to go into the source, it needs that ability. 18:23 < ekidd> dho: If that seems horribly implausible to you, please let me know before I get deep in the weeds. :-) 18:23 < skelterjohn> ekidd: are you thinking of making a GC patch for blocked goroutines? 18:24 < skelterjohn> this is something that i've been anxious about 18:24 < skelterjohn> I proposed a way to do it nicely, on the list (semantically nicely - i have no idea how to modify the runtime to effect this change) 18:24 < ekidd> skelterjohn: If you've got a link, I'll take a look. 18:25 <+iant> ekidd: Maybe you should close the channel instead of simulating a call to Goexit 18:25 <+iant> not sure 18:25 -!- carllerche_ [n=carllerc@enginey-9.border1.sfo002.pnap.net] has joined #go-nuts 18:25 < ekidd> iant: That might work for readers, but what about writers? 18:25 < skelterjohn> it's simple: you can make a graph where goroutines are the nodes and channels that are blocked in one goroutine that have a reference in another goroutine are edges 18:26 <+iant> ekidd: a write to a closed channel should return immediately 18:26 <+iant> if I recall correctly 18:26 < skelterjohn> if you have a strongly connected component of blocked goroutines that don't include the main goroutine, they can never wake up and should be GC'd 18:26 < skelterjohn> if they include the main, panic 18:27 < ekidd> iant: But won't that cause the writing goroutine to go into an (potentially) infinite loop, supplying values to a dead channel. 18:27 <+iant> that will eventually trip the error count and crash the program 18:27 < ekidd> skelterjohn: Yeah. that's basically my approach. 18:27 < skelterjohn> ekidd: ok := ch <- val. if ok is false, the write failed. is this correct? 18:27 <+iant> so maybe that is a bad idea 18:27 < dho> iant: right, but closed(c) would still be true 18:27 < skelterjohn> but then, you can't depend on the code to do that 18:28 < dho> I'd argue if you're not checking that, you're doing it wrong anyway. 18:28 < skelterjohn> (moving across campus, brb) 18:28 < ekidd> iant: That's really too bad. I can think of a lot of nice idioms if it were possible to have potentially infinite goroutines. 18:28 -!- skelterjohn [n=jasmuth@nat02-nbpwireless-ext.rutgers.edu] has quit [] 18:28 <+iant> well, it would be nice to be able to write a generator channel and not have to worry about crashing the program when you GC it 18:28 < ekidd> iant: Exactly. 18:28 < ekidd> Infinite generators have all sorts of good uses. 18:29 < ekidd> E.g., I can generate hypothetical parses for a sentence in probability order, and the consuming routine can just stop listening when it no longer cares. 18:30 < ekidd> iant: But that really only works if we silently GC channels that can be proved to be blocked forever 18:31 <+iant> the cycle case seems hard to me, but if there is only one reference to a channel, and a goroutine is blocked on it, then you know that goroutine is dead 18:31 < ekidd> Plus, it's actually less of a semantic change, because GCing a permanently-blocked goroutine doesn't change the meaning of any programs. 18:32 < ekidd> iant: I _think_ it possible to handle cycles without too much work with a few small changes to chan.c and the GC. 18:32 <+iant> I agree that you can detect cycles but I think it's hard to know what to do about them 18:33 <+iant> I think the safest thing may be to declare the program to be deadlocked 18:33 <+iant> continuing the program seems complex--breaking part of the cycle may let it continue 18:34 < ekidd> iant: Hmm. My approach would leave reachable cycles alone, and let somebody else deal with them. 18:34 <+iant> maybe read and write channels should be handled differently 18:34 <+iant> maybe if a goroutine is blocked on read, the channel should be closed, and if it is blocked on write the goroutine should be GC'ed 18:35 <+iant> I really don't know what the best approach is 18:35 < dho> That sounds reasonable. 18:35 <+iant> that would be a way to break a cycle, perhaps--the reading goroutines would go away and then the writing goroutines would eventually be GCed 18:35 < ekidd> But if you had an unreachable (by the GC) deadlock, it would just collect the whole loop. Sure, it's a deadlock, but it would never actually be observable, because there are no live objects referring to it. 18:37 < ekidd> iant: I agree that it _might_ be worth closing channels with no possible remaining writers. But I'm not sure I fully understand the implications, because maybe somebody is doing something like: 18:37 <+iant> there are no live objects referring into the goroutines but the goroutines can refer to live objects outside them, so if you close a read channel the goroutine might go on to do something visible 18:37 < ekidd> x: = <-c # No actual writers 18:37 -!- r2p2 [n=billy@v32671.1blu.de] has joined #go-nuts 18:37 <+iant> write, if you close c, that read will return a zero value 18:37 -!- skelterjohn [n=jasmuth@lawn-net168-in.rutgers.edu] has joined #go-nuts 18:37 < skelterjohn> what'd i miss 18:37 <+iant> s/write/right/ 18:37 <+iant> channel cycles 18:37 < ekidd> c <- x # Write to the channel immediately after 18:38 -!- Ryan_ [n=ryan@cpe-98-27-166-221.neo.res.rr.com] has joined #go-nuts 18:38 -!- Ryan_ [n=ryan@cpe-98-27-166-221.neo.res.rr.com] has quit [Client Quit] 18:39 -!- b4|hraban [n=b4@a83-163-41-120.adsl.xs4all.nl] has quit [Read error: 60 (Operation timed out)] 18:39 < ekidd> Here, c is mysteriously closed, even though no goroutine ever closed it, simply because there was no current writer on the channel. 18:39 <+iant> well, there is something wrong with your program there, I think, so I'm not sure it's worth trying too hard in that case 18:40 < ekidd> iant: That may be the desirable behavior, but it seems slightly surprising to me. So for an initial implementation, I'm leaning towards silently reclaiming deadlocks that the GC can't find a way to reach, on the theory that if I didn't reclaim them, they'd just hand around forever without affecting anything. 18:40 <+iant> I agree that that seems plausible and is worth trying 18:40 -!- josemoreira [n=jgm@bl9-70-73.dsl.telepac.pt] has quit ["Leaving"] 18:41 < ekidd> iant: Yeah, but I'm not sure that broken programs would fail in the most pleasing way if I closed the channel in that example. Certainly, it's desirable to give an error when deadlocks occur. But an error about reading from a mysteriously closed channel might not be terribly useful. 18:42 -!- carllerche [n=carllerc@enginey-9.border1.sfo002.pnap.net] has quit [Read error: 110 (Connection timed out)] 18:42 -!- b4|hraban [n=b4@a83-163-41-120.adsl.xs4all.nl] has joined #go-nuts 18:42 < ekidd> Another alternative: When a deadlock is provably isolated from the rest of the program, and can never affect anything, it might be possible to detect that after the mark/sweep is done. E.g., treat deadlock detection as a semi-separate issue. 18:42 < skelterjohn> I think closing the channel is a bad idea... this is really a clean-up mechanism we're talking about here. Whether or not the cleanup happens shouldn't affect the behavior of the code, only the memory overhead. 18:43 < ekidd> skelterjohn: Yeah, I agree deadlock detection is a good thing, but it's probably easier for me to treat that as a separate issue for now. 18:43 < skelterjohn> ekidd: I think you're correct - deadlock detection doesn't need to be part of mark/sweep. 18:44 < skelterjohn> ekidd: what is the main issue, for you? I only knew about this one :) 18:45 < ekidd> skelterjohn: I'd like to port some Haskell code that relies on infinite (or very large) generators, and I want to be able to just take the output I want and then forget about the goroutine. 18:45 -!- Soak [n=root@mst45-1-82-231-239-194.fbx.proxad.net] has quit [Remote closed the connection] 18:46 < skelterjohn> ah. yes you need deadlock detection! 18:46 < ekidd> skelterjohn: It seems like this would lead to nicely-decoupled pipelines: Generate candidates, filter them, etc., without worrying about who shuts down the generator after we find an answer (or encounter an error). 18:47 < skelterjohn> also it's very efficient to detect these deadlocks 18:47 < skelterjohn> you only ever need to run the check when a goroutine starts to block on a send/receive 18:47 -!- lux` [n=lux@151.95.189.174] has quit [Read error: 104 (Connection reset by peer)] 18:47 < skelterjohn> and then search out from that goroutine 18:47 < ekidd> skelterjohn: Well, it's not really so much about the deadlocks. It's more about goroutines blocked on channels that nobody actually cares about any more. 18:47 < skelterjohn> to see if you can find an active thread 18:48 < skelterjohn> ekidd: I understand that the deadlock issue is one possible solution for your issue, but not necessarily the only one 18:49 -!- [[sroracle]] [n=sroracle@c-98-215-178-14.hsd1.in.comcast.net] has joined #go-nuts 18:49 < ekidd> skelterjohn: Well, I think of a true deadlock as including a cycle. 18:49 < skelterjohn> ah. ok deadlock detection was the wrong choice of words 18:50 < ekidd> Whereas I don't really care about cycles (one way or the other), but about goroutines that are blocked on channels that nobody cares about anymore. 18:50 < ekidd> Exactly. 18:50 < skelterjohn> irrevocably blocked goroutine detection 18:50 < skelterjohn> bit of a mouthful 18:51 < ekidd> skelterjohn: Yeah, I'm just thinking of it as "GCing unreachable blocked goroutines". 18:52 < skelterjohn> how about just "dead goroutines" 18:52 < skelterjohn> rather than deadlocked 18:52 < skelterjohn> goroutines consigned to purgatory 18:56 < b4|hraban> pfew. iant, I do not know if you remember this, but I had a problem with 5g generating an illegal instruction yesterday. Turns out it was the GOARM env var that needed to be set to "5" before building 5g. everything works fine now :) 18:56 <+iant> oh, good 18:56 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has quit [Read error: 104 (Connection reset by peer)] 18:56 < b4|hraban> thanks for the help yesterday 18:57 < ekidd> Hmm. That's a nice, simple GC. :-) 18:57 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has joined #go-nuts 18:57 < skelterjohn> what - static memory? 18:57 < skelterjohn> is that how ARM works? 18:58 -!- tav [n=tav@89.243.205.194] has joined #go-nuts 19:00 -!- vigith [n=vigith@122.167.199.160] has quit ["www.vmaurice.com"] 19:00 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has joined #go-nuts 19:02 -!- mbarkhau [n=koloss@p54A7E1A2.dip.t-dialin.net] has joined #go-nuts 19:04 -!- nullpo [n=nullpo@221x252x46x83.ap221.ftth.ucom.ne.jp] has quit [Connection timed out] 19:09 < ekidd> dho: Is there an easy way to identify the type of a heap object from inside the GC? I'm trying to special-case 'chan' objects, and I don't seem to see any sort of type tagging on them 19:09 -!- lux` [n=lux@151.95.189.174] has joined #go-nuts 19:09 -!- lux` [n=lux@151.95.189.174] has quit [Client Quit] 19:09 -!- lux` [n=lux@151.95.189.174] has joined #go-nuts 19:10 -!- mbarkhau [n=koloss@p54A7E1A2.dip.t-dialin.net] has quit [Read error: 60 (Operation timed out)] 19:10 < ekidd> But I'm probably just being clueless here. :-) 19:10 < ekidd> If it's impossible, I may be able to find another way to do this. 19:10 <+iant> ekidd: good point, currently types are not stored in the heap 19:10 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has quit [Read error: 104 (Connection reset by peer)] 19:10 <+iant> ekidd: in the future there will likely be bitflags for heap objects indicating whether they are a pointer 19:11 <+iant> ekidd: those bitflags will be able to encode other information as well 19:11 < ekidd> iant: Hmm. So I'm going have to do some extra work to find reachable goroutines, then. 19:11 <+iant> yes, that is true 19:12 * ekidd is too used to Lisp heaps (where everything is tagged) or heaps where types can be inferred from external data. 19:12 < ekidd> This is basically a conservative mark & sweep collector with no type information, right? 19:13 -!- slashus2_ [n=slashus2@74-137-26-8.dhcp.insightbb.com] has joined #go-nuts 19:14 <+iant> that is what we have today, yes 19:14 <+iant> well, there is one bit of type information: whether the block is known to not contain a pointer 19:14 -!- General13372 [n=support@71-84-247-187.dhcp.gldl.ca.charter.com] has joined #go-nuts 19:14 <+iant> of course we do plan to rewrite the gc 19:15 < ekidd> Hmm. I'm going to need to think for a bit, then. 19:16 < b4|hraban> Hmm, I am getting quite some segmentation faults from apps in /test/ (on ARMv5). Should I bother reporting them, or is that not really necessary at this point? 19:16 <+iant> b4|hraban: I would recommend sending e-mail to kaib and asking him; I don't know what would help him 19:16 < b4|hraban> alright, I will 19:19 < dho> I'd love some arm hardware to play about with freebsd/arm 19:19 < dho> unfortunately the only thing i have at hand is a slug 19:19 < dho> and that's wrong endian :( 19:19 < ekidd> iant: Hmm. Instead of trying to identify channels and scan them for pointers to blocked goroutines, I suppose I could just look for any references of type RefStack anywhere in the heap. 19:19 -!- General1337 [n=support@71-84-247-187.dhcp.gldl.ca.charter.com] has quit [Read error: 60 (Operation timed out)] 19:20 < ekidd> Assuming everybody is actually allocating stuff from the same heap, and that the runtime doesn't keep parts of chan objects elsewhere, that would probably have the same effect. 19:21 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has joined #go-nuts 19:21 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has quit [Read error: 110 (Connection timed out)] 19:23 -!- stevenyvr [n=schan@76-10-184-108.dsl.teksavvy.com] has joined #go-nuts 19:25 -!- timmcd [n=Adium@97-117-100-106.slkc.qwest.net] has joined #go-nuts 19:25 < timmcd> anyone else working on wrapping the lua C API? 19:25 < dho> there is a port. 19:25 -!- XniX23 [n=XniX23@89-212-185-98.dynamic.dsl.t-2.net] has joined #go-nuts 19:25 < dho> http://code.google.com/p/go/issues/detail?id=121#c5 19:25 < dho> er 19:26 < dho> ffs. 19:26 < dho> http://code.google.com/p/golua/ 19:26 < dho> most exciting is that lua.PushFunction does work. 19:28 < timmcd> pushcfunction you mean? 19:28 < dho> it is the wrapper for lua_pushcfunction, yes 19:30 < timmcd> Nice 19:30 < timmcd> Man, I was hoping I'd be the first. 19:30 < timmcd> oh well ^_^ 19:30 < dho> it still has work to be done 19:30 < dho> i'm sure help would be appreciated. 19:33 -!- Xera^ [n=brit@87-194-208-246.bethere.co.uk] has joined #go-nuts 19:35 < Amaranth> golua supports callbacks into go code? 19:35 -!- exitstate [n=xorl@xorl.xen.prgmr.com] has quit ["leaving"] 19:36 < dho> Amaranth: yep 19:36 -!- exitstate [n=xorl@xorl.xen.prgmr.com] has joined #go-nuts 19:38 -!- timmcd [n=Adium@97-117-100-106.slkc.qwest.net] has left #go-nuts [] 19:38 -!- smooge [n=smooge@int.smoogespace.com] has joined #go-nuts 19:38 -!- stalled_ [n=411@unaffiliated/stalled] has quit [] 19:41 < ekidd> iant: OK, I have some vaguely plausible-looking marking code, and now I'm going to work on deallocating stacks of unreachable goroutines. 19:42 -!- mbarkhau [n=koloss@p54A7C209.dip.t-dialin.net] has joined #go-nuts 19:44 -!- rhatta [n=rhatta@TE0039lan1.rev.em-net.ne.jp] has joined #go-nuts 19:44 -!- rhatta_ [n=rhatta@TE0039lan1.rev.em-net.ne.jp] has joined #go-nuts 19:44 -!- rhatta [n=rhatta@TE0039lan1.rev.em-net.ne.jp] has quit [Read error: 54 (Connection reset by peer)] 19:51 -!- raichoo [n=raichoo@i5387D984.versanet.de] has joined #go-nuts 19:56 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit [] 19:56 < ekidd> Hrm. This would be easier if I actually understood the runtime. :-/ 19:57 < dho> what's unclear? 19:57 -!- Venom_X__ [n=pjacobs@66.54.185.131] has joined #go-nuts 19:57 -!- Venom_X [n=pjacobs@66.54.185.131] has quit [Nick collision from services.] 19:59 < ekidd> dho: I'm trying to find a safe way to mark a stack as Gmoribund from inside the GC. 20:00 < ekidd> My latest attempt just passed the test suites, so I suppose that counts for something. 20:00 < dho> ekidd: probably worth it to write a test case that exhibits the blocking issue :) 20:00 < dho> give me a moment, i'll look 20:00 -!- Fish-Work [n=Fish@194.182.65-86.rev.gaoland.net] has quit [Read error: 104 (Connection reset by peer)] 20:00 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined #go-nuts 20:01 < ekidd> dho: Well, the only really way to test this is to spawn a zillion goroutines, and have then all block on channels that nobody cares about. If it eats 2GB of core, the test fails. :-) 20:01 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 20:01 < dho> I can test that. 20:04 < ekidd> Hmm. No luck. Let's see what an explicit yield() does; maybe nobody is actually calling schedule in this example. 20:05 < ekidd> Where did I see a yield command again? 20:05 * ekidd digs through docs 20:06 < dho> you want runtime.Gosched() 20:06 < dho> :q 20:09 < ekidd> dho: Thanks. OK, it looks like I'm successfully reclaiming _some_ of the memory associated with dead goroutines, but maybe not all of it. 20:10 < dho> are you cleaning up the goroutines before killing them? 20:10 < ekidd> - With explicit shutdown over a quit channel: Memory usage does not grow. 20:10 < ekidd> - With no explicit shutdown, and no patch: Memory rapidly exceeds several GB. 20:11 < ekidd> - With no explicit shutdown, and patch: Memory slowly creeps up towards a few hundred megabytes. 20:11 < dho> make patch / test case available for review? 20:11 < ekidd> dho: I'm just changing the marks on some stacks from Gwaiting to Gmoribund, and hoping that the scheduler notices sooner or later. 20:12 < dho> I wonder if valgrind would help 20:12 < ekidd> dho: This isn't nearly ready for a real review, but I can but a copy online. 20:12 < dho> that would be fine; it's hard to envision exactly what you're working with 20:13 -!- carllerche [n=carllerc@enginey-9.border1.sfo002.pnap.net] has quit [Read error: 104 (Connection reset by peer)] 20:14 -!- carllerche [n=carllerc@enginey-9.border1.sfo002.pnap.net] has joined #go-nuts 20:14 -!- afurlan [n=afurlan@scorpion.mps.com.br] has quit [Remote closed the connection] 20:17 -!- tomestla1 [n=tom@87.100.115.221] has quit [Read error: 110 (Connection timed out)] 20:18 < ekidd> dho: Here's the very rough patch and a test program: https://gist.github.com/d7d5a20e17d2b72b37d9 20:20 < ekidd> dho: It's pretty primitive, but it should show you what I'm trying to do. 20:20 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit [] 20:21 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 20:21 < ekidd> dho: Basically, the goal is to only scan Gwaiting stacks when we actually encounter references to them, then turn them into Gmoribund stacks. 20:22 < ekidd> At a minimum, I probably also need to find all the channels associated with a Gwaiting stack and disconnect them cleanly 20:22 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 20:25 < ekidd> Frankly, I'm somewhat pleased that this buggy patch reduces memory usage by _any_ amount, and that it doesn't actually crash. That's not so bad for blindly mucking about with somebody else's GC. 20:25 < dho> heh 20:25 < skelterjohn> ekidd: kudos on taking initiative for something that can be so beneficial to gp 20:25 -!- Venom_X [n=pjacobs@66.54.185.131] has quit [Read error: 113 (No route to host)] 20:25 < skelterjohn> go 20:26 < ekidd> dho: Hmm. There's no way to find out what channels a G* is blocked on, is there? 20:26 < skelterjohn> that should be somewhere... 20:26 < dho> ekidd: your patch doesn't apply to tip 20:28 < ekidd> dho: Huh. I just updated about 30 minutes ago. Try 'patch -p1' to strip the leading "a/" junk? 20:28 < dho> i did -p4 in pkg/runtime. 20:29 < ekidd> dho: Huh. I'm working against "make 6prof (sic) architecture indepent..." 20:29 < dho> 257275eaa2c8 tip 20:30 < ekidd> Yeah, that. Huh. Maybe it got corrupted by gist or something? 20:31 < ekidd> Did you try a raw download from here? 20:31 < ekidd> https://gist.github.com/raw/d7d5a20e17d2b72b37d9/10b37242fc681e370fab621252f54f436cf4d3d9/gc_goroutine.diff 20:31 < ekidd> I'm sure there's some stupid problem on my end. Let me see if I can find it. 20:31 < dho> http://pastebin.com/m58f5954f 20:32 < dho> oh 20:32 < dho> @@ -52,8 +56,19 @@ scanblock(int32 depth, byte *b, int64 n) 20:36 < ekidd> dho: Hmm. Does your patch dislike my diffs? I just successfully applied the patch using MacOS X 'patch'. 20:37 -!- ikke [n=ikke@unaffiliated/ikkebr] has joined #go-nuts 20:38 < ekidd> dho: The patch I posted is uncorrupted and applies cleanly against 257275eaa2c8 using MacOS X patch. 20:39 -!- plainhao [n=plainhao@mail.xbiotica.com] has quit [] 20:40 < dho> using freebsds patch 20:40 < exitstate> hey on flags right, with flag.String("word"....) can I specify multiple flags. 20:40 < ekidd> dho: I can regenerate the patch using Mercurial if that would help you. Just give me a moment to get a Mercurial tree. 20:41 < dho> i think it wants a newline after the @@ 20:42 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 20:42 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 20:43 < ekidd> dho: Just delete everything between the @@ and the end of the line. 20:43 < ekidd> the second @@ 20:43 < ekidd> That's just a comment, basically, telling you what routine is affected. 20:43 -!- WalterMundt [n=waltermu@twiki/developer/EtherMage] has joined #go-nuts 20:44 < WalterMundt> Is there any builtin in go for cloning a map, or is the idiom just to use a range loop? 20:44 < ekidd> dho: Here, I'll report one sec. 20:44 < ekidd> repost. 20:46 < ekidd> dho: OK, I've cleaned this one up by hand: https://gist.github.com/raw/d7d5a20e17d2b72b37d9/cbf78161f86731d4e73389252f96aef0fdbe834c/gc_goroutine.diff 20:46 < ekidd> You can either try that, or wait until I regenerate it with Mercurial... 20:47 < dho> yep 20:47 < dho> that works fine. 20:49 <+iant> WalterMundt: there is nothing built in for cloning a map 20:49 < dho> your fib segfaults for me. 20:49 < dho> with patch 20:49 < ekidd> OK, my apologies for that. I think the real problem was some tab->space conversion on my end when I pasted it into the web form. 20:49 < dho> http://gopaste.org/view/f5W06 20:50 < WalterMundt> iant: okay, thanks for the confirmation 20:51 < ekidd> dho: Whee! Well, that's not entirely unexpected, I suppose (it's an evil patch). I can run all the test suites without problem using 8c/8l on MacOS X. 20:51 < exitstate> can I do flag.String(...) || flag.String(...); 20:51 -!- iwikiwi [n=iwikiwi@202.3.77.160] has joined #go-nuts 20:51 < exitstate> to define a var? 20:52 < dho> this is freebsd/amd64 20:52 < exitstate> liek var blah *string = flag.String(...) || flag.String(...); 20:52 < dho> let me try tests. 20:52 <+iant> exitstate: no, sorry 20:52 < dho> they all fail 20:52 < ekidd> dho: What arch? 20:52 < dho> 15:54 < dho> this is freebsd/amd64 20:52 < exitstate> iant: ah, what's the proper way to define --exit or '-x' w/out having to redfine it over twice 20:53 < dho> actually 20:53 < dho> it's only tests that make channels 20:53 <+iant> exitstate: use flag.StringVar, I think 20:53 < exitstate> ah 20:53 < ekidd> OK, so I'm probably not going to be able to fix this without reading quite a bit more code. 20:54 < exitstate> hmm 20:54 < dho> That said, I'm not sure why it would work for you and not me 20:54 < dho> well 20:54 < dho> i guess it does make a little sense why 20:55 < ekidd> You should be able to see what I'm trying to do. But since there's no way to enumerate channels, I'm basically having to rely on RefStack and hoping that I find all the live stacks. And then I'm cleaning up goroutines with a large stick. 20:56 < ekidd> dho: It _might_ be some sort of 6g/8g difference in the low-level runtime bits that triggers a bug in your case and lets me slide silently by. 20:56 -!- Sungem [i=ss@118-160-163-74.dynamic.hinet.net] has quit [Client Quit] 20:59 < dho> stacks look really wacky in that trace. 21:01 < ekidd> dho: http://gopaste.org/view/f5W06 ? That looks like a fairly normal stack, but it _does_ appear to have crashed while GCing during channel allocation. 21:02 -!- rhatta [n=rhatta@TE0039lan1.rev.em-net.ne.jp] has quit [] 21:02 -!- michel [n=chatzill@p5499CF85.dip.t-dialin.net] has joined #go-nuts 21:03 < ekidd> Hmm. It's allocating the memory block for an Hchan. 21:04 < ekidd> I _hate_ debugging garbage collector crashes. 21:04 < ekidd> Maybe if I upgrade to MacOS 10.5 (with 64-bit support), I can reproduce this on my machine... 21:05 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 104 (Connection reset by peer)] 21:05 < ekidd> Since this crashes while actually allocating the Hchan, I'm guessing that we're probably looking at some kind of heap corruption left over from a previous GC pass? 21:06 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 21:06 -!- skelterjohn [n=jasmuth@lawn-net168-in.rutgers.edu] has quit [] 21:10 -!- Alkavan [n=alkavan@87.68.244.60.adsl.012.net.il] has joined #go-nuts 21:11 -!- [[sroracle]] [n=sroracle@unaffiliated/sroracle] has quit [Read error: 104 (Connection reset by peer)] 21:15 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has joined #go-nuts 21:16 -!- [[sroracle]] [n=sroracle@c-98-215-178-14.hsd1.in.comcast.net] has joined #go-nuts 21:17 < ekidd> dho: If you think there's anything more I can do to debug this, please let me know. Otherwise, I'm going to post it to go-nuts as an argument in favor of including something like this in the next GC. 21:19 -!- Venom_X_ [n=pjacobs@66.54.185.131] has joined #go-nuts 21:19 < dho> i don't have time to look at it fully right now unfortunately. 21:19 -!- b4|hraban [n=b4@a83-163-41-120.adsl.xs4all.nl] has quit ["Leaving"] 21:20 < ekidd> dho: No problem! I personally can't think of any way to debug this short of setting up a BSD amd64 box, so I think we're done for today. 21:20 < ekidd> Thank you for all your help! 21:22 -!- iwikiwi [n=iwikiwi@202.3.77.160] has quit [Read error: 60 (Operation timed out)] 21:22 < dho> yeah i'd have to hop in gdb and spend a lot of time looking at registers and breakpoints 21:22 < dho> er 21:22 < dho> and clearly my brain is fried 21:24 -!- iwikiwi [n=iwikiwi@202.3.77.160] has joined #go-nuts 21:24 -!- michel [n=chatzill@p5499CF85.dip.t-dialin.net] has quit ["ChatZilla 0.9.86 [Firefox 3.5.6/20091201220228]"] 21:25 < ekidd> No worries. :-) 21:32 -!- raichoo [n=raichoo@i5387D984.versanet.de] has quit ["http://raichoo.blogspot.com"] 21:35 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 21:35 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 21:36 -!- iwikiwi [n=iwikiwi@202.3.77.160] has quit [Read error: 104 (Connection reset by peer)] 21:39 -!- iwikiwi [n=iwikiwi@202.3.77.160] has joined #go-nuts 21:39 -!- rillianbis [n=giles@s66-183-19-247.bc.hsia.telus.net] has joined #go-nuts 21:39 -!- Alkavan [n=alkavan@87.68.244.60.adsl.012.net.il] has quit ["Leaving"] 21:41 < rillianbis> hi all 21:41 < rillianbis> I'm just giving go a first try 21:41 < rillianbis> I'm confused about how to handle errors 21:42 < rillianbis> I'm calling data, err := ioutil.ReadFile(name) 21:42 < rillianbis> but I can't just use err as a boolean in a conditional expression like I would in C 21:43 < rillianbis> and if I don't do anything with it, it's an unused variable error 21:43 < rillianbis> what's the intended pattern there? 21:43 < dho> if err != nil { ... } 21:43 < dho> data, _ := ioutil.ReadFile(foo) 21:44 < rillianbis> aha, so err will be nil on success 21:44 < rillianbis> thanks 21:44 < dho> yes. if you want to ignore, the second idiom is fine. 21:44 < dho> _ does not assign a new variable. 21:45 < dho> _,_ = ioutil.ReadFile(foo) // stupid, but you get the drift 21:48 < rillianbis> right _ is good to know about 21:48 < rillianbis> but for now it's entertaining to be prodded about error checking :) 21:49 -!- BlackM [n=BMeph@65.103.151.24] has joined #go-nuts 21:50 -!- BMeph [n=BMeph@65.103.151.24] has quit [Nick collision from services.] 21:53 -!- snearch [n=olaf@g225051059.adsl.alicedsl.de] has quit ["Ex-Chat"] 21:55 -!- ekidd [n=ekidd@71.169.189.158] has quit [] 21:58 -!- nullpo [n=nullpo@221x252x46x83.ap221.ftth.ucom.ne.jp] has joined #go-nuts 21:59 -!- Intelliware [n=danielb@124-197-59-227.callplus.net.nz] has joined #go-nuts 22:05 -!- ephoenix [n=jellison@cpe-98-14-20-241.nyc.res.rr.com] has joined #go-nuts 22:05 -!- jmorrison [i=foobar@extropian.demon.co.uk] has joined #go-nuts 22:05 < jmorrison> hi all. are maps threadsafe in Go? Or am I going to have to hide a shared map behind a channel? 22:07 -!- adaro [n=jelmerku@ip3e83565d.speed.planet.nl] has joined #go-nuts 22:07 < WalterMundt> jmorrison: I'd guess they're not. 22:07 -!- ephoenix [n=jellison@cpe-98-14-20-241.nyc.res.rr.com] has quit [Client Quit] 22:07 -!- carllerche [n=carllerc@enginey-9.border1.sfo002.pnap.net] has quit [] 22:09 < WalterMundt> jmorrison: FWIW, currently unless you call runtime.GOMAXPROCS though, {6.8}g will multiplex all goroutines into a single OS thread. If you ever need to test something for thread-safety, be aware of that 22:10 < jmorrison> ugh, I'll have to have a write channel that takes a struct pairing key and value, and read channel pairing key and response channel 22:10 < jmorrison> that is inelegant 22:10 < dho> is locking around it inelegant as well? 22:11 < WalterMundt> well, you can always wrap it in a struct with methods for read and write, or use traditional locking 22:11 -!- jammyd [n=james@cpc7-dudl3-0-0-cust37.wolv.cable.virginmedia.com] has joined #go-nuts 22:11 < jmorrison> still somewhat inelegant (pessimistic locking serializes unrelated accesses) but I suppose it's the right way 22:12 < WalterMundt> One neat thing you can do in go is have an interface that an be implemented "locally", and then wrapped by an implementation that runs calls out to a goroutine and back over a pair of channels 22:12 -!- Intelliware [n=danielb@124-197-59-227.callplus.net.nz] has quit [Read error: 60 (Operation timed out)] 22:12 < jmorrison> at least until I can ramp up my Go-fu and port the Clojure STM 22:12 -!- ephoenix [n=jellison@cpe-98-14-20-241.nyc.res.rr.com] has joined #go-nuts 22:13 < dho> jmorrison: having operations on native types be thread safe requires some other sort of synchronization at a lower level, which is arguably less elegant. 22:13 * jammyd isn't having much luck compiling on MacOSX. The first thing that's suspicious is that make isn't in my path (and no Documents mention this as something to fix firsthand). Adding /Developer/usr/bin to my path solves that, but I get header issues, claiming inttypes.h is missing. Much googling has shed no light on this -- any thoughts here? 22:14 -!- ephoenix [n=jellison@cpe-98-14-20-241.nyc.res.rr.com] has quit [Client Quit] 22:14 < WalterMundt> jmorrison: usually installing Xcode will do some magic so /Developer bin paths are in your PATH by default 22:14 -!- aho [n=nya@f051020200.adsl.alicedsl.de] has joined #go-nuts 22:15 < jammyd> Curious -- I thought /Developer itself was created by the XCode install (which I've already done). Can't think what I'm missing here 22:15 < WalterMundt> it is 22:15 -!- lux` [n=lux@151.95.189.174] has quit [Remote closed the connection] 22:16 < WalterMundt> I ran into issues with the path myself when I restored my machine from a backup 22:16 < jammyd> ah-ha 22:16 < WalterMundt> had to redo the Xcode install to fix things 22:16 < jammyd> that could be it 22:16 < jmorrison> dho, it can be done via CAS reference variables and "persistent" data structures in the Clojure style, although Go doesn't yet support CAS 22:16 < jammyd> i restored from time machine a while back 22:16 < jammyd> WalterMundt: Thanks, I'll give that a go 22:16 < WalterMundt> good luck 22:16 -!- ephoenix [n=jellison@cpe-98-14-20-241.nyc.res.rr.com] has joined #go-nuts 22:17 -!- StDan [n=danielb@124-197-59-227.callplus.net.nz] has quit [Connection timed out] 22:17 < WalterMundt> jmorrison: if it helps, one of the packages has a read/write lock primitive 22:17 < WalterMundt> and I can't say for sure but I'd guess go's map can handle concurrent reads 22:17 < jmorrison> WalterMundt, yes, I see it, and I'll use it 22:18 < dho> WalterMundt: I'm sure it can. a value either exists in a map or it does not. 22:18 < jmorrison> most anything can handle concurrent reads, but only a snapshot approach can handle reads concurrent with writes 22:18 < dho> or any other synchronization mechanism. 22:19 < jmorrison> no those block readers during the wite 22:20 < dho> the approach is to let them get the old value or no value back? 22:20 < jmorrison> for a nonblocking approach, the old data has to hang around, and the new data has to be derived from it 22:20 < dho> i can see the allure of that, but i can also imagine situations where it's also less desirable. 22:21 < jmorrison> Clojure's approach is basically to create a new root and duplicate only the changed parts of the map, and you can do things like compare-and-swap the new version into a reference 22:21 < jmorrison> readers see a snapshot, writers can take their time 22:21 < jmorrison> Go would need to add compare-and-swap to do that at max speed, but you could do it OK with a very short lock during the swap 22:23 < dho> there *is* cas in the runtime. 22:24 -!- deso [n=deso@77-21-80-251-dynip.superkabel.de] has quit [Read error: 104 (Connection reset by peer)] 22:24 < jmorrison> is it in the API anywhere? I might just not have seen it, I haven't looked in every corner yet 22:24 < dho> in short, I think it would be a small change in hashmap.c in mapassign. 22:24 < dho> it's architecture dependent. 22:24 < dho> using lock; cmpxchg on 386 and amd64 22:24 < dho> and i don't know what on arm 22:25 < dho> see 386/asm.s or amd64/asm.s 22:25 < jmorrison> it could be offered in the API and emulated with a RW lock if not supported by the arch 22:26 < jmorrison> copy Clojure and create a syntax for "atomic" references 22:27 -!- lmoura [n=lauromou@200.184.118.130] has quit ["Leaving"] 22:27 < jmorrison> where a ref behaves like a pointer except that assignment is atomic 22:28 < jmorrison> anyhow, just an idea 22:29 < rillianbis> hrm, I can't make my byteReader wrapper work 22:30 < rillianbis> what's the standard way to get an io.Reader on a file? 22:30 < rillianbis> os.Open()? 22:30 < dho> os.Open? 22:31 < dho> it returns *File which implements io.Reader 22:32 -!- Kibiz0r [n=kibiyama@99-48-204-31.lightspeed.brhmmi.sbcglobal.net] has joined #go-nuts 22:34 -!- jmorrison [i=foobar@extropian.demon.co.uk] has quit ["Au revoir"] 22:35 -!- fyusy [n=fyusman@110.174.144.171] has joined #go-nuts 22:38 -!- tav [n=tav@89.243.205.194] has quit [] 22:39 -!- nullpo [n=nullpo@221x252x46x83.ap221.ftth.ucom.ne.jp] has quit [Read error: 60 (Operation timed out)] 22:40 < rillianbis> would be nice if there was more overview/example code in the pkg documentation 22:40 < rillianbis> it's hard to figure out what's what 22:40 < rillianbis> especially with the packages vs interfaces distinction 22:44 -!- oal [n=olav@5.79-160-122.customer.lyse.net] has quit [Remote closed the connection] 22:50 < randomiser> Is there any plan to implement loadable modules, so a plugin architecture can be used? 22:57 -!- tomestla [n=tom@87.100.115.249] has joined #go-nuts 22:58 -!- ejb [n=ejb@unaffiliated/ejb] has joined #go-nuts 23:00 -!- gasreaa [n=atwong@nat/slide/x-fxmyzarzkneoeuiy] has joined #go-nuts 23:00 -!- gasreaa [n=atwong@nat/slide/x-fxmyzarzkneoeuiy] has left #go-nuts [] 23:07 -!- ShadowIce [n=pyoro@unaffiliated/shadowice-x841044] has quit ["Verlassend"] 23:07 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 54 (Connection reset by peer)] 23:08 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 23:12 -!- nanoo [n=nano@95-89-198-45-dynip.superkabel.de] has quit ["Leaving"] 23:16 < jammyd> WalterMundt: Just finished the XCode reinstall and the build process works fine now -- thanks again! 23:20 -!- mbarkhau [n=koloss@p54A7C209.dip.t-dialin.net] has quit [Read error: 54 (Connection reset by peer)] 23:21 -!- stalled [n=411@unaffiliated/stalled] has joined #go-nuts 23:23 -!- Ycros [n=quassel@gnaw.yi.org] has quit [Remote closed the connection] 23:23 -!- Ryan_ [n=ryan@cpe-98-27-166-221.neo.res.rr.com] has joined #go-nuts 23:24 -!- tomestla [n=tom@87.100.115.249] has quit [Read error: 110 (Connection timed out)] 23:24 -!- Ycros [n=quassel@gnaw.yi.org] has joined #go-nuts 23:26 < WalterMundt> jammyd: you're welcome, glad I was able to help 23:26 -!- rillianbis [n=giles@s66-183-19-247.bc.hsia.telus.net] has quit ["This computer has gone to sleep"] 23:26 < WalterMundt> I'm sure there's some way to manually fix whatever it is that the restore doesn't do without recopying all the files, but at least you have a working toolchain now 23:26 -!- Venom_X [n=pjacobs@66.54.185.131] has quit [] 23:27 -!- Chaba [i=3f933e87@gateway/web/freenode/x-tmlpkdzhzmvatgbs] has joined #go-nuts 23:35 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 104 (Connection reset by peer)] 23:37 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts 23:38 -!- rrr [i=rrr@gateway/gpg-tor/key-0x9230E18F] has quit [] 23:44 -!- skelterjohn [n=jasmuth@c-76-99-92-193.hsd1.nj.comcast.net] has joined #go-nuts 23:51 -!- skelterjohn [n=jasmuth@c-76-99-92-193.hsd1.nj.comcast.net] has quit [] 23:52 -!- WalterMundt [n=waltermu@twiki/developer/EtherMage] has left #go-nuts [] --- Log closed Thu Dec 24 00:00:36 2009