awesome-repositories.com
Blog
awesome-repositories.com

Découvrez les meilleurs dépôts open-source grâce à notre recherche par IA.

ExplorerRecherches sélectionnéesAlternatives open sourceLogiciels auto-hébergésBlogPlan du site
ProjetÀ proposNotre méthodologiePresseServeur MCP
Mentions légalesConfidentialitéConditions d'utilisation
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
tinygo-org avatar

tinygo-org/tinygo

0
View on GitHub↗

Tinygo

TinyGo is a specialized compiler and development toolkit designed to bring the Go programming language to resource-constrained microcontrollers and WebAssembly environments. It provides a bare-metal runtime environment that enables high-level code execution without the need for a traditional operating system, utilizing an LLVM-based backend to generate efficient machine instructions.

The project distinguishes itself through aggressive optimization techniques tailored for small hardware, including a static memory allocation strategy and whole-program dead code elimination that significantly reduce binary footprints. It employs a register-based calling convention to minimize memory overhead and provides a consistent hardware abstraction layer, allowing developers to write portable driver logic that remains decoupled from specific chip implementations.

Beyond core compilation, the toolkit offers a comprehensive suite of utilities for the entire embedded lifecycle. This includes support for concurrent task management, hardware interrupt handling, and direct interaction with peripherals such as I2C, SPI, and GPIO pins. It also features robust deployment tools for flashing firmware directly to hardware via USB or external debug probes, alongside observability features like heap allocation tracing and binary size reporting.

The project provides extensive documentation and command-line utilities to prepare development environments, including integration with editor language servers to ensure accurate code completion for hardware-specific targets.

Recherche par IA

Explorez plus de dépôts awesome

Décrivez vos besoins en langage naturel — l'IA classe des milliers de projets open source sélectionnés par pertinence.

Start searching with AI
tinygo.org
↗

