# gopherdata/gophernotes

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/gopherdata-gophernotes).**

3,965 stars · 265 forks · Go · MIT

## Links

- GitHub: https://github.com/gopherdata/gophernotes
- awesome-repositories: https://awesome-repositories.com/repository/gopherdata-gophernotes.md

## Topics

`artificial-intelligence` `data-science` `go` `golang` `gophernotes` `jupyter` `jupyter-notebook` `kernel` `machine-learning` `nteract` `numerical-methods` `zeromq`

## Description

Gophernotes is a backend implementation of the Jupyter kernel protocol and an interactive runtime that enables the execution of Go language code within notebook environments. It serves as a Go language execution engine, allowing users to integrate Go into polyglot notebooks such as Jupyter and nteract.

The project supports the creation of documents that combine executable source code with rich media. It maps internal data types to various formats, including HTML, JSON, LaTeX, PDF, and images, to provide visual representations of execution results.

The system covers a range of capabilities including the execution of system shell commands, management of notebook execution contexts, and the linking of third-party packages across different operating systems.

## Tags

### Programming Languages & Runtimes

- [Notebook Code Execution](https://awesome-repositories.com/f/programming-languages-runtimes/multi-language-script-execution/notebook-code-execution.md) — Provides the ability to execute Go source code within notebook cells and return immediate results to the user. ([source](https://github.com/gopherdata/gophernotes/blob/master/kernel_test.go))
- [Ephemeral Source Generation](https://awesome-repositories.com/f/programming-languages-runtimes/ephemeral-source-generation.md) — Writes cell contents to temporary Go files on disk for compilation and execution by the native toolchain.
- [Interactive Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/interactive-go-shells/interactive-runtimes.md) — Provides an environment for executing Go source code in cells to produce live outputs and rich media visualizations.
- [Notebook Kernels](https://awesome-repositories.com/f/programming-languages-runtimes/notebook-kernels.md) — Implements the Jupyter kernel protocol to process and return Go language execution results.
- [Source-to-Binary Compilation Toolchains](https://awesome-repositories.com/f/programming-languages-runtimes/source-to-binary-compilation-toolchains.md) — Integrates with the installed Go compiler and linker to transform source code into executable binaries at runtime.
- [Interactive Development](https://awesome-repositories.com/f/programming-languages-runtimes/go-development-workflows/interactive-development.md) — Supports a development workflow where Go code is written and tested in small chunks with immediate feedback.

### Development Tools & Productivity

- [Jupyter Language Kernels](https://awesome-repositories.com/f/development-tools-productivity/jupyter-language-kernels.md) — Acts as a Go language execution engine that allows users to run Go code and shell commands within Jupyter notebooks.
- [Jupyter Notebook Integrations](https://awesome-repositories.com/f/development-tools-productivity/jupyter-notebook-integrations.md) — Integrates the Go language into Jupyter and nteract environments to create documents with live code.

### Networking & Communication

- [Internal Messaging Protocols](https://awesome-repositories.com/f/networking-communication/internal-messaging-protocols.md) — Implements a socket-based request-response protocol using ZeroMQ for communication between the kernel and notebook frontend.
- [JSON Message Exchanges](https://awesome-repositories.com/f/networking-communication/message-passing/json-message-exchanges.md) — Uses a structured JSON schema to exchange execution requests and rich media results between the kernel and frontend.

### Part of an Awesome List

- [Polyglot Notebooks](https://awesome-repositories.com/f/awesome-lists/devtools/interactive-notebooks/polyglot-notebooks.md) — Enables a polyglot workflow by adding Go as a compatible execution kernel within a single notebook interface.
- [Interactive Execution](https://awesome-repositories.com/f/awesome-lists/devtools/interactive-execution.md) — Jupyter Notebook kernel for Go.

### Data & Databases

- [Interactive Data Exploration](https://awesome-repositories.com/f/data-databases/big-data-processing/visual-data-explorers/interactive-data-exploration.md) — Allows processing data in notebook cells and rendering results as HTML or JSON for easier analysis.
- [Output Format Rendering](https://awesome-repositories.com/f/data-databases/data-serialization-formats/data-formats/output-format-rendering.md) — Renders analysis results and code output into multiple formats including HTML and JSON for display in notebook cells. ([source](https://github.com/gopherdata/gophernotes/blob/master/display.go))

### Education & Learning Resources

- [Literate Programming Tools](https://awesome-repositories.com/f/education-learning-resources/literate-programming-tools.md) — Combines executable Go source code with formatted text and images to create technical documentation and tutorials.

### Graphics & Multimedia

- [MIME Type Mappings](https://awesome-repositories.com/f/graphics-multimedia/rich-media-integration/mime-type-mappings.md) — Maps internal Go data types to supported media formats like LaTeX, PDF, and HTML for rich rendering. ([source](https://github.com/gopherdata/gophernotes/blob/master/x_package.go))

### User Interface & Experience

- [Image Rendering](https://awesome-repositories.com/f/user-interface-experience/image-rendering.md) — Converts image data into standard formats with metadata for visual display within a notebook cell. ([source](https://github.com/gopherdata/gophernotes/blob/master/image.go))

### Web Development

- [MIME Type Renderers](https://awesome-repositories.com/f/web-development/plugin-content-rendering/mime-type-renderers.md) — Maps Go data structures to specific MIME types like HTML or JSON for specialized rendering in the notebook UI.
