-
Notifications
You must be signed in to change notification settings - Fork 66
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
split the streamly package into multiple packages #533
Comments
Would it be theoretically possible to have a hypothetical |
If you look at the dependencies of streamly, other than boot libs this is what we have:
So if we just take out the concurrent streams and network stuff in separate packages, which is very much possible, then we will depend only on boot libraries. |
We can try a feasibility prototype after the 0.8.0 release in next few weeks. |
I am working on separating a @Bodigrim do you have any suggestions or opinions on this? |
Take my words with a grain of salt, because I am only a potential user and not well acquainted with the library, but I'd slightly prefer only boot libraries in dependencies of @hasufell what do you think? |
Though I would like to avoid any additional deps, but we may have to do some balancing here.
|
Since this might possibly break things we will do this in the upcoming major 0.9.0 release. |
|
Is there any reason the decision wasn't taken to have |
We did re-export everything from streamly initially. I think the problem was that if we were to re-export than we had to re-export everything including all the internal modules, otherwise there was some issue. I do not remember the exact issue, need to find out what it was. Maybe because we have to depend on both streamly and streamly-core to use internal modules from streamly-core and that caused some ambiguity in importing modules. |
If it works we can think of doing it in 0.9.1 or would that cause more breakage? |
I think if we re-export then we cannot depend on both streamly, and streamly-core becuase GHC cannot distinguish if a module is re-exported, and would consider it as another module with the same name. |
For the documentation issue we can present a unified documentation/search on the streamly website https://streamly.composewell.com/ and a hoogle search as well. But searching on hackage will still remain problematic. |
Ah, it's annoying that that would be another breaking change for anyone who has already adapted their codebase to 0.9. I'd personally consider it worth it in 0.10, but others may disagree. |
Current division in streamly and streamly-core is good enough for now. Raised #2690 for the re-export issue. |
The streamly package is approaching 200 files and takes significant time to compile with more than 70 source modules, we may want to look at the possibility of splitting the package into smaller packages to make the ecosystem modular. Here is one approach:
streamly
: remains as it is, a batteries included master package, including everythingstreamly-core
: Unfold/Stream/Pipe/Fold/Parser/Array/Time modulesstreamly-network
: the networking stuffstreamly-filesystem
: the filesystem stuffstreamly-unicode
: the unicode text processing stuffstreamly-json
: the json parsing, serialization stuffstreamly-zlib
,streamly-statistics
Programmers can mix and match the packages they want to include. This can possibly reduce the amount of time take to build, though streamly-core would still remain quite heavy.
We can continue to have all the packages in the same mega repository.
The text was updated successfully, but these errors were encountered: