# FixScript Documentation

- Version: 0.5
- Homepage

## ChangeLog

### Version 0.5 (2021/05/12):

- Added ability to set time limit for execution of scripts
- Added ability to stop execution of scripts from another thread
- Added ifloor, iceil, clamp, fclamp, add64 and sub64 intrinsic functions
- Added script_line function
- Added non-heap references to shared arrays in C API
- Added array_get_element_size function
- Added ability to reload scripts in-place replacing previous functions
- Added variant of array_fill function for the whole array
- Added ability to retrieve list of functions from script
- Improved error reporting of syntax errors produced by token processors
- Changed to use full error when optional native function is called without obtaining the error
- Changed heap_size function to return size in kilobytes
- Changed tokens_parse function to return the reference of the tokens array
- Changed the way compiler errors are handled (values instead of strings)
- Changed and renamed fixscript_create_shared_array_from to be clear what it does
- Removed trailing newlines in fixscript_to_string and in compiler errors
- Fixed crash when calling non-existing functions when running token processors in fixembed
- Fixed compression of scripts in fixembed
- Fixed fixscript_dump_value to properly end line when newlines are not used
- Fixed fixscript_set_heap_data to properly free data on all errors
- Fixed comparison of unresolved function references
- Fixed wrong clearing of temporary roots when native handlers invoke root clearing operation during GC
- Fixed inadequate adding of shared arrays to temporary roots
- Fixed crash on unclosed multiline comments
- Fixed handling of strings that contain nulls when dumping and logging
- Fixed small memory leak in perf_log function
- Fixed missing string escaping in to_string and dump
- Fixed too small precision when converting doubles to string
- Fixed inability to catch stack overflow errors
- Fixed crash when getting script name or function with no script provided in C API
- Fixed writing of floats to shared arrays

### Version 0.4 (2020/10/13):

- Added ability to change file name for specific lines in stack trace
- Added ability to insert virtual functions into stack trace
- Added escape sequence for 8-bit values in string and char literals
- Added safeguard against recursive GC collection during freeing of native handles
- Added ability to get native functions in C API
- Added checking for misaligned pointers in fixscript_create_shared_array_from
- Added fixscript_get_shared_array to get existing references to shared arrays
- Changed weak references to not allow referencing another weak reference directly
- Removed unneeded recursion limits for cloning and serialization
- Removed recursion in cloning, serialization and GC marking phase
- Fixed serialization of integers in arrays
- Fixed stack overflow errors to include stack trace
- Fixed parsing of floats to work with different locales
- Fixed passing of parameters to scripts in 64-bit Windows

### Version 0.3 (2020/04/19):

- Added ability to mark and clone references held on the native side
- Added support for weak references
- Changed native handle function signature to pass pointer to heap
- Fixed reading of empty files in fixembed
- Fixed bug in obtaining of directory list in fixembed on Windows
- Fixed crash in script_query when querying constants that reference built-in constants
- Fixed checking for uninitialized heap keys for user data
- Fixed perf_log not working the first time on Windows

### Version 0.2 (2020/02/06):

- Added compatibility with MSVC (ability to use switches instead of computed goto)
- Added running of token processors in fixembed to speedup loading of scripts
- Added compression in fixembed
- Added ability to exclude files in fixembed
- Added ability to embed binary files in fixembed
- Added string_from_utf8 and string_to_utf8 functions
- Changed free function signature for shared arrays with custom data
- Fixed incorrect embedded script names in the root directory (fixembed)
- Fixed wrong deallocation of user data attached to heap
- Fixed checking for negative lengths in serialized format
- Clarified how an empty array is serialized

### Version 0.1 (2019/12/26):

- Initial release