Features

  • Microcontroller Compilers - Compiles Go source code into efficient machine instructions specifically optimized for microcontrollers and WebAssembly environments.
  • Embedded - Translates source code into efficient machine instructions for small hardware devices by using advanced compiler techniques.
  • Microcontroller Development Platforms - Translates source code into machine instructions for various microcontroller architectures to enable execution on resource-constrained hardware.
  • Bare-Metal Runtimes - Provides a bare-metal runtime environment that enables high-level code execution without a traditional operating system.
  • Systems Programming - Builds low-level software that interacts directly with hardware peripherals on bare-metal systems.
  • Bare Metal Development - Provides a minimal bare-metal runtime environment for hardware initialization and task scheduling.
  • Source Code Compilers - Transforms source code into machine-specific binaries for microcontrollers and WebAssembly.
  • Embedded Systems Development - Offers a comprehensive suite of tools for building, flashing, and debugging software on resource-constrained embedded hardware.
  • Hardware Abstraction Layers - Provides interfaces that offer a consistent API across different hardware implementations.
  • Firmware Deployment Tools - Compiles and uploads programs directly to connected microcontroller boards via USB or external debug probes to execute code on resource-constrained devices.
  • GPIO Pin Controllers - Provides interfaces for reading and writing digital signals and managing hardware pin modes.
  • Hardware Interfacing - Provides standardized packages for communicating with sensors and peripherals via I2C and SPI.
  • Hardware Abstraction Layers - Decouples driver logic from specific chip implementations using consistent functional interfaces.
  • Hardware Drivers - Provides portable software interfaces to manage communication with physical hardware peripherals.
  • Compiler Backends - Utilizes an LLVM-based backend to translate source code into optimized machine instructions.
  • WebAssembly - Generates compact binary modules compatible with browser runtimes and server-side environments to execute logic outside of traditional operating systems.
  • WebAssembly Compilation - Transforms programs into portable modules that run inside web browsers or standalone runtimes by focusing on essential execution logic.
  • Dead Code Elimination - Performs whole-program analysis to remove unused code and reduce binary size.
  • Debugging and Inspection Tools - Inspects and controls the execution of code running on hardware by pausing, resuming, and stepping through instructions.
  • Open Source Flashing Tools - Transfers binary programs onto connected microcontroller boards using external debugging utilities and command line instructions.
  • Hardware Profile Deployments - Writes compiled binary files onto physical storage media or hardware using external flashing tools.
  • Microcontroller Flashers - Uploads built machine code to connected hardware devices using integrated programming utilities to execute programs directly on the target microcontroller.
  • Firmware Deployment Tools - Transfers compiled programs directly to microcontroller boards via USB for rapid development.
  • I2C Bus Frameworks - Provides interfaces for acting as an I2C peripheral device to handle data exchanges with external controllers.
  • Analog-to-Digital Converters - Provides interfaces for initializing and reading analog voltage signals from hardware pins to capture sensor data.
  • Hardware Communication - Provides protocols and software interfaces that facilitate data exchange between computer systems and physical hardware peripherals.
  • Digital I/O Controllers - Manages digital hardware pins for reading signals and driving electrical states.
  • Firmware Management - Transfers compiled binary programs onto connected microcontroller boards via USB to initiate execution on the device.
  • Serial Communication Interfaces - Provides standardized interfaces for configuring UART, SPI, and I2C peripherals for hardware communication.
  • USB Serial Interfaces - Provides drivers for exposing USB connections as virtual serial ports for debugging and data exchange.
  • USB Subsystem Drivers - Initializes and manages USB device endpoints for host-microcontroller communication.
  • Pin Interrupt Handlers - Executes callback functions automatically when hardware pins change state to respond to external events.
  • Runtime Schedulers - Builds a custom memory allocator and task scheduler to support language execution on hardware platforms that lack a traditional operating system.
  • Interrupt Vector Handlers - Assigns custom functions to hardware interrupt vectors to execute code immediately upon peripheral events.
  • Binary Size Reporters - Calculates and displays the memory footprint of compiled programs to monitor resource consumption.
  • Firmware Management - Provides utilities for flashing firmware to embedded hardware via USB.
  • Compiler Optimizations - Performs whole-program compilation to enable aggressive dead code elimination and optimization.
  • Task Schedulers - Runs multiple concurrent tasks using language primitives without requiring a traditional operating system.
  • WebAssembly Bridges - Exposes functions between WebAssembly and JavaScript for bidirectional communication.
  • Compilation - Generates compact, portable WebAssembly binary modules from source code for execution in diverse runtime environments.
  • Multi-Target Compilers - Configures the compiler to generate binaries for specific microcontrollers or WebAssembly environments with automated tool setup.
  • Static Allocation Strategies - Pre-calculates memory requirements during compilation to ensure predictable performance.
  • Design-to-Code Converters - Compiles and uploads programs directly to connected hardware devices via a command-line interface to execute code on resource-constrained systems.
  • Analog Input Processors - Initializes analog-to-digital converter pins to measure voltage levels for sensor data processing.
  • Compilateurs - Go compiler for microcontrollers and WebAssembly.
  • Compilers and Interpreters - Compiler for microcontrollers and WebAssembly.
  • WebAssembly - Go compiler for WebAssembly and microcontrollers.
  • Pulse-Width Modulation Controllers - Generates pulse-width modulation signals to control hardware actuators like motors and LEDs.
  • Compilers - Deploys compiled binary code directly to connected hardware devices via USB to execute programs on resource-constrained environments.
  • Hardware Command Execution - Compiles and deploys code directly to connected microcontroller boards via a command-line interface to execute logic on embedded hardware.
  • GPIO Pin Mappings - Sets pin modes and enables hardware-specific peripheral functions like PWM, I2C, or SPI.
  • Embedded Watchdog Timers - Defines configuration parameters for watchdog timers to automatically reset unresponsive embedded systems.
  • Watchdog Timer Configurators - Configures hardware watchdog timers to trigger system resets upon application unresponsiveness.
  • Analog Output Controllers - Configures digital-to-analog converters to produce specific voltage outputs for signal generation.
  • General Purpose Input Output Controllers - Controls individual hardware pins by setting their direction and pull-up or pull-down states.
  • Hardware Timer Controllers - Manages internal counter peripherals to generate precise timing signals and frequencies.
  • Pulse Width Modulation Controllers - Configures timer peripherals to generate pulse-width modulation signals across multiple output channels.
  • Bluetooth Connectivity - Facilitates wireless connectivity for devices using Bluetooth and other communication stacks.
  • Dynamic Memory Allocation - Selects memory management strategies, including no allocation or garbage collection, to suit specific resource constraints.
  • Calling Conventions - Employs a register-based calling convention to minimize memory overhead.
  • Embedded WebAssembly Runtimes - Implements a specialized, lightweight runtime optimized for resource-constrained embedded environments.
  • Cross-Platform Development Utilities - Enables compiling and deploying the same codebase across diverse microcontroller architectures.
  • System Health Monitors - Monitors system health by configuring watchdog timers to reset unresponsive software.
  • Hardware Timer Counters - Controls hardware timer and counter peripherals to generate signals or track time intervals.
  • Binary Optimizers - Strips debug information and optimizes binaries to minimize footprint for production environments.
  • PDM Audio Interfaces - Interfaces with pulse-density modulation hardware to stream digital audio signals.
  • Block Storage - Provides standardized interfaces for reading, writing, and erasing raw flash memory blocks.
  • Flash Storage Managers - Provides interfaces for managing non-volatile flash memory with specific alignment requirements.
  • Data Buffering - Maintains circular memory queues to store incoming data streams and prevent overflow.
  • Watchdog Monitors - Configures system watchdog timers to automatically reset hardware when applications become unresponsive.
  • Hardware Pin Mappings - Configures support for new or unsupported hardware boards by mapping specific pins and defining unique electrical requirements.
  • Serial Peripheral Interfaces - Initializes communication buses like SPI or I2C to exchange data with connected peripherals.
  • Serial Port Interfaces - Exchanges data between host computers and microcontrollers using USB as a virtual serial port.
  • Custom Hardware Drivers - Implements custom hardware logic using programmable input and output blocks for specialized signal processing.
  • Mass Storage Deployment - Enables firmware deployment by mounting the microcontroller as a USB mass storage drive.
  • Pulse Density Modulation Interfaces - Provides drivers for streaming audio or pulse-density data from digital microphones and sensors.
  • CAN Bus Interfaces - Sends and receives CAN bus messages with support for hardware-level configuration and buffer management.
  • Hardware Protocol Abstractions - Shares core device logic across different communication buses like I2C and SPI to maintain consistent sensor APIs.
  • Serial Data Buffers - Provides memory-efficient circular storage for incoming serial data to prevent loss during high-speed communication.
  • Language Features - Maintains compatibility with standard programming syntax while using a restricted set of language capabilities for memory-constrained environments.
  • Desktop Cross-Compilation - Produces native executables for Windows, macOS, and Linux environments to allow running code outside of embedded contexts.
  • Bootloader Management - Supports firmware deployment by triggering built-in bootloader modes on microcontrollers.
  • Performance Optimization Utilities - Provides compiler settings to optimize executable performance and reduce binary size.
  • Debug Probe Interfaces - Interfaces with external debug probes to establish a communication link between the development environment and the target microcontroller.
  • Flash Memory Access - Provides access to the writable flash memory area for reading and writing persistent data.
  • Serial Buffer Monitors - Checks received byte counts in communication buffers to manage data flow and prevent overflow.
  • File Storage Systems - Reads and writes files to internal or external flash using file system abstractions designed for embedded hardware.
  • macOS Utilities - Generates native executable binaries for macOS systems from source code, including support for cross-compilation.
  • Windows Deployment Utilities - Generates standard executable files for Windows operating systems from various host environments using cross-compilation.
  • Analog-to-Digital Converters - Initializes and reads data from analog-to-digital converters or writes values to digital-to-analog converters.
  • Hardware Reset Controllers - Provides mechanisms for managing reset sequences and initialization of hardware cores.
  • Hardware Timer Controllers - Utilizes timer and counter peripherals to track intervals and generate periodic signals.
  • Sensor Drivers - Reads data from integrated environmental and motion components using standard hardware communication protocols.
  • Programmable I/O Controllers - Provides interfaces for executing custom hardware-level logic using onboard programmable input and output blocks.
  • Signal Generators - Outputs periodic signals with adjustable frequency and duty cycle to control motors and lights.
  • Wireless Connectivity Tools - Utilizes integrated wireless capabilities to facilitate data exchange between microcontrollers and other devices.
  • Wireless Networking Tools - Enables wireless connectivity via WiFi and Bluetooth for remote data exchange and device interaction.
  • Inline Assembly Interfaces - Inserts low-level machine instructions directly into source code to perform hardware-specific operations.
  • Memory Allocation Tracers - Tracks and reports heap allocation events to help optimize memory usage on resource-constrained hardware.
  • Power Management - Optimizes code execution and hardware states to reduce energy usage on resource-constrained devices.
  • Static Initialization - Reduces startup time by allocating global variables as static data in flash memory.
  • Programmable Input Output Blocks - Controls custom hardware state machines using dedicated programmable blocks for specialized timing and communication.
  • Microcontroller Identifiers - Retrieves unique hardware identifiers burnt into microcontrollers during manufacturing.
  • Runtime Feature Flags - Allows disabling unnecessary runtime features to reduce binary footprint and improve performance.
  • Volatile Register Access - Ensures safe interaction with hardware registers by bypassing compiler optimizations for volatile memory access.
  • Compile-Time Variable Precomputations - Precomputes global variables during compilation to decrease startup time and memory usage.
  • Hardware Monitoring Tools - Connects secondary hardware probes to monitor execution and capture serial output from the target device.
  • WebAssembly Interoperability - Adapts function signatures to handle complex data types and integers across different runtime environments using pointers and stack-based allocation.
