Skip to content

@SeanTAllen SeanTAllen released this Mar 22, 2019

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)

Changed

  • Stop Supporting Ubuntu Artful (PR #3100)
  • Upgrade Docker image to use LLVM 7.0.1 (PR #3079)
  • Stop trying to be clever when finding user's LLVM installation (PR #3077)
  • Stop supporting Ubuntu Trusty (PR #3076)
  • Stop supporting Debian Jessie (PR #3078)
Assets 2