Skip to content

Conversation

@alexcrichton
Copy link
Member

This commit deletes two nice-to-have but difficult-to-maintain modules in this repository. Specifically:

  • The wasmtime.loader module is deleted as it was a proof-of-concept but doesn't map well to Python and Wasmtime. For example "TypeError: 'NoneType' object is not callable" during calls to wasmtime.Managed.__del__ #302 shows how destruction of Python modules isn't handled correctly. In general it's a "cute" implementation but isn't too too useful and doesn't map well to how Wasm is embedded in many contexts. I'm deleting this to reduce maintenance burden on this repository. It would be ok to reimplement in the future but it would likely require someone with more Python knowledge than I.

  • The wasmtime.bindgen module is deleted in favor of component support in Bind the C API for components  #308. This module still makes sense to have but it would need a ground-up rewrite to work with component types rather than component definitions. This is deferred to future work in Reimplement bindgen for components #309 and in the meantime it's removed to avoid any confusion about what should be used and what shouldn't.

Closes #105
Closes #106
Closes #107
Closes #108
Closes #109
Closes #119
Closes #143
Closes #178
Closes #181
Closes #197
Closes #202
Closes #218
Closes #245
Closes #282
Closes #302

This commit deletes two nice-to-have but difficult-to-maintain modules
in this repository. Specifically:

* The `wasmtime.loader` module is deleted as it was a proof-of-concept
  but doesn't map well to Python and Wasmtime. For example bytecodealliance#302 shows
  how destruction of Python modules isn't handled correctly. In general
  it's a "cute" implementation but isn't too too useful and doesn't map
  well to how Wasm is embedded in many contexts. I'm deleting this to
  reduce maintenance burden on this repository. It would be ok to
  reimplement in the future but it would likely require someone with
  more Python knowledge than I.

* The `wasmtime.bindgen` module is deleted in favor of component support
  in bytecodealliance#308. This module still makes sense to have but it would need a
  ground-up rewrite to work with component types rather than component
  definitions. This is deferred to future work in bytecodealliance#309 and in the
  meantime it's removed to avoid any confusion about what should be used
  and what shouldn't.

Closes bytecodealliance#105
Closes bytecodealliance#106
Closes bytecodealliance#107
Closes bytecodealliance#108
Closes bytecodealliance#109
Closes bytecodealliance#119
Closes bytecodealliance#143
Closes bytecodealliance#178
Closes bytecodealliance#181
Closes bytecodealliance#197
Closes bytecodealliance#202
Closes bytecodealliance#218
Closes bytecodealliance#245
Closes bytecodealliance#282
Closes bytecodealliance#302
@alexcrichton alexcrichton marked this pull request as ready for review November 5, 2025 21:30
@alexcrichton
Copy link
Member Author

Another point of clarification on this: I'm sort of the only maintainer in this repo and there's not really a lot of process in place right now for larger changes like this. Given that I'm "doing this by fiat" because I think it's a good idea to do. That being said I'm happy to continue to discuss further with others if they feel this is a bad move and/or similarly. One thing I'd ask for though is that if you'd like to keep seeing a feature like this I'd request that you also be willing to take ownership of the implementation and share in maintenance. I am not a Python expert and often get quite frustrated with maintaining this repository as a result. I'm doing the best I can, but I can only do so much as a one-man-show who primarily writes Rust.

@alexcrichton alexcrichton merged commit ea51991 into bytecodealliance:main Nov 5, 2025
12 checks passed
@alexcrichton alexcrichton deleted the remove-loader-and-bindgen branch November 5, 2025 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment