Releases: jaccomoc/jactl
jactl 2.2.0
Enhancements
#71 Support arbitrary types as Map keys
#72 Support if/unless expressions in action of switch expressions
#74 Support use of constant expression strings in switch patterns
#76 Comma separated indices for indexing multi-dimensional arrays
#78 DefaultEnv now has shutdown method for cleaning up thread pools
#82 Add ability for different JactlContexts to have different sets of custom function/methods
Bug Fixes
#73 Erroneous error in switch expression when using 'if' in pattern
#75 Break/continue with a label inside a while loop generates NullPointerException
#77 Parsing error when list appears as first item on line after a type name
#79 Fixed internal compile error "could not find static method castToNumber"
#81 Conditional assignment with ?= fails for bit operations if operand is null
jactl 2.1.0
Enhancements
#57 Work to support new IntelliJ plugin
#58 Allow if/unless after arbitrary expressions
#61 Allow for loops to auto-create variable if type not specified and variable not already declared
#62 Allow implicit creation of top level variables when auto-creating fields during an assignment
#64 Allow '=' on separate line to variable declaration
#65 Allow global variables to also be accessible from within class methods
#69 Enhance ?: to support null dereference on lhs
#70 Add support to allow '*' in list pattern os switch expression to be bound to a binding variable
Bug fixes
#59 Parser bug where identifier immediately on next line after break/continue was being treated as a loop label
#60 ArrayIndexOutOfBounds exception from ASM library for certain values in action of a switch case
#63 Compile error if first statement in a no-arg closure is a multi-variable declaration
#65 Fix issue with creation of an alias when registering a global function under multiple names
#68 Class verification error when using ?: operator in some scenarios
jactl 2.0.0
Enhancements
#46 Added switch expressions with pattern matching and destructuring
#51 Added support for constants using new const
keyword and added import static
functionality
#53 do
blocks now return value of last expression/statement rather than true
for consistency
#54 do/until
loops added to the language
#55 Lists now support a groupBy()
method that produces map of elements grouped by same key
#56 New transpose()
method for lists to perform matrix transpose operation
Bug Fixes
#48 subList(0,0) now returns empty list and substring(0,0) returns empty string
#49 Regex pattern starting with =
was being treated as a string instead of a regex pattern
#50 Invoking a method on a primitive variable declared in an outerscope caused JVM to report validation error
#52 Byte values are now strictly 0-255 (negative byte values map automatically to 128-255)
Breaking Changes
- New keywords:
const
,until
,switch
,default
- Treatment of byte values: byte value results are now never negative
do
expressions blocks return value of last expression/statement instead of always returningtrue
++
and--
now generate an error if applied to a constant literal value or expression (e.g.++1
is no longer valid)
jactl 1.4.0
Enhancements
#44 Backported to support Java 8
Bug Fixes
#42 Fixed equality for comparing arrays
#43 Fixed issue where line numbers for real-time errors always showed line 1
#45 pow() method on a long should not return an int
Known Issues (fixed on trunk)
#48 subList(0,0) and substring(0,0) return entire List/String instead of empty list/empty string
#49 Regex pattern starting with '=' (e.g. /=/) ignores any modifiers present
jactl 1.3.1
Enhancements
#35 New list method windowSliding()
for operating on a sliding window of n elements at a time of a list
#37 Support for declaring and assigning multiple variables at once
Bug Fixes
#34 NullPointerException instead of NullError if null used for list/array index or map field
#36 Error referring to fully qualified class name within a script
#38 Better validation to prevent class name being allowed as expression value
#39 Converting regex capture variable to number can give NullPointerException for optional match
#40 Bracketed expression at end of line can cause "expected end of statement" error
Known Issues (fixed on trunk)
#42: Array equality is broken
#43: Runtime errors always show line number 1 no matter what line they occur on
jactl 1.3.0
Bug fixes
#18 Non-numeric operand error using 'new' immediately after newline
#21 Regex capture variable usage can sometimes lead to "No match found" error
#26 className() method on instances cannot be passed by value
#27 Base class field initialisers not being invoked when using named arg constructor
#30 JSON decoding is not initialising missing fields in base classes
#31 Inner class of base class should be visible to child class
#32 Null for string in regex match should return false
Enhancements
#16 Native support for JSON encoding and decoding
#17 Add native array support
#19 List-specific versions of min(), max(), sum(), and avg()
#20 Support checkpointing of execution state
#22 Substring and subList functions should support 0 as end index when start index is negative
#23 Add '??' operator for existence test
#24 Add byte and byte[] types to support binary data
Known Issues (fixed on trunk)
#34 NullPointerException instead of NullError if null used for list/array index or map field
#36 Error referring to fully qualified class name within a script
#38 Better validation to prevent class name being allowed as expression value
#39 Converting regex capture variable to number can give NullPointerException for optional match
#40 Bracketed expression at end of line can cause "expected end of statement" error
jactl 1.2.0
- #9: substring() and subList() now consistently support negative indices to mean offset from end of list/string, negative indices (representing offset from end) also supported for subscript access of lists and strings
- #10: added new iterator methods for allMatch(), anyMatch(), and noneMatch()
- #11: command line scripts now support .jactlrc file (with '-c' option to disable)
jactl v1.1.0
- #1: Added support for capture variables to be treated as numeric where possible when using
n
regex modifier - #2: Fixed bug where numeric arguments to built-in functions where not being coerced (e.g. long was not being coerced to int)
- #3: Added checks to prevent async blocking called inside
toString()
method - #5: Added code to check that async suspension does not occur during auto-creation of class instances
jactl v1.0.0
First release