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

Reduce base dependencies from vcs and providers libraries #37

Closed
11 tasks done
mbarbin opened this issue Oct 22, 2024 · 0 comments
Closed
11 tasks done

Reduce base dependencies from vcs and providers libraries #37

mbarbin opened this issue Oct 22, 2024 · 0 comments

Comments

@mbarbin
Copy link
Owner

mbarbin commented Oct 22, 2024

Vcs_base

In this meta-issue we document a multi-stages refactoring that occurred in the repository.

Targeted end result

The aim of this refactoring is to remove the base dependency of the Vcs library. To achieve this, we will offer two distinct libraries:

  • Vcs - a kernel library that can be used with very little dependencies;
  • Vcs_base - an extension of Vcs which will add some functionality related to working with Base.

Stages

Stage 1 - Introducing Vcs_base

In this stage, we create the library Vcs_base and setup the way in which this library extends Vcs. It exposes the same modules, plus extra functionality, such as:

  • Base style hash signatures
  • Comparable.S signatures for use with Base style containers
  • Make some functions return sets instead of lists.

Stage 2 - Reducing ppx dependencies in Vcs

Only keep sexp related ppx that have no runtime dependency on base, such as sexplib0 only.

  • Remove ppx_compare, ppx_here, ppx_let dependencies.

Stage 3 - Refactor non-raising APIs

Stage 4 - Trait implementation use Result

Stage 5 - Move modules related to Or_error into Vcs_base.

Stage 6 - Remove base dependency from Vcs

Use vcs/src/import to make a local mini-stdlib with utils required to remove base dependency.

Do this for the other libraries:

  • vcs
  • vcs_command
  • vcs_git_blocking
  • vcs_git_eio
  • vcs_git_provider
@mbarbin mbarbin added this to the Remove base dependencies milestone Oct 22, 2024
@mbarbin mbarbin closed this as completed Oct 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant