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

--- Log opened Tue Dec 28 00:00:02 2010
00:07 -!- reiddraper [~reid@c-68-33-177-129.hsd1.md.comcast.net] has quit [Quit:
00:18 -!- jeff2 [~jeff@pool-108-13-140-226.lsanca.fios.verizon.net] has quit [Read
error: Connection reset by peer]
00:20 -!- Scorchin [~Scorchin@host86-173-187-147.range86-173.btcentralplus.com]
has joined #go-nuts
00:22 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 241
00:23 -!- jeff2 [~jeff@pool-108-13-140-226.lsanca.fios.verizon.net] has joined
00:28 -!- jeff2 [~jeff@pool-108-13-140-226.lsanca.fios.verizon.net] has quit [Ping
timeout: 260 seconds]
00:32 -!- jeff2 [~jeff@pool-108-13-140-226.lsanca.fios.verizon.net] has joined
00:37 -!- Project_2501 [~Marvin@] has quit [Quit: E se abbasso questa
leva che succ...]
00:39 -!- tensai_cirno [~cirno@] has quit [Quit: Leaving]
00:41 -!- Scorchin [~Scorchin@host86-173-187-147.range86-173.btcentralplus.com]
has quit [Quit: Scorchin]
00:43 -!- tensai_cirno [~cirno@] has joined #go-nuts
00:58 -!- araujo [~araujo@] has joined #go-nuts
00:58 -!- araujo [~araujo@] has quit [Changing host]
00:58 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
01:15 -!- ExtraSpice [~XtraSpice@] has quit [Ping timeout: 276
01:19 < Namegduf> Hmm, wow.  I should test this in gccgo.
01:19 < Namegduf> Profiler says 40% of CPU time is being spent inside
getters, and since they're between packages I can't get rid of them.
01:20 < Namegduf> Maybe I can move the loops in question between package or
something, but inlining should make all that go away.
01:22 < uriel> wtf are 'getters'?
01:23 < uriel> and why can't you get rid of them because they are between
01:23 * uriel smells the steench of java
01:26 < Namegduf> Functions that return a member of a struct.  I can't get
rid of them because said members need to be read only; changes to them will break
things horribly.
01:26 < exch> foo.GetSomeVal() <- getter..  presumably a getter to revent
write acces to set 'someval'
01:27 -!- jeff2 [~jeff@pool-108-13-140-226.lsanca.fios.verizon.net] has quit [Read
error: Connection reset by peer]
01:28 < Namegduf> Or in other cases, changes to them require synchronisation
because concurrent writes would be bad, and hooks being invoked; this is even
worse because "You must modify it the right way" is a nastier thing to use
convention for than "You must not modify it"
01:31 -!- napsy [~luka@] has quit [Quit: leaving]
01:31 -!- xuwen [~xuwen@pool-151-200-28-66.res.east.verizon.net] has quit [Remote
host closed the connection]
01:32 -!- xuwen [~xuwen@pool-151-200-28-66.res.east.verizon.net] has joined
01:32 < nsf> emacs support for the gocode was added recently, if anyone is
01:33 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 240
01:34 < Eko> Namegduf: that's one reason I went with a "Here's what
happened, change your data accordingly" sort of model instead of a "Hey, who's on
your channel?" "Hey, what's your topic?" "Oh, by the way, here's the new topic"
01:34 < Namegduf> Eko: The problem is that that prevents any form of
01:35 < Eko> yep.
01:35 < Eko> but since go doesn't have loadable module support and it
doesn't seem to be coming, I liked the way that worked better.
01:36 < Eko> also, from a brand recognition standpoint, I've never really
liked that you can sign onto 10 different HybridIRCDs and they'll all have
different features
01:36 < Eko> I'd much prefer to keep the IRCd simple and hope that people
get whatever else they want from the services of their choice.
01:36 -!- rhencke [~rhencke@ppp-70-247-243-221.dsl.ltrkar.swbell.net] has joined
01:36 -!- keithcascio [~keithcasc@nat/google/x-vnfvhhrkdixwesos] has quit [Quit:
01:36 < rhencke> anyone know of any exp/draw examples?
01:37 < Namegduf> Eko: I can get a similar effect to that by simply
providing more facilities in core; "iterate my clients on this channel" is the
interesting one in this case.
01:38 < Eko> rhencke: other than the ones in the source tree?
01:38 < rhencke> eko: oh...  duh, sorry.  thanks.
01:38 < Namegduf> But your approach will probably be faster still at the end
of the day.
01:38 < Eko> rhencke: they're not always helpful, just wanted to make sure
you'd seen it.
01:39 < rhencke> eko: i had glazed over it.  was experimenting with making a
different drawing backend, so this will work perfectly.  thanks.  :)
01:39 < Eko> Namegduf: on a fast computer, that'll probably be moot.  I'd
prefer your solution, but I suck at knowing the final design that I'll want, and
so I went with a design that I knew I'd be able to do and that I thought would
hopefully be extensible if I needed to change it.
01:40 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving]
01:40 < Eko> I do plan on making "accessor" Events (and have a few already),
so theoretically having loadable modules isn't out of the question should that
become an option.
01:41 < anticw> rhencke: wrt exp/draw i've used it here in a couple of
hacks, if you have specific questions ask
01:41 * Eko hint hints at antone who might have the ear of anyone who has that on
their TODO list.
01:41 < Namegduf> I want to see if I can get mine to be able to restart
without dropping connections, but it seems like it'd be hard.
01:41 < rhencke> anticw: thanks :)
01:41 < Eko> Namegduf: woah, if you can do that, I will be thoroughly
01:42 < Eko> especially in a language without ldso.
01:42 < Eko> Namegduf: also, I got SSL working, and it took about 5 lines of
code if you're interested.
01:42 < Namegduf> The modular design of mine is such that it'd be usable for
Services of various sorts if it had network linking, so my first focus is on that.
01:43 < Namegduf> You could just disable the client subsystem and it'd lose
the ability to have local clients.
01:43 < Eko> neat.
01:43 < Namegduf> And yeah, I'd like to see that.
01:44 < Eko> I wrote services for the IRCd I worked on a long time ago (back
when TS6 was in its formative stages), and they had a secret backdoor option to do
the opposite: allow local clients that would pretend to be services >=)
01:44 -!- photron_ [~photron@port-92-201-42-169.dynamic.qsc.de] has quit [Ping
timeout: 276 seconds]
01:44 < Namegduf> Haha.
01:45 < Eko> I PM'd you a link to where it is in my server
01:45 < Namegduf> Thanks.
01:45 < Eko> the only difference is the creation of a tls.Config and using a
tls.Listen with that as an extra argument instead of a net.Listen
01:46 < Eko> the Handshake is optional, but I put it there for debugging.
It'll do it by default the first time you read or write to it.
01:46 < Namegduf> That's good.
01:46 < Eko> yeah, it's slick; it gives you something that's compatible with
the net.Conn interface, which is what I was using anyway.
01:46 < Eko> <3 interfaces
01:48 < Namegduf> Yeh, that is nice.
01:48 < Namegduf> *Yeah
01:49 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
01:49 < Namegduf> And will be helpful.
01:49 < Eko> the nextproto and ciphersuites are also not necessary, lol.  I
forgot I left those in there.
02:03 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
02:20 -!- shvntr [~shvntr@] has joined #go-nuts
02:23 -!- ios_ [~ios@] has quit [Read error: Connection reset by peer]
02:24 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Ping timeout: 260
02:32 -!- niemeyer_ [~niemeyer@200-203-59-56.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
02:41 -!- Tv1 [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts
02:48 -!- niemeyer_ [~niemeyer@200-203-59-56.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 240 seconds]
02:53 -!- boscop_ [~boscop@f050128034.adsl.alicedsl.de] has joined #go-nuts
02:56 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
02:56 -!- boscop [~boscop@g226235020.adsl.alicedsl.de] has quit [Ping timeout: 240
02:57 < Namegduf> I'm right in thinking that reading at the same time as
you're writing to a map is bad?
02:58 < nsf> yes
02:58 < Namegduf> Okay, "neat".
02:59 < nsf> maps are not thread-safe
02:59 < skelterjohn> i feel like primitive types should be threadsafe
02:59 < nsf> it's in FAQ afair
02:59 < Namegduf> Making them so is kind of hard
02:59 < Namegduf> I knew concurrent writes were unsafe
02:59 < Namegduf> Not sure about reads + one write
02:59 < nsf> http://golang.org/doc/go_faq.html#atomic_maps
02:59 < skelterjohn> no doubt it's not an easy thing, and probably the best
decision for the moment
03:00 < skelterjohn> but it's a built in type!
03:00 < Namegduf> It'd be slow.
03:00 < skelterjohn> should be safe any which way you try it
03:00 < Namegduf> Go's not really about "make it slow so it works the way
you'd think"
03:00 < Namegduf> That's more a Python thing
03:00 < skelterjohn> :)
03:00 < skelterjohn> i don't know that it has to be that slow
03:00 < skelterjohn> manipulating a map starts out non-trivial
03:01 < Namegduf> I don't know how slow it'd need to be, key thing is that
it is and I need to roll my own data structure again.
03:01 < skelterjohn> type SafeMap struct { map[key]val; block chan bool } ?
03:02 < Namegduf> Way slower than what I'm currently using, which is a
linked list, and the reason I'm looking to replace it is that it's proving a
significant limiting factor, performance wise.
03:04 < Namegduf> Reads are common and the common case is fairly small, so
wrapping some kind of synchronisation around reads is going to be worse than doing
03:05 < skelterjohn> i think it should be possible to roll something that is
threadsafe but only has to block on writes - let's reads go through
03:06 < nsf> http://nsf.github.com/go/sync.html?t:RWMutex!
03:07 < skelterjohn> that'
03:07 < skelterjohn> that's not the same as what i was suggesting, but also
03:22 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving]
03:22 -!- SoniaKeys [Alliebloom@c-24-91-112-191.hsd1.ma.comcast.net] has quit []
03:41 -!- ios_ [~ios@] has joined #go-nuts
04:09 < adg> skelterjohn: how is it possible to do any other way?  you need
to mark the structure as being read (multiple read locks) and avoid lock
starvation for writes (a la RWMutex)
04:24 < uriel> adg: I might end up going to FOSDEM after all, and was
wondering, are there any plans to arrange a Go 'devroom'?
04:24 < uriel> ah, seems that it might be too late for that :/
04:27 < Namegduf> Writes can be done atomically, such that any reader will
observe it either before or after the full write, if they're limited to a single
pointer, I think?
04:27 < Namegduf> I hope so, I rely on it.
04:30 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds]
04:32 -!- ios_ [~ios@] has quit [Quit: Leaving]
05:01 -!- chickamade [~chickamad@] has joined #go-nuts
05:03 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
05:04 -!- chickamade [~chickamad@] has quit [Client Quit]
05:12 -!- fighterlyt [~liuyuntan@] has joined #go-nuts
05:13 -!- fighterlyt [~liuyuntan@] has quit [Client Quit]
05:30 -!- ymasory [~ymasory@adsl-2-40-178.mia.bellsouth.net] has joined #go-nuts
05:41 < rhencke> i wonder why mouse events are the only timestamped event in
05:42 < rhencke> my best guess is to simplify double-click detection
05:43 -!- fabled [~fabled@] has quit [Quit: Ex-Chat]
05:45 -!- fabled [~fabled@mail.fi.jw.org] has joined #go-nuts
05:46 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Quit:
05:58 -!- ymasory [~ymasory@adsl-2-40-178.mia.bellsouth.net] has quit [Ping
timeout: 272 seconds]
05:59 < Eko> Namegduf: are you using standard ircd.conf or something else?
(e.g.  O:lines and I:lines and C:lines or a custom config)
06:00 < Eko> I'm trying to figure out if I want to use JSON or if that's too
gross to hand-edit.
06:01 < Namegduf> A custom config- when I get around to adding it.
06:01 < Namegduf> Most recent IRCDs have their own format, or share the
format of one they were forked from.
06:01 < Eko> I don't like the quotes around the keys in json, i tlooks ugly
06:01 < Namegduf> JSON is no good.
06:01 < Namegduf> It lacks comments.
06:01 < Namegduf> Kind of important.
06:01 < Eko> oh, I thought it had them.
06:01 < Eko> laaame.
06:01 < Namegduf> It's a data serialisation format, not a config format.
06:02 < Eko> I guess I'll use goconf.
06:02 < Eko> it's a community standard, more or less, and I don't think I
really need anything to be defined recursively.
06:13 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 255
06:21 -!- rhencke [~rhencke@ppp-70-247-243-221.dsl.ltrkar.swbell.net] has quit
[Quit: rhencke]
06:21 -!- boscop_ [~boscop@f050128034.adsl.alicedsl.de] has quit [Ping timeout:
240 seconds]
06:32 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has joined #go-nuts
06:53 -!- reiddraper [~reid@c-68-33-177-129.hsd1.md.comcast.net] has joined
06:59 < reiddraper> I'm finding myself wanting access to unexported fields a
lot, such as file descriptors for objects in the "net" package.  is there some
pattern to use so I don't find myself duplicating the work of "net" just to get at
that field?
07:06 -!- ios_ [~ios@] has joined #go-nuts
07:12 < devrim> hi guys, is anyone interested in a serious Go gig ?
07:13 < devrim> we are rewriting our whole backend for http://kodingen.com
07:14 < Namegduf> reiddraper: thing.File().Fd()
07:15 < reiddraper> Namegduf: i'm using
http://golang.org/pkg/net/#Listener.Listen, but perhaps I should be using
http://golang.org/pkg/net/#TCPListener.ListenTCP instead?
07:15 < reiddraper> the Listener interface doesn't give access to File()
07:15 < Namegduf> reiddraper: I would.
07:16 < Namegduf> What's a more interesting thing I'm pondering is
rebuilding net structs *from* an FD.
07:16 < Namegduf> So I can transmit them between processes.
07:16 < Namegduf> I think I'm going to end up using assembly and breaking
every time the net package changes.  :(
07:17 < reiddraper> interesting
07:17 < reiddraper> so you want to create a new Listener, for example, from
a fd?
07:18 < Namegduf> Listeners I could drop and reopen, hypothetically, but
actual connections I couldn't.
07:19 < Namegduf> The other option, probably easier, is to unsafe it into a
block of bytes
07:19 < Namegduf> Then have architecture-specific code to manipulate them
07:23 -!- rlab [~Miranda@] has joined #go-nuts
07:35 < reiddraper> am I understanding correctly that if i'm listening on a
tcp port, and get the tcplistener fd (or rather a copy of it), and pass that into
forkexec, the exec'd process can bind to the same port as the parent process?
07:35 -!- snearch [~snearch@f053006124.adsl.alicedsl.de] has joined #go-nuts
07:39 < taruti> reiddraper: what are you trying to accomplish?
07:40 < reiddraper> taruti: a webserver that has binary-upgrade capability
with no downtime, like nginx or unicorn
07:43 < taruti> reiddraper: your best bet is probably have a C
wrapper/heartbeat process that launches the go process
07:44 < reiddraper> any particular reason the forkexec approach won't work?
07:44 < taruti> one needs heartbeat in any case.
07:45 < taruti> and forkexec becomes a mess
07:46 < reiddraper> maybe i don't understand what you mean by heartbeat in
this context?
07:46 < reiddraper> both nginx and unicorn use the fork() exec() pattern
07:46 < Namegduf> ForkExec is the name of a Go function
07:46 < Namegduf> So I'd assume it isn't inherently that messy.
07:47 < reiddraper> Namegduf: and i'm able to use go's ForkExec just fine,
except for getting my new process to be able to bind on the same port
07:47 < reiddraper> or at least i think that's my problem...
07:47 < taruti> so how are you handling state transfer of possible user
07:48 < Namegduf> "user code"?
07:48 < Namegduf> State transfer can be accomplished by serialising it.
07:48 < taruti> isn't the basic pattern, 1) fork, 2) exec, 3) transfer state
or core+plugins serialized, 4) parent dies, 5) child starts using state
07:49 < taruti> and a heartbeat process = checks periodically whether the
server is alive and restarts+logs if it needs poking
07:49 < reiddraper> a heartbeat process is outside the scope of what i'm
working on, and there are other tools for that
07:50 < reiddraper> and, let's assume for the sake of simplicity, there is
no "user code state"
07:50 < reiddraper> say, just serving "hello, world"
07:50 -!- rlab [~Miranda@] has quit [Read error: Connection reset by
07:52 < taruti> reiddraper: so use TCPListener.File() ?
07:52 < taruti> that has an Fd() method
07:53 < reiddraper> taruti: that's what i'm using now, and i'm passing that
File.Fd() into to fd array of http://golang.org/pkg/syscall/#ForkExec
07:53 < reiddraper> quite likely i'm still missing something, but i was
hoping that that would allow access to that fd to the new exec()'d process
07:56 < taruti> so how does it look according to strace
07:56 < taruti> my guess would be that the dupped fd is close-on-exec and
needs flag changing
07:57 < Namegduf> Oh, yeah.
07:57 < Namegduf> I forgot that that happened.
07:58 < reiddraper> ok, I recall reading something about that in
07:58 < reiddraper> didn't realize i had to do it myself
08:00 < reiddraper> http://golang.org/src/pkg/syscall/exec_unix.go#L196, if
i understand correctly, says that the fd's you pass into ForkExec are not
08:00 < taruti> ok
08:01 < reiddraper> taruti: will try strace
08:02 < reiddraper> err, forgot i was on mac now, no strace
08:08 < reiddraper> bedtime.  Namegduf, taruti, thanks for your help
08:08 < Namegduf> Sleep well.
08:09 -!- reiddraper [~reid@c-68-33-177-129.hsd1.md.comcast.net] has quit [Quit:
08:10 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has quit [Quit:
08:13 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has joined #go-nuts
08:14 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts
08:25 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
08:31 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|]
08:31 -!- xuwen [~xuwen@pool-151-200-28-66.res.east.verizon.net] has quit [Remote
host closed the connection]
08:37 -!- ShadowIce
[~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has joined
08:37 -!- ShadowIce
[~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has quit
[Changing host]
08:37 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
08:41 -!- ronnyy [~quassel@drsd-4d05f0d9.pool.mediaWays.net] has joined #go-nuts
08:44 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-149-172.clienti.tiscali.it] has
joined #go-nuts
08:51 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
08:54 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
08:58 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
09:04 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
09:09 -!- Zoopee [alsbergt@zoopee.org] has quit [Ping timeout: 255 seconds]
09:09 -!- ExtraSpice [~XtraSpice@] has quit [Max SendQ exceeded]
09:09 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
09:11 -!- suiside_ [tajnyman@bakery.awkwardcake.net] has quit [Quit: leaving]
09:12 -!- suiside [tajnyman@unaffiliated/suiside] has joined #go-nuts
09:26 -!- Zoopee [alsbergt@] has joined #go-nuts
09:29 -!- napsy [~luka@] has joined #go-nuts
09:32 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has joined
09:49 -!- snearch [~snearch@f053006124.adsl.alicedsl.de] has quit [Quit:
09:55 -!- TheSaint [~thesaint@] has joined #go-nuts
10:00 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
10:00 -!- wtfness [~dsc@] has joined #go-nuts
10:02 -!- foocraft [~dsc@] has quit [Ping timeout: 240 seconds]
10:17 -!- ronnyy [~quassel@drsd-4d05f0d9.pool.mediaWays.net] has quit [Remote host
closed the connection]
10:20 -!- TheSaint [~thesaint@] has quit [Quit: Colloquy for iPhone -
10:23 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has
joined #go-nuts
10:24 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-174-52.clienti.tiscali.it] has
joined #go-nuts
10:25 -!- TheSaint [~thesaint@] has joined #go-nuts
10:28 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-149-172.clienti.tiscali.it] has
quit [Ping timeout: 265 seconds]
10:34 -!- TheSaint [~thesaint@] has quit [Quit: Colloquy for iPhone -
10:46 -!- niemeyer_ [~niemeyer@200-203-59-56.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
10:54 -!- snearch [~snearch@f053006124.adsl.alicedsl.de] has joined #go-nuts
10:59 -!- photron_ [~photron@port-92-201-28-69.dynamic.qsc.de] has joined #go-nuts
11:00 -!- tvw [~tv@e176004108.adsl.alicedsl.de] has joined #go-nuts
11:11 -!- pjm0616 [~user@] has quit [Ping timeout: 250 seconds]
11:23 -!- DerHorst [~Horst@e176101177.adsl.alicedsl.de] has joined #go-nuts
11:36 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Ping timeout: 246 seconds]
11:36 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined
11:52 -!- rinzai [~rinzai@89-181-177-62.net.novis.pt] has joined #go-nuts
12:04 -!- xash [~xash@d142231.adsl.hansenet.de] has joined #go-nuts
12:05 -!- Scorchin [~Scorchin@host86-166-61-12.range86-166.btcentralplus.com] has
joined #go-nuts
12:06 -!- ildorn [~ildorn@node-ocv.ipv4.congress.ccc.de] has joined #go-nuts
12:07 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has quit [Quit: Morten.  Desu~]
12:09 -!- tvw [~tv@e176004108.adsl.alicedsl.de] has quit [Remote host closed the
12:10 -!- ildorn [~ildorn@node-ocv.ipv4.congress.ccc.de] has quit [Ping timeout:
272 seconds]
12:10 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has joined #go-nuts
12:13 -!- ildorn [~ildorn@node-ocv.ipv4.congress.ccc.de] has joined #go-nuts
12:22 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
12:29 -!- ildorn [~ildorn@node-ocv.ipv4.congress.ccc.de] has quit [Read error:
Connection reset by peer]
12:29 -!- ildorn1 [~ildorn@node-ocv.ipv4.congress.ccc.de] has joined #go-nuts
12:40 -!- boscop_ [~boscop@f050128034.adsl.alicedsl.de] has joined #go-nuts
12:41 -!- ildorn1 [~ildorn@node-ocv.ipv4.congress.ccc.de] has quit [Ping timeout:
250 seconds]
12:42 < KBme> Namegduf: Eko: do you guys know if PRIVMSG target1,target2..
:message is an accepted way of doing messages?
12:42 < KBme> doesn't seem to work for me :-/
12:43 -!- ildorn [~ildorn@] has joined #go-nuts
12:50 -!- ildorn [~ildorn@] has quit [Quit: Leaving.]
12:51 -!- rinzai [~rinzai@89-181-177-62.net.novis.pt] has quit [Quit: Leaving]
13:10 -!- rlab [~Miranda@] has joined #go-nuts
13:17 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has quit [Quit:
13:23 -!- wtfness [~dsc@] has quit [Quit: Leaving]
13:29 < skelterjohn> i'd guess, from your evidence, that it is not an
accepted way of doing messages
13:54 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Quit:
13:57 -!- ucasano [~ucasano@] has joined #go-nuts
13:59 -!- rlab [~Miranda@] has quit [Ping timeout: 246 seconds]
14:00 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has joined #go-nuts
14:01 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
14:06 < KBme> it's stated in the rfc, though
14:06 < KBme> irc implementations weirdness
14:12 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 246
14:12 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has joined
14:14 -!- plainhao [~plainhao@] has joined #go-nuts
14:18 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
14:19 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
14:20 -!- skejoe [~skejoe@] has joined #go-nuts
14:23 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has
quit [Ping timeout: 240 seconds]
14:25 -!- rlab [~Miranda@] has joined #go-nuts
14:25 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has quit [Quit:
14:27 -!- emjayess [~emjayess@pix1.i29.net] has joined #go-nuts
14:27 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
14:29 -!- pjm0616 [~user@] has joined #go-nuts
14:41 -!- foocraft [~dsc@] has joined #go-nuts
14:43 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
14:56 -!- napsy [~luka@] has quit [Ping timeout: 250 seconds]
15:06 -!- Project_2501 [~Marvin@] has joined #go-nuts
15:09 -!- femtoo [~femto@95-89-248-96-dynip.superkabel.de] has joined #go-nuts
15:09 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-174-52.clienti.tiscali.it] has
quit [Ping timeout: 246 seconds]
15:19 -!- shvntr [~shvntr@] has quit [Ping timeout: 276 seconds]
15:21 -!- plexdev [~plexdev@arthur.espians.com] has quit [Remote host closed the
15:30 -!- plexdev [~plexdev@arthur.espians.com] has joined #go-nuts
15:31 -!- rlab [~Miranda@] has quit [Ping timeout: 240 seconds]
15:31 -!- tdc [~santegoed@host86-154-92-30.range86-154.btcentralplus.com] has
joined #go-nuts
15:31 -!- rlab [~Miranda@] has joined #go-nuts
15:32 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
15:40 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Ping timeout: 264 seconds]
15:46 -!- javuchi [~noname@39.Red-83-45-69.dynamicIP.rima-tde.net] has joined
15:54 -!- napsy [~luka@] has joined #go-nuts
15:56 -!- skejoe [~skejoe@] has quit [Quit: Lost terminal]
16:12 -!- tensai_cirno [~cirno@] has quit [Quit: Leaving]
16:18 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts
16:18 -!- tensai_cirno [~cirno@] has joined #go-nuts
16:26 -!- skejoe [~skejoe@] has joined #go-nuts
16:28 -!- Fish [~Fish@9fans.fr] has quit [Remote host closed the connection]
16:31 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
16:34 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Quit:
Computer has gone to sleep.]
16:36 -!- ucasano [~ucasano@] has quit [Quit: ucasano]
16:40 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Quit: WeeChat
16:43 -!- snearch [~snearch@f053006124.adsl.alicedsl.de] has quit [Read error:
Connection reset by peer]
16:47 -!- ymasory [~ymasory@adsl-2-40-178.mia.bellsouth.net] has joined #go-nuts
16:48 -!- WonTu [~WonTu@p57B54D7D.dip.t-dialin.net] has joined #go-nuts
16:48 -!- WonTu [~WonTu@p57B54D7D.dip.t-dialin.net] has left #go-nuts []
16:49 -!- DerHorst [~Horst@e176101177.adsl.alicedsl.de] has quit [Remote host
closed the connection]
16:53 -!- femtoo [~femto@95-89-248-96-dynip.superkabel.de] has quit [Ping timeout:
260 seconds]
16:54 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
16:55 -!- tdc [~santegoed@host86-154-92-30.range86-154.btcentralplus.com] has quit
[Read error: Connection reset by peer]
17:13 -!- LeNsTR [~lenstr@unaffiliated/lenstr] has quit [Quit: LeNsTR]
17:13 -!- LeNsTR [~lenstr@unaffiliated/lenstr] has joined #go-nuts
17:14 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has joined #go-nuts
17:14 -!- rup [~rupert@] has joined #go-nuts
17:17 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has joined #go-nuts
17:18 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has quit [Quit:
17:18 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has joined #go-nuts
17:21 -!- Venom_X [~pjacobs@99-8-218-190.lightspeed.hstntx.sbcglobal.net] has
joined #go-nuts
17:21 -!- femtoo [~femto@95-89-248-96-dynip.superkabel.de] has joined #go-nuts
17:27 -!- keithgcascio [~keithcasc@nat/google/x-hndyaujouapfxsuc] has joined
17:28 < taruti> gocode seems very nice :)
17:29 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has quit [Quit:
Computer has gone to sleep.]
17:30 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined
17:31 < neur> :)
17:35 -!- xash [~xash@d142231.adsl.hansenet.de] has quit [Ping timeout: 246
17:52 -!- ios_ [~ios@] has quit [Quit: Leaving]
17:53 -!- Arm [~arm@unaffiliated/grpala] has joined #go-nuts
18:11 -!- Venom_X [~pjacobs@99-8-218-190.lightspeed.hstntx.sbcglobal.net] has quit
[Quit: Venom_X]
18:48 -!- Fish [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the
18:54 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has quit [Remote host closed the
18:55 -!- ismtrn [~andreas@] has joined #go-nuts
18:57 < ismtrn> Hi, so i'm just getting started with go, and im wondering
about how scopes work?  Specificly regarding to structs, are fields starting with
lower case "private"?
19:02 < ismtrn> Another thing i'm wondering about is this quote from
effective go: "The rule about pointers vs.  values for receivers is that value
methods can be invoked on pointers and values, but pointer methods can only be
invoked on pointers.  This is because pointer methods can modify the receiver;
invoking them on a copy of the value would cause those modifications to be
discarded." Does that mean i can't call methods on non-pointer objects that change
their state???
19:03 < exch> field sarting with a lowercase letter are always private
19:03 < exch> s/sart/start/
19:03 < ismtrn> ok, thanks
19:03 -!- femtoo [~femto@95-89-248-96-dynip.superkabel.de] has quit [Read error:
Connection reset by peer]
19:04 < exch> If you have a method on a struct it's defined on a value of
that struct instead of a pointer receiver, you can edit the fields all you want,
bu the changes will not persist
19:04 < exch> Because Go will pass a copy of your struct as the receiver
19:05 -!- emjayess [~emjayess@pix1.i29.net] has quit [Quit: Leaving]
19:06 < ismtrn> But can i write a method with a pointer receiver, and call
that method from a non-pointer instance?
19:06 -!- ExtraSpice [~XtraSpice@] has quit [Ping timeout: 276
19:07 -!- Arm [~arm@unaffiliated/grpala] has left #go-nuts ["WeeChat 0.3.2"]
19:07 < exch> yes
19:07 -!- itrekkie [~itrekkie@ip72-211-155-116.tc.ph.cox.net] has joined #go-nuts
19:07 < exch> the runtime will automatically make sure a pointer to your
value is used
19:08 -!- ildorn [~ildorn@node-4tg.ipv4.congress.ccc.de] has joined #go-nuts
19:09 < ismtrn> Nice, but the way i read the paragraph from effective go, is
that i can't "but pointer methods can only be invoked on pointers".  I guess it's
technically correct since the runtime creates a pointer though....
19:09 < ismtrn> thanks for the help anyways :)
19:12 < exch> np
19:16 -!- matti_____ [~mumboww@c-98-207-108-218.hsd1.ca.comcast.net] has quit
[Remote host closed the connection]
19:19 -!- salviati [~salviati@] has joined #go-nuts
19:19 < salviati> hi
19:19 < salviati> anyone recently tried swig-svn?
19:23 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has joined #go-nuts
19:28 -!- Project-2501 [~Marvin@] has joined #go-nuts
19:29 -!- femtoo [~femto@95-89-248-96-dynip.superkabel.de] has joined #go-nuts
19:31 -!- Project_2501 [~Marvin@] has quit [Ping timeout: 260 seconds]
19:35 < Eko> KBme: yes, that format is supposed to work in a standard,
compliant IRCd
19:35 < Eko> and I thought it worked in most of them
19:36 < Eko> (for instance, it works here)
19:36 < salviati> which version?
19:37 < Eko> PRIVMSG target1,target2 :message
19:37 < salviati> and have you actually tried using the pckage?
19:37 < salviati> ouch
19:37 < Eko> ?
19:37 < salviati> sorry, misunderstood
19:37 * Eko was responding to a question addressed to him awhile ago
19:38 < salviati> been talking about swig
19:38 < tensai_cirno> fuzzybyte,
19:38 < tensai_cirno> me > auto-complete-mode
19:38 < tensai_cirno> :D
19:39 < neur> is that dwm?
19:40 < tensai_cirno> (insert any tiling wm you like) xmonad
19:40 < tensai_cirno> with xmobar
19:40 < tensai_cirno> and emacs, of course
19:41 < neur> oh emacs, nice operating system.
19:41 < tensai_cirno> yep :)
19:41 -!- wrtp [~rog@drynoch.demon.co.uk] has joined #go-nuts
19:41 < neur> and such a perfect math class
19:42 < neur> oh that's the hostname
19:43 -!- tensorpudding [~user@] has joined #go-nuts
19:43 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
19:45 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
19:46 -!- ExtraSpice [~XtraSpice@] has quit [Max SendQ exceeded]
19:46 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
19:50 < aiju> it's always difficult to remember "Scan"
19:54 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Ping timeout: 240 seconds]
19:56 -!- ExtraSpice [~XtraSpice@] has quit [Max SendQ exceeded]
19:57 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
19:57 < fuzzybyte> tensai_cirno: cool
20:02 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined
20:03 -!- femtooo [~femto@95-89-248-96-dynip.superkabel.de] has joined #go-nuts
20:06 -!- femtoo [~femto@95-89-248-96-dynip.superkabel.de] has quit [Ping timeout:
240 seconds]
20:06 -!- ExtraSpice [~XtraSpice@] has quit [Max SendQ exceeded]
20:07 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
20:10 -!- neur [~neuro@unaffiliated/neurosys/x-283974] has quit [Ping timeout: 255
20:13 -!- ExtraSpice [~XtraSpice@] has quit [Max SendQ exceeded]
20:13 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
20:18 -!- ildorn [~ildorn@node-4tg.ipv4.congress.ccc.de] has quit [Quit: Leaving.]
20:19 -!- ExtraSpice [~XtraSpice@] has quit [Max SendQ exceeded]
20:20 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
20:22 -!- tensai_cirno [~cirno@] has quit [Ping timeout: 255 seconds]
20:24 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Remote host closed the connection]
20:24 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined
20:24 -!- reiddraper [~reid@c-68-33-177-129.hsd1.md.comcast.net] has joined
20:31 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Ping timeout: 264 seconds]
20:32 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined
20:34 -!- ExtraSpice [~XtraSpice@] has quit [Quit: Leaving]
20:42 -!- plainhao [~plainhao@] has quit [Quit: plainhao]
20:48 -!- emjayess [~emjayess@pix1.i29.net] has joined #go-nuts
20:49 -!- emjayess_ [~emjayess@pix1.i29.net] has joined #go-nuts
20:49 -!- emjayess [~emjayess@pix1.i29.net] has quit [Client Quit]
20:49 -!- emjayess_ [~emjayess@pix1.i29.net] has quit [Read error: Connection
reset by peer]
20:49 -!- emjayess [~emjayess@pix1.i29.net] has joined #go-nuts
20:49 -!- salviati [~salviati@] has quit [Read error: Connection
reset by peer]
20:50 -!- tensai_cirno [~cirno@] has joined #go-nuts
20:50 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Ping timeout: 265 seconds]
20:51 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined
20:52 -!- reiddraper [~reid@c-68-33-177-129.hsd1.md.comcast.net] has quit [Ping
timeout: 240 seconds]
21:03 -!- bnjmn [~bnjmn@siegel.dreamhost.com] has joined #go-nuts
21:03 < bnjmn> is GC optional?
21:06 < taruti> depends on what you are after
21:06 < taruti> it can be disabled if one is so inclined
21:08 < fuzzybyte> how you manually alloc and free stuff like in C?
21:11 < Namegduf> You can't.
21:12 < bnjmn> is there a language like go but without gc?
21:12 < Namegduf> Not really.
21:12 < bnjmn> darn
21:13 < Namegduf> Languages differ by so many different things that you're
not going to find anything with the same ideas and goals but with/without one
specific thing.
21:14 -!- LeNsTR [~lenstr@unaffiliated/lenstr] has quit [Quit: LeNsTR]
21:15 < fuzzybyte> I recall D language at least giving you the option to do
allocations manually too.
21:15 < fuzzybyte> why not go?
21:15 < Namegduf> I unno.
21:16 < Namegduf> D is a different language, far more complicated and far
more featureful.
21:16 < Namegduf> It's not Go.
21:16 < cbeck> Because Go isn't trying to be everything to everyone like D
21:16 < fuzzybyte> true.
21:16 < cbeck> And manual memory management breaks type safety
21:18 < taruti> being careful one can write Go code that does not use GC to
alloc things
21:18 -!- LeNsTR [~lenstr@unaffiliated/lenstr] has joined #go-nuts
21:18 < uriel> bnjmn: what is the problem with the GC?
21:18 < taruti> and one can use cgo to bind malloc&free
21:18 < taruti> but that is mostly pointless
21:19 < uriel> bnjmn: if you want to avoid it, you can also 'statically'
allocate all the memory you need in advance
21:19 < uriel> 21:18 < taruti> being careful one can write Go code
that does not use GC to alloc things
21:19 < uriel> taruti: exactly
21:36 -!- femtooo [~femto@95-89-248-96-dynip.superkabel.de] has quit [Read error:
Connection reset by peer]
21:36 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has quit [Read error: Connection
reset by peer]
21:36 -!- DarthShrine [~angus@60-242-109-62.tpgi.com.au] has joined #go-nuts
21:36 -!- DarthShrine [~angus@60-242-109-62.tpgi.com.au] has quit [Changing host]
21:36 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has joined
21:37 < bnjmn> i like to manage resources myself that's all
21:37 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has joined #go-nuts
21:38 < taruti> bnjmn: how about writing a better GC by yourself?
21:38 < tensai_cirno> anyone with emacs and gocode?
21:38 < tensai_cirno> need to test script
21:38 < tensai_cirno>
21:43 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has quit [Read error: Connection
reset by peer]
21:43 < taruti> tensai_cirno: I pulled few hours ago from the main gocode
repo and it seemed to work
21:43 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has joined #go-nuts
21:43 < tensai_cirno> taruti, sorting broken
21:44 < tensai_cirno> i'am maintaining this script
21:46 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 240
21:58 -!- _dx [~e@] has joined #go-nuts
21:59 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has joined #go-nuts
22:07 -!- javuchi [~noname@39.Red-83-45-69.dynamicIP.rima-tde.net] has left
#go-nuts ["have_a_life(now);"]
22:08 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
22:08 < bnjmn> i don't want a GC at all so why would i write one
22:09 < tensai_cirno> you need to write memory allocator anyway
22:10 -!- xash [~xash@d025211.adsl.hansenet.de] has joined #go-nuts
22:26 -!- itrekkie [~itrekkie@ip72-211-155-116.tc.ph.cox.net] has quit [Quit:
22:30 -!- ismtrn [~andreas@] has quit [Quit: Leaving]
22:33 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has quit [Quit: Morten.  Desu~]
22:34 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
22:40 -!- LeNsTR [~lenstr@unaffiliated/lenstr] has quit [Quit: LeNsTR]
22:41 -!- sauerbraten [~sauerbrat@p508CEBAD.dip.t-dialin.net] has joined #go-nuts
22:45 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Ping timeout: 276 seconds]
22:46 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined
22:47 < exch> bnjmn: in that case, you probably don't want Go :)
22:47 < bnjmn> but i like go for other reasons so i wonder what is the
closest thing to go without gc
22:51 < xash> I thought, the mainargument, why not implement func a([]T) -
where T is any type (don't know the formal word for this) - is, that it is fucked
up for the compiler (and here again, don't know exactly why ..  just picked it up
here someday ..  I think because it's difficult to handle it or whatevs) ..  but
now, when append() is added anyway, why not implent such functionality?
22:57 -!- Nicotux [~AndChat@] has joined #go-nuts
22:58 -!- itrekkie [~itrekkie@ip72-211-155-116.tc.ph.cox.net] has joined #go-nuts
22:58 -!- itrekkie [~itrekkie@ip72-211-155-116.tc.ph.cox.net] has quit [Client
22:58 -!- fission6 [4073ff0c@gateway/web/freenode/ip.] has joined
22:59 < Eko> xash: not sure I understand your question.  You can absolutely
write a func f(v []T)
22:59 < fission6> are there any solid web application frameworks available
for GO
22:59 -!- Fish [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the
22:59 < Eko> fission6: web.go
22:59 < Eko> fission6: https://github.com/hoisie/web.go
23:00 < Eko> it's the #1 installed package on
23:00 < fission6> thanks ill review
23:00 < fission6> http://godashboard.appspot.com/benchmarks is giving a
traceback if anyone is interested
23:01 < xash> Eko: Yeah, sorry, my english sucks :-) Uhrm, but you can't
write a func, where T is also a variable, like in append() and not a static type
23:01 < xash> But when I think about it, it's also a problem with typesafety
..  hrm
23:01 < Eko> er.
23:02 < Eko> you can do func f(args ...interface{}) that accepts any number
of arguments of any type
23:02 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit
[Ping timeout: 255 seconds]
23:02 < Eko> ala printf
23:02 -!- deso [~deso@x0561a.wh30.tu-dresden.de] has quit [Remote host closed the
23:02 -!- niemeyer_ [~niemeyer@200-203-59-56.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 240 seconds]
23:03 -!- Davidian1024 [~Davidian1@] has joined #go-nuts
23:03 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has quit [Quit:
Computer has gone to sleep.]
23:04 < fission6> is there a mysql or mongodb driver for go
23:04 < adg> fission6: yes, both
23:04 < adg> fission6: http://dashboard.appspot.com/project
23:04 < fission6> k
23:04 < fission6> link doesnt work
23:06 < Eko> godashboard
23:07 < xash> ofc ..  but f.e.: You implement a binarytree ..  You must
write the functions of the tree for every type you want to have stored ..  because
when you save data under interface{}, you can only return them as interface{}, and
NOT as a given Type
23:07 < fission6> right
23:08 -!- emjayess [~emjayess@pix1.i29.net] has quit [Quit: Leaving]
23:10 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-157-166.clienti.tiscali.it] has
joined #go-nuts
23:12 -!- Nicotux [~AndChat@] has quit [Read error: Connection reset
by peer]
23:12 -!- Nicotux [~AndChat@] has joined #go-nuts
23:12 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 240
23:12 < Eko> xash: all you have to implement is Less() and then you can use
the functions in sort
23:13 -!- Project-2501 [~Marvin@] has quit [Ping timeout: 260 seconds]
23:13 < Namegduf> xash: You can automatically preprocess the source to
generate variants if you like.
23:14 < Eko> that too.
23:14 < Namegduf> gofmt can do it in a pinch.  In even more of a pinch
(gofmt rewrite rules broke for me for no apparant reason in an upgrade) you can
use sed.
23:14 < Eko> droundy has a preprocessor that can take templatized code and
make type-specific stuff.
23:14 -!- fission6 [4073ff0c@gateway/web/freenode/ip.] has quit
[Quit: Page closed]
23:15 < Namegduf> Making your program dependent on an external preprocessor
is probably more harm than good
23:15 < Eko> I think you put it in a package and then use a special import
statement, and his preprocessor will do the rest
23:15 < Eko> Namegduf: like gofmt?  ;-)
23:15 < Namegduf> Eko: I said external.
23:15 < Eko> I honestly haven't found the need to do templates yet, and I
used them all the time in C++
23:16 < Namegduf> It's pretty damn obvious that gofmt doesn't suffer from
any of the obvious problems with depending on third-party programs
23:16 < xash> Templates!  That was the word I searched for :-D
23:16 < Namegduf> Like "getting a copy that builds at the same time and with
the same Go version that your program builds"
23:16 < Eko> Namegduf: if it's not built into the compiler, it's "external"
to me because it can break or change or not upgrade right.
23:16 < Namegduf> Eko: It is distributed with the compiler, in the same
source tree, and matching the same version.
23:16 < xash> And preprocessor wouldn't help, if you write an implementation
in a library fe, you don't want to change
23:17 < Namegduf> A preprocessor is how C++ templates work and they work
well enough
23:17 < xash> Uh, I meant tools like gofmt
23:17 < Namegduf> I don't see how that makes any difference.
23:18 -!- Zoopee [alsbergt@] has quit [Ping timeout: 255 seconds]
23:18 < xash> Preprocessor doesn't change the files ..
23:18 < Namegduf> ...you use the preprocessor to generate files for the
alternative versions from the base version.#
23:20 < xash> Uhh, yeah, that makes sense ..  sorry, my brain suffers from
sleeplessness :-)
23:20 < Namegduf> Not fun, but works.
23:24 -!- Nicotux [~AndChat@] has quit [Read error: Connection reset
by peer]
23:24 -!- Nicotux [~AndChat@] has joined #go-nuts
23:26 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
23:29 -!- Nicotux [~AndChat@] has quit [Read error: Connection reset
by peer]
23:29 -!- Nicotux [~AndChat@] has joined #go-nuts
23:30 -!- Scorchin [~Scorchin@host86-166-61-12.range86-166.btcentralplus.com] has
quit [Quit: Scorchin]
23:30 -!- bgentry [~bgentry@] has joined #go-nuts
23:30 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-157-166.clienti.tiscali.it] has
quit [Quit: E se abbasso questa leva che succ...]
23:33 -!- napsy [~luka@] has quit [Quit: leaving]
23:34 -!- skejoe [~skejoe@] has quit [Quit: Lost terminal]
23:36 < Eko> Namegduf: I just came up with a really evil way to do
concurrent map accesses while still preserving write semantics
23:37 < Namegduf> Eko: Oh?
23:37 < aiju> Eko: critical sections?
23:37 < aiju> ◔ ◡ ◔
23:37 < Eko> Namegduf: no, more evil than that
23:37 < Namegduf> That was not me
23:37 < Namegduf> My face is less terrifying
23:37 < aiju> haha
23:38 < aiju> there's a greater evil than critical sections?
23:38 < Eko> well, the initial idea is to have two maps
23:38 < Eko> that are both updated (serially) by the write process
23:39 -!- ios_ [~ios@] has joined #go-nuts
23:39 < Eko> the read process can either read from one map or the other if
it doesn't care about possibly getting bad values, or it can compare the two and
only use the value if they're the same
23:39 < aiju> shouldn't it be possible to make map accesses atomic?
23:39 < Namegduf> Possible, yes, but you'd need to write your own map
23:39 < aiju> patch go and submit the patch
23:39 < Namegduf> I use a trie in various places partly for that reason
23:40 < Namegduf> It wouldn't be accepted
23:40 < Eko> nope.
23:40 < aiju> why not?
23:40 < Namegduf> There are performance tradeoffs involved.  It was a
deliberate design decision that's right in most cases.
23:40 < aiju> oic
23:40 < Namegduf> I don't know what tradeoffs, but I've not designed a
23:40 < Eko> though adding a syncmap package would probably be accepted.
23:40 < Namegduf> That'd be a nice thing in the sync package, actually.
23:41 < Namegduf> A non-unidiomatic use of it.
23:41 < aiju> as i know hashmaps, there is one critical operation, namely
changing the entry in the table
23:41 < aiju> if one did that last and made it atomic…
23:41 < Eko> aiju: the performance tradeoff is in checking to see if it's in
a critical section while you're reading
23:42 < aiju> Eko: atomic operations and critical sections are entirely
different things…
23:42 < Eko> I think it can be done with a wait channel and a non-blocking
channel write, I just haven't sat down and written it yet.
23:43 < Namegduf> I don't even use atomic operations persay
23:43 < Eko> aiju: indeed, but making a new atomic operation is not really
what I want to do, i Just don't want to read if there's a write going on
23:43 < Namegduf> I just require writes to be wrapped in mutexes, which in
Go behave as full memory fences, and ensure that reading at any arbitrary point is
23:44 -!- itrekkie [~itrekkie@ip72-211-155-116.tc.ph.cox.net] has joined #go-nuts
23:46 < Eko> the sync package already has an assembly compare-and-swap that
is (presumably) cross-platform, so perhaps it could be done without having a mutex
23:47 < aiju> assembly and cross-platform are mutually exclusive
23:47 < aiju> but the Go world is an AMD64 so it probably doesn't matter :P
23:48 < Namegduf> It's ported to all supported architectures for Go
23:48 < Namegduf> You can rip it out and expose it in your own package if
you like.
23:48 < Namegduf> I do.
23:49 -!- photron_ [~photron@port-92-201-28-69.dynamic.qsc.de] has quit [Ping
timeout: 272 seconds]
23:52 -!- Nicotux [~AndChat@] has quit [Read error: Connection reset
by peer]
23:56 -!- Zoopee [alsbergt@zoopee.org] has joined #go-nuts
23:59 -!- rlab [~Miranda@] has quit [Quit: Miranda IM! Smaller,
Faster, Easier.  http://miranda-im.org]
--- Log closed Wed Dec 29 00:00:01 2010