https://github.com/kepler16/kmono: A monorepo/workspace tool for clojure tools.deps projects
4.10.0..4.11.0
Been a while since I posted the original announcement, and there have been a few improvements since then. Mostly focused around performance and correctness. Here are the highlights:
• Improve overall performance with concurrent IO
This reworks some of the internals to perform batched concurrent IO operations instead. On a largish internal project this resulted in a ~1s+ performance improvement.
• Improve performance of glob path matcher
Primarily this implementation allows combining multiple glob patterns to avoid traversing the file tree multiple times.
• Traverse full graph when searching for cycles
This fixes a bug where some edges would be skipped for certain graph configurations resulting in missed cycles.
• Replace shell calls to git with in-process JGit
This change results in very significant performance improvements when performing graph queries that involve augmenting the graph from information in git. In some repositories I have seen improvements of several hundred ms.
• Use JGit to parse gitignore traversal skipping
This change alone improves performance of all graph queries by several hundred milliseconds, depending on the size of the repo.
• Fix project root discovery only working from $HOME
A bug in the project root discovery logic resulted in workspaces located outside of the shell $HOME failing to be loaded.
• Allow resolving git repo from subdir
If the kmono workspace is a subdirectory of a git repo then kmono would fail to properly interact with the git repository.
I also created a channel over at #kmono for anyone trying it out who have questions.
tools.deps used JGit at one point (well, tools.gitlibs) but switched to shell calls in 2021 -- https://clojure.atlassian.net/browse/TDEPS-91 -- do you know of or anticipate any similar issues with your switch from git shell calls to JGit?
For kmono's use-case I couldn't think of any reasons not to do it. And I wanted to bundle the dependency to take advantage of the .gitignore parsing support it would give.
Looks like most of the issues reported in that ticket are related to interacting with a remote, and possibly creating new signed commits. These are not currently use-cases for kmono which only uses git to read out information.
I was wary of unknown bugs at first, but over time in own extensive use of kmono in a range of environments I haven't run yet run into any problems relating to the switch - so happy with the result so far.
CUDA on the JVM in a dynamic and interactive package: new release of ClojureCUDA, 0.27.0, is out. Comes with books and tutorials https://clojurecuda.uncomplicate.org/ https://aiprobook.com/
I don't see a tag for 0.27.0 but I do see them for prior releases: https://github.com/uncomplicate/clojurecuda/tags