0.28.0
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
Summary
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 LLVM_CONFIG
environment
variable to your preferred LLVM installation.
Details
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:
- llvm-config-7
- llvm-config-6
The problem with this approach was that some installations, wouldn't use
the -7
notation. For example, if you download a release directly from
releases.llvm.org, then your llvm-config will simply be llvm-config
.
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:
- llvm-config-7
- llvm-config-6
- ... more stuff ...
- llvm-config
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
Buster (10).
[0.28.0] - 2019-03-22
Fixed
- 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)