brainman | 1 Sep 02:23 2011
Picon

Re: hg code-review Issue

I think, it is

hg import --no-commit saved.diffs

not

hg import --no-commit <saved.diffs

Alex

Ziad Hatahet | 1 Sep 06:26 2011
Picon

Re: hg code-review Issue

Thanks for the feedback. 'hg change' now works, but I am still unable to authenticate when it comes to entering my email and password. Could this have to do something with the two-step verification when singing in to my Google account?


--
Ziad


On Wed, Aug 31, 2011 at 5:23 PM, brainman <alex.brainman-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
I think, it is


hg import --no-commit saved.diffs

not


hg import --no-commit <saved.diffs

Alex

Mike Rosset | 1 Sep 06:47 2011
Picon

Re: hg code-review Issue

On Wed, Aug 31, 2011 at 9:26 PM, Ziad Hatahet <hatahet@...> wrote:
> Thanks for the feedback. 'hg change' now works, but I am still unable to
> authenticate when it comes to entering my email and password. Could this
> have to do something with the two-step verification when singing in to my
> Google account?

Yes, you need to generate an application password, in your google
account settings. Once you log in with the generated password it will
save it to a cookie, and reuse it for future logins.

Mike

Ziad Hatahet | 1 Sep 07:39 2011
Picon

Re: hg code-review Issue

Thanks, that resolved it. :)


--
Ziad


On Wed, Aug 31, 2011 at 9:47 PM, Mike Rosset <mike.rosset-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
On Wed, Aug 31, 2011 at 9:26 PM, Ziad Hatahet <hatahet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Thanks for the feedback. 'hg change' now works, but I am still unable to
> authenticate when it comes to entering my email and password. Could this
> have to do something with the two-step verification when singing in to my
> Google account?

Yes, you need to generate an application password, in your google
account settings. Once you log in with the generated password it will
save it to a cookie, and reuse it for future logins.

Mike

Nigel Tao | 1 Sep 09:31 2011

weekly.2011-09-01

We've just tagged a new Go weekly, weekly.2011-09-01. As usual, you
can update by running:
       hg pull
       hg update weekly

This weekly contains performance improvements and bug fixes.

The gc compiler now does escape analysis, which improves program performance
by placing variables on the call stack instead of the heap when it is safe to
do so.

The container/vector package is deprecated and will be removed at some point
in the future.

Other changes:
* archive/tar: support symlinks. (thanks Mike Rosset)
* big: fix nat.scan bug. (thanks Evan Shaw)
* bufio: handle a "\r\n" that straddles the buffer.
	add openbsd.
	avoid redundant bss declarations.
	fix unused parameters.
	fix windows/amd64 build with newest mingw-w64. (thanks Hector Chu)
* bytes: clarify that NewBuffer is not for beginners.
* cgo: explain how to free something.
	fix GoBytes. (thanks Gustavo Niemeyer)
	fixes callback for windows amd64. (thanks Wei Guangjing)
	note that CString result must be freed. (thanks Gustavo Niemeyer)
* cov: remove tautological #defines. (thanks Lucio De Re)
* dashboard: yet another utf-8 fix.
* doc/codelab/wiki: fix Makefile.
* doc/progs: fix windows/amd64. (thanks Jaroslavas Počepko)
* doc/tmpltohtml: update to new template package.
* doc: emphasize that environment variables are optional.
* effective_go: convert to use tmpltohtml.
* exp/norm: reduced the size of the byte buffer used by reorderBuffer
by half by reusing space when combining.
	a few minor fixes to support the implementation of norm.
	added implementation for []byte versions of methods.
* exp/template/html: add some tests for ">" attributes.
	added handling for URL attributes.
	differentiate URL-valued attributes (such as href).
	reworked escapeText to recognize attr boundaries.
* exp/template: moved from exp to the main tree.
* exp/wingui: made compatible with windows/amd64. (thanks Jaroslavas Počepko)
* flag: add Parsed, restore Usage.
* gc: add openbsd.
	escape analysis.
	fix build on Plan 9. (thanks Lucio De Re)
	fix div bug.
	fix pc/line table. (thanks Julian Phillips)
	fix some spurious leaks.
	make static initialization more static.
	remove JCXZ; add JCXZW, JCXZL, and JCXZQ instructions. (thanks
Jaroslavas Počepko)
	shuffle #includes.
	simplify escape analysis recursion.
	tweak and enable escape analysis.