17,529 stars·1,058 forks·Go·5 vues

Historique des stars

Graphique de l'historique des stars pour tinygo-org/tinygoGraphique de l'historique des stars pour tinygo-org/tinygo

Questions fréquentes

Que fait tinygo-org/tinygo ?

TinyGo is a specialized compiler and development toolkit designed to bring the Go programming language to resource-constrained microcontrollers and WebAssembly environments. It provides a bare-metal runtime environment that enables high-level code execution without the need for a traditional operating system, utilizing an LLVM-based backend to generate efficient machine instructions.

Quelles sont les fonctionnalités principales de tinygo-org/tinygo ?

Les fonctionnalités principales de tinygo-org/tinygo sont : Microcontroller Compilers, Embedded, Microcontroller Development Platforms, Bare-Metal Runtimes, Systems Programming, Bare Metal Development, Source Code Compilers, Embedded Systems Development.

Quelles sont les alternatives open-source à tinygo-org/tinygo ?

Les alternatives open-source à tinygo-org/tinygo incluent : micropython/micropython — MicroPython is a lean implementation of Python 3 optimized to run on microcontrollers and other resource-constrained… hybridgroup/gobot — Gobot is a robotics framework for the Go programming language designed for developing robotics, drones, and IoT… s-matyukevich/raspberry-pi-os — This project is a bare-metal operating system developed for ARM64 architecture. It serves as a low-level… arendst/tasmota — Tasmota is a universal firmware platform for ESP8266 and ESP32 microcontrollers, designed to provide local control and… embassy-rs/embassy — Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It… raspberrypi/pico-sdk — The pico-sdk is a software development kit for creating C and C++ applications on RP2040 and RP2350 hardware…

