.release-notes/0.38.2.md
The 0.38.0 release introduced improvement to handling of short-lived actors. However, in the process it also introduced some race condition situations that could lead to segfaults. 0.38.1 introduced a fix that we hoped would address the problems, however, after that release we realized that it didn't fully address the situation. With this change, we've reworked the implementation of the short-lived actor improvements to avoid the trigger for the known race conditions entirely.
This release fixes a compiler crash that used to occur when certain kinds of assignment expressions that have no logical result value were used as the last expression in an if block, and possibly other control flow constructs as well. Now the compiler makes sure that the code generation for those cases always bears a value, even though the type system guarantees that the value will never be used in such a case. This prevents generating invalid LLVM IR blocks that have no proper terminator instruction.
With the change from Catalina to Big Sur, Apple moved the location of the System library, which broke the linking phase of the compiler. This change fixes the problem by specifying the absolute path of the System library.
Previously, the os_socket_listen and os_socket_connect internal functions would assume that calls to os_addrinfo_intern would never fail. The os_addrinfo_intern function returns a null pointer on failure, which could result in the callers attempting to free an invalid pointer, and causing a segfault. This change adds error handling on the socket functions, which fixes the problem.