Skip to content

2023.1.33

Latest
Compare
Choose a tag to compare
@rsmckinney rsmckinney released this 18 Dec 07:53
· 157 commits to master since this release

Release v2023.1.33

Type-safe SQL

  • Query types are instantly available as you type native SQL of any complexity in your Java code
  • Schema types are automatically derived from your database, providing type-safe CRUD, decoupled TX, and more
  • No ORM, No DSL, No wiring, and No code generation build steps

img_3.png

Tuple expressions

Tuple expressions provide concise syntax to group named data items in a lightweight structure.

var t = (name: "Bob", age: "35");
System.out.println("Name: " + t.name + " Age: " + t.age);

var t = (person.name, person.age);
System.out.println("Name: " + t.name + " Age: " + t.age);

Forwarding and True Delegation

Favor composition over inheritance. Use @link and @part for automatic interface implementation forwarding and delegation.

class MyClass implements MyInterface {
  @link MyInterface myInterface; // transfers calls on MyInterface to myInterface

  public MyClass(MyInterface myInterface) {
    this.myInterface = myInterface; // dynamically configure behavior
  }

  // No need to implement MyInterface here, but you can override myInterface as needed
}

auto type inference

  • auto type inference for local vars, fields, and method return types
  • Enables multiple return values for methods
import manifold.ext.rt.api.auto;

var result = findMinMax(data);
System.out.println("Minimum: " + result.min + " Maximum: " + result.max);

auto findMinMax(int[] data) {
  if(data == null || data.length == 0) return null;
  int min = Integer.MAX_VALUE;
  int max = Integer.MIN_VALUE;
  for(int i: data) {
    if(i < min) min = i;
    if(i > max) max = i;
  }
  return min, max;
} 

Multidimensional index operator

Property inference on record types

Java 21 Support

IntelliJ IDEA & Android Studio plugin improvements

  • Comprehensive support for all new features including type-safe SQL, forwarding & delegation, tuples, etc.
  • Many performance improvements and bug fixes toward an improved user experience in the IDE
  • Support IDEA Chinese Language Pack

Fixes & feature requests

#536: manifold-graphql: override java-graphql ParserOptions which are not applicable to compile-time use e.g., maxTokens
#535: Intellij plugin: suppress "non-final field 'x' in enum..." issues re @val usage
#533: Intellij plugin: suppress false positive errors re manifold string templates
#532: Intellij plugin: string template processing is disabled in annotations due to wide usage of ${} templating in many annotation libraries
#531: Fix ProcessCanceledExceptions, forward exceptions directly during "slow operations" handling, esp. ProcessCanceledException
#529: Suppress error/warning messages in Chinese as well as English, translate/map message filters to Chinese (Simplified) Language Pack.
#528: Use private tags to execute "slow operations", centralize how/where these are executed
#525: Preprocessor: Enable IDE to use SymbolProviders according to module dependencies
#520: Provide error message when attempting to use a method ref for a method returning auto, must use lambda in this case (for now)
#516: Fix NoClassDefFoundError: com/intellij/lang/java/parser/BasicStatementParser (affected IJ versions: 2023.2.2, 2023.2.3)
#497: IntelliJ plugin: Complete JDK 21 support
#495: IntelliJ plugin: Improve performance and stability of manifold fragments in IntelliJ
#494: IntelliJ plugin: Fix fragment error reporting
#489: Fix "cannot implement" interface error using delegation with @link in JDK 21
#488: Fix tuple expr passed directly as argument to method (was broken in jdk 11+)
#483: Unintended behavior for manifold-prop annotation parameters
#479: Unintended behavior when using both manifold-delegation and manifold-props
#478: Support abstract enum methods with manifold-ext
#477: Field access from inside the class on a @set field
#476: Fix issue with using annotation processors e.g., lombok, mixed with manifold
#474: Fix regression in 2023.1.15 where new fragment delimiters can interfere with string templates
#473: Change fragment delimiters
#471: Change return type to be compatible with SequencedCollection#reversed
#470: Support "short" runtime methods
#468: Avoid adding bootstrap block to sidecar classes
#467: IntelliJ plugin: support error/warning highlights in fragments (in prep for manifold-sql)
#466: IntelliJ plugin: Deprecated class usage results in compilation error in IntelliJ IDEA
#451: IntelliJ plugin: Invalid warning message re older manifold version in project than in intellij plugin
#449: Remedy a java symbol resolve issue where a field and an inner class share the same name
#446: Use MathContext.128 for big decimal division
#436: Fix mapstruct handling of default interface methods
#422: Fix self type bug with arrays
#423: Add support for forwarding and delegation
#421: IntelliJ plugin: auto, like var, should be highlighted as a keyword
#418: Compiling from IntelliJ can cause UnsupportedClassVersionError using the preprocessor and using pre-JDK 17
#417: Class cannot be converted Issue
#416: Unqualified static varargs extension method call results in compiler error
#414: Using JDK 17+ in preview mode + using an annotation processor causes NPE
#412: "Variable expected" error involving multidimensional index operator in assignment
#411: Intermittent "Incorrect CachedValue use" errors
#400: Support getter/setter extension methods as property access for manifold-props
#409: Intellij plugin: fix generic extension method type parameter inference regression
#408: Support Valhalla EA Jdk releases
#407: Fix compile error using latest JDK 20 EA release (build 28)
#406: IntelliJ plugin: "Incorrect CachedValue use:" errors reported with property and extension caching
#405: IntelliJ plugin: many issues in latest 2022.3 release with renaming files/elements, other related issues
#404: Using ReflectUtil with JDK 19 cannot set value on static final field on an interface
#403: Extension methods on inner classes not working in some cases
#402: IntelliJ plugin: Exception when using tuple expressions without adding manifold-tuple/manifold-tuple-rt
#396: Handle expression in foreach stmt where the expression type structurally implements Iterator and a class extension exists that makes Iterable structural
#395: Support property inference on record types
#394: Support EA release of JDK 20
#393: Java 17+: fix $ escape char for string templates
#392: Cast as raw generic type
#387: Tree is null for module-info file, do not process
#380: Fix regression involving fields as structurally equivalent to get/set methods
#382: Fix instanceof pattern matching issue related to parser changes in latest IntelliJ release
#376: Support an explicit typed variable having an implicit typed initializer expression
#375: Policy change: support only LTS versions of JDKs and the latest release
#373: New Feature: multiple return types via auto and enhanced tuple expressions
#372: New Feature: type-safe tuple expressions
#371: New Feature: auto type inference for local vars, fields, and method return types
#364: Add @Expires annotation to prevent extension methods from duplicating JDK methods
#355: fix instanceof Pattern Matching within if-statement condition (Cannot Find Symbol)
#351: Increment/decrement operators on properties cause compiler exception in Java 11+
#349: Support non-public extension methods
#348: @ThisClass extension method receiver, provides the calling class of static method
#345: Allow Jailbreak to work when casting