This release comes with an important fix for #3153953, and also solves several other issues. Here's the changelog:
[changed]
- 'CLOSE #0' now returns an error, instead of closing all open file handles
[fixed]
- Bitfields were allowed to be passed to BYREF parameters
- #3153953: Faulty reoptimisation of constant optimizing in complex nested addition/subtraction expressions
- #3327533: Internal compiler error trying to parse non-integer bounds in array declarations
- C emitter: Erroneous '.0' being appended to double floating point literals like '1e-100'
- C emitter: Hidden UDT result parameters were emitted last rather than first in function declarations
- Fixed buggy PRINT USING floating-point scaling, now works more consistently across all platforms
- Built-in defines (__FILE__ & co) didn't use $ to prevent escaping
- time() crashed when the system time couldn't be retrieved
- Extra CR printed in -exx runtime error messages
FreeBASIC-0.23.0-linux.run (the self-extracting installer) was using non-root file/directory permissions and has been reuploaded to fix that. Please reinstall using the new installer, or fixup the ownership/permissions of /usr/local sub-directories manually. Sorry for the trouble.