# gopherjs/gopherjs

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

13,127 stars · 574 forks · Go · bsd-2-clause

## Links

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

## Topics

`compiler` `go` `golang` `hacktoberfest` `javascript`

## Description

GopherJS is a cross-compiler toolchain that converts Go source code into JavaScript. It functions as a transpiler, enabling the execution of statically typed Go code within web browsers and other standard JavaScript runtime environments.

The project provides a comprehensive implementation of the Go standard library, replacing system-level calls with browser-compatible APIs to maintain language semantics. It maps Go's memory allocation patterns and type definitions onto the host JavaScript engine, while utilizing source map generation to allow for debugging using original Go source files.

By emulating core language primitives like goroutines and channels, the tool enables the reuse of existing business logic and complex computational tasks across both server-side and client-side environments. This allows developers to build interactive web applications using Go while maintaining integration with existing web APIs and browser-based development workflows.

## Tags

### Programming Languages & Runtimes

- [Go-to-JavaScript Transpilers](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/source-to-c-transpilers/source-to-source-transpilers/go-to-javascript-transpilers.md) — Converts Go source code into equivalent JavaScript for execution in web browsers.
- [Transpilers](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/programming-environments-tooling/go-environments/transpilers.md) — Converts Go source code into equivalent JavaScript for execution in web browsers. ([source](https://github.com/gopherjs/gopherjs/tree/master/doc/))
- [Web Development Toolkits](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/programming-environments-tooling/go-environments/web-development-toolkits.md) — Facilitates building interactive web applications using the Go programming language.
- [Standard Library Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/standard-libraries/standard-library-implementations.md) — Provides a comprehensive implementation of the Go standard library for browser-based execution.
- [Type Safety](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/type-system-tools/type-safety.md) — Translates Go's strict type definitions into JavaScript objects that maintain runtime type safety.

### Development Tools & Productivity

- [Cross-Compilation Toolchains](https://awesome-repositories.com/f/development-tools-productivity/cross-compilation-toolchains.md) — Acts as a cross-compiler toolchain enabling Go code execution in web browsers.
- [Transpilation Engines](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/code-generation/abstract-syntax-tree-generators/transpilation-engines.md) — Transforms Go source code into an intermediate representation to facilitate transpilation into JavaScript.

### Operating Systems & Systems Programming

- [Language Runtime Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming/runtime-libraries/language-runtime-emulators.md) — Implements core language primitives like goroutines and channels using JavaScript-based scheduling and state management.

### Web Development

- [Web Application Frameworks](https://awesome-repositories.com/f/web-development/web-application-frameworks.md) — Provides a platform for building client-side web applications using the Go programming language.
- [Logic Porting Tools](https://awesome-repositories.com/f/web-development/backend-to-frontend-bridges/logic-porting-tools.md) — Migrates complex computational tasks written in Go to the browser without requiring a rewrite.

### Software Engineering & Architecture

- [Multiplatform Code Sharing](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-development/multiplatform-code-sharing.md) — Enables the reuse of Go business logic and data structures across both server-side and client-side environments.