Alternatives open source à Tinygo

Projets open source similaires, classés selon le nombre de fonctionnalités partagées avec Tinygo.
  • micropython/micropythonAvatar de micropython

    micropython/micropython

    21,806Voir sur GitHub↗

    MicroPython is a lean implementation of Python 3 optimized to run on microcontrollers and other resource-constrained systems. It serves as a cross-platform embedded runtime and hardware abstraction layer, providing a firmware framework that maps high-level software commands to specific microcontroller registers across diverse processor architectures. The project functions as an embedded language interpreter that enables rapid prototyping on hardware through an interactive read-eval-print loop. It supports a wide range of target environments, including ARM, ESP32, STM32, RISC-V, and WebAssembl

    Cembeddedmicrocontrollermicropython
    Voir sur GitHub↗21,806
  • hybridgroup/gobotAvatar de hybridgroup

    hybridgroup/gobot

    9,425Voir sur GitHub↗

    Gobot is a robotics framework for the Go programming language designed for developing robotics, drones, and IoT applications. It provides a hardware abstraction layer with standardized drivers to interact with GPIO, I2C, SPI, and PWM interfaces across various single-board computers and microcontrollers. The framework functions as an IoT device orchestrator and BLE device manager, enabling the coordination of multiple sensors, actuators, and Bluetooth Low Energy peripherals. It includes specialized interfaces for drone control, allowing for the management of flight maneuvers and video streams

    Goarduinobeaglebonebeaglebone-black
    Voir sur GitHub↗9,425
  • s-matyukevich/raspberry-pi-osAvatar de s-matyukevich

    s-matyukevich/raspberry-pi-os

    13,854Voir sur GitHub↗

    This project is a bare-metal operating system developed for ARM64 architecture. It serves as a low-level implementation of kernel engineering, focusing on the fundamental construction of an OS from the hardware level up. The system is distinguished by its comprehensive approach to ARM64 processor control, featuring a red-black tree task scheduler and a hierarchical page table system for virtual memory management. It implements a sophisticated privilege model that handles transitions between kernel and user modes, ensuring process isolation through address space splitting and exception level m

    Carmarmv8assembler
    Voir sur GitHub↗13,854
  • arendst/tasmotaAvatar de arendst

    arendst/Tasmota

    24,502Voir sur GitHub↗

    Tasmota is a universal firmware platform for ESP8266 and ESP32 microcontrollers, designed to provide local control and management of smart home hardware. It functions as an event-driven automation controller that replaces proprietary factory firmware, allowing users to manage relays, sensors, and lighting systems without relying on external cloud services. The system is built on a modular driver architecture that enables dynamic hardware configuration and peripheral support through a web-based management interface. The platform distinguishes itself through a template-driven hardware mapping s

    Carduinoautomationesp32
    Voir sur GitHub↗24,502
Voir les 30 alternatives à Tinygo→