Indexes and search engines
These sites provide indexes and search engines for Go packages:
Contributing
To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to from your Google Account.
Dead projects
If you find a project in this list that is dead or broken, please either mark it as such (if you have edit permissions) or mention it in the #go-nuts IRC channel.
Table of Contents
|
Astronomy
- - A wrapper for libnova -- Celestial Mechanics, Astrometry and Astrodynamics Library
- - Implementation of "Astronomical Algorithms" by Jean Meeus
- - Interface to the Naval Observatory Vector Astrometry Software (NOVAS)
- - FITS (Flexible Image Transport System) format image and data reader
Build Tools
- - Colorize go build output
- - This is a command-line utility to take a number of source files, and embed them into a Go package
- - A(nother) build tool for go, with an emphasis on multi-package projects
- - A build tool for Go in Go
- - lightweight clone of pkg-config
- - A simple project build tool for Go
- - A frontend to the Go compiler collection
- - goenv provides Go version and Go workspace management tools
- - Another set of SCons builders for Go
- - An experimental preprocesor to implement 'generics'
- - A build tool with a focus on cross-compiling, packaging, versioning and distribution
- - GVM provides an interface to manage Go versions
- - A collection of builders that makes it easy to compile Go projects in SCons
Caching
- - A caching library with expiration capabilities and access counters
- - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications
- - a memcached client
- - A memcached server in go
- - Caching and cache-filling library, intended as a replacement for memcached in many cases
- - Fast client and server libraries speaking memcache protocol
- - go memcached client, forked from YouTube Vitess
- - Fast memcache server, which supports persistence and cache sizes exceeding available RAM
- - Benchmark tool for memcache servers
- - Bindings for YBC library providing API for fast in-process blob cache
Cloud Computing
- - The Linux container runtime. Developed by dotCloud.
- - A distributed operating system that sits on top of the traditional OS on multiple machines in a datacenter deployment. It provides a clean and uniform abstraction for treating an entire hardware cluster as a single, monolithic compute resource. Developed by Tumblr.
- - A package for syncing data to and from S3.
- - Orchestration tool (deployment, configuration and lifecycle management), developed by Canonical.
- - ShipBuilder is a minimalist open source platform as a service, developed by Jay Taylor.
- - Tsuru is an open source polyglot cloud computing platform as a service (PaaS), developed by Globo.com.
- - Go language interface to Swift / Openstack Object Storage / Rackspace cloud files
Command-line Option Parsers
- - Use reflection to populate fields in a struct from command line arguments
- - A commander for modern go CLI interactions supporting commands & POSIX/GNU flags
- - Add subcommands to your CLI, provides help and usage guide.
- - Yet Another getopt Library for Go. This one is like Python's.
- - full featured traditional (BSD/POSIX getopt) option parsing in Go style
- - GNU-compatible flag parsing; substantially compatible with flag.
- - command line option parser for go
- - A command line parsing library for Go
- - a getopt clone to parse command-line flags
- - Self documenting CLI options parser
- - lightweight POSIX- and GNU- style option parsing
- - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
- - A concurrent, unit tested, subcommand library
- - Simplify the creation of command line interfaces for Go, with commands and sub-commands, with argument checks and contextual usage help. Forked from the "go" tool code.
- - Yet another option parser offering gnu-like option parsing. This one wraps (embeds) flagset. It also offers rudimentary pipe-detection (commands like ls behave differently when being piped to).
Command-line Tools
- - A small tool, which creates random passwords
- - A cross platform which utility written in Go
- - Command line utility that create files from templates.
- - Command-line tool for manipulating JSON for use in developing Go code.
- - A fast command line JSON pretty printer.
- - Command-line utility to create secure password hashes
- - A small tool, which generate human password, written in Go.
- - Command-line editing library
- - A small command-line per-project task list manager.
Compression
- - LZO bindings
- - Alternative archiving tool with fast performance for huge numbers of small files
- - A Go library to (de)compress data compatible with GBA BIOS
- - Port of LZ4 lossless compression algorithm to Go.
- - Implementation of LZSS compression algorithm in Go
- - Package sevenzip implements access to 7-zip archives (wraps C interface of LZMA SDK)
- - A wrapper around C library libzip, providing ability to modify existing ZIP archives.
- - compress/lzma package for Go
- - Google's Snappy compression algorithm in Go
- - yenc decoder package
- - Package zappy implements the zappy block-based compression format. It aims for a combination of good speed and reasonable compression.
Configuration File Parsers
- - read INI-style configuration files into Go structs; supports user-defined types and subsections
- - Effortlessly persist to and read flag values from an ini config file
- - a configuration file parser
- :
- - Go library for the TOML language
- - TOML-based config for Go
- - TOML parser for Go with reflection
- - An easy-to-use Go parser for the Toml format
- - Subset of TOML syntax with basic and reflection APIs
- yaml :
- - YAML support for the Go language, by Canonical
- - A port of LibYAML to Go
Console User Interface
- - Easily create ansi escape code strings and closures to fomat, color console output
- - pkg to drive text-only consoles that respond to ANSI escape sequences
- - GNU Readline bindings
- - Linenoise bindings (simple and easy readline with prompt, optional history, optional tab completion)
- - a thin wrapper around STFL, an ncurses-based widget toolkit
- - a Twitter client for text terminals
- - Go bindings for NCurses
- - NCurses wrapper
- - An ncurses library, including the form, menu and panel extensions
- - Allows typing of passwords without echoing to screen
- - A simple interactive Go interpreter built on exp/eval with some readline refinements
- - A Unix shell written in Go
- - obtain pseudo-terminal devices
- - A minimalist alternative to ncurses to build terminal-based user interfaces
- - Terminal support
- - Easy terminal-control-interface for Go.
- - Terminal/console colors and text decoration (bold,underlined,etc).
- - Remote web shell, implements a net/http server.
Cryptography
- - Go implementation of BLAKE2b hash function
- - Block padding schemes implemented in Go
- - Go port of Google'e Keyczar cryptography library
- - Korean block ciphers: SEED and HIGHT
- - Go implementation of the SKIPJACK encryption algorithm
- - Go implementation of HC-128, an eSTREAM stream cipher
- - Implementation of Skein hash and Threefisch crypto for Go
- - A keccak (SHA-3) implementation
- - libketama-style consistent hashing
- - encryption command line tool
- - Go implementation of Colin Percival's scrypt key derivation function
- - AES encryption made easy
- - SSH2 Client library
- - SipHash: a fast short-input pseudorandom function
- - Tiger cryptographic hashing algorithm
- - whirlpool cryptographic hashing algorithm
- - some useful cryptography-related functions, including paddings (PKCS7, X.923), PBE with random salt and IV
Data Processing
- - Real time data and log file processing engine.
- - Statsd server and library.
- - Map/Reduce/Filter etc. for Go using channels as result streams.
- - Bindings for rrdtool.
Data Structures
Lists
- - GoArrayList is a Go language substitute for the Java class ArrayList, with very nearly all features.
- - A skip list implementation in Go.
- - An immutable ordered list, interally a treap.
- - Python List and Dict for Go
- - A fast position-addressable ordered map and multimap.
- - A skip list implementation. Highly customizable and easy to use.
- - A fast indexable ordered multimap.
Queues
- - Simple FIFO queue
- - An easy to use heap implementation with a conventional priority queue interface.
- - Simple auto-resizing thread-safe fifo queue.
- - Priority queue at top of container/heap
- - A minimalist queue implemented using a stripped-down lock-free ringbuffer
- - A simple fifo queue with an optional thread-safe version.
- - A simple network queue daemon
Graphs
- - Graph Visualization, Algorithms
Trees
- - Package b implements B+trees with delayed page split/concat and O(1) enumeration. Easy production of source code for B+trees specialized for user defined key and value types is supported by a simple text replace.
- - Package btree implements B-trees with fixed size keys,
- - AVL tree (Adel'son-Vel'skii & Landis) with indexing added
- - Double-ARray Trie System for golang
- - A segment tree implementation for range queries on intervals
- - A Left-Leaning Red-Black (LLRB) implementation of 2-3 balanced binary search trees in Google Go
- - Yet another red-black tree implementation, with a C++ STL-like API
- - an R-Tree library
- - Tree Visualization, Algorithms
Other
- - Asynchronous, non-blocking, wrapper for io.Writer
- - binary parsing and printing
- - Several common data structures
- - A collection of data-structures (AVL Tree, B+Tree, Ternary Search Trie, Hash Table (Separate Chaining), Linear Hash Table)
- - Make deep copies of data structures
- - A Bloom Filter implementation
- - Compact dates stored as days since the Unix epoch
- - Minimalistic state machine for use instead of booleans
- - Generalized edit-distance implementation
- - An energy minization tool using max-flow algorithm.
- - Go wrapper for GNU libextractor
- - Go maps generalized to interfaces
- - A simple linked-list hashtable that implements sets and maps
- - A lightweight libxml wrapper library
- - A wrapper for the NetCDF file format library
- - Dynamic object-oriented programming support for Go
- - A simple, thread safe Set implementation
- - A protocol buffer compiler written in Go
- - A thin wrapper around libxml2
- - Provides generic iteratable generator function along with functionality similar to the itertools python package.
- - A JSON validator
- - A low level library for generating gobs from other languages
- - A general-purpose hash/checksum digest generator.
- - Persistent data structures
- - Package samling implements various collection data structures.
- - Ternary (tree-valued) logic for Go
- - Tuple is a go type that will hold mixed types / values
- - Reading and writing vcard file in go. Implementation of RFC 2425 (A MIME Content-Type for Directory Information) and RFC 2426 (vCard MIME Directory Profile).
- - Unmarshal XML doc into mapstringinterface{} or JSON
- - A library to help with extracting data from Microsoft Office Excel XLSX files.
Databases and Storage
See also .
MongoDB
- - Rich MongoDB driver for Go
MySQL
- - A lightweight and fast MySQL-Driver for Go's database/sql package
- - MySQL Client API written entirely in Go.
- - Scaling MySQL databases for the web
ODBC
- - ODBC Driver for Go
- - This package is wrapper around ODBC (version 3).
PostgreSQL
- - cgo-based Postgres driver for Go's database/sql package
- - A PostgreSQL client library for Go
- - PostgreSQL high-level client library wrapper
- - Go PostgreSQL driver that avoids database/sql in exchange for better PostgreSQL specific support
- - Pure Go PostgreSQL driver for database/sql
QL
- - A pure Go embedded (S)QL database.
Redis
- - Client and Connectors for Redis key-value store
- - Simple client for Redis
- - Powerful Redis client with pub/sub support.
- - Go client for Redis.
- - Redis client for Golang
- - Basic Go driver for RethinkDB
SQLite
- - sqlite3 driver conforming to the built-in database/sql interface
- - a trivial SQLite binding for Go.
- - A fork of gosqlite
- - Go Interface for SQLite3
ORM
- - beedb is an ORM for Go. It lets you map Go structs to tables in a database
- - An ORM library for Go, aims for developer friendly
- - SQL mapper for Go
- - Database agnostic ORM for Go. Supports Postgres and MySQL.
- - Query By Struct. Supports MySQL, PosgreSQL and SQLite3.
- - A Simple and Powerful ORM for Go.
- - A simple wrapper around sql.DB for struct support.
Multiple wrappers
- - an abstraction of wrappers for popular third party SQL and No-SQL database drivers.
Key-Value-Stores
- - Package dbm (WIP) implements a simple database engine, a hybrid of a hierarchical and/or a key-value one.
- - Home-grown, disk-backed key-value store
- - Highly-available key value store for shared configuration and service discovery
- - Key-value store inspired by Riak Bitcask. Can be used as pure go implementation of dbm and other kv-stores.
- - Yet another key/value persistent store. Atomic operations, two phase commit, automatic crash recovery, ...
- - This is an implementation of the LevelDB key/value database.
- - levigo provides the ability to create and access LevelDB databases.
- - Programatic, persistent, pseudo key-value storage
NoSQL
- - A NoSQL document database engine using JSON for documents and queries; it can be embedded into your program, or run a stand-alone server using HTTP for an API.
Other
- - Kyoto Cabinet bindings for go
- - Cassandra Client Lib
- - Create and read cdb ("constant database") files
- - Index and perform regex searches over large bodies of source code
- - newer maintained CouchDB database binding
- - The most feature complete CouchDB Adapter for Go. Modeled after couch.js.
- - A basic interface to Oracle Berkeley DB XML
- - GO interface to Oracle DB
- - GO bindings for the libnotify
- - Go client for the (part of the suite of graph DB tools)
- - A sphinx client package for Go, for full text search.
- - mediawiki dump parser for working with wikipedia data
- - statsd server in go (for feeding data to graphite)
- - Go bindings for Kyoto Cabinet DBM implementation
- - A binding to Berkeley DB storing records encoded as Protocol Buffers.
- - Database driver for riak database (project homepage is now on bitbucket.org)
- - Riak driver using Riak's protobuf interface
- - A Go wrapper for tokyo tyrant
- - go bindings for libhdfs
- - JGDB stands for Json Git Database
- - Simple SQL-based database migrations
- - A Go quick and dirty utility for cleaning MongoDB collections and loading fixtures into them.
- - Neo4j REST Client in golang
- - Neo4j graph database client, including Cypher and Transactions support.
- - Smart cache preloader for websites with XML sitemaps.
- - High level utility methods for interacting with Riak databases
- - fast distributed key-file store
- - library for working with whisper databases
- - Fluent SQL generation for golang
Development Tools
- - Go wrapper (binding) generator for C libraries.
- - Download, build, cache and run a Go app easily.
- - Recompiles and runs your Go code on source change. Also watches all your imports for changes.
- - GoWatch watches your dev folder for modified files, and if a file changes it restarts the process.
- - Bindings for GLib type system
- - A code generator that can generate code using any language
- - diff file comparison tool with colour html output
- - language-independent code syntax highlighting library
- - A tool to create new Go projects
- - A HTML5 web interface for experimenting with Go code. Like but runs on your computer
- - Enables Go source files to be used as scripts.
- - Implements a deep pretty printer for Go data structures to aid in debugging
- - Easily copy code from another project into yours
- - Reload a specified go program automatically by monitoring a directory.
- - Literate programming tools for Go based on CWEB by Donald Knuth and Silvio Levy.
- - simple debugger for Go
- - Tool for quick exprimentation with Go snippets
- - Livedev is a development proxy server that enables live code reloading.
- - A tool for updating license headers in Go source files
- - An go auto build tools and qt-based ide for Go
- - Rerun watches your binary and all its dependencies so it can rebuild and relaunch when the source changes.
- - A simple debug tracing
- - Create a dependency graph for a go package
Emacs Tags
- - ETags generator
- - Emacs TAGS generator for Go source
- - etags generator for go that builds with go 1
Distributed/Grid Computing
- - A library for building clustered services in Go
- - A distributed lock service built on top of .
- - Skynet is distributed mesh of processes designed for highly scalable API type service provision.
Documentation
- - GoDoc.org generates documentation on the fly from source on Bitbucket, Github, Google Project Hosting and Launchpad.
- - Automatically generate unix man pages from Go sources
- - Format package documentation (godoc) as GitHub friendly Markdown
- - Commands documentation for Redis
- - Sphinx domain for Go
Editors
- - Highlighter plugin for the conTEXT editor
- - Google Go language plugin for Intellij IDEA
- - Google Go language plugin for gedit
- - An Eclipse-based IDE for Go.
- - Web-based IDE for the Go language
- - (code) search tool for acme
- - go local application builder - a web-based golang ide
- - Source code editor
- - A microemacs-like text editor written in Go.
- - A vim-like text editor.
- - Conception is an experimental research project, meant to become a modern IDE/Language package.
Encodings and Character Sets
- - Character-set conversion library in Go
- - Human input-friendly base58 encoding
- - Encodeing and decoding the bencode format used by the BitTorrent peer-to-peer file sharing protocol
- - BSON codec for net/rpc
- - Charset detection library ported from ICU
- - Character encodings in Go
- - Conversion between character sets. Native Go.
- - a Go package to interact with arbitrary JSON
- - Pure Go implementation of the data representation portion of the External Data Representation (XDR) standard protocol as specified in RFC 4506 (obsoletes RFC 1832 and RFC 1014).
- - Bit-packing for Go
- - BSON (de)serializer
- - iconv wrapper with Reader and Writer
- - Detect mime-types automatically based on file contents with no external dependencies
- - Comprehensive MsgPack library for Go, with pack/unpack and net/rpc codec support (DEPRECATED in favor of )
- High Performance and Feature-Rich Idiomatic Go Library providing encode/decode support for multiple binary serialization formats: and .
- - Msgpack format implementation for Golang
- - Command-line utilities to convert between msgpack and json
- - Write perl storable data
- - tnetstrings (tagged Netstrings)
- - String and Int primitives that serialize to JSON and SQL null
- -- Mime-type detection with Go bindings for libmagic
Games
- - Solver for bloxorz basic levels
- - Play chess with Go, HTML5, WebSockets and random strangers!
- - An NES emulator, using SDL and OpenGL
- - A program written in Go that plays Go
- - Ludo Board game powered by Go on Appengine
- - Go Sudoku Solver - example of "share by communicating"
- - A ZX Spectrum 48k Emulator
- - Arcade style game based on the Vu 3D engine.
GIS
- - Go bindings for GDAL
- - Go bindings for libLAS
- - An interface to the Cartographic Projections Library PROJ.4
- - Go library for spatial data operations and geometric algorithms
- - dense set, byte trie, reed solomon encoding, wgs84 geodesics
- - Google Maps polyline encoding and decoding
- - Open Geo Consortium-style geometries with native Go GeoJSON, WKB, and WKT encoding and decoding (work-in-progress)
Go Implementations
- - Interpreted Go implementation for Windows
- - LLVM-based Go compiler, written in Go (work-in-progress)
Graphics and Audio
- - Simple ANSi to PNG converter written in pure Go
- - Arclight is a tool for rendering images
- - Go bindings for OpenGL
- - OpenGL binding generator
- - A mac implementation of go.wde
- - Audio synthesizer engine
- - An API for creating plots
- - An example Windows GUI hello world application
- - basic wrapper for the Allegro library
- - Go Bindings for Allegro 5 library
- - A modular game library.
- - Image processing library and rendering toolkit for Go.
- - package for encoding/decoding Windows BMP files
- - Library to generate common chart (pie, bar, strip, scatter, hstogram) in different output formats.
- - This package provide an API to draw 2d geometrical form on images. This library is largely inspired by postscript, cairo, HTML5 canvas.
- - a Go implementation of FreeType
- - OpenGL bindings using glew
- - bindings to the multi-platform library for opening a window, creating an OpenGL context and managing input
- - Go bindings for GLFW 3 library
- - OpenGL helper functions to manage text, textures, framebuffers and more
- - bindings to the OpenGL Utility Library
- - egl bindings
- - es2 bindings
- - Go wrapper for the cairo graphics library
- - Go bingings for GD
- - go bindings for GNUPlot
- - gtk3 bindings for go
- - A toolkit for making heatmaps
- - Experimental OpenAL bindings for Go
- - A go wrapper to the OpenCL heterogeneous parallel programming library
- - Go OpenCL (gocl) binding
- - Go bindings for OpenCV
- - Go wrapper for TagLib, an audio meta-data parser
- - A Go library that reads Tiled's TMX files
- - Go bindings for libVLC
- - A windowing/drawing/event interface
- - H.265/HEVC HM Video Codec in Go
- - H265/HEVC Bitstream Analyzer in Go
- - Go Bindings for the Horde3d Rendering engine.
- - Golang wrapper for cairo graphics library
- - Retrieve EXIF metadata from image files
- - Raytracer written in Go, based on Yafaray
- - Pure Go OSC (Open Sound Control) library
- - Go wrapper for SDL
- - Go rewrites of xscreensaver ports
- - Go bindings for GStreamer
- - Gui toolkit based on http and gtk-webkit.
- - Package imaging provides basic image manipulation functions (resize, rotate, flip, crop, etc.) as well as simplified image loading and saving.
- - A Go binding to PortAudio
- - Go binding for PulseAudio
- - Image resizing with different interpolations.
- - A simple Go graphics and user input library, built on SDL
- - a library for creating and outputting SVG
- - TARGA image format encoding/decoding library
- - Optimized moving window for real-time data
- - A fully-featured window manager written in Go.
- - Go Wrapper for the wxWidgets GUI
- - bindings for the X windowing system
- - A fork of the x-go-binding featuring support for thread safety and all X extensions.
- - A utility library to make use of the X Go Binding easier. (Implements EWMH and ICCCM specs, key binding support, etc.)
- - Virtual Universe. A skeleton 3D engine.
GUIs and Widget Toolkits
- - FLTK2 GUI toolkit bindings for Go
- - Bindings for GTK
- - qt5 bindings for go
- - A UI kit for Go, in Go. (project is closed)
- - Go and Qt Quick experimentation
- - Tcl/Tk Go bindings
- - Go bindings for GTK3, requires GTK version 3.8
- - Go bindings for the WebKitGTK+ v2 API (w/headless browser & JavaScript support)
- - Gowut (Go Web UI Toolkit) is a full-featured, easy to use, platform independent Web UI Toolkit written in pure Go, no platform dependent native code is linked or called.
- - Bindings for
- - Tiling window manager for X
- - QML support for the Go language
Hardware
- - Provides communication with USB Human Interface Devices.
- - Hardware I/O library for SoC boards including BeagleBone Black and Raspberry Pi.
- - A librtlsdr wrapper, which turns certain USB DVB-T dongles into a low-cost, general purpose software-defined radio receiver.
Language and Linguistics
- - A reader and a writer for Alpino corpora.
- - GNU Aspell spell checking library bindings for Go.
- - A simple language detector using letter frequency data.
- - String distance metrics implemented in Go
- - Word inflection library (similar to Ruby ActiveSupport::Inflector). Singularize(), Pluralize(), Underscore() etc.
- - A Go wrapper for libtextcat.
- - N-gram based text categorization, with support for utf-8 and raw text
- - Chinese language segmenter.
- - String Similarity(Cosine Similarity, Levenshtein Distance), Spell Check, Segmentation
- - Naive Bayesian Classifier (Sentiment Analysis)
- - CHILDES data analyzing tool
- - Automata Theory, Computational Linguistics
Logging
- - Leveled execution logs for Go
- - Really fast, featureful logging infrastructure (supports colors, verbosity, and many formats)
- - Flexible dispatching, filtering, and formatting
- - Configurable Logger for Go
- - Go logging package akin to log4j
- - With this package you can create your own syslog server with your own handlers for different kind of syslog messages
- - graylog-golang is a full implementation for sending messages in GELF (Graylog Extended Log Format) from Google Go (Golang) to Graylog
- - Rotating file writer - a 'logrotate'-aware file output for use with loggers
Machine Learning
- - A naive bayes classifier.
- - Genetic algorithms.
- - An efficient native Go clean room implementation of the Porter Stemming algorithm.
- - Go implementation of the Paice/Husk Stemmer
- - Snowball stemmer
Mathematics
- - Convex optimization package, port of CVXOPT python package
- - Implements types, units, converter functions and some mathematics for some common physical types. lib
- - Naive Bayesian Classification for Golang
- - Go implementation of BLAS (Basic Linear Algebra Subprograms)
- - cartography functions for the Go programming language
- - Dice rolling library
- - A simple floating point arithmetic expression evaluator
- - A fixed point (Q32.32 format) math library.
- - 2d geometry.
- - Naive implementation of the Mahalanobis distance using go.matrix
- - Go bindings for FFTW - The Fastest Fourier Transform in the West
- - Special functions that would not fit in "math" pkg
- - Graph theory algorithms
- - Formatting numbers for humans.
- - Linear models in Go. Provides WLS and regression with t residuals via a cgo -> BLAS/LAPACK interface.
- - Symbolic math as an AST with derivatives, simplification, and non-linear regression
- - a linear algebra package
- - Go bindings to the Chipmunk Physics library.
- - a complex number library
- - multi-precision decimal arithmetic
- - Graphviz DOT language parser for golang
- - lightweight FAST matrix and vector math
- - GNU Scientific Library bindings
- - Package mathutil provides utilities supplementing the standard 'math' and 'rand' packages.
- - Mersenne Twister int64 random source
- - Go implementation of algorithm for Boolean operations on 2D polygons
- - A library of PSO (Particle Swarm Optimization) for golang.
- - GNU GSL Statistics (GPLv3)
- - A small vector lib.
Misc
- - Go code search engine.
- - Rating system designed to be used in telecom carriers world
- - Go bindings for the PhysicsFS archive-access abstraction library.
- - Library that emulates Unix pipelines
- - Flow-based and dataflow programming library for Go
- - Sovle Longest Common Sequence problem in go
- - A Go preprocessor that provides an implementation of generics
- - Command-line calorie tracking
- - Flexible monitoring of your application
- - Simple atexit library
- - Basic bioinformatics functions for the Go language.
- - A Go package that reports processor topology
- - A library for running jobs (funcs) on a cron-formatted schedule
- - D-Bus Go library
- - Open file/uri with default application (cross platform)
- - Kanban board application based on Simple-Khanban
- - An utility that dumps Go variables, similar to PHP's var_dump
- - Easily pull environment variables with defaults
- - Bindings for libepub to read epub content.
- - Generate fake data, names, text, addresses, etca
- - File system notifications for Go
- - Functional programming library including a lazy list implementation and some of the most usual functions.
- - Wrapper for the Amiando event management API
- - An efficient and comprehensive bitset implementation with utility bit functions.
- - Validate/generate credit card checksums/names.
- - A computational chemistry/biochemistry library.
- - A minimal utility library for validating EAN-8 and EAN-13 and calculating checksums.
- - Functions for use in ecology
- - Extended error reporting library
- - Go bindings for FANN, library for artificial neural networks
- - a project to bring IDN support to Go, feature compatible with libidn
- - Go port of Coda Hale's Metrics library
- - CoreFoundation Property List support for Go
- - Go interface to the PAPI performance API
- - A library to access the MPD music daemon
- - Extension to the standard Go XML package. Maintains a node tree that allows forward/backwards browser and exposes some simpel single/multi-node search functions
- - Go client for quantum random bit generator service at random.irb.hr
- - Semantic versions (see http:/semver.org)
- - Go interface for Linux taskstats
- - Google Language Translate library
- - Universal Unique IDentifier generator and parser
- - Native Go library for D-Bus
- - Go wrapper for pcsc-lite
- - A Go wrapper around National Instruments NI488.2 General Purpose Interface Bus (GPIB) driver.
- - Scheme-like delayed evaluation for Go
- - A steam properties (steam table) library written for Go. This was designed as a native go equivalent to XSteam.
- - Library for CSV parsing and emitting
- - A genetic algorithm framework
- - GObject-introspection based bindings generator
- - Implementation of Game of Life for command line
- - Libmagic bindings
- - A Go wrapper for libmagic
- - Simple interface to libmagic for Go Programming Language
- - gommap enables Go programs to directly work with memory mapped files and devices in a very efficient way
- - Go driver for NeuroSky devices.
- - libraries for interacting with Plan 9
- - A tool to generate a simple graph data structures from JSON data files
- - Amazon AWS Simple Email Service (SES) API client
- - Utility functions for interacting with the systemd init system
- - A tool to make Twitter API requests using the
- - Pure Go UUID v3, 4 and 5 generator compatible with RFC4122
- - This is a whitebox instrumentation framework for servers written in Go. It exposes programmatically-generated metrics automatically for use in the Prometheus time series collection and post-processing environment.
- - programming koans for go
- - A minimalistic message queue server
- - Construct plain text MIME messages for use with net/smtp.
- - Package mitigation provides the possibility to prevent damage caused by bugs or exploits.
- - A NotifyMyAndroid client for go.
- - A parser for the /etc/passwd file
- - A generic worker pool
- - Sieve of Atkin prime number generator
- - A Procfile parser
- - Devel tool for generating random bytestrings and encoding files in code-friendly forms
- - A library for replaying time series data.
- - Selenium client
- - Selenium WebDriver client for Go
- - Serial ports API (pure Go)
- - Package sio lets you access old serial junk. It's a go-gettable fork and modification of dustin's rs232 package.
- - Various tools and libraries to handle symbolic links
- - Go bindings for libudis86
- - Files tree browser for p9p acme
- - Yubikey OTP validation and auhtentication API client.
- - Some miscellaneous wrapper and small algorithms.(wrappers to slices, priority queues, path related apis, a string set type)
- - Wrapper for bitcoind daemon API, makes working with bitcoins easy.
- - Breaker enables graceful degraded mode operations by means of wrapping unreliable interservice interface points with circuit breaker primitives.
- - A highly extensible full-text search engine written in Go.
- - Loads environment variables from
.env
file
Music
- - Go bindings for libshout
- - A client interface for the MPD (Music Player Daemon)
- - Go bindings for libportmidi
- - A Go client for Novation Launchpad
Networking
- - Go Ajax is a JSON-RPC implementation designed to create AJAX powered websites.
- - RTP / RTCP stack implementation for Go
- - QRP is a simple packet-based RPC protocol designed as a simple alternative to Go's rpc, that can run over UDP
- - Rsync algorithm as a Go library
- - Secure social networking platform
- - A free and open source software which provides a unified push service for server-side notification to apps on mobile devices.
- - API client for Monitor http://www.campaignmonitor.com (email campaign service)
- - Vector Delta Engine Daemon - track deltas in ever-increasing values (written in Go)
- - Go interface to the distributed-queue API
- - Library for with Hadoop Streaming map/reduce
- - Go package for managing json-encoded configuration in Doozer
- - A consistent distributed data store
- - Server-sent events for net/http server.
- - A native implementation for Gearman API with Go.
- - Go wrapper using CGO for the libvnc library.
- - Simple library for sending emails from a Gmail account, for people not interested in dealing with protocol details.
- - libcurl bingding that supports go func callbacks
- - A library to connect to the D-bus messaging system
- - ICAP (Internet Content Adaptation Protocol) server library
- - IMAP client library
- - Email utilities including RFC822 messages and Google Mail defaults.
- - package for writing Nagios/monitoring plugins
- - An NNTP client and server library for go
- - implementation of remote channel communication
- - ProtoBuf RPC binding generator for net/rpc and AppEngine
- - A Socket.IO backend implementation written in Go
- - A SOCKS (SOCKS4, SOCKS4A and SOCKS5) proxy client library in Go.
- - an implementation of the 9P distributed file system protocol
- - 9p protocol implementation in Go
- - zero-downtime restarts in Go
- - Go Beanstalkd client library
- - Gopher server written in Go
- - Library for sending and receiving SMS
- - Simple TCP benchmarking tool
- - package for checking general internet access
- - Packet encoding/decoding, pcap/pfring/afpacket support, TCP assembly, and more!
- - A simple wrapper around libpcap
- - the Go implementation of Google's Protocol Buffers
- - another Go implementation of Protocol Buffers, but with extensions and code generation plugins.
- - Protocol Buffer extensions to support streaming message encoding and decoding.
- - A persistent message queue written in Go.
- - Go binding for libsndfile
- - Go Bindings for 0mq (zeromq/zmq)
- - Go native library to connect to HandlerSocket interface of InnoDB tables
- - Implementation of IMAP4rev1 client, as described in RFC 3501.
- - Inbucket is an email testing service; it will accept messages for any email address and make them available to view via a web interface.
- - basic functions for the manipulation of IP address prefixes and subsequent addresses as described in RFC 4632 and RFC 4291.
- - Convenient ip address functions: ip -> int, int -> ip, and IPNet broadcast address
- - Peer-to-peer messaging for back-end decentralization.
- - Go binding for the Iris decentralized messaging framework.
- - Producer & Consumer for the Kafka messaging system
- - Basic LDAP v3 functionality for the GO programming language.
- - NATS distributed messaging system client for Go
- - A low-bandwidth simulator
- - a pure Go wrapper for Windows named pipes
- - Simple interface for turning TCP Sockets into channels.
- - Go wrapper for Openldap
- - Google Protocol RPC for Go and C++
- - A remotize package and command that helps remotizing methods without having to chaneg their signatures for rpc
- - An rsync algorithm implementation in Go
- - Serial interface for those of us who still have modems (or arduinos)
- - RSS parsing library.
- - Reverse TCP Proxy with HTTP managment API
- - SPDY library, wired into net/http, currently supporting servers only.
- - Statsd implementation in Go, forked from gographite, which submits to Ganglia
- - A Stomp 1.1 Compliant Client
- - Examples for stompngo.
- - A simple interface for interacting with Telnet connection
- - A TCP proxy implementing a simple fallback mechanism.
- - A TCP throughput measuring tool
- - A traceoute implementation
- - A level 4 implementation of URI Templates (RFC 6570)
- - Implements server side counterpart for the SockJS-client browser library.
- - A Go interface to ZeroMQ (zmq, 0MQ) version 2.
- - A Go interface to ZeroMQ (zmq, 0MQ) version 3.
- - A Go interface to ZeroMQ (zmq, 0MQ) version 4.
- - Mumble (VoIP) server implementation
- - SSL terminator proxy
- - HTTP/HTTPS load test and benchmark tool
- - WebSocket protocol implementation
- - proxy for HTTP/REST APIs with configurable cache timeouts
- - streaming append and follow of HTTP resources (using WebSockets)
- - a programmable HTTP proxy.
- - Configurable zero downtime daemon (Hot Update) framework for any kind of TCP,HTTP,FCGI services
- - HTTP(s) benchmarking tool, Apache Benchmark replacement
DNS
- - A DNS library in Go
- - a configurable dyndns client
- - geo-aware authoritative DNS server
- - Small authoritative DNS name server
- - Multicast DNS library for Go
- - BitMessage client node and library
FTP
- - Package ftp provides a minimal FTP client as defined in RFC 959
- - An FTP client for Go, started as a port of the standard Python FTP client library
- - A FTP client library
Instant Messaging
- - "Go Troll Yourself", minimalist client IRC library
- - Simple IRC client library
- - XMPP client library
- - Extensible IRC bot with channel administration, seen support, and go documentation querying
- - XMPP client implementation
- - event-based stateful IRC client framework
- - a modular IRC bot
- - Go IRC bot framework
- - IRC bot with support for commands, scripting and web-hooks
Operating System Interfaces
- - Library to write FUSE filesystems in Go
- - From-scratch implementation of the kernel-userspace communication protocol based on Russ Cox'.
- - Service will install / un-install, start / stop, and run a program as a service (daemon) on Windows/Linux and OSX.
Other Random Toys, Experiments and Example Code
- - An experimental source-to-source compiler for go
- - A demonstration of how to use GTK+ with Go.
- - A hash table in pure go as an experiment in Go performance
- - A collection of useful concurrency idioms and functions for Go, compiled
- - A bunch of random small programs in Go
- - Game of Life in Go
- - Playing around with the linear algebra
- - Solutions to Project Euler in Go also
- - shader test using golang
- - Travis-CI example for Go
- - Slice, Map tricks, Stack, Queue
- - Set Theory
P2P and File Sharing
- - A BitTorrent client
- - eDonkey2000 link crawler
- - Bittorrent Client in Go
- - A simple p2p app to learn Go
- - A simple BitTorrent client based in part on the Taipei-Torrent and gobit code
- - Kademlia DHT node used by Taipei-Torrent, compatible with BitTorrent
Programming
- - cgo bindings to the C-API of libclang
- - a library of Genetic Algorithms
- - a library to work with bounded sets of integers, including multiple alternative implementations
- - a Parsec-like parsing library
- - port of jsdeferred:
- - implementation of set types
- - Implementation of the Fisher–Yates shuffle (or Knuth shuffle) in Go.
Scanner and Parser Generators
- - Utility for converting EBNF grammars into yacc compatible skeleton .y files.
- - FSM (NFA, DFA) utilities.
- - Lex/flex like fast (DFA) scanners generator.
- - Go Compiler Compiler
- - Go Parser Parser
- - State Machine Compiler
Simulation Modeling
- - Library for building discrete event simulation models
Sorting
- - Lazy funnel sort -- a cache-oblivious sorting algorithm
- - Nested, case-insensitive, and reverse sorting for Go.
- - Utilities supplemental to the Go standard "sort" package
- - Graph loop detection function based on Tarjan's algorithm
- - Fast, stable sort, uses external comparator or sort.Interface
Source Code Management
- - Analyzes and recursively installs Go package deps (library functionality similar to
go get
) - - Finds all matching packages in all of the GOPATH trees (library functionality similar to
go list all
) - - A Mercurial/hg extension with a hook to
- - Nut is a tool to manage versioned Go source code packages, called "nuts".
- - VCS abstraction tool
- - A diff command for go languange showing sematic differences of two go source files.
- - clone and check out revs of VCS repositories (git and hg support)
- Lenient VCS repository URL parsing library
Strings and Text
- - A markdown processor
- - Nested Templates
- - Binary diff and patch
- - format slice or array into aligned columns
- - A heavy duty CSV reading and writing library.
- - Collection of string hashing functions, including Murmur3 and others
- - Feature complete, cgo
- - GNU's gettext support, written in pure Go
- - Go wrapper for libguess
- - migemo extension for go (Japanese incremental text search)
- - A go library to parse INI files.
- - lorem ipsum generator
- - A Go client interface to the Sphinx standalone full-text search engine
- - String-matching in Golang using the Knuth–Morris–Pratt algorithm
- - Handy tools to manipulate korean character.
- - Templating system for HTML and other text documents
- - Simple wrapper for kasia.go templates. It helps to modularize content of a website
- - Parse email messages
- - Parsing Expression Grammer Parser
- - String translation utilities for Go
- - Pretty-printing for go values
- - A simple regular expression library that supports Ruby's regex syntax. It is faster than Regexp.
- - A text scanner that parses primitive types, analogous to Java's
- - An implementation of Norvig's recursive word segmentation algorithm
- - Stenography with Go
- - Package strutil collects utils supplemental to the standard strings package.
- - Text paragraph wrapping and formatting
- - Change the color of the text and background in the console, working both in Windows and other systems.
- - Upskirt markdown library bindings for Go
Testing
- - Automatically run tests for all known downstream consumers of a Go package.
- - Convert "go test -v" output to xunit XML output
- - helper functions for the built-in 'testing' package (deleted)
- - Automatically run unit tests when code changes are made
- - Browser-based reporting, uses
go test
, supports traditional Go tests, clean DSL - - Code coverage testing/analysis tool
- - BDD Testing Framework for Go.
- - Rich test framework with suites, fixtures, assertions, good error reporting, etc
- - Ginkgo's Preferred Matcher Library.
- - a mocking framework for Go.
- - a BDD framework
- - another BDD framework
- - performant instrumentation/profiling for Go
- - TAP (Test Anything Protocol) parser in Go
- - Concurrent, minimal, extensible and reliable framework that makes it easy to organize and verify the mind model of software.
- - A quick and simple profiler For Golang
- - Painless http testing in Go
- - A terse, easy-to-use testing library for Go
- - A set of packages that provide many tools for testifying that your code will behave as you intend.
- - Make asserts during testing and inside of your applications
Virtual Machines and Languages
- - Extensible, embeddable interpreter
- - A simple Forth parser
- - A flexible and lightweight virtual machine with runtime-configurable instruction set
- - Prolog interpreter in Go
- - A language implemented in Go.
- - An experimental port of TinyRb to Go
- - An independent implementation of the Go language.
- - Forth virtual machine
- - go bindings for CPython C-API
- - This package is built for Embedding PHP into Golang.
- - Create an isolated environment where you install Go packages, binaries, or even C libraries. Very similar to virtualenv for Python.
- - A port of the Lemon parser-generator
- - An LL(1) parser generator for the Go programming language.
- - Go wrapper for LUA's C API
- - A fork of GoLua that works on current releases of Go
- - Tcl interpreter in Go
- - Scheme interpreter in Go
- - A ngaro virtual machine to run retroForth images
- - A JavaScript parser and interpreter written natively in Go
- - Embed SpiderMonkey, the Mozilla JavaScript engine, in your Go program.
- - V8 JavaScript engine bindings for Go
- - mruby (mini Ruby) bindings for Go
Web Applications
- - A Web Application - Twitter's Timeline Digest
- - A frontend for the URL shortener
- - A fast and flexible static site generator implemented in Go
- - Unfollows monitoring for Twitter
- - A fallback HTTP server that may redirect requests with runtime configurable redirections
- - A web-based Seinfeld calendar implemented in Go
- - A static blog engine
- - A polite, slim and concurrent web crawler.
- - Flash player implementation in Go language
- - simple web server with an emphasis on easily browsing images
- - A simple http server to exchange files over http (upload/download)
- - A php-like web framework that allows embedding Go code in web pages
- - a url shortener based on web.go and redis
- - Resource friendly flat file CMS for private and small business sites.
- - A simple HTTP-based to-do queue.
- - a tiny send file server and client
- - Web app to graphical visualization of twitter timelines using the HTML5
- - REST API for RabbitMQ
Web Libraries
Authentication
- - OAuth Consumer
- - A library for header-based OAuth over HTTP or HTTPS.
- - OAuth 1.0 client
- - OAuth 1.0 consumer implementation
- - Package authcookie implements creation and verification of signed authentication cookies.
- - Time-Based One-Time Password Algorithm, specified in RFC 6238, works with Google Authenticator
- - Go port of Google's Authenticator library for one-time passwords
- - HTTP Basic and HTTP Digest authentication
- - HTTP session (cookie) based authentication and authorization
- - Package httpauth provides utilities to support HTTP authentication policies. Support for both the basic authentication scheme and the digest authentication scheme are provided.
- - OAuth 1.0 client library
DOM handling
- - CSS selector library
- - jQuery-like DOM manipulation library, using Go's experimental HTML package.
- - A fluent and functional approach to querying HTML.
- - A CSS selector based html scraping and transformation library
Frameworks and Toolkits
- - Martini is a popular, lightweight, extensible package for writing modular web apps/services in Go
- - Beego is an open source version of the scalable, non-blocking web framework.
- - Blog framework written in Go
- - Golanger Web Framework is a lightweight framework for writing web applications in Go.
- - Go fastcgi client with fcgi params support
- - a web miniframework built using mustache.go, web.go and Go-Redis
- - Web framework with separate data modeling, control and visualization
- - An extensive configuration(tags) based RESTful style web-services framework.
- - A high performance HTTP request router that scales well
- - High productivity web framework modeled on Play! Framework
- - Package for RESTful web applications
- - Web framework for google app engine
- - Generate HTML templates, CSS or SVG without writing < or >
- - Modular HTTP server framework
- - aims to be a simple, small and clean MVC framework for go
- - A small and evil REST framework for Go
- - lean package for building REST-style Web Services
- - A high level web-framework for Go
- - interface to google's urlshorten API
- - Modular web application framework and app server
- - a Web Mvc Framework for golang, mostly like ASP.NET MVC.
- - Golanger Web Framework is a lightweight framework for writing web applications in Go
- - Gorilla web toolkit
- - Lightweight RESTful web framework for Go providing Ruby on Rails style routing
- - Go Web UI Toolkit is a full-featured, easy to use, platform independent Web UI Toolkit written in pure Go.
- - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
- - Client library for interacting with RESTful APIs.
- - Provides a small, opinionated web framework.
- - MVC framework
- - framework for building JSON web services inspired by Dropwizard
- - a simple framework to write webapps
- - Simple web framework designed for and written in go. Works with other lanauges as well, but not as well.
- - A simple web framework similar to JSP. Writing dynamic pages knowing only Go and HTML(or Markdown)
- - A web framework for Go. Just like Struts for Java.
- - A clone of the superb Node.js web framework Express.
HTML forms
- - HTML forms for Golang
- - Form data validation, cleaning and error reporting - a la django.forms
- - Fills in html forms with default values and errors a la Ian Bicking's htmlfill for Python
- - HTML form generator and validator library
- - A package for generating and validating tokens used in preventing XSRF attacks
- - Cross-Site Request Forgery (CSRF) attacks prevention for the Revel framework
Public API Wrappers
- - Interface to the App.net API
- - Client library for the Twitter 1.1 API
- - Go library for the Rackspace Cloud DNS API
- - DuckDuckGo API interface
- - Client library for Sina Weibo.
- - gocaptcha provides easy access to the reCaptcha API in go.
- - Go library for accessing TheDealMap's API
- - API library for dropbox
- - Up-to-date facebook graph API client. Handy and flexible.
- - Go implementations of facebook APIs.
- - A wrapper for Flickr's API
- - Wrapper for the Gravatar API
- - GO Lib GeoIP API for Maxmind
- - Instamojo API wrapper
- - Access mediawiki contents like wikipedia, wiktionary in golang
- - unofficial go bindings for Google Translate API v2
- - Handles reCaptcha form submissions in Go
- - A Client app to use with Recurly's api
- - a simple credit card processing library for Go using the Stripe API
- - Searchify's Go client for the IndexTank full-text search API
- - Go API library for the TripIt web services
- - Twilio library for Go (golang). Very basic at the moment.
- - Gravatar image/profile API library
- - Justin.tv REST API with oauth
- - Access postmark API from Go
- - Client library for Reddit API
- - Generic implementation for interacting with various URL shortening services.
- - Go wrapper for Stack Exchange API
- - Simple Twilio API wrapper
- - Client library for Twitter's API
Other
- - Quick & dirty HTTP static file server
- - Helps prepares CSS and JS files for development and production of Go web apps.
- - a set of libraries to help build web sites
- - Image and audio captcha generator and server
- - Lightweight wrapper around appengine/datastore providing Active Record and DBO style management of data
- - a library to access the 2channel Japanese web bulletin board
- - A net.http.Handler similar to FileServer that serves gzipped content
- - a Go HTTP client with timeouts
- - a packages that reads RSS and Atom feeds
- - Simple RSS parser, tested with Wordpress feeds.
- - another Twitter client
- - a simple Twitter client (supports OAuth)
- - An implementation of the popular XHTML Abstraction Markup Language using the Go language.
- - Json Web Tokens for Go
- - foreman clone
- - A very simple URL router based on named submatches of regular expression that works well with http.Handler .
- - Simple router for go to process url variables
- - An MPD Audioscrobble
- - A Go HTTP server that provides simple command line functionality, config loading, request logging, graceful connection shutdown, and daemonization.
- - Go static site generator
- - -compliant API client and serialisation library.
- - Speak HTTP like a local. (the simple, intuitive HTTP console, golang version)
- - HTTP RPC codecs (json2, soap, rest)
- - A flexible CMS built with Go and MongoDb.
- - A client for kon.tl's URL shortening service
- - an implementation of the Mustache template language
- - Simple muxer for a Go app without regexp
- - A universal XML sitemap generator
- - Creation and verification of secure tokens useful for implementation of "reset forgotten password" feature in web applications.
- - A Sinatra style pattern muxer
- - remote verification API for persona
- - simple, small, light, regexp http muxer with chaining
- - tiny Go library to normalize URLs
- - HTTP Server Push module for the standard http package
- - forked rest.go for improvements and REST consistency
- - Based on rest.go, forked for improvements and REST consistency
- - The robots.txt exclusion protocol implementation. Allows to parse and query robots.txt file.
- - RSS and ATOM feed reader package for the Go programming language.
- - A web session library inspired by Beaker
- - An HTTP User-Agent parser
- - WebDriver (Selenium) client
- - Web and HTTP functional testing utilities. Includes Gorilla testing support.
- - A library for theming existing websites
Windows
- - A tool to shutdown Windows Computer from Command Prompt
- - An easy to use Windows GUI toolkit for Go
- - for the absolute Windows-Go beginner
- - win32 ole implementation for golang
- - Windows API wrapper for Go.
- - "Windows Application Library Kit" for the Go Programming Language
Unix
- - Legacy Unix checksums: cksum, sum
Unsorted; please help!
The following entries have not been filed. Please help by putting these in relevant categories.
- - Backs up your tweets into local files
- - Command line tool to combine wordlist and suffixes/TLDs into domain names and check if they are registered or not
- - EBML decoder
- - Simple gmail multiple accounts cli mail checker
- - Converts any file into manageable Go source code for embedding binary data into a Go program.
- - A small cron job system to handle scheduled tasks, such as optimizing databases or kicking idle users from chat. The cron.go project was renamed to this for
go get
compatibility. - - Ganglia gmetric protocol support
- - A client for the NAT-PMP protocol used in Apple and open-source routers
- - Package xattr wraps OS X functions to manipulate the extended attributes of a file, directory and symbolic link.
- - Simple Client Implementation of WebFinger
- - Go regdom-libs/public suffix list
- - Consistent hashing library (based on )
- - Golang debian control file parser
- - Graphviz DOT language parser for golang
- - golor is a command line tool for golang source code coloring
- - A library for building an evaluating Lindenmayer systems.
- - Presents realtime pcap data as io.Reader objects
- - A Streaming API for XML (StAX) in go
- - tools push stdout/stderr to http chunked
- - formats large numbers into human readable small numbers
- - Command-line utilities to convert "MiB" etc to raw numbers, and back
- - A reverse-proxy cache for external images used on LinuxFr.org
- - Display NAT entries on Linux systems
- - Easily seed PRNGs with some entropy
- - Package spellabc implements spelling alphabet code word encoding.
- - Stress test your disks / memory cards / USB sticks before trusting your valuable data to them
- - strftime implementation
- - Simple independent struct/key-value validation