# traefik/yaegi

**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/traefik-yaegi).**

8,311 stars · 414 forks · Go · Apache-2.0

## Links

- GitHub: https://github.com/traefik/yaegi
- Homepage: https://pkg.go.dev/github.com/traefik/yaegi
- awesome-repositories: https://awesome-repositories.com/repository/traefik-yaegi.md

## Topics

`go` `golang` `interpreter`

## Description

Yaegi is a Go language interpreter and embedded scripting engine that executes Go source code at runtime without requiring a separate compilation step. It provides a mechanism for evaluating Go expressions and files dynamically, functioning as both a library for compiled applications and a standalone read-eval-print-loop environment.

The project enables the integration of dynamic Go scripts into compiled programs to allow for runtime extensibility and plugin development. It facilitates the conversion of interpreted symbols from evaluated scripts into usable interfaces and types within a compiled program.

The system covers dynamic code evaluation, package loading, and interactive prototyping through a command-line shell. These capabilities allow for the execution of Go source code and the management of symbol tables and type resolution during runtime.

## Tags

### Programming Languages & Runtimes

- [Dynamic Go Execution](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-go-execution.md) — Allows running Go source code at runtime without needing a full compilation cycle for every change.
- [Runtime Symbol Resolution](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/linkers/runtime-symbol-resolution.md) — Implements mechanisms for resolving external symbols across compiled and interpreted modules at runtime.
- [Embedded Scripting Engines](https://awesome-repositories.com/f/programming-languages-runtimes/embedded-scripting-engines.md) — Integrates a Go interpreter into host applications to allow dynamic logic and data exchange.
- [Interface Value Wrapping](https://awesome-repositories.com/f/programming-languages-runtimes/interface-value-wrapping.md) — Wraps interpreted values in Go interfaces to allow seamless data exchange with compiled code.
- [Language Interpreters](https://awesome-repositories.com/f/programming-languages-runtimes/language-interpreters.md) — Implements an interpreter that executes Go source code by simulating the target environment.
- [Live Code Evaluation](https://awesome-repositories.com/f/programming-languages-runtimes/live-code-evaluation.md) — Provides the capability to execute Go source code at runtime without restarting the application. ([source](https://cdn.jsdelivr.net/gh/traefik/yaegi@master/README.md))
- [Interactive Read-Eval-Print Loops](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators/interactive-read-eval-print-loops.md) — Ships an interactive environment for real-time evaluation of Go expressions and inspection of values.

### Data & Databases

- [Interpreter Symbol Tables](https://awesome-repositories.com/f/data-databases/read-replicas/lock-free-map-structures/symbol-table-managers/interpreter-symbol-tables.md) — Manages variable scopes and memory allocation using a runtime symbol table for nested lookups.

### Development Tools & Productivity

- [Dynamic Package Loading](https://awesome-repositories.com/f/development-tools-productivity/cli-command-extensions/plugin-package-loading/dynamic-package-loading.md) — Provides the ability to resolve and import Go packages on demand during runtime execution.
- [Interactive REPLs](https://awesome-repositories.com/f/development-tools-productivity/interactive-repls.md) — Processes input strings through a cycle of parsing and evaluation for real-time code inspection.
- [Interactive Shells](https://awesome-repositories.com/f/development-tools-productivity/interactive-shells.md) — Provides a command line interface for evaluating Go code and accessing the runtime environment. ([source](https://cdn.jsdelivr.net/gh/traefik/yaegi@master/README.md))
- [Read-Eval-Print Loops](https://awesome-repositories.com/f/development-tools-productivity/read-eval-print-loops.md) — Provides an interactive environment for testing Go expressions and package imports in real-time.

### Hardware & IoT

- [Symbol-to-Interface Mappings](https://awesome-repositories.com/f/hardware-iot/standalone-rfid-operations/lua-scripting-engines/angelscript-and-lua-game-scripting/runtime-scripting-interfaces/symbol-to-interface-mappings.md) — Converts interpreted symbols from evaluated scripts into usable Go interfaces and types within compiled programs. ([source](https://cdn.jsdelivr.net/gh/traefik/yaegi@master/README.md))

### Software Engineering & Architecture

- [Plugin Extenders](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/developer-authoring-interfaces/custom-module-implementations/module-functionality-extenders/plugin-extenders.md) — Enables loading custom external Go libraries at runtime to augment core application functionality.
- [Bytecode Interpreters](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/bytecode-interpreters.md) — Implements a runtime that executes intermediate representations generated from Go source code.
