github ponylang/ponyc 0.37.0

latest releases: 0.58.4, 0.58.3, 0.58.2...
3 years ago

Fix unsound return types being allowed for autorecover

The existing autorecover code was checking whether it was safe to write to the recovery cap, regardless of whether it was an argument. That's correct for arguments, but for result types we need to ensure that it's safe to extract.

Safety to extract is derived from Steed's extracting table: a type is safe to extract if results in itself under extracting viewpoint adaptation. Thus it is unsound to extract trn from trn, but it is sound to extract box.

Revert RFC 67

The original intent behind RFC0067 was to make it easy to add a prefix with the
log level for any given log message. However, there is a logic bug in the
implementation; the log level prefix added to messages in LogFormatter would
always be the log level specified in Logger.create(), not the log level desired
at specific call sites. This would lead to misleading log messages where the log
level prefix doesn't match the severity of the log message, such as "FINE:
Critical error. Shutting down".

It would be better if these changes were reverted so a more thought-out solution
could be implemented in the future.

Always allow field access for objects defined inside a recover block

Some field accesses were incorrectly being rejected inside recover blocks. This fix allows all nested field accesses on variables which were defined inside the recover block, like the examples below:

recover
   let x = ...
   let y = x.y
   x.y = Foo
   x.y.z = y.z
end

[0.37.0] - 2020-08-28

Fixed

  • Fix unsound return types being allowed for autorecover (PR #3595)
  • Fix compile error with GCC 8.3 (PR #3618)
  • Always allow field access for objects defined inside a recover block (PR #3606)

Changed

  • Update to basing musl images off of Alpine 3.12 (PR #3609)
  • Revert "Implement RFC0067" (PR #3619)

Don't miss a new ponyc release

NewReleases is sending notifications on new releases.