Pony 0.28.0 is a high-priority release. We advise updating as soon as possible.
In addition to a high-priority bug fix, there are “breaking changes” if you build Pony from source. We’ve also dropped support for some Debian and Ubuntu versions. Read on for further details.
Ensure methods reached through a union are detected as reachable
Prior versions of Pony contained a bug in code reachability analysis that caused deterministic runtime crashes due to undetected reachability of a method call under certain specific conditions, including:
- the method being called only through a trait within a union type
- the order of compilation causing the concrete type to be seen as reachable after reaching the method call
The issue has been fixed in this release, and it’s recommended that all users update to prevent the possibility of such runtime crashes.
Stop trying to be clever when finding user’s LLVM installation
We used to try and guess the location of your LLVM installation. Going forward,
we will use the first
llvm-config found in your path to locate the LLVM
installation. To override this behaviour, set the
variable to your preferred LLVM installation.
Prior to this commit, we were trying to be clever by trying to find the user’s LLVM installation whereever their package manager of choice might put it. This was, in the end, a losing battle. We were constantly adding more and more variations.
To make it worse, we tried to have a hierarchy where we would look for LLVM 7 first then 6 etc. We did this by looking something like:
The problem with this approach was that some installations, wouldn’t use
-7 notation. For example, if you download a release directly from
releases.llvm.org, then your llvm-config will simply be
We discovered this when, after a user installed LLVM 7 from releases.llvm.org, and the build process continued to have LLVM 6 used because the search looked something like:
- … more stuff …
In the end, that’s all just too much clever.
With this change, we’ll use the first
llvm-config we find in your path
if you haven’t set the
LLVM_CONFIG environment variable which should be
considered the preferred way to select an LLVM when building ponyc.
Stop building packages for older Ubuntu and Debian’s
As of 0.28.0 we no longer build binary
ponyc packages for Ubuntu Trusty (14.04
LTS), Ubuntu Artful (17.10), and Debian Jessie (8). We still build binary
packages for Ubuntu Xenial and Bionic as well as Debian Stretch (9) and Debian
- Ensure methods reached through a union are detected as reachable. (PR #3102)
- Fixed issue with ponyc not being able to find Visual Studio Build Tools in non-standard locations. (PR #3086)
- Update TCPConnection docs around local and remote addresses (PR #3050)