FixScript SDK Documentation
Back to summary
ChangeLog
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):