A Go kernel for Jupyter notebooks that compiles each cell for fast execution and full Go compatibility.
GoNB is a Jupyter notebook kernel that allows developers to write and execute Go code interactively in notebook cells. It compiles each cell using the standard Go compiler, providing fast execution and full compatibility with Go projects, including those using CGO. It solves the problem of using Go for data exploration, teaching, and prototyping within the popular Jupyter ecosystem.
Go developers, data scientists, educators, and researchers who want to use Go for interactive computing, data analysis, and creating reproducible reports in Jupyter notebooks.
Developers choose GoNB because it offers a fully-featured Go environment within Jupyter, with faster execution than interpreted kernels, support for the entire Go toolchain, and rich features like auto-complete, debugging, and advanced visualization integrations.
GoNB, a Go Notebook Kernel for Jupyter
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses the standard Go compiler with support for go.mod, go.work, and arbitrary flags, ensuring 100% compatibility with existing Go projects, including CGO.
Integrates Plotly and Apache ECharts for advanced, interactive charts, as shown in the tutorial examples, enabling professional data visualization directly in notebooks.
Integrates gdlv, a GUI for the Delve debugger, allowing developers to set breakpoints and inspect variables interactively within notebook cells via %help commands.
Powered by gopls, it provides intelligent code completion and contextual help, enhancing the coding experience similar to IDEs, as demonstrated in the demo screenshot.
The project is self-described as experimental, meaning it may have breaking changes, lack stability, and not be suitable for critical production workloads.
Pure Windows installation is unsupported; users must rely on WSL or Docker, adding complexity and limiting accessibility for Windows-native environments.
Each cell is compiled before execution, introducing a slight startup delay compared to interpreted kernels, which can affect the perceived interactivity for rapid prototyping.