# Install io with Homebrew, MacPorts, Nix

Small prototype-based programming language. Version 2017.09.06 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:io
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install io
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install Io
```

  Evidence: MacPorts ports tree: lang/Io/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#io
```

  Evidence: nixpkgs package indexes: pkgs/by-name/io/io/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:io
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/io>
- **Version:** 2017.09.06
- **Source summary:** Small prototype-based programming language
- **Homepage:** <http://iolanguage.com/>
- **Repository:** <https://github.com/IoLanguage/io>
- **Upstream docs:** <https://iolanguage.org/guide/guide.html>
- **License:** BSD-3-Clause
- **Source archive:** <https://github.com/IoLanguage/io/archive/refs/tags/2017.09.06.tar.gz>
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- io (cli)
- io_static (cli)
- io (alias)
- io_static (alias)

## Build dependencies

- cmake
- pkgconf

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, monterey, sonoma, ventura, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 2017.09.06
- Local data: ok
- Upstream repository: https://github.com/IoLanguage/io
- Upstream latest detected: 2017.09.06 (current)
- info: No package-manager update timestamp was available.
## Project history and usage

Io is a small dynamic prototype-based programming language built around message passing, prototype objects, runtime-inspectable code, and a compact VM. Its official materials place it in the lineage of Smalltalk, Self, NewtonScript, Act1, Lisp, and Lua, with an emphasis on conceptual unification rather than surface syntax.

### Project history

The official timeline says Steve Dekorte began Io in March 2002 as a minimal prototype-based language, with early public releases and a programming guide appearing through the Yahoo Group community shortly afterward. In its first year, Io gained actors, coroutines, incremental garbage collection, weak links, networking, and a quickly expanding addon system.

Io entered programming-language culture through its compact object model and message-tree semantics. The official timeline records a Lua Workshop talk and an ACM Dynamic Languages Symposium presentation in 2005, then source-history moves from email patches to a public DARCS repository, git hosting, and GitHub.

The project continued to evolve through build-system and runtime changes, including a CMake transition in 2010, Eerie package-manager work under the IoLanguage organization from 2017, and a later WebAssembly/WASI direction with JavaScript bridging. The Homebrew package is therefore attached to a language with a long experimental runtime history, not just a frozen curiosity.

### Adoption history

Io never became a mainstream application language, but it became memorable among programming-language enthusiasts because its tiny syntax exposes prototypes, messages, futures, actors, and code-as-data ideas directly. Its package-manager presence in Homebrew, MacPorts, and Nix reflects that role as a language runtime people install to explore or preserve a distinctive design.

Adoption is best understood as educational and exploratory. Io is the kind of package that appears in language surveys, polyglot exercises, and prototype-object discussions because it shows a coherent alternative to class-based object systems and keyword-heavy syntax.

### How it is used

Users run the `io` interpreter or build the runtime to experiment with message sends, prototype cloning, slots, blocks, addons, and concurrency constructs. The official guide and reference are central because the language's unusual semantics are easier to understand through examples than through command flags alone.

### Why package nerds care

Io matters to package nerds because it preserves a compact, radical language design in executable form. It also has the classic packaging shape of a niche language runtime: VM, interpreter, standard library, historical native addons, documentation, tags, branches, and compatibility questions across Unix-like systems.

Its significance is disproportionate to install counts. A package manager carrying Io lets users reproduce examples from programming-language books and discussions, inspect a prototype-based VM, and compare the packaging demands of small language runtimes against larger ecosystems.

### Timeline

- 2002-03: Steve Dekorte begins work on Io.
- 2002-04: Early public releases and a programming guide appear through the early community.
- 2005-07: Io is presented at the Lua Workshop.
- 2005-10: Io is presented at the ACM Dynamic Languages Symposium.
- 2007-03: Source history moves from DARCS to git.
- 2008-02: The Io repository appears on GitHub.
- 2010-05: The build moves to CMake.
- 2017-11: Eerie package-manager work is rewritten under the IoLanguage organization.
- 2026: WASM/WASI work, stackless evaluation, resumable exceptions, and JavaScript bridging are recorded in the official timeline.

### Related projects

- Self and Smalltalk are core influences on Io's object and message model.
- NewtonScript, Act1, Lisp, and Lua are cited by the project as design influences.
- Eerie is the related Io package manager recorded in the official timeline.

### Sources

- <https://github.com/IoLanguage/io>
- <https://iolanguage.org/>
- <https://iolanguage.org/Timeline/index.html>
- <https://iolanguage.org/guide/guide.html>
- <https://iolanguage.org/reference/index.html>


## Security Notes

generalized runtime or code generation signal.

- **Geiger risk:** yellow / medium
- generalized runtime or code generation signal

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** io
- **Version Scheme:** 0
- **Revision:** 1
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Nix - io: normalized package name match | nixpkgs package indexes: pkgs/by-name/io/io/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- MacPorts - Io: normalized package name match | MacPorts ports tree: lang/Io/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Related links

- [Secret-risk packages](https://www.automicvault.com/pkg/secret-risk-packages/) - Has protected-tool coverage, approval-gate, or non-low Geiger security signals.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Language runtime packages](https://www.automicvault.com/pkg/language-runtime-packages/) - Matched language runtime, compiler, or interpreter metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [cmake](https://www.automicvault.com/pkg/brew/cmake/) - Build dependency declared by Homebrew.
- [pkgconf](https://www.automicvault.com/pkg/brew/pkgconf/) - Build dependency declared by Homebrew.
- [gnu-apl](https://www.automicvault.com/pkg/brew/gnu-apl/) - Shares av.db curated category or tags: cli, language-runtime, programming-language, scripting.
- [gosu](https://www.automicvault.com/pkg/brew/gosu/) - Shares av.db curated category or tags: cli, language-runtime, programming-language, scripting.
- [groovy](https://www.automicvault.com/pkg/brew/groovy/) - Shares av.db curated category or tags: cli, language-runtime, programming-language, scripting.
- [janet](https://www.automicvault.com/pkg/brew/janet/) - Shares av.db curated category or tags: cli, language-runtime, programming-language, scripting.
- [julia](https://www.automicvault.com/pkg/brew/julia/) - Shares av.db curated category or tags: cli, dynamic-language, language-runtime, programming-language.
- [lua](https://www.automicvault.com/pkg/brew/lua/) - Shares av.db curated category or tags: cli, language-runtime, programming-language, scripting.
- [luau](https://www.automicvault.com/pkg/brew/luau/) - Shares av.db curated category or tags: cli, language-runtime, programming-language, scripting.
- [nu](https://www.automicvault.com/pkg/brew/nu/) - Shares av.db curated category or tags: cli, language-runtime, programming-language, scripting.

## Combined YAML source

View the package source record on GitHub. [combined/io.yml](https://github.com/automic-vault/db/blob/main/combined/io.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
