All notable changes to this project will be documented in this file.
- Updated Catch2 to fix several compilation issues
- Correct error in tutorial about precedence of functions
- Fixed issue with duplicate non-local function registration
- Fix unit tests to allow easier max instruction tests
- Minor spelling corrections
- Corrected previously out-of-sync patch messages in changelog
- Improved error messages
- Fixed URL to tutorial in JinxPad
- Fixed memory allocation stats in amalgamated header
- Added support for calling async functions from native code
- Update MSVC build scripts to support VS2022
- Update tools to .NET target to 4.7.2
- Update obsolete .NET function
- Improved compiler error messages
- Minor code cleanup
- Added support for string index pair operator for extraction and insertion of text
- Additional performance optimizations
- Improve test coverage
- Remove unused code
- Various internal optimizations improves Jinx runtime performance by up to 25%
- Updated Performance doc
- Free and realloc memory callbacks now pass an additional size parameter
- Fix small internal memory leaks
- Fix multi-threaded safety issue
- Improved fuzz tester
- Updated amalgamated header
- Add support for first-class functions
- Add support for coroutines
- Improve error handling for library functions
- Update documentation
- Fixed function lookup with matching optional/non-optional parts
- Fixed issue with initialization lists parsing as function parameters
- Fixed issue introduced in 1.2.1 causing functions to always wait on exit
- Allow character-based access to strings using [] operators
- {} size function now returns number of Unicode characters for strings instead of byte count
- Added support for decorative possessive of variables using apostrophe-s
- Changed parsing precedence to fix some problematic compound function calls
- Fix bug when parsing and/or/not as part of function name
- Updated documentation
- Removed pool allocator due to lack of measurable performance benefits
- Changed memory stats API appropriately for a more generic allocator
- Removed obsolete Jinx::Shutdown() function
- Updated documentation
- Fix property name lookup when using multiple libraries
- Fix local scope bug, manifesting in named-counter loop errors on subsequent loops
- Improved loopcount op variable names
- Fix locale-based error on Linux
- Minor code cleanup
- Slightly more efficient numeric conversions of continental-style tables
- Fix syntax coloring error in single-line commands in JinxPad
- Explicitly allow return statements outside of functions
- Added documentation to clarify return statements
- Added unit tests for new return functionality
- Fixed issue with function calls calculation of stack return values
- Minor fixes to JinxPad project
- Fixed an issue with C# editor not displaying text on initial load
- Logging callback function now passes log level: Info, Warning, or Error
- Improved CSV parsing to include quoted values and continental format
- Floating-point and integer parsing can optionally use faster std::from_chars() method
- Floating-point parsing is no longer affected by locale
- Fix bug when max instruction count is reached
- Fix core write line to add newline after extra parameters
- Fix index operator to allow arbitrary nesting depth
- Fix erase keyword to use arbitrary nesting depth
- Add CSV or tab-delimited table support via string to collection cast
- Fix path error in CMake file
- Updated tutorial
- Fix unused variable warning in gcc
- Update tutorial
- Jinx stable release
- JinxPad projects are now generated by CMake
- Minor improvements to JinxPad
- Add CMake support
- Reorganize folders to separate source from projects
- Added missing 'set' keyword to C# editor library
- Removed local script function override
- Changed API functions registering function callbacks to use string instead of initializer lists
- IString::FindFunction() no longer requires a Visibility type parameter
- Function names passed via API are now processed using the same lexer and parser as scripts, ensuring more robust error checking
- Fixed minor error in tutorial
- Add std::any aliases due to macOS platform limitations
- Added API to find and call Jinx functions from C++
- Added additional tests
- Replaced void* with std::any
- Minor fixes to tutorial
- Minor improvement to parser error handling message
- Added new parser error tests
- Added unary negation operator (-)
- Added new tests and updated documentation
- Silenced MSVC warnings if C++ exceptions are disabled
- Jinx is now available as an optional single-header library
- Updated tests and documentation
- Keywords are now case-insensitive
- Added more detailed examples in tutorial for function parameters
- Changed Jinx object allocator to use perfect forwarding
- Added script-specific native function overrides
- Unicode conversion no longer uses deprecated standard libraries
- Updated projects to compile in C++ 17 mode
- Updated Doxygen binaries
- Added debug info to identify source line number for runtime errors
- Version string is acquired via a function instead of being a constant
- Fixed overly-cluttered changelist with a simpler format
- Added 'get call stack' core library function
- Improved runtime performance of local variable lookups
- Fixed a bug related to function chains
- Fixed a bug when assigning collection elements within a collection
- Function precedence now works left to right
- Compound expressions are no longer a problem for the parser
- Opcode debug output now shows symbol and function names
- Logical 'not' operation now has same precedence as 'or/and'
- Mod operators now works like Python instead of C++
- Parser now rejects function parameter names that collide with properties
- Logical operators now perform short-circuit evaluation
- Updated Catch unit test library
- Most operators no longer perform automatic type coersion, and errors are more explicitly handled.
- Documented type coersion behavior in tutorial.
- Fixed comparison between integer and numeric types
- Added per-script user context pointer for native library functions.
- Made changes to reduced probability of name collisions.
- Fix potential error in allocator with static initialization ordering
- Minor change for Xcode 9 compatibility
- Improved local script variable lookup speed
- Fixed potential crash on shutdown in allocator
- New ellipse operator allows explicit continuation of statements on a new line
- Initialization lists can handle new lines between items in the list
- Check for name collision of variables assigned in loop statements
- Added test case for case-folding variable rules
- Added total performance time interval to performance data
- Optimized allocator for better multi-threaded performance
- Optimized script runtime to avoid unneeded case folding on internal function calls
- PerfTest and FuzzTest now use standard C++ threads for test code
- Index operators can now be used directly following function calls for returned collections
- Added new performance metric for completed scripts
- Added new performance test
- Added new initialization parameter for caching memory blocks
- Math operations now use C-style precedence rules
- Function return values are now always optional
- Added better support for alternative string character encodings / types
- Changed function registration with more explicit parameters
- Changed required ordering of readonly parameter for properties
- Implemented Unicode-aware case folding algorithm to make Jinx case insensitive
- Runtime type conversion errors properly checked, and unit tests added
- Added erase keyword for removing collection elements
- Variable and property assignment now uses set {var} to {expression} pattern
- Collection iterators now store an iterator/collection pair
- Multi-part variable names can include keywords as second or later parts
- Removed obsolete library functions to erase collection element
- Jinxpad keyword list corrected
- Collection elements are removed by setting value to null
- Removed some potentially problematic library functions
- Error when parsing multi-part variables
- Potential infinite loop in core library
- Potential for incorrect memory values in multi-threaded programs
- Improved fuzz testing program for better performance and easier debugging
- Function name parts can now be optional
- Function name registration was incorrectly converting to lower case
- Function as last parameter of another function call was not being handled correctly
- New 'external' keyword for variables set via API
- Obsolete library functions dealing with externally set variables have been removed
- Tutorial updated with 'external' keyword use and examples
- Instruction count performance metric
- Cleaned up expression parsing code
- Add Variant class documentation
- Fixed bug in block parsing
- Improved documentation to better describe complex function parameters
- Add new keyword 'until' used similarly to 'while' in loops and conditional wait statements, but with inverted conditional logic
- Add new test cases for 'until' keyword
- Add new 'until' keyword added to Jinx editor
- 'yield' keyword is now 'wait', a more user-friendly term
- Deleted unused keywords in source
- Support for multi-word variable and property support without requiring enclosing quotes
- Improved variant conversion function
- New variant conversion tests and methods
- Variant conversion unit test
- Improved thread-safety of collection operators
- Fixed mutex issues on macOS and Linux
- Add new test case for collections
- Changed OSX to macOS
- Added yield while {conditional} support
- Added documentation for yield while conditional
- Added test cases for yield
- Fixed minor documentation errors
- Default library import API
- Prevent memory leaks due to circular references by collections
- Validate collection key types at runtime
- Allow initialization lists inside initialization lists
- Added PDF version of tutorial and LibCore library doc
- Overview doc removed, as it's now a bit redundant
- Jinx now uses % operator instead of mod keyword
- Floating-point mod operations now supported
- Minor fixes to Variant class
- Updated documentation
- LogAllocations() function generates a detailed report of all allocated memory
- Added fuzzing test to ensure runtime robustness
- Added new unit tests for incrementing/decrementing properties
- Added bytecode execution count limiter and behavior flag
- Modified changelog date format to year-month-date as intended
- Increment and decrement keywords now work correctly with properties
- Memory shutdown function fixed
- Fixed several runtime crashes or asserts from initial fuzz tests
- Added WPF/.NET Editor control for Jinx
- Added JinxPad sample project demonstrating use of editor control
- Reorganized library projects
- Added makefiles and NetBeans projects for Linux platform
- Projects compile cleanly under Linux/g++
- Added support for UTF-16 conversions in Variant class
- Added unit tests for Unicode conversion and variable names
- Fixed potential memory corruption bug when using Jinx::Shutdown() and not all memory has been freed
- Identifiers now have fewer naming restrictions
- Updated tutorial with new Unicode and naming rules
- Regenerated API documentation
- Renamed "callback" unit test to "native"
- Deleted unused opcode
- Removed case insensitivity
- Initial release
- Added initial library version numbers and string
- Added changelog
- Fixed minor documentation issues