Skip to content

0.30.0

Compare
Choose a tag to compare
@SeanTAllen SeanTAllen released this 27 Jul 10:39

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.

[0.30.0] - 2019-07-27

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)