FixScript SDK Documentation
Back to summary
ChangeLog
Version 0.6 (2024/05/05):
- FixScript 0.9
- Added ability to postprocess tokens after normal processing
- Added ability to compile and run dynamic code in token processors
- Added ability to create constant strings
- Added ability to get auto suspend handler in C API
- Added array_clear function
- Added ability to compare values in C API
- Added ability to call function references with parameters stored in array
- Improved fixscript_resolve_existing to return existing scripts so it can be used in normal script loading
- Improved performance of GC
- Changed cloning to not make copies of constant strings
- Changed object_extend function to give error when trying to make the object smaller
- Fixed parsing of negative numbers in stack_trace_lines constant
- Fixed memory leak when using tokens_parse function with improper parameters
- Fixed importing of already compiled scripts when loading from files
- Fixed internal reload script name not being replaced in stack traces
- Fixed crash in JIT due to non-updating of embedded references at one place
- Fixed parsing of integer constants followed by two dots to not be parsed as float constants
- Fixed charset conversion in built-in log function on Windows
- Fixed improper counting of instructions in asynchronous mode
- Fixed infinite loop in script_line function
- Fixed missing file name and line in errors for imports referencing non-existing scripts
- Fixed allocation of extra unneeded memory during JIT compilation
- Fixed limitation by stack size in array/hash literals and in string concatenations
- Fixed parsing of ternary operator in extended operator
- Fixed improper stack state for suspended native functions in asynchronous mode
- Fixed error reporting using wrong heap at one place in fixembed
- FixScript Macros 0.6
- Added ability to generate arbitrary code using inline code snippets
- Added ability to create string literals from macro parameter tokens
- Fixed memory leak caused by not cleaning of private macros
- FixScript Classes 0.8
- Added automatic checking that given script is using classes when the API is being used
- Added ability to accept multiple different types in function parameters
- Added ability to use foreach on strings
- Added direct syntax for using structs with indicies
- Added support for length property in arrays, strings, hash tables and struct arrays
- Added support for first and last properties in struct arrays
- Added more precise types for built-in functions
- Added ability to call built-in functions for arrays, strings and hash tables with OOP syntax
- Added ability to define custom extension methods for arrays, strings and hash tables
- Added ability to import other scripts when using class definition attributes
- Added more strict handling of function return types
- Added ability to append new tokens during processing of classes in API
- Improved memory utilization of global metadata after processing
- Fixed importing of locals by not including transitively included locals
- Fixed custom inplace operators sometimes throwing an internal error during processing
- Fixed array and hash table literals to use appropriate type
- Fixed implicit type conversion to work with arrays and hash tables
- Fixed checking of types for non-overridable calls of built-in functions
- Fixed checking for member attributes with undefined class attributes
- Fixed checking of types when retrieving two result values from functions
- Fixed checking for unclosed classes and functions
- Fixed checking for duplicate classes
- Fixed parsing of ternary operator in extended operator
- Fixed propagation of errors when checking for script existence in import statement
- Fixed get_method_real_name method in ClassType to use proper base class (in API)
- FixScript Unpack 0.4
- Relaxed parsing of parameters to allow better interoperability with other token processors
- Changed syntax for named packed parameters to not collide with type declarations
- Fixed special handling of 'this' to be applied to the first parameter only
- FixScript Optional 0.3
- Fixed parsing of conditional sections
- FixIO 0.8
- Added support for SQLite and PostgreSQL
- Added ability to close redirected streams in Process
- Added conversions between strings and native charset used by OS
- Added ability to show prompt in console and improved print functions
- Added set_log_function to allow customization of logging (moved from FixBuild)
- Added advanced console access
- Added ability to obtain process ID
- Added CRC-32 checksum to detect corruption of rollback in AtomicFile
- Added support for WebAssembly
- Adjusted for syntax improvements in classes
- Changed file open modes with improved options
- Fixed print functions by adding missing conversion to native charset
- Fixed killing of processes not being implemented on Windows
- FixImage 0.7
- Added short variants of Rect constructors
- Added variants of string functions with offset/length in Font and ScaledFont
- Adjusted for syntax improvements in classes
- FixGUI 0.8
- Added support for timers on MacOS
- Added TextArea
- Added ability do disable text fields, text areas and buttons
- Added utility function to remove SubView from it's parent
- Added ability to set text color of text area on MacOS
- Added support for search field on MacOS
- Added initial support for Table on MacOS
- Added support for quick previewing of files on MacOS
- Added support for attributes in SubView
- Improved colors of PureScrollBar in custom theme
- Adjusted for syntax improvements in classes
- Changed to call completion handler after population of default values in FixScriptSyntax
- Fixed notify icon not being highlighted when pressed on MacOS 10.9 or older
- Fixed incorrect releasing of objects on MacOS
- Fixed incorrect image creation for notify icon on MacOS
- Fixed scrolling to visible rect to be ignored when SubScrollView has invalid size
- Fixed last newline handling when setting and getting text in CodeEditor
- Fixed scaling of SubDivider
- FixTask 0.6
- Added ability to create constant strings in Heap
- Added ability to compare values in Heap
- Added Barrier
- Added support for WebAssembly
- Adjusted for syntax improvements in classes
- Fixed loading of scripts in Heap by checking for already loaded scripts first
- Fixed obtaining of error when sending non-copyable reference through synchronous channel
- FixNative 0.4
- Added support for WebAssembly
- Adjusted for syntax improvements in classes
- Changed destructor to hold external reference to callback data
- Fixed get_float function in Pointer
- FixBuild 0.6
- Added ability to get path to FixBuild binary and get list of available targets in build scripts
- Added ability to specify multiple main scripts for cases where static detection is insufficient
- Added embedded SQLite library
- Added support for WebAssembly target
- Improved storing of executable variants using binary differences
- Adjusted for syntax improvements in classes
- Changed noprocessors to processors and nocompress to compress in build properties
- Moved set_log_function to FixIO library
- Fixed returning of error for unknown backend commands
- Fixed finding of executable file in GUI applications on MacOS
- Fixed processing of just referenced scripts instead of all scripts
- Fixed compression of libraries when token processing is disabled
- Fixed setting of executable permission for binaries to UNIX-like systems only
- FixUtil 0.4
- Added from_float function in JSONDouble
- Added ability to get unsigned integer from Long
- Adjusted for syntax improvements in classes
- Changed to use offset/length instead of range in most string functions
Version 0.5 (2022/12/27):
- FixScript 0.8
- Added support for optional asynchronous mode (suspendable native functions, auto suspend after processing number of instructions)
- Added support for WebAssembly
- Added passing of invalid tokens to token processors
- Added filtering of control characters in logging functions
- Improved performance of array functions
- Changed syntax to allow multiple semicolons (empty statements)
- Changed tokenization of numbers (leading plus/minus is separate token now)
- Fixed passing of the whole source code to token processors
- Fixed rejection of general arrays containing just integers when unserializing
- Fixed checking for clear flags in arrays
- Fixed integer overflow when working with array flags
- Fixed issue with shared array types where different negative values resulted in different types in C API
- Fixed disallowing of keywords in function references
- Fixed parsing of float constants with exponent having leading plus
- Fixed clearing of indirect references to variables in switch statement in JIT compiler
- Fixed order of returned values in script_query function
- Fixed integer overflow in UTF-8/16 string functions
- Fixed conversion of floats to string using workaround due to non-existent locale variant in C library
- FixScript Macros 0.5
- Removed adjustment of semicolons and raw macros (not needed anymore)
- Fixed usage of temporary names in function references
- FixScript Classes 0.7
- Added support for structs (packed data in arrays)
- Added ability to get offsets of fields in classes
- Added support for shorthand float operations
- Added operator overloading for appending to existing strings
- Added automatic calling of to_string methods in string concatenation
- Added support for operator overloading
- Improved error messages when parsing class attributes
- Changed comparison operators to be more strict about types
- Adjusted for syntax change to allow multiple semicolons (empty statements)
- Adjusted for tokenization change of numbers (separate leading plus/minus token)
- Fixed checking for incompatible types in math operations
- Fixed registering of global functions defined in attributes
- FixIO 0.7
- Added hiding of console window when redirecting process streams on Windows
- Added computation of CRC-32 checksum
- Added support for operators in Path
- Fixed file synchronization on MacOS
- Fixed moving of empty rollback in AtomicFile
- FixImage 0.6
- Added ability to get bounds of characters and strings in Font
- Added public enum of the part types in Shape
- Added support for grid fitting of fonts at particular sizes
- Added variant of contains method that works with Rect
- Added intersects method in Rect
- Changed Rect to output width and height in to_string function
- FixGUI 0.7
- Added support for custom completion in FixScriptSyntax
- Added support for touch events
- Added ability to provide custom area view in SubScrollView
- Added ability to track scroll change directly in SubScrollView
- Added remove_all method in SubView
- Added set_default_scale method in SubView
- Added support for running in web browsers using WebAssembly
- Added support for showing of lines in CodeEditor
- Added ability to set logical top view in SubView
- Added optimized drawing of subviews
- Added ability to obtain double click delay/distance and cursor blink interval
- Added SubLabel
- Improved support for GTK
- Renamed is_view method to is_instance in View
- Fixed clipping against parent subviews when determining repaint area
- Fixed get_view_area method in SubScrollView
- Fixed support for scaling when determining default size of SubScrollBar
- Fixed handling of key typed event in SubTextField
- Fixed scaling of completion popup in CodeEditor
- Fixed scaling of cursor in CodeEditor
- Fixed placement of code completion popup in CodeEditor
- FixTask 0.5
- Improved returning of values from custom script native functions
- Fixed lockup when sending channel messages by enabling reentrant locking on POSIX systems
- Fixed integration with FixIO async event loop
- Fixed counting of elapsed time for timeouts
- Fixed concise reporting of token processor errors when reloading scripts
- FixBuild 0.5
- Added ability to import other scripts from build script
- Added automatic creation of main script if not present
- Added ability to call default log function from a custom log function
- Added version to header when showing help
- Added computation of PE checksum for Windows executables
- Improved icon support on Windows to not use custom icon when not specified
- Adjusted for tokenization change of numbers (separate leading plus/minus token)
- FixUtil 0.3
- Added struct allocator
- Added support for operators in BigInteger, Long and Double
- Removed redundant checks for division and remainder
- Renamed get_bitsize method to get_bit_size in BigInteger
- Fixed array overflow in is_bit_set method of BigInteger
- Fixed handling of negative numbers in to_string method of BigInteger
- Fixed subtraction in BigInteger
- Fixed shr method in Long
Version 0.4 (2022/03/14):
- FixScript 0.7
- Added ability to get hash value using key from different heap in C API
- Added ability to get element size of array in C API
- Added ability to change stack size, also increased the default size
- Added ability to check arrays for having references in C API
- Added ability to protect references from native libraries that expose arbitrary references to scripts
- Added JIT compiler for x86 and x86_64 CPU architectures
- Improved C API to have easy ability to check for shared arrays, handles and function references
- Improved locking of arrays to provide direct pointer for non-shared arrays in C API
- Changed access parameter of fixscript_lock_array in C API
- Fixed handling of overflow for external reference counts to values and shared arrays
- Fixed crash on integer overflow in remainder operation
- Fixed unneeded upgrading of arrays when locking in C API
- Fixed parsing of extended operator with leading plus or minus sign
- Fixed exact comparison that incorrectly compared integer portion only
- Fixed integer overflow in string concatenation
- FixScript Classes 0.6
- Added ability to get real names of methods in API
- Added easier way to check for non-primitive types in API
- Added ability to check for assignability between types in API
- Improved error message when importing non-existing script
- Fixed parsing of extended operator with leading plus or minus sign
- FixIO 0.6
- Added ability to specify new buffers when resetting ArrayStream
- Added serialization of keys and comparison in serialized form
- Added AtomicFile to allow atomic updates of files using transactions
- Updated for API change in fixscript_lock_array
- Improved array_create_view function to not require offset and length
- FixImage 0.5
- Added initial support for loading of SVG images
- Updated for API change in fixscript_lock_array
- Fixed handling of overflow for internal reference counts
- FixGUI 0.6
- Added read only state in SubTextField
- Added get_scroll_view method in CodeEditor
- Fixed disabled state in SubTextField
- Fixed focus redirection in CodeEditor
- FixTask 0.4
- Added running of compute tasks in parallel with ability to access parent heap concurrently
- Added support for atomic operations on shared arrays
- Added support for setting of stack size in Heap
- Added Dispatcher
- Added asynchronous variant of channel call
- Added simple way to handle messages from single channel
- Added optional integration with FixIO async event loop
- Improved returning of errors in synchronous channel call
- Renamed fixtask_get_cores_count to fixtask_get_core_count in C API
- Changed setting of channel queue size to be possible in original heap only
- Fixed passing of wrong core ID when using fixtask_run_on_compute_threads
- Fixed comparison of channel handles with sender/receiver variants
- Fixed lockup when sending messages to synchronous channels from multiple threads
- FixBuild 0.4
- Added integration of FixTask with FixIO
- Fixed usage of compatible symbols on Linux 64bit
Version 0.3 (2021/10/03):
- FixScript 0.6
- Added support for packed char literals
- Added unused symbols to be directly available for token processing
- Changed serialization format to be more compact
- Changed symbols to be directly represented in token type
- Removed unneeded extra symbol for appending to arrays (no syntax change)
- Fixed counting of total heap size when cloning shared arrays
- Fixed compatibility with Windows 2000
- Fixed traversing of invalid symlinks in fixembed
- FixScript Macros 0.4
- Adjusted for new symbol representation in tokens
- FixScript Classes 0.5
- Adjusted for new symbol representation in tokens
- Fixed types for string_to_utf8 function
- FixScript Simple 0.2
- Adjusted for new symbol representation in tokens
- FixScript Unpack 0.3
- Adjusted for new symbol representation in tokens
- FixScript Optional 0.2
- Adjusted for new symbol representation in tokens
- FixScript AutoInit 0.1
- FixIO 0.5
- Added is_empty function to Path
- Added sync function to File
- Added ability to get native file descriptor/handle
- Added ability to set length of file
- Added support for file locking
- Fixed caching of file type
- Fixed create_directories in Path
- FixImage 0.4
- Added fiximage_create to C API
- Adjusted for new symbol representation in tokens
- FixGUI 0.5
- Added code editor
- Added ability to disable buttons
- Added ability to set label in PureButton
- Adjusted for new symbol representation in tokens
- Fixed memory leak when exchanging messages with workers
- Fixed handling of key combinations with ALT modifier on Windows
- Fixed other mouse buttons wrongly working when clicking on SubButton
- FixTask 0.3
- Added ability to start tasks using function handle directly
- Added support for channels
- FixNative 0.3
- Adjusted for new symbol representation in tokens
- FixBuild 0.3
- Added support for icons
- Added matches and find functions in build scripts
- Added automatic excluding of nested projects
- Adjusted for new symbol representation in tokens
- Fixed initialization of tasks not being done in every case
- Fixed traversing of invalid symlinks
- FixUtil 0.2
- Added stable sort variant
- Fixed wrong to_bytes function in JSON
Version 0.2 (2021/05/12):
- FixScript 0.5
- 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
- FixScript Macros 0.3
- Added support for top-level functions defined from within a macro
- Changed to use script_line function for error reporting
- FixScript Classes 0.4
- Added ability to directly define static methods using private constants
- Added access to constants, locals and variables in API
- Added basic support for import aliases
- Added automatic to_string implementation
- Added ability to define global functions using private constants
- Changed to use script_line function for error reporting
- Changed adjusting of function calls to include return type in API
- Fixed parsing of empty array with whitespace between braces
- Fixed adjusting of functions when called from methods (using API)
- Fixed bug in throw statement that prevented method calls
- FixScript Unpack 0.2
- Changed to use script_line function for error reporting
- Fixed determination of nesting level
- FixScript Optional 0.1
- FixIO 0.4
- Added generalization of async stream interface
- Added print_err and println_err functions
- Added ability to get current time (both normal and monotonic)
- Added array_create_view function
- Added string representation of Path objects when dumping
- Added ability to get just file name from Path
- Added ability to get modification time of files
- Fixed accepted async TCP sockets not being put into non-blocking mode on Linux
- Fixed crashing due to SIGPIPE signal
- FixImage 0.3
- Added fiximage_get_core_count to C API
- Added functions for getting X and Y in Rect
- Fixed color conversion functions to be public
- FixGUI 0.4
- Added scroll_to_visible method in SubScrollView
- Added support for border in SubScrollView and PureScrollView
- Added set_rect variant without Rect in View
- Added SubDivider and PureDivider
- Added EventListeners
- Added initial code for SubTable and PureTable
- Added initial code for SubList and PureList
- Added relative mouse mode in Canvas
- Added get_scroll_position and set_scroll_position methods in SubScrollView
- Added ability to obtain native window handle on Windows
- Added initial support for GTK 2/3
- Added console output on Windows
- Changed worker interface to be optional
- Fixed missing EVENT_KEY_DOWN for KEY_ENTER/ESCAPE on Windows
- Fixed wrong EVENT_KEY_TYPED when Ctrl/Alt modifiers are active on Windows
- FixTask 0.2
- Added ability to create custom FixScript heaps
- Added ComputeTask and Global classes
- Fixed waiting on messages with timeout
- Fixed overinflation of heap when sending messages between tasks
- FixNative 0.2
- Added ability to get pointer to shared array data
- Added proper setting of return type for functions called using the 'extern' token processor
- Added ability to create memory region from given pointer and size
- Renamed SYSTEM_MACOSX to SYSTEM_MACOS
- Fixed incorrect checking for memory range on raw pointers
- Fixed error when trying to bind library multiple times
- FixBuild 0.2
- Added ability to set custom logging function
- Added internal parameters for getting scripts
- Added support for build scripts
- Renamed 'macosx64' target to 'macos'
- Fixed crash when calling non-existing functions in token processors
- Fixed compression of scripts
- Fixed ability to include *.fix files in resources
- Fixed random resource reading failures due to missing mutex
- Fixed problems with finding and opening of executable file
- Fixed compilation of FixGUI on Haiku 32bit
- FixUtil 0.1
Version 0.1 (2020/10/13):