Stream: jco

Topic: jco-transpile as a jco subproject


view this post on Zulip Victor Adossi (May 15 2025 at 02:45):

Given the user demand for jco-transpile as a minimal, separate project, I'd like to split out the transpilation functionality of jco into a subproject called jco-transpile). After a bit of discussion in the JS subgroup meeting yesterday since there were no large objections, I'd like to discuss it here as well.

The idea is to take the bits of Jco that currently perform transpilation and simply move them to another project that will be reused from jco itself (similarly to how componentize-js is), but expose both a library and CLI that is usable for end-users.

Currently, we use a dynamic import of componentize-js in order to avoid depending directly on componentize-js, but this complicates installation and can cause subtle bugs.

Building jcointo a multi-tool with exceptional DX is a priority, and would boost adoption of JS WASM tools. There are many improvements to be made to reach that future, but at the very least, splitting out jco-transpileis a start (and is the remedy of choice for the earlier linked issue from the folks at Arcjet).

Any feedback on this before I make the proposal would be welcome.

A lot of work is currently going into the "componentize" logic of jco; however, this means it is taking on a ton of dependencies. If users, such as arcjet, only want to transpile, they should not h...
JavaScript toolchain for working with WebAssembly Components - bytecodealliance/jco
Gravity is a host generator for WebAssembly Components. It currently targets Wazero, a zero dependency WebAssembly runtime for Go. - arcjet/gravity

view this post on Zulip Victor Adossi (May 15 2025 at 02:46):

Tagging some people who might be interested to make sure this doesn't get lost in the ether:
@Till Schneidereit @Tomasz Andrzejak @Calvin Prewitt @Guy Bedford

view this post on Zulip Milan (rajsite) (May 15 2025 at 03:01):

All for more narrowly defined tools, two things I think would help in maintenance:

The NI Nimble Design System. Contribute to ni/nimble development by creating an account on GitHub.

view this post on Zulip Victor Adossi (May 15 2025 at 03:08):

Remove the circular dependency between jco and componentizejs in the npm dependencies. It always ends up in weirdly nested dependencies and I have to add npm overrides to force the resolution.

Yup, this would definitely be a positive outcome of the idea!

Keep the packages in a monorepo so that bubble ups / releases can be managed. We've had a lot of success with beachball and managing monorepos with dozens of mixed packages: npm libraries, angular npm libraries (yes sadly different), nuget packages.

You're gonna like this:

https://github.com/bytecodealliance/jco/pull/698/files
https://github.com/vados-cosmonic/jco/tree/refactor%3Dproject-layout (file browser view)

(as soon as I get CI reworked to the new paths, I'd like to merge the above)

This PR rearranges the jco project so that it's a bit easier to do more work in either language (Rust/JS) and expain the structure of the jco repository itself.
JavaScript tooling for working with WebAssembly Components - GitHub - vados-cosmonic/jco at refactor=project-layout

Last updated: Dec 06 2025 at 07:03 UTC