2026-08-12 –, Room 2
We’ll explore the interoperability of the Go programming language and Julia, from the angle of filling Julia’s capability gaps in Julia’s web and networking stacks by calling out to Go. The talk is based on the experience of leveraging Go’s gRPC client library within a Julia-based web server, and will focus on the nuances of the interoperability of the languages (e.g. how to pass data between the languages, handling Go’s asynchronous programming features, garbage collector).
Go is a statically typed, compiled programming language, widely used for web backend development, microservices, and highly concurrent applications. It has a very mature and robust support for networking, HTTP servers, and related technologies, both as part of the standard library and in the broader Go package ecosystem. Julia, on the other hand, often has limited or lacking support in these areas.
In this talk, I explore a recent project where we filled a Julia capability gap — the lack of support for gRPC — by leveraging Go. Via the Julia-C interop and Go’s cgo C interoperability, we can link a Julia process to a Go shared library and use ccalls to offload the complicated bits to the robust and battle tested Go implementation of gRPC, while keeping the business logic in Julia. Go’s runtime introspection also allowed us to keep the glue code quite simple and generic, without resorting to any form of code generation.
The talk will focus on the challenges and lessons from the Go-Julia interoperability, such as how to manage types, Go’s garbage collector & asynchronous programming capabilities, and potential pitfalls.
Morten is a physicist & software engineer based in Tallinn, Estonia. He's one of the maintainers Documenter.jl and the JuliaDocs package ecosystem, and works as a software engineer at JuliaHub.
GitHub: @mortenpi