Hacker News new | past | comments | ask | show | jobs | submit login

Groovy is one language that is dynamic but also has an optional statically typechecked compilation mode.



> Groovy is one language

Apache Groovy is two languages. The Groovy 2.x download, first released in 2012, bundles two different compilers that were both forked from the Groovy 1 compiler. Only one of them has upgraded to the JDK-7 invoke-dynamic capabilities, and the other (which hasn't) is the one actually used by Gradle and Jenkins and everyone else. Last month, the Groovy project managers at the ASF announced they were keeping the upcoming Groovy 3 as two separate languages also. The long-awaited parser upgrade from Antlr 2 to Antlr 4 is being bolted on to the invoke-dynamic compiler only -- the compiler no-one uses. They talked about Groovy 4 reverting back to a single language, but i'm guessing that's many years away because the original purpose of making Groovy be two languages in the first place was to not change the language that users actually use in any way, while simultaneously appeasing their own developers by bundling the code they wrote (invoke-dynamic bytecode generation, Antlr 4 parser upgrade, etc) in the language.


And if it wasn't for Gradle it would be mostly irrelevant today, so much for Grails and JEE Java's companion language for bean implementation.

The recurring talks on Android build speed, with everyone moving into buck and bazel show how much everyone loves putting up with it.

Just last week AMA on Reddit had the recurring answer to add memory and profile build execution.

When a build tool requires profiling to make it usable, it already starts on the wrong foot.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: