Open zcaudate opened 4 years ago
Sorry to spam you like this. I promise I'll stop. I wanted to get across some ideas that I've been thinking about - why clojure is getting stuck and how jise might be able to solve some of these problems.
Performance. It is accepted that immutability is the way to go and it's really easy to build very robust systems. However, once a system has been built and is needed to be optimised, there is no real pathway forward - and sometimes it's easier to just write Java in order to get the best benchmarks. I think Jise can really help with that.
Interop. Not able to extend abstract classes is a big pain when doing repl-driven development because the two options are gen-class
and writing in java which both means restarting the repl. This is really not good. I really like jise because of this - does the library do class reloading on eval? Also, there's a whole bunch of libraries that rely on extending Abstract Classes to work (I've listed a bunch already) --> even JUnit would be much easier to run with clojure with this pathway. My main focus right now is to find an easy way to interop with native libraries so javacpp and jnr (both need to extend abstract classes) would be great to get working.
Clojurescript. This is the official way of getting Clojure to run JS. I'm really not a fan of it because:
I think there is a more efficient pathway to writing portable JS code with Wasm, especially when immutability is not as important as performance. The example for AOBench would definitely have much impact if it were for JS.
This example for instance would be great to port to jise: https://mirkosertic.github.io/Bytecoder/chapter-1/chapter-1-1/page-1-1-a/
I think this would be really wishful thinking but it would be really great if code can be transformed. The current way of generating classes (one class per function) is quite wasteful and it'll be really great if there was a way of generating one class per namespace. That will make it super quick to load.
I'm really curious about the typical speeds for the algorithms you implemented (like AOBench).
I ran it, it feels really fast but I'm not sure what a comparison might be.
Do you have any comparisons that you might have ran yourself?