--- Log opened Sun Dec 19 00:00:01 2010 00:12 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has quit [Quit: Leaving.] 00:12 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has joined #go-nuts 00:24 -!- xash [~xash@d063060.adsl.hansenet.de] has quit [Ping timeout: 240 seconds] 00:31 -!- tvw [~tv@e176000192.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 00:34 -!- photron_ [~photron@port-92-201-87-128.dynamic.qsc.de] has quit [Ping timeout: 276 seconds] 00:46 -!- virtualsue [~chatzilla@93-97-62-8.zone5.bethere.co.uk] has quit [Remote host closed the connection] 00:57 -!- wrtp [~rog@92.17.4.160] has quit [Quit: wrtp] 01:05 -!- flavius [~flav@unaffiliated/flavious] has quit [Quit: WeeChat - a better irssi, get it now: http://www.weechat.org/] 01:21 -!- morphbot [~morphbot@p57B5352A.dip.t-dialin.net] has joined #go-nuts 01:21 -!- morphbot [~morphbot@p57B5352A.dip.t-dialin.net] has left #go-nuts [] 01:23 -!- kanru [~kanru@61-228-154-25.dynamic.hinet.net] has joined #go-nuts 01:30 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit: Verlassend] 01:58 -!- ExtraSpice [~XtraSpice@88.118.33.48] has quit [Ping timeout: 276 seconds] 02:02 -!- shvntr [~shvntr@116.26.133.232] has joined #go-nuts 02:26 -!- inv_arp [~junya@74.63.255.72] has quit [Ping timeout: 272 seconds] 03:01 -!- boscop [~boscop@f055253088.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 03:02 -!- boscop [~boscop@f055001126.adsl.alicedsl.de] has joined #go-nuts 03:07 -!- vermi [959f7527@gateway/web/freenode/ip.149.159.117.39] has joined #go-nuts 03:10 < vermi> for this snippet of code http://pastebin.com/cBfY6cMH, i am getting output that looks like 99%o(MISSING)f when there's a % followed by a space. How can I keep that from happening? 03:13 < cbeck> I believe %% will do it 03:15 < vermi> cbeck: I don't have control over the input though 03:21 < cbeck> Are you using printf or print? 03:22 < cbeck> when that happens 03:25 < vermi> printf 03:42 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has joined #go-nuts 03:44 -!- l00t [~i-i3id3r_@187.127.132.163] has joined #go-nuts 03:47 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has quit [Quit: adu] 03:51 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has joined #go-nuts 03:54 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has quit [Client Quit] 04:15 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has joined #go-nuts 04:25 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has quit [Quit: adu] 04:29 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has joined #go-nuts 04:31 -!- l00t [~i-i3id3r_@187.127.132.163] has quit [Quit: Leaving] 04:32 -!- vermi [959f7527@gateway/web/freenode/ip.149.159.117.39] has quit [Quit: Page closed] 04:32 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds] 04:35 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3] 04:35 -!- LeNsTR [~lenstr@unaffiliated/lenstr] has quit [Quit: LeNsTR] 04:36 -!- LeNsTR [~lenstr@unaffiliated/lenstr] has joined #go-nuts 04:43 -!- raylu [raylu@c-24-131-193-106.hsd1.pa.comcast.net] has joined #go-nuts 04:43 < raylu> i'm trying to compile 61b2c52b0d22+ release/release.2010-12-15.1 on a x86 debian testing/squeeez system 04:44 < raylu> i've compiled other releases before, but i currently have the error: 04:44 < raylu> .dynsym: fflush: not defined 05:22 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Read error: Connection reset by peer] 05:22 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has joined #go-nuts 05:33 -!- CodeWar [~pou@c-24-23-206-137.hsd1.ca.comcast.net] has joined #go-nuts 05:43 -!- CodeWar [~pou@c-24-23-206-137.hsd1.ca.comcast.net] has quit [] 05:57 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Quit: DarthShrine] 06:03 -!- pingveno [~pingveno@c-98-246-133-8.hsd1.or.comcast.net] has quit [Ping timeout: 240 seconds] 06:05 -!- pingveno [~pingveno@c-98-246-133-8.hsd1.or.comcast.net] has joined #go-nuts 06:16 -!- sav [~lsd@jagat.xored.org] has joined #go-nuts 06:27 -!- DarthShrine [~angus@58-6-93-222.dyn.iinet.net.au] has joined #go-nuts 06:27 -!- DarthShrine [~angus@58-6-93-222.dyn.iinet.net.au] has quit [Changing host] 06:27 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has joined #go-nuts 06:28 -!- KiiK [~chatzilla@173.208.152.239] has joined #go-nuts 06:30 -!- KiiK [~chatzilla@173.208.152.239] has quit [Remote host closed the connection] 06:31 -!- KiiK [~chatzilla@173.208.152.239] has joined #go-nuts 06:36 -!- KiiK [~chatzilla@173.208.152.239] has quit [Remote host closed the connection] 06:42 -!- iant [~iant@nat/google/x-dscksszojxmheaev] has quit [Ping timeout: 276 seconds] 06:57 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has quit [Quit: adu] 06:59 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has joined #go-nuts 06:59 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts 06:59 -!- mode/#go-nuts [+v iant] by ChanServ 07:08 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 07:11 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has joined #go-nuts 08:02 -!- jeff2 [~sername@c-98-210-113-215.hsd1.ca.comcast.net] has quit [Quit: Leaving] 08:23 < taruti> iant: in gccgo Makefile.am there are lots of if LIBGO_IS_LINUX foo_files = foo_linux.go endif ..., is there any reason why it is not using foo_files = foo_$(GOOS).go etc ? 08:23 < taruti> iant: would make porting cause much less clutter in Makefile.am 08:28 -!- adu [~ajr@pool-173-66-11-168.washdc.fios.verizon.net] has quit [Quit: adu] 08:34 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3] 08:42 -!- pingveno [~pingveno@c-98-246-133-8.hsd1.or.comcast.net] has quit [Ping timeout: 260 seconds] 08:44 -!- pingveno [~pingveno@c-98-246-133-8.hsd1.or.comcast.net] has joined #go-nuts 08:45 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has joined #go-nuts 08:51 -!- tvw [~tv@e176007038.adsl.alicedsl.de] has joined #go-nuts 08:58 -!- idr [~idr@e179154096.adsl.alicedsl.de] has joined #go-nuts 09:14 -!- plediii [~plediii@nat-168-7-237-163.rice.edu] has joined #go-nuts 09:17 -!- plediii [~plediii@nat-168-7-237-163.rice.edu] has quit [Client Quit] 09:21 -!- xash [~xash@d073182.adsl.hansenet.de] has joined #go-nuts 09:21 -!- idr [~idr@e179154096.adsl.alicedsl.de] has quit [Remote host closed the connection] 09:23 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 09:24 < tensai_cirno> hello, anyone using gccgo? 09:24 < tensai_cirno> how i should compile package with multiple files? 09:24 < tensai_cirno> for example building mylib package, with mylib1.go and mylib2.go sources 09:24 < tensai_cirno> gccgo -c mylib1.go and gccgo -c mylib2.go 09:25 -!- idr [~idr@e179154096.adsl.alicedsl.de] has joined #go-nuts 09:25 < tensai_cirno> and other module, which using mylib should import mylib1 and mylib2 09:25 < tensai_cirno> but i want to import just mylib 09:26 < taruti> tensai_cirno: gccgo a.go b.go ... ? 09:27 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 09:32 -!- idr [~idr@e179154096.adsl.alicedsl.de] has quit [Remote host closed the connection] 09:34 < tensai_cirno> taruti, iit just produces a.o and b.o 09:36 < tensai_cirno> taruti, http://hpaste.org/42419/gccgo_link 09:37 -!- idr [~idr@e179154096.adsl.alicedsl.de] has joined #go-nuts 09:38 < tensai_cirno> any ideas? 09:40 < tensai_cirno> uh oh 09:40 < tensai_cirno> my bad 09:40 < tensai_cirno> taruti, yep, that works 09:40 < tensai_cirno> thanks :-) 09:41 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts 09:43 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 276 seconds] 09:43 -!- idr [~idr@e179154096.adsl.alicedsl.de] has quit [Remote host closed the connection] 09:45 -!- noktoborus [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping timeout: 245 seconds] 09:49 -!- noktoborus [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts 09:49 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 265 seconds] 09:49 -!- photron_ [~photron@port-92-201-178-243.dynamic.qsc.de] has joined #go-nuts 10:02 -!- reuben [~reuben@220-253-8-81.VIC.netspace.net.au] has joined #go-nuts 10:02 -!- reuben [~reuben@220-253-8-81.VIC.netspace.net.au] has quit [Client Quit] 10:03 -!- reuben [~reuben@220-253-8-81.VIC.netspace.net.au] has joined #go-nuts 10:03 -!- reuben [~reuben@220-253-8-81.VIC.netspace.net.au] has quit [Client Quit] 10:03 -!- reuben [~reuben@220-253-8-81.VIC.netspace.net.au] has joined #go-nuts 10:04 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 10:07 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Quit: DarthShrine] 10:08 < reuben> I'm hoping someone can help me through a rough time here. I'm new to Go. I'm writing a little game to teach myself the language. Part of this includes a resource manager. My question (possibly) relates to checking for the existence of a key in a map 10:08 < reuben> http://pastebin.com/kqmL5g5F 10:09 < reuben> the map in question is gfxResources 10:12 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving] 10:12 < reuben> If anyone happens to be in the spirit, a more useful paste of the code/issue is at: http://pastebin.com/7Wt0T1Ls 10:16 < TheSeeker> first dimb question: have you tried using a full path to the image instead of a relative one? 10:18 < TheSeeker> dumb question too ... perhaps I should sleep. 10:19 < reuben> I'll try it now 10:21 -!- femtooo [~femto@95-89-196-125-dynip.superkabel.de] has joined #go-nuts 10:24 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 10:24 < reuben> Hmm, separate question: is it possible to discard some values of a multiple-return value function when used in a const expression or a function call 10:24 < reuben> for example: 10:24 < reuben> const WORKING_DIR = os.Getwd() 10:25 < reuben> that won't compile, since os.Getwd() returns (string, Error) 10:27 < reuben> (oh, apparently cant use the return of a function call in a const anyway, but the question is still relevant for function calls) 10:28 < TheSeeker> you already are using the method to do so ... _ 10:30 < reuben> But how would I go about using that in the argument list of a function call? 10:30 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has joined #go-nuts 10:31 < reuben> Like so, but somehow compiling and working :) -- var GFX_DIR string = path.Join(os.Getwd(), "gfx") 10:36 -!- ExtraSpice [~XtraSpice@88.118.33.48] has joined #go-nuts 10:48 -!- xash [~xash@d073182.adsl.hansenet.de] has quit [Read error: Operation timed out] 10:52 -!- sauerbraten [~sauerbrat@p508CCB1D.dip.t-dialin.net] has joined #go-nuts 10:53 -!- photron_ [~photron@port-92-201-178-243.dynamic.qsc.de] has quit [Ping timeout: 265 seconds] 11:00 -!- ouah [~godisdead@unaffiliated/ouah] has joined #go-nuts 11:03 < TheSeeker> path.Join doesn't seem to work for me... probably because I'm on windows :P 11:04 < reuben> It will be great once we get first class Windows and Android support :) 11:04 < reuben> That they' 11:04 < reuben> re included in mainstream (android being arm) is great 11:05 < TheSeeker> no, I'm just doing it wrong. 11:05 < TheSeeker> FOO = path.Join(FOO, BAR) not just path.Join(FOO, BAR) 11:05 < reuben> path.Join("gfx",resource) 11:05 < reuben> yeah 11:08 < TheSeeker> foo, _ := os.Getwd() 11:08 < TheSeeker> var GFX_DIR string = path.Join(tmp, "gfx") 11:09 < reuben> problem is, I can't do that outside of a function body, since short declarations aren't allowed 11:09 < reuben> :=, that is 11:09 < reuben> maybe i'm mistaken as to the reason 11:11 -!- oldumy [~oldumy@117.79.232.128] has joined #go-nuts 11:12 < oldumy> hi, is there a full commented doc of cgo? 11:13 < TheSeeker> nope. closest thing other than the soruce that I know of is http://golang.org/cmd/cgo/ 11:15 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-162-69.clienti.tiscali.it] has joined #go-nuts 11:19 < TheSeeker> reuben: this works for me. http://dark-code.bulix.org/nhapre-79020 11:20 -!- oldumy [~oldumy@117.79.232.128] has quit [Read error: Connection reset by peer] 11:20 < reuben> thanks 11:20 < reuben> that works 11:20 -!- oldumy [~oldumy@117.79.232.128] has joined #go-nuts 11:20 < reuben> similar to what I have 11:20 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 11:21 < reuben> would be cool if it were possible to evaluate os.Getwd() as part of an argument list, though 11:21 < TheSeeker> I notice there's no "Setwd()" either... 11:22 < oldumy> TheSeeker: That one is too poor. 11:24 -!- oldumy [~oldumy@117.79.232.128] has quit [Client Quit] 11:24 -!- femtooo [~femto@95-89-196-125-dynip.superkabel.de] has quit [Ping timeout: 255 seconds] 11:24 -!- oldumy [~oldumy@117.79.232.128] has joined #go-nuts 11:28 -!- oldumy [~oldumy@117.79.232.128] has left #go-nuts [] 11:33 -!- flavius [~flav@unaffiliated/flavious] has joined #go-nuts 11:34 -!- dju [~dju@fsf/member/dju] has joined #go-nuts 11:34 < flavius> Hi. In the go tutorial, they imply that var s string = "", var s = "" and s := "" are the same. However for var i = 0 ... does not work, for i := 0 does.So what is actually the difference? 11:35 < flavius> or is it simply not allowed by the compiler? if so, that's not consistent with the tutorial 11:36 -!- plediii [~plediii@nat-168-7-237-209.rice.edu] has joined #go-nuts 11:36 < reuben> that's right, the short declaration is allowed in some places the longer one isn't 11:36 < reuben> And vice versa 11:37 < reuben> for example, := can only be used within the body of a function, not outside (in the cold, dark outerspace) 11:37 -!- dju [~dju@fsf/member/dju] has quit [Max SendQ exceeded] 11:38 -!- dju [~dju@fsf/member/dju] has joined #go-nuts 11:40 < flavius> I see, so at the ASM level := is allowed where you could expect a MOV instruction (the .text section). Is my assumption right? 11:40 -!- plediii [~plediii@nat-168-7-237-209.rice.edu] has quit [Client Quit] 11:41 < reuben> I think it's purely for syntactic reasons (am I wrong?) 11:43 -!- ExtraSpice [~XtraSpice@88.118.33.48] has quit [Quit: Leaving] 11:44 < flavius> If so, they've really done everything to make go compile as fast as possible 11:45 < flavius> From what I've read, it's a one-pass compiler, right? 11:46 < reuben> It may be for parsing simplicity or human readability when used in scoped variables (for, if initialisers) 11:46 < TheSeeker> yeah, single pass. 11:50 -!- ExtraSpice [~XtraSpice@88.118.33.48] has joined #go-nuts 11:53 -!- plediii [~plediii@nat-168-7-237-209.rice.edu] has joined #go-nuts 12:03 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has joined #go-nuts 12:04 < flavius> What are the fmt's format specifiers? 12:04 < reuben> The issue I had with my game crashing, by the way, was that I was redeclaring & shadowing some variables... using := instead of = 12:04 < reuben> They're in the doc for fmt 12:05 < reuben> golang.org/pkg/fmt 12:05 < reuben> but 12:05 < reuben> %v fill format most things like fmt.Print[ln]() does 12:05 -!- tvw [~tv@e176007038.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 12:05 < reuben> and %d works for signed and unsigned integer types 12:05 < reuben> since it uses reflection 12:09 < flavius> reuben: thanks 12:11 < flavius> Is there any pastebin which supports go syntax? 12:12 < reuben> I was wondering the same thing 2 hours ago... I'm guessing not, since the topic points us to pastebin.com 12:17 -!- DerHorst [~Horst@e176098072.adsl.alicedsl.de] has joined #go-nuts 12:23 < flavius> How can I initialize an array? a := int[3]{1,2,3} doesn't work 12:23 < flavius> "type int is not an expression" 12:24 < reuben> I think it's like so: a := [3]int{1,2,3} 12:25 < reuben> yeah, it is 12:25 < reuben> alternatively, allow the compiler to infer the size: [...]int{1,2,3} 12:26 < reuben> or use the slice constructor: []int{1,2,3} 12:33 < flavius> One more strange thing: what with GCC would be a warning, causes 6g not to compile at all, for instance not using a variable "a declared and not used" 12:33 < flavius> could I force it to ignore that? 12:34 < reuben> It's kinda like GCC with the -Werror flag. Actually, I wish it gave more warnings... like for the issue I just had: it would be nice if the static analysis of the compiler told me that I was shadowing 2 variables when I used := 12:38 -!- femtooo [~femto@95-89-196-125-dynip.superkabel.de] has joined #go-nuts 12:41 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 12:42 -!- femtooo [~femto@95-89-196-125-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 12:42 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has joined #go-nuts 12:43 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 12:43 -!- wrtp [~rog@92.17.4.160] has joined #go-nuts 12:46 -!- ouah [~godisdead@unaffiliated/ouah] has quit [Disconnected by services] 12:47 < flavius> Is there a sizeof operator? 12:50 < flavius> oh the unsafe package seems to provide one 12:51 -!- kashia_ [~Kashia@port-92-200-52-15.dynamic.qsc.de] has quit [Quit: This computer has gone to sleep] 12:52 < fuzzybyte> does anyone know of any go apps for helping localization (ie. for translating your app to different languages)? 12:54 < flavius> fuzzybyte: I haven't seen any by chance (although I wasn't specifically looking for one), but you may want to go through the lists at http://code.google.com/p/go/wiki/WikiIndex?tm=6 12:55 < flavius> I doubt though there is something for working with .po files or similar 12:56 < fuzzybyte> guess i have to make one meself 12:56 < reuben> You're a pioneer, fuzzybyte 12:56 < flavius> well I guess you'd only have to write the a binding, I think I've read something yesterday about SWIG and FFI 12:56 < fuzzybyte> yes, i want to work with .po files or similiar. 12:57 < flavius> read through those stuff, you'll certainly find something useful, if not all by itself, then it will at least help you 12:59 < fuzzybyte> i read about swig earlier. very nice, it has go support too now. 13:04 -!- wrtp [~rog@92.17.4.160] has quit [Ping timeout: 260 seconds] 13:07 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 13:08 -!- wrtp [~rog@92.17.4.160] has joined #go-nuts 13:12 < fuzzybyte> ..wait what? no, i did not mean translating in that sense, lol. I just want to translate my go website's english interface to finnish. how did this go to swig.. im too tired to think what i read. 13:16 < fuzzybyte> i was just looking something like the message files (.po files) in django 13:20 < KBme> well, i'm guessing because you need gettext support for that 13:31 < flavius> fuzzybyte: take a nap :-) 13:31 < reuben> My naughts and crosses game seems to work alright :) 13:41 -!- reuben [~reuben@220-253-8-81.VIC.netspace.net.au] has quit [Ping timeout: 250 seconds] 13:45 < flavius> Is it fine to create a slice from an array upon calling a function accepting []int? Is it comparably as bad as passing an entire array to a function in C? 13:45 < flavius> a is the array, I call it like sum(a[:]) 13:46 < KBme> i think that's what slices are for 13:46 < KBme> you can pass the whole array that way, or a slice of it ;) 13:46 < KBme> and it will be references to the array's elements so it doesn't take up much space 13:46 < flavius> Hm I'm ... exactly that was I about to say :-) 13:47 < flavius> so modifying the slice elements' values inside the function will change the values in the caller's array? 13:48 < flavius> yep, just tested it 13:49 < flavius> ok, so the line you have to draw is heap (because of the "segmented stack" stuff) usage vs. self-containment of a function 13:53 -!- saschpe [~quassel@opensuse/member/saschpe] has joined #go-nuts 13:58 -!- ouah [~godisdead@unaffiliated/ouah] has joined #go-nuts 14:01 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 14:10 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-162-69.clienti.tiscali.it] has quit [Quit: E se abbasso questa leva che succ...] 14:13 -!- _DerHorst_ [~Horst@e176127179.adsl.alicedsl.de] has joined #go-nuts 14:16 -!- DerHorst [~Horst@e176098072.adsl.alicedsl.de] has quit [Ping timeout: 272 seconds] 14:16 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Quit: DarthShrine] 14:18 < flavius> it's obvious to me how you can use slices to modify the underlying array, but how to modify an "underlying map"? The tutorial only says: If you're holding a slice or a map and you modify its contents, other variables referencing the same underlying data will see the modification. 14:19 < KBme> yes, maps and slices are reference types, so when you pass them around you will always pass by reference 14:19 < KBme> at least that's how i understood it 14:20 < TheSeeker> so... use locking where needed to prevent heisenbugs! 14:21 < KBme> hah first time I hear that expression 14:23 -!- terrex [~terrex@84.122.72.127.dyn.user.ono.com] has joined #go-nuts 14:25 < flavius> lol yeah, it's listed on http://en.wikipedia.org/wiki/Unusual_software_bug among others 14:31 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 14:31 -!- Netsplit *.net <-> *.split quits: XenoPhoenix 14:31 -!- rlab_ [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org] 14:32 -!- shvntr [~shvntr@116.26.133.232] has quit [Ping timeout: 260 seconds] 14:32 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 14:33 < KBme> lmao on that page, thanks 14:34 -!- TheMue [~TheMue@p5DDF616B.dip.t-dialin.net] has joined #go-nuts 14:35 -!- Netsplit over, joins: XenoPhoenix 14:36 < flavius> why does my map doesn't have reference semantics in this example http://pastium.org/view/f342d7d701ede4c8727ac59033ce0470 ? 14:39 < KBme> ah, no 14:39 < KBme> a is an int 14:40 < KBme> so it will be copied 14:40 < KBme> you would do &a then 14:40 < KBme> the map itself is always a reference 14:40 < TheMue> m has, but not a. It's an int. 14:42 < TheMue> m["answer"]++ works 14:43 < flavius> So what is the difference between make() and new() actually? In C terms where applicable 14:45 < KBme> make is for builtin types, specifically chan, map and slice afaik 14:45 < flavius> yes, but why? arrays, ints, etc, are also built in, why do you use new() for them? 14:45 < TheMue> http://golang.org/doc/go_spec.html#Making_slices_maps_and_channels 14:46 < TheMue> http://golang.org/doc/go_faq.html#new_and_make 14:46 < TheMue> new is just allocation, make is initializing 14:47 < flavius> I see, as in malloc() vs. calloc() 14:58 < flavius> "In contrast, new([]int) returns a pointer to a newly allocated, zeroed slice structure, that is, a pointer to a nil slice value." Could you give me an example when such a slice is useful? 14:58 -!- niemeyer [~niemeyer@201-2-134-72.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 15:05 -!- niemeyer [~niemeyer@201-2-134-72.pltce701.dsl.brasiltelecom.net.br] has quit [Ping timeout: 240 seconds] 15:06 < KBme> when you initialise a struct you need to create it's members before assigning to them 15:20 < flavius> KBme: your answer puzzles me even more. Could you show a POC of what you mean? 15:21 < KBme> http://golang.org/doc/go_spec.html#Allocation 15:22 < KBme> first code example 15:24 < flavius> yes but my question was about the usefulness of "zeroed slices" 15:24 < flavius> not about structs 15:25 < KBme> new is for structs, as you can see in the documentation 15:25 < KBme> wile make is for reference types, like map, slice and chan 15:26 -!- ouah [~godisdead@unaffiliated/ouah] has left #go-nuts [] 15:26 < KBme> new([]string) is not really useful i don't think 15:41 -!- noktoborus [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping timeout: 245 seconds] 15:42 -!- noktoborus [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts 15:49 -!- illya77 [~illya77@150-69-133-95.pool.ukrtel.net] has joined #go-nuts 15:57 -!- Guest95927 [~irc@209.17.191.58] has quit [Quit: leaving] 15:59 -!- jo___ [~Jo@p4FEB6DCE.dip.t-dialin.net] has joined #go-nuts 16:00 -!- saschpe [~quassel@opensuse/member/saschpe] has quit [Ping timeout: 250 seconds] 16:00 -!- ios_ [~ios@180.191.130.58] has joined #go-nuts 16:02 -!- irc [~irc@209.17.191.58] has joined #go-nuts 16:03 -!- ios_ [~ios@180.191.130.58] has quit [Client Quit] 16:14 -!- oldumy [~oldumy@114.247.10.76] has joined #go-nuts 16:18 -!- tvw [~tv@e176007038.adsl.alicedsl.de] has joined #go-nuts 16:21 < flavius> wow, methods for structures, it feels mostly like function pointers in C structs, except it's more elegant. I'm starting to go nut 16:21 < flavius> interesting mix of python and C 16:22 < TheMue> yep 16:25 -!- aiju [~aiju@unaffiliated/aiju] has joined #go-nuts 16:26 < aiju> is there a document on software design with Go? 16:26 < aiju> i always end up with circular dependencies between files 16:27 < flavius> I guess the "calling convention" works almost as in C from the assembly POV, except what in C++ was this or self in python, is now simply shifted in the function parameters, right? So there's no "function decoration" as it's in C++ to make polimorphism work, that's the only difference regarding this aspect? 16:30 < Namegduf> flavius: Yes, although the calling convention for all functions is incompatible due to segmented stacks. 16:30 < Namegduf> That's a separate tweak, though. 16:30 < Namegduf> Interfaces, OTOH, are basically a pointer to a vtable + the value or a pointer to it. 16:32 < uriel> interesting, had not seen this before: http://code.google.com/r/rsc-go-gc/ 16:32 < Namegduf> OIh, me neither. 16:33 < aiju> with Go i basically end up stuffing everything in one file 16:34 < kimelto> you mean no shared lib? 16:34 < Namegduf> Make each package do a fairly significant and well-defined job. 16:34 < uriel> aiju: you can have multiple files that make up one package 16:34 < Namegduf> They should not attempt to replicate classes. 16:34 < aiju> uriel: oh didn't knew that 16:34 < aiju> Namegduf: i'm writing an emulator, i have a CPU and a PPU module which need each other 16:34 * uriel wonders if aiju has WTFM 16:34 < uriel> er RTFM 16:34 < Namegduf> aiju: Then they need to go in the same package 16:35 < aiju> i don't know it by heart yet 16:35 < aiju> also i'm badly influenced by a certain other language with a P and an y :P 16:35 < Namegduf> I would strongly suggest trying to make them *not* need each other in that way if they're huge, though. 16:35 < uriel> I was thinking 'either aiju is way dumber than I thought, or he is getting something very basic very wrong' 16:35 < Namegduf> I thought Python could do multifile packages, to? 16:35 < Namegduf> *too? 16:35 < aiju> i have a no clue 16:35 < exch> aiju: https://github.com/jteeuwen/go-example-multipkg/blob/master/app/Makefile <- 2 files for the same package 16:35 < aiju> -a 16:36 < uriel> aiju: really, if you look at any of the standards packages, most of them are spread over a few different files 16:36 < uriel> aiju: and this is certainly covered in the basic docs 16:36 < aiju> sorry, i'm completely new to Go 16:36 < flavius> Go is so nice, it's what I always wanted C be. And I haven't yet started to dig into the parallelisation stuff, at that point it will feel like a language for crunching numbers I guess (because of the almost do-nothing scale-out capabilities) 16:36 < uriel> aiju: blahblahblah, give me another excuse ;P 16:37 < Namegduf> flavius: It isn't quite as easy as that, but yeah. The short version is that Go makes parallisation cheaper, but it's still far from free. 16:37 < Namegduf> You only gain from scaling out when you have significant enough amounts of work per goroutine. 16:37 < uriel> there is no free lunch 16:37 < aiju> flavius: i currently still miss the ternary operator and pointer arithmetic 16:37 < aiju> so i'd basically make the whole program one huge package 16:38 < Namegduf> Depends on what you call huge 16:38 < Namegduf> It's a design fault in your program if it's genuinely huge and you can't split it into parts which aren't interdependent 16:38 < uriel> aiju: huhu? why?!?! 16:38 < aiju> well, only 1415 lines currently and most of it are lookup tables 16:38 < uriel> you only keep in one package conceptually related stuff, which often depends on eachother 16:39 < Namegduf> 1415 is not so bad for a single package over multiple files. 16:39 < flavius> Namegduf: is it expensive for multicores too? 16:39 < uriel> aiju: so, you barely got any code, why are you even worrying about packages yet? 16:39 < aiju> because i got the whole concept wrong :P 16:39 < uriel> aiju: did you read Effective Go, etc...? 16:40 < aiju> probably not careful enough 16:40 < Namegduf> Packages are designed to basically be coherent, conceptually separated units of functionality, with a solid separation of public vs private. 16:40 -!- oldumy [~oldumy@114.247.10.76] has quit [Ping timeout: 260 seconds] 16:40 < exch> It also pays to just read some of the existing packages. Or at least glance over them, to pick up a few tricks 16:40 < Namegduf> They're at about the right size and design to use as program "modules" 16:40 < uriel> exch: yup 16:40 < Namegduf> Or "units" 16:40 < Namegduf> I had a fun thing yesterday. 16:40 < Namegduf> I started bitfiddling and found myself adding semicolons again. 16:41 < Namegduf> Had to catch myself. 16:41 < Namegduf> (I hadn't needed to do bitfiddling in Go before) 16:41 < aiju> so how do i "glue" the files together? 16:41 < uriel> aiju: !?!?! 16:41 < aiju> include? 16:41 < uriel> wtf do you even mean? 16:42 < Namegduf> No, you give them both to the compilation command. 16:42 < exch> in the makefile: GOFILES = a.ho b.go c.go 16:42 < aiju> oic 16:42 < Namegduf> You don't "glue" them together or "include" them into each other 16:42 < uriel> aiju: for fucks sake, stop acting like a newbie, and fucking read the basic docs and take a look at existing commands 16:42 < exch> s/ho/go/ 16:42 * exch gives uriel a lollipop 16:42 * uriel kicks aiju 16:42 < uriel> exch: thanks ;) 16:42 < flavius> aiju: I guess you've never written a larger program in a system language like C for example? 16:43 < aiju> flavius: depends on what you call "large" 16:43 < flavius> aiju: more than one .c file 16:43 < aiju> yes 16:43 < Namegduf> flavius: Go cheaply puts multiple goroutines across multiple cores. 16:43 < aiju> i write a header file for each "functional unit" and #include 'em 16:43 < flavius> "yes" meaning "no I haven't"? 16:44 < uriel> aiju: please, read up on how packages work, this stuff is not rocket science, even I understand it 16:44 < flavius> the principles are the same as in C 16:44 < uriel> flavius: not really 16:44 < flavius> except you don't have headers 16:44 < aiju> it's also like driving a car 16:44 < aiju> except you don't have a car... 16:44 < uriel> precisely the problem with C is that it has no concept of 'package' or other such compilation unit 16:45 < Namegduf> The header file does not have anything to do with actually linking the multiple source files together 16:45 < Namegduf> In C 16:45 < uriel> aiju: exactly 16:45 < flavius> uriel: I mean the concepts of linking and compiling, they're just like in C 16:45 < aiju> no 16:45 < aiju> in C i compile each file seperately 16:45 < aiju> and then i link the whole thing together 16:45 < Namegduf> Right 16:45 < Namegduf> This is how Go works 16:45 < aiju> 17:42 < Namegduf> No, you give them both to the compilation command. 16:46 < flavius> aiju: Well I always do "gcc *.c" and have working .o files 16:46 < aiju> well, i never 16:46 < Namegduf> Right. That's a trivial difference in the precise commands used in lieu of header files. 16:47 < Namegduf> I only produce one .6 per package, myself, but I think you can do it otherwise. 16:47 < uriel> flavius: no they are not like in C, I think you are misreading aiju's level of confusion 16:47 < Namegduf> (The default makefiles are awful, but work for single-package projects) 16:47 < uriel> btw, here is a handy new(?) doc: http://golang.org/doc/code.html 16:48 < aiju> oh perfectly ty uriel 16:48 < uriel> 16:47 < Namegduf> I only produce one .6 per package, myself, but I think you can do it otherwise. 16:48 -!- ios_ [~ios@180.191.130.58] has joined #go-nuts 16:48 < uriel> Namegduf: really? I doubt it, and doing so would be pretty dumb I'd think 16:49 -!- illya77 [~illya77@150-69-133-95.pool.ukrtel.net] has quit [Read error: Connection reset by peer] 16:49 < Namegduf> Hmm, okay. 16:49 < aiju> they should have brought mk :( 16:49 < uriel> the whole point of packages (or at least part of the whole point) is that they are a 'compilation unit' 16:49 < aiju> GNU make is an abomination 16:49 < uriel> aiju: stop whinning 16:49 < Namegduf> I've not touched the defualt makefiles in a good while because I found them useless 16:49 < uriel> aiju: all you need is like five lines of Makefile per package, so get over it 16:50 < uriel> Namegduf: 'useless'? what is wrong with them? they work just fine 16:50 < Namegduf> uriel: Actually getting a multi-package project working is much harder than that due to package interdependencies. 16:50 < Namegduf> Which the default Makefiles will not handle. 16:51 < Namegduf> Coupled with intallation into ~/go, you get things building against wrong or different versions of the same packages and then failing to work together. 16:51 < uriel> I'm not quite convinced the default makefiles need to know about package interdependencies, just write a very simple top level makefile or even shell scripts that runs all the per-package makefiles 16:51 < TheMue> Hmm, for me they work like a charm. Single projects like documented and multi-package projects just as a compilation of the needed projects. 16:51 < Namegduf> The problem is rebuilds, uriel. 16:51 < uriel> TheMue: exactly 16:52 < Namegduf> The individual package makefiles need to know they should rebuild from scratch when a dependent package changed. 16:52 < Namegduf> They don't. 16:52 < uriel> Namegduf: I still don't see the problem, but then, most of my projects are not multi-package 16:52 < uriel> Namegduf: still it is trivial to have a script that nukes everything and rebuilds everything, and with Go that is pretty damned instantaneous 16:53 < taruti> just requiring mk might make sense :) 16:53 < Namegduf> Writing a better Makefile makes sense 16:53 * Namegduf has one Makefile building all his packages, with rules for most automatically generated 16:55 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 16:55 < Namegduf> uriel: That worked so long as everything was completely nuked, I think. 16:56 -!- oldumy [~oldumy@114.247.10.82] has joined #go-nuts 16:56 < aiju> i love gofmt 16:56 < flavius> On http://golang.org/doc/go_tutorial.html in the function func (file *File) Write(b []byte) (ret int, err os.Error) { 16:56 < flavius> why do they not use "ret" for the return value? 16:56 < flavius> but they do use "err" 16:57 < aiju> var Bios [256]uint8 = [256]uint8{ <-- how would one clean this up (global array)? 16:57 -!- Fish- [~Fish@9fans.fr] has joined #go-nuts 16:57 -!- wrtp [~rog@92.17.4.160] has quit [Quit: wrtp] 16:58 < uriel> aiju: I fucking told you 16:58 < uriel> see #cat-v 16:58 < aiju> it fucking doesn't work 16:58 < aiju> bios.go:20: non-declaration statement outside function body 16:58 < uriel> oh, at the top level := doesn't work 16:59 < Namegduf> You can't; it's one line, though. When you have a significant percentage of your project suffering from such stuttering, *then* there's a problem. 16:59 < aiju> the "i use lookup tables" problem? 16:59 < uriel> the 'you use too many damned global vars' problem 16:59 < Namegduf> You'd need to have like 1000 lookup tables for the line on which each lookup table starts to be a significant portion of your code 17:00 < aiju> it's a fucking constant 17:00 < Namegduf> ANd they'd need to be pretty small 17:00 < uriel> aiju: arrays are not constants 17:00 < uriel> and I guess it is a good thing := doesn't work at the top level, it discourages people from having too many globals 17:00 < aiju> uriel: constant as in "it is never changed" 17:00 < Namegduf> It's weird. I don't remember why. 17:00 < uriel> aiju: and that is fine, still I don't see the problem 17:01 < aiju> http://phicode.de/git/?p=gb.git;a=summary what i'm working on 17:02 -!- oldumy [~oldumy@114.247.10.82] has quit [Ping timeout: 240 seconds] 17:03 < uriel> aiju: looks fine to me, I might put the long global arrays in their own file or something, but looks fine 17:03 < aiju> i think it depends 17:04 < aiju> i think the Printstate function is really ugly 17:04 < aiju> but i wouldn't know how to clean it up (disasm.go) 17:04 < uriel> obviously, it is a judgement call, and a not very important one either 17:04 < Namegduf> You could use a switch for that. 17:04 < Namegduf> Hmm, no. 17:05 < aiju> printf("...%c...", ..., (F & FLAGS) ? 'S' ? ' ', ...); 17:05 < aiju> that was the C version 17:05 < aiju> ehm : 17:05 < Namegduf> That would suck pretty badly, too. 17:05 -!- saschpe [~quassel@opensuse/member/saschpe] has joined #go-nuts 17:07 < aiju> i think at some places i forgot about named return values 17:07 < aiju> but it seems like i have to return anyway 17:09 < flavius> On http://golang.org/doc/go_tutorial.html in the function func (file *File) Write(b []byte) (ret int, err os.Error) {, why do they not use "ret" for the return value, but they do use "err"? 17:11 -!- towerhe [~towerhe@117.79.232.128] has joined #go-nuts 17:14 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has joined #go-nuts 17:16 < uriel> flavius: ?!? 17:16 < exch> they dont have to in this case 17:16 < exch> you are not obligate dto use the named return values by their name. Just depends on what is more convenient 17:17 < exch> the return bit could also be written as ' ret = int(r); return;' 17:17 < exch> but that's 2 lines of code as opposed to the current 1 liner 17:19 < flavius> exch: yes but they could have used ret and err on line 65 in the first place, couldn't they? 17:20 < flavius> so 65-69 would have become only 2 lines 17:20 < exch> nope 17:20 < flavius> unless there is something I'm missing 17:20 < exch> the syscall functions return uintprt values, not int and os.Error 17:20 < exch> *uintptr 17:20 < exch> the extra code below is to convert the uintptrs to the actual return types 17:21 < flavius> I see 17:21 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has joined #go-nuts 17:21 < exch> if syscall.Write had the same return values, then they could have just done 'return syscall.Write(file.fd, b) 17:21 < flavius> yeah 17:23 < flavius> I also see that in go, the "break" is implicit for case branches. How to make the execution flow "fall through" the next branch, as I would do in C by ommitting the break? 17:23 < exch> with the fallthrough keyword 17:23 < flavius> Oh lol 17:24 < flavius> and I used that only as a metaphor 17:24 < exch> hehe 17:25 < flavius> thanks 17:25 < exch> np 17:25 < aiju> does Duff's device work with Go? 17:25 < aiju> ◔ ◡ ◔ 17:26 < exch> I sure hope not :p 17:30 < exch> Didn't the xml unmarshal function use struct field tags to map xml tags to fields at some point? 17:31 < uriel> exch: afaik you can at least do that with json, so I guess with xml too 17:31 < exch> it's no longer working it seems :< 17:32 < uriel> why do you want to use xml anyway? 17:32 < exch> this rest api i'm working with has no json output. which sucks 17:32 < uriel> ah, yuck :( 17:32 < uriel> but I still think it should work for xml 17:34 -!- ios_ [~ios@180.191.130.58] has quit [Quit: Leaving] 17:34 < exch> nope, definitely not 17:37 < exch> I was inclined to just name the struct fields after the xml nodes, but tbh it's ugly. I'm more inclined to just do the parsing manually 17:37 * exch prepares for a long, long night 17:40 < aiju> tnli = 0x9000 + 16 * uint16(int16(int8(tn))) 17:41 < exch> O.o 17:41 < aiju> better idea? 17:41 < exch> what type is 'tn'? 17:42 < aiju> uint8 17:42 < exch> why make it signed first? 17:42 < aiju> tn = 0xFF should yield 0x9000 - 16 17:43 * exch puzzeled 17:43 < exch> If you have to convert 'tn', doesnt uint16(tn) do the trick? 17:43 < aiju> no 17:43 < aiju> that would yield 0x9000 + 16 * 0xFF 17:48 < exch> I think i'm missing some context then. I don't understand what you are trying to achieve. Perhaps someone else is smarter than me :p 17:48 -!- towerhe [~towerhe@117.79.232.128] has quit [Ping timeout: 276 seconds] 17:49 < aiju> treat tn as a signed number, multiply it by 16 and add that to 0x9000 17:55 < aiju> is there something like USED in plan 9 C? 17:56 < uriel> aiju: _ 17:56 < aiju> perfectly 17:59 < uriel> really, RTFM man 18:00 < aiju> i know _, but i didn't knew it could be used like that 18:01 -!- irc [~irc@209.17.191.61] has joined #go-nuts 18:02 < fuzzybyte> is there way to disable that annoying "X declared and not used" 'error'? I don't care if im not using it (yet). 18:02 -!- Guest8331 [~irc@209.17.191.61] has quit [Read error: Connection reset by peer] 18:02 -!- Guest62296 [~irc@209.17.191.58] has quit [Read error: Connection reset by peer] 18:05 < TheMue> Just don't declare it 18:05 < TheMue> In case of a multi-value function return use the underscore 18:06 < fuzzybyte> Ugh. 18:06 < exch> fuzzybyte: _ = x; 18:06 < exch> now it's used 18:06 -!- irc_ [~irc@209.17.191.58] has joined #go-nuts 18:06 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 18:07 < aiju> how was that Go Spectrum emulator called? 18:08 < exch> go-speccy I believe 18:08 < aiju> ah exactly, thx 18:08 < exch> https://github.com/remogatto/gospeccy 18:10 < aiju> what should i use for graphics output? exp/draw? 18:16 < exch> it's X11 support is rather limited. You can use it with the image/* packages for output to an image file. Or if you something more serious, there are opengl and SDL bindings you could use 18:21 -!- pure_x01 [~pure@h-4-84.A155.priv.bahnhof.se] has joined #go-nuts 18:25 < pure_x01> hi, im trying to build gccgo and have tried some times before but it allways fail with: -I ../.././libgo/../gcc -I ../../gcc/include -O2 -g3 -O0 -MT go-map-len.lo -MD -MP -MF .deps/go-map-len.Tpo -c -o go-map-len.lo `test -f 'runtime/go-map-len.c' || echo '../.././libgo/'`runtime/go-map-len.c 18:25 < pure_x01> ../.././libgo/runtime/go-go.c: In function ‘__go_run_goroutine_gc’: 18:25 < pure_x01> ../.././libgo/runtime/go-go.c:354:1: error: bp cannot be used in asm here 18:26 < aiju> does gccgo have garbage collection yet? :< 18:27 < fuzzybyte> aiju: it has mark-sweep GC 18:28 < tdnrad> hopefully 18:29 < tdnrad> last I read the gccgo didn't 18:29 -!- dgreensp [~dgreenspa@68-185-89-44.dhcp.snlo.ca.charter.com] has joined #go-nuts 18:30 < aiju> go uses dynamic linking? 18:30 < Namegduf> No 18:30 < jo___> yes, for C libraries ;) 18:30 < Namegduf> C libraries are not part of Go 18:30 < aiju> trying to get 2e9a9b SDL running 18:30 < Namegduf> gccgo has the same GC that the normal Go compilers do. 18:31 < Namegduf> Does gccgo have better goroutines now? 18:31 < Namegduf> That's the part I'm wondering about. 18:31 < Namegduf> (i.e. not implemented as OS threads) 18:32 < aiju> d /quit 18:32 < taruti> Namegduf: OS threads atm 18:33 < Namegduf> Ah, pity. 18:33 < dgreensp> how do I use Go without any makefiles? is there a good example or tutorial that does this? 18:33 < aiju> why would you do that? 18:34 < tdnrad> Namegduf: really? I thought not too long ago 18:34 < tdnrad> I read otherwise... hmm 18:35 < kimelto> dgreensp: 6g + 6l ? 18:35 < aiju> are you all using AMD64? O.o 18:35 < Namegduf> tdnrad: A GC was added fairly recently. 18:35 < Namegduf> Yes. 18:35 < dgreensp> kimelto: how are packages resolved in that case? 18:36 < Namegduf> AMD64 is the platform Go is most tested on, because it's the architecture used by all proper Linux installations on machines made in the last five years 18:36 < Namegduf> :P 18:36 < dgreensp> (I'm very new to Go) 18:36 < aiju> dgreensp: still, why would you do that? what's wrong with Makefiles? 18:36 < aiju> Namegduf: my laptop is made in 2003 18:36 < aiju> ◔ ◡ ◔ 18:37 < Namegduf> dgreensp: 6g and 6l know where to find things in your GOROOT 18:37 < Namegduf> dgreensp: You can add a -I and -L parameter, respectively, to include another package search path. 18:37 < dgreensp> cool. 18:38 < dgreensp> I've just never liked or needed "make" for any of my toy C/Java/etc projects, it adds a layer of complexity 18:38 < Namegduf> It basicaly goes like: 18:38 < Namegduf> 6g -o <object file> <list of source files> 18:38 < Namegduf> 6l -o <executable> <object files> 18:38 < Namegduf> Er, object file, I think. 18:39 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 18:39 < Namegduf> For an executable. 18:39 < aiju> dgreensp: i just have a huge directory for such project with a centralmakefile 18:39 < Namegduf> gopack is used to pack packages for inclusion in others. 18:40 < kimelto> gopack is an ar on steroids? 18:40 < Namegduf> No idea. 18:40 < Namegduf> I don't even know how I found out how to use it. 18:41 < Namegduf> All I know is that my Makefile runs "gopack grc package.a package.6" 18:41 < Namegduf> And it works. 18:41 < kimelto> It adds a special Go-specific section __.PKGDEF that collects all the Go type information from the files in the archive; :-) 18:41 < aiju> anybody knows how to compile ⚛sdl? 18:44 < dgreensp> Namegduf: thanks! so, can I import a package without "installing" it? ideally I could just throw a bunch of files in different packages at 6g like I can in java 18:44 < dgreensp> it seems like the paths in "import" refer to installed location 18:44 < Namegduf> I'm not sure I understand what you mean 18:44 < Namegduf> In the second part of the sentence. 18:45 < exch> you can import it without installing, but you need to specify the path in import, or supply the -I and -L flags to the Go linker/compiler, so they know where to look for the packages 18:45 < Namegduf> No, files in different packages cannot be compiled together ever because Go has visibility and namespaces at the package level, not the file level like Java. 18:45 < exch> like import "../bin/mypkg" 18:45 < Namegduf> (Java is technically at the class level, but classes are per file) 18:45 < Namegduf> The first half is easier to answer, and is yes. 18:45 < dgreensp> so if I have "foo/bar.go", and a file "baz.go" that imports "foo/bar", I have to compile and "install" foo/bar first? 18:46 < Namegduf> You have to build. 18:46 < Namegduf> Install, depends on definition of install. 18:46 < Namegduf> import looks by file path, relative to given search directories using -I 18:46 < dgreensp> I see, the .o files just have to be findable 18:46 < Namegduf> No, the .a file has to be. 18:46 < dgreensp> oh... what's .a? 18:46 < pure_x01> is there anyone who can point me to some docs on how to build gccgo 18:47 < pure_x01> from the main gcc trunk 18:47 < Namegduf> .a is the extension of a GO package. 18:47 < Namegduf> *Go 18:47 < Namegduf> It's what gopack outputs. 18:47 < dgreensp> so I have to "pack" foo/bar before I can import it? 18:47 < Namegduf> Yes. 18:47 < Namegduf> And then you need to put the produced .a somewhere specified by -I 18:48 < dgreensp> ok, I'm understanding why makefiles are used better now -- because building a project requires many invocations of the compiler 18:48 < Namegduf> Yes, like most other compiled languages. 18:48 < Namegduf> You need to build and link, and you need to build and link different packages separately. 18:49 < dgreensp> In my, or Go's, defense, the how-to says: "It would be nice to have Go-specific tools that inspect the source files to determine what to build and in what order, but for now, Go uses GNU make." 18:50 < Namegduf> Yes; such a tool could determine what invocations were necessary 18:50 < Namegduf> It wouldn't avoid doing them, it'd just do it for you. 18:50 < exch> Dependency resolution is very easy to do 18:50 < Namegduf> If history is any indicator it'd also be basically useless unless you're the person who designed it 18:51 < Namegduf> But c'est la vie. 18:51 -!- watr_ [~watr@66.183.100.58] has joined #go-nuts 18:53 < dgreensp> heh, in my book a tool that "does something for me" is quite an improvement over copy-pasting a bunch of makefile boilerplate myself 18:53 < Namegduf> That's why it's better, yes. 18:56 < dgreensp> I'll have to understand idiomatic use of packages better, compared to Java and Python packages; I'm looking at the "freetype-go" project, which has five source files and three packages; I guess the nested packages are "installed" into GOROOT before the outer package can compile against them 18:56 < dgreensp> it feels heavyweight but maybe it's not 18:57 < Namegduf> Sounds like the project is using them poorly. 18:58 < Namegduf> Maybe. 18:59 < dgreensp> anyway, thanks for the explanation 19:07 -!- dgreensp [~dgreenspa@68-185-89-44.dhcp.snlo.ca.charter.com] has quit [Quit: dgreensp] 19:09 -!- saschpe [~quassel@opensuse/member/saschpe] has quit [Remote host closed the connection] 19:10 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 19:22 -!- femtoo [~femto@95-89-196-125-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 19:23 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 19:23 < tensai_cirno> hello again 19:23 < tensai_cirno> any1 can check this paste, it is gccgo related → http://pastebin.com/GerL4acU 19:23 < tensai_cirno> troubles with linking with SDL 19:24 < tensai_cirno> gccgo cannot link with SDL_LoadBMP, but same plain oldie C code works fine 19:25 -!- jo___ [~Jo@p4FEB6DCE.dip.t-dialin.net] has quit [Quit: This computer has gone to sleep] 19:28 < nsf> .йгше 19:28 < nsf> oops 19:28 < nsf> sorry :) 19:28 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3] 19:29 -!- illya77 [~illya77@150-69-133-95.pool.ukrtel.net] has joined #go-nuts 19:31 -!- watr_ [~watr@66.183.100.58] has quit [Ping timeout: 255 seconds] 19:38 < tensai_cirno> will try with fresh gcc from trunk 19:40 -!- wrtp [~rog@92.17.4.160] has joined #go-nuts 19:40 -!- Scorchin [~Scorchin@host109-154-144-120.range109-154.btcentralplus.com] has joined #go-nuts 19:42 < aiju> tensai_cirno: given that nick, do you run Plan *9*? 19:52 -!- creack [~charme_g@163.5.84.215] has quit [Ping timeout: 265 seconds] 19:56 < tensai_cirno> aiju, lol 19:56 < tensai_cirno> nope, only inferno 20:03 -!- pure_x01 [~pure@h-4-84.A155.priv.bahnhof.se] has quit [Quit: Ex-Chat] 20:03 -!- wrtp [~rog@92.17.4.160] has quit [Ping timeout: 272 seconds] 20:05 -!- creack [~charme_g@163.5.84.215] has joined #go-nuts 20:07 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 20:07 -!- plediii [~plediii@nat-168-7-237-209.rice.edu] has quit [Quit: plediii] 20:09 -!- wrtp [~rog@92.17.4.160] has joined #go-nuts 20:15 -!- Fish- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 20:16 -!- Fish- [~Fish@9fans.fr] has joined #go-nuts 20:29 -!- illya77 [~illya77@150-69-133-95.pool.ukrtel.net] has quit [Read error: Connection reset by peer] 20:37 < aiju> somehow, the code in my goroutine is never executed o.O 20:39 -!- _DerHorst_ [~Horst@e176127179.adsl.alicedsl.de] has quit [Remote host closed the connection] 20:41 < aiju> i suppose one goroutine can't eat all CPU time 20:41 < Archwyrm> aiju: If your main loop exits, all goroutines exit. 20:41 < aiju> Archwyrm: that's not my problem 20:41 < aiju> i have one goroutine which performs heavy computations 20:42 < aiju> and another one which is waiting for stuff to happen and is never executed 20:42 < aiju> works fine if i set GOMAXPROCS to more than 1 20:42 < Archwyrm> Ah.. Paste? 20:42 < aiju> what do you mean? 20:44 < Archwyrm> aiju: If you paste your code in a pastebin, I (and probably others) would be happy to take a look. 20:45 < aiju> http://phicode.de/git/?p=gb.git;a=summary 20:45 < Archwyrm> I suppose that works too. :) 20:46 < aiju> the goroutine in question is in ppu.go 20:47 < Archwyrm> The eventloop? 20:47 < aiju> yeah 20:48 < Archwyrm> Well, since those events are supposed to come from sdl, it seems more like an SDL related question rather than goroutine related. 20:49 < aiju> no 20:49 < aiju> if i put fmt.Printf("hello\n") on top of that routine, it will never be printed with GOMAXPROCS == 1 20:50 < Archwyrm> Hmm.. That's strange. 20:51 < Archwyrm> I usually get deadlock panics if things are blocked up with GOMAXPROCS == 1 20:52 < Archwyrm> You're not supposed to pump events into that channel yourself are you? (I've never used GoSDL) 20:53 < aiju> nono 20:55 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 20:56 < TheSeeker> what's the difference between Banthar's Go-SDL and 'âš›sdl' 20:56 < TheSeeker> ? 20:56 < aiju> you're utf-8 is broken ;) 20:57 < exch> At some point Banthar's was behind a fair bit. Not sure if his repo has been updated with the changes now though 20:59 < exch> banthars version isn't threadsafe apparently. Along with some other differences 20:59 < aiju> *your 21:07 -!- TheMue [~TheMue@p5DDF616B.dip.t-dialin.net] has quit [Quit: TheMue] 21:08 -!- kashia [~kb@port-92-200-52-15.dynamic.qsc.de] has joined #go-nuts 21:09 < Namegduf> Hmm. 21:09 < Namegduf> I wish Go had critical sections. 21:10 < nsf> what's wrong with mutex? or what do you mean by critical section? 21:10 < Namegduf> Mutex is slow, basically. 21:10 < nsf> well, but you need to sync critical sections somehow 21:10 < nsf> and people use mutex for that 21:11 < Namegduf> The basic flow of this is: A socket becomes readable, a command is received, that goroutine does a bunch of little small operations that alter server state and other goroutines cannot step on, and then goes back to sleep 21:11 < Namegduf> These small operations are slow because of locking and unlocking mutexes. 21:11 < nsf> why can't you lock once and do them all 21:11 < nsf> and then unlock 21:12 < Namegduf> Basically because it's calling across packages 21:16 -!- noktoborus [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping timeout: 245 seconds] 21:17 -!- Netsplit *.net <-> *.split quits: segy, rejb, tux21b, djcapelis, Scorchin, kimelto, Rennex, Cobi, jesusaurus, tvw, (+93 more, use /NETSPLIT to show all of them) 21:19 -!- Netsplit *.net <-> *.split quits: XenoPhoenix 21:19 -!- pothos_ [~pothos@111-240-221-234.dynamic.hinet.net] has joined #go-nuts 21:20 -!- ronnyy [~quassel@drsd-d9ba8c99.pool.mediaWays.net] has joined #go-nuts 21:20 -!- Netsplit over, joins: Cobi, KBme, yiyus, Fish-, rejb, sl, aiju, ExtraSpice, espeed, tsung_ (+94 more) 21:20 < Namegduf> My goal was to compare a concurrent implementation of a highly modular server in Go with less modular, non-concurrent C implementations 21:20 -!- sauerbraten [~sauerbrat@p508CCB1D.dip.t-dialin.net] has quit [Read error: Connection reset by peer] 21:20 -!- ronnyy [~quassel@drsd-d9ba8c99.pool.mediaWays.net] has quit [Remote host closed the connection] 21:20 -!- aiju [~aiju@unaffiliated/aiju] has left #go-nuts ["'x𒍅)'"] 21:20 -!- noktoborus [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts 21:20 -!- pothos [~pothos@111-240-221-234.dynamic.hinet.net] has quit [Write error: Connection reset by peer] 21:20 < nsf> Namegduf: btw, why do you need things like that: http://eu.beshir.org:6060/OddComm/src/main/main.go 21:20 < nsf> modules_* stuff 21:21 < Namegduf> nsf: To force it to link them in 21:21 < Namegduf> Modules call into the core via hooks in init() 21:21 < nsf> afaik there is a way to do that without '_ = ' assignments 21:21 < Namegduf> Not visa versa 21:21 < nsf> import _ "mymodule" 21:21 < Namegduf> Hmm, does that actually make it import it? 21:21 < nsf> yes 21:21 < nsf> that form exists for a sole purpose 21:21 < nsf> of doing init() stuff 21:21 < Namegduf> Eventually it will store the names somewhere so they can be requested and viewed, so it isn't that important, but good to know. 21:22 < Namegduf> Those imports will eventually be generated by the build system, too. 21:22 < Namegduf> Also that yield doesn't work, I should take it out, heh. 21:24 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 21:25 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has quit [Client Quit] 21:28 < nsf> lol, it's funny that godoc hosts the full Go web site as well 21:28 < nsf> http://eu.beshir.org:6060 21:29 < Namegduf> It is. 21:30 < exch> it seems the 'OddComm' link always points to a directory inside the currently opened one 21:35 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has joined #go-nuts 21:42 < uriel> 21:09 < Namegduf> I wish Go had critical sections. 21:42 < uriel> ugh, yuck! 21:43 < uriel> what is wrong with goroutines and channels? 21:43 < nsf> they're slow 21:43 < nsf> but as I've said 21:43 < nsf> it's too early to judge that 21:44 < nsf> I'm sure someone will optimize them in future if Go won't go 21:44 < nsf> there will be papers about effecient CSP implementations :P 21:44 < nsf> efficient* 21:45 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has quit [Quit: Morten. Desu~] 21:45 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has quit [Remote host closed the connection] 22:08 -!- terrex [~terrex@84.122.72.127.dyn.user.ono.com] has quit [Quit: Leaving.] 22:08 -!- rlab [~Miranda@91.200.158.34] has quit [Read error: Connection reset by peer] 22:13 -!- Fish- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 22:27 -!- KirkMcDonald [~Kirk@python/site-packages/KirkMcDonald] has quit [Ping timeout: 255 seconds] 22:41 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit: Verlassend] 22:49 -!- Maxdamantus [~Maxdamant@203-97-238-106.cable.telstraclear.net] has quit [Ping timeout: 265 seconds] 22:49 -!- Maxdamantus [~Maxdamant@203-97-238-106.cable.telstraclear.net] has joined #go-nuts 22:50 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts 22:55 -!- tensorpudding [~user@99.148.202.191] has joined #go-nuts 22:55 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 22:56 -!- dju_ [~dju@fsf/member/dju] has joined #go-nuts 22:59 -!- dju_ [~dju@fsf/member/dju] has quit [Client Quit] 22:59 -!- dju [~dju@fsf/member/dju] has quit [Ping timeout: 240 seconds] 23:00 -!- calsaverini [~user@189.102.85.56] has joined #go-nuts 23:00 -!- dju [dju@fsf/member/dju] has joined #go-nuts 23:00 < calsaverini> hi 23:01 -!- dju [dju@fsf/member/dju] has quit [Read error: Connection reset by peer] 23:05 < Urtie> I am playing with a Reader, and can Peek() inside it and see that there's data in it, but a Buffered()-call always returns 0. What am I missing here? 23:05 -!- napsy [~luka@88.200.96.18] has quit [Read error: Operation timed out] 23:11 < calsaverini> Anyone have any tutorial of how to achieve polymorphism in Go? I started learning Go a few days ago and I still can't understand how I would achieve the same effects I can achieve with generics without the ability to declare a generic type 23:12 < Namegduf> You can't. 23:12 < exch> calsaverini: go has no generics and no concept of type hierarchy. You need to let go of any such notion you have been brainwashed with in java/c++/C#/etc 23:13 < calsaverini> yes, I wish I could 23:13 < calsaverini> :P 23:13 < Namegduf> Go does not have polymorphism, that is, the ability to use one type in place of another, in general 23:13 < Namegduf> It has interfaces, which provide a limited sane subset of that. 23:13 < calsaverini> Actually I'm more of a haskell than a java programmner 23:14 < calsaverini> I am accostumed to declaring things like: f is a function from a to b, forall types a and b. 23:14 < Namegduf> You just plain can't do that. 23:15 < Namegduf> You can have functions which accept any type with a given set of methods. 23:15 < calsaverini> so how I can, for example, define a type that is a generic container, like a list or something like that? 23:15 < Namegduf> That's it. 23:15 < Namegduf> You can't. 23:15 < Namegduf> Except by wrapping them in an interface{} 23:15 < calsaverini> interfaces are quite similar to Haskell's typeclasses 23:15 < exch> you can make a type that contains []interface{}. That's the closest you'll have. But you will need to do a type assertion to actually use the value as whatever it is you need 23:15 < calsaverini> hum. 23:16 < calsaverini> Let's see if I understand. 23:16 < exch> eg: myT := list[i].(T) 23:16 < calsaverini> suppose I want to create an interface List 23:16 < calsaverini> that contains two methods: 23:16 < calsaverini> one that return the head of the list 23:16 < calsaverini> and other that return the rest of the list 23:17 < exch> type List []interface{}; func (l List) Head() interface{} { return l[0] } 23:17 < exch> or something to that effect 23:18 < calsaverini> whoa... haha. I don't think I got it. Wait a min. Let me read that code 23:18 < exch> var l List; l = append(l, "foo"); ... ; head := l.Head(); 23:20 < calsaverini> ok, I'm game 23:21 < calsaverini> Let me try something simpler 23:22 < calsaverini> I'll come back 23:22 < calsaverini> thanks for your patience 23:22 < exch> np 23:23 < calsaverini> I really think go have some fantastic concepts 23:23 < calsaverini> but, as you said 23:23 < calsaverini> I need to let go older concepts to understand the new ones 23:23 < uriel> calsaverini: why don't you try to write some simple project that actually does something useful you want 23:23 < calsaverini> but chan variables are AWESOME 23:23 < exch> It requires a different way of thinking. You can only get used to that by just trying stuff and reading the sources for existing packages 23:24 < uriel> calsaverini: it is sually a bad idea to try to learn new languages by coming up with abstract made up toys that based on the idea of how the implementation should be, rather than trying to solve a real world problem 23:24 < calsaverini> uriel: I'm really not much of a programmer, you see. I don't really program as a professional. 23:24 < uriel> calsaverini: that is irrelevant 23:25 -!- kanru [~kanru@61-228-154-25.dynamic.hinet.net] has quit [Ping timeout: 260 seconds] 23:25 < calsaverini> uriel: I'm a physicist, and I just program to solve simple problems of my research 23:25 < calsaverini> uriel: so I don't have many ideas about things to solve 23:25 < Namegduf> Different languages provide different tools, which are useful to build different designs and data structures to solve problems 23:27 -!- dju [dju@at.dmz.me] has joined #go-nuts 23:27 -!- dju [dju@at.dmz.me] has quit [Changing host] 23:27 -!- dju [dju@fsf/member/dju] has joined #go-nuts 23:28 < Archwyrm> calsaverini: You can always make your own implementation of something that you use that already exists to learn the language. 23:29 < Archwyrm> I believe the Go tutorial includes an re-implementation of cat. Yet another version of this is not needed, but it helps teach the language. 23:31 < exch> Whenever I learn a new language, I go for an IRC bot implementations. I've made dozens of those in all sorts of languages. Since I know how it works, I can just get on with it and focus on the language part of solving the problem 23:32 < exch> For a phycicist I suppose you could just go with a mathy problem you already know how to solve in other languages 23:40 < calsaverini> exch: yes, what I'm trying to do is to implement simple linear algebra 23:42 < calsaverini> exch: I'm trying to implement vector and matrices, but I have no idea how to make them work with multiple types - ints, bools and floats. 23:43 < calsaverini> now I'm turning to something much simpler 23:43 < calsaverini> suppose I want to create an interface of numeric types, with an add(x,y) and multiply(x,y) methods 23:44 < calsaverini> I have no idea what the type of add and multiply should be 23:45 < uriel> calsaverini: this sounds like a very bad idea for a test/learning exercise 23:45 < uriel> way too abstract and generic (pun not intended) 23:46 < exch> you can't really generalize that for multiple numeric types. Go is very stict about which types can be added/subtracted/etc with eachother. interface{} would still be your best bet, but the implementation of each add() sub() etc method will be a pain the ass 23:46 < exch> If this is the most important part of what you need for your work, I really doubt Go is the right way to go at this point 23:47 < exch> not without generics anyways 23:47 < uriel> something like an ircbot is a perfect example of the kind of project that is good to learn a new language 23:47 < calsaverini> hum... it's not really that important 23:48 < calsaverini> What really brought me into trying to learn go is the type of simulation I usually 23:48 < calsaverini> do 23:48 < calsaverini> I frequently do Monte Carlo simulations 23:48 < calsaverini> so I frequently have to run many instances of the same random stuff with different seeds and calculate a mean and variance at the end 23:49 < calsaverini> when I saw the example of the "adder" server in the tutorial 23:49 < calsaverini> that sounded perfect 23:49 < calsaverini> but when I tried to actually implement something it became very confuse :P 23:52 < calsaverini> ok, I'll start something put it on a pastebin and when I have a real concrete difficulty I'll try to get back here with an actual problem someone can help me with 23:52 < calsaverini> :P 23:53 -!- tgillespie_ [~tom@global-1-8.nat.csx.cam.ac.uk] has joined #go-nuts 23:53 < exch> good luck :) 23:54 < exch> This is the 'simplest' method I could come up with to do any sort of 'generic' math operations. Careful though, definite headache material inside :p Also very slow. https://gist.github.com/747844 I use this for a script interpreter 23:55 < exch> The tricky bit about this sort of stuff is Go's lack of implicit conversions from one type to another. There's a good reason they chose to do that, but it makes these sort of usecases a bit of a pain 23:55 < exch> You could argue that Go is not really a good tool to write a script interpreter in in the first place, but I did it anyway :p 23:56 < calsaverini> hum... 23:56 < calsaverini> that's interesting 23:56 < calsaverini> I think I understand the code 23:57 < exch> It handles all valid types for a given math operation and just throws and InvalidOperation error when something is passed as a or b that does not belong 23:57 < calsaverini> yes, it's kind of boilerplatey 23:57 < uriel> calsaverini: you might (or might not) find this interesting: https://github.com/Arrow/GoGCM 23:57 -!- nf [~nf@124-168-173-235.dyn.iinet.net.au] has quit [Ping timeout: 265 seconds] 23:58 -!- nf [~nf@124-168-173-235.dyn.iinet.net.au] has joined #go-nuts 23:58 -!- mode/#go-nuts [+o nf] by ChanServ 23:58 < calsaverini> exch: but I'm kind of accostumed with this kind of boilerplate 23:58 < calsaverini> exch: the similar code in haskell would not be that different 23:59 < exch> good, it's not giving you a heart attack then :p 23:59 < calsaverini> if I define a typeclass (similar to interface in Go) with add and multiply, I'd have to write an instance for Int, an instance for Double, an instance for Bool, etc, etc, 23:59 < exch> With that VM I really am pushing Go into a corner it doesnt belong though. Square peg, round hole kindof thing --- Log closed Mon Dec 20 00:00:01 2010