SkillAgentSearch skills...

Ponyup

The Pony toolchain multiplexer

Install / Use

/learn @ponylang/Ponyup
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

ponyup

The Pony toolchain multiplexer

Status

This project is currently beta software.

Usage

Install ponyup

On Unix:

sh -c "$(curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/ponylang/ponyup/latest-release/ponyup-init.sh)"

On Windows PowerShell Core:

Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/ponylang/ponyup/latest-release/ponyup-init.ps1' -Outfile ponyup-init.ps1 && &.\ponyup-init.ps1

On Windows Powershell:

Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/ponylang/ponyup/latest-release/ponyup-init.ps1' -Outfile ponyup-init.ps1
&.\ponyup-init.ps1

Note that you will need to have Visual Studio 2022 or 2019 (available here) or the Microsoft C++ Build Tools (available here). Install the Desktop Development with C++ workload, along with the latest Windows 10 SDK (10.x.x.x) for Desktop individual component.

Install Pony

Choose the latest release of the Pony compiler or the latest nightly build.

ponyup update ponyc nightly
ponyup update ponyc release

These commands will download the chosen version of ponyc and install it to $HOME/.local/share/ponyup/bin by default. See the instructions below for how to set the install path and manage Pony applications.

Set install prefix

On Unix:

By default, ponyup will create its root directory in $HOME/.local/share. This prefix can be set manually with the --prefix (or -p) option. All packages selected as default will be symbolically linked into ${prefix}/ponyup/bin. So, by default, ponyup update ponyc release will install ponyc to $HOME/.local/share/ponyup/bin/ponyc.

On Windows:

By default, ponyup will create its root directory in %LOCALAPPDATA%\ponyup. This prefix can be set manually with the --prefix (or -p) option. ponyup will create batch file shims (e.g. ponyc.bat in %LOCALAPPDATA%\ponyup\bin) that will run the selected version.

Install a previous package version

You can install any prior release or nightly build available on Cloudsmith. For example, changelog-tool 0.4.0 can be installed with the following command:

ponyup update changelog-tool release 0.4.0

Show installed package versions

The ponyup show command will display the installed package versions with the selected packages marked as green with an asterisk. If a more recent version is not installed, then the more recent version will be shown in yellow following the selected version.

$ ponyup show
stable-nightly-20191116 *
stable-nightly-20191115
ponyc-release-0.33.0-musl *
ponyc-nightly-20191116-musl
ponyc-nightly-20191115-musl
corral-nightly-20191115 * -- corral-nightly-20191116
changelog-tool-nightly-20191116
changelog-tool-nightly-20191115 *

The show command also has an optional package argument to show only the installed versions of the given package:

$ ponyup show ponyc
ponyc-release-0.33.0-musl *
ponyc-nightly-20191116-musl
ponyc-nightly-20191115-musl

Select an installed package as default

The select command can switch which installed package version to set as default. Here is an example of switching from ponyc release 0.33.0 to nightly 20191116:

$ ponyup show ponyc
ponyc-release-0.33.0-ubuntu18.04 *
ponyc-nightly-20191116-ubuntu18.04
ponyc-nightly-20191115-ubuntu18.04
$ ponyc --version
0.33.0-98c36095 [release]
compiled with: llvm 7.0.1 -- cc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Defaults: pic=true
$ ponyup select ponyc nightly 20191116
selecting ponyc-nightly-20191116-ubuntu18.04 as default for ponyc
$ ponyup show ponyc
ponyc-release-0.33.0-ubuntu18.04
ponyc-nightly-20191116-ubuntu18.04 *
ponyc-nightly-20191115-ubuntu18.04
$ ponyc --version
nightly-20191116 [release]
compiled with: llvm 7.1.0 -- cc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Defaults: pic=true

Platform

Ponyup determines the target platform from the .platform file in its data directory. Use ponyup default to set it:

ponyup default x86_64-linux-ubuntu24.04

Common Issues

  • Unable to install ponyc:

    error: unexpected selection: ponyc release latest x86_64-unknown-linux
    

    This is likely caused by a target triple that does not specify the libc ABI for the platform, as detected by cc -dumpmachine. The solution is to manually set the platform identifier using ponyup default <platform>, where <platform> is a platform identifier such as x86_64-linux-ubuntu24.04.

Development

Vendored LibreSSL

macOS builds statically link against vendored LibreSSL libraries in lib/. This eliminates the runtime dependency on Homebrew's LibreSSL, which would break when Homebrew updates to a newer version.

To update the vendored LibreSSL version, trigger the "Update vendored LibreSSL" workflow from the Actions tab with the desired version number. The workflow builds on both macOS architectures (using the same CI runners as release builds) and opens a PR with the updated .a files.

View on GitHub
GitHub Stars214
CategoryDevelopment
Updated32m ago
Forks13

Languages

Pony

Security Score

100/100

Audited on Apr 4, 2026

No findings