-
Notifications
You must be signed in to change notification settings - Fork 4
Convert gtars to a workspace #148
Description
I know we've discussed this a lot already, but I’d like to formally make the case for converting gtars into a workspace. The crate has become too bloated, and it’s making it increasingly difficult to build for multiple targets. Specifically, the Python bindings, R bindings, and CLI are all now transitively dependent on code they don’t even use, and it’s getting frustrating.
Example 1: Python bindings broken by transitive dependency
With the release of v0.3.0, we couldn’t build the Python bindings due to this linker error:
cannot find -lsqlite3.lib
This comes from diesel, which is pulled in by bioccachers, which is pulled in by bbcache– a module inside gtars. Even though bbcache isn’t used at all in the Python bindings, it still gets compiled and brings its dependencies along with it.
If gtars were a workspace, we could isolate core modules like tokenizers, refget, and RegionSet into independent crates and import only what we need. This would eliminate the sqlite3 dependency for the Python bindings entirely.
Example 2: WebAssembly blocked by openssl
I attempted to build WebAssembly (wasm) bindings for gtars, but ran into build failures due to an openssl dependency. This comes from bbcache and RegionSet, even though I only needed refget and the overlap logic.
Again, with a workspace structure, I could just depend on the minimal subset required, avoiding the openssl problem entirely.