* go/ast cleanup: base File/PackageExports on FilterFile/FilterPackage code.
	adjustments to filter function.
	fix ast.MergePackageFiles to collect infos about imports. (thanks
Sebastien Binet)
	generalize ast.FilterFile.
* go/build: add test support & use in gotest.
	separate test imports out when scanning. (thanks Gustavo Niemeyer)
* go/parser: fix type switch scoping.
	fix type switch scoping.
* gob: explain that Debug isn't useful unless it's compiled in.
* gobuilder: increase log limit.
* godashboard: fix utf-8 in user names.
* godoc: first step towards reducing index size.
	add dummy playground.js to silence godoc warning at start-up.
	added systematic throttling to indexing goroutine.
	fix bug in zip.go.
	support for reading/writing (splitted) index files.
	use virtual file system when generating package synopses.
* gofix: forgot to rename the URL type.
	osopen: fixed=true when changing O_CREAT. (thanks Tarmigan Casebolt)
* goinstall: error out with paths that end with '/'. (thanks Tarmigan Casebolt)
	report lack of $GOPATH on errors. (thanks Gustavo Niemeyer)
	select the tag that is closest to runtime.Version.
* gotry: add missing $. (thanks Tarmigan Casebolt)
* http: add MaxBytesReader to limit request body size.
	add file protocol transport.
	adjust test threshold for larger suse buffers.
	delete error kludge.
	on invalid request, send 400 response.
	return 413 instead of 400 when the request body is too large. (thanks
Dave Cheney)
	support setting Transport's TLS client config.
* image/tiff: add a decode benchmark. (thanks Benny Siegert)
	decoder optimization. (thanks Benny Siegert)
* image: add PalettedImage interface, and make image/png recognize it.
(thanks Jaroslavas Počepko)
* io: add TeeReader. (thanks Hector Chu)
* json: add struct tag option to wrap literals in strings.
	calculate Offset for Indent correctly. (thanks Jeff Hodges)
	fix decode bug with struct tag names with ,opts being ignored.
* ld: handle Plan 9 ar format. (thanks Lucio De Re)
	remove duplicate bss definitions.
* libmach: support reading symbols from Windows .exe for nm. (thanks
Mateusz Czapliński)
* math: fix Pow10 loop. (thanks Volker Dobler)
* mime: ParseMediaType returns os.Error now, not a nil map.
	media type formatter. (thanks Pascal S. de Kloe)
	text charset defaults. (thanks Pascal S. de Kloe)
* misc/dashboard: remove limit for json package list.
* misc/emacs: refine label detection.
* net: add ParseMAC function. (thanks Paul Borman)
	change the internal form of IPMask for IPv4. (thanks Mikio Hara)
	disable "tcp" test on openbsd.
	fix windows build. (thanks Alex Brainman)
	join and leave a IPv6 group address, on a specific interface. (thanks
Mikio Hara)
	make use of IPv4len, IPv6len. (thanks Mikio Hara)
	move internal string manipulation routines to parse.go. (thanks Mikio Hara)
* os: disable Hostname test on OpenBSD.
	fix WNOHANG Waitmsg. (thanks Gustavo Niemeyer)
* reflect: add Value.Bytes, Value.SetBytes methods.
* rpc: add benchmark for async rpc calls.
* runtime: add openbsd 386 defs.h.
	add runtime support for openbsd 386.
	add runtime· prefix to showframe.
	ctrlhandler for windows amd64. (thanks Wei Guangjing)
	fix stack cleanup on windows/amd64. (thanks Hector Chu)
	fix void warnings.
	go interface to cdecl calbacks. (thanks Jaroslavas Počepko)
	handle string + char literals in goc2c.
	make arm work on Ubuntu Natty qemu.
	openbsd thread tweaks.
	simplify stack traces.
	speed up cgo calls. (thanks Alex Brainman)
	use cgo runtime functions to call windows syscalls. (thanks Alex Brainman)
	windows/amd64 callbacks fixed and syscall fixed to allow using it in
callbacks. (thanks Jaroslavas Počepko)
* strconv: put decimal on stack.
* spec: update section on Implementation Differences.
* syscall: SOMAXCONN should be 0x7fffffff at winsock2. (thanks
Yasuhiro Matsumoto)
	add openbsd 386.
	handle RTM_NEWROUTE in ParseNetlinkRouteAttr on Linux. (thanks Albert
Strasheim)
	handle routing entry in ParseRoutingSockaddr on BSD variants. (thanks
Mikio Hara)
	openbsd amd64 syscall support.
	use the vdso page on linux x86 for faster syscalls instead of int
