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

--- Log opened Thu Dec 03 00:00:30 2009
00:03 -!- hipe [n=hipe@pool-96-224-8-82.nycmny.east.verizon.net] has quit [Remote
closed the connection]
00:04 -!- gasreaa [n=atwong@nat/slide/x-exbzvuhyubcvgoeo] has left #go-nuts []
00:05 -!- XniX23 [i=vegy@89-212-233-217.dynamic.dsl.t-2.net] has quit [Connection
timed out]
00:05 -!- NoOneButMe [i=znc@unaffiliated/noonebutme] has left #go-nuts []
00:07 -!- rakd [n=rakd@219.117.252.7.static.zoot.jp] has quit ["See you..."]
00:07 -!- ag90 [n=Adium@bas3-unionville55-1279752520.dsl.bell.ca] has joined
#go-nuts
00:13 -!- gkmngrgn [n=gkmngrgn@unaffiliated/gkmngrgn] has quit [Remote closed the
connection]
00:13 -!- xuser [n=xuser@unaffiliated/xuser] has left #go-nuts []
00:18 -!- hipe [n=hipe@pool-96-224-8-82.nycmny.east.verizon.net] has joined
#go-nuts
00:18 -!- GeoBSD [n=geocalc@lns-bzn-35-82-250-255-148.adsl.proxad.net] has quit
[Read error: 113 (No route to host)]
00:19 -!- osmosis [n=steven@m390e36d0.tmodns.net] has quit ["Ex-Chat"]
00:19 -!- osmosis [n=steven@m790e36d0.tmodns.net] has joined #go-nuts
00:20 -!- rhelmer [n=rhelmer@adsl-71-139-219-78.dsl.snfc21.pacbell.net] has quit
[]
00:24 < fgb> the noise dude just posted a treaty
00:24 < fgb> I'll check volume 1
00:25 -!- gisikw [n=gisikw@137.28.246.58] has joined #go-nuts
00:26 -!- The_Doctor [n=The_Doct@dhcp-168-105-225-31.wireless.manoa.hawaii.edu]
has joined #go-nuts
00:27 -!- scarabx [n=scarabx@c-24-147-239-120.hsd1.ma.comcast.net] has joined
#go-nuts
00:28 -!- The_Doctor [n=The_Doct@dhcp-168-105-225-31.wireless.manoa.hawaii.edu]
has quit [Remote closed the connection]
00:28 -!- brunov [n=bruno@190.191.110.64] has quit [Read error: 110 (Connection
timed out)]
00:31 -!- goplexian [n=goplexia@d154-20-0-9.bchsia.telus.net] has quit ["go to
sleep!"]
00:32 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit []
00:34 -!- The_Doctor [n=The_Doct@dhcp-168-105-225-31.wireless.manoa.hawaii.edu]
has joined #go-nuts
00:34 < fgb> I didn't get what problem is the notnull thing trying to
solve....
00:37 -!- The_Doctor [n=The_Doct@dhcp-168-105-225-31.wireless.manoa.hawaii.edu]
has quit [Client Quit]
00:43 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has quit
["Leaving."]
00:43 < amuck_> fgb: The problem is unexpected nulls
00:44 < fgb> what about the ones you expect
00:44 < amuck_> You should use a nullable type for when you expect nulls
00:45 < amuck_> Having non-nullable types lets the compiler enforce more
00:45 -!- iant [n=iant@nat/google/x-dgotndvddotbuayw] has quit [Read error: 110
(Connection timed out)]
00:46 < fgb> sorry, but it looks like a solution looking for a problem
00:46 -!- brunov [n=bruno@190.191.110.64] has joined #go-nuts
00:47 < dho> fgb: what happens if you call make() or new() and get nil back?
00:47 < fgb> you deal with it
00:47 < dho> no, your shit crashes.
00:48 < fgb> if there's no memory, there's no memory
00:48 < dho> There are more elegant ways to handle that
00:48 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has quit ["Leaving"]
00:50 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has
quit [Remote closed the connection]
00:50 < dho> there may be more memory later, so you could just sit around
until there is.  or, you could do some cleanup to save some state and exit.
crashing and saying `oh well' isn't good enough for everyone
00:50 < nf_> dho: this is a pretty age-old problem.  generally the solution
is "don't run out of memory"
00:50 < dho> right
00:51 -!- iant [n=iant@67.218.109.83] has joined #go-nuts
00:51 -!- mode/#go-nuts [+v iant] by ChanServ
00:51 < KirkMcDonald> But you need to be able to run your "save state and
exit" code within the (apparently) limited amount of memory which is available.
00:52 < dho> KirkMcDonald: you can always reserve memory to do that when the
process begins
00:53 -!- decriptor [n=decripto@137.65.132.17] has quit [Read error: 110
(Connection timed out)]
00:55 < nf_> dho: in that case, you're implementing something at a way
higher level than malloc()
00:55 < dho> nf_: how so?
00:55 < nf_> dho: you'd want to first test if there's enough memory to
create your object - not try to create it and handle the nil
00:55 < dho> nf_: if there's not enough memory to create your stuff at
startup, you can't start.
00:55 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has joined
#go-nuts
00:56 < nf_> well in that case you'll crash and burn anyway, rightg?
00:56 < dho> nf_: yes, but at least you will be in a nascent state where
you're not potentially losing information
00:56 < nf_> yes
00:56 < nf_> what i'm saying is that you don't ever want the OS to be saying
"no, you can't do that." you want to avoid doing things you can't do in the first
place.
00:57 -!- lolsuper_ [n=super_@unaffiliated/lolsuper-/x-9881387] has quit [Read
error: 104 (Connection reset by peer)]
00:57 < dho> nf_: that's not your decision
00:57 < dho> you're never the only process running in practice
00:57 < nf_> exactly
00:58 < nf_> so if your program has the tendency to grow in size
unpredictably, you need to attend to that within your program
00:58 < dho> not really
00:58 < nf_> well what's the solution then?
00:58 < dho> if someone else's program tends to grow in size unpredictably,
it affects you
00:58 < dho> that's my point
00:58 < nf_> as a sysadmin, i like to configure my apps to observe certain
limits.  most server daemons and such allow me to do this
00:58 < dho> if you don't know the memory consumption of your own code,
you're doing it wrong anyway
00:59 < dho> and your code isn't of the caliber that needs that kind of
stuff
00:59 < dho> (generally, I'm sure there are exceptions)
00:59 < nf_> i suppose my position is that you don't necessarily need to
guard against the system becoming memory exhausted at an application level
00:59 < nf_> that should be attended by the sysadmin
00:59 < dho> i agree, not all applications do
01:00 < nf_> set ulimits, prevent processes from interfering with each other
01:00 < dho> but if you're working in financials and all of a sudden the
database takes all your memory, you don't want to drop a 10 billion dollar
transaction
01:00 < nf_> if something wants to spiral out of control, let it die a
horrible death.  but you shouldn't let it deprive your other apps of memory
01:00 < plexdev> http://is.gd/5aBoo by [Robert Griesemer] in 3 subdirs of
go/src/ -- Add flag -tabindent to gofmt: forces use of
01:00 -!- fenicks [n=christia@log77-4-82-246-228-78.fbx.proxad.net] has joined
#go-nuts
01:00 < dho> i don't disagree with you purely
01:01 < dho> anyway i gotta go home
01:01 < dho> bbl
01:01 < fenicks> hi guys
01:09 -!- ag90 [n=Adium@bas3-unionville55-1279752520.dsl.bell.ca] has left
#go-nuts []
01:12 < Kom> Does anyone know if there a specific document somewhere that
contains proof of Go's compile and run speed compared to C and such that I could
use as a citation in a research paper?
01:14 -!- mbarkhau1 [n=koloss@p54A7F00B.dip.t-dialin.net] has joined #go-nuts
01:14 -!- mbarkhau1 [n=koloss@p54A7F00B.dip.t-dialin.net] has quit [Read error:
104 (Connection reset by peer)]
01:16 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has joined #go-nuts
01:16 < KirkMcDonald> Kom: I doubt that such a document exists.
01:17 < Kom> I've been looking around, having something like that would
help.
01:17 < Kom> Though, yeah...  I have my doubts too
01:18 <+iant> Kom: there is no proof at this time, only benchmarks and
reasoned estimates of what Go will look like in the future
01:18 < Kom> Ah, thanks.
01:19 -!- fgb [n=fgb@190.246.85.45] has left #go-nuts []
01:19 -!- AndrewBC_ [n=Andrew@97.93.242.12] has joined #go-nuts
01:22 -!- osmosis [n=steven@m790e36d0.tmodns.net] has quit ["Ex-Chat"]
01:27 -!- triplez [n=triplez@cm52.sigma225.maxonline.com.sg] has quit []
01:31 < plexdev> http://is.gd/5aCy4 by [Russ Cox] in 4 subdirs of
go/src/cmd/ -- 6g etc: groundwork for eliminating redundant bounds checks.
01:32 -!- mbarkhau [n=koloss@p54A7F92E.dip.t-dialin.net] has quit [Connection
timed out]
01:37 -!- AndrewBC [n=Andrew@97.93.242.12] has quit [Read error: 110 (Connection
timed out)]
01:39 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has quit []
01:47 -!- hipe [n=hipe@pool-96-224-8-82.nycmny.east.verizon.net] has quit [Remote
closed the connection]
01:51 -!- kiva [n=quassel@eth6568.nsw.adsl.internode.on.net] has joined #go-nuts
01:52 -!- amuck_ [n=amuck_@rrcs-76-79-44-2.west.biz.rr.com] has quit []
01:54 -!- aaront [n=aaront@unaffiliated/aaront] has quit ["And that's all he
wrote..."]
01:54 -!- kota1111 [n=kota1111@gw2.kbmj.jp] has joined #go-nuts
01:54 -!- aaront [n=aaront@d24-141-25-171.home.cgocable.net] has joined #go-nuts
01:54 -!- nutate [n=rseymour@cacsag4.usc.edu] has quit ["I'm outta heee-eere"]
01:55 -!- aaront [n=aaront@unaffiliated/aaront] has quit [Client Quit]
01:55 -!- aaront [n=aaront@d24-141-25-171.home.cgocable.net] has joined #go-nuts
01:58 -!- triplez [n=triplez@bb116-14-65-38.singnet.com.sg] has joined #go-nuts
02:05 -!- hstimer [n=hans@70.90.170.37] has quit [Read error: 60 (Operation timed
out)]
02:06 -!- jsgotangco [n=JSG@ubuntu/member/jsgotangco] has joined #go-nuts
02:09 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has quit
["Leaving."]
02:17 -!- StDan [n=danielb@124-197-59-227.callplus.net.nz] has joined #go-nuts
02:19 -!- hstimer [n=hans@c-98-234-25-125.hsd1.ca.comcast.net] has joined #go-nuts
02:19 -!- aaront [n=aaront@unaffiliated/aaront] has quit ["And that's all he
wrote..."]
02:20 -!- NoOneButMe [i=znc@unaffiliated/noonebutme] has joined #go-nuts
02:20 -!- kiva [n=quassel@eth6568.nsw.adsl.internode.on.net] has quit [Read error:
110 (Connection timed out)]
02:21 -!- Tuller [n=Tuller@pool-72-84-246-12.rcmdva.fios.verizon.net] has joined
#go-nuts
02:22 -!- brunov [n=bruno@190.191.110.64] has quit [Read error: 60 (Operation
timed out)]
02:23 -!- iant [n=iant@67.218.109.83] has quit [Read error: 110 (Connection timed
out)]
02:31 -!- Kom [n=kommentg@ip70-178-193-114.ks.ks.cox.net] has left #go-nuts []
02:34 < plexdev> http://is.gd/5aELj by [Russ Cox] in go/src/cmd/8g/ -- 8g:
discard tempalloc/tempfree experiment
02:42 -!- tor7 [n=tor@c-987a71d5.04-50-6c756e10.cust.bredbandsbolaget.se] has quit
[]
02:44 -!- jsgotangco [n=JSG@ubuntu/member/jsgotangco] has quit ["Ciao"]
02:47 -!- lolsuper_ [n=super_@unaffiliated/lolsuper-/x-9881387] has joined
#go-nuts
02:49 -!- hipe [n=hipe@pool-74-101-72-105.nycmny.east.verizon.net] has joined
#go-nuts
02:49 -!- senneth_ [i=senneth@irssi/staff/senneth] has joined #go-nuts
02:49 -!- senneth [i=senneth@equinox.oberkommando.org] has quit [Read error: 104
(Connection reset by peer)]
02:54 -!- chid [n=mgzxnqvs@c122-106-95-175.rivrw1.nsw.optusnet.com.au] has joined
#go-nuts
02:54 -!- trickie [n=trickie@86.93.227.181] has joined #go-nuts
03:05 -!- ni| [n=james@c-24-34-220-147.hsd1.ma.comcast.net] has joined #go-nuts
03:08 -!- malkomalko_ [n=malkomal@66-234-41-82.nyc.cable.nyct.net] has quit []
03:13 -!- beardeddog2 [n=beardedd@24.20.122.211] has quit ["Leaving"]
03:19 -!- Tuller [n=Tuller@pool-72-84-246-12.rcmdva.fios.verizon.net] has quit
["to the batcave?"]
03:20 -!- felipe [n=felipe@my.nada.kth.se] has quit [Client Quit]
03:22 -!- decriptor [n=decripto@174-27-134-202.slkc.qwest.net] has joined #go-nuts
03:24 -!- jA_cOp [n=yakobu@unaffiliated/ja-cop/x-9478493] has quit [Read error: 54
(Connection reset by peer)]
03:24 -!- jA_cOp_ [n=yakobu@unaffiliated/ja-cop/x-9478493] has joined #go-nuts
03:25 -!- lambo4jos [n=chatzill@c-76-126-250-10.hsd1.ca.comcast.net] has joined
#go-nuts
03:26 -!- hipe [n=hipe@pool-74-101-72-105.nycmny.east.verizon.net] has left
#go-nuts ["Leaving..."]
03:29 -!- Fraeon [n=kzer-za@e212-246-65-153.elisa-laajakaista.fi] has quit []
03:31 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined
#go-nuts
03:38 < plexdev> http://is.gd/5aH2X by [Robert Griesemer] in
go/src/cmd/gofmt/ -- updated documentation for gofmt
03:41 -!- decriptor [n=decripto@174-27-134-202.slkc.qwest.net] has quit [Read
error: 110 (Connection timed out)]
03:42 -!- decriptor [n=decripto@174-27-134-202.slkc.qwest.net] has joined #go-nuts
03:50 -!- tav_ [n=tav@78.149.148.224] has joined #go-nuts
03:50 -!- Amaranth [n=travis@ubuntu/member/Amaranth] has joined #go-nuts
03:53 -!- Gracenotes [n=person@wikipedia/Gracenotes] has joined #go-nuts
03:53 -!- xjih78_ [i=z0r0@87-126-67-31.btc-net.bg] has joined #go-nuts
03:55 -!- iant [n=iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined
#go-nuts
03:55 -!- mode/#go-nuts [+v iant] by ChanServ
03:55 -!- RolaBlade [n=winston@hoasb-ff08dd00-36.dhcp.inet.fi] has joined #go-nuts
04:03 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit []
04:04 -!- iwikiwi [n=iwikiwi@59.177.107.90] has joined #go-nuts
04:05 < hstimer> should I be able to take the address of a function?
04:07 -!- tav [n=tav@78.149.148.224] has quit [Read error: 110 (Connection timed
out)]
04:07 <+iant> hstimer: you don't really need to, you can just refer to the
function without taking its address
04:07 -!- RolaBlade [n=winston@hoasb-ff08dd00-36.dhcp.inet.fi] has quit
["leaving"]
04:08 < hstimer> what if I'm optionally passing a function?  can I pass nil
in it's place event though it is not an address?
04:09 <+iant> yes
04:09 < hstimer> oh
04:09 < hstimer> odd
04:09 < hstimer> magic
04:09 <+iant> not all that magic, nil is the empty value for several types,
including function types
04:09 <+iant> think of the Go function type as equivalent to a C/C++
function pointer
04:11 -!- xjih78 [i=z0r0@87-126-211-86.btc-net.bg] has quit [Read error: 110
(Connection timed out)]
04:13 < hstimer> iant: I spent too much time writing assembly -- I'm often
too literal
04:14 < hstimer> iant: so I can dereference a function variable to call it
(*foo)(blah)
04:14 <+iant> hstimer: if foo has type func(int) or whatever, just write
foo(blah)
04:15 < hstimer> iant: I'm pointing out that the compiler is a little
deceptive -- it allows (*foo)(blah), but not $foo
04:15 < hstimer> &foo
04:15 <+iant> (*foo)(blah) should only work with a *func
04:16 < hstimer> right, but how do you ever get the &func to begin with
04:16 <+iant> &foo, where foo is a function, is meaningless in Go
04:16 <+iant> if you refer to foo, you get a func
04:16 < hstimer> yes, i understand
04:16 <+iant> you can take the address of a variable of type func to get a
*func
04:17 < hstimer> but the compiler should probably not allow *foo either
04:17 < hstimer> oh...
04:17 <+iant> I hope it doesn't if foo is an actual function, rather than a
variable of type *func
04:17 < hstimer> right
04:17 < hstimer> got it
04:18 < hstimer> so this is ok: f := func; &f
04:18 <+iant> yes
04:19 < hstimer> iant: on a different subject, why do foreign calls require
a thread context switch?  seems a little drastic
04:20 <+iant> hstimer: I don't think they require a thread context switch,
but they do require a large contiguous stack
04:20 <+iant> is there a thread context switch in there?
04:20 < hstimer> something I thought I read in the mailing list
04:21 -!- codedread [i=180dd699@gateway/web/freenode/x-rzzjyxwjzuqrajel] has
joined #go-nuts
04:21 <+iant> I think rsc said that there used to be a thread context switch
but there isn't one now
04:21 < hstimer> glad to hear that
04:22 < hstimer> how long do you think before go reaches the only 10% slower
than c goal?
04:22 <+iant> hstimer: mainly we need to get the garbage collector right and
then see where we are
04:23 < hstimer> I'm assuming people will learn not to do s += s2
04:23 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has joined #go-nuts
04:23 < hstimer> in loops
04:23 -!- iwikiwi [n=iwikiwi@59.177.107.90] has quit [Read error: 110 (Connection
timed out)]
04:23 < hstimer> just like with c++; good performance when someone
understands the implications of what they write
04:24 < hstimer> iant: so should we expect the new gc this year or next?
04:24 <+iant> at this point I would guess next year but I don't really know
04:26 < hstimer> iant: I appreciate that y'all aren't automatically just
throwing in every feature language request.  Let us use it for a while so we
really understand what it needs.
04:28 < hstimer> iant: I used C++ since cfront 1.0 and I can't stand using
it anymore.  It is too unwieldily.  The syntax is a nightmare, and the libraries
are difficult to master.  I find myself using c more than c++ just so I can avoid
all the baggage
04:29 <+iant> yeah
04:29 < hstimer> iant: and if performance is a consideration the STL is
pretty much useless because there isn't a compiler that can go a good job, despite
the theoretical possiblity
04:31 -!- scandal [n=nobody@unaffiliated/scandal] has quit ["leaving"]
04:36 -!- skyyy [i=caw@res55551479.rh.rit.edu] has quit [Client Quit]
04:36 -!- felipe [n=felipe@my.nada.kth.se] has joined #go-nuts
04:40 -!- atsampson [n=ats@94-193-50-45.zone7.bethere.co.uk] has quit [Read error:
110 (Connection timed out)]
04:42 -!- uxp [n=uxp@uxp.dsl.xmission.com] has quit [Remote closed the connection]
04:43 -!- nigwil [n=chatzill@berkner.ccamlr.org] has quit ["ChatZilla 0.9.85
[Firefox 3.5.5/20091102152451]"]
04:43 -!- uxp [n=uxp@uxp.dsl.xmission.com] has joined #go-nuts
04:43 -!- decriptor [n=decripto@174-27-134-202.slkc.qwest.net] has quit [Read
error: 110 (Connection timed out)]
04:44 -!- jpowermacg5 [n=jpowerma@c-71-204-41-29.hsd1.ga.comcast.net] has quit
[Read error: 104 (Connection reset by peer)]
04:44 < hstimer> iant: Is there a way to get reflection info at compile
time?
04:45 <+iant> hstimer: I'm not sure what that would mean
04:45 < hstimer> mainly for diagnostics
04:45 < hstimer> names of variable, line #, function name, etc...  stuff you
might want in a trace
04:45 <+iant> fmt.Printf("%T", v) will print the type of v
04:46 <+iant> name of variable is not available
04:46 <+iant> there is a backtrace function somewhere
04:46 < hstimer> foo(a int) { ptrace("%A"); // prints args }
04:46 < hstimer> a: 2
04:47 <+iant> I don't think there is anything like that at present
04:47 < hstimer> i'll look for the backtrace
04:47 < hstimer> thx
04:49 -!- malkomalko [n=malkomal@66-234-41-82.nyc.cable.nyct.net] has joined
#go-nuts
04:52 -!- Kibiz0r [n=Adium@99-48-204-31.lightspeed.brhmmi.sbcglobal.net] has
joined #go-nuts
04:53 -!- codedread [i=180dd699@gateway/web/freenode/x-rzzjyxwjzuqrajel] has quit
["Page closed"]
04:53 -!- tar_ [n=tom@c-67-180-208-162.hsd1.ca.comcast.net] has joined #go-nuts
04:55 < plexdev> http://is.gd/5aJvH by [Peter Froehlich] in 2 subdirs of
go/src/pkg/ -- Runes: turn string into []int
04:57 -!- clearscreen [n=clearscr@e248070.upc-e.chello.nl] has joined #go-nuts
04:57 -!- clearscreen [n=clearscr@e248070.upc-e.chello.nl] has quit [Client Quit]
04:58 -!- clearscreen [n=clearscr@e248070.upc-e.chello.nl] has joined #go-nuts
04:59 -!- Amaranth [n=travis@ubuntu/member/Amaranth] has quit ["Ex-Chat"]
04:59 -!- Kibiz0r [n=Adium@99-48-204-31.lightspeed.brhmmi.sbcglobal.net] has quit
["Leaving."]
05:01 -!- halfdan [n=halfdan@p57A976BB.dip.t-dialin.net] has joined #go-nuts
05:04 -!- Amaranth [n=travis@ubuntu/member/Amaranth] has joined #go-nuts
05:05 < tar_> someone already reported my bug.  :(
05:10 < Gracenotes> you can do one better than them and fix it!  :o
05:10 < anticw> tar_: which bug is that?
05:12 -!- p0g0_ [n=pogo@unaffiliated/p0g0] has quit [Read error: 110 (Connection
timed out)]
05:15 < nf_> it's a meta-bug: there already exists a bug that he wants to
report.
05:15 -!- jA_cOp_ [n=yakobu@unaffiliated/ja-cop/x-9478493] has quit ["Leaving"]
05:15 -!- halfdan_ [n=halfdan@p57A9697A.dip.t-dialin.net] has quit [Read error:
110 (Connection timed out)]
05:18 < tar_> select { case _ = <-ch: ...  }
05:18 < tar_> and nf_'s
05:18 -!- tav_ [n=tav@92.24.53.220] has joined #go-nuts
05:20 -!- KillerX [n=anant@122.181.150.106] has joined #go-nuts
05:20 -!- abford [n=abford@c-71-205-224-173.hsd1.mi.comcast.net] has left #go-nuts
["Leaving"]
05:31 -!- Vova [n=Vova@80.178.10.36.adsl.012.net.il] has joined #go-nuts
05:31 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has joined
#go-nuts
05:33 -!- droid0011 [n=g1@p4FDCA2D9.dip.t-dialin.net] has joined #go-nuts
05:33 -!- tav [n=tav@78.149.148.224] has quit [Read error: 110 (Connection timed
out)]
05:33 -!- diltsman_ [n=diltsman@64.122.18.77] has joined #go-nuts
05:34 < diltsman_> Why would Go give me an "illegal rune in string" error on
a line that only contains /*
05:34 <+iant> diltsman_: I would look on the preceding line
05:35 < diltsman_> The only things before it are a line that says "package
Elements" and a blank line.
05:36 < anticw> iant: do you know much about the unsafe' package?
05:36 <+iant> diltsman_: no idea, that error should only happen in a string,
I think; the error should also show the characters involved
05:36 < anticw> specifically Unreflect
05:36 <+iant> anticw: yes, I know something about it
05:37 -!- kaib [n=kaib@c-76-102-52-156.hsd1.ca.comcast.net] has joined #go-nuts
05:37 -!- mode/#go-nuts [+v kaib] by ChanServ
05:37 < anticw> iant: using unreflect i can turn a byte slice into an int
slice, but len/cap are wrong
05:37 < diltsman_> iant: It says " a5 20" followed by "Element.go:3: illegal
rune in string" on the next line.
05:37 < anticw> iant: and it looks like it does a copy all the same
05:37 <+iant> diltsman_: is there a 0xa5 character in your file?
05:38 < anticw> iant: i was wondering if it might make sense to change
Unreflect to allow giving the size ...  so basically you can create an slice or
whatever of anysize from any valid pointer
05:39 <+iant> anticw: I think the easiest approach is something like
([10000]int)(&a[0])[0:len]
05:39 -!- decriptor [n=decripto@53.250.sfcn.org] has joined #go-nuts
05:39 <+iant> make that (*[10000]int)
05:39 < anticw> iant: hmm, let me try that
05:40 <+iant> you'll have to mix in an unsafe.Pointer too, I suppose
05:41 < diltsman_> iant: There is a 0xa5 in the comment, but it is several
lines in to the comment.
05:43 < diltsman_> iant: Shouldn't comments allow any character (with the
exception of the */ that ends them)?
05:43 <+iant> diltsman_: ah, thanks; the same function is used to pick up
characters in a comment, so the error message is downright misleading
05:43 <+iant> diltsman_: please feel free to file an issue on this
05:43 <+iant> diltsman_: also, when reading a comment the line number is not
updated until the end of the comment, so the error message gives the wrong line
05:44 <+iant> diltsman_: no, comments don't allow any character; Go source
code is always supposed to be UTF-8, even in comments
05:44 < anticw> iant: a better refinement would be to create a slice from a
ptr returned by mmap to allow demand paging and avoid the read-in
05:44 < anticw> iant: however, that seems like it might confuse things
horribly
05:44 < diltsman_> iant: If it is UTF-8, why wouldn't that character be
allowed?
05:44 -!- Loafers [n=loafers@unaffiliated/loafers] has joined #go-nuts
05:44 <+iant> diltsman_: 0xa5 by itself is not a valid UTF-8 character
05:45 <+iant> http://en.wikipedia.org/wiki/UTF-8
05:46 -!- droid001 [n=g1@p4FDCAFB5.dip.t-dialin.net] has quit [Connection timed
out]
05:48 < anticw> heh, speaking of utf-8 i found i have trouble with cut &
paste for code points > 2^16
05:48 < diltsman_> iant: Ok, Vim was throwing me off.  It was displaying
0xa5 as a Yen symbol, so I assumed that it was the correct code sequence.
05:49 <+iant> that's Latin-1
05:49 <+iant> not UTF-8
05:53 -!- aho [n=nya@f051139160.adsl.alicedsl.de] has quit
["EXEC_over.METHOD_SUBLIMATION"]
05:54 < asyncster> Quick question: should this code print 0 or 1:
05:54 < asyncster> http://pastie.org/725007
05:55 < asyncster> (it prints 0)
05:56 -!- triplez_ [n=triplez@bb116-14-29-110.singnet.com.sg] has joined #go-nuts
05:56 -!- triplez [n=triplez@bb116-14-65-38.singnet.com.sg] has quit [Read error:
104 (Connection reset by peer)]
05:57 < asyncster> i guess i'll file an issue
05:59 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined
#go-nuts
06:01 -!- exn [n=exn@195.49.206.202] has joined #go-nuts
06:03 -!- triplez_ [n=triplez@bb116-14-32-200.singnet.com.sg] has joined #go-nuts
06:06 -!- tar_ [n=tom@c-67-180-208-162.hsd1.ca.comcast.net] has quit []
06:08 < anticw> iant: is reflection expensive?  i've not looking in details
as to how much it cost in cycles but it seems to be it potentially could be
06:08 -!- triplez [n=triplez@bb116-14-29-110.singnet.com.sg] has quit [Read error:
60 (Operation timed out)]
06:10 -!- nareaisd [n=kklwl@187.35.245.167] has quit ["CyberScript - if you don't
try it, you can't tell me it sucks.  (www.cyberscript.org)"]
06:11 < plexdev> http://is.gd/5aMqB by [Rob Pike] in 25 subdirs of go/ --
move ReadFile, WriteFile, and ReadDir into a separate io/ioutil package.
06:20 -!- diltsman_ [n=diltsman@64.122.18.77] has quit [Read error: 113 (No route
to host)]
06:20 -!- scarabx [n=scarabx@c-24-147-239-120.hsd1.ma.comcast.net] has quit ["This
computer has gone to sleep"]
06:20 < Gracenotes> hm, entirely separate package?
06:20 < Gracenotes> then I suppose all that io does now is provide
interfaces and code that uses them directly.  no actual io :)
06:22 -!- triplez [n=triplez@bb116-14-32-200.singnet.com.sg] has quit [Read error:
104 (Connection reset by peer)]
06:23 -!- codedread [i=180dd699@gateway/web/freenode/x-gyurvcyciudlyrzs] has
joined #go-nuts
06:23 -!- diltsman [n=diltsman@64.122.18.77] has joined #go-nuts
06:24 <+iant> anticw: reflection is not particularly expensive
06:25 -!- melba [n=blee@unaffiliated/lazz0] has joined #go-nuts
06:26 < codedread> just pulled the latest down for go and tried to build it
after 1-2 weeks
06:26 -!- itrekkie [n=itrekkie@ip72-200-105-72.tc.ph.cox.net] has joined #go-nuts
06:27 < anticw> Gracenotes: io has the basic reader/writer/etc stuff
06:27 < codedread> i'm getting an error http://pastebin.com/m2b058a6e
06:27 < codedread> i'm on OSX 10.5
06:27 < anticw> fw issue i think
06:28 < codedread> anticw - sorry, are you talking to me?
06:29 < anticw> yes; there are reports the mcapple fw rules break certain
tests, i think it's been reported on the list and probably the issue tracker
06:29 -!- itrekkie [n=itrekkie@ip72-200-105-72.tc.ph.cox.net] has quit [Client
Quit]
06:30 < codedread> i'm afraid i don't know what 'fw' means so i can't search
the issue tracker
06:30 < anticw> firewall
06:31 < codedread> k, will create an issue
06:31 -!- triplez [n=triplez@bb116-14-25-184.singnet.com.sg] has joined #go-nuts
06:32 < anticw> actually, that looks like something else
06:32 < anticw> maybe the 0-len dgram stuff someone added recently
06:32 < anticw> maybe mcapple os doesn't like those
06:34 -!- alc [n=alc@222.128.159.61] has joined #go-nuts
06:34 -!- Rob_Russell [n=chatzill@206-248-157-156.dsl.teksavvy.com] has quit [Read
error: 113 (No route to host)]
06:36 < diltsman> Is there some way to modify the Makefile on
http://golang.org/doc/contribute.html so that you don't have to have your package
root at $GOROOT/src/pkg/?
06:37 < anticw> codedread: ok, i think it is likely fall out from that
06:38 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has quit ["Leaving"]
06:38 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has quit
["Leaving"]
06:41 -!- decriptor [n=decripto@53.250.sfcn.org] has quit [Read error: 113 (No
route to host)]
06:41 -!- tar_ [n=tom@c-67-180-208-162.hsd1.ca.comcast.net] has joined #go-nuts
06:43 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has quit []
06:44 < tar_> how would you protect a concurrent map?  using a channel like
a mutex, creating a goroutine with communication channels, or something else?
06:45 -!- Xavi [n=Xavi@71-85-10-175.dhcp.buft.sc.charter.com] has joined #go-nuts
06:45 -!- Xavi [n=Xavi@71-85-10-175.dhcp.buft.sc.charter.com] has quit [Remote
closed the connection]
06:45 < tar_> my map has information on a server's clients, for access by
handlers of those clients' connections
06:45 < Gracenotes> built-in maps should be concurrent safe
06:46 < tar_> I'm pretty sure I read they weren't.
06:46 < anticw> they're not
06:49 < anticw> at some level i like the idea they should be ...  but then
people might expect that of Vectors
06:49 < anticw> and similar, which again might be reasonable but it deserves
some thought
06:50 < Zeffrin> is it possible to check on whether theres data waiting on a
channel without blocking?
06:50 < tar_> It looks like "if data <- ch {}" does that
06:50 < Zeffrin> maybe if you used a channel like a lock, post data when
it's in use and clear it out/post some other value when it's free again?
06:50 < Zeffrin> oh ok sweet, I thought <- from ch blocked
06:50 -!- diltsman [n=diltsman@64.122.18.77] has quit [Read error: 104 (Connection
reset by peer)]
06:51 -!- diltsman__ [n=diltsman@64.122.18.77] has joined #go-nuts
06:51 < anticw> you can use a select as well
06:51 < tar_> Zeffrin: maybe it's a difference with buffered channels that I
don't appreciate yet.  :-X You'll have to double-check me.
06:51 < anticw> actaully, i guess that will block for something (or close)
06:52 < Zeffrin> From effective go it says reader always blocks and if the
channel is unbuffered the sender will block until the value has been received
06:53 < tar_> :\
06:53 < Zeffrin> but that could work ok with a buffered channel still, when
someone wants to get to the map chances are they're going to wait for access
anyway?
06:54 < Zeffrin> so maybe reverse, post some data when map is freed, though
then I guess ...  hrm
06:54 -!- tor7 [n=tor@c-987a71d5.04-50-6c756e10.cust.bredbandsbolaget.se] has
joined #go-nuts
06:54 < Zeffrin> i udnno sorry, have to wait for someone who knows what
they're talkin about heh
06:55 < anticw> ideally you shouldn't 'poll' channels
06:55 < anticw> that's wasteful, try to structure the flow and program
differently
06:55 < tar_> "b, ok := <-freeList" from Effective Go ...  maybe also
getting the second parameter makes it non-blocking
06:55 -!- lux` [n=lux@151.54.242.220] has joined #go-nuts
06:55 < anticw> Zeffrin: is this because you need to check on a channel OR
something else?
06:56 < Zeffrin> just thinking about tars problem, how would you protect a
concurrent map?  using a channel like a mutex, creating a goroutine with
communication channels, or something else?
06:56 < Zeffrin> and yah tar_ actually, I do remember reading that now
06:56 < anticw> net/fd.go does this
06:57 < tar_> Here's some code I wrote for the second approach:
http://pastie.org/725062 Made sense there because I'm just protecting some data
which happens to be a map.
06:57 -!- ShadowIce [n=pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
06:57 -!- Intelliware [n=danielb@124-197-59-227.callplus.net.nz] has joined
#go-nuts
06:58 < tar_> anticw: does what?
06:58 < tar_> oh, protects a map
07:00 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit []
07:00 < tar_> I hope it's okay to remove a key from a map while you're
iterating.
07:01 -!- asyncster [n=asyncste@206.169.213.106] has quit []
07:01 < anticw> i wouldn't bet on it :-)
07:01 < anticw> in python it's not robust, i had to fix someones code a
couple of weeks ago that did that
07:02 < tar_> mehh
07:02 -!- codedread [i=180dd699@gateway/web/freenode/x-gyurvcyciudlyrzs] has quit
[Ping timeout: 180 seconds]
07:03 -!- tor7 [n=tor@c-987a71d5.04-50-6c756e10.cust.bredbandsbolaget.se] has quit
[]
07:04 < tar_> well, a chance to use a vector
07:07 -!- nf_ [n=nf@203-214-149-37.perm.iinet.net.au] has quit [Read error: 101
(Network is unreachable)]
07:10 -!- yoasif [n=asif@175.sub-75-192-121.myvzw.com] has joined #go-nuts
07:10 -!- triplez [n=triplez@bb116-14-25-184.singnet.com.sg] has quit [Read error:
104 (Connection reset by peer)]
07:12 -!- kaib [n=kaib@c-76-102-52-156.hsd1.ca.comcast.net] has quit []
07:16 -!- diltsman__ [n=diltsman@64.122.18.77] has quit []
07:19 -!- StDan [n=danielb@124-197-59-227.callplus.net.nz] has quit [Read error:
110 (Connection timed out)]
07:19 -!- triplez [n=triplez@bb116-14-69-242.singnet.com.sg] has joined #go-nuts
07:21 -!- karnath [n=karnath@MS-241-20.dyn-ip-II.SPb.SkyLink.RU] has joined
#go-nuts
07:25 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has joined #go-nuts
07:28 < plexdev> http://is.gd/5aPlO by [Russ Cox] in go/src/cmd/gc/ -- gc:
make 'invalid rune in string' a little less cryptic
07:29 -!- r2p2 [n=billy@v32671.1blu.de] has joined #go-nuts
07:33 -!- Vova [n=Vova@80.178.10.36.adsl.012.net.il] has quit [Read error: 60
(Operation timed out)]
07:33 -!- Vova [n=Vova@80.178.0.22.adsl.012.net.il] has joined #go-nuts
07:33 -!- felipe [n=felipe@my.nada.kth.se] has quit [Connection timed out]
07:36 -!- trickie [n=trickie@86.93.227.181] has quit ["Computer has gone to
sleep"]
07:38 -!- tobiasu [n=tobiasu@tin.tmux.org] has quit [Nick collision from
services.]
07:38 -!- tobiasu [n=tobiasu@tin.tmux.org] has joined #go-nuts
07:46 -!- WalterMundt [n=waltermu@twiki/developer/EtherMage] has quit ["Leaving."]
07:48 -!- KillerX [n=anant@gentoo/developer/KillerX] has quit ["Leaving."]
07:48 -!- kiva [n=quassel@r220-101-159-148.cpe.unwired.net.au] has joined #go-nuts
07:50 -!- path[l] [n=path@115.184.110.159] has joined #go-nuts
07:50 -!- aarapov [n=aarapov@nat/redhat/x-qobycgqdvemhpbtx] has joined #go-nuts
07:51 -!- Kibiz0r [n=Adium@99-48-204-31.lightspeed.brhmmi.sbcglobal.net] has
joined #go-nuts
07:52 -!- lambo4jos [n=chatzill@c-76-126-250-10.hsd1.ca.comcast.net] has quit
["ChatZilla 0.9.85 [Firefox 3.5.5/20091102152451]"]
07:52 -!- lambo4jos [n=chatzill@c-76-126-250-10.hsd1.ca.comcast.net] has joined
#go-nuts
07:55 -!- Vova [n=Vova@80.178.0.22.adsl.012.net.il] has quit [Read error: 110
(Connection timed out)]
07:55 -!- Vova [n=Vova@80.178.10.177.adsl.012.net.il] has joined #go-nuts
07:55 -!- tar_ [n=tom@c-67-180-208-162.hsd1.ca.comcast.net] has quit []
07:55 -!- nf [n=nf@124-171-26-50.dyn.iinet.net.au] has joined #go-nuts
07:59 < plexdev> http://is.gd/5aQwL by [Russ Cox] in 2 subdirs of go/ -- gc:
function argument ordering bug
08:00 -!- trickie [n=trickie@94.100.112.225] has joined #go-nuts
08:04 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has joined #go-nuts
08:06 -!- JSharpe [n=jamie@5adaea8d.bb.sky.com] has joined #go-nuts
08:09 -!- kiva [n=quassel@r220-101-159-148.cpe.unwired.net.au] has quit [Read
error: 60 (Operation timed out)]
08:13 -!- hcatlin [n=hcatlin@host81-154-246-241.range81-154.btcentralplus.com] has
joined #go-nuts
08:13 -!- cpr420 [n=cpr420@67.165.199.143] has quit ["Vision[0.9.7-H-090423]: i've
been blurred!"]
08:16 < plexdev> http://is.gd/5aRAg by [Rob Pike] in go/src/pkg/fmt/ --
minor improvement to formatting: don't allocate padding strings every time.
08:16 < plexdev> http://is.gd/5aRAm by [Russ Cox] in 3 subdirs of go/ -- gc:
minor import grammar bug fixes
08:20 -!- JSharpe2 [n=jamie@5ad673da.bb.sky.com] has quit [Connection timed out]
08:21 -!- Loafers [n=loafers@unaffiliated/loafers] has quit [Read error: 60
(Operation timed out)]
08:25 -!- kaigan|work
[n=kaigan@c-8290e255.1411-10-64736c14.cust.bredbandsbolaget.se] has joined
#go-nuts
08:30 -!- kleinjt [n=kleinjt@tarsonis.dhcp.rose-hulman.edu] has joined #go-nuts
08:34 -!- JPascal [n=jpascal@195.239.8.22] has joined #go-nuts
08:34 -!- kevinwatt [i=kevin@59-125-147-75.HINET-IP.hinet.net] has joined #go-nuts
08:36 -!- Kibiz0r [n=Adium@99-48-204-31.lightspeed.brhmmi.sbcglobal.net] has quit
["Leaving."]
08:37 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has quit
["Leaving."]
08:37 -!- Zaba [n=zaba@about/goats/billygoat/zaba] has quit [Read error: 60
(Operation timed out)]
08:39 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has joined
#go-nuts
08:39 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has quit
[Remote closed the connection]
08:39 -!- felipe [n=felipe@my.nada.kth.se] has joined #go-nuts
08:41 -!- Zaba [n=zaba@ip102.148.adsl.wplus.ru] has joined #go-nuts
08:42 -!- djanderson [n=dja@hltncable.pioneerbroadband.net] has quit [Read error:
110 (Connection timed out)]
08:43 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has quit []
08:44 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has joined #go-nuts
08:52 -!- p0g0 [n=pogo@unaffiliated/p0g0] has joined #go-nuts
08:53 -!- HeavensRevenge
[n=quassel@CPE001d0fe73b7d-CM00111ae5c642.cpe.net.cable.rogers.com] has joined
#go-nuts
08:59 -!- kiva [n=quassel@r220-101-159-148.cpe.unwired.net.au] has joined #go-nuts
09:02 < plexdev> http://is.gd/5aTJB by [Russ Cox] in 2 subdirs of go/ -- gc:
better diagnosis of initialization loops
09:02 -!- lambo4jos [n=chatzill@c-76-126-250-10.hsd1.ca.comcast.net] has quit
["ChatZilla 0.9.85 [Firefox 3.5.5/20091102152451]"]
09:02 -!- Associat0r [n=Associat@h163153.upc-h.chello.nl] has quit [Connection
timed out]
09:02 -!- path[l] [n=path@115.184.110.159] has quit [Read error: 110 (Connection
timed out)]
09:10 -!- r2p2 [n=billy@v32671.1blu.de] has left #go-nuts []
09:12 -!- path[l] [n=path@115.184.123.162] has joined #go-nuts
09:15 -!- p0g0 [n=pogo@unaffiliated/p0g0] has quit [Read error: 110 (Connection
timed out)]
09:15 -!- p0g0 [n=pogo@unaffiliated/p0g0] has joined #go-nuts
09:16 -!- r2p2 [n=billy@v32671.1blu.de] has joined #go-nuts
09:16 -!- rog [n=rog@78.148.16.235] has joined #go-nuts
09:18 < plexdev> http://is.gd/5aUnA by [Russ Cox] in 2 subdirs of go/ -- gc:
recursive type error
09:19 -!- yoasif [n=asif@175.sub-75-192-121.myvzw.com] has quit [Read error: 110
(Connection timed out)]
09:19 -!- analogue [n=analogue@toulouse.jfg-networks.net] has joined #go-nuts
09:28 -!- crashR [n=crasher@codextreme.pck.nerim.net] has joined #go-nuts
09:34 < plexdev> http://is.gd/5aV2s by [Russ Cox] in 4 subdirs of go/ -- gc:
handle _ = <-c in select.
09:36 -!- Kniht [n=kniht@c-68-58-17-177.hsd1.in.comcast.net] has quit [Read error:
113 (No route to host)]
09:41 -!- Adys [n=Adys@unaffiliated/adys] has quit [Read error: 104 (Connection
reset by peer)]
09:52 < Innominate> http://www.youtube.com/watch?v=xvW_2YyAiUc
09:55 -!- pilt [n=pilt@h-60-10.A163.priv.bahnhof.se] has left #go-nuts []
09:58 -!- GeoBSD [n=geocalc@lns-bzn-54-82-251-103-164.adsl.proxad.net] has joined
#go-nuts
10:00 -!- alc [n=alc@222.128.159.61] has quit []
10:03 -!- path[l] [n=path@115.184.123.162] has quit [Read error: 110 (Connection
timed out)]
10:07 -!- triplez [n=triplez@bb116-14-69-242.singnet.com.sg] has quit []
10:07 -!- tibshoot [n=tibshoot@linagora-230-146.pr0.nerim.net] has joined #go-nuts
10:11 -!- tobiasu [n=tobiasu@tin.tmux.org] has quit [Nick collision from
services.]
10:11 -!- tobiasu [n=tobiasu@tin.tmux.org] has joined #go-nuts
10:14 -!- CaptainLucifel [n=captainl@75.84.196-77.rev.gaoland.net] has joined
#go-nuts
10:23 -!- path[l] [n=path@115.184.69.188] has joined #go-nuts
10:26 -!- atsampson [n=ats@94-193-50-45.zone7.bethere.co.uk] has joined #go-nuts
10:28 -!- JPascal [n=jpascal@195.239.8.22] has left #go-nuts []
10:32 -!- amorpisseur [n=analogue@ip-139.net-81-220-254.rev.numericable.fr] has
joined #go-nuts
10:34 -!- kiva [n=quassel@r220-101-159-148.cpe.unwired.net.au] has quit [Read
error: 60 (Operation timed out)]
10:44 -!- analogue [n=analogue@toulouse.jfg-networks.net] has quit [Read error:
110 (Connection timed out)]
10:46 -!- afurlan [n=afurlan@scorpion.mps.com.br] has joined #go-nuts
10:51 -!- Cyanure [n=cyanure@212-198-164-142.rev.numericable.fr] has joined
#go-nuts
10:53 -!- sladegen [n=nemo@unaffiliated/sladegen] has quit [Nick collision from
services.]
10:53 -!- sladegen [n=nemo@unaffiliated/sladegen] has joined #go-nuts
10:53 -!- tomestla [n=tom@78.251.236.156] has joined #go-nuts
11:02 -!- raichoo [n=raichoo@129.70.165.116] has joined #go-nuts
11:08 -!- rdd` [n=rdd@c83-250-145-223.bredband.comhem.se] has quit [Remote closed
the connection]
11:14 -!- awishformore [n=awishfor@vpn341.uni-trier.de] has joined #go-nuts
11:17 -!- XniX23 [i=vegy@89-212-233-217.dynamic.dsl.t-2.net] has joined #go-nuts
11:19 < JeffJohnson> blist
11:19 -!- Freeaqingme| [n=dolf@145.74.180.208] has joined #go-nuts
11:19 < JeffJohnson> oh wrong channel:)
11:22 -!- karnath_ [n=karnath@MS-172-20.dyn-ip-II.SPb.SkyLink.RU] has joined
#go-nuts
11:28 -!- SuBmUnDo [n=pCCC@unaffiliated/submundo] has quit [Remote closed the
connection]
11:33 -!- tomestla [n=tom@78.251.236.156] has quit [Read error: 110 (Connection
timed out)]
11:36 -!- sladegen_ [n=nemo@78.8.136.19] has joined #go-nuts
11:36 -!- sladegen [n=nemo@unaffiliated/sladegen] has quit [Nick collision from
services.]
11:42 -!- amorpisseur [n=analogue@toulouse.jfg-networks.net] has joined #go-nuts
11:43 -!- analogue [n=analogue@ip-139.net-81-220-254.rev.numericable.fr] has quit
[Read error: 60 (Operation timed out)]
11:46 -!- karnath [n=karnath@MS-241-20.dyn-ip-II.SPb.SkyLink.RU] has quit [Read
error: 113 (No route to host)]
11:47 -!- karnath_ [n=karnath@MS-172-20.dyn-ip-II.SPb.SkyLink.RU] has quit
["leaving"]
11:49 -!- Netsplit kornbluth.freenode.net <-> irc.freenode.net quits:
zeroish, ukai, DJCapelis, brrant, mjburgess, idemal, beneth`, path[l], Peter`,
bsod2, (+87 more, use /NETSPLIT to show all of them)
11:49 -!- Netsplit over, joins: JSharpe
11:50 -!- Netsplit over, joins: melba, tobiasu
11:50 -!- Netsplit over, joins: mycroftiv, jessta, shardz, sqweek, Robdgreat, kfx,
vt3, me__, emilh_, sstangl (+84 more)
11:50 -!- Netsplit kornbluth.freenode.net <-> irc.freenode.net quits:
brrant, syd, rullie, maruel, mjburgess, KirkMcDonald, me__, mycroftiv, Makdaam,
DJCapelis, (+41 more, use /NETSPLIT to show all of them)
11:50 -!- kve [i=zaknifar@81.22.244.218] has joined #go-nuts
11:51 -!- beneth`_ [n=beneth`@beneth.fr] has joined #go-nuts
11:51 -!- blackdog` [n=user@200.104.73.92] has joined #go-nuts
11:51 -!- Paradox934X [n=Paradox9@98.142.211.46] has joined #go-nuts
11:51 -!- maruel_ [n=maruel_2@google1.osuosl.org] has joined #go-nuts
11:51 -!- mycrofti1 [n=infernus@h69-128-47-243.mdsnwi.dedicated.static.tds.net]
has joined #go-nuts
11:51 -!- hhg_ [n=hhg@hhg.to] has joined #go-nuts
11:51 -!- zidoh [n=bjornar@pyrrophlagalon.nithia.net] has joined #go-nuts
11:51 -!- xjih78 [i=z0r0@87-126-67-31.btc-net.bg] has joined #go-nuts
11:52 -!- Netsplit over, joins: Demp, hooopy, senneth, syd
11:52 -!- Makdaam [n=lhx@opers.man.poznan.pl] has joined #go-nuts
11:52 -!- Netsplit over, joins: fenicks
11:53 -!- Netsplit over, joins: Gussi, Innominate
11:53 -!- Netsplit over, joins: sqweek, me__, BlueT_, rndbot, afurlan, path[l],
Zaba, brrant, Amaranth, malkomalko (+21 more)
11:53 -!- cyt_ [n=cyt@li57-21.members.linode.com] has joined #go-nuts
11:53 -!- codemac [n=codemac@archlinux/developer/codemac] has quit [Read error: 60
(Operation timed out)]
11:53 -!- _mjburgess [n=michael@m1.mjburgess.co.uk] has joined #go-nuts
11:53 -!- philips_ [n=brandon@ash.osuosl.org] has quit [Read error: 60 (Operation
timed out)]
11:53 -!- Netsplit over, joins: exn
11:53 -!- mjburgess [n=michael@m1.mjburgess.co.uk] has quit [Read error: 54
(Connection reset by peer)]
11:53 -!- shasbot [n=shasbot@ip70-171-218-55.tc.ph.cox.net] has quit [Read error:
60 (Operation timed out)]
11:53 -!- cyt [n=cyt@li57-21.members.linode.com] has quit [Read error: 60
(Operation timed out)]
11:53 -!- codemac_ [n=codemac@archlinux/developer/codemac] has joined #go-nuts
11:56 -!- Zaba [n=zaba@about/goats/billygoat/zaba] has quit [Remote closed the
connection]
11:56 -!- Zaba [n=zaba@ip102.148.adsl.wplus.ru] has joined #go-nuts
11:58 -!- philips [n=brandon@opensuse/member/philips] has joined #go-nuts
11:58 -!- shasbot [n=shasbot@ip70-171-218-55.tc.ph.cox.net] has joined #go-nuts
11:58 -!- stalled [n=411@unaffiliated/stalled] has quit [Excess Flood]
12:04 -!- tonyg [n=tonyg@host238.lshift.net] has joined #go-nuts
12:05 -!- stalled [n=411@unaffiliated/stalled] has joined #go-nuts
12:06 < tonyg> If a goroutine is blocked reading on an unreachable channel,
will the goroutine be garbage-collected?
12:06 < tonyg> (it should be)
12:09 -!- Cyanure [n=cyanure@212-198-164-142.rev.numericable.fr] has quit [Remote
closed the connection]
12:17 -!- tor7 [n=tor@c-987a71d5.04-50-6c756e10.cust.bredbandsbolaget.se] has
joined #go-nuts
12:20 < taruti> tonyg: I don't think the current implementation does.
12:21 < taruti> tonyg: also "reading on an unreachable channel" sounds like
a bug.
12:22 < tonyg> taruti, it's not a bug: think of a service backed by a
goroutine.  The channel the service accepts requests on is effectively the handle
to the service.  It should be able to be treated as a garbage-collected value like
any other; the backing goroutine shouldn't prevent collection of the handle, so
logically should be collected too
12:22 -!- Rob_Russell [n=chatzill@206-248-157-156.dsl.teksavvy.com] has joined
#go-nuts
12:30 -!- scyth [n=scyth@rots.in.rs] has quit [Excess Flood]
12:30 -!- scyth [n=scyth@rots.in.rs] has joined #go-nuts
12:32 -!- trickie [n=trickie@94.100.112.225] has quit [Read error: 113 (No route
to host)]
12:36 -!- awishformore [n=awishfor@vpn341.uni-trier.de] has quit [Remote closed
the connection]
12:39 < taruti> tonyg: the service should be shutdown by explicit api
probably.
12:39 < Amaranth> Indeed, you should have a quit/error channel the goroutine
checks to tell it when to stop
12:40 -!- Freeaqingme| [n=dolf@145.74.180.208] has quit [Read error: 110
(Connection timed out)]
12:40 < tonyg> well that seems odd to me.  ordinary structs/objects with
methods don't have explicit shutdowns -- they just vanish.  i should not have to
expose the goroutine-based implementation of my object in my api
12:41 < tonyg> i mean, i could use a lock (which just vanishes) to get
mutexing, or i could use a goroutine
12:41 < tonyg> and i should not have to expose my decision in the api
12:41 -!- tibshoot [n=tibshoot@linagora-230-146.pr0.nerim.net] has quit [Read
error: 110 (Connection timed out)]
12:42 -!- Fraeon [n=kzer-za@e212-246-65-153.elisa-laajakaista.fi] has joined
#go-nuts
12:43 < rog> tonyg: it's a fair question
12:44 < rog> the difficulty being that of course the channel *is*
reachable...  by the goroutine itself!
12:44 < tonyg> mm.  shouldn't be a problem though -- goroutines should be
Just Data to the runtiem
12:44 < tonyg> *runtime
12:44 < taruti> isn't that the normal cyclic value + gc thing
12:44 < tonyg> it then becomes a piece of cyclic garbage
12:44 < tonyg> yes
12:45 < rog> but goroutines are primary values
12:45 < taruti> e.g.  GHC gargage collects threads in such situations iirc
12:45 < rog> i.e.  you don't want to GC a goroutine just because nothing has
a reference to it, because it might decide to print something
12:45 < rog> ...  or otherwise interact with the system
12:45 < tonyg> rog, if it can possibly do anything else, then it is not a
candidate for collection
12:45 < rog> GHC has an easier time of it
12:46 < rog> because no side effects
12:46 < tonyg> when it's blocked on a single channel, there's nothing that
can interrupt it save that channel communicating or closing
12:46 < taruti> rog: threads in GHC are in the IO monad and thus there are
side-effects.
12:46 < tonyg> so if it's (in the runtime view, now) on the channel's
waitlist, and the channel is collected, it should silently go too
12:47 < taruti> and the channel receive is not multivalued
12:47 < tonyg> if, however, it's selecting across two channels, e.g.  to get
a timeout-style wake up call, then *both* channels would have to become
unreachable to let the goroutine become collected
12:47 -!- plainhao [n=plainhao@mail.xbiotica.com] has joined #go-nuts
12:48 < rog> tonyg: if the process has a reference to the channel, how can
the channel be collected?
12:48 < tonyg> rog, because to the runtime, the goroutine is just more data
12:48 < taruti> tonyg: think of: "foo, ok <- chan; if ok { ...  } else {
...  }"
12:48 < tonyg> taruti, that is not a blocking operation
12:48 < tonyg> it will not be entered on the channel's waitlist
12:49 < tonyg> rog, goroutines are not GC roots *necessarily*.
12:49 < tonyg> they *may* be (but I'd be disappointed if they were --
there's no reason for them to be)
12:49 < rog> tonyg: i don't see how you can easily decide when they're not
12:50 -!- amuck_ [n=amuck_@rrcs-76-79-44-2.west.biz.rr.com] has joined #go-nuts
12:50 < taruti> so basically "if a goroutine is blocked on a channel (with
no timeout) and no-one else has a reference to the goroutine then it should be
garbage collected"
12:50 < tonyg> taruti, bingo
12:50 < tonyg> it falls out of the natural implementation at the metalevel
12:51 < rog> taruti: yes, i was coming to that conclusion
12:51 -!- Adys [n=Adys@unaffiliated/adys] has joined #go-nuts
12:51 < tonyg> taruti, actually minor quibble: a reference to the channel
the goroutine is blocked on
12:51 < taruti> that seems quite possible to implement and doesn't change
any semantics
12:51 < rog> basically, when you block on a channel, you remove yourself
from the collection of roots
12:51 < tonyg> it's not possible to refer to a goroutine directly
12:51 < tonyg> rog, more or less; or, never be a root to begin with.  Make
the scheduler's runlist a root instead
12:51 < taruti> tonyg: tried to make the definition general and
feature-agnostic
12:51 < rog> tonyg: same difference
12:51 < tonyg> :)
12:53 < rog> hold on
12:53 < rog> to make this work, a channel has to point back to the process
that's reading from it
12:53 < rog> not the other way around
12:54 < tonyg> yes, if that proc is blocked on the channel
12:54 < tonyg> that has to happen anyway though
12:54 < rog> but that's still doable, i guess.  except that there can be
many processes reading from a single channel.
12:54 < tonyg> there has to be a waitlist somewhere that the channel holds
12:54 < rog> but that's still ok
12:54 < rog> yup.
12:54 < tonyg> yep
12:54 -!- path[l]_ [n=path@115.184.17.149] has joined #go-nuts
12:54 < taruti> what would func "main() { ch := make(chan int); x := <-
ch; }" do?
12:54 < tonyg> be collected :)
12:54 < rog> the source is in pkg/runtime/chan.c if you're interested
12:55 < tonyg> the main goroutine seems to be treated a bit specially anyway
12:55 -!- chid [n=mgzxnqvs@c122-106-95-175.rivrw1.nsw.optusnet.com.au] has quit
[Client Quit]
12:55 < rog> it is
12:55 < tonyg> so then maybe treat it specially there too.
12:55 < tonyg> make it a gc root
12:55 < taruti> then the library needs a "sleepForever()"
12:55 < tonyg> but make none of the other goroutines a gc root
12:55 < tonyg> seeing as once the main thread dies it takes the vm with it
12:55 < rog> but the above is fine - if you want something to sleep forever,
just sleep forever :-)
12:56 < tonyg> taruti, the idiom you posted *is* sleepForever -- if the
goroutine is garbage collected, no one notices
12:56 < tonyg> identity of indiscernibles :-)
12:56 < tonyg> phew.  i am neck deep in twisty channels at the moment.
implementing an amqp 0-9-1 harness.
12:56 < rog> tonyg: except that the process exits, and takes everything else
with it...
12:57 < tonyg> rog, oh i see.  well it only exits if the main thread is
treated like all the others!
12:57 < rog> tonyg: if your channels are too twisty, you're doing something
wrong.  in my experience!
12:57 < tonyg> i meant more generally, allocating a channel and reading
immediately from it is sleepForever()
12:57 < tonyg> rog, yes i know
12:57 < tonyg> it's getting better as I work on it
12:57 < rog> just like with algorithms, a few basic techniques get you a
long way
12:58 < taruti> tonyg: the main goroutine behaving differently is *bad*
12:59 -!- raichoo [n=raichoo@129.70.165.116] has quit []
12:59 < tonyg> taruti, possibly.  the alternative is exposing more control
over the vm's operation; a la java's daemon threads
13:00 < taruti> tonyg: an explicit sleepForever-function is enough
13:01 -!- Freeaqingme| [n=dolf@145.74.181.68] has joined #go-nuts
13:02 -!- path[l] [n=path@115.184.69.188] has quit [Read error: 60 (Operation
timed out)]
13:02 -!- tricky [n=Knave@dsl-240-175-185.telkomadsl.co.za] has joined #go-nuts
13:02 < tonyg> taruti, yes that would do.  But in general the main goroutine
is a bit special: it's primordial, after all; so I'm not too fussed about it being
special in more than one way.  It's easy enough to spawn a non-special goroutine
for your main-ish things if you need one of those for them
13:03 < tonyg> *shrug*
13:03 < tonyg> I'm enjoying go programming, though.  This language is fun
13:05 -!- raichoo [n=raichoo@lain.dhcp.uni-bielefeld.de] has joined #go-nuts
13:06 < taruti> the lack of generics is a quite nasty wart, but hopefully
that will be fixed
13:07 < Ycros> I'd like exceptions or some other better way of propagating
errors
13:07 < taruti> (and the lack of expressivity in the type system in general)
13:07 < Ycros> especially between goroutines
13:07 < taruti> well exceptions won't help there.
13:09 < Ycros> they could, there'd just have to be some thought put into
cross-gouroutine propagation
13:09 -!- hooopy_ [i=hoopy@173-30-98-140.client.mchsi.com] has joined #go-nuts
13:09 -!- awishformore [n=awishfor@vpn073.uni-trier.de] has joined #go-nuts
13:09 < taruti> Ycros: what kind of semantics are you thinking about?
13:10 -!- hooopy [i=hoopy@173-30-98-140.client.mchsi.com] has quit [Read error:
104 (Connection reset by peer)]
13:10 < tonyg> erlang's process monitors and links are a nice model
13:11 < taruti> which needs an identity for the goroutines (at the moment
they are anonymous)
13:11 < tonyg> taruti, aha!  interesting
13:11 < tonyg> yes
13:11 -!- vdrab [n=vdrab@222-151-096-016.jp.fiberbit.net] has joined #go-nuts
13:12 < tonyg> ...  hmm.
13:12 < tonyg> "go x" could be an expression resulting in a "chan
GoroutineManagementEvent"
13:12 < taruti> maybe "gochan (func ()) chan ErrorType"
13:12 < taruti> exacty :)
13:12 < Ycros> yeah.
13:13 < tonyg> did you guys ever read much on the pi calculus?
13:13 -!- todos [n=ttodos@195.160.234.10] has joined #go-nuts
13:13 < tonyg> go feels pi-like in a good way
13:13 < taruti> although efficient process monitors couldn't be done with
that without further extensions
13:13 < tonyg> taruti, really?  why not?
13:14 < taruti> tonyg: think of a monitor that has a collection of children.
It needs to wait for a message from any children.  Now using select won't work
since the children are _dynamic_ and not statically defined.
13:14 < taruti> (it could be done in a logarithmic way, but that is ugly)
13:14 < tonyg> taruti, good point...  interstitial goroutines could
multiplex, but yeah, ick
13:15 -!- tricky [n=Knave@dsl-240-175-185.telkomadsl.co.za] has quit [Remote
closed the connection]
13:15 < tonyg> (in fact, such multiplexing is what i'm dealing with in this
amqp library right now)
13:16 < taruti> needs something like "select (map [chan <t>] (func
(<t> <r>) <r>" (with <xxx> for type variables)
13:16 < tonyg> :)
13:16 < rog> tonyg: re: making the runlist a root, things might be off the
runlist for other reasons (e.g.  blocking on a syscall)
13:16 < rog> taruti: if you're waiting for many children, just have them all
write to the same channel
13:16 < tonyg> rog, indeed; and it'd be a free context-specific choice as to
whether such other contexts are gc roots or not
13:17 < rog> taruti: (including some identifier)
13:17 < dho> morning
13:17 < taruti> rog: which means that library apis producing channels are
bad?
13:17 < Ycros> taruti: but multiple goroutines can share a channel
13:17 < tonyg> heh.  smalltalk's #becomeForward: operator: "n := go
something(); n.becomeForward(m); mgmtEvent := <-m;"
13:18 < taruti> seems like the current recommendation is for library
routines to produce new channels rather than taking callback functions (that could
use existing channels)
13:18 < taruti> which is of course incompatible with the "use an existing
channel" approach
13:18 < rog> taruti: it depends.  c.f.  the Walk function in ast
13:18 -!- Adys [n=Adys@unaffiliated/adys] has quit [Read error: 110 (Connection
timed out)]
13:19 < rog> i usually prefer passing in a channel rather than returning
one, as then you can choose for it to be shared.
13:21 < taruti> rog: still needs the tagging usually thus requiring a
callback function
13:21 < rog> taruti: depends on what's passed down the channel.
13:22 < rog> in general, a channel is equivalent to a callback function
13:22 < rog> they both have strengths and weaknesses
13:23 < taruti> and both can emulate each other (but emulation is more
efficient with a callback)
13:23 < uriel> yes, both have strengths and weaknesses, but channels have
many more strengths and callbacks just suck
13:23 -!- brunov [n=bruno@190.191.110.64] has joined #go-nuts
13:24 < rog> for a little experiment, i just changed the syntax tree walker
in the ast package to take a recursively defined callback function so that you
could track the structure of the tree
13:24 < uriel> (well, there might be a few cases were callbacks work well,
but as a general mechanism like used for example in javascript, they are a
nightmare
13:24 < rog> the function type is defined like this: type Visitor func(n
interface{}) Visitor
13:25 < taruti> uriel: a typical callback will 1) mangle the value, 2) send
it down a channel to be processed :)
13:25 < rog> i should experiment with doing the equivalent thing with a
channel
13:26 < rog> i quite like the "function returning a function of the same
type" idiom though
13:27 < taruti> uriel: with taking channels one needs to create proxy
forwarders "go func() { for { x := <- ch1; ch2 <- f(x) } }"
13:29 -!- vdrab [n=vdrab@222-151-096-016.jp.fiberbit.net] has quit [Read error: 60
(Operation timed out)]
13:29 < rog> yeah, with channels, you can't recurse without adding
goroutines.  but continuation-passing-style becomes tedious quite quickly if
you're doing callbacks.
13:29 < rog> function calls are always going to be quicker, i think
13:30 < rog> although it would be nice to be back in the occam days where
they were approx the same cost
13:30 < taruti> occam just had very slow function calls :P
13:31 < taruti> function calls should be faster on any reasonable
implementation
13:31 < rog> only because they're the things best supported by the h/w
13:31 -!- hooopy_ [i=hoopy@173-30-98-140.client.mchsi.com] has quit [Read error:
104 (Connection reset by peer)]
13:32 < rog> on the transputer, channels were supported by the h/w, hence
the lack of performance disparity
13:32 < rog> i don't think there's any fundamental reason why context switch
should be costlier than context push
13:33 -!- fgb [n=liveuser@190.246.85.45] has joined #go-nuts
13:33 -!- tibshoot [n=tibshoot@linagora-230-146.pr0.nerim.net] has joined #go-nuts
13:33 < tonyg> rog, given a Sufficiently Smart JIT you could plausibly even
implement context switch as function call
13:33 < tonyg> the erlang HIPE guys experimented a little with that
13:34 < tonyg> don't think it grew past being a research project, though.
13:34 < rog> tonyg: difficult if you want to do time slicing
13:34 < tonyg> Some kind of self-style memoisation of context-switch
patterns
13:34 < tonyg> oh; yeah i guess
13:35 < tonyg> well.  depends how you do it.  if you reserve a GPR you could
do it by reading the cycle counter at function-call time
13:35 < rog> i think one of rob pike's early concurrency experiements did
something along the same lines
13:35 < rog> tonyg: assuming you're calling a function at least once each
time around the loop
13:36 < tonyg> actually maybe i don't understand what you mean by
timeslicing.
13:36 < taruti> function call counters seem like a bad way to do it.  there
is sigvtalarm and friends
13:36 < rog> i mean that if you've got two compute-bound, uncommunicative
processes, they both share cpu time between them as they're running
13:37 -!- JeffJohnson [n=fho@unaffiliated/jeffjohnson] has quit ["leaving"]
13:38 -!- raichoo [n=raichoo@lain.dhcp.uni-bielefeld.de] has quit []
13:38 < rog> so if i do: c := make(chan bool); go func(){<-c;
computation...; c <- true}(); go func(){c <- true; computation...; <-c}
13:38 < tonyg> righto
13:38 < tonyg> yes
13:38 < tonyg> depends how precise you want to be about it
13:38 < rog> then the two computations will proceed side-by-side rather than
one after the other
13:38 < tonyg> if you just want occasional preempton, then as taruti points
out, sigvtalarm etc work ok
13:38 < tonyg> *preemption
13:39 -!- sladegen [n=nemo@unaffiliated/sladegen] has joined #go-nuts
13:40 < rog> but i'm not sure how vtalarm can help if you've turned the
<- op into a fn call op - the context you want to switch to is now buried in
the stack
13:41 < tonyg> hm
13:41 < tonyg> yeah
13:41 < tonyg> well, i was assuming you'd only change rpc-like interactions
into function calls
13:42 -!- fgb [n=liveuser@190.246.85.45] has quit ["Leaving."]
13:42 < tonyg> i'm sure there's a phd in here somewhere ;-)
13:42 -!- sladegen_ [n=nemo@unaffiliated/sladegen] has quit [Read error: 110
(Connection timed out)]
13:42 -!- crashR [n=crasher@codextreme.pck.nerim.net] has quit [Excess Flood]
13:42 < rog> :-)
13:43 -!- crashR [n=crasher@codextreme.pck.nerim.net] has joined #go-nuts
13:45 -!- fgb [n=fgb@190.246.85.45] has joined #go-nuts
13:45 -!- scarabx [n=scarabx@c-24-147-239-120.hsd1.ma.comcast.net] has joined
#go-nuts
13:45 < rog> hey, here's a little conundrum: if i've got this (legal)
declaration: type Foo *struct {a int; next Foo};
13:45 < rog> is it possible to create an instance of Foo?
13:46 -!- melba [n=blee@unaffiliated/lazz0] has quit [Read error: 110 (Connection
timed out)]
13:47 < rog> oh yes, you can: p := Foo(&(struct {a int; next Foo}){12,
nil});
13:47 < rog> not very convenient though.
13:48 -!- exn [n=exn@195.49.206.202] has quit [Client Quit]
13:51 -!- Anders_ [n=Anders@c83-253-2-206.bredband.comhem.se] has joined #go-nuts
13:52 -!- kmc [n=keegan@64.121.133.238] has quit [Read error: 60 (Operation timed
out)]
13:53 -!- kmc [n=keegan@64.121.133.238] has joined #go-nuts
13:57 -!- ni| [n=james@c-24-34-220-147.hsd1.ma.comcast.net] has quit [Read error:
110 (Connection timed out)]
13:58 -!- Trey_ [n=trey@sangha.cyberius.net] has joined #go-nuts
14:00 < Trey_> I've been trying to install...  How long can I expect the
"--- cd ../test" line to stick around?  It's been about 22 hours on a 2.53 GHz
Core 2 Duo on a Mac.
14:01 < Ycros> not that long
14:01 -!- blackdog` [n=user@200.104.73.92] has left #go-nuts ["ERC Version 5.3
(IRC client for Emacs)"]
14:01 < uriel> taruti: are you building tip or release?
14:01 < Ycros> stop it, do a hg sync, try again
14:02 < Trey_> Ycros: "hg: unknown command 'sync'"
14:02 < uriel> Trey_: hg pull -u
14:02 -!- rrr [i=rrr@gateway/gpg-tor/key-0x9230E18F] has quit [Remote closed the
connection]
14:03 < taruti> uriel: ?
14:03 < uriel> taruti: sorry, stupid tab completion
14:03 -!- Loafers [n=loafers@unaffiliated/loafers] has joined #go-nuts
14:03 < taruti> np
14:03 < Trey_> ok, thanks.  how long does the install and test process
usually take?
14:04 < taruti> Trey: a couple of minutes
14:04 < Trey> ah, so i didn't need my laptop's fan to be straining for the
past day :)
14:05 -!- nullpo [n=nullpo@221x252x46x83.ap221.ftth.ucom.ne.jp] has quit
["Leaving..."]
14:06 < jessta> lol, even gcc doesn't take that long
14:06 < taruti> Trey: you are building gc?  (not gccgo)
14:07 < Ycros> uriel: where does my hg sync come from then?  newer version
of hg?
14:07 < Trey> taruti: i don't know, i'm following the instructions.
"./all.bash"
14:08 < dho> Trey: you're building gc
14:09 -!- perdix [n=perdix@g227156075.adsl.alicedsl.de] has joined #go-nuts
14:09 -!- chachan [n=chachan@ccscliente156.ifxnetworks.net.ve] has joined #go-nuts
14:09 < dho> Trey: if you're building -release there are a bunch of bugs
that have been fixed since then
14:09 < dho> oh, EREDUNDANT
14:10 -!- awishformore [n=awishfor@vpn073.uni-trier.de] has quit [Remote closed
the connection]
14:10 -!- melba [n=blee@unaffiliated/lazz0] has joined #go-nuts
14:10 < Trey> dho: i know these words you are using individually, but
together i don't know what you mean.  I'm following the instructions at
http://golang.org/doc/install.html to the letter, so whatever that would have me
do, I'm doing.  Well, aside from the "hg pull -u" that I did a moment ago
14:11 -!- HeavensRevenge
[n=quassel@CPE001d0fe73b7d-CM00111ae5c642.cpe.net.cable.rogers.com] has quit [Read
error: 104 (Connection reset by peer)]
14:11 < Trey> ...  and that failed.
14:11 < dho> what failed?
14:11 < dho> Trey: on a 3 core amd64 box with 8gb ram, it takes 2 minutes
and something.  on a 2-processor virtualbox vm with 512mb ram running on that
system it takes 3.5 minutes
14:12 < dho> so 22 hours is not ok :)
14:12 < Trey> dho: http://paste.lopsa.org/66
14:13 -!- rrr [i=rrr@gateway/gpg-tor/key-0x9230E18F] has joined #go-nuts
14:14 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined
#go-nuts
14:16 < dho> er, that's weird.
14:17 < dho> if you go into $GOROOT/src/pkg/net/ and run make test, does
that happen every time?
14:18 -!- iwikiwi [n=iwikiwi@59.177.98.195] has joined #go-nuts
14:18 < dho> Trey: or just sometimes?
14:19 < Trey> dho: dunno, it happened once when I ran "./all.bash".  i just
ran make test in that dir and got PASS
14:19 < Trey> how do i continue?  "./all.bash" again, or will that start
from scratch?
14:20 -!- ponce [n=ponce@paradisia.net] has joined #go-nuts
14:21 -!- jA_cOp [n=yakobu@unaffiliated/ja-cop/x-9478493] has joined #go-nuts
14:23 -!- prip [n=_prip@host62-134-dynamic.42-79-r.retail.telecomitalia.it] has
quit [Read error: 110 (Connection timed out)]
14:24 -!- prip [n=_prip@host69-133-dynamic.46-79-r.retail.telecomitalia.it] has
joined #go-nuts
14:24 < dho> cd pkg/net ; make test
14:24 < dho> oh
14:24 < dho> continue with the build?  It's already built.  Can you run hg
identify and paste the results here?
14:24 < tonyg> hmmmmmmm.  segv's shouldn't happen, right?
14:24 < dho> tonyg: correct.
14:25 < dho> Trey: it should say 68ebc44e8429 tip
14:25 < tonyg> hmmmmmmmmmmmmmm.
14:26 < Trey> dho: it does.  i meant, how do i continue with the tests?
14:26 < dho> all.bash, but you seem to have stumbled upon a bug that I
thought I fixed.
14:28 < Trey> yikes, no, that rm -r'd everything and it's started building
again
14:28 < Trey> too late now...
14:28 < Trey> er, rm -f'd, i mean.  :)
14:29 < dho> well, yeah, it doesn't continue
14:29 < dho> but it's fast enough that it shouldn't need to
14:30 < dho> or shouldn't matter much that it doesn't anyway
14:31 < dho> Trey: can you create a new issue for that?
14:31 < dho> http://code.google.com/p/go/issues/entry
14:31 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit []
14:31 < dho> (test hangs in pkg/net)
14:32 -!- vdrab [n=vdrab@222-151-096-016.jp.fiberbit.net] has joined #go-nuts
14:32 -!- JPascal1 [n=jpascal@195.239.8.22] has joined #go-nuts
14:32 < JPascal1> Hello all!  )
14:33 < tonyg> hi
14:33 < Trey> dho: okay, just did, it's 373.
14:33 < JPascal1> How I can do fork() in GO as in C/C++?  To backgroup
process//
14:34 < Trey> dho: and the test failed again, same thing.  "--- FAIL:
net.TestUDPServer" etc.
14:34 -!- melba [n=blee@unaffiliated/lazz0] has quit [Read error: 104 (Connection
reset by peer)]
14:34 < dho> Trey: nono, not for all.bash, for this test failure
14:34 < dho> lol
14:35 < dho> that's sort of to be expected.
14:35 < dho> Trey: i'm intrigued though
14:35 -!- Fish-Work [n=Fish@86.65.182.194] has quit [Read error: 104 (Connection
reset by peer)]
14:35 < dho> Trey: if you go into pkg/net and run make test a bunch, do you
get that frequently?
14:36 * dho heads into work, be back in 20-30
14:37 < Trey> dho: it's happening consistently now.
14:37 < Trey> dunno why i got that single pass that one time
14:38 < uriel> Ycros: yes, I think sync is a new thing in 1.4, or it is some
extra extension some distros package
14:38 < uriel> in any case, hg pull -u is simple enough
14:39 <+iant> the sync command comes from the codereview plugin
14:39 -!- chachan [n=chachan@ccscliente156.ifxnetworks.net.ve] has quit ["KVIrc
Insomnia 4.0.0, revision: , sources date: 20090520, built on: 2009/06/06 11:44:47
UTC http://www.kvirc.net/"]
14:41 -!- ponce [n=ponce@paradisia.net] has left #go-nuts []
14:41 < tonyg> > var err os.Error; println(err.String());
14:41 < rndbot> SIGSEGV: segmentation violation Faulting address: 0x14
PC=0x804882b main·main+0x2b /tmp/bzxznpdggen.go:4 main·main() mainsta...
14:41 < tonyg> ???
14:41 -!- chachan [n=chachan@ccscliente156.ifxnetworks.net.ve] has joined #go-nuts
14:42 <+iant> tonyg: you're calling a method on a nil interface
14:42 < tonyg> yes
14:42 -!- Fish-Work [n=Fish@86.65.182.194] has joined #go-nuts
14:42 -!- broo [n=my_nick@97-116-179-177.mpls.qwest.net] has joined #go-nuts
14:42 < broo> hello
14:43 -!- chachan [n=chachan@ccscliente156.ifxnetworks.net.ve] has quit [Client
Quit]
14:43 < broo> is there a way to control the greediness in regexp, I tried
using a ? after an expression (like .*?) but that just results in a regexp compile
error
14:44 < clip9_> Nope :|
14:44 < broo> bummer
14:44 <+iant> what would .*?  mean?
14:45 < clip9_> by itself?  nothing
14:45 < clip9_> .*?([a-z]*)
14:45 -!- atsampson [n=ats@94-193-50-45.zone7.bethere.co.uk] has quit [Read error:
104 (Connection reset by peer)]
14:45 < broo> well in most other regex systems ? has two meanings, either
{0,1} or be less greedy
14:45 < clip9_> capture everything until a-z
14:45 -!- aarapov [n=aarapov@nat/redhat/x-qobycgqdvemhpbtx] has quit ["Leaving."]
14:46 < broo> yeah thats what I'd like it to do but it doesn't
14:46 <+iant> the regexp package definitely needs work in general, it's not
particularly efficient
14:47 -!- diltsman_ [n=diltsman@64.122.18.77] has joined #go-nuts
14:47 -!- diltsman_ [n=diltsman@64.122.18.77] has quit [Client Quit]
14:47 < broo> I have something like '(.+) :(.+)' and it grabs until the last
:
14:47 -!- atsampson [n=ats@94-193-50-45.zone7.bethere.co.uk] has joined #go-nuts
14:47 -!- Vova [n=Vova@80.178.10.177.adsl.012.net.il] has quit []
14:47 < broo> I thought '(.+?) :(.+)' would be the way to limit the
greediness, but it just results in a regex compiler error
14:47 -!- chachan [n=chachan@ccscliente156.ifxnetworks.net.ve] has joined #go-nuts
14:48 -!- Anders_ [n=Anders@c83-253-2-206.bredband.comhem.se] has quit [Read
error: 60 (Operation timed out)]
14:48 < clip9_> yeo
14:48 < clip9_> err
14:48 < clip9_> yep
14:49 < clip9_> Perl regexp
14:49 < clip9_> is the goal right?  :P
14:49 < broo> :)
14:50 < broo> also is there a way to catch signals and send them to a signal
handler, in particular I'm interested in catching sigwinch
14:50 <+iant> broo: we haven't figured out the best way to implement signals
yet, though it is clearly important
14:52 < broo> okay, well keep up the good work, go is a great language, very
easy to use
14:54 -!- broo [n=my_nick@97-116-179-177.mpls.qwest.net] has quit [Remote closed
the connection]
14:54 -!- ryniek [n=RYNIEK@host-89-231-120-113.warszawa.mm.pl] has joined #go-nuts
14:54 < ryniek> django-pl
14:54 < ryniek> sorry
14:54 < ryniek> hi btw
14:54 < tonyg> are nil interface-values *typed*??
14:55 < tonyg> (and are they *supposed* to be??)
14:55 <+iant> tonyg: an interface value which is nil has no dynamic type
14:55 <+iant> tonyg: this is distinct from an interface value which contains
a value of a dynamic type which happens to be nil
14:56 < tonyg> oooooooo yuck
14:56 < tonyg> ok
14:56 < Ycros> tonyg: yeah, I know
14:56 < tonyg> so if I have some class that is a Stringer, then return it in
a context expecting os.Error, it silently becomes not == to nil
14:56 < tonyg> os.Error(mytype(nil)) != nil
14:57 <+iant> yes, that can happen
14:57 < tonyg> ok that helps explain some of the segvs i'm seeing
14:57 -!- Nanoo [n=Nano@95-89-198-45-dynip.superkabel.de] has joined #go-nuts
14:58 -!- TMinus36 [n=serverz@pdpc/supporter/student/tminus36] has quit [Remote
closed the connection]
14:58 -!- scarabx [n=scarabx@c-24-147-239-120.hsd1.ma.comcast.net] has quit ["This
computer has gone to sleep"]
15:00 < JPascal1> How I can fork() programm like C/C++ fork()?
15:00 -!- vdrab [n=vdrab@222-151-096-016.jp.fiberbit.net] has quit []
15:03 <+iant> JPascal: it's generally very hard to use fork safely in a
multi-threaded program, and Go programs are pretty much always multi-threaded
15:03 <+iant> when would you want to fork without calling exec?
15:03 < JPascal> I want demonize programm to background
15:03 < JPascal> I write system service programm
15:03 -!- ni| [n=james@c-24-34-220-147.hsd1.ma.comcast.net] has joined #go-nuts
15:04 <+iant> hmmm, that makes sense but I don't really know how to
implement it
15:05 <+iant> the problem is that if you call fork(), you wind up with only
a single thread running
15:06 < JPascal> hm...
15:06 < JPascal> binding to C function fork() not help me?
15:07 -!- skelterjohn [n=jasmuth@c-76-116-177-32.hsd1.nj.comcast.net] has joined
#go-nuts
15:07 <+iant> JPascal: it would probably work OK if you called it from an
init function, in many cases it would fail horribly if you called it after main
started
15:08 < JPascal> hm...
15:09 < JPascal> As I have understood.  Now it is impossible to start
process in a background mode.
15:09 <+iant> That is something that should probably be fixed if we can
figure out how; it may be worth opening an issue for it
15:11 < Ycros> tonyg: imo it should treat that case as nil
15:11 < JPascal> :)
15:11 < JPascal> I really need fork function ))
15:12 < Ycros> tonyg: I had a debate about it on the mailing list a while
back -
http://groups.google.com/group/golang-nuts/browse_thread/thread/21bfac3121e0edd2/e7fc32c907c3c177
15:12 <+iant> JPascal: well, a plain fork function is just never going to
work correctly for Go, but we may be able to implement some sort of Daemonize
function
15:13 -!- jA_cOp_ [n=yakobu@unaffiliated/ja-cop/x-9478493] has joined #go-nuts
15:14 < JPascal> Thank you.
15:14 -!- jA_cOp [n=yakobu@unaffiliated/ja-cop/x-9478493] has quit [Read error:
104 (Connection reset by peer)]
15:16 -!- iwikiwi [n=iwikiwi@59.177.98.195] has quit ["I ascend to reality!"]
15:16 -!- tsuwabuki [n=tsuwabuk@FLH1Aav065.kyt.mesh.ad.jp] has joined #go-nuts
15:16 -!- melba [n=blee@unaffiliated/lazz0] has joined #go-nuts
15:16 < tsuwabuki> hello
15:16 -!- einsidan [n=einsidan@194-144-68-248.du.xdsl.is] has quit ["Leaving..."]
15:16 -!- werdan7 [n=w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts
15:17 -!- einsidan [n=einsidan@194-144-68-248.du.xdsl.is] has joined #go-nuts
15:19 < dho> Trey: it's a race condition
15:19 < dho> Trey: moment
15:19 < dho> iant: of course it didn't build
15:20 < dho> i forgot there's still runtime stuff that has to be implemented
for freebsd XD
15:20 -!- jA_cOp_ [n=yakobu@unaffiliated/ja-cop/x-9478493] has quit ["Leaving"]
15:22 < tonyg> Ycros, thanks for that link.  Now I see the analogy to
int(0), I get it
15:22 < dho> interesting.
15:23 < Ycros> tonyg: yeah, I still think that in the case of interfaces, it
should treat it as nil.
15:23 -!- triplez [n=triplez@bb219-74-8-236.singnet.com.sg] has joined #go-nuts
15:24 < Ycros> tonyg: then we could return strongly typed stuff everywhere
(like errors!)
15:25 -!- diltsman [n=diltsman@64.122.18.77] has joined #go-nuts
15:25 < dho> iant: are there already thoughts on how to handle signals?
15:26 < tonyg> Ycros, I'm tempted to agree, but that'd be inconsistent with
other kinds of zero in the system.  The problem, as always in languages like this,
is a confusion between a zero value and a non-value.  A Maybe-type would fix the
issue, but until there's generics that's not doable either
15:26 < tonyg> :(
15:26 < tonyg> Though, it doesn't prevent using strongly typed errors
15:26 < tonyg> it just means you have to be careful when returning
possibly-nil your-own-errors as os.Error
15:27 < tonyg> instead of "return myMaybeError" you "if myMaybeError == nil
{ return nil } return myMaybeError"
15:27 < Ycros> tonyg: yes, but the way I see it - interfaces already mask
whether the type underneath is a pointer or a value.  IDK.  I would find it nicer
15:27 < dho> iant: it looks like the -fplan9-extensions isn't working.
15:27 < Ycros> tonyg: and, yeah, that's a mistake someone could make
15:27 < Ycros> tonyg: infact, you made it just then didn't you
15:28 < dho> iant: compiling malloc.c shows some errors in malloc.h where
there's e.g.  struct MCentral { Lock;
15:28 < Ycros> I bet it's going to bite a lot of people
15:28 < diltsman> In the makefile on http://golang.org/doc/contribute.html
is there a way to add an additional -I flag to the call by make all?
15:29 < tonyg> Ycros, indeed i got segv's up the wazoo til i figured it out.
15:30 < tonyg> ...  and it was *not* easy to figure out
15:30 < tonyg> it is a highly surprising behaviour.
15:30 < tonyg> and i don't like it
15:30 -!- raichoo [n=raichoo@i577ACC04.versanet.de] has joined #go-nuts
15:31 < tonyg> it's just -- unless (interface{})(int(0)) == nil, it'd be
nasty and warty in a whole different way
15:31 < tonyg> hmm.  if it *compared* to nil as true, but could still be
cast out to the carried type, perhaps?
15:32 < tonyg> By the way, the other gotcha that caused segvs for me was the
compiler not warning me on accidental capture of variables in a closure.
15:32 < tonyg> accidental redeclaration, that is
15:33 < tonyg> > s := "hello"; (func () { s := 123; println(s); })();
println(s);
15:33 < rndbot> 123 hello
15:34 < Ycros> tonyg: very surprising
15:34 <+iant> dho: I'm heading out for a while, but -fplan9-extensions does
work when I build it; what could be different for your case?
15:34 < dho> I don't know, I see it in the command line, but it is not
applying
15:34 < Ycros> tonyg: yeah, I didn't reply to the thread further, because I
couldn't think of a nicer solution to the whole problem
15:34 -!- aarapov [n=aarapov@r2ah201.net.upc.cz] has joined #go-nuts
15:34 < dho> the struct polymorphism fails in every case
15:35 < Ycros> tonyg: if you think of one, do tell :P
15:35 -!- kaib [n=kaib@c-76-102-52-156.hsd1.ca.comcast.net] has joined #go-nuts
15:35 -!- mode/#go-nuts [+v kaib] by ChanServ
15:35 < rog> is there an easy/quick way of checking whether the value inside
an interface is nil?
15:35 < tonyg> Ycros, what do you think of the
compares-to-nil-as-true-but-is-still-castable idea?
15:35 < rog> (regardless of type)
15:35 < tonyg> it could easily be icky semantically
15:35 < Ycros> tonyg: that could work
15:35 < dho> then I also get things like /usr/include/pthread.h:222:6: note:
expected 'struct pthread_mutex **' but argument is of type 'struct
<anonymous> *'
15:35 < tonyg> rog, i think you might have to cast it out to the type you're
interested in!
15:35 < rog> yeah, i think i do
15:35 < dho> (and I'm guessing that's also because of -fplan9-extensions not
working)
15:35 < rog> just checking
15:36 < Ycros> tonyg: what I want (in order) 1) less surprising behaviour 2)
stronger typing (less casting!)
15:36 < rog> i do find it confusing that (interface{})(nil) != nil
15:36 < rog> particular if i'm not sure whether the struct member is or
isn't an interface
15:37 < tonyg> well,
15:37 < tonyg> > println( (interface{})(nil) == nil )
15:37 < rndbot> true
15:37 < tonyg> but,
15:37 < tonyg> > println( (interface{})(int(0)) == nil )
15:37 < rndbot> false
15:39 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has joined
#go-nuts
15:39 < rog> type F struct {f *F}; println((interface{})(F{}.f) == nil}
15:40 < rog> > type F struct {f *F}; println((interface{})(F{}.f) == nil}
15:40 < rndbot> <Error: syntax error near nil>
15:40 < rog> > type F struct {f *F}; println((interface{})(F{}.f) ==
nil);
15:40 < rndbot> false
15:41 < rog> tonyg: so nil on its own counts as an interface, but a typed
nil does not
15:41 < rog> tonyg: which is...  easy to get wrong
15:41 -!- Vova [n=Vova@80.178.10.177.adsl.012.net.il] has joined #go-nuts
15:43 < tonyg> rog, yes; yes it is :-) very easy...
15:43 < rog> i think that if there was a rule that (interface{})(nil) ==
nil, things would get much easier
15:43 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has joined
#go-nuts
15:44 < rog> i know it's not totally consistent, but it would work ok, i
think.
15:44 < JPascal> How to bind C functions in Go? Can`t find documentation.
:(
15:44 < tonyg> rog, what about (interface{})(int(0)) == nil ?
15:44 < tonyg> would you have that be true as well?
15:44 < rog> i think that's fine
15:44 < tonyg> yeah, i think it's maybe worth considering.
15:44 < rog> int(0) is not type compatible with nil
15:45 < tonyg> I can't immediately see a semantic problem with it
15:45 < rog> neither are struct values
15:45 -!- arquebus [n=shintaro@201.139.156.133.cable.dyn.cableonline.com.mx] has
joined #go-nuts
15:45 -!- drry [n=drry@unaffiliated/drry] has quit ["Tiarra 0.1+svn-35634M:
SIGTERM received; exit"]
15:46 -!- Loafers [n=loafers@unaffiliated/loafers] has quit [Read error: 60
(Operation timed out)]
15:46 < rog> the only thing is, it's permissible to have: func (f *Foo)()
where f is nil and it'll work
15:47 < rog> that's the semantic problem - you can't change such an instance
of f into an interface.
15:47 < rog> s/of f/of *Foo/
15:47 -!- kaigan|work
[n=kaigan@c-8290e255.1411-10-64736c14.cust.bredbandsbolaget.se] has quit []
15:50 -!- diltsman [n=diltsman@64.122.18.77] has quit []
15:51 < rog> i wonder how useful that (i.e.  having a nil instance) actually
is though.
15:51 < rog> because it brings quite a lot of pain with it.
15:52 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has quit
["Leaving."]
15:53 < rog> and if you still had the nil value -> nil interface rule,
it'd be easy to work around for the very few cases it's a problem.
15:53 < rog> i.e.  just put the value into a struct.
15:53 -!- diltsman_ [n=diltsman@64.122.18.77] has joined #go-nuts
15:53 -!- diltsman_ [n=diltsman@64.122.18.77] has quit [Client Quit]
15:55 < Ycros> rog: yeah, as I told tonyg - I raised this a while ago at
http://groups.google.com/group/golang-nuts/browse_thread/thread/21bfac3121e0edd2/e7fc32c907c3c177
15:55 -!- tibshoot [n=tibshoot@linagora-230-146.pr0.nerim.net] has quit ["Quitte"]
15:58 < rog> that's the exact thing.
15:58 < rog> russ's argument is a good one.
15:58 < rog> but...
15:58 < rog> it's awkward in practice!
15:59 -!- chickamade [n=chickama@123.16.79.248] has joined #go-nuts
15:59 -!- p4p4_ [n=P4p4@24.121.113.82.net.de.o2.com] has joined #go-nuts
16:02 < nickjohnson> Is there no way with the current http module to send
additional headers?
16:04 -!- chickamade [n=chickama@123.16.79.248] has quit [Client Quit]
16:05 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has quit
[Connection timed out]
16:13 -!- qbit_ [n=qbit_@c-75-71-160-106.hsd1.co.comcast.net] has joined #go-nuts
16:13 < dho> hm
16:13 < dho> i'm getting index out of range throwing a panic if i call
rand.Int63n(1<<24)
16:14 < Ycros> rog: yes.
16:14 -!- Freeaqingme| [n=dolf@145.74.181.68] has quit [Client Quit]
16:14 < dho> nm
16:14 < Ycros> rog: which is why I didn't push the argument further -
because I don't have a good solution apart from my original suggested
16:15 -!- crc_ [n=charlesc@c-68-80-139-0.hsd1.pa.comcast.net] has joined #go-nuts
16:15 < qbit_> anyone know if there is a vim plugin to zap the code in the
current buffer with gofmt?
16:15 -!- crc [n=charlesc@c-68-80-139-0.hsd1.pa.comcast.net] has quit [Read error:
60 (Operation timed out)]
16:17 < Ycros> qbit_: dunno, but if you join the dark side (emacs), the go
emacs plugin does it ;)
16:18 < qbit_> heh, figured they would have one already :P
16:18 < rog> Ycros: this issue is the reason there are so many different
checks against nil of different types in http://golang.org/src/pkg/go/ast/walk.go
16:18 < dho> http://gopaste.org/view/s4aNn Thoughts on why this would
segfault?  Looks like it's segfaulting in MCentral_Free, but it doesn't do it all
the time.
16:19 < Ycros> rog: nice catch!
16:19 < uriel> qbit_: isn't that something like !!gofmt?
16:19 < Ycros> rog: maybe it'd be worth writing a patch at this point, so
everyone can actually try it out instead of just talking over it - though i'm not
sure I'm skilled enough to do that at this point
16:20 < uriel> vim scripting is trocious, but something like this can't be
harder than a one line of code
16:20 < rog> Ycros: one possible, slightly grubby solution, to russ's email
is to let a nil interface be polymorphic - i.e.  a nil interface value can be cast
to a nil value of any pointer type.
16:20 < uriel> (in acme is just clicking on |gofmt)
16:21 < qbit_> uriel, maybe something like that :P - but I don't know what
it is
16:21 < rog> so his final tt := i.(T); would work...  but it's no longer
entirely type safe.
16:21 < uriel> well, that is why vim sucks so much, it is impossible to know
how to perform even the simplest task because the whole system is so ridiculously
complex
16:22 < dho> throw: bad gcref
16:22 < rog> in vim, can't you just do :%|gofmt ?
16:22 < vegai> I know it's sinful, but I just like syntax highlighting too
much to be able to use acme ;-/
16:22 < dho> grmbl
16:22 < Ycros> rog: hmm
16:23 < rog> or 1,$|gofmt it's ages since i used vi
16:23 < Ycros> isn't it :r!gofmt ?
16:23 < Ycros> idk
16:23 < rog> i think not!
16:23 < Ycros> I switched to emacs like a year or so ago
16:23 < uriel> nobody knows even 0.1% of vim's features, so...
16:24 < rog> well that one was in the original vi
16:24 < Ycros> mmm, I used vim
16:24 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has joined
#go-nuts
16:24 < rog> oh yes, i remember: go to the start of the file (1G), type
!Ggofmt<cr>
16:25 < dho> must be a go on freebsd bug
16:26 < dho> can't reproduce it in linux
16:26 < qbit_> nice
16:26 -!- smooge [n=smooge@int.smoogespace.com] has quit ["-ENOBRAIN"]
16:26 < qbit_> rog, that works
16:28 < qbit_> thanks :)
16:28 < rog> Ycros: ah, but then you can't do reflection on a nil type.
darn.
16:28 < rog> qbit_: n[
16:28 < rog> np
16:28 < Ycros> rog: yeaaaaah
16:29 < JPascal> iant: I have tried with function fork from C. While works
without censures.
16:29 < rog> but...  i still think it's worth special-casing
16:30 -!- path[l]_ [n=path@115.184.101.29] has joined #go-nuts
16:30 < Ycros> rog: I agree
16:30 < rog> nil is nil is nil and polymorphic in whatever form it's in.
16:30 < Ycros> rog: well, my other argument was that interfaces already mask
whether you have a value or a pointer type underneath
16:31 -!- WalterMundt [n=waltermu@twiki/developer/EtherMage] has joined #go-nuts
16:32 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has joined #go-nuts
16:33 < rog> Ycros: well they wouldn't in this proposal
16:36 < taruti> the interface nil things is *very* confusing
16:37 < taruti> "if val != nil { val.Foo() }" <- so this bad code with
interfaces?
16:37 -!- path[l] [n=path@115.184.17.149] has quit [Read error: 60 (Operation
timed out)]
16:37 -!- JPascal [n=jpascal@195.239.8.22] has left #go-nuts []
16:37 -!- mkanat [n=mkanat@c-67-188-1-39.hsd1.ca.comcast.net] has joined #go-nuts
16:37 < rog> taruti: not necessarily
16:38 < rog> taruti: it depends whether your Foo method can deal with a nil
receiver value
16:38 < rog> taruti: but the call itself will succeed
16:38 -!- elmar [n=elmar@188.107.216.107] has joined #go-nuts
16:38 < taruti> rog: in the non-interface context the receiver cannot be nil
if I understand correctly
16:39 < rog> taruti: it can be nil.
16:39 -!- snearch [n=olaf@g225055177.adsl.alicedsl.de] has joined #go-nuts
16:39 < taruti> hmm?  (slow today)
16:40 -!- fgb [n=fgb@190.246.85.45] has quit [Read error: 110 (Connection timed
out)]
16:40 < rog> > type Foo struct {}; func (f *Foo)() {print("hello")}; var
f *Foo; f.Foo()
16:40 < rndbot> <Error: (node CLOSURE) not used, f.Foo undefined (type
Foo has no field Foo)>
16:41 < rog> oh, can't do in-function method decls
16:41 < rog> anyway, the principal should work
16:41 -!- Anders_ [n=Anders@c83-253-2-206.bredband.comhem.se] has joined #go-nuts
16:41 < nickjohnson> Annoying, I wanted to use the http library to read from
Twitter, but I can't set headers:/
16:41 < rog> s/principal/principle/
16:42 < uriel> nickjohnson: IIRC there is an issue filled about that..
16:42 < hagna> nickjohnson: can't you change the source?
16:43 < nickjohnson> hagna: Sure, but then it'll break in the future
16:43 < taruti> rog: ok.  most languages don't allow such calls but seems
like the language specification says that is legal.
16:43 < taruti> deferencing nil being ok feels weird
16:44 < nickjohnson> rog: You're neither naming the function nor calling it,
so I don't see how that would work
16:44 < rog> sorry, i got my syntax wrong
16:45 < rog> > type Foo struct {}; func (f *Foo)P() {print("hello")}; var
f *Foo; f.P();
16:46 < rog> that works
16:46 < rndbot> <Error: syntax error near P, fatal error: automatic
outside function>
16:46 < rog> type Foo struct {}; func (f *Foo)P() int {print("hello")}; var
f *Foo; var g = f.P();
16:47 < rog> > type Foo struct {}; func (f *Foo)P() int {print("hello")};
var f *Foo; var g = f.P();
16:47 < rndbot> <Error: syntax error near P, fatal error: automatic
outside function>
16:47 < rog> anyway, it works in a normal go source file
16:47 < rog> 'cos i just tried it
16:50 < tonyg> rog, the bot doesn't let you define types :-/
16:51 < tonyg> or named functions
16:51 < tonyg> i think it's syntactically a block scope
16:52 < taruti> and according to the language specification one can call
methods like functions, so that makes the last objection go away
16:52 < taruti> "t.Mv(7) == T.Mv(t,7)" <- now it seems logical to allow
the nil
16:54 -!- spb [i=stephen@freenode/developer/exherbo.spb] has left #go-nuts []
16:56 -!- toumbia [n=toumbia@216.144.118.20] has joined #go-nuts
16:57 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has quit
[Connection timed out]
16:59 -!- path[l] [n=path@115.184.101.29] has quit [Connection timed out]
17:00 < rog> yeah it is
17:02 -!- kaib [n=kaib@c-76-102-52-156.hsd1.ca.comcast.net] has quit []
17:05 -!- Altercation [n=Altercat@pdpc/supporter/active/altercation] has left
#go-nuts []
17:07 -!- codedread [i=88b6021b@gateway/web/freenode/x-uaisdpexjwcsjifu] has
joined #go-nuts
17:09 < anticw> taruti: i dont think the current compilers implement that
though
17:10 -!- yoasif [n=asif@user-387h1cm.cable.mindspring.com] has joined #go-nuts
17:14 -!- djanderson [n=dja@hltncable.pioneerbroadband.net] has joined #go-nuts
17:15 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has joined
#go-nuts
17:15 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has quit [SendQ
exceeded]
17:16 -!- tsuwabuki [n=tsuwabuk@FLH1Aav065.kyt.mesh.ad.jp] has quit ["さようなら"]
17:19 -!- Anders__ [n=Anders@c83-253-2-206.bredband.comhem.se] has joined #go-nuts
17:20 -!- yoasif_ [n=asif@36.sub-75-238-54.myvzw.com] has joined #go-nuts
17:20 -!- decriptor [n=decripto@137.65.132.17] has joined #go-nuts
17:21 -!- JPascal [n=jpascal@78-106-26-155.broadband.corbina.ru] has joined
#go-nuts
17:28 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit ["A cow.  A trampoline.
Together they fight crime!"]
17:28 -!- yoasif [n=asif@user-387h1cm.cable.mindspring.com] has quit [Read error:
54 (Connection reset by peer)]
17:29 -!- yoasif [n=asif@user-387h1cm.cable.mindspring.com] has joined #go-nuts
17:31 < tonyg> will readers from a chan always see every queued-up message
before seeing closed() go true?
17:33 -!- tonyg [n=tonyg@host238.lshift.net] has quit ["Leaving"]
17:33 -!- JPascal2 [n=jpascal@78-106-196-253.broadband.corbina.ru] has joined
#go-nuts
17:34 < JPascal2> .
17:34 -!- JPascal2 [n=jpascal@78-106-196-253.broadband.corbina.ru] has left
#go-nuts []
17:34 -!- JPascal2 [n=jpascal@78-106-196-253.broadband.corbina.ru] has joined
#go-nuts
17:35 -!- r2p2 [n=billy@v32671.1blu.de] has left #go-nuts []
17:36 -!- Anders_ [n=Anders@c83-253-2-206.bredband.comhem.se] has quit [Read
error: 110 (Connection timed out)]
17:36 -!- kne1p [n=Chris@HSI-KBW-091-089-008-044.hsi2.kabelbw.de] has joined
#go-nuts
17:39 -!- triplez [n=triplez@bb219-74-8-236.singnet.com.sg] has quit []
17:40 < taruti> What was the method of subscribing to the mailing list
without a Google account?
17:41 < poe> sending a mail to mailinglistname-subscribe@googlegroups.com
17:42 -!- kne1p [n=Chris@HSI-KBW-091-089-008-044.hsi2.kabelbw.de] has left
#go-nuts []
17:43 -!- JPascal [n=jpascal@78-106-26-155.broadband.corbina.ru] has quit [Read
error: 110 (Connection timed out)]
17:45 -!- yoasif_ [n=asif@36.sub-75-238-54.myvzw.com] has quit [Read error: 110
(Connection timed out)]
17:46 -!- kne1p [n=Chris@HSI-KBW-091-089-008-044.hsi2.kabelbw.de] has joined
#go-nuts
17:47 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
17:47 -!- Venom_X [n=pjacobs@cpe-67-9-131-167.austin.res.rr.com] has joined
#go-nuts
17:47 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
17:47 -!- kne1p [n=Chris@HSI-KBW-091-089-008-044.hsi2.kabelbw.de] has left
#go-nuts []
17:47 -!- malkomalko_ [n=malkomal@66-234-41-82.nyc.cable.nyct.net] has joined
#go-nuts
17:48 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has joined
#go-nuts
17:50 -!- rowdog [n=jth@h220.145.30.71.dynamic.ip.windstream.net] has joined
#go-nuts
17:53 -!- decriptor_ [n=decripto@137.65.229.179] has joined #go-nuts
17:53 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
17:53 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
17:53 -!- malkomalko [n=malkomal@66-234-41-82.nyc.cable.nyct.net] has quit [Read
error: 60 (Operation timed out)]
17:54 -!- decriptor [n=decripto@137.65.132.17] has quit [Read error: 110
(Connection timed out)]
17:54 -!- beneth`_ [n=beneth`@beneth.fr] has quit ["leaving"]
17:56 -!- __ed [i=bitch@anal-co.it] has quit [Read error: 60 (Operation timed
out)]
17:57 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
17:57 -!- Anders_ [n=Anders@c83-253-2-206.bredband.comhem.se] has joined #go-nuts
17:59 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has quit ["Leaving"]
18:00 -!- yoasif_ [n=asif@user-387h1cm.cable.mindspring.com] has joined #go-nuts
18:02 -!- yoasif [n=asif@user-387h1cm.cable.mindspring.com] has quit [No route to
host]
18:03 -!- perdix [n=perdix@g227156075.adsl.alicedsl.de] has joined #go-nuts
18:03 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:03 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:04 * tav waves
18:05 < tav> am ill and figured i'd see what the nutters were upto ;p
18:06 -!- kaib [n=kaib@c-76-102-52-156.hsd1.ca.comcast.net] has joined #go-nuts
18:06 -!- mode/#go-nuts [+v kaib] by ChanServ
18:08 -!- triplez [n=triplez@cm52.sigma225.maxonline.com.sg] has joined #go-nuts
18:09 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:09 -!- hooopy [i=hoopy@173-30-98-140.client.mchsi.com] has joined #go-nuts
18:09 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:10 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has quit
[Read error: 60 (Operation timed out)]
18:14 -!- kaib [n=kaib@c-76-102-52-156.hsd1.ca.comcast.net] has quit []
18:14 -!- Nanoo [n=Nano@95-89-198-45-dynip.superkabel.de] has quit ["Leaving"]
18:15 -!- Anders__ [n=Anders@c83-253-2-206.bredband.comhem.se] has quit [Read
error: 110 (Connection timed out)]
18:15 -!- slashus2 [n=slashus2@74-137-26-8.dhcp.insightbb.com] has quit []
18:15 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:16 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:18 -!- bombuzal [n=sbus@77.75.105.87] has left #go-nuts []
18:21 -!- sku [n=sk@217.175.1.199] has joined #go-nuts
18:22 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:22 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:23 -!- willdye [n=willdye@fern.dsndata.com] has joined #go-nuts
18:24 -!- hooopy_ [i=hoopy@173-30-98-140.client.mchsi.com] has joined #go-nuts
18:24 < taruti> Is there any proposal already for handling out of memory
conditions with a simple "addOOMHandler(func())" and none of the exception
madness?
18:26 -!- __ed [i=bitch@anal-co.it] has quit [Read error: 60 (Operation timed
out)]
18:26 -!- paul0 [n=paulogey@189.34.46.226] has joined #go-nuts
18:26 < paul0> or some reason i can't import "os" and "fmt"
18:27 < paul0> http://pastebin.ca/1700513
18:27 < paul0> what's wrong?
18:27 <+iant> paul0: usually your GOARCH is wrong; see the wiki page
mentioned in the channel topic
18:27 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:27 < paul0> my GOARCH is amd64
18:28 < paul0> and GOOS darwin
18:28 < dho> or GOOS or GOROOT
18:28 * dho grumbles
18:28 < Gracenotes> taruti: is it possible to go out of memory?
18:28 < dho> something's wrong in the memory allocator
18:29 < Vova> can i somehow get byte pointer of a string?
18:29 < Gracenotes> I thought the malloc module allocated without
consideration of limits.  and, by default, virtual memory allocation is limitless
18:29 < paul0> http://pastebin.ca/1700525
18:29 < Gracenotes> I've used setrlimit for the bot, albeit not caring so
much about what happens when that limit is reached
18:29 <+iant> Vova: you can convert a string to a []byte, but you can't get
a pointer into the string, and it wouldn't help much if you did
18:29 < paul0> here is my result for export | grep GO
18:30 <+iant> paul0: what command are you running to compile your program?
18:30 < Vova> thanks iant
18:30 < paul0> 6g file.go && 6l file.6
18:31 < Gracenotes> string.Bytes does the conversion by copying
18:31 < Gracenotes> strings
18:31 -!- rog [n=rog@78.148.16.235] has quit [Read error: 110 (Connection timed
out)]
18:32 < dho> paul0: and is there anything in
/Users/paulogeyer/go/pkg/darwin_amd64?
18:32 <+iant> paul0: the error message in your initial paste does not
correspond to the program you pasted
18:32 < paul0> dho: yes
18:33 -!- sku [n=sk@217.175.1.199] has quit []
18:33 -!- JPascal1 [n=jpascal@78-106-188-247.broadband.corbina.ru] has joined
#go-nuts
18:33 < JPascal1> How I can send signal to program by pid?
18:33 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:33 <+iant> JPascal1: I think the only way at present is syscall,Kill
18:33 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:34 -!- hooopy [i=hoopy@173-30-98-140.client.mchsi.com] has quit [Read error:
110 (Connection timed out)]
18:35 -!- hooopy [i=hoopy@173-30-98-140.client.mchsi.com] has joined #go-nuts
18:36 < paul0> in the Common Problems article from the wiki, it says only it
couldn't import fmt...
18:36 < Gracenotes> which you can send, for example, syscall.SIGKILL to
18:36 < paul0> but when i try to import only fmt, it works
18:36 <+iant> paul0: you need to show us the real example you tried to
compile and the error message
18:37 -!- path[l] [n=path@115.184.103.153] has joined #go-nuts
18:37 < paul0> oh
18:37 < JPascal1> iant,thanks.  How to me to catch signal?
18:38 < paul0> i've fixed...  it wasn't a problem with the import
18:38 <+iant> JPascal1: unfortunately there is no way to catch a signal in
Go at present
18:38 <+iant> This is a known omission
18:38 < paul0> i forgot to use ; in the end of line
18:38 < paul0> sorry, and thanks for the help
18:38 < JPascal1> iant, thanks)
18:39 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:40 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:40 < taruti> Gracenotes: e.g.  trying to malloc 5gb on a 32bit machine.
18:41 < Gracenotes> oh, I see.  so the OS says no, but only because you're
being somewhat insane :)
18:41 -!- hooopy_ [i=hoopy@173-30-98-140.client.mchsi.com] has quit [Read error:
110 (Connection timed out)]
18:41 < taruti> Gracenotes: but most practically people keep whining on the
mailing list that new should handle errors somehow.
18:42 < taruti> thus they could be pointed "there is a way, now shut up" :)
18:42 -!- __ed [i=bitch@anal-co.it] has quit [Read error: 60 (Operation timed
out)]
18:43 <+iant> taruti: it strikes me as a reasonable approach
18:43 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:43 -!- triplez [n=triplez@cm52.sigma225.maxonline.com.sg] has quit []
18:43 -!- yoasif_ [n=asif@user-387h1cm.cable.mindspring.com] has quit [No route to
host]
18:44 < Gracenotes> currently, it seems to be printf("mmap: errno=%p\n",
p);.  that's what I've gotten
18:44 < Gracenotes> from breaking rlimits, I mean
18:44 < Gracenotes> ..and then exit(2)
18:47 -!- JPascal [n=jpascal@78-106-196-253.broadband.corbina.ru] has quit [Read
error: 110 (Connection timed out)]
18:49 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:49 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:49 -!- hooopy [i=hoopy@173-30-98-140.client.mchsi.com] has quit [Remote closed
the connection]
18:52 -!- chrelad [n=chrelad@76.164.12.11] has joined #go-nuts
18:52 -!- triplez [n=triplez@cm52.sigma225.maxonline.com.sg] has joined #go-nuts
18:52 -!- hooopy [i=hoopy@173-30-98-140.client.mchsi.com] has joined #go-nuts
18:53 < dho> how the FUCK can I possibly hit unlock of unlocked lock in
MCentral_AllocList->MCentral_Grow?!?!
18:53 < dho> the *only way* is if cas() is broken
18:53 < dho> unless i'm on crack
18:54 < Gracenotes> how is listty formed?  how memory get growed?
18:54 <+iant> dho: I concur: something must be wrong with lock
18:54 < dho> iant: the code is copied from linux, except using freebsd's
umtx which does the exact same thing futex does
18:55 < dho> iant: and nobody's touched cas()
18:55 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
18:55 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
18:55 < dagle> dho: Did you do I.crack() ? ;)
18:56 -!- lenst [n=user@81-237-244-185-no52.tbcn.telia.com] has joined #go-nuts
18:56 < dho> I'd wonder if its a red herring, but all the other bugs seem
indicative of lock issues as well
18:57 < dho> (i.e.  s->freelist is all of a sudden 0x3)
18:57 <+iant> is there any chance that memory is not getting zero
initialized when it should be?
18:57 < dho> maybe
18:58 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has joined
#go-nuts
18:59 -!- __ed [i=bitch@anal-co.it] has quit [Read error: 60 (Operation timed
out)]
18:59 -!- todos [n=ttodos@195.160.234.10] has quit ["Ex-Chat"]
19:00 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has quit [SendQ
exceeded]
19:00 < paul0> what would be the equivalent to "array[i] = var" in Go?
19:00 < dho> iant: it doesn't look like mheap.c zeroes MSpans
19:00 < dho> hm
19:00 < dho> no, it does
19:00 -!- decriptor [n=decripto@137.65.229.179] has quit ["Ex-Chat"]
19:00 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:01 -!- decriptor [n=decripto@137.65.132.17] has joined #go-nuts
19:01 <+iant> paul0: array[i] = var works in Go
19:01 < paul0> "non-name numeros[i] on left side of :="
19:01 <+iant> paul0: array[i] := var does not work in Go; array[i] = var
does work
19:01 < paul0> oh
19:02 < paul0> what is the difference between := and =?
19:02 <+iant> := declares and initializes a new variable; = assigns a value
to an existing l-value
19:02 <+iant> This is covered in the tutorial
19:03 < paul0> it's a new concept for me
19:03 < paul0> never seen that before
19:03 < dagle> You don't need to use it.
19:04 <+iant> Go is not the first language to use :=, but it is not a widely
used idea
19:04 <+iant> in any case, I really encourage you to read the tutorial
19:05 < dagle> paul0: It just remove the redundancy in variable declaration.
19:05 -!- elmar [n=elmar@188.107.216.107] has quit ["Leaving"]
19:05 * dho goes to shoot himself
19:05 < paul0> thanks :)
19:05 < paul0> how to i convert a string to integer?
19:05 * dagle steals dho's bullets.
19:05 <+iant> strconv.Atoi
19:05 < dho> you read the documentation.
19:05 < hstimer> iant: why not just use = and always have the compiler try
and derive type; when it can't then give an error
19:06 <+iant> hstimer: because if you mistype the variable name the compiler
won't notice
19:06 <+iant> providing both := and = is a cost/benefit decision
19:06 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
19:07 <+iant> there are languages which only have =
19:07 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:07 < Gracenotes> does the compiler still complain if you have unused
variables?
19:07 < hstimer> yes, that is a bit of headache in languages like ruby et al
but not that much of a big deal in practice
19:07 <+iant> Gracenotes: yes
19:07 <+iant> hstimer: as I say, it's a cost/benefit decision
19:07 < JBeshir> hstimer: I find it remarkably annoying and hate every
language which doesn't require declaration, myself
19:07 <+iant> ultimately one just has to decide
19:08 < Gracenotes> iirc that fucking annoying error was put in place so
people wouldn't confuse = and :=.
19:08 < Gracenotes> there's no other sane reason it would be in there
19:08 <+iant> that is basically correct, yes
19:08 <+iant> but for the reverse confusion, using := when you meant =
19:08 < Gracenotes> (if that even qualifies as a sane reason)
19:09 < Gracenotes> there is a "warn" function for a reason, you know
19:10 < Gracenotes> anyway, though, philosophy class..  so need laptop :/ be
back after that, though :)
19:11 < Gracenotes> (and rndbot too, sorry)
19:13 < paul0> i've tried to use strconv.Atori(flag.Arg(1)), and i receive
this error: numeros[i] = strconv.Atoi(flag.Arg(i));
19:13 < paul0> i mean
19:13 < paul0> multiple-value strconv.Atoi() in single-value context
19:13 <+iant> paul0: I would encourage you to spend a bit more time reading
the documentation
19:14 < paul0> ok ok
19:14 -!- Gracenotes [n=person@wikipedia/Gracenotes] has quit [Remote closed the
connection]
19:14 < paul0> thanks for the help :)
19:15 -!- rndbot [n=bot@wikipedia/Gracenotes] has quit [Remote closed the
connection]
19:15 -!- reubens [n=reubens@c-66-235-53-139.sea.wa.customer.broadstripe.net] has
joined #go-nuts
19:16 -!- __ed [i=bitch@anal-co.it] has quit [Read error: 60 (Operation timed
out)]
19:16 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:18 -!- armence [n=armence@c-67-188-229-128.hsd1.ca.comcast.net] has joined
#go-nuts
19:19 < JPascal1> How I can write message in syslog?
19:21 < reubens> i don't understand how to write general purpose containers
in go, i got as far as thinking you would take an empty interface when you store
something, but then how does the user get the right type back when they retrieve
it?
19:21 < rovar> anyone here familiar with reflect?  I am passed an
interface{} which , in this case is a map type.  I need to make a new map which is
the type of the map that is passed in.
19:21 <+iant> reubens: val.(type)
19:22 <+iant> rovar: reflect.MakeZero
19:22 < rovar> thanks
19:22 <+iant> rovar: actually, see also reflect.MakeMap
19:22 < reubens> iant: do we lose all static typechecking here?
19:22 <+iant> reubens: no....
19:22 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
19:23 <+iant> val.(type) only succeeds if the value really is that type
19:23 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:23 < rovar> iant: yea..  I'm using that one..  but it doesn't initialize
the result, correct?
19:23 < rovar> hrrm..  maybe it does.
19:23 < reubens> iant: but it fails at runtime, no?
19:23 <+iant> rovar: MakeMap should give you more or less what make(map[K]V)
does
19:23 <+iant> reubens: yes, it fails at runtime
19:24 -!- melba [n=blee@unaffiliated/lazz0] has quit [Read error: 113 (No route to
host)]
19:24 < rovar> kay
19:24 <+iant> reubens: oh, sorry, you're right, you do lose static type
checking
19:24 <+iant> the type checking in that case is dynamic
19:24 < reubens> okay, i guess that's fine, it's just not quite what i
expected
19:24 < rovar> so I have:
19:24 < rovar> nmap :=
reflect.MakeMap(reflect.Typeof(m).(*reflect.MapType)); omap :=
reflect.NewValue(reflect.Typeof(m).(*reflect.MapType));
19:24 -!- clearscreen [n=clearscr@e248070.upc-e.chello.nl] has quit ["Leaving."]
19:25 -!- clearscreen [n=clearscr@e248070.upc-e.chello.nl] has joined #go-nuts
19:25 < rovar> actually..  omap isn't right yet.
19:26 -!- gasreaa [n=atwong@nat/slide/x-yswpgrevokqkltti] has joined #go-nuts
19:27 < JPascal1> Can I store message in SysLog on Linux?
19:29 -!- kiva [n=quassel@r220-101-159-148.cpe.unwired.net.au] has joined #go-nuts
19:29 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
19:29 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:32 -!- werdan7 [n=w7@freenode/staff/wikimedia.werdan7] has quit [SendQ
exceeded]
19:32 -!- rog [n=rog@78.148.16.235] has joined #go-nuts
19:33 < rovar> iant: http://gopaste.org/view/uo5NO
19:33 < rovar> my problem is: cloneable2.go:21: int is not reflect.Value
missing Type() (reflect.Type)
19:34 < rovar> the CloneMap function is an attempt to make a generic
function that copies any map
19:34 <+iant> nmap.SetElem(reflect.NewValue(k), omap.Elem(k))
19:35 <+iant> I don't know if it will work, but it will get past that error
message
19:35 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
19:35 <+iant> actually, wait
19:35 <+iant> don't do that
19:35 < rovar> but k already is a Value
19:35 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:35 < rovar> that's the wierd part
19:35 <+iant> the problem is that you need to write "for _, k := range Keys"
19:35 < rovar> ?
19:36 < rovar> oh..  yes
19:36 < rovar> you're right
19:36 < kimelto> morning!
19:36 < rovar> hah..  so i got the crazy reflect stuff right..  just screwed
up the basic syntax :)
19:36 < dho> hi
19:37 -!- paul0 [n=paulogey@189.34.46.226] has quit []
19:37 < rovar> iant: now it compiles..  but line 18 fails with an interface
conversion: interface{} is not a MapValue (which is true..  but...)
19:38 < rovar> oh..  that's wrong..  it's in my Clone functions..
19:39 < rovar> argh..  so close..  so returning from the functions, it says
that the interface is MapValue..  which can't be cast back into MapA or MapB
19:39 < plexdev> http://is.gd/5btq4 by [Robert Griesemer] in
go/src/pkg/go/doc/ -- - include type-associated consts and vars when filtering a
PackageDoc
19:39 -!- ryniek [n=RYNIEK@host-89-231-120-113.warszawa.mm.pl] has quit [Remote
closed the connection]
19:40 <+iant> rovar: call Interface() on the map value to get something you
can cast
19:41 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
19:41 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:42 -!- Rob_Russell [n=chatzill@206-248-157-156.dsl.teksavvy.com] has quit
["ChatZilla 0.9.85 [Firefox 3.5.5/20091102152451]"]
19:45 < rovar> iant: I don't exactly follow
19:45 < rovar> how would I use that function?
19:46 <+iant> If v is a reflect.Value, which includes a MapValue, you can
call v.Interface to get a value of type interface{}
19:46 -!- sum-it [i=7afcf20f@gateway/web/freenode/x-ykvyjophyczirwsp] has joined
#go-nuts
19:46 <+iant> so you would use something like v.Interface().(MyMapType)
19:46 < rovar> hrrm..
19:48 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
19:48 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:54 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
19:54 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
19:55 < rovar> haha
19:55 < rovar> fixed!: http://gopaste.org/view/Vdu39
19:55 < rovar> thanks for your help
19:55 <+iant> congrats
19:55 < rovar> man I can't wait for generics
19:56 <+iant> after all that work?
19:56 < Vova> Go simple chat,
http://korprg.blogspot.com/2009/12/go-simple-chat.html
19:58 -!- reubens [n=reubens@c-66-235-53-139.sea.wa.customer.broadstripe.net] has
quit [Client Quit]
20:00 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
20:00 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:02 -!- Xavi [n=Xavi@66-191-181-152.dhcp.gnvl.sc.charter.com] has joined
#go-nuts
20:02 -!- gnuvince [n=vince@64.235.207.85] has quit ["What the fruit is goin' on
here!?"]
20:02 -!- gnuvince [n=vince@64.235.207.85] has joined #go-nuts
20:03 -!- aho [n=nya@f051150022.adsl.alicedsl.de] has joined #go-nuts
20:03 -!- Xavi [n=Xavi@66-191-181-152.dhcp.gnvl.sc.charter.com] has quit [Client
Quit]
20:04 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has joined #go-nuts
20:04 -!- directrixx [n=aleksand@ip68-231-189-247.tc.ph.cox.net] has joined
#go-nuts
20:05 -!- gasreaa [n=atwong@nat/slide/x-yswpgrevokqkltti] has left #go-nuts []
20:05 -!- ritolatu [n=ritolatu@dsl-olubrasgw1-fe54fb00-201.dhcp.inet.fi] has
joined #go-nuts
20:06 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
20:06 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:11 -!- sum-it [i=7afcf20f@gateway/web/freenode/x-ykvyjophyczirwsp] has quit
["Page closed"]
20:11 -!- Venom_X [n=pjacobs@cpe-67-9-131-167.austin.res.rr.com] has quit []
20:13 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
20:13 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:19 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
20:19 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:19 < Vova> is there a way to code async sockets?
20:20 -!- illya77 [n=illya77@148-153-133-95.pool.ukrtel.net] has joined #go-nuts
20:22 < hagna> Vova: like the kind that don't block?
20:23 -!- __ed [i=bitch@anal-co.it] has quit [Read error: 60 (Operation timed
out)]
20:23 < Vova> yea, like with Kqueue or epoll
20:24 < hagna> yeah I'd like to know that too someone said they use epoll
and kqueue internally
20:24 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:24 < rovar> goroutines are actually event driven when using io
20:25 < dho> hagna: they do
20:25 < rovar> but their coroutine nature hides the event handling for your,
so it feels like a blocking socket.
20:25 < dho> but you can certainly use syscall.Kqueue / sycall.Epoll
natively.
20:26 -!- keeto [n=keeto@121.54.92.149] has quit [Read error: 113 (No route to
host)]
20:27 -!- keeto_ [n=keeto@121.54.92.149] has joined #go-nuts
20:27 < Vova> Kqueue is faster then epoll right?
20:27 < reppie> they're just different APIs
20:27 < dho> for different operating systems.
20:27 < taruti> Vova: depends on how many clients you have.
20:28 < dho> it depends on too many factors to draw a good conclusion.
20:28 < taruti> Vova: on a small number of clients classical select(2) will
be the fastest usually
20:28 < rovar> kqueue is for freebsd, epoll is for linux
20:28 < rovar> unless i'm missing something
20:28 -!- arquebus [n=shintaro@201.139.156.133.cable.dyn.cableonline.com.mx] has
quit [Remote closed the connection]
20:28 < reppie> i personally like kqueue better
20:29 < dho> rovar: darwin has kqueue
20:29 < dho> and so do the other bsds
20:29 < dho> iant: does this look `bad' to you?
20:29 < dho> (gdb) x/x 0x45c3d0
20:29 < dho> 0x45c3d0 <mheap>: 0x00000000
20:29 < rovar> dho, darwin ~= fbsd :)
20:29 < dho> not really
20:29 < rovar> err.  bsd
20:30 -!- keeto [n=keeto@121.54.92.149] has quit [Read error: 104 (Connection
reset by peer)]
20:30 -!- keeto_ [n=keeto@121.54.92.149] has joined #go-nuts
20:30 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
20:31 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:31 < taruti> using epoll or kqueue is not worth it for most applications
(of course libraries underneath can use them when it makes sense)
20:31 < dho> I guess that would be MHeap.(Lock)
20:31 -!- plainhao [n=plainhao@mail.xbiotica.com] has quit []
20:32 < dho> but that doesn't make sense.
20:32 < taruti> e.g.  forking breaks epoll in evil ways
20:32 < dho> that would mean that (Lock)mheap.key is 0
20:33 < dho> or
20:33 < dho> ((Lock)mheap).key rather
20:34 * dho hrms
20:34 -!- directrixx [n=aleksand@ip68-231-189-247.tc.ph.cox.net] has quit
["Adios"]
20:34 -!- __ed [i=bitch@anal-co.it] has quit [Read error: 60 (Operation timed
out)]
20:36 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:36 -!- JPascal1 [n=jpascal@78-106-188-247.broadband.corbina.ru] has left
#go-nuts []
20:36 < dho> meh, little endian, x/2x yields 0x00000001 0x00000000.  duh
20:40 -!- leitaox [n=leitaox@189.20.94.66] has joined #go-nuts
20:42 < anticw> dho: the linux 2.4.x issue ...  there is a way we can
probably have the runtime detect the clone failure and have a fallback mode
20:42 < anticw> dho: but honestly, i would prefer we didn't ...  it's
supporting something very old and ugly
20:42 -!- __ed [i=bitch@anal-co.it] has quit ["changing servers"]
20:42 -!- __ed [i=bitch@anal-co.it] has joined #go-nuts
20:42 < dho> i don't know why clone should fail
20:43 < dho> args on i386 and amd64 in linux are passed in registers
20:43 < anticw> because 2.4.x can't clone tid
20:43 < dho> we don't ask it to
20:43 < anticw> unless you have 2.4.20+ from RH
20:43 < anticw> mainline never had that
20:43 < anticw> so you can close w/o that and then do some uglies
20:43 < dho> the person who is running that is using RH 2.4.22
20:44 < anticw> but really it means we have a different behavior in some
cases ...  so any bugs in the area would muddied potentially
20:44 < dho> i don't know why it doesn't work
20:44 < dho> and i don't have a 2.4 system to try it on
20:44 < anticw> i did a threading lib once in the past and had to make it
work
20:44 < anticw> i forget detials now, it was a long time ago
20:44 < dho> and on top of that, I'm trying to figure out why I'm getting
errors in memory allocation with this really really simple code
20:44 < anticw> i really don't want to confuse/muddy things for the sake of
something ancient
20:44 -!- snearch [n=olaf@g225055177.adsl.alicedsl.de] has quit ["Ex-Chat"]
20:44 < anticw> i mean, how far do we go?
20:45 < anticw> do we one windows is merged regress parts of that so win95
works?
20:45 < anticw> it's almost 2010 ...
20:46 < dho> russ didn't initially want to accept that ticket
20:46 * dho is going to shoot self
20:47 < dho> anticw: you don't happen to have a freebsd/amd64 machine do
you?
20:48 -!- aarapov [n=aarapov@r2ah201.net.upc.cz] has quit ["Leaving."]
20:48 < anticw> dho: not this second, i can get one (in a vm) though w/o
that much effort
20:49 < WalterMundt> is it bad if runtime.Caller(...) SIGSEGV's?  I'm trying
to build a stack and was relying on being able to just call it with increasing
levels until it starts returning ok = false
20:49 < dho> if you could, it would be nice to see if this can be reproduced
20:50 < fenicks> hello
20:52 < WalterMundt> dho: If you're speaking to me, I'm rebuilding after
pull -u and seeing if the issue persists.  If it does then I'll play with boiling
it down
20:52 < dho> WalterMundt: was talking to anticw
20:52 < WalterMundt> k
20:52 < dho> sorry
20:53 -!- Cyanure [n=cyanure@212-198-164-142.rev.numericable.fr] has joined
#go-nuts
20:53 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit [Read error: 104
(Connection reset by peer)]
20:53 -!- tobel [n=tobel@p4FDCA38D.dip.t-dialin.net] has joined #go-nuts
20:53 -!- perdix [n=perdix@g227156075.adsl.alicedsl.de] has joined #go-nuts
20:56 < plexdev> http://is.gd/5by7C by [Christopher Wedgwood] in
go/src/cmd/gc/ -- gc: Allow allow data types up to 1GB
20:56 < plexdev> http://is.gd/5by7G by [Rob Pike] in 3 subdirs of
go/src/pkg/ -- Add ReadFrom and WriteTo methods to bytes.Buffer, to enable i/o
without buffer allocation.
20:57 -!- TMinus36 [n=serverz@pdpc/supporter/student/tminus36] has joined #go-nuts
20:57 < Fringehead> Is there an OpenGL package in the works somewhere?
20:58 -!- werdan7 [n=w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts
20:59 -!- stevenyvr [n=schan@76-10-184-108.dsl.teksavvy.com] has joined #go-nuts
21:01 -!- mbarkhau [n=koloss@p54A7F00B.dip.t-dialin.net] has joined #go-nuts
21:02 -!- mitchellh [n=mitchell@D-69-91-143-37.dhcp4.washington.edu] has joined
#go-nuts
21:03 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has joined
#go-nuts
21:03 < Vova> why does kevn := new(syscall.Kevent_t); isnt compiling?
21:04 -!- kiva [n=quassel@r220-101-159-148.cpe.unwired.net.au] has quit [No route
to host]
21:04 < dho> what OS are you using?
21:04 -!- amuck_ [n=amuck_@rrcs-76-79-44-2.west.biz.rr.com] has quit []
21:08 < WalterMundt> looks like my issue is same as 176; is there any way to
reopen, or will someone do that now that I've commented on it?
21:10 -!- hd_ [n=hd_@253.176.233.220.static.exetel.com.au] has joined #go-nuts
21:12 -!- tobel [n=tobel@p4FDCA38D.dip.t-dialin.net] has quit ["WeeChat 0.3.0"]
21:12 <+iant> WalterMundt: I flipped the state back to New
21:12 -!- illya77 [n=illya77@148-153-133-95.pool.ukrtel.net] has quit []
21:15 -!- malkomalko [n=malkomal@66-234-41-82.nyc.cable.nyct.net] has quit [Read
error: 110 (Connection timed out)]
21:15 < WalterMundt> iant: much appreciated
21:16 -!- p4p4_ [n=P4p4@24.121.113.82.net.de.o2.com] has quit [Client Quit]
21:17 -!- leitaox [n=leitaox@189.20.94.66] has quit [Client Quit]
21:17 -!- malkomalko [n=malkomal@66-234-41-82.nyc.cable.nyct.net] has joined
#go-nuts
21:19 -!- mitchellh [n=mitchell@D-69-91-143-37.dhcp4.washington.edu] has quit
["Leaving."]
21:20 -!- stevenyvr [n=schan@76-10-184-108.dsl.teksavvy.com] has quit [Read error:
113 (No route to host)]
21:21 -!- carllerche [n=carllerc@enginey-9.border1.sfo002.pnap.net] has joined
#go-nuts
21:21 -!- binaryjohn [n=binaryjo@cpe-24-30-132-50.san.res.rr.com] has quit []
21:22 -!- hd_2 [n=hd_@253.176.233.220.static.exetel.com.au] has quit [Connection
timed out]
21:23 -!- Zanith [n=Zanith@1337.h4ck3rs.pinged.us] has joined #go-nuts
21:27 -!- rhelmer [n=rhelmer@adsl-69-107-65-140.dsl.pltn13.pacbell.net] has joined
#go-nuts
21:28 < Vova> how can i get tcplistener fd?
21:29 < Vova> socket int?
21:31 < WalterMundt> Vova: you can't; net.TCPListener struct's fd member is
unexported
21:32 < dho> man i wish running this under ktrace would give me one of the
panics
21:33 < dho> this is the most frustrating bug i've ever dealt with
21:34 -!- lux` [n=lux@151.54.242.220] has quit [Remote closed the connection]
21:36 < Zanith> Is there any resources other than golang?
21:36 < carllerche> Is cgo the only way to call a C function from Go? I read
on the documentation that it should be possible if the C file was compiled with
6c, but i can't figure out how
21:37 < taruti> Vova: what are you trying to do?
21:37 < taruti> Zanith: http://go-lang.cat-v.org/
21:38 -!- crashR [n=crasher@codextreme.pck.nerim.net] has quit [Read error: 113
(No route to host)]
21:38 < WalterMundt> carllerche: check out $GOROOT/src/pkg/runtime
21:39 < Vova> taruti: sockets using epoll
21:39 < WalterMundt> a good chunk of that is implemented in C/compiled by
6c/8c, and linked in directly
21:39 < carllerche> WalterMundt: I've browsed through it, but I'm having a
hard time figuring out exactly how it's being called.  I'll look more closely
though, thanks for the tip
21:40 -!- sliceofpi1 [n=Adium@c-98-194-205-176.hsd1.tx.comcast.net] has joined
#go-nuts
21:41 < WalterMundt> Vova: I may be wrong, but I think you'll either have to
hack the net package to make the data public or add an accessor, use unsafe.* to
extract it by pointer magic, or dupe the functionality in
net/sock.go/ipsock.go/tcpsock.go by making the syscall to socket() yourself
21:41 -!- perdiy [n=perdix@sxemacs/devel/perdix] has joined #go-nuts
21:42 < Vova> O_o
21:42 < dho> i'm officially unable to figure this out
21:42 < dho> unlocking unlocked lock is not possible.
21:42 < carllerche> WalterMundt: yeah, it seems that stuff in the runtime
package still go through cgo
21:42 < dho> i caught it in the act in ktrace and all the locking is
balanced.
21:42 < WalterMundt> oh, my mistake
21:43 <+iant> dho: memory corruption of the lock word?
21:43 < carllerche> i'm just not a fan of writing C in Go comments :P
21:43 < dho> iant: all the addresses look ok, and i can reproduce this on
other systems
21:43 < dho> (just freebsd)
21:43 * dho wonders what would trample on lock->key
21:44 -!- sliceofpi [n=Adium@c-98-194-205-176.hsd1.tx.comcast.net] has quit [Read
error: 104 (Connection reset by peer)]
21:44 < WalterMundt> carllerche: wait a minute...
21:44 <+iant> dho: I suppose valgrind is not going to recreate the bug....
21:44 < WalterMundt> carllerche: there is SOME cgo in runtime
21:44 < dho> iant: ktrace already makes it near impossible
21:45 < dho> iant: i'll see if i can get valgrind running in the first place
21:45 -!- abford [n=abford@unaffiliated/abford] has joined #go-nuts
21:45 < WalterMundt> carllerche: but if you make clean; make in runtime,
you'll see a ton of the files are getting built by 8c
21:45 < carllerche> as far as i can tell, all the functions in *.c files get
called from cgo files
21:45 -!- rhelmer_ [n=rhelmer@adsl-69-107-65-140.dsl.pltn13.pacbell.net] has
joined #go-nuts
21:45 < WalterMundt> ahh; guess you have to do that.  note that there is
less overhead for functions compiled by 6c/8c
21:45 < carllerche> i'll keep looking
21:46 < dho> whaddayaknow, we have a valgrind package these days
21:46 < carllerche> WalterMundt: there is a cgo2c executable in the runtime
directory though
21:46 -!- crashR [n=crasher@codextreme.pck.nerim.net] has joined #go-nuts
21:47 -!- rhelmer [n=rhelmer@adsl-69-107-65-140.dsl.pltn13.pacbell.net] has quit
[Read error: 60 (Operation timed out)]
21:47 < dho> > valgrind --leak-check=full --track-origins=yes ./6.out a b
c d
21:47 < dho> valgrind: mmap(0x400000, 4291047424) failed in UME with error
22 (Invalid argument).
21:47 < dho> valgrind: this can be caused by executables with very large
text, data or bss segments.
21:47 < dho> sweet.
21:47 <+iant> oy
21:47 <+iant> carllerche: the cgo2c program turns X.cgo into X.c
21:47 < taruti> Vova: for which application do you need them?
21:48 < taruti> Vova: using epoll safely is very non-trivial
21:48 < carllerche> iant: is cgo2c not something for public consumption?
21:49 <+iant> carllerche: it's kind of special purpose, but there is nothing
wrong with using it if you want to
21:50 < carllerche> iant: do you know if the weird unicode dot character in
the C method name how Go knows that the function is in a package?
21:50 < carllerche> or is it just arbitrary
21:51 <+iant> carllerche: if you have the function F in the package P, Go
will write out a symbol P·F
21:51 < KirkMcDonald> MIDDLE DOT U+00B7
21:51 <+iant> so if you want to write a function in C which is callable from
Go, you need to use the center dot in the name
21:51 < WalterMundt> thus the cgo2c, so humans don't need to type the
center-dot
21:52 < WalterMundt> right?
21:52 < KirkMcDonald> That reminds me.
21:52 <+iant> well, sort of; the center dot is typed by humans in some
places
21:52 < KirkMcDonald> I wish Go had Python's \N string-escape sequence.
21:52 < KirkMcDonald> That is, "\N{MIDDLE DOT}".
21:52 <+iant> I actually wrote cgo2c in the first place in order to generate
different wrapper code for 6g and gccgo, since gccgo doesn't use the center dot
21:52 < Zanith> Oh, another question, are there any Go IDEs yet?
21:52 < KirkMcDonald> Zanith: There is vim.
21:53 < WalterMundt> I wonder what they'll do when they do go to resolve the
issue with packages in different places with the same name
21:53 <+iant> 6g will rewrite the package names in the linker
21:53 <+iant> gccgo will do something horrible involving GUIDs, I think
21:53 -!- codedread [i=88b6021b@gateway/web/freenode/x-uaisdpexjwcsjifu] has left
#go-nuts []
21:54 < WalterMundt> huh
21:54 <+iant> that more or less sums it up, yes
21:54 < WalterMundt> how will it know whether package foo in .8 file bar is
baz/foo or fron/foo?
21:55 < taruti> Zanith: http://go-lang.cat-v.org/text-editors/
21:55 <+iant> that I don't know
21:55 -!- mmw [n=mmw@2002:51f4:7f90:0:223:6cff:fe84:1914] has joined #go-nuts
21:55 < dho> unless the kernel tromps on it somehow
21:55 < dho> but i don't see any copyout
21:56 < WalterMundt> maybe the compiler can rewrite imported symbols to
include path info
21:56 < WalterMundt> and then we just need to hope that if two files import
the same full import path, they mean the same package
21:57 -!- JSharpe [n=jamie@5adaea8d.bb.sky.com] has quit [Read error: 104
(Connection reset by peer)]
21:57 -!- hooopy [i=hoopy@173-30-98-140.client.mchsi.com] has quit [Read error:
110 (Connection timed out)]
21:58 < carllerche> Go doesn't have header files, so how do I tell it that I
defined a function in a different file?
21:58 < carllerche> do I make it a different package?
21:59 <+iant> carllerche: you can only functions defined in packages which
you import
21:59 <+iant> carllerche: oh, you mean a C function
21:59 <+iant> carllerche: see, e.g., runtime/extern.go
21:59 < carllerche> yeah..  but I named it int32 main·Hello()
21:59 < carllerche> ok
21:59 <+iant> the main package is kind of special, I recommend trying
something else
22:02 -!- rrr [i=rrr@gateway/gpg-tor/key-0x9230E18F] has quit [Remote closed the
connection]
22:02 -!- perdix [n=perdix@sxemacs/devel/perdix] has quit [Read error: 110
(Connection timed out)]
22:03 -!- nigwil [n=chatzill@berkner.ccamlr.org] has joined #go-nuts
22:04 -!- mikedee [n=quassel@91.108.122.173] has quit [Remote closed the
connection]
22:04 -!- mike [n=quassel@91.111.23.128] has joined #go-nuts
22:04 -!- mike [n=quassel@91.111.23.128] has quit [Remote closed the connection]
22:07 -!- mmw [n=mmw@2002:51f4:7f90:0:223:6cff:fe84:1914] has quit []
22:07 -!- mejja [n=user@c-49b6e555.023-82-73746f38.cust.bredbandsbolaget.se] has
joined #go-nuts
22:10 -!- qbit__ [n=qbit_@c-75-71-160-106.hsd1.co.comcast.net] has joined #go-nuts
22:12 -!- qbit_ [n=qbit_@c-75-71-160-106.hsd1.co.comcast.net] has quit [Read
error: 60 (Operation timed out)]
22:15 -!- rrr [i=rrr@gateway/gpg-tor/key-0x9230E18F] has joined #go-nuts
22:15 -!- rovar [i=c7aca911@gateway/web/freenode/x-sfpyqafpqvsswnno] has quit
["Page closed"]
22:15 -!- decriptor [n=decripto@137.65.132.17] has quit ["Ex-Chat"]
22:19 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has quit ["Leaving"]
22:19 -!- Adys [n=Adys@unaffiliated/adys] has joined #go-nuts
22:20 -!- brunov [n=bruno@190.191.110.64] has quit [Read error: 110 (Connection
timed out)]
22:24 -!- path[l]_ [n=path@115.184.38.101] has joined #go-nuts
22:26 -!- amuck_ [n=amuck@h11.78.88.75.dynamic.ip.windstream.net] has joined
#go-nuts
22:32 -!- path[l]__ [n=path@115.184.77.83] has joined #go-nuts
22:33 -!- chachan [n=chachan@ccscliente156.ifxnetworks.net.ve] has quit ["KVIrc
Insomnia 4.0.0, revision: , sources date: 20090520, built on: 2009/06/06 11:44:47
UTC http://www.kvirc.net/"]
22:33 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has joined #go-nuts
22:34 -!- Anders_ [n=Anders@c83-253-2-206.bredband.comhem.se] has quit ["Leaving"]
22:37 -!- lenst` [n=user@81-237-244-185-no52.tbcn.telia.com] has joined #go-nuts
22:39 -!- itrekkie [n=itrekkie@ip72-200-105-72.tc.ph.cox.net] has joined #go-nuts
22:39 -!- afurlan [n=afurlan@scorpion.mps.com.br] has quit ["Leaving"]
22:40 -!- amuck [n=amuck@h158.70.88.75.dynamic.ip.windstream.net] has quit [Read
error: 110 (Connection timed out)]
22:40 -!- LuitvD [n=LuitvD@beigetower/luitvd] has joined #go-nuts
22:41 < LuitvD> this might be a stupid question:
22:41 -!- itrekkie_ [n=itrekkie@ip72-200-105-72.tc.ph.cox.net] has joined #go-nuts
22:41 < LuitvD> what should my Makefile look like to build a cgo project?
22:42 < LuitvD> I presume the Make.cmd file has some handy stuff for that...
22:44 -!- amuck_ [n=amuck@h11.78.88.75.dynamic.ip.windstream.net] has quit
[Connection timed out]
22:48 -!- path[l] [n=path@115.184.103.153] has quit [Read error: 110 (Connection
timed out)]
22:48 -!- entropy_sam [n=sam@cpc3-york2-0-0-cust567.leed.cable.ntl.com] has joined
#go-nuts
22:49 -!- Kniht [n=kniht@c-68-58-17-177.hsd1.in.comcast.net] has joined #go-nuts
22:52 < drhodes> LuitvD: maybe this is worth checking out,
http://github.com/banthar/Go-SDL
22:53 -!- lenst [n=user@81-237-244-185-no52.tbcn.telia.com] has quit [Read error:
110 (Connection timed out)]
22:55 -!- ShadowIce [n=pyoro@unaffiliated/shadowice-x841044] has quit
["Verlassend"]
22:56 < entropy_sam> anyone know of any Go/OpenGL projects?
22:56 -!- path[l]_ [n=path@115.184.38.101] has quit [Read error: 110 (Connection
timed out)]
22:57 -!- itrekkie [n=itrekkie@ip72-200-105-72.tc.ph.cox.net] has quit [Read
error: 110 (Connection timed out)]
22:59 -!- raichoo [n=raichoo@i577ACC04.versanet.de] has quit
["http://raichoo.blogspot.com"]
23:00 -!- lenst`` [n=user@81-237-244-185-no52.tbcn.telia.com] has joined #go-nuts
23:03 < rog> is there a way to run all.bash without the make clean bit?
23:04 < KirkMcDonald> rog: Run make.bash instead?
23:05 -!- Whtiger [n=josh@c-68-60-92-33.hsd1.mi.comcast.net] has quit [Read error:
110 (Connection timed out)]
23:06 < rog> make.bash runs clean.bash
23:06 -!- CaptainLucifel [n=captainl@75.84.196-77.rev.gaoland.net] has quit [Read
error: 113 (No route to host)]
23:07 < rog> unfortunately
23:08 < LuitvD> drhodes: thanks for the link
23:09 * LuitvD made brought his computer close to crashing with Go
23:09 < LuitvD> -made
23:10 < LuitvD> re-enacting the tech demo, only with one million goroutines,
needing 5GB memory
23:16 -!- lenst` [n=user@81-237-244-185-no52.tbcn.telia.com] has quit [Read error:
110 (Connection timed out)]
23:16 -!- Zanith [n=Zanith@1337.h4ck3rs.pinged.us] has quit [Remote closed the
connection]
23:17 -!- brrant [n=John@168-103-78-133.hlrn.qwest.net] has quit ["Leaving"]
23:19 -!- drry [n=drry@unaffiliated/drry] has joined #go-nuts
23:20 -!- Whtiger [n=josh@c-68-60-92-33.hsd1.mi.comcast.net] has joined #go-nuts
23:25 -!- mythz [n=mythz@5ad3feca.bb.sky.com] has joined #go-nuts
23:27 -!- rog [n=rog@78.148.16.235] has quit []
23:31 -!- LuitvD [n=LuitvD@beigetower/luitvd] has quit ["Gone"]
23:33 -!- mitchellh [n=mitchell@c-71-231-140-22.hsd1.wa.comcast.net] has joined
#go-nuts
23:37 < XniX23> entropy_sam: yes banthar was doing go-opengl
23:40 < XniX23> entropy_sam: http://github.com/banthar/Go-OpenGL here it is,
i dont know how good it is though, i used his sdl to write rubic cube game and it
worked but it doesnt have all the funcs
23:44 -!- skyyy [i=caw@129.21.116.238] has joined #go-nuts
23:45 -!- hcatlin [n=hcatlin@host81-154-246-241.range81-154.btcentralplus.com] has
quit []
23:46 -!- rbohn [n=rbohn@192.206.100.4] has quit ["ChatZilla 0.9.85 [Firefox
3.0.15/2009101601]"]
23:46 -!- JSharpe [n=jamie@5adaea8d.bb.sky.com] has joined #go-nuts
23:47 < entropy_sam> XniX23: thanks, I'll take a look
23:52 -!- reubens [n=reubens@c-66-235-53-139.sea.wa.customer.broadstripe.net] has
joined #go-nuts
23:53 -!- reubens [n=reubens@c-66-235-53-139.sea.wa.customer.broadstripe.net] has
quit [Client Quit]
23:56 -!- Rob_Russell [n=chatzill@206-248-157-156.dsl.teksavvy.com] has joined
#go-nuts
--- Log closed Fri Dec 04 00:00:30 2009