Go Language Resources Go, golang, go... NOTE: This page ceased updating in October, 2012

--- Log opened Wed Mar 30 00:00:50 2011
00:05 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net]
has quit [Ping timeout: 246 seconds]
00:06 -!- quietdev [~chatzilla@unaffiliated/quietdev] has left #go-nuts []
00:12 < skelterjohn> make sure you break it
00:13 < skelterjohn> so i can fix it
00:13 < skelterjohn> whoah - i got the rob pike seal of approval for the
name
00:14 -!- bugQ [~bug@c-67-171-127-76.hsd1.ut.comcast.net] has joined #go-nuts
00:17 -!- evanx [~evanx@modemcable145.223-22-96.mc.videotron.ca] has joined
#go-nuts
00:19 < dforsyth> i think there needs to be some vimscript to plug this into
vim
00:21 < skelterjohn> I know nothing about vim, so I'm not the guy to make it
00:23 < skelterjohn> but if it made sense, i'd certainly add the capability
to the repos
00:25 < dforsyth> ive never written a line of vimscript in my life, but if
no one else does it in like 4 or 5 days ill take a look
00:25 < dforsyth> would be pretty handy
00:26 * exch angers himself some more on haskell
00:27 < exch> The more I learn about the language, the angrier I get.  But
it's become a matter of principle now.  I refuse to be beaten by it >:@
00:27 < dforsyth> ha
00:27 < skelterjohn> i chose wisely and swore off haskell before i ever
began
00:27 < exch> skelterjohn: I tried that many times.  But it keeps nagging at
me
00:28 < skelterjohn> i looked at some source once and decided it was ugly
00:28 < exch> "Why oh why do people swear by it?  Am I really that gullible
for not understanding?"
00:28 < skelterjohn> that was all i needed
00:28 < dforsyth> yeah its pretty gross looking to me
00:28 < dforsyth> i generally cant force myself to learn something unless i
can think of something i want to make in it, and i cant think of anything to make
in haskell
00:30 < exch> I generally try to build a working IRC bot in any new language
I encounter.  So far that has worked out nicely for all languages.  But here I
just find myself wrestling for an hour just to create function that converts a
string to lower case -.-
00:30 < exch> I was victorious though!  http://pastie.org/1733331
00:30 < exch> me: 1, haskell: 0
00:30 < skelterjohn> oh gross
00:30 < dforsyth> it sounds like haskell has a much higher score than 0
00:30 < exch> dforsyth: shh.  dont depress me any further
00:30 < skelterjohn> if i can't look at some code, without knowing the
language, and understand it
00:31 < skelterjohn> then it's not a language i want to learn
00:32 < exch> It has some seemingly bizarre code indentation rules to
00:32 < exch> No idea why it needs those to begin with
00:34 -!- matsur [~matsur@dyn-207-111.vpn.wisc.edu] has quit [Quit: matsur]
00:43 < skelterjohn> how can i check if something satisfies
http://golang.org/doc/go_spec.html#unicode_letter
00:45 -!- st-17217 [~st-17217@a89-154-147-132.cpe.netcabo.pt] has quit [Ping
timeout: 264 seconds]
00:47 < plexdev> http://is.gd/cpoD3b by [Andrew Gerrand] in go/src/pkg/time/
-- time: make TestAfterQueuing retry 3 times before declaring failure.
00:47 < skelterjohn> aha, the "unicode" package
00:47 < skelterjohn> i'm a genius
00:50 -!- nettok [~quassel@200.119.157.9] has joined #go-nuts
00:58 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Read error: Connection
reset by peer]
00:59 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
01:00 -!- mikespook [~mikespook@219.137.73.42] has joined #go-nuts
01:03 -!- iant [~iant@67.218.107.170] has quit [Quit: Leaving.]
01:08 -!- pphalen [~pphalen@66.92.11.149] has left #go-nuts []
01:14 < steven> <3
01:18 -!- saturnfive [~saturnfiv@210.74.155.131] has joined #go-nuts
01:26 < skelterjohn> hi stalled
01:26 < skelterjohn> err
01:26 < skelterjohn> steven:
01:27 < steven> <3
01:30 -!- m4dh4tt3r [~Adium@157.sub-75-210-120.myvzw.com] has joined #go-nuts
01:34 < bugQ> skelterjohn: I've mostly forgotten how to haskell but the
lcase thing mostly makes sense to me
01:34 < plexdev> http://is.gd/aPdJ4W by [Robert Griesemer] in 4 subdirs of
go/src/ -- go/printer/gofmt: remove special case for multi-line raw strings
01:34 < bugQ> inferring that !!  is array indexing
01:34 < skelterjohn> if you once knew haskell, and a simple to-lower
function "mostly" makes sense....
01:35 < bugQ> and yeah I guess it also requires knowing what Maybe is
01:35 < bugQ> lol nvm.
01:36 < skelterjohn> if the semantics are simple, the syntax should be too
01:37 < bugQ> but doesn't "simple" really just mean "C-like" for a lot of
languages?
01:37 < bugQ> or whatever you're familiar with
01:37 < bugQ> hard to be objective about it
01:41 < bugQ> I mean that's why they changed all the keywords from Limbo
when they made Go
01:44 < exch> the !!  is indeed array indexing
01:47 -!- bugQ [~bug@c-67-171-127-76.hsd1.ut.comcast.net] has quit [Ping timeout:
250 seconds]
01:57 -!- pphalen [~pphalen@66.92.11.149] has joined #go-nuts
02:08 -!- aconran__ [~aconran-o@38.104.129.126] has quit [Read error: Connection
reset by peer]
02:11 < crazy1be> import Maybe?
02:12 < crazy1be> does that *maybe* import something?
02:14 < exch> 'Maybe' seems to be a construct that allow expression return
values to be undetermined.  haskell wants everything to be explicit, so if a
function can possibly have a null or -1 or whatever as return vvalue..  you must
use a 'Maybe x' datatype as return value
02:15 < exch> in that code the indexof thing returns 'Maybe int'
02:16 < exch> Not sure why it can't just return -1
02:17 < exch> fromMaybe should then be used to cast it an actual int.  If
the return value is not an int, the first argument is (0) is used instead
02:19 < exch> Something else I noticed is that importing the Maybe module
also links in filesystem, syscall, Time, and other IO related modules -.-
02:20 < skelterjohn> seems a bit like the unsafe package
02:30 -!- vpit3833 [~user@203.111.33.203] has quit [Ping timeout: 246 seconds]
02:33 -!- vpit3833 [~user@203.111.33.203] has joined #go-nuts
02:33 -!- m4dh4tt3r [~Adium@157.sub-75-210-120.myvzw.com] has quit [Ping timeout:
250 seconds]
02:34 -!- randfur [~AndChat@58.145.148.89] has joined #go-nuts
02:34 -!- aconran [~aconran-o@38.104.129.126] has joined #go-nuts
02:51 -!- thebarberian [~Master_Co@222-74-252-216.dsl.colba.net] has left #go-nuts
[]
03:02 -!- randfur [~AndChat@58.145.148.89] has quit [Quit: Bye]
03:02 -!- shvntr [~shvntr@113.84.145.193] has joined #go-nuts
03:14 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 252 seconds]
03:21 -!- pilgrum [~pilgrum@cpe-67-49-71-222.socal.res.rr.com] has joined #go-nuts
03:39 -!- aho [~nya@fuld-590c72d8.pool.mediaWays.net] has quit [Quit:
EXEC_over.METHOD_SUBLIMATION]
03:41 -!- nettok [~quassel@200.119.157.9] has quit [Ping timeout: 260 seconds]
03:54 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts
03:54 -!- mode/#go-nuts [+v iant] by ChanServ
03:56 -!- clip9 [clip9@er.en.svarteper.com] has quit [Ping timeout: 240 seconds]
03:58 -!- clip9 [clip9@er.en.svarteper.com] has joined #go-nuts
04:10 -!- globber [~globber@c-98-243-88-34.hsd1.mi.comcast.net] has joined
#go-nuts
04:11 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 246 seconds]
04:17 -!- zozoR [~Morten@56344e3e.rev.stofanet.dk] has joined #go-nuts
04:18 -!- keithcascio [~keithcasc@nat/google/x-fxivpsbrjihvcbsh] has quit [Quit:
Leaving]
04:51 -!- edsrzf [~chickench@122-61-221-144.jetstream.xtra.co.nz] has joined
#go-nuts
05:16 -!- zozoR [~Morten@56344e3e.rev.stofanet.dk] has quit [Remote host closed
the connection]
05:28 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has joined
#go-nuts
05:30 -!- pphalen [~pphalen@66.92.11.149] has left #go-nuts []
05:41 -!- madari [madari@AM.irc.fi] has quit [Quit: leaving]
05:41 -!- madari [madari@idm.irc-galleria.net] has joined #go-nuts
05:48 -!- crazy1be [~crazy2be@d209-89-248-73.abhsia.telus.net] has quit [Ping
timeout: 276 seconds]
05:50 -!- ivan` [~ivan@unaffiliated/ivan/x-000001] has quit [Ping timeout: 252
seconds]
05:52 < plexdev> http://is.gd/cwXdZx by [Andrew Gerrand] in
go/src/cmd/godoc/ -- godoc: remove errant space in HTML tag
06:03 -!- ivan` [~ivan@unaffiliated/ivan/x-000001] has joined #go-nuts
06:08 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has quit [Ping
timeout: 252 seconds]
06:11 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts
06:11 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts []
06:12 -!- [dmp] [~dennis@unaffiliated/dmp/x-546784] has joined #go-nuts
06:18 -!- chin_up [~chatzilla@115.200.52.211] has joined #go-nuts
06:30 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts
06:42 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts
06:48 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts
06:53 -!- mikespook [~mikespook@219.137.73.42] has quit [Ping timeout: 260
seconds]
06:55 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts
06:56 -!- mikespook [~mikespook@183.47.228.78] has joined #go-nuts
06:57 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has quit [Quit:
Leaving]
07:00 -!- tvw [~tv@212.79.9.150] has joined #go-nuts
07:01 -!- Maxdamantus [~Maxdamant@203-97-238-106.cable.telstraclear.net] has quit
[Ping timeout: 246 seconds]
07:02 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
07:03 -!- ExtraSpice [XtraSpice@88.118.35.153] has joined #go-nuts
07:24 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|]
07:36 -!- wrtp [~rog@92.17.50.183] has joined #go-nuts
07:41 -!- skejoe [~skejoe@188.114.142.162] has quit [Quit: Lost terminal]
07:48 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
08:05 -!- venk [~user@CPE-124-189-81-145.azsz1.cht.bigpond.net.au] has joined
#go-nuts
08:19 -!- chin_up [~chatzilla@115.200.52.211] has quit [Quit: ChatZilla 0.9.86.1
[Firefox 4.0/20110318052756]]
08:20 -!- napsy [~luka@193.2.66.6] has joined #go-nuts
08:22 -!- pilgrum [~pilgrum@cpe-67-49-71-222.socal.res.rr.com] has quit [Quit:
Leaving]
08:28 -!- cbeck1 [cbeck@gateway/shell/pdx.edu/x-emtftxlbzkcnhkbs] has joined
#go-nuts
08:29 -!- niekie [~niek@CAcert/Assurer/niekie] has quit [Read error: Operation
timed out]
08:29 -!- cbeck [cbeck@gateway/shell/pdx.edu/x-tvxvhslxdodevrjf] has quit [Read
error: Connection reset by peer]
08:30 -!- serbaut1 [~joakims@88.80.182.68] has quit [Ping timeout: 260 seconds]
08:30 -!- niekie [~niek@CAcert/Assurer/niekie] has joined #go-nuts
08:30 -!- serbaut [~joakims@88.80.182.68] has joined #go-nuts
08:32 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving]
08:34 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has
joined #go-nuts
08:35 -!- petrux_ [~petrux@host16-224-static.53-82-b.business.telecomitalia.it]
has joined #go-nuts
08:40 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has joined #go-nuts
08:46 -!- Project_2501 [~Marvin@82.84.81.241] has joined #go-nuts
08:46 -!- snearch [~snearch@f053000130.adsl.alicedsl.de] has joined #go-nuts
08:46 -!- edsrzf [~chickench@122-61-221-144.jetstream.xtra.co.nz] has quit [Remote
host closed the connection]
08:56 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts
08:57 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts []
08:57 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has quit [Read error:
Connection reset by peer]
08:59 -!- kanru_ [~kanru@kanru-1-pt.tunnel.tserv15.lax1.ipv6.he.net] has joined
#go-nuts
09:06 -!- kanru [~kanru@kanru-1-pt.tunnel.tserv15.lax1.ipv6.he.net] has quit
[Quit: WeeChat 0.3.2]
09:11 -!- arvindht [7c7cdbfa@gateway/web/freenode/ip.124.124.219.250] has joined
#go-nuts
09:23 -!- bXi [bluepunk@irssi.co.uk] has quit [Ping timeout: 248 seconds]
09:23 -!- bXi [bluepunk@irssi.co.uk] has joined #go-nuts
09:31 -!- venk [~user@CPE-124-189-81-145.azsz1.cht.bigpond.net.au] has quit [Quit:
ERC Version 5.3 (IRC client for Emacs)]
09:33 -!- mikespook [~mikespook@183.47.228.78] has quit [Quit: Leaving.]
10:05 -!- sabayonuser3
[~sabayonus@cpc2-lewi14-2-0-cust407.2-4.cable.virginmedia.com] has joined #go-nuts
10:17 -!- randfur [~AndChat@58.145.148.59] has joined #go-nuts
10:18 < dellaxim> Hi, I have a package "gohdf5" and export a function 'func
H5open() __asm__ ("H5open")'.  Could anybody let me know how to compile&link this
package with libhdf5 using gccgo?
10:24 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has joined
#go-nuts
10:24 < hallas> Does anyone know whats wrong with ResponseWriter?  Its
supposed to implement a SetHeader function, but doesnt.  Just checked with the
documentation.  :-(
10:26 < hallas> Ah right.  It uses the Header thing now.  Documentation just
doesnt say so.
10:26 -!- randfur [~AndChat@58.145.148.59] has quit [Ping timeout: 240 seconds]
10:26 < hallas> http://golang.org/src/pkg/http/server.go?s=1245:2528#L41
10:32 -!- Fish- [~Fish@exo3753.pck.nerim.net] has joined #go-nuts
10:35 -!- Fish [~Fish@exo3753.pck.nerim.net] has quit [Ping timeout: 255 seconds]
10:39 -!- randfur [~AndChat@58.145.148.69] has joined #go-nuts
10:42 < jnwhiteh> hallas: http://goneat.org/pkg/http/#ResponseWriter
10:42 < jnwhiteh> golang.org is on an older version of the code
10:42 < jnwhiteh> goneat.org stays more current
10:42 < jnwhiteh> or you can always use godoc =)
10:43 < hallas> Well, I just went to the src folder and found it my self.
Think I am gonna godoc the stuff from now on, keep the documentation close by :)
Thanks.
10:47 -!- randfur [~AndChat@58.145.148.69] has quit [Quit: Bye]
10:51 -!- randfur [~AndChat@58.145.148.69] has joined #go-nuts
10:54 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-154-101.clienti.tiscali.it] has
joined #go-nuts
10:57 -!- Project_2501 [~Marvin@82.84.81.241] has quit [Ping timeout: 252 seconds]
11:10 -!- randfur [~AndChat@58.145.148.69] has quit [Quit: Bye]
11:26 -!- Netsplit *.net <-> *.split quits: l00t, Soultaker, [dmp]
11:27 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has left
#go-nuts []
11:27 -!- Netsplit over, joins: Soultaker
11:29 -!- l00t [~i-i3id3r_@189.105.7.59] has joined #go-nuts
11:31 -!- [dmp] [~dennis@unaffiliated/dmp/x-546784] has joined #go-nuts
11:35 -!- nesusvet [~nesusvet@195.218.191.171] has joined #go-nuts
11:47 -!- boscop__ [~boscop@f055168103.adsl.alicedsl.de] has joined #go-nuts
11:50 -!- artefon [~thiago@dhcp37.usuarios.dcc.ufmg.br] has joined #go-nuts
11:50 -!- zozoR [~Morten@56344e3e.rev.stofanet.dk] has joined #go-nuts
11:50 < xyproto> gonuts.org is quicker than goneat.org here, and also
updated
11:59 < wrtp> xyproto: i thought goneat.org was updated every hour
12:07 -!- napsy [~luka@193.2.66.6] has quit [Quit: Lost terminal]
12:14 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net]
has joined #go-nuts
12:27 < mpl> adg: hello.  jsyk, when trying to run the gob example from the
end of your blog post in the go playground, I get a "processe took too long" as
output.
12:28 -!- snearch [~snearch@f053000130.adsl.alicedsl.de] has quit [Quit:
Verlassend]
12:32 < xyproto> wrtp: that may be, I was thinking about the retrieval of
the webpages from the server
12:42 < wrtp> mpl: have you tried changing the code slightly (add a space)
and trying again?
12:42 -!- arvindht [7c7cdbfa@gateway/web/freenode/ip.124.124.219.250] has left
#go-nuts []
12:44 -!- PortatoreSanoDiI [~Marvin@dynamic-adsl-94-36-176-182.clienti.tiscali.it]
has joined #go-nuts
12:47 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-154-101.clienti.tiscali.it] has
quit [Ping timeout: 250 seconds]
12:51 < mpl> wrtp: no.  why?
12:54 < wrtp> mpl: because the go playground hashes by source code content -
if an instance happens to time out, then all subsequent instances will be marked
as timing out
12:54 < wrtp> it's worth trying
12:54 < mpl> ah
12:55 < wrtp> yup, works for me
12:55 < wrtp> (try adding a new line at the end)
12:56 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts
12:59 -!- Project_2501 [~Marvin@82.84.82.99] has joined #go-nuts
13:00 < mpl> wrtp: indeed, works too with a newline.
13:02 < mpl> adg: maybe that "trick" should be added there
http://golang.org/doc/playground.html ?
13:02 -!- PortatoreSanoDiI [~Marvin@dynamic-adsl-94-36-176-182.clienti.tiscali.it]
has quit [Ping timeout: 250 seconds]
13:02 -!- saturnfive [~saturnfiv@210.74.155.131] has quit [Read error: Connection
reset by peer]
13:22 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts
13:23 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 246 seconds]
13:26 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Quit:
Leaving.]
13:36 -!- Venom_X [~pjacobs@75.92.43.21] has joined #go-nuts
13:37 < xyproto> what really happens when a number is assigned to an
interface{}?  Like var i interface{} = 123
13:38 < xyproto> is an .(int) method created that returns the number, is the
number stored in some sort of struct?
13:38 < nsf> xyproto: interface{} is usually a pair of two pointers
13:38 < nsf> but in case if value fits in sizeof(*void) (aka pointer size)
13:38 < nsf> it's written directly to the pointer
13:38 < nsf> so
13:38 < xyproto> nsf: aha, that explains a lot
13:38 < nsf> var i interface{} = 123
13:38 < nsf> will end up as a structure
13:39 < nsf> {123, <pointer to type information for int>}
13:39 < nsf> which will take 8 bytes on x86
13:39 -!- foocraft [~dsc@178.152.44.249] has joined #go-nuts
13:39 < nsf> and 16 bytes on x86_64
13:41 < xyproto> nsf: great, thanks for the enlightening explanation!
13:41 < nsf> yeah, I'm trying to figure out how one would make interfaces
without garbage collector
13:42 < nsf> because if the value is greater than sizeof(*void)
13:42 < nsf> you need to allocate a memory for it
13:42 < nsf> and then maintain value semantics
13:42 < ww> 'afternoon...  some go stuff for you:
http://eris.okfn.org/ww/2011/03/gockan
13:42 < nsf> e.g.  when interface is assigned to another interface, value
got copied
13:43 -!- iant [~iant@67.218.107.170] has joined #go-nuts
13:43 -!- mode/#go-nuts [+v iant] by ChanServ
13:43 < nsf> hm, I guess I will have to provide that semantics
13:44 < nsf> but it will do automatic memory management :(
13:44 < wrtp> xyproto: this is a useful reference:
http://research.swtch.com/2009/12/go-data-structures-interfaces.html
13:45 < nsf> hm..  but there is another case
13:45 < nsf> global interface variables
13:46 -!- rejb [~rejb@p4FD74086.dip.t-dialin.net] has joined #go-nuts
13:46 -!- rejb [~rejb@p4FD74086.dip.t-dialin.net] has quit [Changing host]
13:46 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
13:46 < nsf> currently I started to understand that GC is a big part of Go
and you can't easily kick it out
13:46 < wrtp> ww: cool
13:47 < wrtp> nsf: indeed :-)
13:47 < nsf> for example allowing dynamic initialization for global
variables
13:47 < nsf> doesn't make a lot of sense
13:48 < nsf> because you need to clean them out at some point
13:48 < nsf> unless it doesn't matter of course
13:49 < wrtp> what?  why do you ever need to clean out global variables?
13:49 < nsf> who knows :)
13:49 < nsf> personally I don't like them at all
13:49 < wrtp> that's the least of your worries :-)
13:49 < nsf> (like weird implicit caches, etc)
13:50 < nsf> and I must say 'net' library in Go
13:50 < nsf> has some
13:50 < wrtp> i don't see how dynamic global variables are any different
from any other global variable
13:50 < nsf> wrtp: yeah, that's true
13:50 < nsf> I won't remove that feature
13:50 < nsf> (code execution before 'main')
13:50 < nsf> but it's nature is changed
13:50 < nsf> to me
13:51 < wrtp> i think that the dependency tree approach to global variable
initialisation is briliant
13:51 < nsf> as for interfaces, I think it's possible to keep interface
values on the stack :)
13:51 < nsf> even if they are bigger than sizeof(*void)
13:51 < wrtp> you can't
13:51 < nsf> I think I can :)
13:51 < exch> ww: interesting read.  You should submit this to HackerNews.
It mark spark some interesting discussion and at least help to get Go 'out there'
a bit more :)
13:51 < exch> s/mark/may/
13:52 < wrtp> what about x := []interface{}{5, 4+5i}
13:52 < wrtp> what size is the array element of x?
13:52 < nsf> I don't have slices first of all
13:52 < ww> exch: sure, why not?
13:52 < nsf> wrtp: 8 bytes on x86
13:53 < nsf> wrtp: but it will reserve a space on stack for that complex
number
13:53 < nsf> and the pointer will point to that space
13:53 < wrtp> nsf: ok, what about func f(a, b interface{}) { ...  };
f(struct{a, b, c float64}{}, 5)
13:53 < nsf> the tricky part is passing between functions, yeah
13:53 < nsf> there must be a convention
13:54 < nsf> when function receives an interface
13:54 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has joined #go-nuts
13:54 < nsf> it allocates (hello 'alloca') place for its value on the stack
13:54 < nsf> and does the actual copy
13:54 < wrtp> but you have pointer arithmetic, right?  how do you know how
much to increment a pointer to interface{} ?
13:54 < nsf> uhm, interface{} is always 8 bytes
13:54 < skelterjohn> not if its entirely on the stack...
13:55 < wrtp> exactly
13:55 < skelterjohn> unless you just use another part of the stack as the
heap
13:55 < nsf> it's always 8 bytes
13:55 < nsf> the question is
13:55 < exch> ww: want me to do it?
13:55 < wrtp> nsf: do you have arrays?
13:55 < nsf> interface contains data pointer, where it points to?
13:55 < nsf> wrtp: yes
13:55 < ww> exch: i dust did...  had to make an account first
13:55 < exch> ok :)
13:55 < ww> none of these web sites like my username...  what's wrong with
two character names?
13:55 < wrtp> nsf: so how do you deal with arrays of interface?
13:56 < exch> probably raises spambot flags all over :p
13:56 < wrtp> if all the interfaces are on the stack?
13:56 < nsf> wrtp: what array changes?  it's like multiple interfaces on the
stack
13:56 < nsf> you're not listening..  let me draw a picture for you
13:56 < nsf> I think I'm bad at explaining things
13:57 < skelterjohn> nsf - he is wondering where the variable-sized data
will go
13:57 < wrtp> i think i know what you're talking about - you just want to
use the stack as a heap
13:58 < skelterjohn> since you say the interface itself is always 8 bytes
13:58 < nsf> skelterjohn: yeah, I got it
13:58 < nsf> wrtp: yes!  :)
13:58 < skelterjohn> the whole thing about stacks is that you know how big a
stack frame will be at compile time
13:58 < skelterjohn> otherwise, you just have a whole bunch of heap
13:58 < nsf> skelterjohn: then what 'alloca' does?
13:58 < skelterjohn> and there is no reason to distinguish between heap and
stack
13:58 < nsf> shifts stack pointer?
13:58 < Namegduf> I would assume assigning something into an interface
copies it onto the heap
13:58 < skelterjohn> i don't know what alloca does, but it sounds gross
13:58 < nsf> it's faster than heap alloc anyway
13:59 < Namegduf> As the interface stores an address
13:59 < skelterjohn> Namegduf: he's talking about his language
13:59 < Namegduf> Oh, I see.
13:59 < nsf> Namegduf: interface is tricky
13:59 < Namegduf> Are you actually looking at variably-sized interfaces?
13:59 < wrtp> i understand about alloca, but you can never return an
alloca'd pointer
13:59 < nsf> if the value fits to 4-8 bytes, then it's stored directly
13:59 < wrtp> so you won't be able to return an interface bigger than a
pointer
13:59 < skelterjohn> bbl
13:59 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
13:59 < nsf> wrtp: hm..  returning interface values, another issue
13:59 < Namegduf> If not, then just treat sticking something in an interface
as taking the address of it
14:00 < wrtp> nsf: same issue as storing them anywhere
14:00 < Namegduf> Which is unsafe if it is on the heap and you return it
14:00 < Namegduf> Er, stack
14:00 < nsf> Namegduf: the problem with interfaces - they maintain value
semantics
14:00 < nsf> e.g.:
14:00 < nsf> var x MyBigStruct
14:00 < nsf> var i interface{} = x
14:00 < wrtp> Namegduf: yeah, but nsf doesn't care about that.  he'll have a
free operator presumably
14:01 < nsf> now 'i' contains the copy of 'x'
14:01 < Namegduf> Right.
14:01 < ww> meh.  these crawlers...
14:01 < nsf> var j interface{} = i
14:01 < nsf> now 'j' contains the copy of 'x' as well
14:01 < Namegduf> Oh, I see.
14:01 < Namegduf> Use a reference counted item on the heap?
14:01 < nsf> and I can't just use interfaces as pointers
14:01 < wrtp> Namegduf: no, because they can be cyclic
14:01 < nsf> Namegduf: bad idea
14:01 < nsf> I can provide that value semantics using heap
14:01 < Namegduf> wrtp: Interfaces can contain themselves?
14:02 < nsf> no problem
14:02 < Namegduf> Ick
14:02 < ww> i just published that thing, it's on a non-standard port where
normally things aren't listening...  and already google and the netEstate FOAF
crawler are indexing my index
14:02 < nsf> but it causes allocs
14:02 < wrtp> Namegduf: var x interface{}; x = &x
14:02 < nsf> I'd like to avoid them
14:02 < exch> ww: lol I've had similar experiences in the past.  It's
slightly creepy just how fast Google bots are all over your stuff.
14:02 < nsf> well and I will issue warning for very big interface values
anyway
14:02 < xyproto> wrtp: thanks for the link, I will read it
14:03 < nsf> because using pointers sometimes makes more sense
14:03 < wrtp> nsf: i think you'll have to ditch interfaces
14:03 < nsf> wrtp: we'll see
14:04 < wrtp> (or make them heap-allocate)
14:04 < wrtp> i think that's fine though - when you've done with an
interface, you free it
14:04 < nsf> persoanlly I think you can return a pointer to an 'alloca'ed
value
14:04 < nsf> but the problem is
14:04 < nsf> you need to copy it somewhere
14:04 < nsf> and to do that you allocate stack space and boom
14:04 < nsf> it's overwritten
14:05 < nsf> :(
14:05 < wrtp> if you copy it somewhere, then you might as well heap allocate
it in the first place
14:05 < nsf> heap allocation is an option, yes
14:05 < wrtp> x := functionReturningInterface(); y :=
functionUsingLotsOfStack(); return x
14:06 < nsf> you see, the problem here:
14:06 < ww> oh and uriel, if you're listening, a part of that project that
should be generally useful and reusable: https://bitbucket.org/okfn/goautoneg
14:06 < nsf> first function allocates a place for a value on its stack
14:06 < ww> does Accept header auto negotiation
14:06 < nsf> then when it returns it
14:06 < nsf> you need a place for it immediately
14:06 < nsf> and you can't use stack
14:06 < nsf> because it will overwrite that value
14:06 < wrtp> you can copy things around without using stack, no problem
14:06 < nsf> no way to save the value :)
14:06 < wrtp> (unless you're targetting C of course :-])
14:06 < nsf> but where?
14:07 < nsf> heap is the only choice that will work
14:07 < wrtp> indeed - that's what the heap is for
14:07 -!- saturnfive [~saturnfiv@219.144.163.55] has joined #go-nuts
14:07 < nsf> another option: restricting interfaces to pointer values
14:08 < nsf> but that's the whole different story
14:08 -!- emjayess [~emjayess@pix1.i29.net] has joined #go-nuts
14:08 < nsf> although in Go using 'int' or 'float' as an interface
14:09 < nsf> isn't that useful
14:09 < nsf> what's useful is built-in types
14:09 < wrtp> nsf: you've got the same problem then - if you want to put a
larger value in an interface, you need to malloc it
14:09 < nsf> []string as interface{} for example
14:09 < wrtp> so you can store a pointer in the interface
14:09 < nsf> wrtp: yeah
14:09 < wrtp> but then there's no way to free it
14:09 < nsf> there is
14:09 < wrtp> because the interface is opaque
14:09 < nsf> I can provide access to that pointer
14:09 < nsf> and I will :)
14:10 < nsf> I'm not Go :)
14:10 < nsf> (e.g.  unsafe)
14:10 < wrtp> ok, but if something returns an interface, how do i know if
it's appropriate to free its pointer or not?
14:10 < wrtp> it might be pointing to some static strucutre
14:10 < wrtp> *structure
14:10 < nsf> the same way if it would return an ordinary pointer
14:11 < wrtp> yeah, but an ordinary pointer usually means only one thing
14:11 < wrtp> and has attached semantics
14:11 < wrtp> (i.e.  free this, or don't free this)
14:11 < wrtp> but with an interface, the whole point is that it may be any
number of things underneath
14:11 < nsf> I can make a "Free" function as a part of interface
14:12 < nsf> that should be called when you're done
14:12 < nsf> noop for values for example
14:12 < nsf> in fact it's the only way to do that
14:12 < nsf> for a lot of cases
14:13 < nsf> because value may contain a structure with a pointer which
points to an allocated space
14:13 < wrtp> sure
14:13 < nsf> in manual memory management "type Freeer interface { Free() }"
will be as common as Go's Stringer :)
14:13 < nsf> ("Freeer" is a bad name though)
14:14 < wrtp> so does that mean you can't put a string in an interface
without it leaking?
14:14 < nsf> I don't have a string type
14:14 < nsf> *byte
14:14 < nsf> :)
14:14 < nsf> wrtp will not use my language
14:14 < nsf> :)
14:14 < wrtp> yeah, but it's interesting to see where you're trying to go...
14:15 < nsf> it's interesting for me too
14:15 < wrtp> so your strings are zero terminated?
14:15 < nsf> yes, of course
14:15 < wrtp> bad move
14:15 < wrtp> it's a C design flaw
14:15 < nsf> one of the top priorities is C compatibility
14:15 < nsf> but again
14:15 < nsf> I don't have a string type
14:15 < nsf> it's just memory as in C
14:15 < wrtp> you can be C compatible and still have length-counted strings
14:16 < nsf> and I will have them in a library
14:16 < nsf> I'm sure
14:16 < wrtp> better to have them built in
14:16 < nsf> not to me
14:17 < nsf> also the case where length-based strings are important is
slicing
14:17 < nsf> e.g.  you can reuse the memory of a larger string
14:18 < nsf> it can be provided easily without built-in strings
14:18 < nsf> for example LLVM and clang use that
14:18 -!- napsy [~luka@88.200.96.18] has joined #go-nuts
14:18 < nsf> I don't see a big point in Go's strings
14:18 < wrtp> nsf: sure, but it's awkward
14:19 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has joined #go-nuts
14:20 < wrtp> if you don't have strings built in, then will everything in
the standard library take null terminated strings?
14:20 < nsf> I have no idea at the moment
14:21 < nsf> but string literals will return a pointer to a null terminated
string
14:21 < wrtp> so converting to a length-based string will be O(n)
14:22 < nsf> not necessary
14:22 < nsf> especially when templates will arive
14:22 < nsf> uhm
14:23 < wrtp> uhm...
14:23 < Namegduf> Null-terminated strings.  :(
14:23 < nsf> arrive*
14:23 < Namegduf> I figure you need it for C compatibility.
14:23 < nsf> Namegduf: yes
14:23 < Namegduf> But still, :(
14:23 < nsf> e.g.:
14:23 < nsf> import "sdl.h" as sdl;
14:24 < nsf> sdl.SDL_WM_SetWindowCaption("123", "123");
14:24 < nsf> or something
14:24 < nsf> without any kind of bindings
14:27 -!- saturnfive [~saturnfiv@219.144.163.55] has left #go-nuts []
14:28 < nsf> hehe, it will a really different language
14:28 < nsf> which is good
14:28 < nsf> more languages more fun
14:29 < nsf> :)
14:29 < wrtp> seems like it'll just be a C front end to me :-)
14:29 < Namegduf> I'm wondering if it will end up too hampered by C
compatibility.  :(
14:30 < nsf> Namegduf: maybe, but I'm taking a different path than C++, but
close to D actually, although D can't use C headers directly (which is kind of
surprising, because it has even tools which convert .h to .d)
14:31 < nsf> although it should be much simpler than D
14:31 < wrtp> i just got my type resolver working on every symbol in the go
source tree, yay!
14:31 < nsf> wrtp: what are you working on?  :)
14:32 < nsf> tool or compiler?
14:32 < wrtp> tool - i did it ages back but i've resurrected it
14:32 -!- chin_up [~chatzilla@115.200.50.1] has joined #go-nuts
14:32 < nsf> I see
14:33 < wrtp> for any symbol it tells you where it was defined and its type
and members
14:33 < nsf> I can tweak gocode for that function in a day
14:33 < nsf> :)
14:33 < wrtp> so it can be used to jump straight from, say, a method name in
source code to its definition
14:34 < wrtp> nsf: really?  i thought gocode parsed .a files.
14:34 < nsf> wrtp: it does semicomplete type inference as well
14:34 < nsf> in the source code
14:35 < nsf> so it knows about types, their members
14:35 < nsf> it doesn't track definition locations though
14:35 < wrtp> yeah, that's the main thing that this tool does
14:36 < wrtp> and the type inference works completely which is satisfying
14:36 -!- chin_up [~chatzilla@115.200.50.1] has quit [Read error: Connection reset
by peer]
14:36 < wrtp> there are quite a few special cases around :-)
14:38 < nsf> the only problem so far with gocode
14:38 < nsf> is method expressions
14:38 < nsf> something like:
14:38 < nsf> x := bytes.Buffer.Len
14:38 < nsf> it doesn't know the exact type of 'x'
14:38 < wrtp> what's hard about that?
14:38 < nsf> nothing
14:39 < nsf> it just wasn't implemented :)
14:39 < nsf> because it doesn't affect the correctness of autocompletion
14:39 < wrtp> method expressions are harder than some bits.  you've got to
do the shallow-first rule.
14:39 < nsf> 'x' doesn't have members
14:39 < wrtp> nsf: yes it does
14:39 < wrtp> well, it could
14:40 < nsf> well I don't care about corner cases
14:40 < wrtp> it's quite common to do: x := Foo.Bar; y := x.Something()
14:40 < nsf> I haven't seen anyone using method expressions
14:40 < wrtp> oh, sorry, of course
14:40 < wrtp> Len is a method
14:41 < nsf> it's type is: func(*bytes.Buffer)
14:41 < nsf> ah
14:41 < nsf> it's type is: func(*bytes.Buffer) int
14:41 < nsf> gocode thinks it's: func() int
14:43 < nsf> because in gocode methods are like func fields of the struct :)
14:43 < nsf> or any other type
14:43 < nsf> works for autocompletion
14:43 -!- pharris [~Adium@rhgw.opentext.com] has joined #go-nuts
14:48 < wrtp> anyway, the package is available at
rog-go.googlecode.com/hg/exp/go/types
14:48 < wrtp> and the command (godef) is availalable at
rog-go.googlecode.com/hg/exp/cmd/godef
14:49 < jnwhiteh> wrtp: I ended up with what you suggested yesterday once I
got done refactoring things =)
14:49 < jnwhiteh> not surprisingly :P
14:50 < wrtp> jnwhiteh: i can't remember the context..
14:50 < wrtp> .
14:50 -!- cbeck1 [cbeck@gateway/shell/pdx.edu/x-emtftxlbzkcnhkbs] has quit [Read
error: Connection reset by peer]
14:50 < wrtp> (i can't remember what i suggested :-])
14:51 -!- cbeck1 [cbeck@gateway/shell/pdx.edu/x-injwiikyeianenxm] has joined
#go-nuts
14:51 < jnwhiteh> wrtp: http://paste.pocoo.org/show/362668/
14:51 < jnwhiteh> just the dummy method to satisfy the interface
14:52 < jnwhiteh> its ugly in a whole new way now =)
14:52 < nsf> jnwhiteh: that's what go/ast does
14:52 < jnwhiteh> *nod*
14:52 < jnwhiteh> you both suggested it
14:53 < nsf> and I was first who suggested to look at it to you :)
14:53 < jnwhiteh> and I got to that point after refactoring, just goes to
show you =)
14:53 < wrtp> jnwhiteh: i think that looks a bit better.  BTW, you could get
away without defining isBlockType on all the types if you just embedded Buf (or
another type) which implemented isBlockType
14:53 < jnwhiteh> interesting, that's a good point
14:53 < wrtp> BTW var _ Block = &InodeBlock{nil, nil} could be var _ Block =
&InodeBlock{}
14:53 < jnwhiteh> I'll keep that in mind when I actually implement the
buffer cache
14:54 < wrtp> and even then i think you probably want (*InodeBlock)(nil)
14:54 < wrtp> which avoids the allocation
14:55 -!- elimisteve [~elimistev@pool-71-102-138-52.snloca.dsl-w.verizon.net] has
joined #go-nuts
14:55 -!- chin_up [~chatzilla@115.200.50.1] has joined #go-nuts
14:55 < steven> if it werent for tdd, i would be implementing my git clone
in Go :(
14:55 < steven> but Go isnt great for tdd or bdd sadly
14:55 < wrtp> also, i wonder if you might want to just embed Buf by value
rather than calling new(Buf) for each allocation.  depends if Bufs can be shared
etc though.
14:56 -!- pphalen [~pphalen@66.92.11.149] has joined #go-nuts
14:56 < kamaji> what's tdd/bdd ?
14:56 < wrtp> steven: AFAICS the reason for tdd is dynamic languages
14:57 < wrtp> much less important with statically typed languages
14:57 < kamaji> test driven development
14:57 < kamaji> ?
14:58 < Namegduf> BDD?
14:58 < wrtp> behaviour-driven design
14:58 < Namegduf> Ah.
14:58 < wrtp> http://en.wikipedia.org/wiki/Behavior_Driven_Development
14:59 < Namegduf> TDD plus tying the tests to natural language use cases
14:59 < Namegduf> Got it.
15:00 -!- iant [~iant@67.218.107.170] has quit [Quit: Leaving.]
15:00 < Namegduf> Or, rather, using natural language use cases to define the
tests and thus behaviours.
15:01 < nsf> usually english language :)
15:01 < wrtp> steven: are you doing the git clone for someone else?  or
yourself?
15:01 < wrtp> it seems like BDD is focused on client-developer relations,
but maybe i'm wrong
15:01 < Namegduf> Well, yes
15:02 -!- shvntr [~shvntr@113.84.145.193] has quit [Read error: Connection reset
by peer]
15:02 < Namegduf> He didn't say he was using it, he just mentioned Go wasn't
good for TDD or it in his opinion, I mostly asked because I wasn't familiar with
it.
15:02 -!- plainhao [~plainhao@208.75.85.237] has joined #go-nuts
15:06 -!- awidegreen [~quassel@c-66c9e555.08-2-73746f39.cust.bredbandsbolaget.se]
has joined #go-nuts
15:09 -!- iant [~iant@nat/google/x-cmnpzkwyvspjymyo] has joined #go-nuts
15:09 -!- mode/#go-nuts [+v iant] by ChanServ
15:10 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts
15:15 -!- iant [~iant@nat/google/x-cmnpzkwyvspjymyo] has quit [Ping timeout: 246
seconds]
15:18 < taruti> Is there a simple way to apply some changes from codereview
to the local tree?
15:19 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Quit:
Computer has gone to sleep.]
15:21 < wrtp> taruti: hg clpatch 9999
15:21 < wrtp> and hg revert @9999 to undo
15:24 -!- nesusvet [~nesusvet@195.218.191.171] has quit [Quit: Ухожу я от вас]
15:24 < kamaji> can I put composite literals in a loop and expect it to be a
new object each time?
15:24 < taruti> wrtp: thanks
15:24 < wrtp> nsf: in case you find it useful, the file at
http://code.google.com/p/rog-go/source/browse/exp/go/types/types_test.go has a
source file at the end which enumerates all the interesting type derivation cases
i could think of.
15:24 < wrtp> kamaji: what do you mean?
15:25 < wrtp> if you do for { c <- &SomeType{} } then it'll send a new
object down the channel each time
15:25 < nsf> wrtp: looks complete to me
15:25 < kamaji> wrtp: for { list = append(list, &SomeObject{value1, value2}
}
15:25 < kamaji> oh ok I guess it's the same thing
15:25 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.]
15:26 < wrtp> nsf: there were some cases that i only added today when
running it on the entire go source tree...
15:26 < nsf> I haven't tried that for gocode
15:26 < nsf> and my tests are less complete for sure
15:27 < nsf> but whatever :)
15:27 < nsf> no serious bug reports so far
15:27 < wrtp> it's worth doing - i thought i had reasonably complete
coverage, but when i automated the tests i found quite a few errors
15:27 < aiju> copy with one argument to create a copy of a slice would be
nice
15:28 < aiju> (or some other syntax for this)
15:28 < nsf> wrtp: I have 30 tests as well
15:28 < wrtp> aiju: append([]int(nil), slice)
15:28 < nsf> and hours of gocode usage
15:28 < aiju> you mean ...slice?  ;P
15:28 -!- iant [~iant@nat/google/x-nenwqdhlbglqvszr] has joined #go-nuts
15:28 -!- mode/#go-nuts [+v iant] by ChanServ
15:28 < nsf> wrtp: https://github.com/nsf/gocode/tree/master/testing
15:28 < nsf> but tests are not user friendly :)
15:29 < nsf> or well, I don't know
15:29 < wrtp> not user friendly why?
15:29 < wrtp> surely the user never sees them, unless they fail
15:29 < nsf> many dirs, cursor position in a separate file :)
15:30 < nsf> I mean they were created as an automatic test suite
15:30 < nsf> I meant browsing by "user friendliness"
15:30 < wrtp> ah yes
15:31 < nsf> wrtp: does you code handles cycles?
15:31 < nsf> type A B
15:31 < nsf> type B A
15:32 < nsf> because gocode isn't :)
15:32 < wrtp> good point.  it probably infinite recurses
15:32 < nsf> your*
15:33 < wrtp> yup, it does
15:33 < steven> wrtp: for myself
15:33 < nsf> nice
15:34 < wrtp> nsf: there's also this: type A struct {A}
15:34 < nsf> yeah
15:35 -!- chin_up [~chatzilla@115.200.50.1] has quit [Quit: ChatZilla 0.9.86.1
[Firefox 4.0/20110318052756]]
15:38 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Quit: ZNC -
http://znc.sourceforge.net]
15:38 < wrtp> heh, this is even legal: type A struct {*A}; func (a *A) Foo()
15:38 < nsf> yes
15:38 < nsf> type A *A
15:38 < wrtp> an infinite number of Foos at ever increasing depths
15:38 < nsf> is legal too
15:38 < nsf> type cycle is illegal only when size matters
15:38 < wrtp> sure, but that doesn't have the problem of an infinite number
of members :-)
15:39 < nsf> *A is the one member
15:39 < nsf> pointer to A
15:39 < aiju> type A struct {a, b A}
15:39 < aiju> way cool
15:39 < aiju> exponential growth fuck yeah :)
15:39 < nsf> wrtp: method will use the A itself, not an embedded field
15:40 < nsf> uhm
15:40 < nsf> I gues
15:40 < nsf> guess*
15:40 < wrtp> yes, but what if you try to enumerate all the methods?
15:40 < kamaji> aiju: awwwww I tried that :(
15:40 < kamaji> aiju: invalid recursive type
15:40 < kamaji> sucks
15:40 < nsf> :)
15:40 < kamaji> I am severely disappointed :D
15:41 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts
15:45 -!- [dmp] [~dennis@unaffiliated/dmp/x-546784] has quit [Read error:
Operation timed out]
15:45 -!- [dmp] [~dennis@users.d75.net] has joined #go-nuts
15:45 -!- [dmp] [~dennis@users.d75.net] has quit [Changing host]
15:45 -!- [dmp] [~dennis@unaffiliated/dmp/x-546784] has joined #go-nuts
15:49 -!- foocraft [~dsc@178.152.44.249] has quit [Quit: Leaving]
15:54 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts
15:56 -!- pphalen_ [~patrick@66.92.11.149] has joined #go-nuts
16:00 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has quit [Quit:
Computer has gone to sleep.]
16:00 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has quit [Read error:
Connection reset by peer]
16:02 -!- foocraft [~dsc@89.211.224.68] has joined #go-nuts
16:24 < skelterjohn> nsf: when you had gocode do refactoring stuff, did you
have struct field renaming?
16:25 -!- pphalen_ [~patrick@66.92.11.149] has left #go-nuts []
16:27 -!- aho [~nya@fuld-590c69c5.pool.mediaWays.net] has joined #go-nuts
16:27 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
16:28 -!- Project-2501 [~Marvin@82.84.87.106] has joined #go-nuts
16:32 -!- Project_2501 [~Marvin@82.84.82.99] has quit [Ping timeout: 240 seconds]
16:32 < wrtp> skelterjohn: you could use rog-go.googlecode.com/exp/go/types
for struct field renaming if you wanted
16:33 < wrtp> i had been planning to use it for some kind of renaming tool
myself (although i hadn't come up with a good name :-) )
16:33 -!- dellaxim [~sabayonus@cpc2-lewi14-2-0-cust407.2-4.cable.virginmedia.com]
has quit [Quit: Leaving]
16:35 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has
quit [Quit: leaving]
16:37 -!- archevan [~archevan@67.69.227.99] has joined #go-nuts
16:37 -!- zimsim [~simon@87.72.77.195] has quit [Quit: /dev/null]
16:37 < skelterjohn> hmm - does it do type identification?
16:38 < skelterjohn> the issue is, when renaming struct X { a int } to
struct X { b int } and seeing "something.a", can you identify if something is an X
or not?
16:38 < skelterjohn> this is what it appears that go/typechecker wants to
do, when it's done
16:42 < wrtp> skelterjohn: yes
16:42 < skelterjohn> sweet - i'll take a more detailed look at it in a
little bit
16:43 < wrtp> skelterjohn: parse a file, find an identifier or selector
expression, call ExprType on it
16:43 < skelterjohn> wow great - perfect
16:43 < wrtp> it returns an object that uniquely identifies the identifier
or selector
16:43 < wrtp> works correctly on embedded types etc
16:44 < nsf> skelterjohn: yes I had
16:44 < nsf> but there were some bugs (not sure where exactly)
16:45 < skelterjohn> man - i do *not* want to finish reviewing this article
16:45 < skelterjohn> i would much rather work on gorf
16:46 < nsf> and gocode is the only app so far that knows how to get type
information from .a
16:46 < nsf> (aside from gc of course)
16:46 < nsf> :)
16:46 < skelterjohn> interesting
16:47 < skelterjohn> i don't think it makes sense for gorf to do that,
instead of analyzing all the source
16:47 < nsf> it does it very tricky though
16:50 < wrtp> it's true that if you don't want source location info, parsing
the source is a bit overkill.  but it seems fast enough in practice.
16:52 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4]
16:52 < skelterjohn> wrtp: any major difference between what you've done and
what go/typechecker will be?  aside from yours being finished
16:53 < wrtp> skelterjohn: the major difference is that my stuff only looks
at types on demand.  it doesn't try to typecheck the whole program.
16:53 < skelterjohn> what if your source tree is not in $GOROOT/src/pkg -
will that cause any hiccups?
16:53 < wrtp> that works well for me, because i want it to work on partially
written source code in my editor, where types might not be completely specified.
16:54 < wrtp> yes - it needs to be able to find the source for a given
package
16:54 < wrtp> but you can provide a custom importer for that
16:54 < skelterjohn> right
16:54 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
16:55 < skelterjohn> does the fact that go/typechecker does all of them give
it a better amortized time cost per type?
16:55 < wrtp> probably
16:55 < wrtp> almost certainly in fact
16:55 < wrtp> but go/typechecker isn't done yet, although gri does seem to
be moving on it
16:55 < skelterjohn> could probably rig your typechecker to annotate the
nodes in the same way, and save that time
16:56 < wrtp> yeah, that would be trivial
16:56 < wrtp> i thought about doing that anyway
16:56 < wrtp> objects have a Type field as it is
16:58 < wrtp> which could be set when ExprType returns a type for the object
16:58 < plexdev> http://is.gd/kPU45p by [Roger Peppe] in
go/src/pkg/go/parser/ -- go/parser: fix scoping for local type declarations
16:58 < plexdev> http://is.gd/GqpDWp by [Robert Griesemer] in
go/src/cmd/gotest/ -- gotest: exclude . files when parsing directories (per r's
suggestion)
16:59 < skelterjohn> and any other types it had to infer to get its answer
17:02 < wrtp> skelterjohn: yes
17:02 < wrtp> skelterjohn: BTW, could you just check that you can goinstall
it, because i've got to go soon.
17:03 < wrtp> i might have got something wrong
17:03 < skelterjohn> ok
17:03 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has joined #go-nuts
17:04 < skelterjohn> universe.go:17: syntax error: unexpected semicolon or
newline, expecting := or = or comma
17:04 < skelterjohn> from your go/parser
17:05 < skelterjohn> that seems bizarre
17:05 < skelterjohn> maybe i should -clean -u :)
17:05 < wrtp> skelterjohn: yeah.
17:06 < wrtp> i think i've pushed that file and it seems fine
17:06 < skelterjohn> http://pastebin.com/mj8NwFKv
17:07 < wrtp> weird
17:07 < skelterjohn> updating to tip, i'll try again
17:07 < wrtp> ah, that's probably the reason
17:07 < wrtp> recent changes made to go/ast
17:08 < skelterjohn> i'm only a few days old, but i saw you had a go/parser
commit :)
17:08 -!- keithcascio [~keithcasc@nat/google/x-fzkgmlqaxrotlnkq] has joined
#go-nuts
17:08 < skelterjohn> goinstalled fine, now
17:08 < wrtp> that wasn't it
17:08 < skelterjohn> thanks :)
17:08 < wrtp> cool
17:08 -!- zimsim [~zimsim@87.72.77.195] has joined #go-nuts
17:08 < wrtp> i hope it's useful for you
17:08 < skelterjohn> seems likely
17:08 < wrtp> let me know if the docs don't make sense :-)
17:08 < skelterjohn> i'm horrible at reading docs
17:09 < skelterjohn> i tend to stop reading past function signatures
17:10 < wrtp> skelterjohn: well, if you want to see an example of it being
used, look at $GOROOT/src/pkg/rog-go.googlecode.com/hg/exp/cmd/godef
17:11 < skelterjohn> cool - that should be sufficient context
17:17 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts
17:21 < wrtp> have fun
17:21 -!- wrtp [~rog@92.17.50.183] has quit [Quit: wrtp]
17:24 -!- Project-2501 [~Marvin@82.84.87.106] has quit [Quit: E se abbasso questa
leva che succ...]
17:31 -!- ako [~nya@fuld-590c623e.pool.mediaWays.net] has joined #go-nuts
17:32 -!- simon__ [~simon@87.72.77.195] has joined #go-nuts
17:32 -!- TheMue [~TheMue@p5DDF5008.dip.t-dialin.net] has joined #go-nuts
17:34 -!- aho [~nya@fuld-590c69c5.pool.mediaWays.net] has quit [Ping timeout: 246
seconds]
17:39 -!- petrux_ [~petrux@host16-224-static.53-82-b.business.telecomitalia.it]
has quit [Read error: Connection reset by peer]
17:40 -!- zimsim [~zimsim@87.72.77.195] has quit [Quit: Leaving]
17:42 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts
17:50 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Quit: Leaving]
17:54 -!- littlebobby [~bob@unaffiliated/littlebobby] has joined #go-nuts
17:58 -!- tvw [~tv@212.79.9.150] has quit [Remote host closed the connection]
17:59 -!- huin [~huin@91.85.185.181] has joined #go-nuts
18:07 -!- boscop_ [~boscop@f055027214.adsl.alicedsl.de] has joined #go-nuts
18:07 < gmilleramilar> can goinstall handle private github projects?
18:08 -!- wrtp [~rog@92.17.50.183] has joined #go-nuts
18:08 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts
18:09 -!- boscop__ [~boscop@f055168103.adsl.alicedsl.de] has quit [Ping timeout:
246 seconds]
18:10 < skelterjohn> no
18:13 < gmilleramilar> same answer for bitbucket?
18:15 -!- d_m [d6@SDF.ORG] has quit [Quit: Lost terminal]
18:18 < skelterjohn> it can only use what's publicly available
18:18 < skelterjohn> it infers a checkout url from the path name
18:19 < gmilleramilar> that's what I thought, I just wanted to make sure I
wasn't missing anything.
18:19 < gmilleramilar> thx
18:20 -!- artefon [~thiago@dhcp37.usuarios.dcc.ufmg.br] has quit [Ping timeout:
246 seconds]
18:24 -!- sacho [~sacho@90.154.197.48] has joined #go-nuts
18:30 < skelterjohn> wrtp: I'm getting panics from calling ExprType
18:31 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
18:32 < skelterjohn> err, and now i'm not
18:32 < skelterjohn> strange.  ignore me.
18:33 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has joined
#go-nuts
18:34 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:cb5:7cff:9f6c:e3a3] has joined
#go-nuts
18:45 -!- arun_ [~arun@unaffiliated/sindian] has quit [Ping timeout: 240 seconds]
18:48 -!- jeffreymcmanus [~jeffreymc@70-36-141-150.dsl.dynamic.sonic.net] has
joined #go-nuts
18:48 -!- d_m [~d_m@64.186.128.169] has joined #go-nuts
18:52 < ww> is there some magic you need to do to have goinstall install
commands?  or does it just work for packages?
19:00 -!- jokoon [~eio@feu30-1-82-242-58-229.fbx.proxad.net] has joined #go-nuts
19:01 < wrtp> skelterjohn: if you get a panic i wanna know.  i've tested it
on all the identifiers in the Go source tree, but that might not be enough :-)
19:02 < wrtp> ww: it doesn't install commands...  yet
19:02 < wrtp> gomake will replace goinstall, and then it should work.  it's
probably a month away though (wild estimate)
19:09 < skelterjohn> wrtp: http://pastebin.com/TxQRyUMK
19:09 < skelterjohn> i run it on every visited node that can be asserted to
ast.Expr
19:10 < skelterjohn> and is not nil
19:10 < skelterjohn> crash is from types.go:821, and happens when I pass in
the CallExpr for foo
19:12 < wrtp> ah i see the problem
19:13 -!- archevan [~archevan@67.69.227.99] has quit [Ping timeout: 252 seconds]
19:14 < wrtp> if you want to fix it, assert on ast.Ident and
ast.SelectorExpr instead of ast.Expr
19:14 < wrtp> but i'll fix the problem in the code too and update my tests
19:16 < skelterjohn> hum.  what if i have something like bar().x and I want
to know what type bar() is?  or will your fix allow that
19:16 < skelterjohn> and the assert change is so i can still use it for
idents and selectors
19:17 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
19:18 < wrtp> that should be fine.
19:18 < wrtp> but if you're just changing identifiers, Ident and
SelectorExpr is ok
19:19 < wrtp> i'm just changing the test to check all nodes that can be
asserted to ast.Expr
19:19 < steven> wrtp: gomake?  wha?
19:19 < skelterjohn> if foo() returns an A, and type A struct { b int }, and
I want to change b to c, I want to change foo().b to foo().c
19:19 < wrtp> steven: goinstall is gonna be renamed to gomake
19:19 < skelterjohn> to do this, i have to know that foo() is an A
19:20 < steven> wrtp: oh, is it gonna be better too?
19:20 < wrtp> steven: check out the thread on golang-dev
19:20 < steven> oh,
http://groups.google.com/group/golang-dev/browse_thread/thread/c1cf1dcb35ab3f81/dc6990d9a78a5554?#dc6990d9a78a5554
19:23 < skelterjohn> wrtp: http://pastebin.com/XfAZwywj <- if i only do
idents and selectors, i can't see what type the first half of that selector is,
directly
19:23 < skelterjohn> in this small example i can figure it out, since it's
just a CallExpr whose return type is A, but it could be something more complicated
19:24 < skelterjohn> so for renaming fields, i really need to know the type
of whatever arbitrary Expr is in the selector's X
19:24 < wrtp> skelterjohn: you don't need to
19:24 < wrtp> the field name itself has an object
19:24 < skelterjohn> oh...
19:25 < skelterjohn> in that example, the b in foo().b has a nil object and
a "bad" type
19:25 < wrtp> yeah, but "foo().b" will have an object
19:25 < wrtp> i.e.  the SelectorExpr
19:26 < skelterjohn> right, i think i see
19:27 -!- artefon [~thiago@187.59.208.9] has joined #go-nuts
19:27 < wrtp> so if you want to change all instances of Foo.X to Foo.Y,
parse Foo.X, get its expr type, then look for all selector exprs with the same
object
19:27 < wrtp> BTW i've pushed again - the panic should be fixed.  it now
works with all expr nodes in the source tree
19:28 < skelterjohn> cool
19:31 < skelterjohn> why is go/ast's Field.Names a []*Ident instead of an
*Ident?
19:31 < skelterjohn> how could it have multiple names?
19:32 < wrtp> x, y: int
19:32 < wrtp> s/://
19:33 < skelterjohn> surprised that doesn't just get two fields
19:33 < wrtp> it needs to be able to print without losing info
19:33 < skelterjohn> ah
19:34 < wrtp> quite a few things could be simplified otherwise
19:54 -!- simon__ [~simon@87.72.77.195] has quit [Quit: /dev/null]
19:57 < steven> <3
20:03 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|]
20:06 -!- crazy1be [~crazy2be@d209-89-248-73.abhsia.telus.net] has joined #go-nuts
20:19 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 276 seconds]
20:19 -!- skejoe [~skejoe@188.114.142.162] has quit [Quit: Lost terminal]
20:22 -!- zozoR [~Morten@56344e3e.rev.stofanet.dk] has quit [Remote host closed
the connection]
20:28 < crazy2be> man
20:28 < crazy2be> they moved cookies
20:28 -!- aconran_ [~aconran-o@38.104.129.126] has joined #go-nuts
20:28 < crazy2be> i mean
20:28 -!- aconran [~aconran-o@38.104.129.126] has quit [Remote host closed the
connection]
20:28 < crazy2be> finally
20:28 < crazy2be> but i just spent like ages trying to figure out why things
broke
20:30 < crazy2be> hmm and still no easy way to get a specific cookie...  :/
20:32 < Urmel|> is anyone here able to compile the latest source for
windows?  using mingw
20:32 < Urmel|> i used to be able to do it but now i get errors like: make:
pwd: Command not found
20:33 < crazy2be> Urmel: Does your mingw install have a pwd command?
20:35 < Urmel|> yeah it does
20:35 < Urmel|> when i use pwd it works
20:47 -!- Mr_Dark [~dk@poviko.demon.nl] has joined #go-nuts
20:48 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4]
20:53 < Mr_Dark> Anyone else having problems compiling Go (latest rev) on
windows (mingw)
20:59 < crazy2be> yeah
20:59 < crazy2be> Urmel is
21:01 -!- artefon [~thiago@187.59.208.9] has quit [Read error: Connection reset by
peer]
21:01 -!- artefon [~thiago@187.59.208.9] has joined #go-nuts
21:02 < Urmel|> :(
21:02 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
21:02 < Urmel|> what are your errors Mr_Dark?
21:02 < Mr_Dark> when I try ./make.bash I get command not found
21:03 < Mr_Dark> $ ./make.bash
21:03 < Mr_Dark> make: pwd: Command not found
21:03 < Mr_Dark> make: echo: Command not found
21:03 < Mr_Dark> make: *** [go-env] Error 127
21:03 < Mr_Dark> Did not find Go environment variables.
21:03 < Mr_Dark> that ^
21:03 < Urmel|> yeah same here
21:03 -!- jokoon [~eio@feu30-1-82-242-58-229.fbx.proxad.net] has quit [Quit:
Leaving]
21:03 -!- awidegreen [~quassel@c-66c9e555.08-2-73746f39.cust.bredbandsbolaget.se]
has quit [Remote host closed the connection]
21:04 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has quit [Ping
timeout: 246 seconds]
21:07 < Mr_Dark> same error occurs when I try to compile the release branch
21:07 -!- plainhao [~plainhao@208.75.85.237] has quit [Quit: plainhao]
21:08 -!- archevan [~archevan@67.69.227.99] has joined #go-nuts
21:10 -!- Fish [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the
Fish]
21:22 -!- TheMue [~TheMue@p5DDF5008.dip.t-dialin.net] has quit [Quit: TheMue]
21:24 -!- tvw [~tv@e176001246.adsl.alicedsl.de] has joined #go-nuts
21:30 < str1ngs> Mr_Dark: do you have a working mingw ?
21:32 < plexdev> http://is.gd/b9W5O5 by [Ian Lance Taylor] in go/test/ --
test: don't require specific GOARCH values.
21:33 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has quit [Ping
timeout: 240 seconds]
21:36 -!- Natch [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has
joined #go-nuts
21:37 -!- Natch| [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has
quit [Read error: Operation timed out]
21:39 -!- thiago__ [~thiago@187.59.208.9] has joined #go-nuts
21:39 -!- artefon [~thiago@187.59.208.9] has quit [Ping timeout: 250 seconds]
21:41 -!- zimsim [~simon@87.72.77.195] has quit [Remote host closed the
connection]
21:42 -!- emjayess [~emjayess@pix1.i29.net] has quit [Ping timeout: 250 seconds]
21:43 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
Verlassend]
21:43 -!- kevmoo__ [~bojibob@199.27.176.33] has joined #go-nuts
21:45 -!- huin [~huin@91.85.185.181] has quit [Quit: leaving]
21:49 -!- dwilliamii [~w@72.214.103.209] has quit [Ping timeout: 246 seconds]
21:58 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has quit [Ping
timeout: 260 seconds]
21:58 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has joined
#go-nuts
22:01 -!- wrtp [~rog@92.17.50.183] has quit [Quit: wrtp]
22:04 -!- kevmoo__ [~bojibob@199.27.176.33] has quit [Quit: kevmoo__]
22:05 -!- ExtraSpice [XtraSpice@88.118.35.153] has quit [Read error: Connection
reset by peer]
22:06 -!- boscop__ [~boscop@f055027214.adsl.alicedsl.de] has joined #go-nuts
22:06 -!- boscop_ [~boscop@f055027214.adsl.alicedsl.de] has quit [Ping timeout:
246 seconds]
22:12 -!- boscop_ [~boscop@f055027214.adsl.alicedsl.de] has joined #go-nuts
22:13 -!- littlebobby [~bob@unaffiliated/littlebobby] has quit [Quit: Ex-Chat]
22:15 -!- boscop__ [~boscop@f055027214.adsl.alicedsl.de] has quit [Ping timeout:
240 seconds]
22:24 -!- rlab_ [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller,
Faster, Easier.  http://miranda-im.org]
22:35 < plexdev> http://is.gd/g5mSYd by [Robert Griesemer] in
go/src/pkg/scanner/ -- scanner: treat line comments like in Go
22:35 < plexdev> http://is.gd/YjdPhL by [Robert Griesemer] in 3 subdirs of
go/src/ -- gotype: support for more tests, added one new test
22:37 -!- boscop_ [~boscop@f055027214.adsl.alicedsl.de] has quit [Ping timeout:
246 seconds]
22:38 -!- boscop_ [~boscop@f055027214.adsl.alicedsl.de] has joined #go-nuts
22:48 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Quit: skelterjohn]
22:59 -!- boscop_ [~boscop@f055027214.adsl.alicedsl.de] has quit [Ping timeout:
246 seconds]
23:06 -!- Kezz [~kezz@92.29.129.220] has joined #go-nuts
23:08 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
23:12 < Kezz> hi
23:12 < Kezz> hello
23:12 < Kezz> yello
23:12 < Kezz> boo
23:13 < Kezz> ogga booga
23:13 < Kezz> someone speak
23:13 < Kezz> anyone?
23:13 < Kezz> hello?
23:13 < Kezz> bye?
23:13 -!- Kezz [~kezz@92.29.129.220] has left #go-nuts []
23:14 -!- pharris [~Adium@rhgw.opentext.com] has quit [Quit: Leaving.]
23:22 -!- tvw [~tv@e176001246.adsl.alicedsl.de] has quit [Remote host closed the
connection]
23:26 -!- iant [~iant@nat/google/x-nenwqdhlbglqvszr] has quit [Ping timeout: 260
seconds]
23:30 -!- DerHorst [~Horst@e176113232.adsl.alicedsl.de] has joined #go-nuts
23:33 -!- _DerHorst_ [~Horst@e176099094.adsl.alicedsl.de] has joined #go-nuts
23:34 -!- iant [~iant@67.218.107.170] has joined #go-nuts
23:34 -!- mode/#go-nuts [+v iant] by ChanServ
23:35 -!- tvw [~tv@e176001246.adsl.alicedsl.de] has joined #go-nuts
23:36 -!- DerHorst [~Horst@e176113232.adsl.alicedsl.de] has quit [Ping timeout:
240 seconds]
23:37 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has joined #go-nuts
23:37 -!- prudhvi [~prudhvi@look.ma.i.am.on.ipv6.at.prudhvi.de] has quit [Ping
timeout: 248 seconds]
23:37 -!- prudhvi [~prudhvi@look.ma.i.am.on.ipv6.at.prudhvi.de] has joined
#go-nuts
23:41 -!- tvw [~tv@e176001246.adsl.alicedsl.de] has quit [Ping timeout: 246
seconds]
23:41 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net]
has quit [Ping timeout: 240 seconds]
23:48 -!- pphalen [~pphalen@66.92.11.149] has left #go-nuts []
--- Log closed Thu Mar 31 00:00:50 2011