question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Module splitting up

See original GitHub issue

I’ve already split some things up:

  • com.redhat.ceylon.langtools.classfile from com.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 from ceylon.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 to com.redhat.ceylon.tools, because the language module depends on common 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 of sardine) and org.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, and httpclient (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:closed
  • Created 8 years ago
  • Comments:60 (60 by maintainers)

github_iconTop GitHub Comments

1reaction
jvasileffcommented, Mar 18, 2016

I’m not sure if this is a good idea or not, but FYI: https://github.com/google/guava/wiki/UsingProGuardWithGuava

0reactions
FroMagecommented, Apr 4, 2016

Does this mean that support for Java 8 default methods will dramatically reduce the method count?

I suspect so.

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found