Apache Groovy 3.0.7 released, JVM dynamic scripting language
Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax. It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional programming.
Feature
- Is an agile dynamic language based on Java virtual machine.
- Built on the powerful Java language and added many features learned in languages like Python, Ruby and Smalltalk.
- Offers Java developers the most modern programming language features in the world, and low learning costs (almost zero).
- Support DSL (Domain Specific Languages Domain Definition Language) and other concise syntax, make your code easier to read and maintain.
- Goovy has native type handling, object orientation, and an Ant DSL that make it easy to create shell scripts.
- Developers efficiency is greatly improved by reducing framework code when developing Web, GUI, database or console applications.
- Support unit testing and simulation (object), can simplify the test.
- Seamless integration of all existing Java objects and libraries.
- Compile directly into Java bytecode so Groovy can be used anywhere Java is used.
Apache Groovy 3.0.7 has been released.
Changelog
Bug
- [GROOVY-6453] – groovysh in Windows 7/8/10 doesn’t support arrow keys and Del
- [GROOVY-6882] – STC: AIC cannot resolve overridden method of outer class
- [GROOVY-7494] – ArrayStoreException assigning GStringImpl to String[] when using Indy
- [GROOVY-8270] – Bug in @AutoImplement
- [GROOVY-9093] – SC: subclass access to package-private or private field is not indicated as an error
- [GROOVY-9758] – groovsh import of non existing class throws null pointer instead of syntax error
- [GROOVY-9760] – NPE when trait with type parameter is implemented as raw type
- [GROOVY-9762] – Wrong type resolved if method reference used with typed method
- [GROOVY-9763] – Regression in groovyc 3.0 and 4.0 and Compile static with generic static method in trait
- [GROOVY-9769] – STC: UnionTypeClassNode created for simple instanceof scenarios
- [GROOVY-9770] – Groovy 3 generated lambda classes are marked as synthetic
- [GROOVY-9771] – STC: “putAt” shortcut notation to outer class private field from Closure leads to GroovyCastException
- [GROOVY-9772] – AnnotationCollectorTransform generates code not marked with @Generated
- [GROOVY-9779] – Inconsistency with callable properties in static context
- [GROOVY-9782] – Avoid potential NPE in antlr2 groovysh
- [GROOVY-9786] – SC: cast exception for variable assigned within conditional blocks
- [GROOVY-9790] – bootstrap method initialization exception raised when lambda parameter type is wrong
- [GROOVY-9791] – SC: cross-package protected field access uses dynamic property methods
- [GROOVY-9799] – Using a method reference causes a compiler error
- [GROOVY-9814] – Method reference doesn’t accept subtypes of argument
- [GROOVY-9815] – Object not bound with Groovy (but works fine in Java)
- [GROOVY-9816] – @AutoImplement does not consider declared properties
- [GROOVY-9818] – JSP-API license seems to be missing
- [GROOVY-9821] – STC: spread-safe and list property access error for CollType<? extends ItemType>
- [GROOVY-9822] – StackOverflowError in STC
- [GROOVY-9824] – replace some old api usage with newer available variants
- [GROOVY-9825] – interface constants from super interfaces lost in some contexts
- [GROOVY-9826] – Better propagation of InterruptedException
- [GROOVY-9842] – Static inner class of a static inner class is missing inner class table attribute
Dependency upgrade
- [GROOVY-9783] – Bump gradle to 6.7
- [GROOVY-9787] – Bump javaparser to 3.16.2
- [GROOVY-9788] – Bump Ant version to 1.10.9 (fixes Apache Ant CVE 2020-11979)
- [GROOVY-9792] – Bump Spotbugs/Spotbugs annotations versions
- [GROOVY-9793] – Bump JUnit4 version to 4.13.1 (includes security fix)
- [GROOVY-9794] – Bump picocli version to 4.5.2
- [GROOVY-9809] – Bump jackson to 2.11.3
- [GROOVY-9810] – Bump javaparser to 3.16.3
- [GROOVY-9812] – Bump Spock version to 2.0-M4-groovy-3.0
- [GROOVY-9819] – bump jsp-api/servlet-api versions to 2.3.3/4.0.1
- [GROOVY-9820] – Bump gradle to 6.7.1
- [GROOVY-9830] – Bump xstream to 1.4.14
- [GROOVY-9831] – Bump javaparser to 3.17.0
- [GROOVY-9833] – Bump slf4j to 1.7.30
- [GROOVY-9834] – Bump logback to 1.2.3
- [GROOVY-9835] – Bump versions gradle plugin to 0.36.0
- [GROOVY-9836] – Bump checkstyle to 8.37
- [GROOVY-9837] – Bump japicmp gradle plugin to 0.2.9
- [GROOVY-9838] – Bump log4j2 version to 2.14.0
- [GROOVY-9839] – Bump Codenarc version to 2.0.0
- [GROOVY-9840] – Bump findsecbugs plugin to 1.11.0
Improvement
- [GROOVY-9832] – groovy-jmx: JmxMetaMapBuilder should support GString object names
New Feature
- [GROOVY-9817] – Enhance Closure annotation value (as Closure class) to Arrays