[Ndn-interest] Questions about ndn porting to golang

Tai-Lin Chu tailinchu at gmail.com
Wed Feb 22 22:31:16 PST 2017

I am the maintainer of go-ndn. I agree with Alex that ndn-cxx does not
work well with go runtime. The main problems are thread-safety and
memory management.

For the programming model, I don't think it is entirely incompatible;
this is a problem of designing an interface. I think (correct me if I
am wrong) that all supported ndn libraries are designed to be async
because the programming language cannot efficiently map async nature
of networking to higher level abstraction. go encourages writing
blocking code, which can be easily made async later with goroutine. If
you look into go-ndn/ndn, lowest-level is still async, but higher
level abstraction (go-ndn/mux) is synchronous, and handles one
interest in a goroutine like go http library.

go-ndn/ndn library is still maintained (we are going to release go-ndn
1.8 next week or so), and the api is more or less stable. I tried to
keep this core library minimal, and the newer works are some higher
level libraries that use it, like go-ndn/raft and go-ndn/mux. We and
some other companies/organizations have been running this for a while
now, so it should be good if you are trying to prototype some NDN
applications in go for your hackathon. Ping me if you need to know
more about mux and go-ndn/raft.

If you are interested in go-ndn performance, you can also benchmark
it, and hope you will find it quite "optimized" :)


On Wed, Feb 22, 2017 at 8:02 PM, Lei Pi (lpi) <lpi at memphis.edu> wrote:
> Hi everyone,
> While thinking about proposals for the coming NDN Hackathon, I’m curious
> about the possibilities to write NDN applications in golang.
> There is a go-ndn project on github [1], which seems to be re-implementing
> ndn in golang. But it is not officially supported or maintained.
> Another option for using ndn in golang is to link the binary with the
> libndncxx / libndncpp library. [2][3][4]
> Does anyone already have experience in using SWIG to link golang programs
> with libndncxx or libndncpp?
> [1] https://github.com/go-ndn/ndn
> [2] https://golang.org/doc/faq#Do_Go_programs_link_with_Cpp_programs
> [3] https://golang.org/cmd/cgo/
> [4] http://www.swig.org/Doc3.0/Go.html
> Thank you.
> ----
> Regards,
> Lei Pi
> University of Memphis
> Masters Student in Computer Science
> _______________________________________________
> Ndn-interest mailing list
> Ndn-interest at lists.cs.ucla.edu
> http://www.lists.cs.ucla.edu/mailman/listinfo/ndn-interest

More information about the Ndn-interest mailing list