justinethier / cyclone

:cyclone: A brand-new compiler that allows practical application development using R7RS Scheme. We provide modern features and a stable system capable of generating fast native binaries.
http://justinethier.github.io/cyclone/
MIT License
830 stars 45 forks source link

Remove libck dependency #391

Open justinethier opened 4 years ago

justinethier commented 4 years ago

It would be ideal if we could remove any external dependencies on concurrency kit (libck).

This does not necessarily mean we will be rewriting any of our code. It would be sufficient to install libck as part of our installation process so that it does not need to be installed separately, similarly to how we internalized libtommath.

This will reduce friction and make it easier for people new to the project to get Cyclone up and running.

ararslan commented 4 years ago

It seems most people don't particularly like git submodules, but this to me seems like a good use case for them: libtommath and concurrencykit could be submodules pinned to their respective release versions. The only friction introduced then for source builds is remembering to do git clone --recursive. Anyway, just an idea.

arthurmaciel commented 3 years ago

As libck is licensed under a simplified BSD license, I think we should just port the necessary primitives and remove the dependency.

justinethier commented 3 years ago

@arthurmaciel My initial hesitancy here is that if we do that, it will make it difficult to port any changes from libck to our project. However, libck is not under heavy development at the moment and as long as the code is not changed significantly it should would not be difficult to port changes ourselves if necessary.

In any case it would be wonderful if we could remove this dependency. That would make it much easier for new users to get up and running as that is the only external dependency a user is unlikely to have installed on their system.

Let me add this to the roadmap, and make plans to look at it later this year.

nmeum commented 3 years ago

Keep in mind though that distributions generally prefer to use the library versions they are packing over vendoring (see #458) and also this Gentoo blog post for the underlying problems with vendoring dependencies.

justinethier commented 3 years ago

Thanks @nmeum that's good feedback.

We need to circle back around to #458. I like the idea of bundling our own dependencies to make life easier for people who want to build Cyclone on their own, which historically was necessary as we were (and to a large degree still are) not widely packaged in distros. However, I do see the value in also allowing distros to control these dependencies for their own packages. It is a completely different use case as all the "hard work" of dependency management is done up front whereas when building from source all the work is placed on the end user.