Module splitting up
See original GitHub issueI’ve already split some things up:
com.redhat.ceylon.langtools.classfile
fromcom.redhat.ceylon.compiler.java
so that the language module can use it without depending on the compiler. Itself does not depend on anything and is a split of the javac fork.com.redhat.ceylon.tool.provider
fromceylon.language
which removed the dependencies to the compilers and typecheckers from the language module.
We need further splits:
- Remove the tools part of
com.redhat.ceylon.common
tocom.redhat.ceylon.tools
, because the language module depends oncommon
but does not need the tools. - Remove the CMR dependency from the language module. This requires moving a few things from CMR into
common
. - Remove jandex dependency. I’m fairly sure we can do what we need with
langtools.classfile
, although we have to make sure it’s as efficient. - Remove shrinkwrap from the Maven equation. Aether seems small and only depends on
httpclient
(already a dependency ofsardine
) andorg.slf4j:jcl-over-slf4j
which drags slf4j but we already depend on it (not sure why). That should make the Maven support smaller. And besides our Aether deps is outdated. - Possibly make our WebDAV CMR provider optional. That would remove dep on
sardine
, andhttpclient
(even though it’s used by aether too). We don’t use most of that for Herd and we can easily replace it with the JDK net connections.
Once this is done, we should review the minimal size for language module dependencies and see if we can do further improvements. Splitting the metamodel and serialisation out of it may be useful too, but that means untangling “reified is” out of the metamodel, which may not be very useful since it depends on the model
module and I suppose the metamodel is comparatively smaller.
OTOH if we can split subtyping into its own pure-Ceylon independent module (unlikely) it would mean reusability in JS, which is hard ATM.
Issue Analytics
- State:
- Created 8 years ago
- Comments:60 (60 by maintainers)
Top Results From Across the Web
Code Splitting - webpack
Once you start splitting your code, it can be useful to analyze the output to check where modules have ended up. The official...
Read more >Code Splitting With Dynamic Module Imports
A simple explanation of how to take advantage of dynamic imports to make your site load faster.
Read more >Modules and Code Splitting in Webpack 5 - Medium
Code splitting allows the user to split the code into various bundle that can be loaded on demand or in parallel. Code Splitting...
Read more >Code-Splitting - React
Bundling. Most React apps will have their files “bundled” using tools like Webpack, Rollup or Browserify. Bundling is the process of following imported ......
Read more >Module Splitting — Emscripten 3.1.26-git (dev) documentation
Module splitting is another approach where a module is split into separate pieces, the primary and secondary modules, after it is built normally....
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
I’m not sure if this is a good idea or not, but FYI: https://github.com/google/guava/wiki/UsingProGuardWithGuava
I suspect so.