$0x80. (thanks Yuval Pavel Zholkover)
* template/parse: give if, range, and with a common representation.
* template: grammar fix for template documentation. (thanks Bill Neubauer)
	range over channel.
	remove else and end nodes from public view.
* test: put GOROOT/bin before all others in run.
* time: fix Plan 9 build. (thanks Fazlul Shahriar)
	fix zone during windows test.
* type switches: test for pathological case.
* version.bash: update VERSION on -save if already present. (thanks
Gustavo Niemeyer)
* websocket: implements new version of WebSocket protocol. (thanks
Fumitoshi Ukai)
* windows/386: clean stack after syscall. (thanks Jaroslavas Počepko)
* xml: marshal "parent>child" tags correctly. (thanks Ross Light)

Apologies if we missed anyone in the list above. We appreciate all your help.

To see a full list of changes between this and the previous weekly,
after updating, run:
       hg log -r weekly.2011-08-17:weekly.2011-09-01

Strewth,
Nigel.

josvazg | 1 Sep 10:06 2011
Picon

Backporting some go concepts...

As much as I like go, I am forced to keep on coding in Java mostly at
work.

Before meeting go(lang) I was quite happy, or most appropriate,
resigned with general Java programming and its concurrency model in
particular. But now that go(lang) showed me a better way, I can't
really go back to the old ways of doing things.

Go(lang) "disturbed" me! ;-)

In the past I usually struggled to get threads right, avoiding race
conditions, or decided to avoid threads sometimes and use asynchronous
io (nio mostly) to handle everything on a single thread.

Now I can't think of losing my time anymore with any of those
approaches directly.

For the time being I have a really simple (in a "works for me" state)
implementation of "channels" in Java. It basically synchronizes a
value or a buffer and wait/notify send and recvs. This allows me to
communicate results and requests between threads instead of sharing
memory between them. I still need sometimes to share some (concurrent)
maps or arrays between threads but, for the rest, all is shared by
communicating.

I am quite happy with that part at the moment.

The problem is the Java Threads to Goroutines mapping. I have a
trivial implementation that is a pool of threads, this saves thread
creation time, but I think it can be dangerous on the long term...

Once you go the 'go' way you start to create "zillions" of small
goroutines that, in my approach will take a full heavy Java Thread and
all associated resources (I can't think of a way of making a thread
"run" different goroutines or passing a running gorutine to another
thread, etc)

Any thoughts on this?

I am thinking that maybe I could just keep the channels like they are
and take a kind of NodeJs approach to 'tasks' in Java so that I will
not generate a Thread overkill with this new style of programming
concurrently.

I will basically create a wrapper to avoid (and hide) that cumbersome
and repetitive nio code. Instead of firing up heavy pseudo-goroutines
on threads I could launch service or event handlers on Channels and
Sockets. Something like this:

