Full Changelog: v0.8.3...v0.8.4
Issues:
- Cache Invalidation: The cache was not being invalidated correctly if storage types were read before making an external call that modified those storage cells. Subsequent reads would not reflect the updated storage values, returning stale data from before the external call.
- Reentrancy: Occurs when using Solidity and Stylus contracts together. There is a possibility of reentrancy not being properly detected if a combination of reentrant and non-reentrant contracts are used and call into each other. To mitigate the risks of this, we have changed the behavior of external calls from stylus to always flush its cache. The
msg::reentrant()
hostio also may be unreliable, so relying on it for safety should be avoided.
Breaking Changes:
- Storage types no longer implement
Deref
which some contracts may have been using. the.get()
method of each storage type should be used instead.