groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Cédric Champeau <cedric.champ...@gmail.com>
Subject Re: Is it possible to enable CompileStatic for an entire project
Date Tue, 21 Jun 2016 16:44:37 GMT
A strong -1 for both options. We already have 2 variants of Groovy today,
indy and non indy, and in practice *nobody uses the invokedynamic version*
because it's impractical to use. Typically projects depend on `groovy.jar`
or `groovy-all.jar`, not their invokedynamic version. Adding a new
dimension, which is orthogonal to invokedynamic makes it even more
complicated. Don't forget that the Groovy compiler is also mixed in its
runtime (which is a problem of its own). We should solve that first.

Second, IDEs need to know whether a file is statically compiled or not. The
`@CompileStatic` annotation makes it very clear, and the default is the
standard dynamic mode that has been in Groovy for more than 10 years. IDEs
know about it, and it's simple to infer. Any alternative solution, like the
config script, or an alternate compiler (!) makes it impossible for the IDE
to guess. The only IDE-pragmatic solution is to have a distinct file
extension for statically compiled Groovy files (say, .sgroovy instead of
.groovy). So far this has been ruled out, but I think it's the most
pragmatic, and IDE friendly, solution.



2016-06-21 18:37 GMT+02:00 Mr Andersson <mr.andersson.002@gmail.com>:

>
>
> On 06/21/2016 02:38 PM, Winnebeck, Jason wrote:
>
> Tying Cédric’s advice to your previous question about gmavenplus and joint
> compilation, per
> https://github.com/groovy/GMavenPlus/wiki/Examples#configuration-script
> you add the configuration tag with a reference to your groovy script.
>
> I also mentioned that I could not get Gmavenplus to work, but maybe i did
> something wrong. But I literally copied and pasted that section.
>
>
>
> Actually about 90+% of our code base in Groovy is CompileStatic I wonder
> if we should use that. Cédric, if we use the config script method, is it
> still possible to use the “skip” annotation to switch back to dynamic mode?
> Even if it worked, I highly doubt IntelliJ IDEA would know about it and
> think all files are dynamic typing so probably it’s still best for us to
> add @CompileStatic everywhere, but sometimes we forget where we wanted it.
> The performance difference is extreme when we forget it, on a certain class
> we missed recently it took our page rendering times from about 4ms to 52ms,
> so for us it’s an actual “bug” to forget to add @CompileStatic.
>
>
> The problem with  the ANT task is that I don't think I can set classpath
> argumetns to the actual so passing the config location is a problem that
> needs be resolved. Not that easy with maven.
>
> *Groovy should instead provide a default GroovyStatic-2.4.4.jar* file
> that enables this by default. That way everybody wins, and Groovy could
> join the club of static languages and not get rejected by those that needs
> to get Groovy.
>
> It is also messy to set up config files for every maven module, although I
> am not sure. The code in that config file is also not dynamic.
>
> withConfig(configuration) { ast(groovy.transform.CompileStatic) } and a
> simple option -compileStatic that uses an internal version of that file is
> preferable and *SIMPLER*.
>
> groovyc -configscript src/conf/config.groovy src/main/groovy/MyClass.groovy
>
> Is not needed here.
>
>
>
>
> Jason
>
>
>
> *From:* Cédric Champeau [mailto:cedric.champeau@gmail.com
> <cedric.champeau@gmail.com>]
> *Sent:* Tuesday, June 21, 2016 8:29 AM
> *To:* users@groovy.apache.org
> *Subject:* Re: Is it possible to enable CompileStatic for an entire
> project
>
>
>
> It's in the docs:
> <http://docs.groovy-lang.org/latest/html/documentation/#_static_compilation_by_default>
> http://docs.groovy-lang.org/latest/html/documentation/#_static_compilation_by_default
>
>
>
> 2016-06-21 14:24 GMT+02:00 Mr Andersson <mr.andersson.002@gmail.com>:
>
> Is it possible to enable CompileStatic for an entire project?
>
> Or do you have to do it on a per class basis?
>
> I like Groovy for some of it's features, and mostly for it's close to Java
> syntax but I would really like it to be a static language.
>
> I've heard about Groovy++ but I believe that's dead by now, no?
>
> Question is wether you can tell the Groovy compiler with a flag to treat
> all Groovy classes on certain paths as static?
>
> Preferable doable from ANT too.
>
>
> ------------------------------
> This email message and any attachments are for the sole use of the
> intended recipient(s). Any unauthorized review, use, disclosure or
> distribution is prohibited. If you are not the intended recipient, please
> contact the sender by reply email and destroy all copies of the original
> message and any attachments.
>
>
>

Mime
View raw message