Pony Considerations
If you're thinking of checking out the Pony programming language, here's a list of things that I think are important to know. This list is based on a Tweet that I wrote.
Editor/IDE support
There are Pony packages for several popular editors.
- Emacs
- Sublime
- Vim
- Atom
- Visual Studio: VS pony
- Visual Studio Code: Pony Language Colorizer
- BBEdit
- CTags
There is currently no support for popular IDEs like Eclipse or IntelliJ.
Build Tools
The Pony compiler can handle all of the work of building and linking Pony programs. If anything more complex is needed the most common solution is to use a Makefile. There's a Gradle plugin as well.
Compiler/Runtime
Pony programs are compiled into native code using ponyc. The compiler is based on LLVM.
If you are on a Mac using Homebrew you can install it with brew install ponyc. If you are on Ubuntu you can use
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys "D401AB61 DBE1D0A2"
echo "deb https://dl.bintray.com/pony-language/ponyc-debian pony-language main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get -V install ponycDebugging
The Pony compiler can create a debug build of a program that works with lldb (it also works with gdb, but that has been less tested). Here's the Pony LLDB Cheatsheet. You can set breakpoints and inspect variables. The pony-lldb extension makes it a little easier to inspect things like strings and arrays.
Package Management
There's a project called stable that can be used to download packages and manage dependencies.
If you are on a Mac using Homebrew you can install it with brew install pony-stable. If you are on Ubuntu you can use
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys "D401AB61 DBE1D0A2"
echo "deb https://dl.bintray.com/pony-language/pony-stable-debian /" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get -V install pony-stableCommunity
There's a mailing list and a #ponylang IRC channel on irc.freenode.net. There is also a @ponylang Twitter account.
Testing
The standard library ships with a unit testing framework. It should look pretty familiar if you've used other unit testing frameworks. There are lots of unit tests for the standard library packages, so you can look at those as examples (here's the tests for the option parser).
There's also a property based testing system if you're into that kind of thing.
Project Organization
The Pony compiler is pretty flexible about where to find things. Packages are mapped on to directories, but files within those directories can contain any number of classes and can use any name that ends in .pony.
There's a project called Library Project Starter that can be used to set up a Pony project with some basic files for version control, CI, and documentation. The Pony Standard Library Style Guide includes recommendations for file naming.
Documentation
Pony supports package- and class-level doc strings. The compiler can then use these to generate documentation. The standard library documentation uses this system.
Learning
The main resource for learning Pony is the Pony Tutorial.
The link to Ponlylang in the first paragraph is broken