Skip to content

0.35.0

Compare
Choose a tag to compare
@ponylang-main ponylang-main released this 11 May 20:40

Pony version 0.35.0 is now available. If you are running Pony on an ARM based CPU, we recommend updating as soon as possible.

Check it out!

We've fixed a bug in the Pony runtime that would impact on ARM based CPUs and have undetermined, but definitely not good results. If you use Pony on ARM, update now.

Otherwise, there's not a ton that's new in Pony 0.35.0. We've fixed a bug in the CommandParser package and introduced a breaking change to the ProcessMonitor package. Details are below...

Correctly report process exit status

Processes spawned with ProcessMonitor that have been terminated by signals have been reported as exited with exit-code 0. Now ProcessNotify.dispose receives a ProcessExitStatus, which is either an instance of Exited containing the exit-code, if the process terminated normally, or an instance of Signaled containing the signal number which terminated the process e.g. 9 if it has been terminated by KILL.

Before (ponyc <= 0.34.1):

class MyNewProcessNotify
    ...
  fun ref dispose(process_monitor: ProcessMonitor ref, child_exit_code: I32) =>
    if child_exit_code != 0 then
      out_stream.print("non-successful run, terminated normally with " + child_exit_code.string())
    else
      out_stream.print(
        """
        factually either all good, terminated normally with 0,
        or killed by signal, we simply dont know.
        """)
    end

After (0.35.0 and onwards):

class MyNewProcessNotify
    ...
  fun ref dispose(process_monitor: ProcessMonitor ref, child_exit_status: ProcessExitStatus) =>
    match child_exit_status
    | let e: Exited if e.exit_code() != 0 => 
      out_stream.print("terminated normally with " + e.exit_code().string())
    | let s: Signaled => 
      out_stream.print("killed by signal  " + s.signal().string())
    else
      out_stream.print("exited with 0, all good")
    end

Fix CommandParser incorrectly handling multiple end-of-option delimiters

Fixed an issue where CommandParser was incorrectly handling cases when arguments contain multiple end-of-option delimiters. For example, corral exec -- lldb ponyc -- $(ponyc) -V=0 -o ./build/.

[0.35.0] - 2020-05-11

Fixed

  • Fix CommandParser incorrectly handling multiple end-of-option delimiters (PR #3541)
  • Correctly report process termination status in ProcessNotify.dispose() (PR #3419)
  • Ensure non-blocking process wait and correctly report process exit status (PR #3419)
  • Fix atomics usage related to actor muting for ARM (PR #3552)

Added

Changed

  • Ensure that waiting on a child process when using ProcessMonitor is non-blocking (PR #3419)