Skip to content

Releases: jaccomoc/jactl

jactl 2.2.0

02 Jan 00:37
Compare
Choose a tag to compare

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

30 Nov 00:52
Compare
Choose a tag to compare

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

10 Jan 07:32
Compare
Choose a tag to compare

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 returning true
  • ++ 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

14 Dec 23:45
Compare
Choose a tag to compare

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

02 Dec 03:16
Compare
Choose a tag to compare

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

09 Nov 07:03
Compare
Choose a tag to compare

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

17 Apr 05:34
Compare
Choose a tag to compare
  • #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

12 Apr 08:01
Compare
Choose a tag to compare
  • #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

05 Apr 09:47
Compare
Choose a tag to compare

First release