How to install Pony on windows 10 using WSL 2
Pony is a very young language compared to other pioneers like C/C++ or Python.
Its creation started in 2012 with a guy called Sylvan Clebsch but its popularity began to rise in 2017.
In general terms, Pony is an object oriented programming language which means that you can create classes, interfaces, traits, ...
But the main difference that Pony has, is that it also an Actor/Model oriented programming language. Actors are objects that look like classes except that their behaviours are asynchronous.
In other words, if you call the behaviour
foo before another behaviour called
bar, in some cases, depending on the body of these behaviours,
bar can return a result before
Well, we've talked enough about the technique. In this article, we'll learn how to install Pony on windows 10 using WSL 2.
Well, in order to install Pony on Windows 10 using WSL 2, you will need to have an up and running WSL distro. If it is not the case, I recommend you to check this post : Enable Linux subsystem on Windows 10
I will show you how to enable WSL on Windows 10 and to install a linux distribution.
Once it's done, launch the distribution you've just installed and go to the next step.
Install the Pony toolchain multiplexer
Also known as
Ponyup, this tool will help you install the compiler, perform updates, ... Without it, you won't be able to install anything.
Installing ponyup is very simple. The official Ponyup repository provides a command to automatically download the installation script.
sh -c "$(curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/ponylang/ponyup/latest-release/ponyup-init.sh)"
This command will automatically download the latest ponyup version and install it.
At the end of the installation, it should prompt something like this.
ponyup placed in /home/user/.local/share/ponyup/bin You should add /home/user/.local/share/ponyup/bin to $PATH: export PATH=/home/user/.local/share/ponyup/bin:$PATH setting default platform to x86_64-unknown-linux-gnu
Indeed, the ponyup command is, for the moment, not accessible globally. So, i order to be able to compile file wherever we want, we need to make it executable globally.
Make it executable globally
There are 2 ways to make the ponyup script executable globally :
- By updating the
- By creating a symbolic link in the
They are both equivalent, so you can choose either the first or the second option.
Update the $PATH global variable
The command below will simply update the
$PATH global variable.
But in order to refresh this variable, you have to either restart your terminal or execute the following command. It will manually refresh the
But for some reason, after updating the
$PATH variable, I wasn't able to access the ponyup scriptp globally. That's why I recommend you to choose the option below.
Create a symbolic link
As we've seen earlier, the ponyup script has been installed in the
We'll create a symbolic link between
/usr/bin/ponyup. This link will act as a bridge between these 2 files.
sudo ln -s /home/user/.local/share/ponyup/bin/ponyup /usr/bin/ponyup
By calling the ponyup script from the
/usr/bin folder, it will call the ponyup script from the original folder which is
Now, if you execute the following command, you should have a result.
Set default platform
The next step is to define the default platform. It will depend on the linux distribution you've chosen. In my case, because i'm running on Ubuntu 20.04, i'll need to choose :
ponyup default ubuntu20.04
You can choose between multiple platform. For more details, you can check the official documentation.
As mentionned in the documentation, if you can't find your platform in the list in the official documentation, you can skip this part.
Install a C compiler
This step is crutial. Because Pony in built using C, you need to install a C compiler such as Clang. This is the one recommended by the official docimentation.
To install the Clang library, you can just call the
apt install command.
sudo apt install clang
On other distributions such as Fedora or CentOS, the command might change.
On Fedora :
sudo dnf install clang
On CentOS :
sudo yum install clang
For distribution other than Debian based, you need to install additional libraries. Here is the list of additional requirements provided by the official documentation
Install the latest ponyc release
The last step to have an up and running Pony environment is to install the Pony compiler, also know as
ponyup update ponyc release
As fr the ponyup script, you'll need to make it executable globally. In the same way, you can update the
$PATH variable but I recommend you to create a symbolic link with the command below.
sudo ln -s /home/user/.local/share/ponyup/bin/ponyc /usr/bin/ponyc
Now, everything should be good to use the Pony language. Let's try it out.
In the WSL terminal, will create a very simple Pony project.
cd mkdir helloworld && cd helloworld touch main.pony
It is important to note that the file name is not important. At least, it needs to end with the
Then, we will modify this file.
You can type anything you want but for the purpose of this article, we will only copy and paste the code example provided by the official Pony tutorial website.
actor Main new create(env: Env) => env.out.print("Hello, world!")
To save the file and exit, you can press
Now, you can compile the file we've just created.
ponyc -o bin
-o flag means that i want to specify the output folder. In this case, every files created by this command will be located in
/bin or your project folder.
To run it, just type :
You should come up with something like this :
The Pony language is very promising. It aim to be as fast as other languages like C or C++. It is also type safe, memory safe, exception safe, ...
It is also an Actor/Model language like Erlang.
The next step is to create a development environment where you can easily edit and compile your code. We'll cover this part in another post later on.
Cover by Soledad Lorieto