EventHandler eh=new EventHandler();
eh.onRecv(SocketS_or_ChanC,new Handler() {
 handle(Source src, Message data) {
   ...
 }
}
// also .onAccept .onClose .onAny etc
// eh.goHandle(new Handler()...) FOR spawning tasks

With this approach I avoid spawning too many heavy Java threads,
handlers are a kind of goroutines but without loops (one event or
message is handled at a time). I can still spawn tasks on a thread
pool when they fit the "do some work then send a result back (or not)"
pattern, but I think I've reduced my thread population quite a bit
with this. I can also keep passing channels around to handlers send
message to other handlers or create new handlers, etc.

(Of course, under the hood it is just the same old mixed approach of
threads and nio, but hidden from my day-today coding, avoiding
rewriting my design every time, error prone coding or "touching" any
ugly nio code again)

What do you think about all this?

Sammi Song | 1 Sep 10:07 2011
Picon

Re: weekly.2011-09-01

test runtime/pprof
TEST FAIL runtime/pprof
make[1]: Entering directory `/home/yunhuine/go/src/pkg/runtime/pprof'
gotest -test.short -test.timeout=120
rm -f _test/runtime/pprof.a
8g  -o _gotest_.8 pprof.go  
rm -f _test/runtime/pprof.a
gopack grc _test/runtime/pprof.a _gotest_.8 
--- FAIL: pprof_test.TestCPUProfile (0.46 seconds)
profile too short: [0x0 0x3 0x0 0x2710 0x0]
FAIL
gotest: "./8.out -test.short=true -test.timeout=120" failed: exit status 1
make[1]: *** [testshort] Error 2
make[1]: Leaving directory `/home/yunhuine/go/src/pkg/runtime/pprof'
make: *** [runtime/pprof.testshort] Error 1

Sammi

On Thu, Sep 1, 2011 at 12:31 AM, Nigel Tao <nigeltao-iFWiy5xATs8dnm+yROfE0A@public.gmane.org> wrote:
We've just tagged a new Go weekly, weekly.2011-09-01. As usual, you
can update by running:
      hg pull
      hg update weekly

This weekly contains performance improvements and bug fixes.

The gc compiler now does escape analysis, which improves program performance
by placing variables on the call stack instead of the heap when it is safe to
do so.

The container/vector package is deprecated and will be removed at some point
in the future.

Other changes:
* archive/tar: support symlinks. (thanks Mike Rosset)
* big: fix nat.scan bug. (thanks Evan Shaw)
* bufio: handle a "\r\n" that straddles the buffer.
       add openbsd.
       avoid redundant bss declarations.
       fix unused parameters.
       fix windows/amd64 build with newest mingw-w64. (thanks Hector Chu)
* bytes: clarify that NewBuffer is not for beginners.
* cgo: explain how to free something.
       fix GoBytes. (thanks Gustavo Niemeyer)
       fixes callback for windows amd64. (thanks Wei Guangjing)
       note that CString result must be freed. (thanks Gustavo Niemeyer)
* cov: remove tautological #defines. (thanks Lucio De Re)
* dashboard: yet another utf-8 fix.
* doc/codelab/wiki: fix Makefile.
* doc/progs: fix windows/amd64. (thanks Jaroslavas Počepko)
* doc/tmpltohtml: update to new template package.
* doc: emphasize that environment variables are optional.
* effective_go: convert to use tmpltohtml.
* exp/norm: reduced the size of the byte buffer used by reorderBuffer
by half by reusing space when combining.
       a few minor fixes to support the implementation of norm.
       added implementation for []byte versions of methods.
* exp/template/html: add some tests for ">" attributes.
       added handling for URL attributes.
       differentiate URL-valued attributes (such as href).
       reworked escapeText to recognize attr boundaries.
* exp/template: moved from exp to the main tree.
* exp/wingui: made compatible with windows/amd64. (thanks Jaroslavas Počepko)
* flag: add Parsed, restore Usage.
* gc: add openbsd.
       escape analysis.
       fix build on Plan 9. (thanks Lucio De Re)
       fix div bug.
       fix pc/line table. (thanks Julian Phillips)
       fix some spurious leaks.
       make static initialization more static.
       remove JCXZ; add JCXZW, JCXZL, and JCXZQ instructions. (thanks
Jaroslavas Počepko)
       shuffle #includes.
       simplify escape analysis recursion.
       tweak and enable escape analysis.
* go/ast cleanup: base File/PackageExports on FilterFile/FilterPackage code.
       adjustments to filter function.
       fix ast.MergePackageFiles to collect infos about imports. (thanks
Sebastien Binet)
       generalize ast.FilterFile.
* go/build: add test support & use in gotest.
       separate test imports out when scanning. (thanks Gustavo Niemeyer)
* go/parser: fix type switch scoping.
       fix type switch scoping.
* gob: explain that Debug isn't useful unless it's compiled in.
* gobuilder: increase log limit.
* godashboard: fix utf-8 in user names.
* godoc: first step towards reducing index size.
       add dummy playground.js to silence godoc warning at start-up.
       added systematic throttling to indexing goroutine.
       fix bug in zip.go.
       support for reading/writing (splitted) index files.
       use virtual file system when generating package synopses.
* gofix: forgot to rename the URL type.
       osopen: fixed=true when changing O_CREAT. (thanks Tarmigan Casebolt)
* goinstall: error out with paths that end with '/'. (thanks Tarmigan Casebolt)
       report lack of $GOPATH on errors. (thanks Gustavo Niemeyer)
       select the tag that is closest to runtime.Version.
* gotry: add missing $. (thanks Tarmigan Casebolt)
* http: add MaxBytesReader to limit request body size.
       add file protocol transport.
       adjust test threshold for larger suse buffers.
       delete error kludge.
       on invalid request, send 400 response.
       return 413 instead of 400 when the request body is too large. (thanks
Dave Cheney)
       support setting Transport's TLS client config.
* image/tiff: add a decode benchmark. (thanks Benny Siegert)
       decoder optimization. (thanks Benny Siegert)
* image: add PalettedImage interface, and make image/png recognize it.
(thanks Jaroslavas Počepko)
* io: add TeeReader. (thanks Hector Chu)
* json: add struct tag option to wrap literals in strings.
       calculate Offset for Indent correctly. (thanks Jeff Hodges)
       fix decode bug with struct tag names with ,opts being ignored.
* ld: handle Plan 9 ar format. (thanks Lucio De Re)
       remove duplicate bss definitions.
* libmach: support reading symbols from Windows .exe for nm. (thanks
Mateusz Czapliński)
* math: fix Pow10 loop. (thanks Volker Dobler)
* mime: ParseMediaType returns os.Error now, not a nil map.
       media type formatter. (thanks Pascal S. de Kloe)
       text charset defaults. (thanks Pascal S. de Kloe)
* misc/dashboard: remove limit for json package list.
* misc/emacs: refine label detection.
* net: add ParseMAC function. (thanks Paul Borman)
       change the internal form of IPMask for IPv4. (thanks Mikio Hara)
       disable "tcp" test on openbsd.
       fix windows build. (thanks Alex Brainman)
       join and leave a IPv6 group address, on a specific interface. (thanks
Mikio Hara)
       make use of IPv4len, IPv6len. (thanks Mikio Hara)
       move internal string manipulation routines to parse.go. (thanks Mikio Hara)
* os: disable Hostname test on OpenBSD.
       fix WNOHANG Waitmsg. (thanks Gustavo Niemeyer)
* reflect: add Value.Bytes, Value.SetBytes methods.
* rpc: add benchmark for async rpc calls.
* runtime: add openbsd 386 defs.h.
       add runtime support for openbsd 386.
       add runtime· prefix to showframe.
       ctrlhandler for windows amd64. (thanks Wei Guangjing)
       fix stack cleanup on windows/amd64. (thanks Hector Chu)
       fix void warnings.
       go interface to cdecl calbacks. (thanks Jaroslavas Počepko)
       handle string + char literals in goc2c.
       make arm work on Ubuntu Natty qemu.
       openbsd thread tweaks.
       simplify stack traces.
       speed up cgo calls. (thanks Alex Brainman)
       use cgo runtime functions to call windows syscalls. (thanks Alex Brainman)
       windows/amd64 callbacks fixed and syscall fixed to allow using it in
callbacks. (thanks Jaroslavas Počepko)
* strconv: put decimal on stack.
* spec: update section on Implementation Differences.
* syscall: SOMAXCONN should be 0x7fffffff at winsock2. (thanks
Yasuhiro Matsumoto)
       add openbsd 386.
       handle RTM_NEWROUTE in ParseNetlinkRouteAttr on Linux. (thanks Albert
Strasheim)
       handle routing entry in ParseRoutingSockaddr on BSD variants. (thanks
Mikio Hara)
       openbsd amd64 syscall support.
       use the vdso page on linux x86 for faster syscalls instead of int
$0x80. (thanks Yuval Pavel Zholkover)
* template/parse: give if, range, and with a common representation.
* template: grammar fix for template documentation. (thanks Bill Neubauer)
       range over channel.
       remove else and end nodes from public view.
* test: put GOROOT/bin before all others in run.
* time: fix Plan 9 build. (thanks Fazlul Shahriar)
       fix zone during windows test.
* type switches: test for pathological case.
* version.bash: update VERSION on -save if already present. (thanks
Gustavo Niemeyer)
* websocket: implements new version of WebSocket protocol. (thanks
Fumitoshi Ukai)
* windows/386: clean stack after syscall. (thanks Jaroslavas Počepko)
* xml: marshal "parent>child" tags correctly. (thanks Ross Light)

Apologies if we missed anyone in the list above. We appreciate all your help.

To see a full list of changes between this and the previous weekly,
after updating, run:
      hg log -r weekly.2011-08-17:weekly.2011-09-01

Strewth,
Nigel.

josvazg | 1 Sep 10:11 2011
Picon

Re: Backporting some go concepts...

I am also interested in knowing about how golang changed your Java
coding habits, particulary on concurrency.
Or did it not?

Paulo Pinto | 1 Sep 10:30 2011
Picon

Re: Backporting some go concepts...

Hi,

from you email you don't seem to be that knowledgeable about
concurrency
in Java.

Are you aware of Java concurrency in practice?
http://jcip.net/

You seem to have reimplemented part of java.util.concurrent.

Plus there are quite a few nice frameworks like Akka, http://akka.io/.

Still nice to know that Go knowledge has improved your skills

--
Paulo

On Sep 1, 10:06 am, josvazg <josv...@...> wrote:
> As much as I like go, I am forced to keep on coding in Java mostly at
> work.
>
> Before meeting go(lang) I was quite happy, or most appropriate,
> resigned with general Java programming and its concurrency model in
> particular. But now that go(lang) showed me a better way, I can't
> really go back to the old ways of doing things.
>
> Go(lang) "disturbed" me! ;-)
>
> In the past I usually struggled to get threads right, avoiding race
> conditions, or decided to avoid threads sometimes and use asynchronous
> io (nio mostly) to handle everything on a single thread.
>
> Now I can't think of losing my time anymore with any of those
> approaches directly.
>
> For the time being I have a really simple (in a "works for me" state)
> implementation of "channels" in Java. It basically synchronizes a
> value or a buffer and wait/notify send and recvs. This allows me to
> communicate results and requests between threads instead of sharing
> memory between them. I still need sometimes to share some (concurrent)
> maps or arrays between threads but, for the rest, all is shared by
> communicating.
>
> I am quite happy with that part at the moment.
>
> The problem is the Java Threads to Goroutines mapping. I have a
> trivial implementation that is a pool of threads, this saves thread
> creation time, but I think it can be dangerous on the long term...
>
> Once you go the 'go' way you start to create "zillions" of small
> goroutines that, in my approach will take a full heavy Java Thread and
> all associated resources (I can't think of a way of making a thread
> "run" different goroutines or passing a running gorutine to another
> thread, etc)
>
> Any thoughts on this?
>
> I am thinking that maybe I could just keep the channels like they are
> and take a kind of NodeJs approach to 'tasks' in Java so that I will
> not generate a Thread overkill with this new style of programming
> concurrently.
>
> I will basically create a wrapper to avoid (and hide) that cumbersome
> and repetitive nio code. Instead of firing up heavy pseudo-goroutines
> on threads I could launch service or event handlers on Channels and
> Sockets. Something like this:
>
> EventHandler eh=new EventHandler();
> eh.onRecv(SocketS_or_ChanC,new Handler() {
>  handle(Source src, Message data) {
>    ...
>  }}
>
> // also .onAccept .onClose .onAny etc
> // eh.goHandle(new Handler()...) FOR spawning tasks
>
> With this approach I avoid spawning too many heavy Java threads,
> handlers are a kind of goroutines but without loops (one event or
> message is handled at a time). I can still spawn tasks on a thread
> pool when they fit the "do some work then send a result back (or not)"
> pattern, but I think I've reduced my thread population quite a bit
> with this. I can also keep passing channels around to handlers send
> message to other handlers or create new handlers, etc.
>
> (Of course, under the hood it is just the same old mixed approach of
> threads and nio, but hidden from my day-today coding, avoiding
> rewriting my design every time, error prone coding or "touching" any
> ugly nio code again)
>
> What do you think about all this?

josvazg | 1 Sep 11:13 2011
Picon

Re: Backporting some go concepts...

Thanks,

I am aware of the java.util.concurrency package, but I just don't like
it. It uses to many different objects and abstractions with ugly APIs
(mostly cause the implement legacy interfaces). Concurrent maps and
sets cool, but the rest looks a like a bit of a mess.

I would like to use something as simple as Go, just two abstractions
Goroutines and channels, that make you life easier with concurrency,
provided you follow some simple rules (basically you just share
channel messages and almost nothing else). Not only writting
concurrent is simpler, but you can rest assure you are not waiting
system resources as your concurrent code runs on cheap abstractions
(goroutines).

Akka seems the Actor concurrency pattern (from Erlang and also used in
Scala) backported to Java. This is fine, maybe I just need to 'go' for
that.

But still it seems more unflexible and complex than the golang
solution.
Can't I 'go' more Go-ish on Java concurrency?


Gmane