Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expand Implemented Interfaces #22

Closed
sirinath opened this issue Jun 12, 2014 · 9 comments
Closed

Expand Implemented Interfaces #22

sirinath opened this issue Jun 12, 2014 · 9 comments

Comments

@sirinath
Copy link

Is there a possibility to expand the number of collections interfaces implemented so these classes can be used there any other collection interface is used.

@peter-lawrey
Copy link
Contributor

This is entirely possible. We have a array, queue and map implementation
now. Which collections would you be interested in.

On 12 June 2014 14:08, Suminda Dharmasena notifications@github.com wrote:

Is there a possibility to expand the number of collections interfaces
implemented so these classes can be used there any other collection
interface is used.


Reply to this email directly or view it on GitHub
#22.

@sirinath
Copy link
Author

I will be interested in seeing all the interfaces under having a backing implementation here. E.g. I have a sortedmap I can pass this to a library accepting sortedmap while using it as a specialized collection in the rest of the code. Also perhaps you have a special treatment for Enum as it can be further optimised than treating it as an object.

Also please get this into MC or some other Maven Repo as it is (pre alpha) if possible so I can just code against the interface and I can update when you make the actual release. (Can add this to the build script and get started with it.)

@leventov
Copy link
Owner

@sirinath There are really a lot of collection interfaces:

  • Map, Set × single key, double key (like Guava's Table) × unique key, multikey (like MultiMap, MultiSet) × simple, sorted by key, insertion-ordered, access-ordered × single value, multivalue (for maps) × "id" key (set with get by special id: int, long or another type object)
  • Lists, queues, stacks
  • Matrices, Bloom filters, prefix trees, ...

Implementing all this stuff would take man-years. And unfortunately it is very likely that I will stay the only developer of the lib, because entrance threshold of the codegen is very high.

That is why my plan is to implement the simpliest flavour of maps/sets (but to do my best on this) initially and then to look at community response, demands.

@leventov
Copy link
Owner

@sirinath About publishing preview release - unfortunately we still haven't decided the project name, so we think it would be simplier to wait the first release. Please, wait about a month.

@sirinath
Copy link
Author

OK Have you seen fast utils? Also this might give you some ideas.

If you are going to manually write all the code then you are going to kill your self. You definitely need a templating engine to generate the code. Also PRs will mess everything up with some parts being new and the rest not being new. With a template contributors update and what is needed and with DRY in place there is not room for inconsistency.

@leventov
Copy link
Owner

@sirinath Yes I have looked at most existing libs of this kind: fastutil, Mahout collections, GS collections, HPPC, Trove, Colt.

The generic primitive specialization generator is located here: https://github.com/OpenHFT/UntitledCollectionsProject/tree/6ef5e8dada1f8e406649a321842f1f97d0df2e4b/jpsg . Collections generator is here: https://github.com/OpenHFT/UntitledCollectionsProject/tree/6ef5e8dada1f8e406649a321842f1f97d0df2e4b/lib/impl-generator

@sirinath
Copy link
Author

@peter-lawrey perhaps you can extend the use of this generators to generate code for TransFIX against any published FIX Schema.

@sirinath
Copy link
Author

May be you can spin out the generator as a separate project.

@leventov
Copy link
Owner

@sirinath see #6 :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants