0.30.0 Released

Saturday, July 27, 2019 | Posted in Release

Pony version 0.30.0 is now available. This is a high-priority bug fix release that contains a fix for a bug that could cause Pony programs to segfault. We recommend upgrading as soon as possible. Also note, this release does include a breaking API change (albeit small). Please note that, at this time, the update to Homebrew has yet to be merged, but should be within a day. All other release targets are completed.

Fix segfault due to Cycle Detector viewref inconsistency

Prior to this fix, the Cycle Detector could end up in a situation where it would have an inconsistent viewref which would result in a segfault with the cycle detector trying to send a message to an actor that was already destroyed.

Make Map insertion functions total

Before this change, code that inserts into maps might look like:

try map.insert("key", 1)? end
try map.insert_if_absent("key", 5)? end
try
  map.upsert("key", 1, {(current, provided) => current + provided})?
end

Af ter this change, the question marks and the surrounding try expressions can be removed. Respectively, the above blocks become:

map.insert("key", 1)
map.insert_if_absent("key", 5)
map.upsert("key", 1, {(current, provided) => current + provided})

Remove glob from the standard library

The glob package is being removed from the standard library and moved to a new home at https://github.com/ponylang/glob/ where it will live on as an independent library.

It is being removed because it has a transitive dependency on an external library libpcre and that dependency makes creating release artifacts more difficult.

At the moment we have to deal with packaging up pcre for each Linux distro etc and they all have their own methods to do so. This lead us to do a lot of work on supporting distro specific packaging. That has turned out to be too much work. We are moving to having a single glibc Linux friendly .tar.gz that can be done to install Pony.

To faciliate this move, we decided that we want to remove items from the standard library that depend on external libraries like pcre. Full conversation about the decision is available in the audio of the Pony development sync July 9, 2019 audio that you can download from: https://sync-recordings.ponylang.io/r/2019_07_09.m4a

Remove regex package from standard library

The regex package is being removed from the standard library and moved to a new home at https://github.com/ponylang/regex/ where it will live on as an independent library.

It is being removed because it has a dependency on an external library libpcre and that dependency makes creating release artifacts more difficult.

At the moment we have to deal with packaging up pcre for each Linux distro etc and they all have their own methods to do so. This lead us to do a lot of work on supporting distro specific packaging. That has turned out to be too much work. We are moving to having a single glibc Linux friendly .tar.gz that can be done to install Pony.

To faciliate this move, we decided that we want to remove items from the standard library that depend on external libraries like pcre. Full conversation about the decision is available in the audio of the Pony development sync July 9, 2019 audio that you can download from: https://sync-recordings.ponylang.io/r/2019_07_09.m4a

Remove OpenSSL as a requirement for building Pony

The net/ssl and crypto packages are being removed from the standard library and moved to a new home at https://github.com/ponylang/net-ssl/ and https://github.com/ponylang/crypto respectively. Each will live on as an independent library.

They are being removed because they have a transitive dependency on an external library openssl and that dependency makes creating release artifacts more difficult.

At the moment we have to deal with packaging up openssl for each Linux distro etc and they all have their own methods to do so. This lead us to do a lot of work on supporting distro specific packaging. That has turned out to be too much work. We are moving to having a single glibc Linux friendly .tar.gz that can be done to install Pony.

To faciliate this move, we decided that we want to remove items from the standard library that depend on external libraries like openssl. Full conversation about the decision is available in the audio of the Pony development sync July 9, 2019 audio that you can download from: https://sync-recordings.ponylang.io/r/2019_07_09.m4a

Stop creating Buster Debian packages

When Buster graduated to a supported Debian version, they dropped LLVM 3.9. We were relying on that LLVM 3.9 support. All our Debian packaging code assumes that the LLVM version is used across distros. With Buster dropping LLVM 3.9, that is no longer the case. We could spend time fixing that so that our releases work again, however, we are moving away from doing distro specific packaging.

Given that we don’t want to continue doing distro specific releases, we are instead removing building Buster packages now. Expect to see a new release packaging system roll out over the next couple of months.

Fixed

  • Fix which dtrace path check (PR #3229)
  • Fix segfault due to Cycle Detector viewref inconsistency (PR #3254)

Changed

  • Make Map insertion functions total (PR #3203)
  • Stop building Tumbleweed packages for releases (PR #3228)
  • Stop creating Debian Buster releases (PR #3227)
  • Remove glob package from standard library (PR #3220)
  • Remove regex package from standard library (PR #3218)
  • Remove crypto package from standard library (PR #3225)
  • Remove net/ssl package from standard library (PR #3225)

AUTHOR

Sean T. Allen

Sean is a member of the Pony core team. His turn-ons include programming languages, distributed computing, Hiwatt amplifiers, and Fender Telecasters. His turn-offs include mayonnaise, stirring yogurt, and sloppy code. He is one of the authors of Storm Applied, and VP of Engineering at Wallaroo Labs.